From ff1203de9ec11fb70792bd601fa4c56f6ae85447 Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Mon, 2 Jun 2014 16:06:26 -0400 Subject: C++: Fix Macrouse::utf16charsBegin() This caused displaced highlighting of macro uses after #if constructs. MacroUse::utf16charBegin() was based on the last "continuation token", which was wrong. Change-Id: I89983d82fcf804ba853c04a59a7533c489785d05 Reviewed-by: Erik Verbruggen --- src/plugins/cpptools/cpppreprocessor_test.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'src/plugins/cpptools/cpppreprocessor_test.cpp') diff --git a/src/plugins/cpptools/cpppreprocessor_test.cpp b/src/plugins/cpptools/cpppreprocessor_test.cpp index 61a6c4a7b5..398c694687 100644 --- a/src/plugins/cpptools/cpppreprocessor_test.cpp +++ b/src/plugins/cpptools/cpppreprocessor_test.cpp @@ -180,3 +180,25 @@ void CppToolsPlugin::test_cpppreprocessor_includes_allDiagnostics() QCOMPARE(document->unresolvedIncludes().size(), 3); QCOMPARE(document->diagnosticMessages().size(), 3); } + +void CppToolsPlugin::test_cpppreprocessor_macroUses() +{ + QByteArray source = + "#define SOMEDEFINE 1\n" + "#if SOMEDEFINE == 1\n" + " int someNumber;\n" + "#endif\n" + ; + + SourcePreprocessor processor; + Document::Ptr document = processor.run(source); + QVERIFY(document); + const QList macroUses = document->macroUses(); + QCOMPARE(macroUses.size(), 1); + const Document::MacroUse macroUse = macroUses.at(0); + QCOMPARE(macroUse.bytesBegin(), 25U); + QCOMPARE(macroUse.bytesEnd(), 35U); + QCOMPARE(macroUse.utf16charsBegin(), 25U); + QCOMPARE(macroUse.utf16charsEnd(), 35U); + QCOMPARE(macroUse.beginLine(), 2U); +} -- cgit v1.2.1