1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-06-07 09:46:02 +02:00

[99426] Fixed completion of declSpecs in function parameters.

This commit is contained in:
Doug Schaefer 2005-06-21 15:03:25 +00:00
parent e1abf3b487
commit 58615beb77
3 changed files with 16 additions and 8 deletions

View file

@ -1946,6 +1946,7 @@ public class GNUCSourceParser extends AbstractGNUSourceCodeParser {
parameterDeclarationLoop: for (;;) { parameterDeclarationLoop: for (;;) {
switch (LT(1)) { switch (LT(1)) {
case IToken.tRPAREN: case IToken.tRPAREN:
case IToken.tEOC:
last = consume(); last = consume();
finalOffset = last.getEndOffset(); finalOffset = last.getEndOffset();
break parameterDeclarationLoop; break parameterDeclarationLoop;

View file

@ -1425,6 +1425,7 @@ public class CPPSemantics {
else if( node instanceof IASTParameterDeclaration ){ else if( node instanceof IASTParameterDeclaration ){
IASTParameterDeclaration parameterDeclaration = (IASTParameterDeclaration) node; IASTParameterDeclaration parameterDeclaration = (IASTParameterDeclaration) node;
IASTDeclarator dtor = parameterDeclaration.getDeclarator(); IASTDeclarator dtor = parameterDeclaration.getDeclarator();
if (dtor != null) { // could be null when content assist in the declSpec
while( dtor.getNestedDeclarator() != null ) while( dtor.getNestedDeclarator() != null )
dtor = dtor.getNestedDeclarator(); dtor = dtor.getNestedDeclarator();
IASTName declName = dtor.getName(); IASTName declName = dtor.getName();
@ -1432,6 +1433,7 @@ public class CPPSemantics {
if( !data.typesOnly && nameMatches( data, declName ) ) { if( !data.typesOnly && nameMatches( data, declName ) ) {
return declName; return declName;
} }
}
} else if( node instanceof ICPPASTTemplateParameter ){ } else if( node instanceof ICPPASTTemplateParameter ){
IASTName name = CPPTemplates.getTemplateParameterName( (ICPPASTTemplateParameter) node ); IASTName name = CPPTemplates.getTemplateParameterName( (ICPPASTTemplateParameter) node );
scope.addName( name ); scope.addName( name );

View file

@ -3114,8 +3114,13 @@ public class GNUCPPSourceParser extends AbstractGNUSourceCodeParser {
throwBacktrack( e.currToken ); throwBacktrack( e.currToken );
} }
IASTDeclarator declarator = null; IASTDeclarator declarator = null;
if (LT(1) != IToken.tSEMI) switch (LT(1)) {
case IToken.tSEMI:
case IToken.tEOC:
break;
default:
declarator = initDeclarator(SimpleDeclarationStrategy.TRY_FUNCTION); declarator = initDeclarator(SimpleDeclarationStrategy.TRY_FUNCTION);
}
if (current == LA(1)) { if (current == LA(1)) {
throwBacktrack(current.getOffset(), figureEndOffset(declSpec, throwBacktrack(current.getOffset(), figureEndOffset(declSpec,