diff --git a/src/plugins/cpptools/cppcodecompletion.cpp b/src/plugins/cpptools/cppcodecompletion.cpp
index 5e8df20ac08110f2f29229087a717b531110ad77..0a30af6f78ccd072767e417c01f74e52769caa8b 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;
                 }
             }
         }