diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTConstructorMemberInitializer.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTConstructorMemberInitializer.java index 033694d66ef..a631c3d32ad 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTConstructorMemberInitializer.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTConstructorMemberInitializer.java @@ -20,5 +20,6 @@ public interface IASTConstructorMemberInitializer extends ISourceElementCallback { public IASTExpression getExpressionList(); public String getName(); + public char[] getNameCharArray(); } 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 3d3dc9eb8a7..14327fc9908 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 @@ -42,6 +42,7 @@ import org.eclipse.cdt.core.parser.ast.IASTTypeId; import org.eclipse.cdt.core.parser.ast.IASTCompletionNode.CompletionKind; import org.eclipse.cdt.core.parser.ast.IASTExpression.Kind; import org.eclipse.cdt.core.parser.extension.IParserExtension; +import org.eclipse.cdt.internal.core.parser.scanner2.CharArrayUtils; import org.eclipse.cdt.internal.core.parser.token.TokenFactory; import org.eclipse.cdt.internal.core.parser.util.TraceUtil; @@ -2300,7 +2301,7 @@ public class ExpressionParser implements IExpressionParser, IParserData { .getIdExpressionCharArray()); else if (firstExpression.getRHSExpression() != null && firstExpression.getRHSExpression() - .getIdExpression() != null) { + .getIdExpressionCharArray() != null) { setCurrentFunctionName(firstExpression .getRHSExpression().getIdExpressionCharArray()); context = astFactory @@ -2386,7 +2387,7 @@ public class ExpressionParser implements IExpressionParser, IParserData { endOffset = ( lastToken != null ) ? lastToken.getEndOffset() : 0; if (secondExpression != null && secondExpression.getExpressionKind() == Kind.ID_EXPRESSION - && secondExpression.getIdExpression().indexOf('~') != -1) + && CharArrayUtils.indexOf( '~', secondExpression.getIdExpressionCharArray() ) != -1) memberCompletionKind = Kind.POSTFIX_DOT_DESTRUCTOR; try { @@ -2424,7 +2425,7 @@ public class ExpressionParser implements IExpressionParser, IParserData { endOffset = ( lastToken != null ) ? lastToken.getEndOffset() : 0; if (secondExpression != null && secondExpression.getExpressionKind() == Kind.ID_EXPRESSION - && secondExpression.getIdExpression().indexOf('~') != -1) + && CharArrayUtils.indexOf( '~', secondExpression.getIdExpressionCharArray() ) != -1) arrowCompletionKind = Kind.POSTFIX_ARROW_DESTRUCTOR; try { firstExpression = astFactory.createExpression(scope, diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTConstructorMemberInitializer.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTConstructorMemberInitializer.java index ca1d46659ba..56d7da18e9d 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTConstructorMemberInitializer.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTConstructorMemberInitializer.java @@ -54,7 +54,7 @@ public class ASTConstructorMemberInitializer { return String.valueOf( name ); } - public char[] getNameArray(){ + public char[] getNameCharArray(){ return name; } /* (non-Javadoc) 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 68214299202..cc85f3cddc9 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 @@ -1197,7 +1197,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto while( i.hasNext() ) { ReferenceCache.ASTReference ref = (ReferenceCache.ASTReference) i.next(); - if( ref.getName().equals( duple.toString() ) && + if( CharArrayUtils.equals( ref.getNameCharArray(), duple.toCharArray() ) && ref.getOffset() == duple.getStartOffset() ) { cache.returnReference( ref ); @@ -1256,13 +1256,13 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto { ASTExpression astExpression = (ASTExpression) rhs; Iterator refs = astExpression.getReferences().iterator(); - String idExpression = astExpression.getIdExpression(); - if( !idExpression.equals( "")) //$NON-NLS-1$ + char[] idExpression = astExpression.getIdExpressionCharArray(); + if( idExpression.length > 0 ) //$NON-NLS-1$ { while( refs.hasNext() ) { IASTReference r = (IASTReference) refs.next(); - if( r.getName().equals( idExpression ) ) + if( CharArrayUtils.equals( r.getNameCharArray(), idExpression ) ) { refs.remove(); cache.returnReference(r); @@ -2633,13 +2633,13 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto while( initializers.hasNext()) { IASTConstructorMemberInitializer initializer = (IASTConstructorMemberInitializer)initializers.next(); - if( !initializer.getName().equals( EMPTY_STRING) && + if( initializer.getNameCharArray().length > 0 && initializer instanceof ASTConstructorMemberInitializer && ((ASTConstructorMemberInitializer)initializer).requiresNameResolution() ) { ASTConstructorMemberInitializer realInitializer = ((ASTConstructorMemberInitializer)initializer); IDerivableContainerSymbol container = (IDerivableContainerSymbol) symbol.getContainingSymbol(); - lookupQualifiedName(container, realInitializer.getNameArray(), ITypeInfo.t_any, null, realInitializer.getNameOffset(), realInitializer.getReferences(), false, LookupType.QUALIFIED); + lookupQualifiedName(container, realInitializer.getNameCharArray(), ITypeInfo.t_any, null, realInitializer.getNameOffset(), realInitializer.getReferences(), false, LookupType.QUALIFIED); // TODO try and resolve parameter references now in the expression list } } @@ -3608,9 +3608,9 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto if( reference instanceof ASTExpression ) { ASTExpression expression = (ASTExpression) reference; - final String dupleAsString = duple.toString(); + final char[] dupleAsCharArray = duple.toCharArray(); if( expression.getExpressionKind() == IASTExpression.Kind.ID_EXPRESSION && - expression.getLHSExpression().equals( dupleAsString )) + CharArrayUtils.equals( expression.getLHSExpression().getIdExpressionCharArray(), dupleAsCharArray )) { try { s = lookupQualifiedName( scopeToSymbol( scope ), duple, null, false ); @@ -3653,7 +3653,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto } else if( expression.getExpressionKind() == Kind.POSTFIX_FUNCTIONCALL && - expression.getLHSExpression().getIdExpression().equals( dupleAsString )) + CharArrayUtils.equals( expression.getLHSExpression().getIdExpressionCharArray(), dupleAsCharArray )) { try { ISymbol symbol = getExpressionSymbol( scope, expression.getExpressionKind(), expression.getLHSExpression(), expression.getRHSExpression(), null, null ); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTConstructorMemberInitializer.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTConstructorMemberInitializer.java index 3ef9e65463c..aac5c828e8f 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTConstructorMemberInitializer.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTConstructorMemberInitializer.java @@ -26,14 +26,14 @@ public class ASTConstructorMemberInitializer * @param string * @param expressionList */ - public ASTConstructorMemberInitializer(String name, IASTExpression expressionList) + public ASTConstructorMemberInitializer(char[] name, IASTExpression expressionList) { this.name = name; this.expressionList = expressionList; } private final IASTExpression expressionList; - private final String name; + private final char[] name; /* (non-Javadoc) * @see org.eclipse.cdt.core.parser.ast.IASTConstructorMemberInitializer#getExpressionList() */ @@ -46,6 +46,9 @@ public class ASTConstructorMemberInitializer */ public String getName() { + return String.valueOf(name); + } + public char[] getNameCharArray(){ return name; } /* (non-Javadoc)