From 510f8ccc3d53c2955004a6ba3291c321f33ddcfb Mon Sep 17 00:00:00 2001 From: Roberto Raggi <roberto.raggi@nokia.com> Date: Thu, 8 Oct 2009 15:59:43 +0200 Subject: [PATCH] Improved the detection of #include-like directives. --- src/plugins/cpptools/cppcodecompletion.cpp | 23 +++++++++------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/src/plugins/cpptools/cppcodecompletion.cpp b/src/plugins/cpptools/cppcodecompletion.cpp index 5e8df20ac08..0a30af6f78c 100644 --- a/src/plugins/cpptools/cppcodecompletion.cpp +++ b/src/plugins/cpptools/cppcodecompletion.cpp @@ -690,21 +690,16 @@ static int startOfOperator(TextEditor::ITextEditable *editor, } // Check for include preprocessor directive else if (k == T_STRING_LITERAL || k == T_ANGLE_STRING_LITERAL || k == T_SLASH) { - const QList<SimpleToken> &tokens = tokenUnderCursor.tokens(); - int i = 0; bool include = false; - for (; i < tokens.size(); ++i) { - const SimpleToken &token = tokens.at(i); - if (token.position() == tk.position()) { - if (i == 0) // no token on the left, but might be on a previous line - break; - const SimpleToken &previousToken = tokens.at(i - 1); - if (previousToken.is(T_IDENTIFIER)) { - if (previousToken.text() == QLatin1String("include") || - previousToken.text() == QLatin1String("import")) { - include = true; - break; - } + const QList<SimpleToken> &tokens = tokenUnderCursor.tokens(); + if (tokens.size() >= 3) { + if (tokens.at(0).is(T_POUND) && tokens.at(1).is(T_IDENTIFIER) && (tokens.at(2).is(T_STRING_LITERAL) || + tokens.at(2).is(T_ANGLE_STRING_LITERAL))) { + QStringRef directive = tokens.at(1).text(); + if (directive == QLatin1String("include") || + directive == QLatin1String("include_next") || + directive == QLatin1String("import")) { + include = true; } } } -- GitLab