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