aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNikolai Kosjar <nikolai.kosjar@digia.com>2013-12-02 15:47:36 +0100
committerNikolai Kosjar <nikolai.kosjar@digia.com>2013-12-03 09:53:26 +0100
commit796fcaf1d288267e93baba3d01927957c684758f (patch)
treee3ee777c7100475c2156963bd19034ae35b04468
parent132954f9f307f87de901519230c309e202c2b87f (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.h7
-rw-r--r--src/libs/cplusplus/pp-engine.cpp18
-rw-r--r--src/plugins/cppeditor/cppeditor.cpp6
-rw-r--r--src/plugins/cppeditor/cppfollowsymbolundercursor.cpp10
-rw-r--r--src/plugins/cpptools/cppfindreferences.cpp2
-rw-r--r--src/plugins/cpptools/cpphighlightingsupportinternal.cpp3
-rw-r--r--tests/auto/cplusplus/checksymbols/tst_checksymbols.cpp51
-rw-r--r--tests/auto/cplusplus/preprocessor/tst_preprocessor.cpp6
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(&macroCursor).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 &macro = use->macro();
- if (!macro.isPredefined())
- return &macro;
+ 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 &macro = 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____);
}