1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-23 08:55:25 +02:00

Endless loop in content-assist, bug 280934

This commit is contained in:
Markus Schorn 2009-06-23 12:20:04 +00:00
parent 896b8661e0
commit 5bbbd7720b
2 changed files with 13 additions and 6 deletions

View file

@ -161,5 +161,11 @@ public class BasicCompletionTest extends CompletionTestBase {
checkCompletion(code, true, expected);
checkCompletion(code, false, expected);
}
// template <t
public void testBug280934() throws Exception {
String code = getAboveComment();
String[] expected= {};
checkCompletion(code, true, expected);
}
}

View file

@ -1471,12 +1471,13 @@ public class GNUCPPSourceParser extends AbstractGNUSourceCodeParser {
List<ICPPASTTemplateParameter> returnValue = new ArrayList<ICPPASTTemplateParameter>(DEFAULT_PARM_LIST_SIZE);
for (;;) {
if (LT(1) == IToken.tGT)
final int lt1= LT(1);
if (lt1 == IToken.tGT || lt1 == IToken.tEOC)
return returnValue;
if (LT(1) == IToken.t_class || LT(1) == IToken.t_typename) {
if (lt1 == IToken.t_class || lt1 == IToken.t_typename) {
IToken startingToken = LA(1);
int lastOffset = 0;
int type = (LT(1) == IToken.t_class ? ICPPASTSimpleTypeTemplateParameter.st_class
int type = (lt1 == IToken.t_class ? ICPPASTSimpleTypeTemplateParameter.st_class
: ICPPASTSimpleTypeTemplateParameter.st_typename);
lastOffset = consume().getEndOffset();
IASTName identifierName = null;
@ -1500,7 +1501,7 @@ public class GNUCPPSourceParser extends AbstractGNUSourceCodeParser {
((ASTNode) parm).setOffsetAndLength(startingToken.getOffset(), lastOffset - startingToken.getOffset());
returnValue.add(parm);
} else if (LT(1) == IToken.t_template) {
} else if (lt1 == IToken.t_template) {
IToken firstToken = consume();
consume(IToken.tLT);
@ -1530,7 +1531,7 @@ public class GNUCPPSourceParser extends AbstractGNUSourceCodeParser {
}
returnValue.add(parm);
} else if (LT(1) == IToken.tCOMMA) {
} else if (lt1 == IToken.tCOMMA) {
consume();
continue;
} else {