1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-08-11 10:15:39 +02:00

Fix for bug#57692

This commit is contained in:
Hoda Amer 2004-04-12 21:10:29 +00:00
parent 83dd838463
commit 9494a0f14e
7 changed files with 110 additions and 97 deletions

View file

@ -1,3 +1,6 @@
2004-04-12 Hoda Amer
Updated CompletionFailedTest_ScopedReference_NoPrefix_Bug50152, renamed it to CompletionTest_ScopedReference_NoPrefix and moved it out of the failed tests folder.
2004-04-07 John Camelon 2004-04-07 John Camelon
Updated CompletionFailedTest_ConstructorReference_Bug50808, renamed it to CompletionTest_ConstructorReference and moved it out of the failed tests folder. Updated CompletionFailedTest_ConstructorReference_Bug50808, renamed it to CompletionTest_ConstructorReference and moved it out of the failed tests folder.
Updated CompletionFailedTest_TypeDef_Bug52948, renamed it to CompletionTest_TypeDef_Prefix and moved it out of the failed tests folder. Updated CompletionFailedTest_TypeDef_Bug52948, renamed it to CompletionTest_TypeDef_Prefix and moved it out of the failed tests folder.

View file

@ -8,9 +8,42 @@ package org.eclipse.cdt.ui.tests;
import junit.framework.Test; import junit.framework.Test;
import junit.framework.TestSuite; import junit.framework.TestSuite;
import org.eclipse.cdt.ui.tests.text.PartitionTokenScannerTest; import org.eclipse.cdt.ui.tests.text.contentassist.CompletionTest_ArgumentType_NoPrefix;
import org.eclipse.cdt.ui.tests.text.contentassist.*; import org.eclipse.cdt.ui.tests.text.contentassist.CompletionTest_ArgumentType_NoPrefix2;
import org.eclipse.cdt.ui.tests.text.contentassist.failedtests.*; import org.eclipse.cdt.ui.tests.text.contentassist.CompletionTest_ArgumentType_Prefix;
import org.eclipse.cdt.ui.tests.text.contentassist.CompletionTest_ClassReference_NoPrefix;
import org.eclipse.cdt.ui.tests.text.contentassist.CompletionTest_ClassReference_Prefix;
import org.eclipse.cdt.ui.tests.text.contentassist.CompletionTest_ConstructorReference;
import org.eclipse.cdt.ui.tests.text.contentassist.CompletionTest_ExceptionReference_NoPrefix;
import org.eclipse.cdt.ui.tests.text.contentassist.CompletionTest_ExceptionReference_Prefix;
import org.eclipse.cdt.ui.tests.text.contentassist.CompletionTest_FieldType_NoPrefix;
import org.eclipse.cdt.ui.tests.text.contentassist.CompletionTest_FieldType_NoPrefix2;
import org.eclipse.cdt.ui.tests.text.contentassist.CompletionTest_FieldType_Prefix;
import org.eclipse.cdt.ui.tests.text.contentassist.CompletionTest_FunctionReference_NoPrefix;
import org.eclipse.cdt.ui.tests.text.contentassist.CompletionTest_FunctionReference_Prefix;
import org.eclipse.cdt.ui.tests.text.contentassist.CompletionTest_MacroRef_NoPrefix;
import org.eclipse.cdt.ui.tests.text.contentassist.CompletionTest_MacroRef_Prefix;
import org.eclipse.cdt.ui.tests.text.contentassist.CompletionTest_MemberReference_Arrow_NoPrefix;
import org.eclipse.cdt.ui.tests.text.contentassist.CompletionTest_MemberReference_Arrow_Prefix;
import org.eclipse.cdt.ui.tests.text.contentassist.CompletionTest_MemberReference_Arrow_Prefix2;
import org.eclipse.cdt.ui.tests.text.contentassist.CompletionTest_MemberReference_Dot_NoPrefix;
import org.eclipse.cdt.ui.tests.text.contentassist.CompletionTest_MemberReference_Dot_Prefix;
import org.eclipse.cdt.ui.tests.text.contentassist.CompletionTest_NamespaceRef_NoPrefix;
import org.eclipse.cdt.ui.tests.text.contentassist.CompletionTest_NamespaceRef_Prefix;
import org.eclipse.cdt.ui.tests.text.contentassist.CompletionTest_NewTypeReference_NoPrefix;
import org.eclipse.cdt.ui.tests.text.contentassist.CompletionTest_NewTypeReference_Prefix;
import org.eclipse.cdt.ui.tests.text.contentassist.CompletionTest_ScopedReference_NoPrefix;
import org.eclipse.cdt.ui.tests.text.contentassist.CompletionTest_ScopedReference_Prefix;
import org.eclipse.cdt.ui.tests.text.contentassist.CompletionTest_SingleName_Method_NoPrefix;
import org.eclipse.cdt.ui.tests.text.contentassist.CompletionTest_SingleName_Method_Prefix;
import org.eclipse.cdt.ui.tests.text.contentassist.CompletionTest_SingleName_NoPrefix;
import org.eclipse.cdt.ui.tests.text.contentassist.CompletionTest_SingleName_Prefix;
import org.eclipse.cdt.ui.tests.text.contentassist.CompletionTest_SingleName_Prefix2;
import org.eclipse.cdt.ui.tests.text.contentassist.CompletionTest_TypeDef_NoPrefix;
import org.eclipse.cdt.ui.tests.text.contentassist.CompletionTest_TypeRef_NoPrefix;
import org.eclipse.cdt.ui.tests.text.contentassist.CompletionTest_TypeRef_Prefix;
import org.eclipse.cdt.ui.tests.text.contentassist.CompletionTest_VariableType_NoPrefix;
import org.eclipse.cdt.ui.tests.text.contentassist.CompletionTest_VariableType_Prefix;
import org.eclipse.cdt.ui.tests.textmanipulation.TextBufferTest; import org.eclipse.cdt.ui.tests.textmanipulation.TextBufferTest;
@ -69,8 +102,8 @@ public class AutomatedSuite extends TestSuite {
addTest(CompletionTest_FunctionReference_Prefix.suite()); addTest(CompletionTest_FunctionReference_Prefix.suite());
// Failed Tests // Failed Tests
addTest(CompletionFailedTest_ScopedReference_NoPrefix_Bug50152.suite()); addTest(CompletionTest_ScopedReference_NoPrefix.suite());
addTest(CompletionTest_ScopedReference_Prefix_Bug50152.suite()); addTest(CompletionTest_ScopedReference_Prefix.suite());
addTest(CompletionTest_MacroRef_NoPrefix.suite()); addTest(CompletionTest_MacroRef_NoPrefix.suite());
addTest(CompletionTest_MacroRef_Prefix.suite()); addTest(CompletionTest_MacroRef_Prefix.suite());
addTest(CompletionTest_FunctionReference_NoPrefix.suite()); addTest(CompletionTest_FunctionReference_NoPrefix.suite());

View file

@ -8,12 +8,11 @@
* Contributors: * Contributors:
* IBM Rational Software - Initial API and implementation * IBM Rational Software - Initial API and implementation
***********************************************************************/ ***********************************************************************/
package org.eclipse.cdt.ui.tests.text.contentassist.failedtests; package org.eclipse.cdt.ui.tests.text.contentassist;
import junit.framework.Test; import junit.framework.Test;
import junit.framework.TestSuite; import junit.framework.TestSuite;
import org.eclipse.cdt.core.parser.ast.IASTCompletionNode.CompletionKind; import org.eclipse.cdt.core.parser.ast.IASTCompletionNode.CompletionKind;
import org.eclipse.cdt.ui.tests.text.contentassist.CompletionProposalsBaseTest;
/** /**
* @author hamer * @author hamer
@ -22,7 +21,7 @@ import org.eclipse.cdt.ui.tests.text.contentassist.CompletionProposalsBaseTest;
* Bug#50152: Wrong context sent after a "::" * Bug#50152: Wrong context sent after a "::"
* *
*/ */
public class CompletionFailedTest_ScopedReference_NoPrefix_Bug50152 extends CompletionProposalsBaseTest{ public class CompletionTest_ScopedReference_NoPrefix extends CompletionProposalsBaseTest{
private final String fileName = "CompletionTestStart30.cpp"; private final String fileName = "CompletionTestStart30.cpp";
private final String fileFullPath ="resources/contentassist/" + fileName; private final String fileFullPath ="resources/contentassist/" + fileName;
@ -33,16 +32,16 @@ public class CompletionFailedTest_ScopedReference_NoPrefix_Bug50152 extends Com
private final CompletionKind expectedKind = CompletionKind.SINGLE_NAME_REFERENCE; private final CompletionKind expectedKind = CompletionKind.SINGLE_NAME_REFERENCE;
private final String expectedPrefix = ""; private final String expectedPrefix = "";
private final String[] expectedResults = { private final String[] expectedResults = {
// "aNamespaceFunction() void" /* Hoda uncomment this to see the failure */ "aNamespaceFunction() void"
}; };
public CompletionFailedTest_ScopedReference_NoPrefix_Bug50152(String name) { public CompletionTest_ScopedReference_NoPrefix(String name) {
super(name); super(name);
} }
public static Test suite() { public static Test suite() {
TestSuite suite= new TestSuite(CompletionFailedTest_ScopedReference_NoPrefix_Bug50152.class.getName()); TestSuite suite= new TestSuite(CompletionTest_ScopedReference_NoPrefix.class.getName());
suite.addTest(new CompletionFailedTest_ScopedReference_NoPrefix_Bug50152("testCompletionProposals")); suite.addTest(new CompletionTest_ScopedReference_NoPrefix("testCompletionProposals"));
return suite; return suite;
} }

View file

@ -21,7 +21,7 @@ import org.eclipse.cdt.core.parser.ast.IASTCompletionNode.CompletionKind;
* Bug#50152: Wrong context sent after a "::" * Bug#50152: Wrong context sent after a "::"
* *
*/ */
public class CompletionTest_ScopedReference_Prefix_Bug50152 extends CompletionProposalsBaseTest{ public class CompletionTest_ScopedReference_Prefix extends CompletionProposalsBaseTest{
private final String fileName = "CompletionTestStart31.cpp"; private final String fileName = "CompletionTestStart31.cpp";
private final String fileFullPath ="resources/contentassist/" + fileName; private final String fileFullPath ="resources/contentassist/" + fileName;
@ -35,13 +35,13 @@ public class CompletionTest_ScopedReference_Prefix_Bug50152 extends CompletionP
"aNamespaceFunction() void" "aNamespaceFunction() void"
}; };
public CompletionTest_ScopedReference_Prefix_Bug50152(String name) { public CompletionTest_ScopedReference_Prefix(String name) {
super(name); super(name);
} }
public static Test suite() { public static Test suite() {
TestSuite suite= new TestSuite(CompletionTest_ScopedReference_Prefix_Bug50152.class.getName()); TestSuite suite= new TestSuite(CompletionTest_ScopedReference_Prefix.class.getName());
suite.addTest(new CompletionTest_ScopedReference_Prefix_Bug50152("testCompletionProposals")); suite.addTest(new CompletionTest_ScopedReference_Prefix("testCompletionProposals"));
return suite; return suite;
} }

View file

@ -1,3 +1,6 @@
2004-04-12 Hoda Amer
Fix for bug#57692 : [Content Assist] CompletionEngine::completionOnSingleNameReference() behaviour incorrect
2004-04-12 Alain Magloire 2004-04-12 Alain Magloire
This patch changes the default filter so an empty string does not show This patch changes the default filter so an empty string does not show
any matches. The reason for this is to speed up performance when a lot any matches. The reason for this is to speed up performance when a lot

View file

@ -83,21 +83,7 @@ public class CompletionEngine implements RelevanceConstants {
private ContentAssistElementRequestor elementRequestor = null; private ContentAssistElementRequestor elementRequestor = null;
private static final String exceptionKeyword = "..."; //$NON-NLS-1$ private static final String exceptionKeyword = "..."; //$NON-NLS-1$
/*
// scope relevance element counters
private int numFields = 0;
private int numVariables = 0;
private int numLocalVariables = 0;
private int numMethods = 0;
private int numFunctions = 0;
private int numClasses = 0;
private int numStructs = 0;
private int numUnions = 0;
private int numEnumerations = 0;
private int numEnumerators = 0;
private int numNamespaces = 0;
private int numTypedefs = 0;
*/
public CompletionEngine(ICompletionRequestor completionRequestor){ public CompletionEngine(ICompletionRequestor completionRequestor){
requestor = completionRequestor; requestor = completionRequestor;
elementRequestor = new ContentAssistElementRequestor(); elementRequestor = new ContentAssistElementRequestor();
@ -217,22 +203,20 @@ public class CompletionEngine implements RelevanceConstants {
} }
} }
private void addNodeToCompletions(IASTNode node, String prefix, int totalNumberOfResults){ private void addNodeToCompletions(IASTNode node, String prefix, int totalNumberOfResults, boolean addStaticMembersOnly){
if(node instanceof IASTField){ if(node instanceof IASTField){
// numFields++;
IASTField field = (IASTField)node; IASTField field = (IASTField)node;
if(addStaticMembersOnly && (!field.isStatic()))
return;
int relevance = computeRelevance(ICElement.C_FIELD, prefix, field.getName()); int relevance = computeRelevance(ICElement.C_FIELD, prefix, field.getName());
//relevance += totalNumberOfResults - numFields;
requestor.acceptField(field.getName(), requestor.acceptField(field.getName(),
ASTUtil.getType(field.getAbstractDeclaration()), ASTUtil.getType(field.getAbstractDeclaration()),
field.getVisiblity(), completionStart, completionLength, relevance); field.getVisiblity(), completionStart, completionLength, relevance);
} }
else if (node instanceof IASTParameterDeclaration){ else if (node instanceof IASTParameterDeclaration){
// numLocalVariables++;
IASTParameterDeclaration param = (IASTParameterDeclaration) node; IASTParameterDeclaration param = (IASTParameterDeclaration) node;
int relevance = computeRelevance(ICElement.C_VARIABLE_LOCAL, prefix, param.getName()); int relevance = computeRelevance(ICElement.C_VARIABLE_LOCAL, prefix, param.getName());
//relevance += totalNumberOfResults - numLocalVariables;
requestor.acceptLocalVariable(param.getName(), requestor.acceptLocalVariable(param.getName(),
ASTUtil.getType(param), ASTUtil.getType(param),
@ -243,17 +227,18 @@ public class CompletionEngine implements RelevanceConstants {
// get the container to check if it is a local variable // get the container to check if it is a local variable
IASTNode container = variable.getOwnerScope(); IASTNode container = variable.getOwnerScope();
if(container instanceof IASTCodeScope){ if(container instanceof IASTCodeScope){
// numLocalVariables++; // local variable
int relevance = computeRelevance(ICElement.C_VARIABLE_LOCAL, prefix, variable.getName()); int relevance = computeRelevance(ICElement.C_VARIABLE_LOCAL, prefix, variable.getName());
//relevance += totalNumberOfResults - numLocalVariables;
requestor.acceptLocalVariable(variable.getName(), requestor.acceptLocalVariable(variable.getName(),
ASTUtil.getType(variable.getAbstractDeclaration()), ASTUtil.getType(variable.getAbstractDeclaration()),
completionStart, completionLength, relevance); completionStart, completionLength, relevance);
}else { }else {
// numVariables++; // global variable
if(addStaticMembersOnly && (!variable.isStatic()))
return;
int relevance = computeRelevance(ICElement.C_VARIABLE, prefix, variable.getName()); int relevance = computeRelevance(ICElement.C_VARIABLE, prefix, variable.getName());
//relevance += totalNumberOfResults - numVariables;
requestor.acceptVariable(variable.getName(), requestor.acceptVariable(variable.getName(),
ASTUtil.getType(variable.getAbstractDeclaration()), ASTUtil.getType(variable.getAbstractDeclaration()),
@ -261,10 +246,11 @@ public class CompletionEngine implements RelevanceConstants {
} }
} }
else if(node instanceof IASTMethod) { else if(node instanceof IASTMethod) {
// numMethods++;
IASTMethod method = (IASTMethod)node; IASTMethod method = (IASTMethod)node;
if(addStaticMembersOnly && (!method.isStatic()))
return;
int relevance = computeRelevance(ICElement.C_METHOD, prefix, method.getName()); int relevance = computeRelevance(ICElement.C_METHOD, prefix, method.getName());
//relevance += totalNumberOfResults - numMethods;
String parameterString = ASTUtil.getParametersString(ASTUtil.getFunctionParameterTypes(method)); String parameterString = ASTUtil.getParametersString(ASTUtil.getFunctionParameterTypes(method));
requestor.acceptMethod(method.getName(), requestor.acceptMethod(method.getName(),
@ -273,10 +259,11 @@ public class CompletionEngine implements RelevanceConstants {
method.getVisiblity(), completionStart, completionLength, relevance); method.getVisiblity(), completionStart, completionLength, relevance);
} }
else if(node instanceof IASTFunction){ else if(node instanceof IASTFunction){
// numFunctions++;
IASTFunction function = (IASTFunction)node; IASTFunction function = (IASTFunction)node;
if(addStaticMembersOnly && (!function.isStatic()))
return;
int relevance = computeRelevance(ICElement.C_FUNCTION, prefix, function.getName()); int relevance = computeRelevance(ICElement.C_FUNCTION, prefix, function.getName());
//relevance += totalNumberOfResults - numFunctions;
String parameterString = ASTUtil.getParametersString(ASTUtil.getFunctionParameterTypes(function)); String parameterString = ASTUtil.getParametersString(ASTUtil.getFunctionParameterTypes(function));
requestor.acceptFunction(function.getName(), requestor.acceptFunction(function.getName(),
@ -288,59 +275,45 @@ public class CompletionEngine implements RelevanceConstants {
IASTClassSpecifier classSpecifier = (IASTClassSpecifier)node; IASTClassSpecifier classSpecifier = (IASTClassSpecifier)node;
ASTClassKind classkind = classSpecifier.getClassKind(); ASTClassKind classkind = classSpecifier.getClassKind();
if(classkind == ASTClassKind.CLASS){ if(classkind == ASTClassKind.CLASS){
// numClasses++;
int relevance = computeRelevance(ICElement.C_CLASS, prefix, classSpecifier.getName()); int relevance = computeRelevance(ICElement.C_CLASS, prefix, classSpecifier.getName());
//relevance += totalNumberOfResults - numClasses;
requestor.acceptClass(classSpecifier.getName(), requestor.acceptClass(classSpecifier.getName(),
completionStart, completionLength, relevance); completionStart, completionLength, relevance);
} }
if(classkind == ASTClassKind.STRUCT){ if(classkind == ASTClassKind.STRUCT){
// numStructs++;
int relevance = computeRelevance(ICElement.C_STRUCT, prefix, classSpecifier.getName()); int relevance = computeRelevance(ICElement.C_STRUCT, prefix, classSpecifier.getName());
//relevance += totalNumberOfResults - numStructs;
requestor.acceptStruct(classSpecifier.getName(), requestor.acceptStruct(classSpecifier.getName(),
completionStart, completionLength, relevance); completionStart, completionLength, relevance);
} }
if(classkind == ASTClassKind.UNION){ if(classkind == ASTClassKind.UNION){
// numUnions++;
int relevance = computeRelevance(ICElement.C_UNION, prefix, classSpecifier.getName()); int relevance = computeRelevance(ICElement.C_UNION, prefix, classSpecifier.getName());
//relevance += totalNumberOfResults - numUnions;
requestor.acceptUnion(classSpecifier.getName(), requestor.acceptUnion(classSpecifier.getName(),
completionStart, completionLength, relevance); completionStart, completionLength, relevance);
} }
} }
else if(node instanceof IASTNamespaceDefinition){ else if(node instanceof IASTNamespaceDefinition){
// numNamespaces++;
IASTNamespaceDefinition namespace = (IASTNamespaceDefinition)node; IASTNamespaceDefinition namespace = (IASTNamespaceDefinition)node;
int relevance = computeRelevance(ICElement.C_NAMESPACE, prefix, namespace.getName()); int relevance = computeRelevance(ICElement.C_NAMESPACE, prefix, namespace.getName());
//relevance += totalNumberOfResults - numNamespaces;
requestor.acceptNamespace(namespace.getName(), completionStart, completionLength, relevance); requestor.acceptNamespace(namespace.getName(), completionStart, completionLength, relevance);
} }
else if(node instanceof IASTEnumerationSpecifier){ else if(node instanceof IASTEnumerationSpecifier){
// numEnumerations++;
IASTEnumerationSpecifier enumeration = (IASTEnumerationSpecifier)node; IASTEnumerationSpecifier enumeration = (IASTEnumerationSpecifier)node;
int relevance = computeRelevance(ICElement.C_ENUMERATION, prefix, enumeration.getName()); int relevance = computeRelevance(ICElement.C_ENUMERATION, prefix, enumeration.getName());
//relevance += totalNumberOfResults - numEnumerations;
requestor.acceptEnumeration(enumeration.getName(), completionStart, completionLength, relevance); requestor.acceptEnumeration(enumeration.getName(), completionStart, completionLength, relevance);
} }
else if(node instanceof IASTEnumerator){ else if(node instanceof IASTEnumerator){
// numEnumerators++;
IASTEnumerator enumerator = (IASTEnumerator)node; IASTEnumerator enumerator = (IASTEnumerator)node;
int relevance = computeRelevance(ICElement.C_ENUMERATOR, prefix, enumerator.getName()); int relevance = computeRelevance(ICElement.C_ENUMERATOR, prefix, enumerator.getName());
//relevance += totalNumberOfResults - numEnumerators;
requestor.acceptEnumerator(enumerator.getName(), completionStart, completionLength, relevance); requestor.acceptEnumerator(enumerator.getName(), completionStart, completionLength, relevance);
} }
else if(node instanceof IASTTypedefDeclaration){ else if(node instanceof IASTTypedefDeclaration){
// numTypedefs++;
IASTTypedefDeclaration typedef = (IASTTypedefDeclaration)node; IASTTypedefDeclaration typedef = (IASTTypedefDeclaration)node;
int relevance = computeRelevance(ICElement.C_TYPEDEF, prefix, typedef.getName()); int relevance = computeRelevance(ICElement.C_TYPEDEF, prefix, typedef.getName());
//relevance += totalNumberOfResults - numTypedefs;
requestor.acceptTypedef(typedef.getName(), completionStart, completionLength, relevance); requestor.acceptTypedef(typedef.getName(), completionStart, completionLength, relevance);
} }
@ -375,24 +348,12 @@ public class CompletionEngine implements RelevanceConstants {
} }
log("No of Macros = " + numOfMacros); //$NON-NLS-1$ log("No of Macros = " + numOfMacros); //$NON-NLS-1$
} }
/*
private void resetElementNumbers(){
numFields = 0;
numVariables = 0;
numLocalVariables = 0;
numMethods = 0;
numFunctions = 0;
numClasses = 0;
numStructs = 0;
numUnions = 0;
numEnumerations = 0;
numEnumerators = 0;
numNamespaces = 0;
numTypedefs = 0;
}
*/
private void addToCompletions (ILookupResult result){ private void addToCompletions (ILookupResult result){
addToCompletions(result, false);
}
private void addToCompletions (ILookupResult result, boolean addStaticMembersOnly){
if(result == null){ if(result == null){
log("Lookup Results = null ................. !!! No Lookup Results found !!! "); //$NON-NLS-1$ log("Lookup Results = null ................. !!! No Lookup Results found !!! "); //$NON-NLS-1$
return; return;
@ -402,10 +363,9 @@ public class CompletionEngine implements RelevanceConstants {
log("No of Lookup Results = " + numberOfElements); //$NON-NLS-1$ log("No of Lookup Results = " + numberOfElements); //$NON-NLS-1$
// resetElementNumbers();
while (nodes.hasNext()){ while (nodes.hasNext()){
IASTNode node = (IASTNode) nodes.next(); IASTNode node = (IASTNode) nodes.next();
addNodeToCompletions(node, result.getPrefix(), numberOfElements); addNodeToCompletions(node, result.getPrefix(), numberOfElements, addStaticMembersOnly);
} }
return ; return ;
} }
@ -468,22 +428,33 @@ public class CompletionEngine implements RelevanceConstants {
addToCompletions (result); addToCompletions (result);
} }
// private void completionOnScopedReference(IASTCompletionNode completionNode){ private void completionOnScopedReference(IASTCompletionNode completionNode){
// // 1. Get the search scope node // 1. Get the search scope node
// // the search node is the name before the qualification // the search node is the name before the qualification
// IASTScope searchNode = completionNode.getCompletionScope(); IASTScope searchNode = completionNode.getCompletionScope();
// // here we have to look for anything that could be referenced within this scope // here we have to look for anything that could be referenced within this scope
// // 1. lookup local variables, global variables, functions, methods, structures, enums, and namespaces // 1. lookup local variables, global variables, functions, methods, structures, enums, and namespaces
// IASTNode.LookupKind[] kinds = new IASTNode.LookupKind[5]; IASTNode.LookupKind[] kinds = new IASTNode.LookupKind[8];
// kinds[0] = IASTNode.LookupKind.VARIABLES; kinds[0] = IASTNode.LookupKind.VARIABLES;
// kinds[1] = IASTNode.LookupKind.STRUCTURES; kinds[1] = IASTNode.LookupKind.STRUCTURES;
// kinds[2] = IASTNode.LookupKind.ENUMERATIONS; kinds[2] = IASTNode.LookupKind.ENUMERATIONS;
// kinds[3] = IASTNode.LookupKind.NAMESPACES; kinds[3] = IASTNode.LookupKind.NAMESPACES;
// kinds[4] = IASTNode.LookupKind.TYPEDEFS; kinds[4] = IASTNode.LookupKind.TYPEDEFS;
// ILookupResult result = lookup(searchNode, completionNode.getCompletionPrefix(), kinds, completionNode.getCompletionContext()); kinds[5] = IASTNode.LookupKind.FIELDS;
// addToCompletions(result); kinds[6] = IASTNode.LookupKind.METHODS;
// // lookup static members (field / methods) in type kinds[7] = IASTNode.LookupKind.FUNCTIONS;
// }
ILookupResult result = lookup(searchNode, completionNode.getCompletionPrefix(), kinds, completionNode.getCompletionContext());
// lookup static members (field / methods) in types
if( (completionNode.getCompletionContext() != null)
&& (completionNode.getCompletionContext() instanceof IASTClassSpecifier)
&& (((IASTClassSpecifier) completionNode.getCompletionContext()).getClassKind() != ASTClassKind.ENUM)){
addToCompletions(result, true);
} else {
addToCompletions(result);
}
}
private void completionOnTypeReference(IASTCompletionNode completionNode){ private void completionOnTypeReference(IASTCompletionNode completionNode){
// completing on a type // completing on a type
// 1. Get the search scope node // 1. Get the search scope node
@ -698,8 +669,12 @@ public class CompletionEngine implements RelevanceConstants {
completionOnTypeReference(completionNode); completionOnTypeReference(completionNode);
} }
else if(kind == CompletionKind.SINGLE_NAME_REFERENCE){ else if(kind == CompletionKind.SINGLE_NAME_REFERENCE){
// CompletionOnSingleNameReference if (completionNode.getCompletionContext() == null){
completionOnSingleNameReference(completionNode); // CompletionOnSingleNameReference
completionOnSingleNameReference(completionNode);
}else {
completionOnScopedReference(completionNode);
}
} }
else if(kind == CompletionKind.TYPE_REFERENCE){ else if(kind == CompletionKind.TYPE_REFERENCE){
// CompletionOnTypeReference // CompletionOnTypeReference

View file

@ -189,7 +189,7 @@ public class ResultCollector extends CompletionRequestorAdaptor {
CCompletionProposal proposal = createProposal(replaceString, displayString, infoString.toString(), CCompletionProposal proposal = createProposal(replaceString, displayString, infoString.toString(),
arguments, image, completionStart, completionLength, relevance); arguments, image, completionStart, completionLength, relevance);
boolean userMustCompleteParameters= (parameterString != null && parameterString.length() > 0); boolean userMustCompleteParameters= (arguments != null && arguments.length() > 0);
char[] triggers= userMustCompleteParameters ? METHOD_WITH_ARGUMENTS_TRIGGERS : METHOD_TRIGGERS; char[] triggers= userMustCompleteParameters ? METHOD_WITH_ARGUMENTS_TRIGGERS : METHOD_TRIGGERS;
proposal.setTriggerCharacters(triggers); proposal.setTriggerCharacters(triggers);
@ -332,7 +332,7 @@ public class ResultCollector extends CompletionRequestorAdaptor {
CCompletionProposal proposal = createProposal(replaceString, displayString, infoString.toString(), CCompletionProposal proposal = createProposal(replaceString, displayString, infoString.toString(),
arguments, image, completionStart, completionLength, relevance); arguments, image, completionStart, completionLength, relevance);
boolean userMustCompleteParameters= (parameterString != null && parameterString.length() > 0); boolean userMustCompleteParameters= (arguments != null && arguments.length() > 0);
char[] triggers= userMustCompleteParameters ? METHOD_WITH_ARGUMENTS_TRIGGERS : METHOD_TRIGGERS; char[] triggers= userMustCompleteParameters ? METHOD_WITH_ARGUMENTS_TRIGGERS : METHOD_TRIGGERS;
proposal.setTriggerCharacters(triggers); proposal.setTriggerCharacters(triggers);