summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikolai Kosjar <nikolai.kosjar@qt.io>2017-08-07 11:17:21 +0200
committerNikolai Kosjar <nikolai.kosjar@qt.io>2017-08-07 13:01:30 +0000
commit9092ef7992b685b122c4e593f2ad3ee545c1f0c4 (patch)
treeb1f7d5905d37c315e5a8abc1c274f74074e91d17
parentcac4b7c87c57089c1f36ec25e58239ddb5ff0302 (diff)
downloadqt-creator-9092ef7992b685b122c4e593f2ad3ee545c1f0c4.tar.gz
C++: Do not insert matching } within string
Regression from commit a6aa287720112c70c1363bcb46d55d438fe57eac C++: Fine-tune auto insertion of '}' Change-Id: I3ede8c7a1e3c73708d5d5a59c314e4b4596976b2 Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io> Reviewed-by: Christian Stenger <christian.stenger@qt.io>
-rw-r--r--src/libs/cplusplus/MatchingText.cpp5
-rw-r--r--tests/unit/unittest/matchingtext-test.cpp7
2 files changed, 12 insertions, 0 deletions
diff --git a/src/libs/cplusplus/MatchingText.cpp b/src/libs/cplusplus/MatchingText.cpp
index e2f04e4f0f..447c91ea59 100644
--- a/src/libs/cplusplus/MatchingText.cpp
+++ b/src/libs/cplusplus/MatchingText.cpp
@@ -326,6 +326,11 @@ static bool allowAutoClosingBrace(const QTextCursor &cursor,
int prevState;
const Tokens tokens = getTokens(cursor, prevState);
+
+ const Token token = tokenAtPosition(tokens, cursor.positionInBlock());
+ if (token.isStringLiteral())
+ return false;
+
if (isAfterNamespaceDefinition(tokens, cursor.positionInBlock()))
return false;
diff --git a/tests/unit/unittest/matchingtext-test.cpp b/tests/unit/unittest/matchingtext-test.cpp
index d5bfcaddef..c07bfec49a 100644
--- a/tests/unit/unittest/matchingtext-test.cpp
+++ b/tests/unit/unittest/matchingtext-test.cpp
@@ -256,4 +256,11 @@ TEST_F(MatchingText, ContextAllowsAutoParentheses_CurlyBrace_NotBeforeNestedName
ASSERT_FALSE(MT::contextAllowsAutoParentheses(document.cursor, "{"));
}
+TEST_F(MatchingText, ContextAllowsAutoParentheses_CurlyBrace_NotWithinString)
+{
+ const Document document("\"a@b\"");
+
+ ASSERT_FALSE(MT::contextAllowsAutoParentheses(document.cursor, "{"));
+}
+
} // anonymous