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:
parent
83dd838463
commit
9494a0f14e
7 changed files with 110 additions and 97 deletions
|
@ -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.
|
||||||
|
|
|
@ -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());
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Add table
Reference in a new issue