mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-23 17:05:26 +02:00
Correct determination of default template arguments, bug 281781.
This commit is contained in:
parent
aa1e4bd52c
commit
be997b5279
4 changed files with 28 additions and 22 deletions
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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<ifls.length-1) {
|
||||
updateFileCount(0, 0, 1); // update header count
|
||||
|
|
Loading…
Add table
Reference in a new issue