From ad05d7423a6e82b702a2160ce227a7e0b958285b Mon Sep 17 00:00:00 2001 From: Nathan Ridge Date: Tue, 29 Jan 2013 17:03:04 -0800 Subject: [PATCH] Bug 397494 - Error evaluating decltype of constant lambda Reviewed-on: https://git.eclipse.org/r/9478 Reviewed-by: Sergey Prigogin IP-Clean: Sergey Prigogin Tested-by: Sergey Prigogin --- .../cdt/core/parser/tests/ast2/AST2CPPTests.java | 15 +++++++++++++++ .../core/dom/parser/cpp/CPPClosureType.java | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java index cf82d2d8ee1..7488fbb69d6 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java @@ -10088,6 +10088,21 @@ public class AST2CPPTests extends AST2TestBase { helper.assertNonProblemOnFirstIdentifier("fint({vchar"); } + // template + // T bar(); + // struct S { + // void waldo(); + // }; + // int main() { + // auto L = [](S s) { return s; }; + // typedef decltype(L) lambda_type; + // decltype(bar()(S())) v; + // v.waldo(); + // } + public void testDecltypeWithConstantLambda_397494() throws Exception { + parseAndCheckBindings(); + } + // template // struct enable_if { // }; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClosureType.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClosureType.java index 14e1902fd42..979cc8fd7b3 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClosureType.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClosureType.java @@ -103,7 +103,7 @@ public class CPPClosureType extends PlatformObject implements ICPPClassType, ICP // Function call operator final IType returnType= getReturnType(); final IType[] parameterTypes= getParameterTypes(); - ft= new CPPFunctionType(returnType, parameterTypes, isMutable(), false, false); + ft= new CPPFunctionType(returnType, parameterTypes, !isMutable(), false, false); ICPPParameter[] params = new ICPPParameter[parameterTypes.length]; for (int i = 0; i < params.length; i++) {