diff options
Diffstat (limited to 'core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/pst/TemplateSymbol.java')
-rw-r--r-- | core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/pst/TemplateSymbol.java | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/pst/TemplateSymbol.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/pst/TemplateSymbol.java index 1e5ebc367eb..62a4ab74cf1 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/pst/TemplateSymbol.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/pst/TemplateSymbol.java @@ -98,7 +98,8 @@ public class TemplateSymbol extends ParameterizedSymbol implements ITemplateSymb if( arg.isType( ITypeInfo.t_type ) ){ if( arg.getTypeSymbol() == null ) throw new ParserSymbolTableException( ParserSymbolTableException.r_BadTemplateArgument ); - else if( arg.getTypeSymbol().isType( ITypeInfo.t_templateParameter ) ) + else if( arg.getTypeSymbol().isType( ITypeInfo.t_templateParameter ) || + arg.getTypeSymbol() instanceof IDeferredTemplateInstance ) return deferredInstance( arguments ); } } else { @@ -115,6 +116,13 @@ public class TemplateSymbol extends ParameterizedSymbol implements ITemplateSymb IDeferredTemplateInstance deferred = (IDeferredTemplateInstance) arg.getTypeSymbol(); arg = TypeInfoProvider.newTypeInfo( arg ); arg.setTypeSymbol( deferred.instantiate( this, map ) ); +// // IDeferredTemplateInstance deferred = (IDeferredTemplateInstance) info.getTypeSymbol(); +// ITypeInfo newInfo = TypeInfoProvider.newTypeInfo( arg ); +// //newInfo.setTypeSymbol( deferred.instantiate( template, argMap ) ); +// template.registerDeferredInstatiation( newInfo, deferred, ITemplateSymbol.DeferredKind.TYPE_SYMBOL, map ); +// newInfo.setTypeSymbol( deferred ); +// // process any accumulated deferred instances, we may need them +// processDeferredInstantiations(); } } else { throw new ParserSymbolTableException( ParserSymbolTableException.r_BadTemplateArgument ); @@ -465,6 +473,7 @@ public class TemplateSymbol extends ParameterizedSymbol implements ITemplateSymb throw new ParserSymbolTableException( ParserSymbolTableException.r_RecursiveTemplate ); } } + _deferredInstantiations.clear(); _processingDeferred = false; } |