diff options
author | Nikolai Kosjar <nikolai.kosjar@digia.com> | 2013-12-02 15:47:36 +0100 |
---|---|---|
committer | Nikolai Kosjar <nikolai.kosjar@digia.com> | 2013-12-03 09:53:26 +0100 |
commit | 796fcaf1d288267e93baba3d01927957c684758f (patch) | |
tree | e3ee777c7100475c2156963bd19034ae35b04468 | |
parent | 132954f9f307f87de901519230c309e202c2b87f (diff) |
Revert "C++: Fix highlighting for lines with predefined macros"
This takes too much memory. For qtcreator.pro the numbers are as
follows:
Patch applied: ~ 1600MB (RES)
Patch reverted: ~ 510MB (RES)
This reverts commit 4c2daa90ce558c3b4287edc97127471486a411d9.
Task-number: QTCREATORBUG-10973
Change-Id: I843bd7c1ea4a26a1ec55ddc14c2a34a98d040922
Reviewed-by: hjk <hjk121@nokiamail.com>
Reviewed-by: Robert Loehning <robert.loehning@digia.com>
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
-rw-r--r-- | src/libs/cplusplus/Macro.h | 7 | ||||
-rw-r--r-- | src/libs/cplusplus/pp-engine.cpp | 18 | ||||
-rw-r--r-- | src/plugins/cppeditor/cppeditor.cpp | 6 | ||||
-rw-r--r-- | src/plugins/cppeditor/cppfollowsymbolundercursor.cpp | 10 | ||||
-rw-r--r-- | src/plugins/cpptools/cppfindreferences.cpp | 2 | ||||
-rw-r--r-- | src/plugins/cpptools/cpphighlightingsupportinternal.cpp | 3 | ||||
-rw-r--r-- | tests/auto/cplusplus/checksymbols/tst_checksymbols.cpp | 51 | ||||
-rw-r--r-- | tests/auto/cplusplus/preprocessor/tst_preprocessor.cpp | 6 |
8 files changed, 15 insertions, 88 deletions
diff --git a/src/libs/cplusplus/Macro.h b/src/libs/cplusplus/Macro.h index 1c340dba65..a3d83b1f00 100644 --- a/src/libs/cplusplus/Macro.h +++ b/src/libs/cplusplus/Macro.h @@ -137,12 +137,6 @@ public: void setVariadic(bool isVariadic) { f._variadic = isVariadic; } - bool isPredefined() const - { return f._predefined; } - - void setPredefined(bool isPredefined) - { f._predefined = isPredefined; } - QString toString() const; QString toStringWithLineBreaks() const; @@ -157,7 +151,6 @@ private: unsigned _hidden: 1; unsigned _functionLike: 1; unsigned _variadic: 1; - unsigned _predefined: 1; }; QByteArray _name; diff --git a/src/libs/cplusplus/pp-engine.cpp b/src/libs/cplusplus/pp-engine.cpp index 4bbb229734..05a7a083d3 100644 --- a/src/libs/cplusplus/pp-engine.cpp +++ b/src/libs/cplusplus/pp-engine.cpp @@ -917,21 +917,23 @@ bool Preprocessor::handleIdentifier(PPToken *tk) && macroNameRef[0] == '_' && macroNameRef[1] == '_') { PPToken newTk; - QByteArray txt; if (macroNameRef == ppLine) { - txt = QByteArray::number(tk->lineno); + QByteArray txt = QByteArray::number(tk->lineno); newTk = generateToken(T_STRING_LITERAL, txt.constData(), txt.size(), tk->lineno, false); } else if (macroNameRef == ppFile) { + QByteArray txt; txt.append('"'); txt.append(m_env->currentFileUtf8); txt.append('"'); newTk = generateToken(T_STRING_LITERAL, txt.constData(), txt.size(), tk->lineno, false); } else if (macroNameRef == ppDate) { + QByteArray txt; txt.append('"'); txt.append(QDate::currentDate().toString().toUtf8()); txt.append('"'); newTk = generateToken(T_STRING_LITERAL, txt.constData(), txt.size(), tk->lineno, false); } else if (macroNameRef == ppTime) { + QByteArray txt; txt.append('"'); txt.append(QTime::currentTime().toString().toUtf8()); txt.append('"'); @@ -939,14 +941,10 @@ bool Preprocessor::handleIdentifier(PPToken *tk) } if (newTk.hasSource()) { - Macro macro; - macro.setName(macroNameRef.toByteArray()); - macro.setFileName(m_env->currentFile); - macro.setPredefined(true); - macro.setDefinition(txt, QVector<PPToken>() << newTk); - m_env->bind(macro); - if (m_client) - m_client->macroAdded(macro); + newTk.f.newline = tk->newline(); + newTk.f.whitespace = tk->whitespace(); + *tk = newTk; + return false; } } diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp index 740269efed..63d5bc2e5b 100644 --- a/src/plugins/cppeditor/cppeditor.cpp +++ b/src/plugins/cppeditor/cppeditor.cpp @@ -797,12 +797,10 @@ const Macro *CPPEditorWidget::findCanonicalMacro(const QTextCursor &cursor, Docu if (const Macro *macro = doc->findMacroDefinitionAt(line)) { QTextCursor macroCursor = cursor; const QByteArray name = identifierUnderCursor(¯oCursor).toLatin1(); - if (macro->name() == name && !macro->isPredefined()) + if (macro->name() == name) return macro; } else if (const Document::MacroUse *use = doc->findMacroUseAt(cursor.position())) { - const Macro ¯o = use->macro(); - if (!macro.isPredefined()) - return ¯o; + return &use->macro(); } return 0; diff --git a/src/plugins/cppeditor/cppfollowsymbolundercursor.cpp b/src/plugins/cppeditor/cppfollowsymbolundercursor.cpp index 050ba6ef8f..19a5a3a5e5 100644 --- a/src/plugins/cppeditor/cppfollowsymbolundercursor.cpp +++ b/src/plugins/cppeditor/cppfollowsymbolundercursor.cpp @@ -592,12 +592,10 @@ BaseTextEditorWidget::Link FollowSymbolUnderCursor::findLink(const QTextCursor & m_widget->showPreProcessorWidget(); } else if (fileName != CppModelManagerInterface::configurationFileName()) { const Macro ¯o = use->macro(); - if (!macro.isPredefined()) { - link.targetFileName = macro.fileName(); - link.targetLine = macro.line(); - link.linkTextStart = use->begin(); - link.linkTextEnd = use->end(); - } + link.targetFileName = macro.fileName(); + link.targetLine = macro.line(); + link.linkTextStart = use->begin(); + link.linkTextEnd = use->end(); } return link; } diff --git a/src/plugins/cpptools/cppfindreferences.cpp b/src/plugins/cpptools/cppfindreferences.cpp index 17bc85f97d..a1e9625e85 100644 --- a/src/plugins/cpptools/cppfindreferences.cpp +++ b/src/plugins/cpptools/cppfindreferences.cpp @@ -558,8 +558,6 @@ restart_search: usages.clear(); foreach (const Document::MacroUse &use, doc->macroUses()) { const Macro &useMacro = use.macro(); - if (useMacro.isPredefined()) - continue; if (useMacro.fileName() == macro.fileName()) { // Check if this is a match, but possibly against an outdated document. if (source.isEmpty()) diff --git a/src/plugins/cpptools/cpphighlightingsupportinternal.cpp b/src/plugins/cpptools/cpphighlightingsupportinternal.cpp index d2a14170e4..3009d45c16 100644 --- a/src/plugins/cpptools/cpphighlightingsupportinternal.cpp +++ b/src/plugins/cpptools/cpphighlightingsupportinternal.cpp @@ -58,9 +58,6 @@ QFuture<TextEditor::HighlightingResult> CppHighlightingSupportInternal::highligh // Get macro definitions foreach (const CPlusPlus::Macro& macro, doc->definedMacros()) { - if (macro.isPredefined()) - continue; // No "real" definition location - int line, column; editor()->convertPosition(macro.offset(), &line, &column); ++column; //Highlighting starts at (column-1) --> compensate here diff --git a/tests/auto/cplusplus/checksymbols/tst_checksymbols.cpp b/tests/auto/cplusplus/checksymbols/tst_checksymbols.cpp index 9afbd31573..26ece497a0 100644 --- a/tests/auto/cplusplus/checksymbols/tst_checksymbols.cpp +++ b/tests/auto/cplusplus/checksymbols/tst_checksymbols.cpp @@ -175,8 +175,6 @@ private slots: void test_checksymbols_VirtualMethodUse(); void test_checksymbols_LabelUse(); void test_checksymbols_MacroUse(); - void test_checksymbols_Macros__FILE__LINE__DATE__TIME__1(); - void test_checksymbols_Macros__FILE__LINE__DATE__TIME__2(); void test_checksymbols_FunctionUse(); void test_checksymbols_PseudoKeywordUse(); void test_checksymbols_StaticUse(); @@ -328,55 +326,6 @@ void tst_CheckSymbols::test_checksymbols_MacroUse() TestData::check(source, expectedUses, macroUses); } -void tst_CheckSymbols::test_checksymbols_Macros__FILE__LINE__DATE__TIME__1() -{ - const QByteArray source = - "#define FILE_DATE_TIME __FILE__ \" / \" __DATE__ \" / \" __TIME__\n" - "#define LINE_NUMBER 0 + __LINE__\n" - "\n" - "void f()\n" - "{\n" - " class Printer;\n" - " Printer::printText(FILE_DATE_TIME); Printer::printInteger(LINE_NUMBER); Printer::nl();\n" - " return;\n" - "}\n"; - const QList<Use> expectedUses = QList<Use>() - << Use(4, 6, 1, CppHighlightingSupport::FunctionUse) - << Use(6, 11, 7, CppHighlightingSupport::TypeUse) - << Use(6, 11, 7, CppHighlightingSupport::TypeUse) - << Use(7, 5, 7, CppHighlightingSupport::TypeUse) - << Use(7, 41, 7, CppHighlightingSupport::TypeUse) - << Use(7, 77, 7, CppHighlightingSupport::TypeUse) - ; - - TestData::check(source, expectedUses); -} - -void tst_CheckSymbols::test_checksymbols_Macros__FILE__LINE__DATE__TIME__2() -{ - const QByteArray source = - "void f()\n" - "{\n" - " class Printer;\n" - " Printer::printInteger(__LINE__); Printer::printText(__FILE__); Printer::nl();\n" - " Printer::printText(__DATE__); Printer::printText(__TIME__); Printer::nl();\n" - " return;\n" - "}\n"; - const QList<Use> expectedUses = QList<Use>() - << Use(1, 6, 1, CppHighlightingSupport::FunctionUse) - << Use(3, 11, 7, CppHighlightingSupport::TypeUse) - << Use(3, 11, 7, CppHighlightingSupport::TypeUse) - << Use(4, 5, 7, CppHighlightingSupport::TypeUse) - << Use(4, 38, 7, CppHighlightingSupport::TypeUse) - << Use(4, 68, 7, CppHighlightingSupport::TypeUse) - << Use(5, 5, 7, CppHighlightingSupport::TypeUse) - << Use(5, 35, 7, CppHighlightingSupport::TypeUse) - << Use(5, 65, 7, CppHighlightingSupport::TypeUse) - ; - - TestData::check(source, expectedUses); -} - void tst_CheckSymbols::test_checksymbols_FunctionUse() { const QByteArray source = diff --git a/tests/auto/cplusplus/preprocessor/tst_preprocessor.cpp b/tests/auto/cplusplus/preprocessor/tst_preprocessor.cpp index 489722d675..2594bc692f 100644 --- a/tests/auto/cplusplus/preprocessor/tst_preprocessor.cpp +++ b/tests/auto/cplusplus/preprocessor/tst_preprocessor.cpp @@ -796,11 +796,7 @@ void tst_Preprocessor::builtin__FILE__() )); const QByteArray result____ = "# 1 \"some-file.c\"\n" - "const char *f =\n" - "# expansion begin 16,8 ~1\n" - "\"some-file.c\"\n" - "# expansion end\n" - "# 2 \"some-file.c\"\n"; + "const char *f = \"some-file.c\"\n"; QCOMPARE(preprocessed, result____); } |