Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSergey Grant2015-12-01 04:02:26 +0000
committerSergey Prigogin2015-12-24 02:27:27 +0000
commit61b65becf9e3c74fb055e0bd65d3e3a262469a96 (patch)
tree640f2aa2f0fd51373d007c399cae8c407178c58b
parent6142db7901d5fad87ebbff5740e62cb31591d6c0 (diff)
downloadorg.eclipse.cdt-61b65becf9e3c74fb055e0bd65d3e3a262469a96.tar.gz
org.eclipse.cdt-61b65becf9e3c74fb055e0bd65d3e3a262469a96.tar.xz
org.eclipse.cdt-61b65becf9e3c74fb055e0bd65d3e3a262469a96.zip
Bug 481070 - Parameter completion doesn't work inside lambda
Change-Id: I32b0cf54dd349e04fddca17f4141e7fee06f2562 Signed-off-by: Sergey Grant <sergey.grant@me.com>
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/AccessContext.java3
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTests.java9
2 files changed, 11 insertions, 1 deletions
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<typename T = int>
// struct default_argument {};
// default_arg/*cursor*/

Back to the top