From 5a685e501f28a304e44b2b55c37c130ca8a26961 Mon Sep 17 00:00:00 2001 From: John Camelon Date: Wed, 2 Jun 2004 18:17:55 +0000 Subject: [PATCH] Fixed concurrent parse issue w/TypeId singleton. --- .../cdt/internal/core/parser/ExpressionParser.java | 11 ++++++++++- .../org/eclipse/cdt/internal/core/parser/TypeId.java | 12 +++--------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ExpressionParser.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ExpressionParser.java index ff61f16a31a..d5cd7d1183e 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ExpressionParser.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ExpressionParser.java @@ -66,6 +66,7 @@ public class ExpressionParser implements IExpressionParser, IParserData { protected IToken lastToken; private boolean limitReached = false; private Stack templateIdScopes = null; + private TypeId typeIdInstance = new TypeId(); /** * @return Returns the astFactory. @@ -1696,7 +1697,7 @@ public class ExpressionParser implements IExpressionParser, IParserData { if( kind == null ) throw backtrack; - TypeId id = TypeId.getInstance(scope); + TypeId id = getTypeIdInstance(scope); IToken last = lastToken; //template parameters are consumed as part of name @@ -1731,6 +1732,14 @@ public class ExpressionParser implements IExpressionParser, IParserData { } } + /** + * @param scope + * @return + */ + private TypeId getTypeIdInstance(IASTScope scope) { + typeIdInstance.reset(scope); + return typeIdInstance; + } /** * @param expression * @throws BacktrackException diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/TypeId.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/TypeId.java index fd423615cf6..d5d02f63d13 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/TypeId.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/TypeId.java @@ -30,17 +30,11 @@ public class TypeId implements IDeclarator private List arrayModifiers; private List pointerOperators; private IASTScope scope; - private static TypeId instance = new TypeId(); - - public static TypeId getInstance(IASTScope scope) - { - instance.reset(scope); - return instance; - } + /** * @param scope2 */ - private void reset(IASTScope s) { + void reset(IASTScope s) { this.scope = s; arrayModifiers = Collections.EMPTY_LIST; pointerOperators = Collections.EMPTY_LIST; @@ -49,7 +43,7 @@ public class TypeId implements IDeclarator /** * */ - private TypeId() + TypeId() { reset( null ); }