diff options
author | Nikolai Kosjar <nikolai.kosjar@qt.io> | 2017-08-07 11:17:21 +0200 |
---|---|---|
committer | Nikolai Kosjar <nikolai.kosjar@qt.io> | 2017-08-07 13:01:30 +0000 |
commit | 9092ef7992b685b122c4e593f2ad3ee545c1f0c4 (patch) | |
tree | b1f7d5905d37c315e5a8abc1c274f74074e91d17 | |
parent | cac4b7c87c57089c1f36ec25e58239ddb5ff0302 (diff) | |
download | qt-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.cpp | 5 | ||||
-rw-r--r-- | tests/unit/unittest/matchingtext-test.cpp | 7 |
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 |