summaryrefslogtreecommitdiff
path: root/src/libs/cplusplus/ResolveExpression.cpp
diff options
context:
space:
mode:
authorPrzemyslaw Gorszkowski <pgorszkowski@gmail.com>2013-06-25 15:41:17 +0200
committerErik Verbruggen <erik.verbruggen@digia.com>2013-07-12 12:47:09 +0200
commit46461fc18350a8224ac55e6043a5676f1b5380fc (patch)
treeb8ad01aadef64706e43576be2d3a62b14ae43299 /src/libs/cplusplus/ResolveExpression.cpp
parentab15d38726487b1f59281b98265da4884cb78685 (diff)
downloadqt-creator-46461fc18350a8224ac55e6043a5676f1b5380fc.tar.gz
C++: code completion for lambda calls
support for lambdas, e.g.: struct S { int bar; }; []() { return new S; } ()->bar; [] { return new S; } ()->bar; []() ->S* { return new S(); } ()->bar; []() throw() { return new S(); } ()->bar; []() throw()->S* { return new S(); } ()->bar; Task-number: QTCREATORBUG-9523 Change-Id: I43fbf6f0ee0bb11411c53c984df75ef33a276466 Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
Diffstat (limited to 'src/libs/cplusplus/ResolveExpression.cpp')
-rw-r--r--src/libs/cplusplus/ResolveExpression.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/libs/cplusplus/ResolveExpression.cpp b/src/libs/cplusplus/ResolveExpression.cpp
index 9b09c2c5b5..63dc2b92b2 100644
--- a/src/libs/cplusplus/ResolveExpression.cpp
+++ b/src/libs/cplusplus/ResolveExpression.cpp
@@ -366,6 +366,18 @@ bool ResolveExpression::visit(CompoundExpressionAST *ast)
return false;
}
+bool ResolveExpression::visit(LambdaExpressionAST *ast)
+{
+ accept(ast->statement);
+ return false;
+}
+
+bool ResolveExpression::visit(ReturnStatementAST *ast)
+{
+ accept(ast->expression);
+ return false;
+}
+
bool ResolveExpression::visit(NestedExpressionAST *ast)
{
accept(ast->expression);
@@ -626,6 +638,11 @@ bool ResolveExpression::visit(CallAST *ast)
{
const QList<LookupItem> baseResults = resolve(ast->base_expression, _scope);
+ if (ast->base_expression->asLambdaExpression()) {
+ _results = baseResults;
+ return false;
+ }
+
// Compute the types of the actual arguments.
unsigned actualArgumentCount = 0;