From 9b349bc02e7138f7d0e61b4632194a14ece52ac9 Mon Sep 17 00:00:00 2001 From: Doug Schaefer Date: Tue, 20 Mar 2007 00:52:50 +0000 Subject: [PATCH] Patch for Bryan bug 90036. Improve support for namespaces by adding the :: after the namespace name. --- .../AbstractContentAssistTest.java | 23 +- .../CompletionProposalsBaseTest.java | 8 +- .../text/contentassist2/CompletionTests.java | 196 ++++++++++++------ .../contentassist2/ParameterHintTests.java | 3 +- .../DOMCompletionProposalComputer.java | 39 +++- 5 files changed, 191 insertions(+), 78 deletions(-) diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/AbstractContentAssistTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/AbstractContentAssistTest.java index 536ec1ca08f..4dccdef3891 100644 --- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/AbstractContentAssistTest.java +++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/AbstractContentAssistTest.java @@ -39,10 +39,15 @@ import org.eclipse.cdt.ui.tests.BaseUITestCase; import org.eclipse.cdt.ui.tests.text.EditorTestHelper; import org.eclipse.cdt.ui.text.ICCompletionProposal; +import org.eclipse.cdt.internal.ui.text.contentassist.CCompletionProposal; import org.eclipse.cdt.internal.ui.text.contentassist.CContentAssistProcessor; public abstract class AbstractContentAssistTest extends BaseUITestCase { + public static final int COMPARE_ID_STRINGS = 0; + public static final int COMPARE_DISP_STRINGS = 1; + public static final int COMPARE_REP_STRINGS = 2; + private ICProject fCProject; protected IFile fCFile; private ITextEditor fEditor; @@ -86,7 +91,7 @@ public abstract class AbstractContentAssistTest extends BaseUITestCase { super.tearDown(); } - protected void assertContentAssistResults(int offset, String[] expected, boolean isCompletion, boolean compareIdString) throws Exception { + protected void assertContentAssistResults(int offset, String[] expected, boolean isCompletion, int compareType) throws Exception { if (CTestPlugin.getDefault().isDebugging()) { System.out.println("\n\n\n\n\nTesting "+this.getClass().getName()); @@ -105,7 +110,7 @@ public abstract class AbstractContentAssistTest extends BaseUITestCase { assertTrue(results != null); results= filterResults(results); - String[] resultStrings= toStringArray(results, compareIdString); + String[] resultStrings= toStringArray(results, compareType); Arrays.sort(expected); Arrays.sort(resultStrings); @@ -170,14 +175,18 @@ public abstract class AbstractContentAssistTest extends BaseUITestCase { return filtered.toArray(); } - private String[] toStringArray(Object[] results, boolean useIdString) { + private String[] toStringArray(Object[] results, int compareType) { String[] strings= new String[results.length]; for(int i=0; i< results.length; i++){ Object result = results[i]; - if (result instanceof ICCompletionProposal && useIdString) { - strings[i]= ((ICCompletionProposal)result).getIdString(); - } else if (result instanceof ICompletionProposal) { - strings[i]= ((ICompletionProposal)result).getDisplayString(); + if (result instanceof ICompletionProposal) { + if (compareType == COMPARE_ID_STRINGS) { + strings[i]= ((CCompletionProposal)result).getIdString(); + } else if (compareType == COMPARE_DISP_STRINGS) { + strings[i]= ((CCompletionProposal)result).getDisplayString(); + } else { + strings[i]= ((CCompletionProposal)result).getReplacementString(); + } } else { strings[i]= ((IContextInformation)result).getContextDisplayString(); } diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionProposalsBaseTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionProposalsBaseTest.java index 1dac026da1e..d4ab117eb2f 100644 --- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionProposalsBaseTest.java +++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionProposalsBaseTest.java @@ -90,13 +90,13 @@ public abstract class CompletionProposalsBaseTest extends AbstractContentAssistT return bodyFile; } - protected void assertCompletionResults(int offset, String[] expected, boolean compareIdString) throws Exception { - assertContentAssistResults(offset, expected, true, compareIdString); + protected void assertCompletionResults(int offset, String[] expected, int compareType) throws Exception { + assertContentAssistResults(offset, expected, true, compareType); } public void testCompletionProposals() throws Exception { String[] expected = getExpectedResultsValues(); - assertCompletionResults(getCompletionPosition(), expected, false); - + assertCompletionResults(getCompletionPosition(), expected, + AbstractContentAssistTest.COMPARE_DISP_STRINGS); } } \ No newline at end of file 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 de89166626e..23b7896e759 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 @@ -128,8 +128,8 @@ public class CompletionTests extends AbstractContentAssistTest { return createFile(project, SOURCE_FILE_NAME, sourceContent.toString()); } - protected void assertCompletionResults(int offset, String[] expected, boolean compareIdString) throws Exception { - assertContentAssistResults(offset, expected, true, compareIdString); + protected void assertCompletionResults(int offset, String[] expected, int compareType) throws Exception { + assertContentAssistResults(offset, expected, true, compareType); } //void gfunc() {C1 v; v.m/*cursor*/ @@ -139,7 +139,8 @@ public class CompletionTests extends AbstractContentAssistTest { final String[] expected= { "m123(void)", "m12(void)", "m13(void)" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //void gfunc() {C1 v; v.fMySelf.m/*cursor*/ @@ -149,7 +150,8 @@ public class CompletionTests extends AbstractContentAssistTest { final String[] expected= { "m123(void)", "m12(void)", "m13(void)" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //void gfunc() {C1 v; v.m12().m/*cursor*/ @@ -159,7 +161,8 @@ public class CompletionTests extends AbstractContentAssistTest { final String[] expected= { "m123(void)", "m12(void)", "m13(void)" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //void gfunc() {gfC1().m/*cursor*/ @@ -169,7 +172,8 @@ public class CompletionTests extends AbstractContentAssistTest { final String[] expected= { "m123(void)", "m12(void)", "m13(void)" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //void C1::self() {m/*cursor*/ @@ -177,7 +181,8 @@ public class CompletionTests extends AbstractContentAssistTest { final String[] expected= { "m123(void)", "m12(void)", "m13(void)", "m1private(void)" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //void C1::self() {this->m/*cursor*/ @@ -185,7 +190,8 @@ public class CompletionTests extends AbstractContentAssistTest { final String[] expected= { "m123(void)", "m12(void)", "m13(void)", "m1private(void)" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //void gfunc() {try{int bla;}catch(C1 v) {v.fMySelf.m/*cursor*/ @@ -195,7 +201,8 @@ public class CompletionTests extends AbstractContentAssistTest { final String[] expected= { "m123(void)", "m12(void)", "m13(void)" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //void gfunc() {try{int bla;}catch(C2 c){} catch(C1 v) {v.fMySelf.m/*cursor*/ @@ -205,7 +212,8 @@ public class CompletionTests extends AbstractContentAssistTest { final String[] expected= { "m123(void)", "m12(void)", "m13(void)" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //void f() {gC/*cursor*/ @@ -213,7 +221,8 @@ public class CompletionTests extends AbstractContentAssistTest { final String[] expected= { "gC1", "gC2" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //void C1::f() {gC/*cursor*/ @@ -221,7 +230,8 @@ public class CompletionTests extends AbstractContentAssistTest { final String[] expected= { "gC1", "gC2" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //void f() {C2* cLocal1; while(true) {C1* cLocal2; cL/*cursor*/ @@ -229,7 +239,8 @@ public class CompletionTests extends AbstractContentAssistTest { final String[] expected= { "cLocal1", "cLocal2" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //void C2::f() {C2* cLocal1; while(true) {C1* cLocal2; cL/*cursor*/ @@ -237,7 +248,8 @@ public class CompletionTests extends AbstractContentAssistTest { final String[] expected= { "cLocal1", "cLocal2" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //void f() {C2* cLocal1; cLocal1.f/*cursor*/ @@ -245,7 +257,8 @@ public class CompletionTests extends AbstractContentAssistTest { final String[] expected= { "fMySelf" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //void C2::f() {while(true) {f/*cursor*/ @@ -253,7 +266,8 @@ public class CompletionTests extends AbstractContentAssistTest { final String[] expected= { "fMySelf" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //void f() {gf/*cursor*/ @@ -261,7 +275,8 @@ public class CompletionTests extends AbstractContentAssistTest { final String[] expected= { "gfC1(void)", "gfC2(void)" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //void C3::f() {gf/*cursor*/ @@ -269,7 +284,8 @@ public class CompletionTests extends AbstractContentAssistTest { final String[] expected= { "gfC1(void)", "gfC2(void)" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //void f() {C1* l1; l1.m/*cursor*/ @@ -279,7 +295,8 @@ public class CompletionTests extends AbstractContentAssistTest { final String[] expected= { "m123(void)", "m12(void)", "m13(void)" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //void C3::f() {m/*cursor*/ @@ -289,7 +306,8 @@ public class CompletionTests extends AbstractContentAssistTest { final String[] expected= { "m123(void)", "m12(void)", "m13(void)" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //void f() {C/*cursor*/ @@ -297,7 +315,8 @@ public class CompletionTests extends AbstractContentAssistTest { final String[] expected= { "C1", "C2", "C3" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //void C2::f() {T/*cursor*/ @@ -305,7 +324,8 @@ public class CompletionTests extends AbstractContentAssistTest { final String[] expected= { "T1", "T2", "T3", "TClass" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //namespace ns {void nsfunc(){C/*cursor*/ @@ -313,7 +333,8 @@ public class CompletionTests extends AbstractContentAssistTest { final String[] expected= { "C1", "C2", "C3", "CNS" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //namespace ns {void gfunc(){::C/*cursor*/ @@ -321,7 +342,8 @@ public class CompletionTests extends AbstractContentAssistTest { final String[] expected= { "C1", "C2", "C3" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //void f() {e/*cursor*/ @@ -329,7 +351,8 @@ public class CompletionTests extends AbstractContentAssistTest { final String[] expected= { "e11", "e12", "E1" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //void C3::f() {e/*cursor*/ @@ -337,7 +360,8 @@ public class CompletionTests extends AbstractContentAssistTest { final String[] expected= { "e11", "e12", "e21", "e22", "E1", "E2" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //void f() {C3* l1; l1.C/*cursor*/ @@ -346,7 +370,8 @@ public class CompletionTests extends AbstractContentAssistTest { final String[] expected= { "C3", "C2", "C1" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //void f() {C2* l1; l1.C/*cursor*/ @@ -355,7 +380,8 @@ public class CompletionTests extends AbstractContentAssistTest { final String[] expected= { "C2", "C1" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //void f() {C3* l1; l1.C3::fMySelf.iam/*cursor*/ @@ -364,7 +390,8 @@ public class CompletionTests extends AbstractContentAssistTest { final String[] expected= { "iam3(void)", "iam2(void)", "iam1(void)" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //void f() {C3* l1; l1.C2::fMySelf.iam/*cursor*/ @@ -373,7 +400,8 @@ public class CompletionTests extends AbstractContentAssistTest { final String[] expected= { "iam2(void)", "iam1(void)" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //void f() {C3* l1; l1.C1::fMySelf.iam/*cursor*/ @@ -381,7 +409,8 @@ public class CompletionTests extends AbstractContentAssistTest { final String[] expected= { "iam1(void)" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //void f() {C3* l1; l1.T3::fMySelf.iam/*cursor*/ @@ -390,7 +419,8 @@ public class CompletionTests extends AbstractContentAssistTest { final String[] expected= { "iam3(void)", "iam2(void)", "iam1(void)" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //void f() {C3* l1; l1.T2::fMySelf.iam/*cursor*/ @@ -399,7 +429,8 @@ public class CompletionTests extends AbstractContentAssistTest { final String[] expected= { "iam2(void)", "iam1(void)" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //void f() {C3* l1; l1.T1::fMySelf.iam/*cursor*/ @@ -407,7 +438,8 @@ public class CompletionTests extends AbstractContentAssistTest { final String[] expected= { "iam1(void)" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //void f() {C1().iam/*cursor*/ @@ -415,7 +447,8 @@ public class CompletionTests extends AbstractContentAssistTest { final String[] expected= { "iam1(void)" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //void f() {C1 c; (&c)->iam/*cursor*/ @@ -423,7 +456,8 @@ public class CompletionTests extends AbstractContentAssistTest { final String[] expected= { "iam1(void)" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //void f() {C1* c; (*c).iam/*cursor*/ @@ -431,7 +465,8 @@ public class CompletionTests extends AbstractContentAssistTest { final String[] expected= { "iam1(void)" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //void f() {C1** c; (**c).iam/*cursor*/ @@ -439,14 +474,16 @@ public class CompletionTests extends AbstractContentAssistTest { final String[] expected= { "iam1(void)" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //void f() {C1** c; (*c)->iam/*cursor*/ public void testDereferencingOperator3() throws Exception { final String[] expected= { "iam1(void)" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //void f() {C1* c; c[0].iam/*cursor*/ @@ -454,28 +491,32 @@ public class CompletionTests extends AbstractContentAssistTest { final String[] expected= { "iam1(void)" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //void f() {C1** c; c[0][1].iam/*cursor*/ public void testArrayAccessOperator2() throws Exception { final String[] expected= { "iam1(void)" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //void f() {C1** c; c[0]->iam/*cursor*/ public void testArrayAccessOperator3() throws Exception { final String[] expected= { "iam1(void)" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //void f() {C1* c; (&c[0])->iam/*cursor*/ public void testArrayAccessOperator4() throws Exception { final String[] expected= { "iam1(void)" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //void f() {void* c; ((C1*)c)->iam/*cursor*/ @@ -483,14 +524,16 @@ public class CompletionTests extends AbstractContentAssistTest { final String[] expected= { "iam1(void)" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //void g(int a) {}; void f() {void* c; g(((C1*)c)->iam/*cursor*/ public void testCasts2() throws Exception { final String[] expected= { "iam1(void)" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //void f() {C1* c; c++->iam/*cursor*/ @@ -498,35 +541,40 @@ public class CompletionTests extends AbstractContentAssistTest { final String[] expected= { "iam1(void)" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //void f() {C1* c; (*++c).iam/*cursor*/ public void testPointerArithmetic2() throws Exception { final String[] expected= { "iam1(void)" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //void f() {C1* c; c--->iam/*cursor*/ public void testPointerArithmetic3() throws Exception { final String[] expected= { "iam1(void)" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //void f() {C1 c; (&c+1)->iam/*cursor*/ public void testPointerArithmetic4() throws Exception { final String[] expected= { "iam1(void)" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //void f() {C1 c; (&c-1)->iam/*cursor*/ public void testPointerArithmetic5() throws Exception { final String[] expected= { "iam1(void)" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //void f() {int localVar=0; if (*cond && somefunc(&local/*cursor*/ @@ -534,7 +582,8 @@ public class CompletionTests extends AbstractContentAssistTest { final String[] expected= { "localVar" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //int a[] = {1,2}; void f(int _0306_b) {_0306_b/*cursor*/ @@ -542,14 +591,16 @@ public class CompletionTests extends AbstractContentAssistTest { final String[] expected= { "_0306_b" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //int a[] = {1,2}; void f(int b) {int _0306_b[] = {2,3}; _0306_b/*cursor*/ public void testCuttingInput2() throws Exception { final String[] expected= { "_0306_b" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //enum EnumType function() {int _031209_v; _031209/*cursor*/ @@ -557,7 +608,8 @@ public class CompletionTests extends AbstractContentAssistTest { final String[] expected= { "_031209_v" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //namespace ns {void x() {NSCO/*cursor*/ @@ -565,14 +617,16 @@ public class CompletionTests extends AbstractContentAssistTest { final String[] expected= { "NSCONST" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //void ns::CNS::mcns(){NSCO/*cursor*/ public void testAccessToNamespaceFromClassMember2() throws Exception { final String[] expected= { "NSCONST" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //#i/*cursor*/ @@ -580,7 +634,8 @@ public class CompletionTests extends AbstractContentAssistTest { final String[] expected= { "#if", "#ifdef", "#ifndef", "#include" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //void gfunc(){TClass t(0); t./*cursor*/ @@ -589,7 +644,8 @@ public class CompletionTests extends AbstractContentAssistTest { final String[] expected= { "add(T)" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //void gfunc(){C3 c3; c3.t/*cursor*/ @@ -599,7 +655,8 @@ public class CompletionTests extends AbstractContentAssistTest { "tConvert(void)" // "tConvert(void)" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //using namespace ns;void gfunc(){NSC/*cursor*/ @@ -607,6 +664,25 @@ public class CompletionTests extends AbstractContentAssistTest { final String[] expected= { "NSCONST" }; - assertCompletionResults(fCursorOffset, expected, true); + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_ID_STRINGS); + } + + //void gfunc(){n/*cursor*/ + public void testAutoColons() throws Exception { + final String[] expected= { + "ns::" + }; + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_REP_STRINGS); + } + + //using namespace /*cursor*/ + public void testAutoColons2() throws Exception { + final String[] expected= { + "ns" + }; + assertCompletionResults(fCursorOffset, expected, + AbstractContentAssistTest.COMPARE_REP_STRINGS); } } diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ParameterHintTests.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ParameterHintTests.java index 2023ac86839..e3eec8cca1d 100644 --- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ParameterHintTests.java +++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/ParameterHintTests.java @@ -57,7 +57,8 @@ public class ParameterHintTests extends AbstractContentAssistTest { } protected void assertParameterHints(String[] expected) throws Exception { - assertContentAssistResults(getBuffer().length() - 1, expected, false, false); + assertContentAssistResults(getBuffer().length() - 1, expected, false, + AbstractContentAssistTest.COMPARE_ID_STRINGS); } //void foo(){aFunc( diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/DOMCompletionProposalComputer.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/DOMCompletionProposalComputer.java index e2ab24d60ec..108993f4485 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/DOMCompletionProposalComputer.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/DOMCompletionProposalComputer.java @@ -40,6 +40,9 @@ import org.eclipse.cdt.core.dom.ast.IParameter; import org.eclipse.cdt.core.dom.ast.IType; import org.eclipse.cdt.core.dom.ast.ITypedef; import org.eclipse.cdt.core.dom.ast.IVariable; +import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTQualifiedName; +import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTUsingDeclaration; +import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTUsingDirective; import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassTemplate; import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType; import org.eclipse.cdt.core.dom.ast.cpp.ICPPConstructor; @@ -200,12 +203,16 @@ public class DOMCompletionProposalComputer extends ParsingBasedProposalComputer if (!isAnonymousBinding(binding)) { if (binding instanceof ICPPClassType) { handleClass((ICPPClassType) binding, cContext, proposals); - } else if (binding instanceof IFunction) { + } else if (binding instanceof IFunction) { handleFunction((IFunction)binding, cContext, proposals); - } else if (binding instanceof IVariable) { - handleVariable((IVariable) binding, cContext, proposals); } else if (!cContext.isContextInformationStyle()) { - proposals.add(createProposal(binding.getName(), binding.getName(), getImage(binding), cContext)); + if (binding instanceof IVariable) { + handleVariable((IVariable) binding, cContext, proposals); + } else if (binding instanceof ICPPNamespace) { + handleNamespace((ICPPNamespace) binding, astContext, cContext, proposals); + } else { + proposals.add(createProposal(binding.getName(), binding.getName(), getImage(binding), cContext)); + } } } } @@ -314,8 +321,6 @@ public class DOMCompletionProposalComputer extends ParsingBasedProposalComputer } private void handleVariable(IVariable variable, CContentAssistInvocationContext context, List proposals) { - if (context.isContextInformationStyle()) return; - StringBuffer repStringBuff = new StringBuffer(); repStringBuff.append(variable.getName()); @@ -344,6 +349,28 @@ public class DOMCompletionProposalComputer extends ParsingBasedProposalComputer proposals.add(proposal); } + private void handleNamespace(ICPPNamespace namespace, + IASTCompletionContext astContext, + CContentAssistInvocationContext cContext, List proposals) { + if (astContext instanceof ICPPASTQualifiedName) { + IASTCompletionContext parent = ((ICPPASTQualifiedName) astContext) + .getCompletionContext(); + handleNamespace(namespace, parent, cContext, proposals); + return; + } + + StringBuffer repStringBuff = new StringBuffer(); + repStringBuff.append(namespace.getName()); + + if (!(astContext instanceof ICPPASTUsingDeclaration) + && !(astContext instanceof ICPPASTUsingDirective)) { + repStringBuff.append("::"); //$NON-NLS-1$ + } + + String repString = repStringBuff.toString(); + proposals.add(createProposal(repString, namespace.getName(), getImage(namespace), cContext)); + } + private CCompletionProposal createProposal(String repString, String dispString, Image image, CContentAssistInvocationContext context) { return createProposal(repString, dispString, null, image, context); }