2016-11-23 13:31:47 +01:00
|
|
|
/****************************************************************************
|
|
|
|
**
|
|
|
|
** Copyright (C) 2016 The Qt Company Ltd.
|
|
|
|
** Contact: https://www.qt.io/licensing/
|
|
|
|
**
|
|
|
|
** This file is part of Qt Creator.
|
|
|
|
**
|
|
|
|
** Commercial License Usage
|
|
|
|
** Licensees holding valid commercial Qt licenses may use this file in
|
|
|
|
** accordance with the commercial license agreement provided with the
|
|
|
|
** Software or, alternatively, in accordance with the terms contained in
|
|
|
|
** a written agreement between you and The Qt Company. For licensing terms
|
|
|
|
** and conditions see https://www.qt.io/terms-conditions. For further
|
|
|
|
** information use the contact form at https://www.qt.io/contact-us.
|
|
|
|
**
|
|
|
|
** GNU General Public License Usage
|
|
|
|
** Alternatively, this file may be used under the terms of the GNU
|
|
|
|
** General Public License version 3 as published by the Free Software
|
|
|
|
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
|
|
|
|
** included in the packaging of this file. Please review the following
|
|
|
|
** information to ensure the GNU General Public License requirements will
|
|
|
|
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
|
|
|
|
**
|
|
|
|
****************************************************************************/
|
|
|
|
|
|
|
|
#include "gtest-creator-printing.h"
|
|
|
|
|
2017-10-18 13:38:58 +02:00
|
|
|
#include "gtest-qt-printing.h"
|
|
|
|
|
2016-11-23 13:31:47 +01:00
|
|
|
#include <gtest/gtest-printers.h>
|
2018-08-21 11:54:51 +02:00
|
|
|
#include <gmock/gmock-matchers.h>
|
2016-11-23 13:31:47 +01:00
|
|
|
|
2017-09-21 11:43:59 +02:00
|
|
|
#include <sourcelocations.h>
|
|
|
|
|
2018-10-25 11:08:39 +02:00
|
|
|
#include <builddependency.h>
|
2017-11-30 16:11:40 +01:00
|
|
|
#include <clangcodemodelclientmessages.h>
|
|
|
|
#include <clangcodemodelservermessages.h>
|
2018-08-21 11:54:51 +02:00
|
|
|
#include <clangdocumentsuspenderresumer.h>
|
2017-09-21 11:43:59 +02:00
|
|
|
#include <clangpathwatcher.h>
|
2017-11-30 16:11:40 +01:00
|
|
|
#include <clangrefactoringmessages.h>
|
2018-08-21 11:54:51 +02:00
|
|
|
#include <clangreferencescollector.h>
|
2018-02-01 18:29:45 +01:00
|
|
|
#include <filestatus.h>
|
2017-11-30 16:11:40 +01:00
|
|
|
#include <filepath.h>
|
2018-02-06 15:48:24 +01:00
|
|
|
#include <fulltokeninfo.h>
|
2017-11-30 16:11:40 +01:00
|
|
|
#include <nativefilepath.h>
|
2018-10-18 11:27:49 +02:00
|
|
|
#include <pchcreator.h>
|
2018-10-24 16:46:41 +02:00
|
|
|
#include <pchtask.h>
|
2017-11-30 16:11:40 +01:00
|
|
|
#include <precompiledheadersupdatedmessage.h>
|
2018-02-07 16:11:28 +01:00
|
|
|
#include <projectpartartefact.h>
|
2018-01-31 13:53:57 +01:00
|
|
|
#include <sourcedependency.h>
|
2017-11-30 16:11:40 +01:00
|
|
|
#include <sourcelocationentry.h>
|
|
|
|
#include <sourcelocationscontainer.h>
|
2018-02-06 15:48:24 +01:00
|
|
|
#include <tokenprocessor.h>
|
2017-12-27 20:44:34 +01:00
|
|
|
#include <filepathview.h>
|
2018-03-22 17:46:43 +01:00
|
|
|
#include <symbolentry.h>
|
2018-08-22 17:20:08 +02:00
|
|
|
#include <symbolindexertaskqueue.h>
|
2018-04-09 13:30:30 +02:00
|
|
|
#include <symbol.h>
|
2018-01-12 12:29:43 +01:00
|
|
|
#include <tooltipinfo.h>
|
2018-01-22 14:21:01 +01:00
|
|
|
#include <projectpartentry.h>
|
2018-01-25 15:20:47 +01:00
|
|
|
#include <usedmacro.h>
|
2016-11-23 13:31:47 +01:00
|
|
|
|
2017-10-18 13:38:58 +02:00
|
|
|
#include <cpptools/usages.h>
|
|
|
|
|
2017-02-07 15:00:38 +01:00
|
|
|
#include <projectexplorer/projectmacro.h>
|
|
|
|
|
2017-09-21 11:43:59 +02:00
|
|
|
#include <coreplugin/find/searchresultitem.h>
|
2018-04-09 13:30:30 +02:00
|
|
|
#include <coreplugin/locator/ilocatorfilter.h>
|
2017-09-21 11:43:59 +02:00
|
|
|
|
2017-12-28 22:07:28 +01:00
|
|
|
void PrintTo(const Utf8String &text, ::std::ostream *os)
|
|
|
|
{
|
|
|
|
*os << text;
|
|
|
|
}
|
|
|
|
|
2016-11-23 13:31:47 +01:00
|
|
|
namespace Core {
|
2018-04-09 13:30:30 +02:00
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const LocatorFilterEntry &entry)
|
|
|
|
{
|
|
|
|
out << "("
|
|
|
|
<< entry.displayName << ", ";
|
|
|
|
|
|
|
|
if (entry.internalData.canConvert<ClangRefactoring::Symbol>())
|
|
|
|
out << entry.internalData.value<ClangRefactoring::Symbol>();
|
|
|
|
|
|
|
|
out << ")";
|
|
|
|
|
|
|
|
return out;
|
|
|
|
}
|
|
|
|
|
2016-11-23 13:31:47 +01:00
|
|
|
namespace Search {
|
|
|
|
|
|
|
|
using testing::PrintToString;
|
|
|
|
|
|
|
|
class TextPosition;
|
|
|
|
class TextRange;
|
|
|
|
|
|
|
|
void PrintTo(const TextPosition &position, ::std::ostream *os)
|
|
|
|
{
|
|
|
|
*os << "("
|
|
|
|
<< position.line << ", "
|
|
|
|
<< position.column << ", "
|
|
|
|
<< position.offset << ")";
|
|
|
|
}
|
|
|
|
|
|
|
|
void PrintTo(const TextRange &range, ::std::ostream *os)
|
|
|
|
{
|
|
|
|
*os << "("
|
|
|
|
<< PrintToString(range.begin) << ", "
|
|
|
|
<< PrintToString(range.end) << ")";
|
|
|
|
}
|
|
|
|
|
2017-09-21 11:43:59 +02:00
|
|
|
} // namespace Search
|
|
|
|
} // namespace Core
|
2017-02-07 15:00:38 +01:00
|
|
|
|
|
|
|
namespace ProjectExplorer {
|
|
|
|
|
|
|
|
static const char *typeToString(const MacroType &type)
|
|
|
|
{
|
|
|
|
switch (type) {
|
|
|
|
case MacroType::Invalid: return "MacroType::Invalid";
|
|
|
|
case MacroType::Define: return "MacroType::Define";
|
|
|
|
case MacroType::Undefine: return "MacroType::Undefine";
|
|
|
|
}
|
|
|
|
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const MacroType &type)
|
|
|
|
{
|
|
|
|
out << typeToString(type);
|
|
|
|
|
|
|
|
return out;
|
|
|
|
}
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const Macro ¯o)
|
|
|
|
{
|
|
|
|
out << "("
|
|
|
|
<< macro.key.data() << ", "
|
|
|
|
<< macro.value.data() << ", "
|
|
|
|
<< macro.type << ")";
|
|
|
|
|
|
|
|
return out;
|
|
|
|
}
|
|
|
|
|
2017-09-21 11:43:59 +02:00
|
|
|
} // namespace ProjectExplorer
|
|
|
|
|
|
|
|
namespace Utils {
|
2018-01-22 14:21:01 +01:00
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const LineColumn &lineColumn)
|
|
|
|
{
|
|
|
|
return out << "(" << lineColumn.line << ", " << lineColumn.column << ")";
|
|
|
|
}
|
|
|
|
|
2018-08-07 19:01:01 +02:00
|
|
|
void PrintTo(Utils::SmallStringView text, ::std::ostream *os)
|
|
|
|
{
|
2018-09-03 14:38:01 +02:00
|
|
|
*os << "\"" << text << "\"";
|
2018-08-07 19:01:01 +02:00
|
|
|
}
|
|
|
|
|
2017-09-21 11:43:59 +02:00
|
|
|
void PrintTo(const Utils::SmallString &text, ::std::ostream *os)
|
|
|
|
{
|
2018-09-03 14:38:01 +02:00
|
|
|
*os << "\"" << text << "\"";
|
2017-09-21 11:43:59 +02:00
|
|
|
}
|
|
|
|
|
2017-12-28 22:07:28 +01:00
|
|
|
void PrintTo(const Utils::PathString &text, ::std::ostream *os)
|
|
|
|
{
|
2018-09-03 14:38:01 +02:00
|
|
|
*os << "\"" << text << "\"";
|
2017-12-28 22:07:28 +01:00
|
|
|
}
|
|
|
|
|
2017-09-21 11:43:59 +02:00
|
|
|
} // namespace Utils
|
|
|
|
|
|
|
|
namespace ClangBackEnd {
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const FilePathId &id)
|
|
|
|
{
|
2018-01-17 13:52:33 +01:00
|
|
|
return out << "(" << id.directoryId << ", " << id.filePathId << ")";
|
2017-09-21 11:43:59 +02:00
|
|
|
}
|
|
|
|
|
2017-12-27 20:44:34 +01:00
|
|
|
std::ostream &operator<<(std::ostream &out, const FilePathView &filePathView)
|
|
|
|
{
|
|
|
|
return out << "(" << filePathView.toStringView() << ", " << filePathView.slashIndex() << ")";
|
|
|
|
}
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const NativeFilePathView &nativeFilePathView)
|
|
|
|
{
|
|
|
|
return out << "(" << nativeFilePathView.toStringView() << ", " << nativeFilePathView.slashIndex() << ")";
|
|
|
|
}
|
|
|
|
|
2017-09-21 11:43:59 +02:00
|
|
|
std::ostream &operator<<(std::ostream &out, const IdPaths &idPaths)
|
|
|
|
{
|
|
|
|
out << "("
|
|
|
|
<< idPaths.id << ", "
|
|
|
|
<< idPaths.filePathIds << ")";
|
|
|
|
|
|
|
|
return out;
|
|
|
|
}
|
|
|
|
|
2018-04-09 13:30:30 +02:00
|
|
|
#define RETURN_TEXT_FOR_CASE(enumValue) case SourceLocationKind::enumValue: return #enumValue
|
|
|
|
static const char *symbolTypeToCStringLiteral(ClangBackEnd::SourceLocationKind kind)
|
2018-01-22 14:21:01 +01:00
|
|
|
{
|
2018-04-09 13:30:30 +02:00
|
|
|
switch (kind) {
|
|
|
|
RETURN_TEXT_FOR_CASE(None);
|
|
|
|
RETURN_TEXT_FOR_CASE(Declaration);
|
|
|
|
RETURN_TEXT_FOR_CASE(DeclarationReference);
|
|
|
|
RETURN_TEXT_FOR_CASE(Definition);
|
|
|
|
RETURN_TEXT_FOR_CASE(MacroDefinition);
|
|
|
|
RETURN_TEXT_FOR_CASE(MacroUsage);
|
|
|
|
RETURN_TEXT_FOR_CASE(MacroUndefinition);
|
2018-01-22 14:21:01 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
#undef RETURN_TEXT_FOR_CASE
|
|
|
|
|
2017-09-21 11:43:59 +02:00
|
|
|
std::ostream &operator<<(std::ostream &out, const SourceLocationEntry &entry)
|
|
|
|
{
|
|
|
|
out << "("
|
2018-01-22 14:21:01 +01:00
|
|
|
<< entry.symbolId << ", "
|
2017-09-21 11:43:59 +02:00
|
|
|
<< entry.filePathId << ", "
|
2018-01-22 14:21:01 +01:00
|
|
|
<< entry.lineColumn << ", "
|
2018-04-09 13:30:30 +02:00
|
|
|
<< symbolTypeToCStringLiteral(entry.kind) << ")";
|
2017-09-21 11:43:59 +02:00
|
|
|
|
|
|
|
return out;
|
|
|
|
}
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const WatcherEntry &entry)
|
|
|
|
{
|
|
|
|
out << "("
|
|
|
|
<< entry.id << ", "
|
|
|
|
<< entry.pathId
|
|
|
|
<< ")";
|
|
|
|
|
|
|
|
return out;
|
|
|
|
}
|
|
|
|
|
2017-11-30 16:11:40 +01:00
|
|
|
std::ostream &operator<<(std::ostream &os, const SourceLocationsContainer &container)
|
|
|
|
{
|
|
|
|
os << "("
|
|
|
|
<< container.sourceLocationContainers()
|
|
|
|
<< ")";
|
|
|
|
|
|
|
|
return os;
|
|
|
|
}
|
|
|
|
|
2018-06-01 10:46:20 +02:00
|
|
|
std::ostream &operator<<(std::ostream &os, const FollowSymbolResult &result)
|
|
|
|
{
|
|
|
|
os << "("
|
|
|
|
<< result.range
|
2018-06-07 14:23:07 +02:00
|
|
|
<< ", " << result.isResultOnlyForFallBack
|
2018-06-01 10:46:20 +02:00
|
|
|
<< ")";
|
|
|
|
|
|
|
|
return os;
|
|
|
|
}
|
|
|
|
|
2017-11-30 16:11:40 +01:00
|
|
|
std::ostream &operator<<(std::ostream &os, const FollowSymbolMessage &message)
|
|
|
|
{
|
|
|
|
os << "("
|
2018-04-04 18:25:23 +02:00
|
|
|
<< message.fileContainer << ", "
|
|
|
|
<< message.ticketNumber << ", "
|
2018-06-01 10:46:20 +02:00
|
|
|
<< message.result << ", "
|
2017-11-30 16:11:40 +01:00
|
|
|
<< ")";
|
|
|
|
|
|
|
|
return os;
|
|
|
|
}
|
|
|
|
|
2018-05-31 15:21:53 +02:00
|
|
|
std::ostream &operator<<(std::ostream &os, const RequestCompletionsMessage &message)
|
2017-11-30 16:11:40 +01:00
|
|
|
{
|
|
|
|
os << "("
|
2018-04-04 18:25:23 +02:00
|
|
|
<< message.filePath << ", "
|
|
|
|
<< message.line << ", "
|
|
|
|
<< message.column << ", "
|
|
|
|
<< message.projectPartId << ", "
|
|
|
|
<< message.ticketNumber << ", "
|
|
|
|
<< message.funcNameStartLine << ", "
|
|
|
|
<< message.funcNameStartColumn
|
2017-11-30 16:11:40 +01:00
|
|
|
|
|
|
|
<< ")";
|
|
|
|
|
|
|
|
return os;
|
|
|
|
}
|
|
|
|
|
2018-05-31 15:21:53 +02:00
|
|
|
std::ostream &operator<<(std::ostream &os, const DocumentsOpenedMessage &message)
|
2017-11-30 16:11:40 +01:00
|
|
|
{
|
2018-05-31 15:21:53 +02:00
|
|
|
os << "DocumentsOpenedMessage("
|
2018-04-04 18:25:23 +02:00
|
|
|
<< message.fileContainers << ", "
|
|
|
|
<< message.currentEditorFilePath << ", "
|
|
|
|
<< message.visibleEditorFilePaths << ")";
|
2017-11-30 16:11:40 +01:00
|
|
|
|
|
|
|
return os;
|
|
|
|
}
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &os, const EndMessage &/*message*/)
|
|
|
|
{
|
|
|
|
return os << "()";
|
|
|
|
}
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &os, const CancelMessage &/*message*/)
|
|
|
|
{
|
|
|
|
return os << "()";
|
|
|
|
}
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &os, const AliveMessage &/*message*/)
|
|
|
|
{
|
|
|
|
return os << "()";
|
|
|
|
}
|
|
|
|
|
2018-05-31 15:21:53 +02:00
|
|
|
std::ostream &operator<<(std::ostream &os, const CompletionsMessage &message)
|
2017-11-30 16:11:40 +01:00
|
|
|
{
|
|
|
|
os << "("
|
2018-04-04 18:25:23 +02:00
|
|
|
<< message.codeCompletions << ", "
|
|
|
|
<< message.ticketNumber
|
2017-11-30 16:11:40 +01:00
|
|
|
|
|
|
|
<< ")";
|
|
|
|
|
|
|
|
return os;
|
|
|
|
}
|
|
|
|
|
2018-05-31 15:21:53 +02:00
|
|
|
std::ostream &operator<<(std::ostream &os, const AnnotationsMessage &message)
|
2017-11-30 16:11:40 +01:00
|
|
|
{
|
2018-05-31 15:21:53 +02:00
|
|
|
os << "AnnotationsMessage("
|
2018-04-04 18:25:23 +02:00
|
|
|
<< message.fileContainer
|
|
|
|
<< "," << message.diagnostics.size()
|
|
|
|
<< "," << !message.firstHeaderErrorDiagnostic.text.isEmpty()
|
|
|
|
<< "," << message.tokenInfos.size()
|
|
|
|
<< "," << message.skippedPreprocessorRanges.size()
|
2017-11-30 16:11:40 +01:00
|
|
|
<< ")";
|
|
|
|
|
|
|
|
return os;
|
|
|
|
}
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &os, const ReferencesMessage &message)
|
|
|
|
{
|
|
|
|
os << "("
|
2018-04-04 18:25:23 +02:00
|
|
|
<< message.fileContainer << ", "
|
|
|
|
<< message.ticketNumber << ", "
|
|
|
|
<< message.isLocalVariable << ", "
|
|
|
|
<< message.references << ", "
|
2017-11-30 16:11:40 +01:00
|
|
|
<< ")";
|
|
|
|
|
|
|
|
return os;
|
|
|
|
}
|
|
|
|
|
2018-01-12 12:29:43 +01:00
|
|
|
std::ostream &operator<<(std::ostream &os, const ToolTipMessage &message)
|
|
|
|
{
|
|
|
|
os << "("
|
2018-04-04 18:25:23 +02:00
|
|
|
<< message.fileContainer << ", "
|
|
|
|
<< message.ticketNumber << ", "
|
|
|
|
<< message.toolTipInfo << ", "
|
2018-01-12 12:29:43 +01:00
|
|
|
<< ")";
|
|
|
|
|
|
|
|
return os;
|
|
|
|
}
|
|
|
|
|
2017-11-30 16:11:40 +01:00
|
|
|
std::ostream &operator<<(std::ostream &os, const EchoMessage &/*message*/)
|
|
|
|
{
|
|
|
|
return os << "()";
|
|
|
|
}
|
|
|
|
|
2018-05-31 15:21:53 +02:00
|
|
|
std::ostream &operator<<(std::ostream &os, const DocumentsClosedMessage &message)
|
2017-11-30 16:11:40 +01:00
|
|
|
{
|
|
|
|
os << "("
|
2018-04-04 18:25:23 +02:00
|
|
|
<< message.fileContainers
|
2017-11-30 16:11:40 +01:00
|
|
|
<< ")";
|
|
|
|
|
|
|
|
return os;
|
|
|
|
}
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &os, const CodeCompletion &message)
|
|
|
|
{
|
|
|
|
os << "("
|
2018-04-04 18:25:23 +02:00
|
|
|
<< message.text << ", "
|
|
|
|
<< message.priority << ", "
|
|
|
|
<< message.completionKind << ", "
|
|
|
|
<< message.availability << ", "
|
|
|
|
<< message.hasParameters
|
2017-11-30 16:11:40 +01:00
|
|
|
<< ")";
|
|
|
|
|
|
|
|
return os;
|
|
|
|
}
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &os, const CodeCompletionChunk &chunk)
|
|
|
|
{
|
|
|
|
os << "("
|
2018-04-04 18:25:23 +02:00
|
|
|
<< chunk.kind << ", "
|
|
|
|
<< chunk.text;
|
2017-11-30 16:11:40 +01:00
|
|
|
|
2018-04-04 18:25:23 +02:00
|
|
|
if (chunk.isOptional)
|
2017-11-30 16:11:40 +01:00
|
|
|
os << ", optional";
|
|
|
|
|
|
|
|
os << ")";
|
|
|
|
|
|
|
|
return os;
|
|
|
|
}
|
|
|
|
|
|
|
|
static const char *severityToText(DiagnosticSeverity severity)
|
|
|
|
{
|
|
|
|
switch (severity) {
|
|
|
|
case DiagnosticSeverity::Ignored: return "Ignored";
|
|
|
|
case DiagnosticSeverity::Note: return "Note";
|
|
|
|
case DiagnosticSeverity::Warning: return "Warning";
|
|
|
|
case DiagnosticSeverity::Error: return "Error";
|
|
|
|
case DiagnosticSeverity::Fatal: return "Fatal";
|
|
|
|
}
|
|
|
|
|
|
|
|
Q_UNREACHABLE();
|
|
|
|
}
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &os, const DiagnosticContainer &container)
|
|
|
|
{
|
|
|
|
os << "("
|
2018-04-04 18:25:23 +02:00
|
|
|
<< severityToText(container.severity) << ": "
|
|
|
|
<< container.text << ", "
|
|
|
|
<< container.category << ", "
|
|
|
|
<< container.enableOption << ", "
|
|
|
|
<< container.location << ", "
|
|
|
|
<< container.ranges << ", "
|
|
|
|
<< container.fixIts << ", "
|
|
|
|
<< container.children << ")";
|
2017-11-30 16:11:40 +01:00
|
|
|
|
|
|
|
return os;
|
|
|
|
}
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &os, const DynamicASTMatcherDiagnosticContainer &container)
|
|
|
|
{
|
|
|
|
os << "("
|
2018-04-04 18:25:23 +02:00
|
|
|
<< container.messages << ", "
|
|
|
|
<< container.contexts
|
2017-11-30 16:11:40 +01:00
|
|
|
<< ")";
|
|
|
|
|
|
|
|
return os;
|
|
|
|
}
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &os, const DynamicASTMatcherDiagnosticContextContainer &container)
|
|
|
|
{
|
|
|
|
os << "("
|
|
|
|
<< container.contextTypeText() << ", "
|
2018-04-04 18:25:23 +02:00
|
|
|
<< container.sourceRange << ", "
|
|
|
|
<< container.arguments
|
2017-11-30 16:11:40 +01:00
|
|
|
<< ")";
|
|
|
|
|
|
|
|
return os;
|
|
|
|
}
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &os, const DynamicASTMatcherDiagnosticMessageContainer &container)
|
|
|
|
{
|
|
|
|
os << "("
|
|
|
|
<< container.errorTypeText() << ", "
|
2018-04-04 18:25:23 +02:00
|
|
|
<< container.sourceRange << ", "
|
|
|
|
<< container.arguments
|
2017-11-30 16:11:40 +01:00
|
|
|
<< ")";
|
|
|
|
|
|
|
|
return os;
|
|
|
|
}
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &os, const FileContainer &container)
|
|
|
|
{
|
|
|
|
os << "("
|
2018-04-04 18:25:23 +02:00
|
|
|
<< container.filePath << ", "
|
2018-09-25 09:41:32 +02:00
|
|
|
<< container.compilationArguments << ", "
|
2018-04-04 18:25:23 +02:00
|
|
|
<< container.documentRevision << ", "
|
|
|
|
<< container.textCodecName;
|
2017-11-30 16:11:40 +01:00
|
|
|
|
2018-04-04 18:25:23 +02:00
|
|
|
if (container.hasUnsavedFileContent)
|
2017-11-30 16:11:40 +01:00
|
|
|
os << ", "
|
2018-04-04 18:25:23 +02:00
|
|
|
<< container.unsavedFileContent;
|
2017-11-30 16:11:40 +01:00
|
|
|
|
|
|
|
os << ")";
|
|
|
|
|
|
|
|
return os;
|
|
|
|
}
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &os, const FixItContainer &container)
|
|
|
|
{
|
|
|
|
os << "("
|
2018-04-04 18:25:23 +02:00
|
|
|
<< container.text << ", "
|
|
|
|
<< container.range
|
2017-11-30 16:11:40 +01:00
|
|
|
<< ")";
|
|
|
|
|
|
|
|
return os;
|
|
|
|
}
|
|
|
|
|
|
|
|
#define RETURN_TEXT_FOR_CASE(enumValue) case HighlightingType::enumValue: return #enumValue
|
|
|
|
static const char *highlightingTypeToCStringLiteral(HighlightingType type)
|
|
|
|
{
|
|
|
|
switch (type) {
|
|
|
|
RETURN_TEXT_FOR_CASE(Invalid);
|
|
|
|
RETURN_TEXT_FOR_CASE(Comment);
|
|
|
|
RETURN_TEXT_FOR_CASE(Keyword);
|
|
|
|
RETURN_TEXT_FOR_CASE(StringLiteral);
|
|
|
|
RETURN_TEXT_FOR_CASE(NumberLiteral);
|
|
|
|
RETURN_TEXT_FOR_CASE(Function);
|
|
|
|
RETURN_TEXT_FOR_CASE(VirtualFunction);
|
|
|
|
RETURN_TEXT_FOR_CASE(Type);
|
|
|
|
RETURN_TEXT_FOR_CASE(LocalVariable);
|
|
|
|
RETURN_TEXT_FOR_CASE(GlobalVariable);
|
|
|
|
RETURN_TEXT_FOR_CASE(Field);
|
|
|
|
RETURN_TEXT_FOR_CASE(Enumeration);
|
|
|
|
RETURN_TEXT_FOR_CASE(Operator);
|
|
|
|
RETURN_TEXT_FOR_CASE(Preprocessor);
|
|
|
|
RETURN_TEXT_FOR_CASE(Label);
|
|
|
|
RETURN_TEXT_FOR_CASE(FunctionDefinition);
|
|
|
|
RETURN_TEXT_FOR_CASE(OutputArgument);
|
2018-05-08 11:21:42 +02:00
|
|
|
RETURN_TEXT_FOR_CASE(OverloadedOperator);
|
2017-11-30 16:11:40 +01:00
|
|
|
RETURN_TEXT_FOR_CASE(PreprocessorDefinition);
|
|
|
|
RETURN_TEXT_FOR_CASE(PreprocessorExpansion);
|
|
|
|
RETURN_TEXT_FOR_CASE(PrimitiveType);
|
2018-08-22 17:25:12 +02:00
|
|
|
RETURN_TEXT_FOR_CASE(Punctuation);
|
2017-11-30 16:11:40 +01:00
|
|
|
RETURN_TEXT_FOR_CASE(Declaration);
|
2018-01-12 09:44:05 +01:00
|
|
|
RETURN_TEXT_FOR_CASE(Namespace);
|
|
|
|
RETURN_TEXT_FOR_CASE(Class);
|
|
|
|
RETURN_TEXT_FOR_CASE(Struct);
|
|
|
|
RETURN_TEXT_FOR_CASE(Enum);
|
|
|
|
RETURN_TEXT_FOR_CASE(Union);
|
|
|
|
RETURN_TEXT_FOR_CASE(TypeAlias);
|
|
|
|
RETURN_TEXT_FOR_CASE(Typedef);
|
2018-01-26 15:12:38 +01:00
|
|
|
RETURN_TEXT_FOR_CASE(QtProperty);
|
2018-02-14 12:24:21 +01:00
|
|
|
RETURN_TEXT_FOR_CASE(ObjectiveCClass);
|
|
|
|
RETURN_TEXT_FOR_CASE(ObjectiveCCategory);
|
|
|
|
RETURN_TEXT_FOR_CASE(ObjectiveCProtocol);
|
|
|
|
RETURN_TEXT_FOR_CASE(ObjectiveCInterface);
|
|
|
|
RETURN_TEXT_FOR_CASE(ObjectiveCImplementation);
|
|
|
|
RETURN_TEXT_FOR_CASE(ObjectiveCProperty);
|
|
|
|
RETURN_TEXT_FOR_CASE(ObjectiveCMethod);
|
2018-07-19 00:01:20 +03:00
|
|
|
RETURN_TEXT_FOR_CASE(TemplateTypeParameter);
|
|
|
|
RETURN_TEXT_FOR_CASE(TemplateTemplateParameter);
|
2017-11-30 16:11:40 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
#undef RETURN_TEXT_FOR_CASE
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &os, HighlightingType highlightingType)
|
|
|
|
{
|
|
|
|
return os << highlightingTypeToCStringLiteral(highlightingType);
|
|
|
|
}
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &os, HighlightingTypes types)
|
|
|
|
{
|
|
|
|
os << "("
|
|
|
|
<< types.mainHighlightingType;
|
|
|
|
|
|
|
|
if (!types.mixinHighlightingTypes.empty())
|
|
|
|
os << ", "<< types.mixinHighlightingTypes;
|
|
|
|
|
|
|
|
os << ")";
|
|
|
|
|
|
|
|
return os;
|
|
|
|
}
|
|
|
|
|
2018-01-19 09:18:57 +01:00
|
|
|
std::ostream &operator<<(std::ostream &os, const ExtraInfo &extraInfo)
|
|
|
|
{
|
|
|
|
os << "("
|
|
|
|
<< extraInfo.token << ", "
|
|
|
|
<< extraInfo.typeSpelling << ", "
|
|
|
|
<< extraInfo.semanticParentTypeSpelling << ", "
|
|
|
|
<< static_cast<uint>(extraInfo.accessSpecifier) << ", "
|
|
|
|
<< static_cast<uint>(extraInfo.storageClass) << ", "
|
|
|
|
<< extraInfo.identifier << ", "
|
|
|
|
<< extraInfo.includeDirectivePath << ", "
|
|
|
|
<< extraInfo.declaration << ", "
|
|
|
|
<< extraInfo.definition << ", "
|
|
|
|
<< extraInfo.signal << ", "
|
2018-01-26 15:12:38 +01:00
|
|
|
<< extraInfo.slot
|
2018-01-19 09:18:57 +01:00
|
|
|
<< ")";
|
|
|
|
return os;
|
|
|
|
}
|
|
|
|
|
2017-11-30 16:11:40 +01:00
|
|
|
std::ostream &operator<<(std::ostream &os, const TokenInfoContainer &container)
|
|
|
|
{
|
|
|
|
os << "("
|
2018-04-04 18:25:23 +02:00
|
|
|
<< container.line << ", "
|
|
|
|
<< container.column << ", "
|
|
|
|
<< container.length << ", "
|
|
|
|
<< container.types << ", "
|
|
|
|
<< container.extraInfo << ", "
|
2017-11-30 16:11:40 +01:00
|
|
|
<< ")";
|
|
|
|
|
|
|
|
return os;
|
|
|
|
}
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const NativeFilePath &filePath)
|
|
|
|
{
|
|
|
|
return out << "(" << filePath.path() << ", " << filePath.slashIndex() << ")";
|
|
|
|
}
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const PrecompiledHeadersUpdatedMessage &message)
|
|
|
|
{
|
|
|
|
out << "("
|
2018-04-04 18:25:23 +02:00
|
|
|
<< message.projectPartPchs
|
2017-11-30 16:11:40 +01:00
|
|
|
<< ")";
|
|
|
|
|
|
|
|
return out;
|
|
|
|
}
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const ProjectPartPch &projectPartPch)
|
|
|
|
{
|
|
|
|
out << "("
|
2018-02-15 14:29:20 +01:00
|
|
|
<< projectPartPch.projectPartId << ", "
|
2018-09-11 17:02:45 +02:00
|
|
|
<< projectPartPch.pchPath << ", "
|
|
|
|
<< projectPartPch.lastModified << ")";
|
2017-11-30 16:11:40 +01:00
|
|
|
|
|
|
|
return out;
|
|
|
|
}
|
|
|
|
|
2018-05-31 15:21:53 +02:00
|
|
|
std::ostream &operator<<(std::ostream &os, const UnsavedFilesUpdatedMessage &message)
|
2017-11-30 16:11:40 +01:00
|
|
|
{
|
|
|
|
os << "("
|
2018-04-04 18:25:23 +02:00
|
|
|
<< message.fileContainers
|
2017-11-30 16:11:40 +01:00
|
|
|
<< ")";
|
|
|
|
|
|
|
|
return os;
|
|
|
|
}
|
|
|
|
|
2018-05-31 15:21:53 +02:00
|
|
|
std::ostream &operator<<(std::ostream &os, const RequestAnnotationsMessage &message)
|
2017-11-30 16:11:40 +01:00
|
|
|
{
|
|
|
|
os << "("
|
2018-04-04 18:25:23 +02:00
|
|
|
<< message.fileContainer.filePath << ","
|
2017-11-30 16:11:40 +01:00
|
|
|
<< ")";
|
|
|
|
|
|
|
|
return os;
|
|
|
|
}
|
|
|
|
|
2018-02-20 12:43:05 +01:00
|
|
|
std::ostream &operator<<(std::ostream &out, const RemoveProjectPartsMessage &message)
|
2017-11-30 16:11:40 +01:00
|
|
|
{
|
2018-04-04 18:25:23 +02:00
|
|
|
return out << "(" << message.projectsPartIds << ")";
|
2017-11-30 16:11:40 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &os, const RequestFollowSymbolMessage &message)
|
|
|
|
{
|
|
|
|
os << "("
|
2018-04-04 18:25:23 +02:00
|
|
|
<< message.fileContainer << ", "
|
|
|
|
<< message.ticketNumber << ", "
|
|
|
|
<< message.line << ", "
|
|
|
|
<< message.column << ", "
|
2017-11-30 16:11:40 +01:00
|
|
|
<< ")";
|
|
|
|
|
|
|
|
return os;
|
|
|
|
}
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &os, const RequestReferencesMessage &message)
|
|
|
|
{
|
|
|
|
os << "("
|
2018-04-04 18:25:23 +02:00
|
|
|
<< message.fileContainer << ", "
|
|
|
|
<< message.ticketNumber << ", "
|
|
|
|
<< message.line << ", "
|
|
|
|
<< message.column << ", "
|
|
|
|
<< message.local << ", "
|
2017-11-30 16:11:40 +01:00
|
|
|
<< ")";
|
|
|
|
|
|
|
|
return os;
|
|
|
|
}
|
|
|
|
|
2018-01-12 12:29:43 +01:00
|
|
|
std::ostream &operator<<(std::ostream &out, const RequestToolTipMessage &message)
|
|
|
|
{
|
|
|
|
out << "("
|
2018-04-04 18:25:23 +02:00
|
|
|
<< message.fileContainer << ", "
|
|
|
|
<< message.ticketNumber << ", "
|
|
|
|
<< message.line << ", "
|
|
|
|
<< message.column << ", "
|
2018-01-12 12:29:43 +01:00
|
|
|
<< ")";
|
|
|
|
|
|
|
|
return out;
|
|
|
|
}
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &os, const ToolTipInfo::QdocCategory category)
|
|
|
|
{
|
|
|
|
return os << qdocCategoryToString(category);
|
|
|
|
}
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const ToolTipInfo &info)
|
|
|
|
{
|
|
|
|
out << "("
|
2018-04-04 18:25:23 +02:00
|
|
|
<< info.text << ", "
|
|
|
|
<< info.briefComment << ", "
|
|
|
|
<< info.qdocIdCandidates << ", "
|
|
|
|
<< info.qdocMark << ", "
|
|
|
|
<< info.qdocCategory
|
|
|
|
<< info.sizeInBytes << ", "
|
2018-01-12 12:29:43 +01:00
|
|
|
<< ")";
|
|
|
|
|
|
|
|
return out;
|
|
|
|
}
|
|
|
|
|
2017-11-30 16:11:40 +01:00
|
|
|
std::ostream &operator<<(std::ostream &os, const RequestSourceLocationsForRenamingMessage &message)
|
|
|
|
{
|
|
|
|
os << "("
|
2018-04-04 18:25:23 +02:00
|
|
|
<< message.filePath << ", "
|
|
|
|
<< message.line << ", "
|
|
|
|
<< message.column << ", "
|
|
|
|
<< message.unsavedContent << ", "
|
|
|
|
<< message.commandLine
|
2017-11-30 16:11:40 +01:00
|
|
|
<< ")";
|
|
|
|
|
|
|
|
return os;
|
|
|
|
}
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &os, const RequestSourceRangesAndDiagnosticsForQueryMessage &message)
|
|
|
|
{
|
|
|
|
os << "("
|
2018-04-04 18:25:23 +02:00
|
|
|
<< message.query << ", "
|
|
|
|
<< message.source
|
2017-11-30 16:11:40 +01:00
|
|
|
<< ")";
|
|
|
|
|
|
|
|
return os;
|
|
|
|
}
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &os, const RequestSourceRangesForQueryMessage &message)
|
|
|
|
{
|
|
|
|
os << "("
|
2018-04-04 18:25:23 +02:00
|
|
|
<< message.query
|
2017-11-30 16:11:40 +01:00
|
|
|
<< ")";
|
|
|
|
|
|
|
|
return os;
|
|
|
|
}
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &os, const SourceLocationContainer &container)
|
|
|
|
{
|
|
|
|
os << "("
|
2018-04-04 18:25:23 +02:00
|
|
|
<< container.filePath << ", "
|
|
|
|
<< container.line << ", "
|
|
|
|
<< container.column
|
2017-11-30 16:11:40 +01:00
|
|
|
<< ")";
|
|
|
|
|
|
|
|
return os;
|
|
|
|
}
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &os, const SourceLocationsForRenamingMessage &message)
|
|
|
|
{
|
|
|
|
os << "("
|
2018-04-04 18:25:23 +02:00
|
|
|
<< message.symbolName << ", "
|
|
|
|
<< message.textDocumentRevision << ", "
|
|
|
|
<< message.sourceLocations
|
2017-11-30 16:11:40 +01:00
|
|
|
<< ")";
|
|
|
|
|
|
|
|
return os;
|
|
|
|
}
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &os, const SourceRangeContainer &container)
|
|
|
|
{
|
|
|
|
os << "("
|
2018-04-04 18:25:23 +02:00
|
|
|
<< container.start << ", "
|
|
|
|
<< container.end
|
2017-11-30 16:11:40 +01:00
|
|
|
<< ")";
|
|
|
|
|
|
|
|
return os;
|
|
|
|
}
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &os, const SourceRangesAndDiagnosticsForQueryMessage &message)
|
|
|
|
{
|
|
|
|
os << "("
|
2018-04-04 18:25:23 +02:00
|
|
|
<< message.sourceRanges << ", "
|
|
|
|
<< message.diagnostics
|
2017-11-30 16:11:40 +01:00
|
|
|
<< ")";
|
|
|
|
|
|
|
|
return os;
|
|
|
|
}
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &os, const SourceRangesContainer &container)
|
|
|
|
{
|
|
|
|
os << "("
|
2018-04-04 18:25:23 +02:00
|
|
|
<< container.sourceRangeWithTextContainers
|
2017-11-30 16:11:40 +01:00
|
|
|
<< ")";
|
|
|
|
|
|
|
|
return os;
|
|
|
|
}
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &os, const SourceRangesForQueryMessage &message)
|
|
|
|
{
|
|
|
|
os << "("
|
2018-04-04 18:25:23 +02:00
|
|
|
<< message.sourceRanges
|
2017-11-30 16:11:40 +01:00
|
|
|
<< ")";
|
|
|
|
|
|
|
|
return os;
|
|
|
|
}
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &os, const SourceRangeWithTextContainer &container)
|
|
|
|
{
|
|
|
|
|
|
|
|
os << "("
|
2018-04-04 18:25:23 +02:00
|
|
|
<< container.start << ", "
|
|
|
|
<< container.end << ", "
|
|
|
|
<< container.text
|
2017-11-30 16:11:40 +01:00
|
|
|
<< ")";
|
|
|
|
|
|
|
|
return os;
|
|
|
|
}
|
|
|
|
|
2018-05-31 15:21:53 +02:00
|
|
|
std::ostream &operator<<(std::ostream &os, const UnsavedFilesRemovedMessage &message)
|
2017-11-30 16:11:40 +01:00
|
|
|
{
|
|
|
|
os << "("
|
2018-04-04 18:25:23 +02:00
|
|
|
<< message.fileContainers
|
2017-11-30 16:11:40 +01:00
|
|
|
<< ")";
|
|
|
|
|
|
|
|
return os;
|
|
|
|
}
|
|
|
|
|
2018-02-20 12:43:05 +01:00
|
|
|
std::ostream &operator<<(std::ostream &out, const UpdateProjectPartsMessage &message)
|
2017-11-30 16:11:40 +01:00
|
|
|
{
|
|
|
|
return out << "("
|
2018-04-04 18:25:23 +02:00
|
|
|
<< message.projectsParts
|
2017-11-30 16:11:40 +01:00
|
|
|
<< ")";
|
|
|
|
}
|
|
|
|
|
2018-05-31 15:21:53 +02:00
|
|
|
std::ostream &operator<<(std::ostream &os, const DocumentsChangedMessage &message)
|
2017-11-30 16:11:40 +01:00
|
|
|
{
|
2018-05-31 15:21:53 +02:00
|
|
|
os << "DocumentsChangedMessage("
|
2018-04-04 18:25:23 +02:00
|
|
|
<< message.fileContainers
|
2017-11-30 16:11:40 +01:00
|
|
|
<< ")";
|
|
|
|
|
|
|
|
return os;
|
|
|
|
}
|
|
|
|
|
2018-05-31 15:21:53 +02:00
|
|
|
std::ostream &operator<<(std::ostream &os, const DocumentVisibilityChangedMessage &message)
|
2017-11-30 16:11:40 +01:00
|
|
|
{
|
|
|
|
os << "("
|
2018-04-04 18:25:23 +02:00
|
|
|
<< message.currentEditorFilePath << ", "
|
|
|
|
<< message.visibleEditorFilePaths
|
2017-11-30 16:11:40 +01:00
|
|
|
<< ")";
|
|
|
|
|
|
|
|
return os;
|
|
|
|
}
|
|
|
|
|
2018-04-04 18:25:23 +02:00
|
|
|
std::ostream &operator<<(std::ostream &os, const TokenInfo &tokenInfo)
|
2017-11-30 16:11:40 +01:00
|
|
|
{
|
|
|
|
os << "(type: " << tokenInfo.types() << ", "
|
|
|
|
<< " line: " << tokenInfo.line() << ", "
|
|
|
|
<< " column: " << tokenInfo.column() << ", "
|
|
|
|
<< " length: " << tokenInfo.length()
|
|
|
|
<< ")";
|
|
|
|
|
|
|
|
return os;
|
|
|
|
}
|
|
|
|
|
2018-02-06 15:48:24 +01:00
|
|
|
template<class T>
|
|
|
|
std::ostream &operator<<(std::ostream &out, const TokenProcessor<T> &tokenInfos)
|
2017-11-30 16:11:40 +01:00
|
|
|
{
|
|
|
|
out << "[";
|
|
|
|
|
2018-02-06 15:48:24 +01:00
|
|
|
for (const T &entry : tokenInfos)
|
2017-11-30 16:11:40 +01:00
|
|
|
out << entry;
|
|
|
|
|
|
|
|
out << "]";
|
|
|
|
|
|
|
|
return out;
|
|
|
|
}
|
|
|
|
|
2018-02-06 15:48:24 +01:00
|
|
|
template
|
|
|
|
std::ostream &operator<<(std::ostream &out, const TokenProcessor<TokenInfo> &tokenInfos);
|
|
|
|
template
|
|
|
|
std::ostream &operator<<(std::ostream &out, const TokenProcessor<FullTokenInfo> &tokenInfos);
|
|
|
|
|
2017-11-30 16:11:40 +01:00
|
|
|
std::ostream &operator<<(std::ostream &out, const FilePath &filePath)
|
|
|
|
{
|
|
|
|
return out << "(" << filePath.path() << ", " << filePath.slashIndex() << ")";
|
|
|
|
}
|
|
|
|
|
2018-01-22 14:21:01 +01:00
|
|
|
std::ostream &operator<<(std::ostream &out, const ProjectPartEntry &projectPartEntry)
|
|
|
|
{
|
|
|
|
return out << "("
|
|
|
|
<< projectPartEntry.projectPathName
|
|
|
|
<< ", "
|
|
|
|
<< projectPartEntry.filePathIds
|
|
|
|
<< ")";
|
|
|
|
}
|
|
|
|
|
2018-01-25 15:20:47 +01:00
|
|
|
std::ostream &operator<<(std::ostream &out, const UsedMacro &usedMacro)
|
2018-01-22 14:21:01 +01:00
|
|
|
{
|
|
|
|
return out << "("
|
2018-01-25 15:20:47 +01:00
|
|
|
<< usedMacro.filePathId
|
2018-01-22 14:21:01 +01:00
|
|
|
<< ", "
|
2018-01-25 15:20:47 +01:00
|
|
|
<< usedMacro.macroName
|
2018-01-22 14:21:01 +01:00
|
|
|
<< ")";
|
|
|
|
}
|
|
|
|
|
2018-02-01 18:29:45 +01:00
|
|
|
std::ostream &operator<<(std::ostream &out, const FileStatus &fileStatus)
|
2018-01-29 15:47:53 +01:00
|
|
|
{
|
|
|
|
return out << "("
|
2018-02-01 18:29:45 +01:00
|
|
|
<< fileStatus.filePathId
|
2018-01-29 15:47:53 +01:00
|
|
|
<< ", "
|
2018-02-01 18:29:45 +01:00
|
|
|
<< fileStatus.size
|
2018-01-29 15:47:53 +01:00
|
|
|
<< ", "
|
2018-02-01 18:29:45 +01:00
|
|
|
<< fileStatus.lastModified
|
2018-01-29 15:47:53 +01:00
|
|
|
<< ")";
|
|
|
|
}
|
|
|
|
|
2018-01-31 13:53:57 +01:00
|
|
|
std::ostream &operator<<(std::ostream &out, const SourceDependency &sourceDependency)
|
|
|
|
{
|
|
|
|
return out << "("
|
|
|
|
<< sourceDependency.filePathId
|
|
|
|
<< ", "
|
|
|
|
<< sourceDependency.dependencyFilePathId
|
|
|
|
<< ")";
|
|
|
|
}
|
|
|
|
|
2018-02-06 11:16:29 +01:00
|
|
|
std::ostream &operator<<(std::ostream &out, const ProjectPartArtefact &projectPartArtefact)
|
|
|
|
{
|
|
|
|
return out << "("
|
|
|
|
<< projectPartArtefact.compilerArguments << ", "
|
2018-02-06 19:03:14 +01:00
|
|
|
<< projectPartArtefact.compilerMacros
|
2018-02-06 11:16:29 +01:00
|
|
|
<<")";
|
|
|
|
}
|
|
|
|
|
2018-02-06 19:03:14 +01:00
|
|
|
std::ostream &operator<<(std::ostream &out, const CompilerMacro &compilerMacro)
|
|
|
|
{
|
|
|
|
return out << "("
|
|
|
|
<< compilerMacro.key << ", "
|
|
|
|
<< compilerMacro.value
|
|
|
|
<< ")";
|
|
|
|
}
|
|
|
|
|
2018-03-22 17:46:43 +01:00
|
|
|
std::ostream &operator<<(std::ostream &out, const SymbolEntry &entry)
|
|
|
|
{
|
|
|
|
out << "("
|
|
|
|
<< entry.symbolName << ", "
|
|
|
|
<< entry.usr << ", "
|
|
|
|
<< entry.symbolKind <<")";
|
|
|
|
|
|
|
|
return out;
|
|
|
|
}
|
|
|
|
|
|
|
|
const char *symbolKindString(SymbolKind symbolKind)
|
|
|
|
{
|
|
|
|
using ClangBackEnd::SymbolKind;
|
|
|
|
|
|
|
|
switch (symbolKind) {
|
2018-04-04 16:58:47 +02:00
|
|
|
case SymbolKind::None: return "None";
|
|
|
|
case SymbolKind::Enumeration: return "Enumeration";
|
|
|
|
case SymbolKind::Record: return "Record";
|
|
|
|
case SymbolKind::Function: return "Function";
|
|
|
|
case SymbolKind::Variable: return "Variable";
|
|
|
|
case SymbolKind::Macro: return "Macro";
|
2018-03-22 17:46:43 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, SymbolKind symbolKind)
|
|
|
|
{
|
|
|
|
return out << symbolKindString(symbolKind);
|
|
|
|
}
|
|
|
|
|
|
|
|
const char *symbolTagString(SymbolTag symbolTag)
|
|
|
|
{
|
|
|
|
using ClangBackEnd::SymbolTag;
|
|
|
|
|
|
|
|
switch (symbolTag) {
|
2018-04-04 16:58:47 +02:00
|
|
|
case SymbolTag::None: return "None";
|
2018-03-22 17:46:43 +01:00
|
|
|
case SymbolTag::Class: return "Class";
|
|
|
|
case SymbolTag::Struct: return "Struct";
|
2018-04-04 16:58:47 +02:00
|
|
|
case SymbolTag::Union: return "Union";
|
2018-03-22 17:46:43 +01:00
|
|
|
case SymbolTag::MsvcInterface: return "MsvcInterface";
|
|
|
|
}
|
|
|
|
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, SymbolTag symbolTag)
|
|
|
|
{
|
|
|
|
return out << symbolTagString(symbolTag);
|
|
|
|
}
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, SymbolTags symbolTags)
|
|
|
|
{
|
|
|
|
std::copy(symbolTags.cbegin(), symbolTags.cend(), std::ostream_iterator<SymbolTag>(out, ", "));
|
|
|
|
|
|
|
|
return out;
|
|
|
|
}
|
|
|
|
|
2018-08-07 19:01:01 +02:00
|
|
|
std::ostream &operator<<(std::ostream &out, const UpdateGeneratedFilesMessage &message)
|
|
|
|
{
|
|
|
|
return out << "(" << message.generatedFiles << ")";
|
|
|
|
}
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const RemoveGeneratedFilesMessage &message)
|
|
|
|
{
|
|
|
|
return out << "(" << message.generatedFiles << ")";
|
|
|
|
}
|
|
|
|
|
2018-08-21 11:54:51 +02:00
|
|
|
std::ostream &operator<<(std::ostream &out, const SuspendResumeJobsEntry &entry)
|
|
|
|
{
|
|
|
|
return out << "("
|
|
|
|
<< entry.document.filePath() << ", "
|
|
|
|
<< entry.jobRequestType << ", "
|
|
|
|
<< entry.preferredTranslationUnit
|
|
|
|
<< ")";
|
|
|
|
}
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &os, const ReferencesResult &value)
|
|
|
|
{
|
|
|
|
os << "ReferencesResult(";
|
|
|
|
os << value.isLocalVariable << ", {";
|
|
|
|
for (const SourceRangeContainer &r : value.references) {
|
|
|
|
os << r.start.line << ",";
|
|
|
|
os << r.start.column << ",";
|
|
|
|
EXPECT_THAT(r.start.line, testing::Eq(r.end.line));
|
|
|
|
os << r.end.column - r.start.column << ",";
|
|
|
|
}
|
|
|
|
os << "})";
|
|
|
|
|
|
|
|
return os;
|
|
|
|
}
|
|
|
|
|
2018-08-22 17:20:08 +02:00
|
|
|
std::ostream &operator<<(std::ostream &out, const SymbolIndexerTask &task)
|
|
|
|
{
|
|
|
|
return out << "(" << task.filePathId << ", " << task.projectPartId << ")";
|
|
|
|
}
|
|
|
|
|
2018-10-18 11:27:49 +02:00
|
|
|
std::ostream &operator<<(std::ostream &out, const PchCreatorIncludes &includes)
|
|
|
|
{
|
|
|
|
return out << "(" << includes.includeIds << ", " << includes.topIncludeIds << ", " << includes.topSystemIncludeIds << ")";
|
|
|
|
}
|
2018-10-24 16:46:41 +02:00
|
|
|
std::ostream &operator<<(std::ostream &out, const PchTask &task)
|
|
|
|
{
|
|
|
|
return out << "(" << task.ids << ", " << task.buildDependency << ")";
|
|
|
|
}
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const BuildDependency &dependency)
|
|
|
|
{
|
|
|
|
return out << "("
|
2018-10-25 11:08:39 +02:00
|
|
|
<< dependency.includes << ", "
|
2018-10-24 16:46:41 +02:00
|
|
|
<< dependency.topsSystemIncludeIds << ", "
|
|
|
|
<< dependency.topIncludeIds << ")";
|
|
|
|
}
|
2018-10-18 11:27:49 +02:00
|
|
|
|
2018-10-25 11:08:39 +02:00
|
|
|
const char *sourceTypeString(SourceType sourceType)
|
|
|
|
{
|
|
|
|
using ClangBackEnd::SymbolTag;
|
|
|
|
|
|
|
|
switch (sourceType) {
|
|
|
|
case SourceType::Any: return "Any";
|
|
|
|
case SourceType::TopInclude: return "TopInclude";
|
|
|
|
case SourceType::TopSystemInclude: return "TopSystemInclude";
|
|
|
|
}
|
|
|
|
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const SourceEntry &entry)
|
|
|
|
{
|
|
|
|
return out << "(" << entry.sourceId << ", " << sourceTypeString(entry.sourceType) << ")";
|
|
|
|
}
|
|
|
|
|
2017-12-28 22:07:28 +01:00
|
|
|
void PrintTo(const FilePath &filePath, ::std::ostream *os)
|
|
|
|
{
|
|
|
|
*os << filePath;
|
|
|
|
}
|
|
|
|
|
|
|
|
void PrintTo(const FilePathView &filePathView, ::std::ostream *os)
|
|
|
|
{
|
|
|
|
*os << filePathView;
|
|
|
|
}
|
|
|
|
|
2018-01-22 14:21:01 +01:00
|
|
|
void PrintTo(const FilePathId &filePathId, ::std::ostream *os)
|
|
|
|
{
|
|
|
|
*os << filePathId;
|
|
|
|
}
|
|
|
|
|
2017-11-30 16:11:40 +01:00
|
|
|
namespace V2 {
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &os, const FileContainer &container)
|
|
|
|
{
|
|
|
|
os << "("
|
2018-04-04 18:25:23 +02:00
|
|
|
<< container.filePath << ", "
|
|
|
|
<< container.commandLineArguments << ", "
|
|
|
|
<< container.documentRevision;
|
2017-11-30 16:11:40 +01:00
|
|
|
|
2018-04-04 18:25:23 +02:00
|
|
|
if (container.unsavedFileContent.hasContent())
|
2017-11-30 16:11:40 +01:00
|
|
|
os << ", \""
|
2018-04-04 18:25:23 +02:00
|
|
|
<< container.unsavedFileContent;
|
2017-11-30 16:11:40 +01:00
|
|
|
|
|
|
|
os << "\")";
|
|
|
|
|
|
|
|
return os;
|
|
|
|
}
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const ProjectPartContainer &container)
|
|
|
|
{
|
|
|
|
out << "("
|
2018-04-04 18:25:23 +02:00
|
|
|
<< container.projectPartId << ", "
|
|
|
|
<< container.arguments << ", "
|
|
|
|
<< container.headerPathIds << ", "
|
2018-08-07 19:01:01 +02:00
|
|
|
<< container.sourcePathIds << ", "
|
2018-04-04 18:25:23 +02:00
|
|
|
<< container.compilerMacros << ", "
|
|
|
|
<< container.includeSearchPaths << ")";
|
2017-11-30 16:11:40 +01:00
|
|
|
|
|
|
|
return out;
|
|
|
|
}
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &os, const SourceLocationContainer &container)
|
|
|
|
{
|
|
|
|
os << "(("
|
2018-04-04 18:25:23 +02:00
|
|
|
<< container.filePathId.directoryId << ", " << container.filePathId.filePathId << "), "
|
|
|
|
<< container.line << ", "
|
|
|
|
<< container.column << ", "
|
|
|
|
<< container.offset
|
2017-11-30 16:11:40 +01:00
|
|
|
<< ")";
|
|
|
|
|
|
|
|
return os;
|
|
|
|
}
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &os, const SourceRangeContainer &container)
|
|
|
|
{
|
|
|
|
os << "("
|
2018-04-04 18:25:23 +02:00
|
|
|
<< container.start << ", "
|
|
|
|
<< container.end
|
2017-11-30 16:11:40 +01:00
|
|
|
<< ")";
|
|
|
|
|
|
|
|
return os;
|
|
|
|
}
|
|
|
|
|
|
|
|
} // namespace V2
|
|
|
|
|
2017-09-21 11:43:59 +02:00
|
|
|
} // namespace ClangBackEnd
|
|
|
|
|
|
|
|
namespace ClangRefactoring {
|
|
|
|
std::ostream &operator<<(std::ostream &out, const SourceLocation &location)
|
|
|
|
{
|
2018-04-09 13:30:30 +02:00
|
|
|
return out << "(" << location.filePathId << ", " << location.lineColumn << ")";
|
2017-02-07 15:00:38 +01:00
|
|
|
}
|
2018-04-09 13:30:30 +02:00
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const Symbol &symbol)
|
|
|
|
{
|
|
|
|
return out << "(" << symbol.name << ", " << symbol.symbolId << ", " << symbol.signature << ")";
|
|
|
|
}
|
|
|
|
} // namespace ClangRefactoring
|
2017-10-18 13:38:58 +02:00
|
|
|
|
|
|
|
|
|
|
|
namespace CppTools {
|
|
|
|
class Usage;
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const Usage &usage)
|
|
|
|
{
|
|
|
|
return out << "(" << usage.path << ", " << usage.line << ", " << usage.column <<")";
|
|
|
|
}
|
|
|
|
} // namespace CppTools
|