aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/3rdparty/cplusplus/Bind.cpp
diff options
context:
space:
mode:
authorPrzemyslaw Gorszkowski <pgorszkowski@gmail.com>2015-02-02 15:13:00 +0100
committerPrzemyslaw Gorszkowski <pgorszkowski@gmail.com>2015-02-04 11:55:04 +0000
commit955e28f954746a6a7242fe8fa67dd7c53b8e2430 (patch)
treef403719446176b281accb95f84e34d4b5be90fec /src/libs/3rdparty/cplusplus/Bind.cpp
parent7d4b9c4ba0936adf8ad1fcaf0093d15f394e3023 (diff)
C++: fix auto declaration in if condition
Fix for auto completion in case of auto declaration inside if condition: struct Foo { int bar; }; void func() { if (auto s = new Foo) s->; // auto completion does not work } Task-number: QTCREATORBUG-13805 Change-Id: Ia1776e8cc04e6040a6bf5f43cf82cfd6ce6dde7a Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
Diffstat (limited to 'src/libs/3rdparty/cplusplus/Bind.cpp')
-rw-r--r--src/libs/3rdparty/cplusplus/Bind.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/libs/3rdparty/cplusplus/Bind.cpp b/src/libs/3rdparty/cplusplus/Bind.cpp
index ccd04dcb6f..58e3815a8f 100644
--- a/src/libs/3rdparty/cplusplus/Bind.cpp
+++ b/src/libs/3rdparty/cplusplus/Bind.cpp
@@ -1634,6 +1634,15 @@ bool Bind::visit(ConditionAST *ast)
unsigned sourceLocation = location(declaratorId->name, ast->firstToken());
Declaration *decl = control()->newDeclaration(sourceLocation, declaratorId->name->name);
decl->setType(type);
+
+ if (type.isAuto() && translationUnit()->languageFeatures().cxx11Enabled) {
+ const ExpressionAST *initializer = ast->declarator->initializer;
+
+ const unsigned startOfExpression = initializer->firstToken();
+ const unsigned endOfExpression = initializer->lastToken();
+ decl->setInitializer(asStringLiteral(startOfExpression, endOfExpression));
+ }
+
_scope->addMember(decl);
}