mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-08-08 08:45:44 +02:00
Fix for PR 75728 [ParserSymbolTable] NPE in TypeInfoProvider.newTypeInfo.
Corrected mappings added to to TemplateSymbol._defnParameterMap.
This commit is contained in:
parent
1f751745a9
commit
d029959807
3 changed files with 34 additions and 4 deletions
|
@ -1,3 +1,15 @@
|
||||||
|
2004-10-06 Vladimir Hirsl
|
||||||
|
|
||||||
|
Fix for PR 75728 [ParserSymbolTable] NPE in TypeInfoProvider.newTypeInfo
|
||||||
|
Corrected mappings added to to TemplateSymbol._defnParameterMap
|
||||||
|
|
||||||
|
* parser/org/eclipse/cdt/internal/core/parser/ast/TemplateFactory.java
|
||||||
|
|
||||||
|
Another NPE fix (caused by the fact that UndefinedTemplateSymbols do not have
|
||||||
|
any associated extension objects).
|
||||||
|
|
||||||
|
* parser/org/eclipse/cdt/internal/core/parser/ast/complete/CompleteParseASTFactory.java
|
||||||
|
|
||||||
2004-09-30 Vladimir Hirsl
|
2004-09-30 Vladimir Hirsl
|
||||||
|
|
||||||
Fix for PR 60307 [Templates] Template parameter qualified types not supported
|
Fix for PR 60307 [Templates] Template parameter qualified types not supported
|
||||||
|
|
|
@ -345,7 +345,8 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if( startingScope.getASTExtension().getPrimaryDeclaration() instanceof IASTCodeScope )
|
if( startingScope.getASTExtension() != null &&
|
||||||
|
startingScope.getASTExtension().getPrimaryDeclaration() instanceof IASTCodeScope )
|
||||||
{
|
{
|
||||||
if( ((IASTCodeScope) startingScope.getASTExtension().getPrimaryDeclaration()).getContainingFunction() instanceof IASTMethod )
|
if( ((IASTCodeScope) startingScope.getASTExtension().getPrimaryDeclaration()).getContainingFunction() instanceof IASTMethod )
|
||||||
{
|
{
|
||||||
|
|
|
@ -278,9 +278,15 @@ public class TemplateFactory extends ExtensibleSymbol implements ITemplateFactor
|
||||||
int size = templates.size();
|
int size = templates.size();
|
||||||
for( int i = 0; i < size; i++ ){
|
for( int i = 0; i < size; i++ ){
|
||||||
ITemplateSymbol template = (ITemplateSymbol) templates.get(i);
|
ITemplateSymbol template = (ITemplateSymbol) templates.get(i);
|
||||||
ITemplateSymbol origTemplate = (ITemplateSymbol) ((ISymbol)symbols.get(i)).getContainingSymbol();
|
ISymbol origContainer = (ISymbol) symbols.get(i);
|
||||||
|
if ( origContainer instanceof IDeferredTemplateInstance )
|
||||||
|
origContainer = ((IDeferredTemplateInstance) origContainer).getTemplate().getTemplatedSymbol();
|
||||||
|
ITemplateSymbol origTemplate = (ITemplateSymbol)origContainer.getContainingSymbol();
|
||||||
|
ObjectMap containerDefnMap = null;
|
||||||
List tList = template.getParameterList();
|
List tList = template.getParameterList();
|
||||||
|
if( origTemplate.getDefinitionParameterMap().containsKey( origContainer ) ){
|
||||||
|
containerDefnMap = (ObjectMap) origTemplate.getDefinitionParameterMap().get( origContainer );
|
||||||
|
}
|
||||||
List oList = origTemplate.getParameterList();
|
List oList = origTemplate.getParameterList();
|
||||||
int tListSize = tList.size();
|
int tListSize = tList.size();
|
||||||
if( oList.size() < tListSize )
|
if( oList.size() < tListSize )
|
||||||
|
@ -289,6 +295,17 @@ public class TemplateFactory extends ExtensibleSymbol implements ITemplateFactor
|
||||||
for( int j = 0; j < tListSize; j++ ) {
|
for( int j = 0; j < tListSize; j++ ) {
|
||||||
ISymbol param = (ISymbol) tList.get(j);
|
ISymbol param = (ISymbol) tList.get(j);
|
||||||
ISymbol origParam = (ISymbol) oList.get(j);
|
ISymbol origParam = (ISymbol) oList.get(j);
|
||||||
|
if( containerDefnMap != null ) {
|
||||||
|
ISymbol keyParam, valParam;
|
||||||
|
for( int k = 0; k < containerDefnMap.size(); ++k ) {
|
||||||
|
keyParam = (ISymbol) containerDefnMap.keyAt( k );
|
||||||
|
valParam = (ISymbol) containerDefnMap.getAt( k );
|
||||||
|
if ( valParam.equals(origParam) ) {
|
||||||
|
origParam = keyParam;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
defnMap.put( param, origParam );
|
defnMap.put( param, origParam );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue