1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

Fix for 206573: NPE in CModelBuilder2 with illegal typedef

This commit is contained in:
Anton Leherbauer 2007-10-17 10:24:59 +00:00
parent 6535040bd9
commit b8da02462e

View file

@ -551,9 +551,13 @@ public class CModelBuilder2 implements IContributedModelBuilder {
return createEnumeration(parent, (IASTEnumerationSpecifier)declSpecifier);
}
} else if (declSpecifier instanceof IASTNamedTypeSpecifier) {
return createTypedefOrFunctionOrVariable(parent, declSpecifier, declarator, isTemplate);
if (declarator != null) {
return createTypedefOrFunctionOrVariable(parent, declSpecifier, declarator, isTemplate);
}
} else if (declSpecifier instanceof IASTSimpleDeclSpecifier) {
return createTypedefOrFunctionOrVariable(parent, declSpecifier, declarator, isTemplate);
if (declarator != null) {
return createTypedefOrFunctionOrVariable(parent, declSpecifier, declarator, isTemplate);
}
} else {
assert false : "TODO: " + declSpecifier.getClass().getName(); //$NON-NLS-1$
}
@ -562,13 +566,12 @@ public class CModelBuilder2 implements IContributedModelBuilder {
private CElement createTypedefOrFunctionOrVariable(Parent parent, IASTDeclSpecifier declSpecifier,
IASTDeclarator declarator, boolean isTemplate) throws CModelException {
assert declarator != null;
if (declSpecifier.getStorageClass() == IASTDeclSpecifier.sc_typedef) {
return createTypeDef(parent, declSpecifier, declarator);
}
if (declarator != null) {
if (declarator instanceof IASTFunctionDeclarator && !hasNestedPointerOperators(declarator)) {
return createFunctionDeclaration(parent, declSpecifier, (IASTFunctionDeclarator)declarator, isTemplate);
}
if (declarator instanceof IASTFunctionDeclarator && !hasNestedPointerOperators(declarator)) {
return createFunctionDeclaration(parent, declSpecifier, (IASTFunctionDeclarator)declarator, isTemplate);
}
return createVariable(parent, declSpecifier, declarator, isTemplate);
}
@ -842,9 +845,6 @@ public class CModelBuilder2 implements IContributedModelBuilder {
}
private VariableDeclaration createVariable(Parent parent, IASTDeclSpecifier specifier, IASTDeclarator declarator, boolean isTemplate) throws CModelException {
if (declarator == null) {
return null;
}
IASTDeclarator nestedDeclarator= declarator;
while (nestedDeclarator.getNestedDeclarator() != null) {
nestedDeclarator= nestedDeclarator.getNestedDeclarator();