From c0ba9bebfcd622ebacbf771a90bafb3101d5d010 Mon Sep 17 00:00:00 2001 From: Andrew Niefer Date: Tue, 25 May 2004 18:42:30 +0000 Subject: [PATCH] fixing bug 62359 [Content Assist] failure on iostream in Linux - fix problem during errorhandling - fix operator function names - fix NPE during template argument deduction --- .../org/eclipse/cdt/internal/core/parser/Parser.java | 4 ++-- .../core/parser/ast/complete/CompleteParseASTFactory.java | 2 +- .../cdt/internal/core/parser/pst/TemplateEngine.java | 7 +++++-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Parser.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Parser.java index aeba542800b..27fc3075525 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Parser.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Parser.java @@ -197,8 +197,8 @@ public abstract class Parser extends ExpressionParser implements IParser protected void errorHandling() throws EndOfFileException { failParse(); - consume(); - int depth = 0; + int depth = ( LT(1) == IToken.tLBRACE ) ? 1 : 0; + consume(); while (!((LT(1) == IToken.tSEMI && depth == 0) || (LT(1) == IToken.tRBRACE && depth == 1))) { 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 de5141f68eb..6dbf9014e3e 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 @@ -2056,7 +2056,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto } } - IParameterizedSymbol symbol = pst.newParameterizedSymbol( name.getFirstToken().getImage(), TypeInfo.t_function ); + IParameterizedSymbol symbol = pst.newParameterizedSymbol( name.extractNameFromTemplateId(), TypeInfo.t_function ); setFunctionTypeInfoBits(isInline, isFriend, isStatic, symbol); symbol.setHasVariableArgs( hasVariableArguments ); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/pst/TemplateEngine.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/pst/TemplateEngine.java index 9f5148080ec..f15295b804f 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/pst/TemplateEngine.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/pst/TemplateEngine.java @@ -366,8 +366,11 @@ public final class TemplateEngine { return deferred.getArguments(); } ISymbol instantiated = symbol.getInstantiatedSymbol(); - ITemplateSymbol template = (ITemplateSymbol) instantiated.getContainingSymbol(); - return template.findArgumentsFor( (IContainerSymbol) symbol ); + if( instantiated != null ){ + ITemplateSymbol template = (ITemplateSymbol) instantiated.getContainingSymbol(); + return template.findArgumentsFor( (IContainerSymbol) symbol ); + } + return null; } /**