diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/GNUCSourceParser.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/GNUCSourceParser.java index ca4ac17afda..06330a65cea 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/GNUCSourceParser.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/GNUCSourceParser.java @@ -1946,6 +1946,7 @@ public class GNUCSourceParser extends AbstractGNUSourceCodeParser { parameterDeclarationLoop: for (;;) { switch (LT(1)) { case IToken.tRPAREN: + case IToken.tEOC: last = consume(); finalOffset = last.getEndOffset(); break parameterDeclarationLoop; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPSemantics.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPSemantics.java index b61c6e96445..3b9360c0a7a 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPSemantics.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPSemantics.java @@ -1425,13 +1425,15 @@ public class CPPSemantics { else if( node instanceof IASTParameterDeclaration ){ IASTParameterDeclaration parameterDeclaration = (IASTParameterDeclaration) node; IASTDeclarator dtor = parameterDeclaration.getDeclarator(); - while( dtor.getNestedDeclarator() != null ) - dtor = dtor.getNestedDeclarator(); - IASTName declName = dtor.getName(); - scope.addName( declName ); - if( !data.typesOnly && nameMatches( data, declName ) ) { - return declName; - } + if (dtor != null) { // could be null when content assist in the declSpec + while( dtor.getNestedDeclarator() != null ) + dtor = dtor.getNestedDeclarator(); + IASTName declName = dtor.getName(); + scope.addName( declName ); + if( !data.typesOnly && nameMatches( data, declName ) ) { + return declName; + } + } } else if( node instanceof ICPPASTTemplateParameter ){ IASTName name = CPPTemplates.getTemplateParameterName( (ICPPASTTemplateParameter) node ); scope.addName( name ); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GNUCPPSourceParser.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GNUCPPSourceParser.java index 7f9bfc91801..d7aa3dafb1c 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GNUCPPSourceParser.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GNUCPPSourceParser.java @@ -3114,8 +3114,13 @@ public class GNUCPPSourceParser extends AbstractGNUSourceCodeParser { throwBacktrack( e.currToken ); } IASTDeclarator declarator = null; - if (LT(1) != IToken.tSEMI) + switch (LT(1)) { + case IToken.tSEMI: + case IToken.tEOC: + break; + default: declarator = initDeclarator(SimpleDeclarationStrategy.TRY_FUNCTION); + } if (current == LA(1)) { throwBacktrack(current.getOffset(), figureEndOffset(declSpec,