From be997b52798e8750e186d6dd0bcc9a0b3f510461 Mon Sep 17 00:00:00 2001 From: Markus Schorn Date: Wed, 1 Jul 2009 16:53:45 +0000 Subject: [PATCH] Correct determination of default template arguments, bug 281781. --- .../parser/cpp/CPPTemplateNonTypeParameter.java | 16 +++++++++------- .../parser/cpp/CPPTemplateTemplateParameter.java | 16 +++++++++------- .../dom/parser/cpp/CPPTemplateTypeParameter.java | 16 +++++++++------- .../cdt/internal/core/pdom/PDOMWriter.java | 2 +- 4 files changed, 28 insertions(+), 22 deletions(-) diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateNonTypeParameter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateNonTypeParameter.java index 022bd59a645..ebc6e231ecf 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateNonTypeParameter.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateNonTypeParameter.java @@ -43,13 +43,15 @@ public class CPPTemplateNonTypeParameter extends CPPTemplateParameter implements return null; for (IASTName name : nds) { - IASTNode parent = name.getParent(); - assert parent instanceof IASTDeclarator; - if (parent instanceof IASTDeclarator) { - IASTDeclarator dtor = (IASTDeclarator) parent; - IASTInitializer initializer = dtor.getInitializer(); - if (initializer instanceof IASTInitializerExpression) - return ((IASTInitializerExpression) initializer).getExpression(); + if (name != null) { + IASTNode parent = name.getParent(); + assert parent instanceof IASTDeclarator; + if (parent instanceof IASTDeclarator) { + IASTDeclarator dtor = (IASTDeclarator) parent; + IASTInitializer initializer = dtor.getInitializer(); + if (initializer instanceof IASTInitializerExpression) + return ((IASTInitializerExpression) initializer).getExpression(); + } } } return null; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateTemplateParameter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateTemplateParameter.java index ac9bffabeff..2a62e3ca0a2 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateTemplateParameter.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateTemplateParameter.java @@ -95,13 +95,15 @@ public class CPPTemplateTemplateParameter extends CPPTemplateParameter implement if (nds == null || nds.length == 0) return null; for (IASTName nd : nds) { - IASTNode parent = nd.getParent(); - assert parent instanceof ICPPASTTemplatedTypeTemplateParameter; - if (parent instanceof ICPPASTTemplatedTypeTemplateParameter) { - ICPPASTTemplatedTypeTemplateParameter param = (ICPPASTTemplatedTypeTemplateParameter) parent; - IASTExpression value = param.getDefaultValue(); - if (value != null) - return CPPVisitor.createType(value); + if (nd != null) { + IASTNode parent = nd.getParent(); + assert parent instanceof ICPPASTTemplatedTypeTemplateParameter; + if (parent instanceof ICPPASTTemplatedTypeTemplateParameter) { + ICPPASTTemplatedTypeTemplateParameter param = (ICPPASTTemplatedTypeTemplateParameter) parent; + IASTExpression value = param.getDefaultValue(); + if (value != null) + return CPPVisitor.createType(value); + } } } return null; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateTypeParameter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateTypeParameter.java index 86352cab75d..98288c83a36 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateTypeParameter.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateTypeParameter.java @@ -50,13 +50,15 @@ public class CPPTemplateTypeParameter extends CPPTemplateParameter implements if (nds == null || nds.length == 0) return null; for (IASTName nd : nds) { - IASTNode parent = nd.getParent(); - assert parent instanceof ICPPASTSimpleTypeTemplateParameter; - if (parent instanceof ICPPASTSimpleTypeTemplateParameter) { - ICPPASTSimpleTypeTemplateParameter simple = (ICPPASTSimpleTypeTemplateParameter) parent; - IASTTypeId typeId = simple.getDefaultType(); - if (typeId != null) - return CPPVisitor.createType(typeId); + if (nd != null) { + IASTNode parent = nd.getParent(); + assert parent instanceof ICPPASTSimpleTypeTemplateParameter; + if (parent instanceof ICPPASTSimpleTypeTemplateParameter) { + ICPPASTSimpleTypeTemplateParameter simple = (ICPPASTSimpleTypeTemplateParameter) parent; + IASTTypeId typeId = simple.getDefaultType(); + if (typeId != null) + return CPPVisitor.createType(typeId); + } } } return null; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMWriter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMWriter.java index 5427e125dd6..f4cd9a0ff5a 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMWriter.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMWriter.java @@ -212,7 +212,7 @@ abstract public class PDOMWriter { th= e; } if (th != null) { - stati.add(createStatus(NLS.bind(Messages.PDOMWriter_errorWhileParsing, ifl.getURI().getPath(), th))); + stati.add(createStatus(NLS.bind(Messages.PDOMWriter_errorWhileParsing, ifl.getURI().getPath()), th)); } if (i