mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-08-08 16:55:38 +02:00
Endless loop in content-assist, bug 280934
This commit is contained in:
parent
896b8661e0
commit
5bbbd7720b
2 changed files with 13 additions and 6 deletions
|
@ -162,4 +162,10 @@ public class BasicCompletionTest extends CompletionTestBase {
|
||||||
checkCompletion(code, false, expected);
|
checkCompletion(code, false, expected);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// template <t
|
||||||
|
public void testBug280934() throws Exception {
|
||||||
|
String code = getAboveComment();
|
||||||
|
String[] expected= {};
|
||||||
|
checkCompletion(code, true, expected);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1471,12 +1471,13 @@ public class GNUCPPSourceParser extends AbstractGNUSourceCodeParser {
|
||||||
List<ICPPASTTemplateParameter> returnValue = new ArrayList<ICPPASTTemplateParameter>(DEFAULT_PARM_LIST_SIZE);
|
List<ICPPASTTemplateParameter> returnValue = new ArrayList<ICPPASTTemplateParameter>(DEFAULT_PARM_LIST_SIZE);
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
if (LT(1) == IToken.tGT)
|
final int lt1= LT(1);
|
||||||
|
if (lt1 == IToken.tGT || lt1 == IToken.tEOC)
|
||||||
return returnValue;
|
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);
|
IToken startingToken = LA(1);
|
||||||
int lastOffset = 0;
|
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);
|
: ICPPASTSimpleTypeTemplateParameter.st_typename);
|
||||||
lastOffset = consume().getEndOffset();
|
lastOffset = consume().getEndOffset();
|
||||||
IASTName identifierName = null;
|
IASTName identifierName = null;
|
||||||
|
@ -1500,7 +1501,7 @@ public class GNUCPPSourceParser extends AbstractGNUSourceCodeParser {
|
||||||
((ASTNode) parm).setOffsetAndLength(startingToken.getOffset(), lastOffset - startingToken.getOffset());
|
((ASTNode) parm).setOffsetAndLength(startingToken.getOffset(), lastOffset - startingToken.getOffset());
|
||||||
returnValue.add(parm);
|
returnValue.add(parm);
|
||||||
|
|
||||||
} else if (LT(1) == IToken.t_template) {
|
} else if (lt1 == IToken.t_template) {
|
||||||
IToken firstToken = consume();
|
IToken firstToken = consume();
|
||||||
consume(IToken.tLT);
|
consume(IToken.tLT);
|
||||||
|
|
||||||
|
@ -1530,7 +1531,7 @@ public class GNUCPPSourceParser extends AbstractGNUSourceCodeParser {
|
||||||
}
|
}
|
||||||
returnValue.add(parm);
|
returnValue.add(parm);
|
||||||
|
|
||||||
} else if (LT(1) == IToken.tCOMMA) {
|
} else if (lt1 == IToken.tCOMMA) {
|
||||||
consume();
|
consume();
|
||||||
continue;
|
continue;
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Add table
Reference in a new issue