Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Niefer2004-03-26 15:50:31 +0000
committerAndrew Niefer2004-03-26 15:50:31 +0000
commitbb598c9a999061e2183615092d89dcd1803c9e52 (patch)
tree8d2fa6e27bebe3287ed507963cf59faeef581ee9 /core/org.eclipse.cdt.core
parent6475a7ac01032574a959a73e2b8f9c20b3978e1a (diff)
downloadorg.eclipse.cdt-bb598c9a999061e2183615092d89dcd1803c9e52.tar.gz
org.eclipse.cdt-bb598c9a999061e2183615092d89dcd1803c9e52.tar.xz
org.eclipse.cdt-bb598c9a999061e2183615092d89dcd1803c9e52.zip
report references for symbols used in template-ids
Diffstat (limited to 'core/org.eclipse.cdt.core')
-rw-r--r--core/org.eclipse.cdt.core/parser/ChangeLog-parser3
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/CompleteParseASTFactory.java27
2 files changed, 28 insertions, 2 deletions
diff --git a/core/org.eclipse.cdt.core/parser/ChangeLog-parser b/core/org.eclipse.cdt.core/parser/ChangeLog-parser
index 82281758a28..0e54c2d9a52 100644
--- a/core/org.eclipse.cdt.core/parser/ChangeLog-parser
+++ b/core/org.eclipse.cdt.core/parser/ChangeLog-parser
@@ -1,3 +1,6 @@
+2004-03-26 Andrew Niefer
+ -report references to symbols used in a template-id.
+
2004-03-25 Andrew Niefer
-modify IASTFactory.createField & .createVariable to take ITokenDuple's for the name
-modify ITokenDuple to support manipulating TokenDuples that have template arguments in them
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/CompleteParseASTFactory.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/CompleteParseASTFactory.java
index 53a38c696e4..27d9922f498 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/CompleteParseASTFactory.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/CompleteParseASTFactory.java
@@ -160,6 +160,23 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
references.add(reference);
}
+ protected void addTemplateIdReferences( List references, List templateArgs ){
+ if( templateArgs == null )
+ return;
+
+ Iterator i = templateArgs.iterator();
+ while( i.hasNext() ){
+ ASTExpression exp = (ASTExpression) i.next();
+ Iterator j = null;
+ if( exp.getExpressionKind() == IASTExpression.Kind.POSTFIX_TYPEID_TYPEID )
+ j = ((ASTTypeId) exp.getTypeId()).getReferences().iterator();
+ else
+ j = exp.getReferences().iterator();
+ while( j.hasNext() ){
+ addReference( references, (IASTReference) j.next() );
+ }
+ }
+ }
/*
* Test if the provided list is a valid parameter list
* Parameters are list of TypeInfos
@@ -356,6 +373,8 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
((ITemplateFactory)startingScope).pushSymbol( result );
}
addReference( references, createReference( result, image, offset ));
+ if( templateArgLists != null && templateArgLists[idx] != null )
+ addTemplateIdReferences( references, templateArgLists[idx] );
}
else
break;
@@ -1726,9 +1745,13 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
else
typeSymbol = ((IContainerSymbol)typeSymbol).lookup( image );
- if( typeSymbol != null )
+ if( typeSymbol != null )
+ {
addReference( references, createReference( typeSymbol, image, offset ));
- else
+ if( argLists != null && argLists[idx] != null )
+ addTemplateIdReferences( references, argLists[idx] );
+ }
+ else
handleProblem( IProblem.SEMANTIC_NAME_NOT_FOUND, image );
}
catch (ParserSymbolTableException e)

Back to the top