aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/3rdparty/cplusplus/TranslationUnit.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/3rdparty/cplusplus/TranslationUnit.cpp')
-rw-r--r--src/libs/3rdparty/cplusplus/TranslationUnit.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/libs/3rdparty/cplusplus/TranslationUnit.cpp b/src/libs/3rdparty/cplusplus/TranslationUnit.cpp
index a26a23eabce..7afef149ef1 100644
--- a/src/libs/3rdparty/cplusplus/TranslationUnit.cpp
+++ b/src/libs/3rdparty/cplusplus/TranslationUnit.cpp
@@ -552,6 +552,34 @@ unsigned TranslationUnit::findPreviousLineOffset(unsigned tokenIndex) const
return lineOffset;
}
+bool TranslationUnit::maybeSplitGreaterGreaterToken(unsigned tokenIndex)
+{
+ Token &tok = _tokens->at(tokenIndex);
+ if (tok.kind() != T_GREATER_GREATER)
+ return false;
+
+ tok.f.kind = T_GREATER;
+ tok.f.length = 1;
+
+ Token newGreater;
+ newGreater.f.kind = T_GREATER;
+ newGreater.f.expanded = tok.f.expanded;
+ newGreater.f.generated = tok.f.generated;
+ newGreater.f.length = 1;
+ newGreater.offset = tok.offset + 1;
+
+ _tokens->insert(_tokens->begin() + tokenIndex + 1, newGreater);
+
+ std::map<unsigned, std::pair<unsigned, unsigned> >::const_iterator it =
+ _expandedLineColumn.find(tok.offset);
+ if (it != _expandedLineColumn.end()) {
+ const std::pair<unsigned, unsigned> newPosition(it->second.first, it->second.second + 1);
+ _expandedLineColumn.insert(std::make_pair(newGreater.offset, newPosition));
+ }
+
+ return true;
+}
+
void TranslationUnit::showErrorLine(unsigned index, unsigned column, FILE *out)
{
unsigned lineOffset = _lineOffsets[findLineNumber(_tokens->at(index).offset)];