From 85b481a99a85bd450f467dd5ee01df25f029ba90 Mon Sep 17 00:00:00 2001 From: Sergey Grant Date: Mon, 30 Nov 2015 20:02:26 -0800 Subject: [PATCH] Bug 481070 - Parameter completion doesn't work inside lambda Change-Id: I32b0cf54dd349e04fddca17f4141e7fee06f2562 Signed-off-by: Sergey Grant --- .../core/dom/parser/cpp/semantics/AccessContext.java | 3 +++ .../ui/tests/text/contentassist2/CompletionTests.java | 9 ++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/AccessContext.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/AccessContext.java index 6d4a4621438..8b5184cdc47 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/AccessContext.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/AccessContext.java @@ -31,6 +31,7 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPScope; import org.eclipse.cdt.core.dom.ast.cpp.ICPPSpecialization; import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateParameter; import org.eclipse.cdt.core.parser.util.ArrayUtil; +import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPClosureType; import org.eclipse.cdt.internal.core.dom.parser.cpp.ClassTypeHelper; import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPDeferredClassInstance; import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPInternalUnknownScope; @@ -115,6 +116,8 @@ public class AccessContext { binding = ((ICPPAliasTemplateInstance) binding).getTemplateDefinition(); } IBinding owner = binding.getOwner(); + if (owner instanceof CPPClosureType) + return true; if (owner instanceof ICPPClassType) { bindingVisibility = ((ICPPClassType) owner).getVisibility(binding); } else { diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTests.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTests.java index 7e61b4212bf..85bcbc33ecd 100644 --- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTests.java +++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTests.java @@ -1401,6 +1401,13 @@ public class CompletionTests extends AbstractContentAssistTest { assertCompletionResults(fCursorOffset, expected, ID); } + // int par1; + // auto x = [](int par2) { return par/*cursor*/ + public void testLambdaParameter_481070() throws Exception { + final String[] expected= { "par1", "par2" }; + assertCompletionResults(fCursorOffset, expected, ID); + } + // #define fooBar // #define foo_bar // fB/*cursor*/ @@ -1629,7 +1636,7 @@ public class CompletionTests extends AbstractContentAssistTest { final String[] expectedDisplay = { "default_argument() : void" }; assertContentAssistResults(fCursorOffset, expectedDisplay, true, DISPLAY); } - + // template // struct default_argument {}; // default_arg/*cursor*/