1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-01 06:05:24 +02:00

Added getFilename() to IToken, ITokenDuple & IASTOffsetableNamedElement.

This improves the accuracy of selection search w/the new scanner (and without).
This commit is contained in:
John Camelon 2004-07-22 18:38:26 +00:00
parent 49b74b0eea
commit 12268e9104
80 changed files with 1039 additions and 650 deletions

View file

@ -58,6 +58,7 @@ import org.eclipse.cdt.internal.core.parser.scanner2.ObjectMap;
*/
public class ParserSymbolTableTest extends TestCase {
private static final char[] EMPTY_CHAR_ARRAY = "".toCharArray();
public ParserSymbolTable table = null;
public TypeInfoProvider provider = null;
@ -2934,15 +2935,15 @@ public class ParserSymbolTableTest extends TestCase {
ISymbolASTExtension cuExtension = new StandardSymbolExtension( table.getCompilationUnit(), (ASTSymbol) compUnit );
table.getCompilationUnit().setASTExtension( cuExtension );
IASTClassSpecifier clsSpec = new ASTClassSpecifier( A, ASTClassKind.CLASS, ClassNameType.IDENTIFIER, ASTAccessVisibility.PUBLIC, 0, 0, 0, 0, 0, new ArrayList( ) );
IASTClassSpecifier clsSpec = new ASTClassSpecifier( A, ASTClassKind.CLASS, ClassNameType.IDENTIFIER, ASTAccessVisibility.PUBLIC, 0, 0, 0, 0, 0, new ArrayList( ), EMPTY_CHAR_ARRAY ); //$NON-NLS-1$
ISymbolASTExtension clsExtension = new StandardSymbolExtension( A, (ASTSymbol) clsSpec );
A.setASTExtension( clsExtension );
IASTField field = new ASTField(i, null, null, null, 0, 0, 0, 0, 0, new ArrayList(), false, null, ASTAccessVisibility.PUBLIC );
IASTField field = new ASTField(i, null, null, null, 0, 0, 0, 0, 0, new ArrayList(), false, null, ASTAccessVisibility.PUBLIC, EMPTY_CHAR_ARRAY );
ISymbolASTExtension extension = new StandardSymbolExtension( i, (ASTSymbol) field );
i.setASTExtension( extension );
field = new ASTField(i, null, null, null, 0, 0, 0, 0, 0, new ArrayList(), false, null, ASTAccessVisibility.PRIVATE );
field = new ASTField(i, null, null, null, 0, 0, 0, 0, 0, new ArrayList(), false, null, ASTAccessVisibility.PRIVATE, EMPTY_CHAR_ARRAY );
extension = new StandardSymbolExtension( j, (ASTSymbol) field );
j.setASTExtension( extension );

View file

@ -16,11 +16,12 @@ package org.eclipse.cdt.core.parser;
*/
public class BacktrackException extends Exception
{
private static final char [] EMPTY_CHARARRAY = "".toCharArray(); //$NON-NLS-1$
private IProblem problem;
private int startOffset;
private int endOffset;
private int lineNumber;
private char[] filename;
/**
* @param p
@ -37,6 +38,7 @@ public class BacktrackException extends Exception
problem = null;
startOffset = 0;
endOffset = 0;
filename = EMPTY_CHARARRAY;
}
/**
* @return Returns the problem.
@ -48,12 +50,14 @@ public class BacktrackException extends Exception
/**
* @param startingOffset
* @param endingOffset
* @param f TODO
*/
public void initialize(int startingOffset, int endingOffset, int line) {
public void initialize(int startingOffset, int endingOffset, int line, char[] f) {
reset();
startOffset = startingOffset;
endOffset = endingOffset;
lineNumber = line;
this.filename = f;
}
/**
* @return Returns the offset.
@ -74,4 +78,11 @@ public class BacktrackException extends Exception
public int getLineNumber() {
return lineNumber;
}
/**
* @return
*/
public char[] getFilename() {
return filename;
}
}

View file

@ -19,32 +19,35 @@ import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.charset.Charset;
import org.eclipse.cdt.internal.core.parser.scanner2.CharArrayUtils;
/**
* @author jcamelon
*/
public class CodeReader {
private static final String UTF_8 = "UTF-8"; //$NON-NLS-1$
private static final String NOFILE = "<text>"; //$NON-NLS-1$
private static final String NF = "<text>"; //$NON-NLS-1$
private static final char [] NOFILE = NF.toCharArray(); //$NON-NLS-1$
public final char[] buffer;
public final String filename;
public final char[] filename;
// If you already have preloaded the buffer, e.g. working copy
public CodeReader(String filename, char[] buffer) {
this.filename = filename;
this.filename = filename.toCharArray();
this.buffer = buffer;
}
// If you are just scanning a string
public CodeReader(char[] buffer) {
this(NOFILE, buffer);
this(NF, buffer);
}
// If you are loading up a file normally
public CodeReader(String filename) throws IOException
{
this.filename = filename;
this.filename = filename.toCharArray();
FileInputStream stream = new FileInputStream(filename);
try {
@ -56,7 +59,7 @@ public class CodeReader {
// If you have a handle on a stream to the file, e.g. IFile.getContents()
public CodeReader(String filename, InputStream stream) throws IOException {
this.filename = filename;
this.filename = filename.toCharArray();
FileInputStream fstream =
(stream instanceof FileInputStream)
@ -107,7 +110,7 @@ public class CodeReader {
}
public boolean isFile() {
return filename != NOFILE;
return !CharArrayUtils.equals( filename, NOFILE );
}
}

View file

@ -1,22 +0,0 @@
/*******************************************************************************
* Copyright (c) 2003, 2004 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* IBM Corp. - Rational Software - initial implementation
*******************************************************************************/
package org.eclipse.cdt.core.parser;
/**
* @author jcamelon
*/
public interface IFilenameProvider {
public char [] getCurrentFilename();
public int getCurrentFileIndex();
public String getFilenameForIndex( int index );
}

View file

@ -1,22 +0,0 @@
/**********************************************************************
* Copyright (c) 2002,2003 Rational Software Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v0.5
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v05.html
*
* Contributors:
* IBM Rational Software - Initial API and implementation
***********************************************************************/
package org.eclipse.cdt.core.parser;
/**
* @author jcamelon
*
*/
public interface IPreprocessor extends IScanner {
public void process();
}

View file

@ -19,7 +19,7 @@ import org.eclipse.cdt.internal.core.parser.scanner.IScannerContext;
* @author jcamelon
*
*/
public interface IScanner extends IFilenameProvider {
public interface IScanner {
public static final String __CPLUSPLUS = "__cplusplus"; //$NON-NLS-1$
public static final String __STDC_VERSION__ = "__STDC_VERSION__"; //$NON-NLS-1$

View file

@ -21,6 +21,7 @@ public interface IToken {
public int getType();
public String getImage();
public char [] getCharImage();
public char [] getFilename();
public int getOffset();
public int getLength();
public int getEndOffset();

View file

@ -38,6 +38,9 @@ public interface ITokenDuple {
public abstract Iterator iterator();
public abstract String toString();
public char [] toCharArray();
public char [] getFilename();
public abstract boolean isIdentifier();
public abstract int length();

View file

@ -44,14 +44,14 @@ public class ParserFactory {
private static IParserExtensionFactory extensionFactory = new ParserExtensionFactory( ExtensionDialect.GCC );
public static IASTFactory createASTFactory( IFilenameProvider provider, ParserMode mode, ParserLanguage language )
public static IASTFactory createASTFactory( ParserMode mode, ParserLanguage language )
{
if( mode == ParserMode.QUICK_PARSE )
return new QuickParseASTFactory(extensionFactory.createASTExtension( mode ));
else if( mode == ParserMode.EXPRESSION_PARSE )
return new ExpressionParseASTFactory( extensionFactory.createASTExtension( mode ));
else
return new CompleteParseASTFactory( provider, language, mode, extensionFactory.createASTExtension( mode ));
return new CompleteParseASTFactory( language, mode, extensionFactory.createASTExtension( mode ));
}

View file

@ -28,7 +28,7 @@ public interface IASTFactory
String name,
int startingOffset,
int startingLine,
int nameOffset, int nameEndOffset, int nameLine, int endingOffset, int endingLine, IMacroDescriptor info);
int nameOffset, int nameEndOffset, int nameLine, int endingOffset, int endingLine, IMacroDescriptor info, char[] fn);
public IASTInclusion createInclusion(
String name,
@ -36,7 +36,7 @@ public interface IASTFactory
boolean local,
int startingOffset,
int startingLine,
int nameOffset, int nameEndOffset, int nameLine, int endingOffset, int endingLine) ;
int nameOffset, int nameEndOffset, int nameLine, int endingOffset, int endingLine, char[] fn) ;
public IASTUsingDirective createUsingDirective(
IASTScope scope,
@ -52,13 +52,13 @@ public interface IASTFactory
IASTScope scope,
String assembly,
int startingOffset,
int startingLine, int endingOffset, int endingLine);
int startingLine, int endingOffset, int endingLine, char[] fn);
public IASTNamespaceDefinition createNamespaceDefinition(
IASTScope scope,
String identifier,
int startingOffset,
int startingLine, int nameOffset, int nameEndOffset, int nameLineNumber) throws ASTSemanticException;
int startingLine, int nameOffset, int nameEndOffset, int nameLineNumber, char[] fn) throws ASTSemanticException;
public IASTNamespaceAlias createNamespaceAlias(
IASTScope scope,
@ -72,7 +72,7 @@ public interface IASTFactory
public IASTLinkageSpecification createLinkageSpecification(
IASTScope scope,
String spec, int startingOffset, int startingLine) ;
String spec, int startingOffset, int startingLine, char[] fn) ;
public IASTClassSpecifier createClassSpecifier(
IASTScope scope,
@ -81,7 +81,7 @@ public interface IASTFactory
ClassNameType type,
ASTAccessVisibility access,
int startingOffset,
int startingLine, int nameOffset, int nameEndOffset, int nameLine) throws ASTSemanticException;
int startingLine, int nameOffset, int nameEndOffset, int nameLine, char[] fn) throws ASTSemanticException;
/**
* @param astClassSpec
@ -104,13 +104,13 @@ public interface IASTFactory
public IASTEnumerationSpecifier createEnumerationSpecifier(
IASTScope scope,
String name,
int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine) throws ASTSemanticException;
int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, char[] fn) throws ASTSemanticException;
public IASTEnumerator addEnumerator(
IASTEnumerationSpecifier enumeration,
String string,
int startingOffset,
int startingLine, int nameOffset, int nameEndOffset, int nameLine, int endingOffset, int endLine, IASTExpression initialValue)throws ASTSemanticException;
int startingLine, int nameOffset, int nameEndOffset, int nameLine, int endingOffset, int endLine, IASTExpression initialValue, char[] fn)throws ASTSemanticException;
public IASTExpression createExpression(
IASTScope scope,
@ -201,25 +201,25 @@ public interface IASTFactory
boolean isVirtual, boolean isExplicit, boolean isPureVirtual, ASTAccessVisibility visibility, List constructorChain, boolean isDefinition, boolean hasFunctionTryBlock, boolean hasVariableArguments) throws ASTSemanticException;
public IASTVariable createVariable(IASTScope scope, ITokenDuple name, boolean isAuto, IASTInitializerClause initializerClause, IASTExpression bitfieldExpression,
IASTAbstractDeclaration abstractDeclaration, boolean isMutable, boolean isExtern, boolean isRegister, boolean isStatic, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, IASTExpression constructorExpression ) throws ASTSemanticException;
IASTAbstractDeclaration abstractDeclaration, boolean isMutable, boolean isExtern, boolean isRegister, boolean isStatic, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, IASTExpression constructorExpression, char[] fn ) throws ASTSemanticException;
public IASTField createField( IASTScope scope, ITokenDuple name, boolean isAuto, IASTInitializerClause initializerClause, IASTExpression bitfieldExpression, IASTAbstractDeclaration abstractDeclaration, boolean isMutable, boolean isExtern, boolean isRegister, boolean isStatic, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, IASTExpression constructorExpression, ASTAccessVisibility visibility) throws ASTSemanticException;
public IASTField createField( IASTScope scope, ITokenDuple name, boolean isAuto, IASTInitializerClause initializerClause, IASTExpression bitfieldExpression, IASTAbstractDeclaration abstractDeclaration, boolean isMutable, boolean isExtern, boolean isRegister, boolean isStatic, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, IASTExpression constructorExpression, ASTAccessVisibility visibility, char[] fn) throws ASTSemanticException;
public IASTDesignator createDesignator( IASTDesignator.DesignatorKind kind, IASTExpression constantExpression, IToken fieldIdentifier, Map extensionParms );
public IASTParameterDeclaration createParameterDeclaration( boolean isConst, boolean isVolatile, IASTTypeSpecifier getTypeSpecifier, List pointerOperators, List arrayModifiers, List parameters, ASTPointerOperator pointerOp, String parameterName, IASTInitializerClause initializerClause, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, int endingOffset, int endingLine ) ;
public IASTParameterDeclaration createParameterDeclaration( boolean isConst, boolean isVolatile, IASTTypeSpecifier getTypeSpecifier, List pointerOperators, List arrayModifiers, List parameters, ASTPointerOperator pointerOp, String parameterName, IASTInitializerClause initializerClause, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, int endingOffset, int endingLine, char[] fn ) ;
public IASTTemplateDeclaration createTemplateDeclaration( IASTScope scope, List templateParameters, boolean exported, int startingOffset, int startingLine ) throws ASTSemanticException;
public IASTTemplateDeclaration createTemplateDeclaration( IASTScope scope, List templateParameters, boolean exported, int startingOffset, int startingLine, char[] fn ) throws ASTSemanticException;
public IASTTemplateParameter createTemplateParameter( IASTTemplateParameter.ParamKind kind, String identifier, IASTTypeId defaultValue, IASTParameterDeclaration parameter, List parms, IASTCodeScope parameterScope, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, int endingOffset, int endingLine ) throws ASTSemanticException;
public IASTTemplateParameter createTemplateParameter( IASTTemplateParameter.ParamKind kind, String identifier, IASTTypeId defaultValue, IASTParameterDeclaration parameter, List parms, IASTCodeScope parameterScope, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, int endingOffset, int endingLine, char[] fn ) throws ASTSemanticException;
public IASTTemplateInstantiation createTemplateInstantiation(IASTScope scope, int startingOffset, int startingLine);
public IASTTemplateInstantiation createTemplateInstantiation(IASTScope scope, int startingOffset, int startingLine, char[] fn);
public IASTTemplateSpecialization createTemplateSpecialization(IASTScope scope, int startingOffset, int startingLine);
public IASTTemplateSpecialization createTemplateSpecialization(IASTScope scope, int startingOffset, int startingLine, char[] fn);
public IASTTypedefDeclaration createTypedef( IASTScope scope, String name, IASTAbstractDeclaration mapping, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine ) throws ASTSemanticException;
public IASTTypedefDeclaration createTypedef( IASTScope scope, String name, IASTAbstractDeclaration mapping, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, char[] fn ) throws ASTSemanticException;
public IASTAbstractTypeSpecifierDeclaration createTypeSpecDeclaration( IASTScope scope, IASTTypeSpecifier typeSpecifier, IASTTemplate template, int startingOffset, int startingLine, int endingOffset, int endingLine, boolean isFriend );
public IASTAbstractTypeSpecifierDeclaration createTypeSpecDeclaration( IASTScope scope, IASTTypeSpecifier typeSpecifier, IASTTemplate template, int startingOffset, int startingLine, int endingOffset, int endingLine, boolean isFriend, char[] fn );
public boolean queryIsTypeName( IASTScope scope, ITokenDuple nameInQuestion ) ;

View file

@ -24,5 +24,7 @@ public interface IASTOffsetableElement {
public int getStartingLine();
public int getEndingLine();
public char [] getFilename();
}

View file

@ -70,7 +70,7 @@ public class CompleteParser extends Parser {
* @see org.eclipse.cdt.internal.core.parser.ExpressionParser#setupASTFactory(org.eclipse.cdt.core.parser.IScanner, org.eclipse.cdt.core.parser.ParserLanguage)
*/
protected void setupASTFactory(IScanner scanner, ParserLanguage language) {
astFactory = ParserFactory.createASTFactory( this, ParserMode.COMPLETE_PARSE, language);
astFactory = ParserFactory.createASTFactory( ParserMode.COMPLETE_PARSE, language);
scanner.setASTFactory(astFactory);
astFactory.setLogger(log);
}

View file

@ -136,7 +136,7 @@ public class CompletionParser extends ContextualParser implements IParser {
if( LT(1) != IToken.t_catch )
{
IToken la = LA(1);
throwBacktrack(la.getOffset(), la.getEndOffset(), la.getLineNumber()); // error, need at least one of these
throwBacktrack(la.getOffset(), la.getEndOffset(), la.getLineNumber(), la.getFilename()); // error, need at least one of these
}
while (LT(1) == IToken.t_catch)
{
@ -167,7 +167,7 @@ public class CompletionParser extends ContextualParser implements IParser {
* @see org.eclipse.cdt.internal.core.parser.ExpressionParser#setupASTFactory(org.eclipse.cdt.core.parser.IScanner, org.eclipse.cdt.core.parser.ParserLanguage)
*/
protected void setupASTFactory(IScanner scanner, ParserLanguage language) {
astFactory = ParserFactory.createASTFactory( this, ParserMode.COMPLETION_PARSE, language);
astFactory = ParserFactory.createASTFactory( ParserMode.COMPLETION_PARSE, language);
scanner.setASTFactory(astFactory);
astFactory.setLogger(log);
}

View file

@ -109,16 +109,18 @@ public class DeclarationWrapper implements IDeclaratorOwner
/**
* @param scope
* @param filename TODO
*/
public DeclarationWrapper(
IASTScope scope,
int startingOffset,
int startingLine, IASTTemplate templateDeclaration)
int startingLine, IASTTemplate templateDeclaration, char[] filename)
{
this.scope = scope;
this.startingOffset = startingOffset;
this.startingLine = startingLine;
this.templateDeclaration = templateDeclaration;
this.fn = filename;
}
/**
* @param b
@ -333,6 +335,8 @@ public class DeclarationWrapper implements IDeclaratorOwner
}
private IASTFactory astFactory = null;
private int endLine;
private char[] fn;
/**
* @param requestor
*/
@ -431,19 +435,19 @@ public class DeclarationWrapper implements IDeclaratorOwner
return astFactory.createTypedef(scope, nameDuple.toString(), abs,
getStartingOffset(), getStartingLine(), d
.getNameStartOffset(), d.getNameEndOffset(), d
.getNameLine());
.getNameLine(), fn);
if( isWithinClass )
return astFactory.createField( scope, nameDuple, isAuto(), d.getInitializerClause(), d.getBitFieldExpression(), abs, isMutable(), isExtern(), isRegister(), isStatic(), getStartingOffset(), getStartingLine(), d.getNameStartOffset(), d.getNameEndOffset(), d.getNameLine(), d.getConstructorExpression(), ((IASTClassSpecifier)scope).getCurrentVisibilityMode() );
return astFactory.createField( scope, nameDuple, isAuto(), d.getInitializerClause(), d.getBitFieldExpression(), abs, isMutable(), isExtern(), isRegister(), isStatic(), getStartingOffset(), getStartingLine(), d.getNameStartOffset(), d.getNameEndOffset(), d.getNameLine(), d.getConstructorExpression(), ((IASTClassSpecifier)scope).getCurrentVisibilityMode(), fn );
return astFactory.createVariable( scope, nameDuple, isAuto(), d.getInitializerClause(), d.getBitFieldExpression(), abs, isMutable(), isExtern(), isRegister(), isStatic(), getStartingOffset(), getStartingLine(), d.getNameStartOffset(), d.getNameEndOffset(), d.getNameLine(), d.getConstructorExpression() );
return astFactory.createVariable( scope, nameDuple, isAuto(), d.getInitializerClause(), d.getBitFieldExpression(), abs, isMutable(), isExtern(), isRegister(), isStatic(), getStartingOffset(), getStartingLine(), d.getNameStartOffset(), d.getNameEndOffset(), d.getNameLine(), d.getConstructorExpression(), fn );
}
throw new BacktrackException();
}
/**
/**
* @param declarator
* @return
*/
@ -456,7 +460,7 @@ public class DeclarationWrapper implements IDeclaratorOwner
declarator.getArrayModifiers(), null, null),
startingOffset, getStartingLine(), declarator
.getNameStartOffset(), declarator.getNameEndOffset(),
declarator.getNameLine());
declarator.getNameLine(), fn);
}
/**
* @param declarator
@ -534,7 +538,7 @@ public class DeclarationWrapper implements IDeclaratorOwner
isStatic(),
startingOffset,
getStartingLine(),
declarator.getNameStartOffset(), declarator.getNameEndOffset(), declarator.getNameLine(), declarator.getConstructorExpression(), ((IASTClassSpecifier)scope).getCurrentVisibilityMode());
declarator.getNameStartOffset(), declarator.getNameEndOffset(), declarator.getNameLine(), declarator.getConstructorExpression(), ((IASTClassSpecifier)scope).getCurrentVisibilityMode(), fn);
}
private List createParameterList(List currentParameters) throws ASTSemanticException
@ -556,7 +560,7 @@ public class DeclarationWrapper implements IDeclaratorOwner
wrapper.getTypeSpecifier(),
declarator.getPointerOperators(),
declarator.getArrayModifiers(),
null, null, declarator.getName(), declarator.getInitializerClause(), wrapper.getStartingOffset(), getStartingLine(), declarator.getNameStartOffset(), declarator.getNameEndOffset(), declarator.getNameLine(), wrapper.getEndOffset(), getEndLine()));
null, null, declarator.getName(), declarator.getInitializerClause(), wrapper.getStartingOffset(), getStartingLine(), declarator.getNameStartOffset(), declarator.getNameEndOffset(), declarator.getNameLine(), wrapper.getEndOffset(), getEndLine(), wrapper.fn ));
}
}
return result;
@ -583,7 +587,7 @@ public class DeclarationWrapper implements IDeclaratorOwner
isRegister(),
isStatic(),
getStartingOffset(),
getStartingLine(), declarator.getNameStartOffset(), declarator.getNameEndOffset(), declarator.getNameLine(), declarator.getConstructorExpression());
getStartingLine(), declarator.getNameStartOffset(), declarator.getNameEndOffset(), declarator.getNameLine(), declarator.getConstructorExpression(), fn);
}

View file

@ -64,9 +64,9 @@ public class ExpressionParser implements IExpressionParser, IParserData {
throw backtrack;
}
protected final void throwBacktrack( int startingOffset, int endingOffset, int lineNumber ) throws BacktrackException {
protected final void throwBacktrack( int startingOffset, int endingOffset, int lineNumber, char[] f ) throws BacktrackException {
++backtrackCount;
backtrack.initialize( startingOffset, ( endingOffset == 0 ) ? startingOffset + 1 : endingOffset, lineNumber );
backtrack.initialize( startingOffset, ( endingOffset == 0 ) ? startingOffset + 1 : endingOffset, lineNumber, f );
throw backtrack;
}
@ -162,7 +162,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
if (LT(1) == type)
return consume();
IToken la = LA(1);
throwBacktrack(la.getOffset(), la.getEndOffset(), la.getLineNumber());
throwBacktrack(la.getOffset(), la.getEndOffset(), la.getLineNumber(), la.getFilename());
return null;
}
@ -210,7 +210,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
* @param language
*/
protected void setupASTFactory(IScanner scanner, ParserLanguage language) {
astFactory = ParserFactory.createASTFactory(this,
astFactory = ParserFactory.createASTFactory(
ParserMode.EXPRESSION_PARSE, language);
scanner.setASTFactory(astFactory);
astFactory.setLogger(log);
@ -270,7 +270,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
} while (!scopes.empty()
&& (top == IToken.tGT || top == IToken.tLT));
if (top != IToken.tLBRACKET)
throwBacktrack(startingOffset, last.getEndOffset(), last.getLineNumber());
throwBacktrack(startingOffset, last.getEndOffset(), last.getLineNumber(), last.getFilename());
break;
case IToken.tRPAREN :
@ -279,7 +279,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
} while (!scopes.empty()
&& (top == IToken.tGT || top == IToken.tLT));
if (top != IToken.tLPAREN)
throwBacktrack(startingOffset, last.getEndOffset(), last.getLineNumber());
throwBacktrack(startingOffset, last.getEndOffset(), last.getLineNumber(), last.getFilename());
break;
case IToken.tLT :
@ -299,6 +299,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
IToken start = LA(1);
int startingOffset = start.getOffset();
int startingLineNumber = start.getOffset();
char [] fn = start.getFilename();
start = null;
IASTExpression expression = null;
List list = new LinkedList();
@ -340,7 +341,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
KeywordSetKey.EXPRESSION);
if (expression.getExpressionKind() == IASTExpression.Kind.PRIMARY_EMPTY) {
throwBacktrack(so, ( lastToken != null ) ? lastToken.getEndOffset() : 0, ln);
throwBacktrack(so, ( lastToken != null ) ? lastToken.getEndOffset() : 0, ln, fn );
}
list.add(expression);
completedArg = true;
@ -386,7 +387,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
if (failed) {
if (expression != null)
expression.freeReferences(astFactory.getReferenceManager());
throwBacktrack(startingOffset, 0, startingLineNumber );
throwBacktrack(startingOffset, 0, startingLineNumber, fn );
}
return list;
@ -469,7 +470,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
default :
IToken l = LA(1);
backup(mark);
throwBacktrack(first.getOffset(), l.getEndOffset(), first.getLineNumber());
throwBacktrack(first.getOffset(), l.getEndOffset(), first.getLineNumber(), l.getFilename());
}
while (LT(1) == IToken.tCOLONCOLON) {
@ -488,7 +489,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
case IToken.t_operator :
IToken l = LA(1);
backup(mark);
throwBacktrack(first.getOffset(), l.getEndOffset(), first.getLineNumber());
throwBacktrack(first.getOffset(), l.getEndOffset(), first.getLineNumber(), l.getFilename());
case IToken.tIDENTIFIER :
prev = last;
last = consume();
@ -631,7 +632,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
break;
}
IToken la = LA(1);
throwBacktrack(startingOffset, la.getEndOffset(), la.getLineNumber());
throwBacktrack(startingOffset, la.getEndOffset(), la.getLineNumber(), la.getFilename());
default :
if (extension.isValidCVModifier(language, LT(1))) {
@ -662,7 +663,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
arrayMod = astFactory.createArrayModifier(exp);
} catch (Exception e) {
logException("consumeArrayModifiers::createArrayModifier()", e); //$NON-NLS-1$
throwBacktrack(startingOffset, last.getEndOffset(), last.getLineNumber());
throwBacktrack(startingOffset, last.getEndOffset(), last.getLineNumber(), last.getFilename());
}
d.addArrayModifier(arrayMod);
}
@ -694,7 +695,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
} else if (LA(1).isOperator())
toSend = consume();
else
throwBacktrack(operatorToken.getOffset(), toSend != null ? toSend.getEndOffset() : 0, operatorToken.getLineNumber() );
throwBacktrack(operatorToken.getOffset(), toSend != null ? toSend.getEndOffset() : 0, operatorToken.getLineNumber(), operatorToken.getFilename() );
} else {
// must be a conversion function
typeId(d.getDeclarationWrapper().getScope(), true,
@ -809,6 +810,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
IToken la = LA(1);
int startingOffset = la.getOffset();
int ln = la.getLineNumber();
char [] fn = la.getFilename();
IASTExpression assignmentExpression = assignmentExpression(scope, kind,
key);
while (LT(1) == IToken.tCOMMA) {
@ -827,7 +829,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
throwBacktrack(e.getProblem());
} catch (Exception e) {
logException("expression::createExpression()", e); //$NON-NLS-1$
throwBacktrack(startingOffset, endOffset, ln);
throwBacktrack(startingOffset, endOffset, ln, fn);
}
}
return assignmentExpression;
@ -929,7 +931,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
throwBacktrack(e.getProblem());
} catch (Exception e) {
logException("throwExpression::createExpression()", e); //$NON-NLS-1$
throwBacktrack(throwToken.getOffset(), endOffset, throwToken.getLineNumber() );
throwBacktrack(throwToken.getOffset(), endOffset, throwToken.getLineNumber(), throwToken.getFilename() );
}
return null;
@ -946,6 +948,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
IToken la = LA(1);
int startingOffset = la.getOffset();
int ln = la.getLineNumber();
char [] fn = la.getFilename();
la = null;
IASTExpression firstExpression = logicalOrExpression(scope, kind, key);
if (LT(1) == IToken.tQUESTION) {
@ -964,7 +967,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
throwBacktrack(e.getProblem());
} catch (Exception e) {
logException("conditionalExpression::createExpression()", e); //$NON-NLS-1$
throwBacktrack(startingOffset, endOffset, ln);
throwBacktrack(startingOffset, endOffset, ln, fn);
}
}
return firstExpression;
@ -977,8 +980,10 @@ public class ExpressionParser implements IExpressionParser, IParserData {
protected IASTExpression logicalOrExpression(IASTScope scope,
CompletionKind kind, KeywordSetKey key) throws BacktrackException,
EndOfFileException {
int startingOffset = LA(1).getOffset();
int line = LA(1).getLineNumber();
IToken la = LA(1);
int startingOffset = la.getOffset();
int line = la.getLineNumber();
char [] fn = la.getFilename();
IASTExpression firstExpression = logicalAndExpression(scope, kind, key);
while (LT(1) == IToken.tOR) {
consume(IToken.tOR);
@ -994,7 +999,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
throwBacktrack(e.getProblem());
} catch (Exception e) {
logException("logicalOrExpression::createExpression()", e); //$NON-NLS-1$
throwBacktrack(startingOffset, endOffset, line);
throwBacktrack(startingOffset, endOffset, line, fn);
}
}
return firstExpression;
@ -1007,8 +1012,10 @@ public class ExpressionParser implements IExpressionParser, IParserData {
protected IASTExpression logicalAndExpression(IASTScope scope,
CompletionKind kind, KeywordSetKey key) throws BacktrackException,
EndOfFileException {
int startingOffset = LA(1).getOffset();
int line = LA(1).getLineNumber();
IToken la = LA(1);
int startingOffset = la.getOffset();
int line = la.getLineNumber();
char [] fn = la.getFilename();
IASTExpression firstExpression = inclusiveOrExpression(scope, kind, key);
while (LT(1) == IToken.tAND) {
consume(IToken.tAND);
@ -1024,7 +1031,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
throwBacktrack(e.getProblem());
} catch (Exception e) {
logException("logicalAndExpression::createExpression()", e); //$NON-NLS-1$
throwBacktrack(startingOffset, endOffset, line);
throwBacktrack(startingOffset, endOffset, line, fn);
}
}
return firstExpression;
@ -1037,8 +1044,11 @@ public class ExpressionParser implements IExpressionParser, IParserData {
protected IASTExpression inclusiveOrExpression(IASTScope scope,
CompletionKind kind, KeywordSetKey key) throws BacktrackException,
EndOfFileException {
int startingOffset = LA(1).getOffset();
int line = LA(1).getLineNumber();
IToken la = LA(1);
int startingOffset = la.getOffset();
int line = la.getLineNumber();
char [] fn = la.getFilename();
IASTExpression firstExpression = exclusiveOrExpression(scope, kind, key);
while (LT(1) == IToken.tBITOR) {
consume();
@ -1054,7 +1064,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
throwBacktrack(e.getProblem());
} catch (Exception e) {
logException("inclusiveOrExpression::createExpression()", e); //$NON-NLS-1$
throwBacktrack(startingOffset, endOffset, line);
throwBacktrack(startingOffset, endOffset, line, fn);
}
}
return firstExpression;
@ -1067,8 +1077,11 @@ public class ExpressionParser implements IExpressionParser, IParserData {
protected IASTExpression exclusiveOrExpression(IASTScope scope,
CompletionKind kind, KeywordSetKey key) throws BacktrackException,
EndOfFileException {
int startingOffset = LA(1).getOffset();
int line = LA(1).getLineNumber();
IToken la = LA(1);
int startingOffset = la.getOffset();
int line = la.getLineNumber();
char [] fn = la.getFilename();
IASTExpression firstExpression = andExpression(scope, kind, key);
while (LT(1) == IToken.tXOR) {
consume();
@ -1084,7 +1097,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
throwBacktrack(e.getProblem());
} catch (Exception e) {
logException("exclusiveORExpression::createExpression()", e); //$NON-NLS-1$
throwBacktrack(startingOffset, endOffset, line);
throwBacktrack(startingOffset, endOffset, line, fn);
}
}
return firstExpression;
@ -1097,8 +1110,11 @@ public class ExpressionParser implements IExpressionParser, IParserData {
protected IASTExpression andExpression(IASTScope scope,
CompletionKind kind, KeywordSetKey key) throws EndOfFileException,
BacktrackException {
int startingOffset = LA(1).getOffset();
int line = LA(1).getLineNumber();
IToken la = LA(1);
int startingOffset = la.getOffset();
int line = la.getLineNumber();
char [] fn = la.getFilename();
IASTExpression firstExpression = equalityExpression(scope, kind, key);
while (LT(1) == IToken.tAMPER) {
consume();
@ -1113,7 +1129,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
throwBacktrack(e.getProblem());
} catch (Exception e) {
logException("andExpression::createExpression()", e); //$NON-NLS-1$
throwBacktrack(startingOffset, endOffset, line);
throwBacktrack(startingOffset, endOffset, line, fn);
}
}
return firstExpression;
@ -1146,8 +1162,11 @@ public class ExpressionParser implements IExpressionParser, IParserData {
protected IASTExpression equalityExpression(IASTScope scope,
CompletionKind kind, KeywordSetKey key) throws EndOfFileException,
BacktrackException {
int startingOffset = LA(1).getOffset();
int line = LA(1).getLineNumber();
IToken la = LA(1);
int startingOffset = la.getOffset();
int line = la.getLineNumber();
char [] fn = la.getFilename();
IASTExpression firstExpression = relationalExpression(scope, kind, key);
for (;;) {
switch (LT(1)) {
@ -1169,7 +1188,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
} catch (Exception e) {
logException(
"equalityExpression::createExpression()", e); //$NON-NLS-1$
throwBacktrack(startingOffset, endOffset, line);
throwBacktrack(startingOffset, endOffset, line, fn);
}
break;
default :
@ -1185,8 +1204,11 @@ public class ExpressionParser implements IExpressionParser, IParserData {
protected IASTExpression relationalExpression(IASTScope scope,
CompletionKind kind, KeywordSetKey key) throws BacktrackException,
EndOfFileException {
int startingOffset = LA(1).getOffset();
int line = LA(1).getLineNumber();
IToken la = LA(1);
int startingOffset = la.getOffset();
int line = la.getLineNumber();
char [] fn = la.getFilename();
IASTExpression firstExpression = shiftExpression(scope, kind, key);
for (;;) {
switch (LT(1)) {
@ -1234,7 +1256,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
} catch (Exception e) {
logException(
"relationalExpression::createExpression()", e); //$NON-NLS-1$
throwBacktrack(startingOffset, endOffset, line);
throwBacktrack(startingOffset, endOffset, line, fn);
}
break;
default :
@ -1257,8 +1279,10 @@ public class ExpressionParser implements IExpressionParser, IParserData {
*/
public IASTExpression shiftExpression(IASTScope scope, CompletionKind kind,
KeywordSetKey key) throws BacktrackException, EndOfFileException {
int startingOffset = LA(1).getOffset();
int line = LA(1).getLineNumber();
IToken la = LA(1);
int startingOffset = la.getOffset();
int line = la.getLineNumber();
char [] fn = la.getFilename();
IASTExpression firstExpression = additiveExpression(scope, kind, key);
for (;;) {
switch (LT(1)) {
@ -1279,7 +1303,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
throwBacktrack(e.getProblem());
} catch (Exception e) {
logException("shiftExpression::createExpression()", e); //$NON-NLS-1$
throwBacktrack(startingOffset, endOffset, line);
throwBacktrack(startingOffset, endOffset, line, fn);
}
break;
default :
@ -1295,8 +1319,10 @@ public class ExpressionParser implements IExpressionParser, IParserData {
protected IASTExpression additiveExpression(IASTScope scope,
CompletionKind kind, KeywordSetKey key) throws BacktrackException,
EndOfFileException {
int startingOffset = LA(1).getOffset();
int line = LA(1).getLineNumber();
IToken la = LA(1);
int startingOffset = la.getOffset();
int line = la.getLineNumber();
char [] fn = la.getFilename();
IASTExpression firstExpression = multiplicativeExpression(scope, kind,
key);
for (;;) {
@ -1319,7 +1345,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
} catch (Exception e) {
logException(
"additiveExpression::createExpression()", e); //$NON-NLS-1$
throwBacktrack(startingOffset, endOffset, line);
throwBacktrack(startingOffset, endOffset, line, fn);
}
break;
default :
@ -1335,8 +1361,10 @@ public class ExpressionParser implements IExpressionParser, IParserData {
protected IASTExpression multiplicativeExpression(IASTScope scope,
CompletionKind kind, KeywordSetKey key) throws BacktrackException,
EndOfFileException {
int startingOffset = LA(1).getOffset();
int line = LA(1).getLineNumber();
IToken la = LA(1);
int startingOffset = la.getOffset();
int line = la.getLineNumber();
char [] fn = la.getFilename();
IASTExpression firstExpression = pmExpression(scope, kind, key);
for (;;) {
switch (LT(1)) {
@ -1371,7 +1399,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
} catch (Exception e) {
logException(
"multiplicativeExpression::createExpression()", e); //$NON-NLS-1$
throwBacktrack(startingOffset, endOffset, line);
throwBacktrack(startingOffset, endOffset, line, fn);
}
break;
default :
@ -1386,8 +1414,11 @@ public class ExpressionParser implements IExpressionParser, IParserData {
*/
protected IASTExpression pmExpression(IASTScope scope, CompletionKind kind,
KeywordSetKey key) throws EndOfFileException, BacktrackException {
int startingOffset = LA(1).getOffset();
int line = LA(1).getLineNumber();
IToken la = LA(1);
int startingOffset = la.getOffset();
int line = la.getLineNumber();
char [] fn = la.getFilename();
IASTExpression firstExpression = castExpression(scope, kind, key);
for (;;) {
switch (LT(1)) {
@ -1408,7 +1439,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
throwBacktrack(e.getProblem());
} catch (Exception e) {
logException("pmExpression::createExpression()", e); //$NON-NLS-1$
throwBacktrack(startingOffset, endOffset, line);
throwBacktrack(startingOffset, endOffset, line, fn);
}
break;
default :
@ -1427,8 +1458,10 @@ public class ExpressionParser implements IExpressionParser, IParserData {
BacktrackException {
// TO DO: we need proper symbol checkint to ensure type name
if (LT(1) == IToken.tLPAREN) {
int startingOffset = LA(1).getOffset();
int line = LA(1).getLineNumber();
IToken la = LA(1);
int startingOffset = la.getOffset();
int line = la.getLineNumber();
char [] fn = la.getFilename();
IToken mark = mark();
consume();
if (templateIdScopes != null) {
@ -1470,7 +1503,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
throwBacktrack(e.getProblem());
} catch (Exception e) {
logException("castExpression::createExpression()", e); //$NON-NLS-1$
throwBacktrack(startingOffset, endOffset, line);
throwBacktrack(startingOffset, endOffset, line, fn);
}
} catch (BacktrackException b) {
if (templateIdScopes != null && !popped) {
@ -1652,7 +1685,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
int endOffset = ( lastToken != null ) ? lastToken.getEndOffset() : 0;
if (kind == null)
throwBacktrack(mark.getOffset(), endOffset, mark.getLineNumber());
throwBacktrack(mark.getOffset(), endOffset, mark.getLineNumber(), mark.getFilename());
TypeId id = getTypeIdInstance(scope);
IToken last = lastToken;
@ -1691,7 +1724,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
throwBacktrack(e.getProblem());
} catch (Exception e) {
logException("typeId::createTypeId()", e); //$NON-NLS-1$
throwBacktrack(mark.getOffset(), endOffset, mark.getLineNumber());
throwBacktrack(mark.getOffset(), endOffset, mark.getLineNumber(), mark.getFilename());
}
return null;
}
@ -1711,8 +1744,10 @@ public class ExpressionParser implements IExpressionParser, IParserData {
protected IASTExpression deleteExpression(IASTScope scope,
CompletionKind kind, KeywordSetKey key) throws EndOfFileException,
BacktrackException {
int startingOffset = LA(1).getOffset();
int line = LA(1).getLineNumber();
IToken la = LA(1);
int startingOffset = la.getOffset();
int line = la.getLineNumber();
char [] fn = la.getFilename();
if (LT(1) == IToken.tCOLONCOLON) {
// global scope
consume(IToken.tCOLONCOLON);
@ -1738,7 +1773,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
throwBacktrack(e.getProblem());
} catch (Exception e) {
logException("deleteExpression::createExpression()", e); //$NON-NLS-1$
throwBacktrack(startingOffset, endOffset, line);
throwBacktrack(startingOffset, endOffset, line, fn);
}
return null;
}
@ -1763,8 +1798,10 @@ public class ExpressionParser implements IExpressionParser, IParserData {
throws BacktrackException, EndOfFileException {
setCompletionValues(scope, CompletionKind.NEW_TYPE_REFERENCE,
KeywordSetKey.EMPTY);
int startingOffset = LA(1).getOffset();
int line = LA(1).getLineNumber();
IToken la = LA(1);
int startingOffset = la.getOffset();
int line = la.getLineNumber();
char [] fn = la.getFilename();
if (LT(1) == IToken.tCOLONCOLON) {
// global scope
consume(IToken.tCOLONCOLON);
@ -1881,7 +1918,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
} catch (Exception e) {
logException(
"newExpression_1::createExpression()", e); //$NON-NLS-1$
throwBacktrack(startingOffset, endOffset, line);
throwBacktrack(startingOffset, endOffset, line, fn);
}
}
} catch (BacktrackException e) {
@ -1951,7 +1988,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
return null;
} catch (Exception e) {
logException("newExpression_2::createExpression()", e); //$NON-NLS-1$
throwBacktrack(startingOffset, endOffset, line);
throwBacktrack(startingOffset, endOffset, line, fn);
}
return null;
}
@ -1968,8 +2005,10 @@ public class ExpressionParser implements IExpressionParser, IParserData {
*/
public IASTExpression unaryExpression(IASTScope scope, CompletionKind kind,
KeywordSetKey key) throws EndOfFileException, BacktrackException {
int startingOffset = LA(1).getOffset();
int line = LA(1).getLineNumber();
IToken la = LA(1);
int startingOffset = la.getOffset();
int line = la.getLineNumber();
char [] fn = la.getFilename();
switch (LT(1)) {
case IToken.tSTAR :
consume();
@ -2036,7 +2075,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
throwBacktrack(e.getProblem());
} catch (Exception e) {
logException("unaryExpression_1::createExpression()", e); //$NON-NLS-1$
throwBacktrack(startingOffset, endOffset, line);
throwBacktrack(startingOffset, endOffset, line, fn);
}
try {
return astFactory.createExpression(scope,
@ -2047,7 +2086,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
throwBacktrack(e1.getProblem());
} catch (Exception e) {
logException("unaryExpression_1::createExpression()", e); //$NON-NLS-1$
throwBacktrack(startingOffset, endOffset, line);
throwBacktrack(startingOffset, endOffset, line, fn);
}
case IToken.t_new :
return newExpression(scope, key);
@ -2082,8 +2121,10 @@ public class ExpressionParser implements IExpressionParser, IParserData {
protected IASTExpression postfixExpression(IASTScope scope,
CompletionKind kind, KeywordSetKey key) throws EndOfFileException,
BacktrackException {
int startingOffset = LA(1).getOffset();
int line = LA(1).getLineNumber();
IToken la = LA(1);
int startingOffset = la.getOffset();
int line = la.getLineNumber();
char [] fn = la.getFilename();
IASTExpression firstExpression = null;
boolean isTemplate = false;
@ -2124,7 +2165,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
throwBacktrack(ase.getProblem());
} catch (Exception e) {
logException("postfixExpression_1::createExpression()", e); //$NON-NLS-1$
throwBacktrack(startingOffset, endOffset, line);
throwBacktrack(startingOffset, endOffset, line, fn);
}
break;
// simple-type-specifier ( assignment-expression , .. )
@ -2216,7 +2257,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
throwBacktrack(e6.getProblem());
} catch (Exception e) {
logException("postfixExpression_2::createExpression()", e); //$NON-NLS-1$
throwBacktrack(startingOffset, endOffset, line);
throwBacktrack(startingOffset, endOffset, line, fn);
}
break;
default :
@ -2247,7 +2288,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
} catch (Exception e) {
logException(
"postfixExpression_3::createExpression()", e); //$NON-NLS-1$
throwBacktrack(startingOffset, endOffset, line);
throwBacktrack(startingOffset, endOffset, line, fn);
}
break;
case IToken.tLPAREN :
@ -2291,7 +2332,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
} catch (Exception e) {
logException(
"postfixExpression_4::createExpression()", e); //$NON-NLS-1$
throwBacktrack(startingOffset, endOffset, line);
throwBacktrack(startingOffset, endOffset, line, fn);
}
break;
case IToken.tINCR :
@ -2306,7 +2347,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
} catch (Exception e) {
logException(
"postfixExpression_5::createExpression()", e); //$NON-NLS-1$
throwBacktrack(startingOffset, endOffset, line);
throwBacktrack(startingOffset, endOffset, line, fn);
}
break;
case IToken.tDECR :
@ -2321,7 +2362,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
} catch (Exception e) {
logException(
"postfixExpression_6::createExpression()", e); //$NON-NLS-1$
throwBacktrack(startingOffset, endOffset, line);
throwBacktrack(startingOffset, endOffset, line, fn);
}
break;
case IToken.tDOT :
@ -2359,7 +2400,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
} catch (Exception e) {
logException(
"postfixExpression_7::createExpression()", e); //$NON-NLS-1$
throwBacktrack(startingOffset, endOffset, line);
throwBacktrack(startingOffset, endOffset, line, fn);
}
break;
case IToken.tARROW :
@ -2396,7 +2437,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
} catch (Exception e) {
logException(
"postfixExpression_8::createExpression()", e); //$NON-NLS-1$
throwBacktrack(startingOffset, endOffset, line);
throwBacktrack(startingOffset, endOffset, line, fn);
}
break;
default :
@ -2432,8 +2473,11 @@ public class ExpressionParser implements IExpressionParser, IParserData {
protected IASTExpression simpleTypeConstructorExpression(IASTScope scope,
Kind type, KeywordSetKey key) throws EndOfFileException,
BacktrackException {
int startingOffset = LA(1).getOffset();
int line = LA(1).getLineNumber();
IToken la = LA(1);
int startingOffset = la.getOffset();
int line = la.getLineNumber();
char [] fn = la.getFilename();
la = null;
String typeName = consume().getImage();
consume(IToken.tLPAREN);
setCurrentFunctionName(typeName);
@ -2449,7 +2493,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
} catch (Exception e) {
logException(
"simpleTypeConstructorExpression::createExpression()", e); //$NON-NLS-1$
throwBacktrack(startingOffset, endOffset, line);
throwBacktrack(startingOffset, endOffset, line, fn);
}
return null;
}
@ -2474,7 +2518,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
throwBacktrack(e1.getProblem());
} catch (Exception e) {
logException("primaryExpression_1::createExpression()", e); //$NON-NLS-1$
throwBacktrack(t.getOffset(), t.getEndOffset(), t.getLineNumber());
throwBacktrack(t.getOffset(), t.getEndOffset(), t.getLineNumber(), t.getFilename());
}
case IToken.tFLOATINGPT :
t = consume();
@ -2486,7 +2530,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
throwBacktrack(e2.getProblem());
} catch (Exception e) {
logException("primaryExpression_2::createExpression()", e); //$NON-NLS-1$
throwBacktrack(t.getOffset(), t.getEndOffset(), t.getLineNumber());
throwBacktrack(t.getOffset(), t.getEndOffset(), t.getLineNumber(), t.getFilename());
}
case IToken.tSTRING :
case IToken.tLSTRING :
@ -2499,7 +2543,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
throwBacktrack(e5.getProblem());
} catch (Exception e) {
logException("primaryExpression_3::createExpression()", e); //$NON-NLS-1$
throwBacktrack(t.getOffset(), t.getEndOffset(), t.getLineNumber());
throwBacktrack(t.getOffset(), t.getEndOffset(), t.getLineNumber(), t.getFilename());
}
case IToken.t_false :
@ -2513,7 +2557,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
throwBacktrack(e3.getProblem());
} catch (Exception e) {
logException("primaryExpression_4::createExpression()", e); //$NON-NLS-1$
throwBacktrack(t.getOffset(), t.getEndOffset(), t.getLineNumber());
throwBacktrack(t.getOffset(), t.getEndOffset(), t.getLineNumber(), t.getFilename() );
}
case IToken.tCHAR :
@ -2528,7 +2572,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
throwBacktrack(e4.getProblem());
} catch (Exception e) {
logException("primaryExpression_5::createExpression()", e); //$NON-NLS-1$
throwBacktrack(t.getOffset(), t.getEndOffset(), t.getLineNumber());
throwBacktrack(t.getOffset(), t.getEndOffset(), t.getLineNumber(), t.getFilename());
}
case IToken.t_this :
@ -2541,7 +2585,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
throwBacktrack(e7.getProblem());
} catch (Exception e) {
logException("primaryExpression_6::createExpression()", e); //$NON-NLS-1$
throwBacktrack(t.getOffset(), t.getEndOffset(), t.getLineNumber());
throwBacktrack(t.getOffset(), t.getEndOffset(), t.getLineNumber(), t.getFilename());
}
case IToken.tLPAREN :
t = consume();
@ -2561,7 +2605,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
throwBacktrack(e6.getProblem());
} catch (Exception e) {
logException("primaryExpression_7::createExpression()", e); //$NON-NLS-1$
throwBacktrack(t.getOffset(), endOffset, t.getLineNumber() );
throwBacktrack(t.getOffset(), endOffset, t.getLineNumber(), t.getFilename() );
}
case IToken.tIDENTIFIER :
case IToken.tCOLONCOLON :
@ -2575,7 +2619,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
} catch (BacktrackException bt) {
IToken mark = mark();
Declarator d = new Declarator(new DeclarationWrapper(scope,
mark.getOffset(), mark.getLineNumber(), null));
mark.getOffset(), mark.getLineNumber(), null, mark.getFilename()));
if (LT(1) == IToken.tCOLONCOLON
|| LT(1) == IToken.tIDENTIFIER) {
@ -2593,7 +2637,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
operatorId(d, start, null, kind);
else {
backup(mark);
throwBacktrack(startingOffset, end.getEndOffset(), end.getLineNumber());
throwBacktrack(startingOffset, end.getEndOffset(), end.getLineNumber(), t.getFilename());
}
} else if (LT(1) == IToken.t_operator)
operatorId(d, null, null, kind);
@ -2610,11 +2654,13 @@ public class ExpressionParser implements IExpressionParser, IParserData {
throwBacktrack(e8.getProblem());
} catch (Exception e) {
logException("primaryExpression_8::createExpression()", e); //$NON-NLS-1$
throwBacktrack(startingOffset, endOffset, line);
throwBacktrack(startingOffset, endOffset, line, duple.getFilename());
}
default :
startingOffset = LA(1).getOffset();
line = LA(1).getLineNumber();
IToken la= LA(1);
startingOffset = la.getOffset();
line = la.getLineNumber();
char [] fn = la.getFilename();
if (!queryLookaheadCapability(2)) {
if (LA(1).canBeAPrefix()) {
consume();
@ -2631,7 +2677,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
return null;
} catch (Exception e) {
logException("primaryExpression_9::createExpression()", e); //$NON-NLS-1$
throwBacktrack(startingOffset, 0, line);
throwBacktrack(startingOffset, 0, line, fn);
}
return empty;
}
@ -2692,7 +2738,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
throwBacktrack(e.getProblem());
} catch (Exception e) {
logException("assignmentOperatorExpression::createExpression()", e); //$NON-NLS-1$
throwBacktrack(t.getOffset(), endOffset, t.getLineNumber());
throwBacktrack(t.getOffset(), endOffset, t.getLineNumber(), t.getFilename());
}
return null;
}
@ -2720,8 +2766,11 @@ public class ExpressionParser implements IExpressionParser, IParserData {
protected IASTExpression unaryOperatorCastExpression(IASTScope scope,
IASTExpression.Kind kind, CompletionKind completionKind,
KeywordSetKey key) throws EndOfFileException, BacktrackException {
int startingOffset = LA(1).getOffset();
int line = LA(1).getLineNumber();
IToken la = LA(1);
int startingOffset = la.getOffset();
int line = la.getLineNumber();
char [] fn = la.getFilename();
la = null;
IASTExpression castExpression = castExpression(scope, completionKind,
key);
int endOffset = ( lastToken != null ) ? lastToken.getEndOffset() : 0;
@ -2732,7 +2781,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
throwBacktrack(e.getProblem());
} catch (Exception e) {
logException("unaryOperatorCastExpression::createExpression()", e); //$NON-NLS-1$
throwBacktrack(startingOffset, endOffset, line);
throwBacktrack(startingOffset, endOffset, line, fn);
}
return null;
}
@ -2740,8 +2789,13 @@ public class ExpressionParser implements IExpressionParser, IParserData {
protected IASTExpression specialCastExpression(IASTScope scope,
IASTExpression.Kind kind, KeywordSetKey key)
throws EndOfFileException, BacktrackException {
int line = LA(1).getLineNumber();
int startingOffset = consume().getOffset();
IToken la = LA(1);
int startingOffset = la.getOffset();
int line = la.getLineNumber();
char [] fn = la.getFilename();
la = null;
consume();
consume(IToken.tLT);
IASTTypeId duple = typeId(scope, false, CompletionKind.TYPE_REFERENCE);
consume(IToken.tGT);
@ -2756,15 +2810,12 @@ public class ExpressionParser implements IExpressionParser, IParserData {
throwBacktrack(e.getProblem());
} catch (Exception e) {
logException("specialCastExpression::createExpression()", e); //$NON-NLS-1$
throwBacktrack(startingOffset, endOffset, line );
throwBacktrack(startingOffset, endOffset, line, fn );
}
return null;
}
public char[] getCurrentFilename() {
return scanner.getCurrentFilename();
}
protected boolean isCancelled = false;
/* (non-Javadoc)
@ -2789,18 +2840,7 @@ public class ExpressionParser implements IExpressionParser, IParserData {
if( first instanceof ITokenDuple ) setGreaterNameContext((ITokenDuple) first);
return first;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.IFilenameProvider#getCurrentFileIndex()
*/
public int getCurrentFileIndex() {
return scanner.getCurrentFileIndex();
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.IFilenameProvider#getFilenameForIndex(int)
*/
public String getFilenameForIndex(int index) {
return scanner.getFilenameForIndex(index);
}
public boolean validateCaches() {
return true;

View file

@ -12,7 +12,6 @@ package org.eclipse.cdt.internal.core.parser;
import org.eclipse.cdt.core.parser.BacktrackException;
import org.eclipse.cdt.core.parser.EndOfFileException;
import org.eclipse.cdt.core.parser.IFilenameProvider;
import org.eclipse.cdt.core.parser.KeywordSetKey;
import org.eclipse.cdt.core.parser.ast.IASTCompletionNode;
import org.eclipse.cdt.core.parser.ast.IASTExpression;
@ -21,7 +20,7 @@ import org.eclipse.cdt.core.parser.ast.IASTScope;
/**
* @author jcamelon
*/
public interface IExpressionParser extends IFilenameProvider {
public interface IExpressionParser {
/**
* Request a parse from a pre-configured parser to parse an expression.

View file

@ -45,7 +45,6 @@ import org.eclipse.cdt.core.parser.ast.IASTNamespaceAlias;
import org.eclipse.cdt.core.parser.ast.IASTNamespaceDefinition;
import org.eclipse.cdt.core.parser.ast.IASTNode;
import org.eclipse.cdt.core.parser.ast.IASTOffsetableElement;
import org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement;
import org.eclipse.cdt.core.parser.ast.IASTScope;
import org.eclipse.cdt.core.parser.ast.IASTSimpleTypeSpecifier;
import org.eclipse.cdt.core.parser.ast.IASTTemplate;
@ -106,7 +105,7 @@ public abstract class Parser extends ExpressionParser implements IParser
bt.getStartingOffset(),
bt.getEndOffset(),
bt.getLineNumber(),
scanner.getCurrentFilename(),
bt.getFilename(),
EMPTY_STRING,
false,
true );
@ -309,7 +308,7 @@ public abstract class Parser extends ExpressionParser implements IParser
if (LT(1) == IToken.tIDENTIFIER || LT(1) == IToken.tCOLONCOLON)
duple = name(scope, CompletionKind.NAMESPACE_REFERENCE, KeywordSetKey.EMPTY);
else
throwBacktrack(firstToken.getOffset(), endOffset, firstToken.getLineNumber());
throwBacktrack(firstToken.getOffset(), endOffset, firstToken.getLineNumber(), firstToken.getFilename());
if (LT(1) == IToken.tSEMI)
{
IToken last = consume(IToken.tSEMI);
@ -322,13 +321,13 @@ public abstract class Parser extends ExpressionParser implements IParser
catch (Exception e1)
{
logException( "usingClause:createUsingDirective", e1 ); //$NON-NLS-1$
throwBacktrack(firstToken.getOffset(), last.getEndOffset(), firstToken.getLineNumber());
throwBacktrack(firstToken.getOffset(), last.getEndOffset(), firstToken.getLineNumber(), last.getFilename());
}
astUD.acceptElement(requestor, astFactory.getReferenceManager());
return astUD;
}
endOffset = ( lastToken != null ) ? lastToken.getEndOffset() : 0;
throwBacktrack(firstToken.getOffset(), endOffset, firstToken.getLineNumber());
throwBacktrack(firstToken.getOffset(), endOffset, firstToken.getLineNumber(), firstToken.getFilename());
}
boolean typeName = false;
setCompletionValues(scope, CompletionKind.TYPE_REFERENCE, KeywordSetKey.POST_USING );
@ -348,7 +347,7 @@ public abstract class Parser extends ExpressionParser implements IParser
}
else
{
throwBacktrack(firstToken.getOffset(), ( lastToken != null ) ? lastToken.getEndOffset() : 0, firstToken.getLineNumber());
throwBacktrack(firstToken.getOffset(), ( lastToken != null ) ? lastToken.getEndOffset() : 0, firstToken.getLineNumber(), firstToken.getFilename());
}
if (LT(1) == IToken.tSEMI)
{
@ -370,14 +369,14 @@ public abstract class Parser extends ExpressionParser implements IParser
if( e1 instanceof ASTSemanticException && ((ASTSemanticException)e1).getProblem() != null )
throwBacktrack(((ASTSemanticException)e1).getProblem());
else
throwBacktrack(firstToken.getOffset(), last.getEndOffset(), firstToken.getLineNumber());
throwBacktrack(firstToken.getOffset(), last.getEndOffset(), firstToken.getLineNumber(), firstToken.getFilename());
}
declaration.acceptElement( requestor, astFactory.getReferenceManager() );
setCompletionValues(scope, getCompletionKindForDeclaration(scope, null), KeywordSetKey.DECLARATION );
return declaration;
}
int endOffset = ( lastToken != null ) ? lastToken.getEndOffset() : 0;
throwBacktrack(firstToken.getOffset(), endOffset, firstToken.getLineNumber());
throwBacktrack(firstToken.getOffset(), endOffset, firstToken.getLineNumber(), firstToken.getFilename());
return null;
}
/**
@ -398,7 +397,7 @@ public abstract class Parser extends ExpressionParser implements IParser
{
IToken firstToken = consume(IToken.t_extern);
if (LT(1) != IToken.tSTRING)
throwBacktrack(firstToken.getOffset(), firstToken.getEndOffset(), firstToken.getLineNumber());
throwBacktrack(firstToken.getOffset(), firstToken.getEndOffset(), firstToken.getLineNumber(), firstToken.getFilename());
IToken spec = consume(IToken.tSTRING);
if (LT(1) == IToken.tLBRACE)
@ -411,12 +410,12 @@ public abstract class Parser extends ExpressionParser implements IParser
astFactory.createLinkageSpecification(
scope,
spec.getImage(),
firstToken.getOffset(), firstToken.getLineNumber());
firstToken.getOffset(), firstToken.getLineNumber(), firstToken.getFilename());
}
catch (Exception e)
{
logException( "linkageSpecification_1:createLinkageSpecification", e ); //$NON-NLS-1$
throwBacktrack(firstToken.getOffset(), lbrace.getEndOffset(), lbrace.getLineNumber());
throwBacktrack(firstToken.getOffset(), lbrace.getEndOffset(), lbrace.getLineNumber(), lbrace.getFilename());
}
linkage.enterScope( requestor, astFactory.getReferenceManager() );
@ -459,12 +458,12 @@ public abstract class Parser extends ExpressionParser implements IParser
astFactory.createLinkageSpecification(
scope,
spec.getImage(),
firstToken.getOffset(), firstToken.getLineNumber());
firstToken.getOffset(), firstToken.getLineNumber(), firstToken.getFilename());
}
catch (Exception e)
{
logException( "linkageSpecification_2:createLinkageSpecification", e ); //$NON-NLS-1$
throwBacktrack(firstToken.getOffset(), endOffset, firstToken.getLineNumber());
throwBacktrack(firstToken.getOffset(), endOffset, firstToken.getLineNumber(), firstToken.getFilename());
return null;
}
linkage.enterScope( requestor, astFactory.getReferenceManager() );
@ -512,13 +511,13 @@ public abstract class Parser extends ExpressionParser implements IParser
templateInstantiation =
astFactory.createTemplateInstantiation(
scope,
firstToken.getOffset(), firstToken.getLineNumber());
firstToken.getOffset(), firstToken.getLineNumber(), firstToken.getFilename());
}
catch (Exception e)
{
logException( "templateDeclaration:createTemplateInstantiation", e ); //$NON-NLS-1$
backup( mark );
throwBacktrack(firstToken.getOffset(), firstToken.getEndOffset(), firstToken.getLineNumber());
throwBacktrack(firstToken.getOffset(), firstToken.getEndOffset(), firstToken.getLineNumber(), firstToken.getFilename());
return null;
}
templateInstantiation.enterScope( requestor, astFactory.getReferenceManager() );
@ -540,13 +539,13 @@ public abstract class Parser extends ExpressionParser implements IParser
templateSpecialization =
astFactory.createTemplateSpecialization(
scope,
firstToken.getOffset(), firstToken.getLineNumber());
firstToken.getOffset(), firstToken.getLineNumber(), firstToken.getFilename());
}
catch (Exception e)
{
logException( "templateDeclaration:createTemplateSpecialization", e ); //$NON-NLS-1$
backup( mark );
throwBacktrack(firstToken.getOffset(), gt.getEndOffset(), gt.getLineNumber());
throwBacktrack(firstToken.getOffset(), gt.getEndOffset(), gt.getLineNumber(), gt.getFilename());
return null;
}
templateSpecialization.enterScope(requestor, astFactory.getReferenceManager());
@ -570,12 +569,12 @@ public abstract class Parser extends ExpressionParser implements IParser
scope,
parms,
exported,
firstToken.getOffset(), firstToken.getLineNumber());
firstToken.getOffset(), firstToken.getLineNumber(), firstToken.getFilename());
}
catch (Exception e)
{
logException( "templateDeclaration:createTemplateDeclaration", e ); //$NON-NLS-1$
throwBacktrack(firstToken.getOffset(), gt.getEndOffset(), gt.getLineNumber());
throwBacktrack(firstToken.getOffset(), gt.getEndOffset(), gt.getLineNumber(), gt.getFilename());
return null;
}
templateDecl.enterScope( requestor, astFactory.getReferenceManager() );
@ -631,6 +630,8 @@ public abstract class Parser extends ExpressionParser implements IParser
IToken la = LA(1);
int startingOffset = la.getOffset();
int lnum = la.getLineNumber();
char [] fn = la.getFilename();
for (;;)
{
if (LT(1) == IToken.tGT)
@ -675,7 +676,7 @@ public abstract class Parser extends ExpressionParser implements IParser
(id != null) ? id.getOffset() : 0,
(id != null) ? id.getEndOffset() : 0,
(id != null) ? id.getLineNumber() : 0,
lastToken.getEndOffset(), lastToken.getLineNumber() ));
lastToken.getEndOffset(), lastToken.getLineNumber(), lastToken.getFilename() ));
}
catch( ASTSemanticException ase )
{
@ -684,7 +685,7 @@ public abstract class Parser extends ExpressionParser implements IParser
catch (Exception e)
{
logException( "templateParameterList_1:createTemplateParameter", e ); //$NON-NLS-1$
throwBacktrack(startingOffset, ( lastToken != null ) ? lastToken.getEndOffset() : 0, lnum);
throwBacktrack(startingOffset, ( lastToken != null ) ? lastToken.getEndOffset() : 0, lnum, fn);
}
}
@ -725,7 +726,7 @@ public abstract class Parser extends ExpressionParser implements IParser
(optionalId != null) ? optionalId.getOffset() : 0,
(optionalId != null) ? optionalId.getEndOffset() : 0,
(optionalId != null) ? optionalId.getLineNumber() : 0,
lastToken.getEndOffset(), lastToken.getLineNumber() ));
lastToken.getEndOffset(), lastToken.getLineNumber(), lastToken.getFilename() ));
}
catch( ASTSemanticException ase )
{
@ -735,7 +736,7 @@ public abstract class Parser extends ExpressionParser implements IParser
{
int endOffset = ( lastToken != null ) ? lastToken.getEndOffset() : 0 ;
logException( "templateParameterList_2:createTemplateParameter", e ); //$NON-NLS-1$
throwBacktrack(startingOffset, endOffset, lnum);
throwBacktrack(startingOffset, endOffset, lnum, fn);
}
}
else if (LT(1) == IToken.tCOMMA)
@ -767,12 +768,12 @@ public abstract class Parser extends ExpressionParser implements IParser
declarator.getInitializerClause(),
wrapper.getStartingOffset(), wrapper.getStartingLine(),
declarator.getNameStartOffset(), declarator.getNameEndOffset(), declarator.getNameLine(),
wrapper.getEndOffset(), wrapper.getEndLine()),
wrapper.getEndOffset(), wrapper.getEndLine(), fn ),
null,
( parameterScope instanceof IASTCodeScope ) ? (IASTCodeScope) parameterScope : null,
wrapper.getStartingOffset(), wrapper.getStartingLine(),
declarator.getNameStartOffset(), declarator.getNameEndOffset(), declarator.getNameLine(),
wrapper.getEndOffset(), wrapper.getEndLine() ));
wrapper.getEndOffset(), wrapper.getEndLine(), fn ));
}
catch( ASTSemanticException ase )
{
@ -782,7 +783,7 @@ public abstract class Parser extends ExpressionParser implements IParser
{
int endOffset = ( lastToken != null ) ? lastToken.getEndOffset() : 0 ;
logException( "templateParameterList:createParameterDeclaration", e ); //$NON-NLS-1$
throwBacktrack(startingOffset, endOffset, lnum);
throwBacktrack(startingOffset, endOffset, lnum, fn);
}
}
}
@ -835,12 +836,12 @@ public abstract class Parser extends ExpressionParser implements IParser
scope,
assembly,
first.getOffset(),
first.getLineNumber(), last.getEndOffset(), last.getLineNumber());
first.getLineNumber(), last.getEndOffset(), last.getLineNumber(), last.getFilename());
}
catch (Exception e)
{
logException( "declaration:createASMDefinition", e ); //$NON-NLS-1$
throwBacktrack(first.getOffset(), last.getEndOffset(), first.getLineNumber());
throwBacktrack(first.getOffset(), last.getEndOffset(), first.getLineNumber(), first.getFilename());
}
// if we made it this far, then we have all we need
// do the callback
@ -986,13 +987,13 @@ public abstract class Parser extends ExpressionParser implements IParser
first.getLineNumber(),
(identifier == null ? first.getOffset() : identifier.getOffset()),
(identifier == null ? first.getEndOffset() : identifier.getEndOffset() ),
(identifier == null ? first.getLineNumber() : identifier.getLineNumber() ));
(identifier == null ? first.getLineNumber() : identifier.getLineNumber() ), first.getFilename());
}
catch (Exception e1)
{
logException( "namespaceDefinition:createNamespaceDefinition", e1 ); //$NON-NLS-1$
throwBacktrack(first.getOffset(), lbrace.getEndOffset(), first.getLineNumber());
throwBacktrack(first.getOffset(), lbrace.getEndOffset(), first.getLineNumber(), first.getFilename());
return null;
}
namespaceDefinition.enterScope( requestor, astFactory.getReferenceManager() );
@ -1038,7 +1039,7 @@ public abstract class Parser extends ExpressionParser implements IParser
if( identifier == null )
{
throwBacktrack(first.getOffset(), assign.getEndOffset(), first.getLineNumber());
throwBacktrack(first.getOffset(), assign.getEndOffset(), first.getLineNumber(), first.getFilename());
return null;
}
@ -1055,7 +1056,7 @@ public abstract class Parser extends ExpressionParser implements IParser
catch (Exception e1)
{
logException( "namespaceDefinition:createNamespaceAlias", e1 ); //$NON-NLS-1$
throwBacktrack(first.getOffset(), semi.getEndOffset(), first.getLineNumber());
throwBacktrack(first.getOffset(), semi.getEndOffset(), first.getLineNumber(), first.getFilename());
return null;
}
return alias;
@ -1063,7 +1064,7 @@ public abstract class Parser extends ExpressionParser implements IParser
else
{
int endOffset = ( lastToken != null ) ? lastToken.getEndOffset() : 0 ;
throwBacktrack(first.getOffset(), endOffset, first.getLineNumber());
throwBacktrack(first.getOffset(), endOffset, first.getLineNumber(), first.getFilename());
return null;
}
}
@ -1097,9 +1098,10 @@ public abstract class Parser extends ExpressionParser implements IParser
IToken firstToken = LA(1);
int firstOffset = firstToken.getOffset();
int firstLine = firstToken.getLineNumber();
if( firstToken.getType() == IToken.tLBRACE ) throwBacktrack(firstToken.getOffset(), firstToken.getEndOffset(), firstToken.getLineNumber());
char [] fn = firstToken.getFilename();
if( firstToken.getType() == IToken.tLBRACE ) throwBacktrack(firstToken.getOffset(), firstToken.getEndOffset(), firstToken.getLineNumber(), firstToken.getFilename());
DeclarationWrapper sdw =
new DeclarationWrapper(scope, firstToken.getOffset(), firstToken.getLineNumber(), ownerTemplate);
new DeclarationWrapper(scope, firstToken.getOffset(), firstToken.getLineNumber(), ownerTemplate, fn);
firstToken = null; // necessary for scalability
CompletionKind completionKindForDeclaration = getCompletionKindForDeclaration(scope, overideKind);
@ -1132,7 +1134,7 @@ public abstract class Parser extends ExpressionParser implements IParser
if( e1 instanceof ASTSemanticException && ((ASTSemanticException)e1).getProblem() != null )
throwBacktrack(((ASTSemanticException)e1).getProblem());
else
throwBacktrack(firstOffset, endOffset, firstLine);
throwBacktrack(firstOffset, endOffset, firstLine, fn);
}
try {
@ -1173,10 +1175,10 @@ public abstract class Parser extends ExpressionParser implements IParser
break;
case IToken.tRPAREN:
if( ! fromCatchHandler )
throwBacktrack(firstOffset, LA(1).getEndOffset(), LA(1).getLineNumber());
throwBacktrack(firstOffset, LA(1).getEndOffset(), LA(1).getLineNumber(), fn);
break;
default:
throwBacktrack(firstOffset, LA(1).getEndOffset(), LA(1).getLineNumber());
throwBacktrack(firstOffset, LA(1).getEndOffset(), LA(1).getLineNumber(), fn);
}
if( ! consumedSemi )
@ -1188,7 +1190,7 @@ public abstract class Parser extends ExpressionParser implements IParser
}
if( hasFunctionTryBlock && ! hasFunctionBody )
throwBacktrack(firstOffset, LA(1).getEndOffset(), LA(1).getLineNumber());
throwBacktrack(firstOffset, LA(1).getEndOffset(), LA(1).getLineNumber(), fn);
}
int endOffset = ( lastToken != null ) ? lastToken.getEndOffset() : 0 ;
List l = null;
@ -1204,7 +1206,7 @@ public abstract class Parser extends ExpressionParser implements IParser
sdw.getStartingOffset(),
lastToken != null ? lastToken.getEndOffset() : 0,
sdw.getStartingLine(),
scanner.getCurrentFilename(),
fn,
EMPTY_STRING, false, true );
throwBacktrack( p );
} else {
@ -1214,12 +1216,12 @@ public abstract class Parser extends ExpressionParser implements IParser
catch( Exception e )
{
logException( "simpleDecl", e ); //$NON-NLS-1$
throwBacktrack(firstOffset, endOffset, firstLine);
throwBacktrack(firstOffset, endOffset, firstLine, fn);
}
if (hasFunctionBody && l.size() != 1)
{
throwBacktrack(firstOffset, endOffset, firstLine); //TODO Should be an IProblem
throwBacktrack(firstOffset, endOffset, firstLine, fn); //TODO Should be an IProblem
}
if (!l.isEmpty()) // no need to do this unless we have a declarator
{
@ -1245,7 +1247,7 @@ public abstract class Parser extends ExpressionParser implements IParser
((IASTSimpleTypeSpecifier)sdw.getTypeSpecifier()).releaseReferences( astFactory.getReferenceManager() );
if ( !( declaration instanceof IASTScope ) )
throwBacktrack(firstOffset, endOffset, firstLine);
throwBacktrack(firstOffset, endOffset, firstLine, fn);
handleFunctionBody((IASTScope)declaration );
((IASTOffsetableElement)declaration).setEndingOffsetAndLineNumber(
@ -1270,7 +1272,7 @@ public abstract class Parser extends ExpressionParser implements IParser
ownerTemplate,
sdw.getStartingOffset(),
sdw.getStartingLine(), lastToken.getEndOffset(), lastToken.getLineNumber(),
sdw.isFriend());
sdw.isFriend(), lastToken.getFilename());
declaration.acceptElement(requestor, astFactory.getReferenceManager());
return declaration;
}
@ -1278,7 +1280,7 @@ public abstract class Parser extends ExpressionParser implements IParser
catch (Exception e1)
{
logException( "simpleDeclaration:createTypeSpecDeclaration", e1 ); //$NON-NLS-1$
throwBacktrack(firstOffset, endOffset, firstLine);
throwBacktrack(firstOffset, endOffset, firstLine, fn);
}
return null;
@ -1360,7 +1362,7 @@ public abstract class Parser extends ExpressionParser implements IParser
catch (Exception e1)
{
logException( "ctorInitializer:addConstructorMemberInitializer", e1 ); //$NON-NLS-1$
throwBacktrack(startingOffset, rparen.getEndOffset(), rparen.getLineNumber());
throwBacktrack(startingOffset, rparen.getEndOffset(), rparen.getLineNumber(), rparen.getFilename());
}
if (LT(1) == IToken.tLBRACE)
break;
@ -1387,7 +1389,7 @@ public abstract class Parser extends ExpressionParser implements IParser
IToken current = LA(1);
DeclarationWrapper sdw =
new DeclarationWrapper(scope, current.getOffset(), current.getLineNumber(), null);
new DeclarationWrapper(scope, current.getOffset(), current.getLineNumber(), null, current.getFilename());
declSpecifierSeq(sdw, true, false, CompletionKind.ARGUMENT_TYPE, KeywordSetKey.DECL_SPECIFIER_SEQUENCE );
if (sdw.getTypeSpecifier() == null
&& sdw.getSimpleType()
@ -1416,7 +1418,7 @@ public abstract class Parser extends ExpressionParser implements IParser
{
int endOffset = ( lastToken != null ) ? lastToken.getEndOffset() : 0 ;
logException( "parameterDeclaration:createSimpleTypeSpecifier", e ); //$NON-NLS-1$
throwBacktrack(current.getOffset(), endOffset, current.getLineNumber());
throwBacktrack(current.getOffset(), endOffset, current.getLineNumber(), current.getFilename());
}
setCompletionValues(scope,CompletionKind.SINGLE_NAME_REFERENCE,KeywordSetKey.EMPTY );
@ -1429,7 +1431,7 @@ public abstract class Parser extends ExpressionParser implements IParser
if (current == LA(1))
{
int endOffset = ( lastToken != null ) ? lastToken.getEndOffset() : 0 ;
throwBacktrack(current.getOffset(), endOffset, current.getLineNumber());
throwBacktrack(current.getOffset(), endOffset, current.getLineNumber(), current.getFilename());
}
collection.addParameter(sdw);
}
@ -1920,7 +1922,7 @@ public abstract class Parser extends ExpressionParser implements IParser
break;
default :
backup(t);
throwBacktrack(t.getOffset(), t.getEndOffset(), t.getLineNumber());
throwBacktrack(t.getOffset(), t.getEndOffset(), t.getLineNumber(), t.getFilename());
}
ITokenDuple d = name(sdw.getScope(), completionKind,
@ -1939,7 +1941,7 @@ public abstract class Parser extends ExpressionParser implements IParser
int endOffset = ( lastToken != null ) ? lastToken.getEndOffset() : 0 ;
logException(
"elaboratedTypeSpecifier:createElaboratedTypeSpecifier", e); //$NON-NLS-1$
throwBacktrack(t.getOffset(), endOffset, t.getLineNumber());
throwBacktrack(t.getOffset(), endOffset, t.getLineNumber(), t.getFilename());
}
sdw.setTypeSpecifier(elaboratedTypeSpec);
@ -1947,7 +1949,6 @@ public abstract class Parser extends ExpressionParser implements IParser
{
((IASTElaboratedTypeSpecifier) elaboratedTypeSpec).acceptElement(
requestor, astFactory.getReferenceManager());
handleOffsetableNamedElement((IASTOffsetableNamedElement) elaboratedTypeSpec);
}
}
/**
@ -2060,8 +2061,11 @@ public abstract class Parser extends ExpressionParser implements IParser
protected IASTInitializerClause cInitializerClause(IASTScope scope,
List designators, boolean constructInitializers)
throws EndOfFileException, BacktrackException {
int startingOffset = LA(1).getOffset();
int line = LA(1).getLineNumber();
IToken la = LA(1);
int startingOffset = la.getOffset();
int line = la.getLineNumber();
char [] fn = la.getFilename();
la = null;
if (LT(1) == IToken.tLBRACE) {
consume(IToken.tLBRACE);
List initializerList = new ArrayList();
@ -2085,7 +2089,8 @@ public abstract class Parser extends ExpressionParser implements IParser
if (LT(1) == IToken.tRBRACE)
break;
if (checkHashcode == LA(1).hashCode()) {
throwBacktrack(startingOffset, LA(1).getEndOffset(), LA(1).getLineNumber());
IToken l2 = LA(1);
throwBacktrack(startingOffset, l2.getEndOffset(), l2.getLineNumber(), l2.getFilename());
return null;
}
@ -2116,13 +2121,13 @@ public abstract class Parser extends ExpressionParser implements IParser
} catch (Exception e) {
int endOffset = ( lastToken != null ) ? lastToken.getEndOffset() : 0 ;
logException("cInitializerClause:createInitializerClause", e); //$NON-NLS-1$
throwBacktrack(startingOffset, endOffset, line);
throwBacktrack(startingOffset, endOffset, line, fn);
}
} catch (BacktrackException b) {
// do nothing
}
int endOffset = ( lastToken != null ) ? lastToken.getEndOffset() : 0 ;
throwBacktrack(startingOffset, endOffset, line);
throwBacktrack(startingOffset, endOffset, line, fn);
return null;
}
/**
@ -2143,7 +2148,7 @@ public abstract class Parser extends ExpressionParser implements IParser
} catch (Exception e) {
logException(
"initializerClause_1:createInitializerClause", e); //$NON-NLS-1$
throwBacktrack(t.getOffset(), last.getEndOffset(), t.getLineNumber());
throwBacktrack(t.getOffset(), last.getEndOffset(), t.getLineNumber(), last.getFilename());
return null;
}
}
@ -2173,7 +2178,7 @@ public abstract class Parser extends ExpressionParser implements IParser
constructInitializers);
} catch (Exception e) {
logException("initializerClause_2:createInitializerClause", e); //$NON-NLS-1$
throwBacktrack(startingOffset, last.getEndOffset(), last.getLineNumber());
throwBacktrack(startingOffset, last.getEndOffset(), last.getLineNumber(), last.getFilename());
return null;
}
}
@ -2181,8 +2186,11 @@ public abstract class Parser extends ExpressionParser implements IParser
// if we get this far, it means that we did not
// try this now instead
// assignmentExpression
int startingOffset = LA(1).getOffset();
int line = LA(1).getLineNumber();
IToken la = LA(1);
char [] fn = la.getFilename();
int startingOffset = la.getOffset();
int line = la.getLineNumber();
la = null;
IASTExpression assignmentExpression = assignmentExpression(scope,
CompletionKind.SINGLE_NAME_REFERENCE,
@ -2196,7 +2204,7 @@ public abstract class Parser extends ExpressionParser implements IParser
} catch (Exception e) {
logException("initializerClause_3:createInitializerClause", e); //$NON-NLS-1$
}
throwBacktrack(startingOffset, endOffset, line);
throwBacktrack(startingOffset, endOffset, line, fn);
return null;
}
@ -2293,8 +2301,11 @@ public abstract class Parser extends ExpressionParser implements IParser
throws EndOfFileException, BacktrackException {
Declarator d = null;
DeclarationWrapper sdw = owner.getDeclarationWrapper();
int startingOffset = LA(1).getOffset();
int line = LA(1).getLineNumber();
IToken la = LA(1);
int startingOffset = la.getOffset();
int line = la.getLineNumber();
char [] fn = la.getFilename();
la = null;
overallLoop : do {
d = new Declarator(owner);
@ -2335,7 +2346,7 @@ public abstract class Parser extends ExpressionParser implements IParser
int endOffset = ( lastToken != null ) ? lastToken.getEndOffset() : 0 ;
logException(
"declarator:queryIsTypeName", e); //$NON-NLS-1$
throwBacktrack(startingOffset, endOffset, line);
throwBacktrack(startingOffset, endOffset, line, newMark.getFilename());
}
} catch (BacktrackException b) {
failed = true;
@ -2382,7 +2393,7 @@ public abstract class Parser extends ExpressionParser implements IParser
default :
int endOffset = ( lastToken != null ) ? lastToken.getEndOffset() : 0 ;
if (seenParameter)
throwBacktrack(startingOffset, endOffset, line);
throwBacktrack(startingOffset, endOffset, line, fn);
parameterDeclaration(d, parameterScope);
seenParameter = true;
}
@ -2459,7 +2470,7 @@ public abstract class Parser extends ExpressionParser implements IParser
int endOffset = ( lastToken != null ) ? lastToken.getEndOffset() : 0 ;
logException(
"declarator:createExceptionSpecification", e); //$NON-NLS-1$
throwBacktrack(startingOffset, endOffset, line);
throwBacktrack(startingOffset, endOffset, line, fn);
}
}
// check for optional pure virtual
@ -2563,7 +2574,7 @@ public abstract class Parser extends ExpressionParser implements IParser
else {
int endOffset = ( lastToken != null ) ? lastToken.getEndOffset() : 0 ;
backup(mark);
throwBacktrack(mark.getOffset(), endOffset, mark.getLineNumber());
throwBacktrack(mark.getOffset(), endOffset, mark.getLineNumber(), mark.getFilename());
}
}
}
@ -2609,13 +2620,13 @@ public abstract class Parser extends ExpressionParser implements IParser
.getEndOffset() : identifier.getEndOffset()),
((identifier == null)
? mark.getLineNumber()
: identifier.getLineNumber()));
: identifier.getLineNumber()), mark.getFilename());
} catch (ASTSemanticException e) {
throwBacktrack(e.getProblem());
} catch (Exception e) {
int endOffset = ( lastToken != null ) ? lastToken.getEndOffset() : 0 ;
logException("enumSpecifier:createEnumerationSpecifier", e); //$NON-NLS-1$
throwBacktrack(mark.getOffset(), endOffset, mark.getLineNumber());
throwBacktrack(mark.getOffset(), endOffset, mark.getLineNumber(), mark.getFilename());
}
handleEnumeration( enumeration );
consume(IToken.tLBRACE);
@ -2625,7 +2636,7 @@ public abstract class Parser extends ExpressionParser implements IParser
enumeratorIdentifier = identifier();
} else {
IToken la = LA(1);
throwBacktrack(la.getOffset(), la.getEndOffset(), la.getLineNumber());
throwBacktrack(la.getOffset(), la.getEndOffset(), la.getLineNumber(), la.getFilename());
}
IASTExpression initialValue = null;
if (LT(1) == IToken.tASSIGN) {
@ -2645,14 +2656,14 @@ public abstract class Parser extends ExpressionParser implements IParser
enumeratorIdentifier.getEndOffset(),
enumeratorIdentifier.getLineNumber(), lastToken
.getEndOffset(), lastToken
.getLineNumber(), initialValue);
.getLineNumber(), initialValue, lastToken.getFilename());
endEnumerator(enumerator);
} catch (ASTSemanticException e1) {
throwBacktrack(e1.getProblem());
} catch (Exception e) {
int endOffset = ( lastToken != null ) ? lastToken.getEndOffset() : 0 ;
logException("enumSpecifier:addEnumerator", e); //$NON-NLS-1$
throwBacktrack(mark.getOffset(), endOffset, mark.getLineNumber());
throwBacktrack(mark.getOffset(), endOffset, mark.getLineNumber(), mark.getFilename());
}
break;
}
@ -2663,7 +2674,7 @@ public abstract class Parser extends ExpressionParser implements IParser
enumerator.freeReferences(astFactory
.getReferenceManager());
int endOffset = ( lastToken != null ) ? lastToken.getEndOffset() : 0 ;
throwBacktrack(mark.getOffset(), endOffset, mark.getLineNumber());
throwBacktrack(mark.getOffset(), endOffset, mark.getLineNumber(), mark.getFilename());
}
try {
enumerator = astFactory.addEnumerator(enumeration,
@ -2674,14 +2685,14 @@ public abstract class Parser extends ExpressionParser implements IParser
enumeratorIdentifier.getEndOffset(),
enumeratorIdentifier.getLineNumber(), lastToken
.getEndOffset(), lastToken.getLineNumber(),
initialValue);
initialValue, lastToken.getFilename());
endEnumerator(enumerator);
} catch (ASTSemanticException e1) {
throwBacktrack(e1.getProblem());
} catch (Exception e) {
int endOffset = ( lastToken != null ) ? lastToken.getEndOffset() : 0 ;
logException("enumSpecifier:addEnumerator", e); //$NON-NLS-1$
throwBacktrack(mark.getOffset(), endOffset, mark.getLineNumber());
throwBacktrack(mark.getOffset(), endOffset, mark.getLineNumber(), mark.getFilename());
}
consume(IToken.tCOMMA);
}
@ -2695,7 +2706,7 @@ public abstract class Parser extends ExpressionParser implements IParser
// enumSpecifierAbort
int endOffset = ( lastToken != null ) ? lastToken.getEndOffset() : 0 ;
backup(mark);
throwBacktrack(mark.getOffset(), endOffset, mark.getLineNumber());
throwBacktrack(mark.getOffset(), endOffset, mark.getLineNumber(), mark.getFilename());
}
}
/**
@ -2738,7 +2749,7 @@ public abstract class Parser extends ExpressionParser implements IParser
completionKind = CompletionKind.UNION_REFERENCE;
break;
default :
throwBacktrack(mark.getOffset(), mark.getEndOffset(), mark.getLineNumber());
throwBacktrack(mark.getOffset(), mark.getEndOffset(), mark.getLineNumber(), mark.getFilename());
}
ITokenDuple duple = null;
@ -2752,7 +2763,7 @@ public abstract class Parser extends ExpressionParser implements IParser
if (LT(1) != IToken.tCOLON && LT(1) != IToken.tLBRACE) {
IToken errorPoint = LA(1);
backup(mark);
throwBacktrack(errorPoint.getOffset(), errorPoint.getEndOffset(), errorPoint.getLineNumber());
throwBacktrack(errorPoint.getOffset(), errorPoint.getEndOffset(), errorPoint.getLineNumber(), errorPoint.getFilename());
}
IASTClassSpecifier astClassSpecifier = null;
@ -2764,13 +2775,13 @@ public abstract class Parser extends ExpressionParser implements IParser
duple == null ? classKey.getEndOffset() : duple
.getFirstToken().getEndOffset(), duple == null
? classKey.getLineNumber()
: duple.getFirstToken().getLineNumber());
: duple.getFirstToken().getLineNumber(), classKey.getFilename());
} catch (ASTSemanticException e) {
throwBacktrack(e.getProblem());
} catch (Exception e) {
int endOffset = ( lastToken != null ) ? lastToken.getEndOffset() : 0 ;
logException("classSpecifier:createClassSpecifier", e); //$NON-NLS-1$
throwBacktrack(mark.getOffset(), endOffset, mark.getLineNumber());
throwBacktrack(mark.getOffset(), endOffset, mark.getLineNumber(), mark.getFilename());
}
sdw.setTypeSpecifier(astClassSpecifier);
// base clause
@ -2830,7 +2841,7 @@ public abstract class Parser extends ExpressionParser implements IParser
astFactory.signalEndOfClassSpecifier(astClassSpecifier);
} catch (Exception e1) {
logException("classSpecifier:signalEndOfClassSpecifier", e1); //$NON-NLS-1$
throwBacktrack(lt.getOffset(), lt.getEndOffset(), lt.getLineNumber());
throwBacktrack(lt.getOffset(), lt.getEndOffset(), lt.getLineNumber(), lt.getFilename());
}
astClassSpecifier.exitScope(requestor, astFactory
@ -2855,9 +2866,13 @@ public abstract class Parser extends ExpressionParser implements IParser
IASTClassSpecifier astClassSpec)
throws EndOfFileException, BacktrackException
{
int startingOffset = consume(IToken.tCOLON).getOffset();
int line = LA(1).getLineNumber();
IToken la = LA(1);
char [] fn = la.getFilename();
int startingOffset = la.getOffset();
int line = la.getLineNumber();
la = null;
consume(IToken.tCOLON);
setCompletionValues(astClassSpec.getOwnerScope(), CompletionKind.CLASS_REFERENCE, KeywordSetKey.BASE_SPECIFIER );
boolean isVirtual = false;
ASTAccessVisibility visibility = ASTAccessVisibility.PUBLIC;
@ -2942,7 +2957,7 @@ public abstract class Parser extends ExpressionParser implements IParser
{
int endOffset = ( lastToken != null ) ? lastToken.getEndOffset() : 0 ;
logException( "baseSpecifier_2::addBaseSpecifier", e ); //$NON-NLS-1$
throwBacktrack( startingOffset, endOffset, line );
throwBacktrack( startingOffset, endOffset, line, fn );
}
}
@ -3148,7 +3163,7 @@ public abstract class Parser extends ExpressionParser implements IParser
if (LT(1) != IToken.t_catch)
{
IToken la = LA(1);
throwBacktrack(la.getOffset(), la.getEndOffset(), la.getLineNumber()); // error, need at least one of these
throwBacktrack(la.getOffset(), la.getEndOffset(), la.getLineNumber(), la.getFilename()); // error, need at least one of these
}
while (LT(1) == IToken.t_catch) {
consume(IToken.t_catch);
@ -3182,7 +3197,7 @@ public abstract class Parser extends ExpressionParser implements IParser
} catch (Exception e) {
logException("singleStatementScope:createNewCodeBlock", e); //$NON-NLS-1$
IToken la = LA(1);
throwBacktrack(la.getOffset(), la.getEndOffset(), la.getLineNumber());
throwBacktrack(la.getOffset(), la.getEndOffset(), la.getLineNumber(), la.getFilename());
return;
}
newScope.enterScope(requestor, astFactory.getReferenceManager());
@ -3235,7 +3250,9 @@ public abstract class Parser extends ExpressionParser implements IParser
*/
protected void compoundStatement(IASTScope scope, boolean createNewScope)
throws EndOfFileException, BacktrackException {
int line = LA(1).getLineNumber();
IToken la = LA(1);
int line = la.getLineNumber();
char [] fn = la.getFilename();
int startingOffset = consume(IToken.tLBRACE).getOffset();
IASTCodeScope newScope = null;
@ -3245,7 +3262,7 @@ public abstract class Parser extends ExpressionParser implements IParser
} catch (Exception e) {
int endOffset = ( lastToken == null ) ? 0 : lastToken.getEndOffset();
logException("compoundStatement:createNewCodeBlock", e); //$NON-NLS-1$
throwBacktrack(startingOffset, endOffset, line);
throwBacktrack(startingOffset, endOffset, line, fn);
}
newScope.enterScope(requestor, astFactory.getReferenceManager());
}
@ -3354,14 +3371,11 @@ public abstract class Parser extends ExpressionParser implements IParser
protected void endDeclaration(IASTDeclaration declaration)
throws EndOfFileException {
cleanupLastToken();
if (declaration instanceof IASTOffsetableNamedElement)
handleOffsetableNamedElement((IASTOffsetableNamedElement) declaration);
}
protected void endEnumerator(IASTEnumerator enumerator)
throws EndOfFileException {
cleanupLastToken();
handleOffsetableNamedElement(enumerator);
}
/**
@ -3381,18 +3395,12 @@ public abstract class Parser extends ExpressionParser implements IParser
protected void handleClassSpecifier(IASTClassSpecifier classSpecifier)
throws EndOfFileException {
cleanupLastToken();
handleOffsetableNamedElement(classSpecifier);
}
protected void handleEnumeration(IASTEnumerationSpecifier enumeration) throws EndOfFileException {
cleanupLastToken();
handleOffsetableNamedElement( enumeration );
} /**
* @param expression
*/
protected void handleOffsetableNamedElement(IASTOffsetableNamedElement node) {
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.IParser#cancel()
*/

View file

@ -71,7 +71,7 @@ public class QuickParser extends Parser {
* @see org.eclipse.cdt.internal.core.parser.ExpressionParser#setupASTFactory(org.eclipse.cdt.core.parser.IScanner, org.eclipse.cdt.core.parser.ParserLanguage)
*/
protected void setupASTFactory(IScanner scanner, ParserLanguage language) {
astFactory = ParserFactory.createASTFactory( this, ParserMode.QUICK_PARSE, language);
astFactory = ParserFactory.createASTFactory( ParserMode.QUICK_PARSE, language);
scanner.setASTFactory(astFactory);
astFactory.setLogger(log);
}

View file

@ -11,9 +11,7 @@
package org.eclipse.cdt.internal.core.parser;
import java.util.Arrays;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
import org.eclipse.cdt.core.parser.EndOfFileException;
import org.eclipse.cdt.core.parser.IParserLogService;
@ -30,11 +28,10 @@ import org.eclipse.cdt.core.parser.ast.IASTDeclaration;
import org.eclipse.cdt.core.parser.ast.IASTEnumerationSpecifier;
import org.eclipse.cdt.core.parser.ast.IASTEnumerator;
import org.eclipse.cdt.core.parser.ast.IASTExpression;
import org.eclipse.cdt.core.parser.ast.IASTFunction;
import org.eclipse.cdt.core.parser.ast.IASTInitializerClause;
import org.eclipse.cdt.core.parser.ast.IASTNode;
import org.eclipse.cdt.core.parser.ast.IASTOffsetableElement;
import org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement;
import org.eclipse.cdt.core.parser.ast.IASTParameterDeclaration;
import org.eclipse.cdt.core.parser.ast.IASTQualifiedNameElement;
import org.eclipse.cdt.core.parser.ast.IASTScope;
import org.eclipse.cdt.core.parser.ast.IASTVariable;
@ -56,8 +53,6 @@ public class SelectionParser extends ContextualParser {
private ITokenDuple greaterContextDuple = null;
private boolean pastPointOfSelection = false;
private IASTNode contextNode = null;
private static final int DEFAULT_MAP_SIZE = 512;
private static final float DEFAULT_FLOAT_SIZE = 0.75f;
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.Parser#handleNewToken(org.eclipse.cdt.core.parser.IToken)
@ -169,20 +164,7 @@ public class SelectionParser extends ContextualParser {
IASTNode node = lookupNode(finalDuple);
if( node == null ) return null;
if( !(node instanceof IASTOffsetableNamedElement )) return null;
Integer lookupResult = ((Integer)nodeTable.get(node));
int indexValue = ( lookupResult != null ) ? lookupResult.intValue() : -1;
if( indexValue == -1 && node instanceof IASTParameterDeclaration )
{
try {
IASTFunction f = ((IASTParameterDeclaration)node).getOwnerFunctionDeclaration();
lookupResult = ((Integer)nodeTable.get(f));
indexValue = ( lookupResult != null ) ? lookupResult.intValue() : -1;
} catch (ASTNotImplementedException e) {
}
}
return new SelectionParseResult( (IASTOffsetableNamedElement) node, getFilenameForIndex(indexValue) );
return new SelectionParseResult( (IASTOffsetableNamedElement) node, new String( ((IASTOffsetableElement)node).getFilename() ));
}
@ -295,7 +277,6 @@ public class SelectionParser extends ContextualParser {
else
{
contextNode = declaration;
handleOffsetableNamedElement((IASTOffsetableNamedElement) declaration);
throw new EndOfFileException();
}
}
@ -313,15 +294,7 @@ public class SelectionParser extends ContextualParser {
}
}
protected Map nodeTable = new Hashtable( DEFAULT_MAP_SIZE, DEFAULT_FLOAT_SIZE );
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.Parser#handleNode(org.eclipse.cdt.core.parser.ast.IASTNode)
*/
protected void handleOffsetableNamedElement(IASTOffsetableNamedElement node) {
if( node != null )
nodeTable.put( node, new Integer( getCurrentFileIndex()) );
}
public static class SelectionParseResult implements ISelectionParseResult
{
@ -359,7 +332,6 @@ public class SelectionParser extends ContextualParser {
else
{
contextNode = enumerator;
handleOffsetableNamedElement(enumerator);
throw new EndOfFileException();
}
}
@ -373,7 +345,6 @@ public class SelectionParser extends ContextualParser {
else
{
contextNode = classSpecifier;
handleOffsetableNamedElement( classSpecifier );
throw new EndOfFileException();
}
}
@ -384,7 +355,6 @@ public class SelectionParser extends ContextualParser {
else
{
contextNode = enumeration;
handleOffsetableNamedElement( enumeration );
throw new EndOfFileException();
}
}

View file

@ -77,7 +77,7 @@ public class StructuralParser extends Parser implements IParser {
* @see org.eclipse.cdt.internal.core.parser.ExpressionParser#setupASTFactory(org.eclipse.cdt.core.parser.IScanner, org.eclipse.cdt.core.parser.ParserLanguage)
*/
protected void setupASTFactory(IScanner scanner, ParserLanguage language) {
astFactory = ParserFactory.createASTFactory( this, ParserMode.COMPLETE_PARSE, language);
astFactory = ParserFactory.createASTFactory( ParserMode.COMPLETE_PARSE, language);
scanner.setASTFactory(astFactory);
astFactory.setLogger(log);
}

View file

@ -20,7 +20,7 @@ import org.eclipse.cdt.core.parser.ast.IReferenceManager;
*/
public class ASTInclusion implements IASTInclusion {
public ASTInclusion( String name, String fileName, boolean local, int startingOffset, int startLine, int nameOffset, int nameEndOffset, int nameLine, int endOffset, int endLine )
public ASTInclusion( String name, String fileName, boolean local, int startingOffset, int startLine, int nameOffset, int nameEndOffset, int nameLine, int endOffset, int endLine, char [] fn )
{
this.name = name;
this.fileName = fileName;
@ -29,6 +29,7 @@ public class ASTInclusion implements IASTInclusion {
setNameOffset(nameOffset);
setNameEndOffsetAndLineNumber(nameEndOffset, nameLine);
setEndingOffsetAndLineNumber(endOffset, endLine);
this.filename = fn;
}
private int nameEndOffset;
@ -179,6 +180,7 @@ public class ASTInclusion implements IASTInclusion {
}
private int fileIndex;
private final char[] filename;
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getFileIndex()
*/
@ -192,4 +194,11 @@ public class ASTInclusion implements IASTInclusion {
public void setFileIndex(int index) {
fileIndex = index;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getFilename()
*/
public char[] getFilename() {
return filename;
}
}

View file

@ -26,8 +26,9 @@ public class ASTMacro implements IASTMacro {
private int nameEndOffset = 0;
private final String name;
private final IMacroDescriptor innerMacro;
private final char[] fn;
public ASTMacro( String name, IMacroDescriptor info, int start, int startLine, int nameBeg, int nameEnd, int nameLine, int end, int endLine )
public ASTMacro( String name, IMacroDescriptor info, int start, int startLine, int nameBeg, int nameEnd, int nameLine, int end, int endLine, char[] fn )
{
this.name =name;
setStartingOffsetAndLineNumber(start, startLine);
@ -35,6 +36,7 @@ public class ASTMacro implements IASTMacro {
setNameEndOffsetAndLineNumber(nameEnd, nameLine);
setEndingOffsetAndLineNumber(end, endLine);
innerMacro = info;
this.fn = fn;
}
private int startingOffset = 0, endingOffset = 0, nameOffset = 0;
@ -202,5 +204,11 @@ public class ASTMacro implements IASTMacro {
public void setFileIndex(int index) {
fileIndex = index;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getFilename()
*/
public char[] getFilename() {
return fn;
}
}

View file

@ -44,16 +44,16 @@ public class BaseASTFactory {
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.ast.IASTFactory#createMacro(java.lang.String, int, int, int)
*/
public IASTMacro createMacro(String name, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, int endingOffset, int endingLine, IMacroDescriptor info) {
IASTMacro m = new ASTMacro( name, info, startingOffset, startingLine, nameOffset, nameEndOffset, nameLine, endingOffset, endingLine );
public IASTMacro createMacro(String name, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, int endingOffset, int endingLine, IMacroDescriptor info, char[] fn) {
IASTMacro m = new ASTMacro( name, info, startingOffset, startingLine, nameOffset, nameEndOffset, nameLine, endingOffset, endingLine, fn );
return m;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.ast.IASTFactory#createInclusion(java.lang.String, java.lang.String, boolean)
*/
public IASTInclusion createInclusion(String name, String fileName, boolean local, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, int endingOffset, int endingLine) {
IASTInclusion inclusion = new ASTInclusion( name, fileName, local, startingOffset, startingLine, nameOffset, nameEndOffset, nameLine, endingOffset, endingLine );
public IASTInclusion createInclusion(String name, String fileName, boolean local, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, int endingOffset, int endingLine, char[] fn) {
IASTInclusion inclusion = new ASTInclusion( name, fileName, local, startingOffset, startingLine, nameOffset, nameEndOffset, nameLine, endingOffset, endingLine, fn );
return inclusion;
}

View file

@ -23,14 +23,16 @@ public class ASTASMDefinition extends ASTAnonymousDeclaration implements IASTASM
{
private final String assembly;
/**
* @param filename
*
*/
public ASTASMDefinition( IContainerSymbol scope, String assembly, int first, int firstLine, int last , int lastLine )
public ASTASMDefinition( IContainerSymbol scope, String assembly, int first, int firstLine, int last , int lastLine, char[] filename )
{
super( scope );
this.assembly = assembly;
setStartingOffsetAndLineNumber(first, firstLine);
setEndingOffsetAndLineNumber(last, lastLine);
fn = filename;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTASMDefinition#getBody()
@ -66,6 +68,7 @@ public class ASTASMDefinition extends ASTAnonymousDeclaration implements IASTASM
{
}
private int startingLineNumber, startingOffset, endingLineNumber, endingOffset;
private final char[] fn;
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getStartingLine()
*/
@ -109,5 +112,11 @@ public class ASTASMDefinition extends ASTAnonymousDeclaration implements IASTASM
{
return endingOffset;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getFilename()
*/
public char[] getFilename() {
return fn;
}
}

View file

@ -32,8 +32,9 @@ public class ASTAbstractTypeSpecifierDeclaration
/**
* @param ownerScope
* @param filename
*/
public ASTAbstractTypeSpecifierDeclaration(IContainerSymbol ownerScope, IASTTypeSpecifier typeSpecifier, IASTTemplate ownerTemplate, int startingOffset, int startingLine, int endingOffset, int endingLine, boolean isFriend )
public ASTAbstractTypeSpecifierDeclaration(IContainerSymbol ownerScope, IASTTypeSpecifier typeSpecifier, IASTTemplate ownerTemplate, int startingOffset, int startingLine, int endingOffset, int endingLine, boolean isFriend, char[] filename )
{
super(ownerScope);
this.typeSpec = typeSpecifier;
@ -41,6 +42,7 @@ public class ASTAbstractTypeSpecifierDeclaration
this.isFriendDeclaration = isFriend;
setStartingOffsetAndLineNumber(startingOffset, startingLine);
setEndingOffsetAndLineNumber(endingOffset, endingLine);
fn = filename;
}
/* (non-Javadoc)
@ -100,6 +102,7 @@ public class ASTAbstractTypeSpecifierDeclaration
private int startingLineNumber, startingOffset, endingLineNumber, endingOffset;
private final char[] fn;
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getStartingLine()
*/
@ -143,4 +146,11 @@ public class ASTAbstractTypeSpecifierDeclaration
{
return endingOffset;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getFilename()
*/
public char[] getFilename() {
return fn;
}
}

View file

@ -93,7 +93,7 @@ public class ASTClassSpecifier extends ASTScope implements IASTClassSpecifier
/**
* @param symbol
*/
public ASTClassSpecifier(ISymbol symbol, ASTClassKind kind, ClassNameType type, ASTAccessVisibility access, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, List references )
public ASTClassSpecifier(ISymbol symbol, ASTClassKind kind, ClassNameType type, ASTAccessVisibility access, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, List references, char [] filename )
{
super(symbol);
classKind = kind;
@ -104,6 +104,7 @@ public class ASTClassSpecifier extends ASTScope implements IASTClassSpecifier
setNameEndOffsetAndLineNumber(nameEndOffset, nameLine);
qualifiedName = new ASTQualifiedNamedElement( getOwnerScope(), symbol.getName() );
this.references = references;
fn = filename;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTClassSpecifier#getClassNameType()
@ -275,6 +276,7 @@ public class ASTClassSpecifier extends ASTScope implements IASTClassSpecifier
private int startingLineNumber, startingOffset, endingLineNumber, endingOffset, nameStartOffset, nameEndOffset, nameLineNumber;
private final char[] fn;
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getStartingLine()
*/
@ -356,4 +358,10 @@ public class ASTClassSpecifier extends ASTScope implements IASTClassSpecifier
nameEndOffset = offset;
nameLineNumber = lineNumber;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getFilename()
*/
public char[] getFilename() {
return fn;
}
}

View file

@ -35,8 +35,9 @@ public class ASTElaboratedTypeSpecifier extends ASTSymbol implements IASTElabora
* @param kind
* @param startingOffset
* @param endOffset
* @param filename
*/
public ASTElaboratedTypeSpecifier(ISymbol checkSymbol, ASTClassKind kind, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, int endOffset, int endingLine, List references, boolean isDecl )
public ASTElaboratedTypeSpecifier(ISymbol checkSymbol, ASTClassKind kind, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, int endOffset, int endingLine, List references, boolean isDecl, char[] filename )
{
super( checkSymbol );
this.kind = kind;
@ -47,6 +48,7 @@ public class ASTElaboratedTypeSpecifier extends ASTSymbol implements IASTElabora
qualifiedName = new ASTQualifiedNamedElement( getOwnerScope(), checkSymbol.getName() );
isForwardDeclaration = isDecl;
this.references = references;
fn = filename;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier#getName()
@ -212,4 +214,12 @@ public class ASTElaboratedTypeSpecifier extends ASTSymbol implements IASTElabora
nameEndOffset = offset;
nameLineNumber = lineNumber;
}
private final char [] fn;
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getFilename()
*/
public char[] getFilename() {
return fn;
}
}

View file

@ -31,16 +31,26 @@ public class ASTEnumerationSpecifier
implements IASTEnumerationSpecifier
{
private final ASTQualifiedNamedElement qualifiedName;
private final char [] fn;
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getFilename()
*/
public char[] getFilename() {
return fn;
}
/**
* @param symbol
* @param filename
*/
public ASTEnumerationSpecifier(ISymbol symbol, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine )
public ASTEnumerationSpecifier(ISymbol symbol, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, char[] filename )
{
super(symbol);
setStartingOffsetAndLineNumber(startingOffset, startingLine);
setNameOffset( nameOffset );
setNameEndOffsetAndLineNumber(nameEndOffset, nameLine);
qualifiedName = new ASTQualifiedNamedElement( getOwnerScope(), symbol.getName() );
fn = filename;
}

View file

@ -26,13 +26,22 @@ public class ASTEnumerator extends ASTSymbol implements IASTEnumerator
private final IASTExpression initialValue;
private final IASTEnumerationSpecifier owner;
private final char [] fn;
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getFilename()
*/
public char[] getFilename() {
return fn;
}
/**
* @param enumeratorSymbol
* @param startingOffset
* @param endingOffset
* @param initialValue
* @param filename
*/
public ASTEnumerator(ISymbol enumeratorSymbol, IASTEnumerationSpecifier owner, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, int endingOffset, int endingLine, IASTExpression initialValue)
public ASTEnumerator(ISymbol enumeratorSymbol, IASTEnumerationSpecifier owner, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, int endingOffset, int endingLine, IASTExpression initialValue, char[] filename)
{
super( enumeratorSymbol );
setStartingOffsetAndLineNumber(startingOffset, startingLine);
@ -41,6 +50,7 @@ public class ASTEnumerator extends ASTSymbol implements IASTEnumerator
setEndingOffsetAndLineNumber( endingOffset, endingLine );
this.initialValue = initialValue;
this.owner = owner;
fn = filename;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTEnumerator#getOwnerEnumerationSpecifier()

View file

@ -37,10 +37,11 @@ public class ASTField extends ASTVariable implements IASTField
* @param nameOffset
* @param references
* @param visibility
* @param filename
*/
public ASTField(ISymbol newSymbol, IASTAbstractDeclaration abstractDeclaration, IASTInitializerClause initializerClause, IASTExpression bitfieldExpression, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, List references, boolean previouslyDeclared, IASTExpression constructorExpression, ASTAccessVisibility visibility)
public ASTField(ISymbol newSymbol, IASTAbstractDeclaration abstractDeclaration, IASTInitializerClause initializerClause, IASTExpression bitfieldExpression, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, List references, boolean previouslyDeclared, IASTExpression constructorExpression, ASTAccessVisibility visibility, char [] filename)
{
super( newSymbol, abstractDeclaration, initializerClause, bitfieldExpression, startingOffset, startingLine, nameOffset, nameEndOffset, nameLine, references, constructorExpression, previouslyDeclared );
super( newSymbol, abstractDeclaration, initializerClause, bitfieldExpression, startingOffset, startingLine, nameOffset, nameEndOffset, nameLine, references, constructorExpression, previouslyDeclared, filename );
this.visibility = visibility;
}

View file

@ -44,6 +44,14 @@ public class ASTFunction extends ASTScope implements IASTFunction
private final List parameters;
protected List references;
private List declarations = null;
private final char [] fn;
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getFilename()
*/
public char[] getFilename() {
return fn;
}
/**
* @param symbol
* @param parameters
@ -53,8 +61,9 @@ public class ASTFunction extends ASTScope implements IASTFunction
* @param nameOffset
* @param ownerTemplate
* @param references
* @param filename
*/
public ASTFunction(IParameterizedSymbol symbol, int nameEndOffset, List parameters, IASTAbstractDeclaration returnType, IASTExceptionSpecification exception, int startOffset, int startingLine, int nameOffset, int nameLine, IASTTemplate ownerTemplate, List references, boolean previouslyDeclared, boolean hasFunctionTryBlock, boolean isFriend )
public ASTFunction(IParameterizedSymbol symbol, int nameEndOffset, List parameters, IASTAbstractDeclaration returnType, IASTExceptionSpecification exception, int startOffset, int startingLine, int nameOffset, int nameLine, IASTTemplate ownerTemplate, List references, boolean previouslyDeclared, boolean hasFunctionTryBlock, boolean isFriend, char[] filename )
{
super( symbol );
this.parameters = parameters;
@ -69,6 +78,7 @@ public class ASTFunction extends ASTScope implements IASTFunction
this.previouslyDeclared =previouslyDeclared;
this.hasFunctionTryBlock = hasFunctionTryBlock;
this.isFriendDeclaration = isFriend;
fn = filename;
}

View file

@ -29,15 +29,24 @@ public class ASTLinkageSpecification extends ASTAnonymousDeclaration implements
{
private List declarations = new ArrayList();
private final String linkageString;
private final char [] fn;
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getFilename()
*/
public char[] getFilename() {
return fn;
}
/**
* @param filename
*
*/
public ASTLinkageSpecification( IContainerSymbol scope, String linkageString, int startingOffset, int startingLine )
public ASTLinkageSpecification( IContainerSymbol scope, String linkageString, int startingOffset, int startingLine, char[] filename )
{
super( scope );
this.linkageString = linkageString;
setStartingOffsetAndLineNumber(startingOffset, startingLine);
fn = filename;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTLinkageSpecification#getLinkageString()

View file

@ -53,9 +53,10 @@ public class ASTMethod extends ASTFunction implements IASTMethod
* @param nameOffset
* @param ownerTemplate
* @param references
* @param filename
*/
public ASTMethod(IParameterizedSymbol symbol, List parameters, IASTAbstractDeclaration returnType, IASTExceptionSpecification exception, int startOffset, int startLine, int nameOffset, int nameEndOffset, int nameLine, IASTTemplate ownerTemplate,
List references, boolean previouslyDeclared, boolean isConstructor, boolean isDestructor, boolean isPureVirtual, ASTAccessVisibility visibility, List constructorChain, boolean hasFunctionTryBlock, boolean isFriend )
List references, boolean previouslyDeclared, boolean isConstructor, boolean isDestructor, boolean isPureVirtual, ASTAccessVisibility visibility, List constructorChain, boolean hasFunctionTryBlock, boolean isFriend, char [] filename )
{
super(
symbol,
@ -66,7 +67,7 @@ public class ASTMethod extends ASTFunction implements IASTMethod
startOffset,
startLine,
nameOffset,
nameLine, ownerTemplate, references, previouslyDeclared, hasFunctionTryBlock, isFriend );
nameLine, ownerTemplate, references, previouslyDeclared, hasFunctionTryBlock, isFriend, filename );
this.visibility = visibility;
this.isConstructor = isConstructor;
this.isDestructor = isDestructor;

View file

@ -28,14 +28,23 @@ public class ASTNamespaceAlias extends ASTSymbol implements IASTNamespaceAlias
private final String alias;
private final IASTNamespaceDefinition namespace;
private List references;
private final char [] fn;
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getFilename()
*/
public char[] getFilename() {
return fn;
}
/**
* @param scope
* @param symbol
* @param startingOffset
* @param nameOffset
* @param endOffset
* @param filename
*/
public ASTNamespaceAlias(ISymbol s, String alias, IASTNamespaceDefinition namespaceDefinition, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, int endOffset, int endingLine, List references)
public ASTNamespaceAlias(ISymbol s, String alias, IASTNamespaceDefinition namespaceDefinition, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, int endOffset, int endingLine, List references, char[] filename)
{
super( s );
this.alias = alias;
@ -45,6 +54,7 @@ public class ASTNamespaceAlias extends ASTSymbol implements IASTNamespaceAlias
setNameOffset(nameOffset);
setNameEndOffsetAndLineNumber(nameEndOffset, nameEndOffset);
this.references = references;
fn = filename;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTNamespaceAlias#getAlias()

View file

@ -31,19 +31,28 @@ public class ASTNamespaceDefinition
{
private final ASTQualifiedNamedElement qualifiedName;
private List declarations = null;
private final char [] fn;
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getFilename()
*/
public char[] getFilename() {
return fn;
}
/**
* @param namespaceSymbol
* @param startingOffset
* @param nameOffset
* @param filename
*/
public ASTNamespaceDefinition(ISymbol namespaceSymbol, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine )
public ASTNamespaceDefinition(ISymbol namespaceSymbol, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, char[] filename )
{
super( namespaceSymbol );
setStartingOffsetAndLineNumber( startingOffset, startingLine );
setNameOffset( nameOffset );
setNameEndOffsetAndLineNumber( nameEndOffset, nameLine );
qualifiedName = new ASTQualifiedNamedElement( getOwnerScope(), namespaceSymbol.getName() );
fn= filename;
}
/* (non-Javadoc)

View file

@ -34,7 +34,14 @@ public class ASTParameterDeclaration extends ASTSymbol implements IASTParameterD
private final ASTAbstractDeclaration abstractDeclaration;
private final String parameterName;
private final IASTInitializerClause initializerClause;
private final char [] fn;
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getFilename()
*/
public char[] getFilename() {
return fn;
}
/**
* @param isConst
* @param typeSpecifier
@ -42,8 +49,9 @@ public class ASTParameterDeclaration extends ASTSymbol implements IASTParameterD
* @param arrayModifiers
* @param parameterName
* @param initializerClause
* @param filename
*/
public ASTParameterDeclaration(ISymbol symbol, boolean isConst, boolean isVolatile, IASTTypeSpecifier typeSpecifier, List pointerOperators, List arrayModifiers, List parameters, ASTPointerOperator pointerOp, String parameterName, IASTInitializerClause initializerClause, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, int endingOffset, int endingLine )
public ASTParameterDeclaration(ISymbol symbol, boolean isConst, boolean isVolatile, IASTTypeSpecifier typeSpecifier, List pointerOperators, List arrayModifiers, List parameters, ASTPointerOperator pointerOp, String parameterName, IASTInitializerClause initializerClause, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, int endingOffset, int endingLine, char[] filename )
{
super( symbol );
abstractDeclaration = new ASTAbstractDeclaration( isConst, isVolatile, typeSpecifier, pointerOperators, arrayModifiers, parameters, pointerOp );
@ -53,6 +61,7 @@ public class ASTParameterDeclaration extends ASTSymbol implements IASTParameterD
setEndingOffsetAndLineNumber(endingOffset, endingLine);
setNameOffset(nameOffset);
setNameEndOffsetAndLineNumber( nameEndOffset, nameLine );
fn = filename;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTParameterDeclaration#getName()

View file

@ -38,14 +38,23 @@ public class ASTTemplateDeclaration extends ASTSymbol implements IASTTemplateDec
private ISymbol owned = null;
private IASTScope ownerScope;
private ITemplateFactory factory;
private final char [] fn;
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getFilename()
*/
public char[] getFilename() {
return fn;
}
private ITemplateSymbol getTemplateSymbol(){
return (ITemplateSymbol) (( getSymbol() instanceof ITemplateSymbol ) ? getSymbol() : null);
}
/**
* @param filename
*
*/
public ASTTemplateDeclaration( ITemplateSymbol template, IASTScope scope, List parameters )
public ASTTemplateDeclaration( ITemplateSymbol template, IASTScope scope, List parameters, char[] filename )
{
super( template );
@ -67,6 +76,7 @@ public class ASTTemplateDeclaration extends ASTSymbol implements IASTTemplateDec
templateParameters = ( parameters != null ) ? parameters : new LinkedList();
ownerScope = scope;
fn = filename;
}
public IASTScope getOwnerScope(){

View file

@ -36,9 +36,16 @@ public class ASTTemplateInstantiation extends ASTSymbol implements IASTTemplateI
private IASTTemplateDeclaration instantiatedTemplate;
private ISymbol instance;
private final char [] fn;
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getFilename()
*/
public char[] getFilename() {
return fn;
}
public ASTTemplateInstantiation( IASTScope scope ){
public ASTTemplateInstantiation( IASTScope scope, char[] filename ){
super( null );
IContainerSymbol container = ((ASTScope)scope).getContainerSymbol();
@ -49,6 +56,7 @@ public class ASTTemplateInstantiation extends ASTSymbol implements IASTTemplateI
factory.pushTemplate( null );
ownerScope = scope;
fn = filename;
}
public IASTTemplateDeclaration getInstantiatedTemplate(){

View file

@ -39,15 +39,23 @@ public class ASTTemplateParameter extends ASTSymbol implements IASTTemplateParam
private IASTTypeId defaultValue;
private ASTParameterDeclaration parameter;
private List parms;
private final char [] fn;
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getFilename()
*/
public char[] getFilename() {
return fn;
}
/**
* @param filename
* @param symbol
* @param defaultValue2
* @param parameter2
* @param parms2
*/
public ASTTemplateParameter(ISymbol sym, IASTTypeId defVal, IASTParameterDeclaration param, List parms, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, int endingOffset, int endingLine ) {
public ASTTemplateParameter(ISymbol sym, IASTTypeId defVal, IASTParameterDeclaration param, List parms, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, int endingOffset, int endingLine, char[] filename ) {
super( sym );
symbol = sym;
defaultValue = defVal;
@ -58,6 +66,7 @@ public class ASTTemplateParameter extends ASTSymbol implements IASTTemplateParam
setEndingOffsetAndLineNumber(endingOffset, endingLine);
setNameOffset(nameOffset);
setNameEndOffsetAndLineNumber( nameEndOffset, nameLine );
fn = filename;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTTemplateParameter#getTemplateParameterKind()

View file

@ -21,10 +21,11 @@ import org.eclipse.cdt.internal.core.parser.pst.ITemplateSymbol;
public class ASTTemplateSpecialization extends ASTTemplateDeclaration implements IASTTemplateSpecialization
{
/**
* @param filename
*
*/
public ASTTemplateSpecialization( ITemplateSymbol template, IASTScope scope )
public ASTTemplateSpecialization( ITemplateSymbol template, IASTScope scope, char []filename )
{
super(template, scope, null);
super(template, scope, null, filename);
}
}

View file

@ -32,6 +32,13 @@ public class ASTTypedef extends ASTSymbol implements IASTTypedefDeclaration
private final IASTAbstractDeclaration mapping;
private final ASTQualifiedNamedElement qualifiedName;
private List references;
private final char [] fn;
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getFilename()
*/
public char[] getFilename() {
return fn;
}
/**
* @param newSymbol
@ -39,8 +46,9 @@ public class ASTTypedef extends ASTSymbol implements IASTTypedefDeclaration
* @param startingOffset
* @param nameOffset
* @param references
* @param filename
*/
public ASTTypedef(ISymbol newSymbol, IASTAbstractDeclaration mapping, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, List references)
public ASTTypedef(ISymbol newSymbol, IASTAbstractDeclaration mapping, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, List references, char[] filename)
{
super( newSymbol );
this.mapping = mapping;
@ -49,6 +57,7 @@ public class ASTTypedef extends ASTSymbol implements IASTTypedefDeclaration
setStartingOffsetAndLineNumber(startingOffset, startingLine);
setNameOffset(nameOffset);
setNameEndOffsetAndLineNumber( nameEndOffset, nameLine );
fn = filename;
}
/* (non-Javadoc)

View file

@ -31,11 +31,19 @@ public class ASTUsingDeclaration extends ASTNode implements IASTUsingDeclaration
private final List declarations = new ArrayList();
private List references;
private String name;
private final char [] fn;
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getFilename()
*/
public char[] getFilename() {
return fn;
}
/**
* @param filename
*
*/
public ASTUsingDeclaration( IASTScope ownerScope, String name, List declarations, boolean isTypeName, int startingOffset, int startingLine, int endingOffset, int endingLine, List references )
public ASTUsingDeclaration( IASTScope ownerScope, String name, List declarations, boolean isTypeName, int startingOffset, int startingLine, int endingOffset, int endingLine, List references, char[] filename )
{
this.ownerScope = ownerScope;
this.isTypeName = isTypeName;
@ -44,6 +52,7 @@ public class ASTUsingDeclaration extends ASTNode implements IASTUsingDeclaration
setStartingOffsetAndLineNumber(startingOffset, startingLine);
setEndingOffsetAndLineNumber(endingOffset, endingLine);
this.references = references;
fn = filename;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTUsingDeclaration#isTypename()

View file

@ -27,13 +27,22 @@ public class ASTUsingDirective extends ASTAnonymousDeclaration implements IASTUs
{
private final IUsingDirectiveSymbol using;
private List references;
private final char [] fn;
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getFilename()
*/
public char[] getFilename() {
return fn;
}
/**
* @param namespaceDefinition
* @param startingOffset
* @param endingOffset
* @param filename
*/
//public ASTUsingDirective(IContainerSymbol ownerSymbol, IASTNamespaceDefinition namespaceDefinition, int startingOffset, int endingOffset, List references )
public ASTUsingDirective(IContainerSymbol ownerSymbol, IUsingDirectiveSymbol usingDirective, int startingOffset, int startingLine, int endingOffset, int endingLine, List references )
public ASTUsingDirective(IContainerSymbol ownerSymbol, IUsingDirectiveSymbol usingDirective, int startingOffset, int startingLine, int endingOffset, int endingLine, List references, char[] filename )
{
super( ownerSymbol );
//namespace = namespaceDefinition;
@ -41,6 +50,7 @@ public class ASTUsingDirective extends ASTAnonymousDeclaration implements IASTUs
setStartingOffsetAndLineNumber(startingOffset, startingLine);
setEndingOffsetAndLineNumber(endingOffset, endingLine);
this.references = references;
fn = filename;
}
/* (non-Javadoc)

View file

@ -35,6 +35,14 @@ public class ASTVariable extends ASTSymbol implements IASTVariable
private final IASTInitializerClause initializerClause;
private final IASTAbstractDeclaration abstractDeclaration;
protected List references;
private final char [] fn;
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getFilename()
*/
public char[] getFilename() {
return fn;
}
/**
* @param newSymbol
* @param abstractDeclaration
@ -43,8 +51,9 @@ public class ASTVariable extends ASTSymbol implements IASTVariable
* @param startingOffset
* @param nameOffset
* @param references
* @param filename
*/
public ASTVariable(ISymbol newSymbol, IASTAbstractDeclaration abstractDeclaration, IASTInitializerClause initializerClause, IASTExpression bitfieldExpression, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, List references, IASTExpression constructorExpression, boolean previouslyDeclared )
public ASTVariable(ISymbol newSymbol, IASTAbstractDeclaration abstractDeclaration, IASTInitializerClause initializerClause, IASTExpression bitfieldExpression, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, List references, IASTExpression constructorExpression, boolean previouslyDeclared, char[] filename )
{
super( newSymbol );
this.abstractDeclaration = abstractDeclaration;
@ -55,7 +64,8 @@ public class ASTVariable extends ASTSymbol implements IASTVariable
setNameOffset( nameOffset );
setNameEndOffsetAndLineNumber(nameEndOffset, nameLine);
this.references = references;
qualifiedName = new ASTQualifiedNamedElement( getOwnerScope(), newSymbol.getName() );
qualifiedName = new ASTQualifiedNamedElement( getOwnerScope(), newSymbol.getName() );
fn = filename;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTVariable#isAuto()

View file

@ -20,7 +20,6 @@ import java.util.Map;
import java.util.Stack;
import org.eclipse.cdt.core.parser.Enum;
import org.eclipse.cdt.core.parser.IFilenameProvider;
import org.eclipse.cdt.core.parser.IProblem;
import org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate;
import org.eclipse.cdt.core.parser.IToken;
@ -118,13 +117,13 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
protected static final String EMPTY_STRING = ""; //$NON-NLS-1$
private final static ITypeInfo.OperatorExpression SUBSCRIPT;
private final static IProblemFactory problemFactory = new ASTProblemFactory();
private final IFilenameProvider fileProvider;
private final ParserMode mode;
private final ReferenceCache cache = new ReferenceCache();
private static final int BUILTIN_TYPE_SIZE = 64;
private final Hashtable typeIdCache = new Hashtable( BUILTIN_TYPE_SIZE );
private final Hashtable simpleTypeSpecCache = new Hashtable( BUILTIN_TYPE_SIZE );
private static final int DEFAULT_QUALIFIEDNAME_REFERENCE_SIZE = 4;
private char[] filename;
static
{
@ -144,12 +143,12 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
}
}
public CompleteParseASTFactory( IFilenameProvider filenameProvider, ParserLanguage language, ParserMode mode, IASTFactoryExtension extension )
public CompleteParseASTFactory( ParserLanguage language, ParserMode mode, IASTFactoryExtension extension )
{
super(extension);
pst = new ParserSymbolTable( language, mode );
fileProvider = filenameProvider;
this.mode = mode;
filename = EMPTY_STRING.toCharArray();
}
/*
@ -492,6 +491,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
int startingLine, int endingOffset, int endingLine)
throws ASTSemanticException
{
setFilename( duple );
List references = new ArrayList();
ISymbol symbol = lookupQualifiedName(
scopeToSymbol( scope), duple, references, true );
@ -505,14 +505,21 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
handleProblem( pste.createProblemID(), duple.toString(), startingOffset, endingOffset, startingLine, true );
}
ASTUsingDirective using = new ASTUsingDirective( scopeToSymbol(scope), usingDirective, startingOffset, startingLine, endingOffset, endingLine, references );
ASTUsingDirective using = new ASTUsingDirective( scopeToSymbol(scope), usingDirective, startingOffset, startingLine, endingOffset, endingLine, references, filename );
attachSymbolExtension( usingDirective, using );
return using;
}
protected IContainerSymbol getScopeToSearchUpon(
/**
* @param duple
*/
private void setFilename(ITokenDuple duple) {
filename = ( duple == null ) ? EMPTY_STRING.toCharArray() : duple.getFilename();
}
protected IContainerSymbol getScopeToSearchUpon(
IASTScope currentScope,
IToken firstToken, Iterator iterator )
{
@ -544,6 +551,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
int startingOffset,
int startingLine, int endingOffset, int endingLine) throws ASTSemanticException
{
setFilename( name );
List references = new ArrayList();
IUsingDeclarationSymbol endResult = null;
@ -586,7 +594,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
}
ASTUsingDeclaration using = new ASTUsingDeclaration( scope, name.getLastToken().getImage(),
endResult.getReferencedSymbols(), isTypeName, startingOffset, startingLine, endingOffset, endingLine, references );
endResult.getReferencedSymbols(), isTypeName, startingOffset, startingLine, endingOffset, endingLine, references, filename );
attachSymbolExtension( endResult, using );
return using;
@ -598,9 +606,9 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
IASTScope scope,
String assembly,
int startingOffset,
int startingLine, int endingOffset, int endingLine)
int startingLine, int endingOffset, int endingLine, char[] fn)
{
return new ASTASMDefinition( scopeToSymbol(scope), assembly, startingOffset, startingLine, endingOffset, endingLine);
return new ASTASMDefinition( scopeToSymbol(scope), assembly, startingOffset, startingLine, endingOffset, endingLine, fn);
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTFactory#createNamespaceDefinition(org.eclipse.cdt.core.parser.ast.IASTScope, java.lang.String, int, int)
@ -609,9 +617,9 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
IASTScope scope,
String identifier,
int startingOffset,
int startingLine, int nameOffset, int nameEndOffset, int nameLineNumber) throws ASTSemanticException
int startingLine, int nameOffset, int nameEndOffset, int nameLineNumber, char[] fn) throws ASTSemanticException
{
//TODO - set filename
IContainerSymbol pstScope = scopeToSymbol(scope);
ISymbol namespaceSymbol = null;
@ -651,7 +659,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
}
}
ASTNamespaceDefinition namespaceDef = new ASTNamespaceDefinition( namespaceSymbol, startingOffset, startingLine, nameOffset, nameEndOffset, nameLineNumber);
ASTNamespaceDefinition namespaceDef = new ASTNamespaceDefinition( namespaceSymbol, startingOffset, startingLine, nameOffset, nameEndOffset, nameLineNumber, fn);
attachSymbolExtension( namespaceSymbol, namespaceDef, true );
return namespaceDef;
}
@ -714,9 +722,9 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
public IASTLinkageSpecification createLinkageSpecification(
IASTScope scope,
String spec,
int startingOffset, int startingLine)
int startingOffset, int startingLine, char[] fn)
{
return new ASTLinkageSpecification( scopeToSymbol( scope ), spec, startingOffset, startingLine );
return new ASTLinkageSpecification( scopeToSymbol( scope ), spec, startingOffset, startingLine, fn );
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTFactory#createClassSpecifier(org.eclipse.cdt.core.parser.ast.IASTScope, java.lang.String, org.eclipse.cdt.core.parser.ast.ASTClassKind, org.eclipse.cdt.core.parser.ast.IASTClassSpecifier.ClassNameType, org.eclipse.cdt.core.parser.ast.ASTAccessVisibility, org.eclipse.cdt.core.parser.ast.IASTTemplate, int, int)
@ -728,8 +736,9 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
ClassNameType type,
ASTAccessVisibility access,
int startingOffset,
int startingLine, int nameOffset, int nameEndOffset, int nameLine) throws ASTSemanticException
int startingLine, int nameOffset, int nameEndOffset, int nameLine, char[] fn) throws ASTSemanticException
{
setFilename( fn );
IContainerSymbol currentScopeSymbol = scopeToSymbol(scope);
ITypeInfo.eType pstType = classKindToTypeInfo(kind);
List references = new ArrayList();
@ -819,7 +828,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
addTemplateIdReferences( references, name.getTemplateIdArgLists()[i]);
name.freeReferences( cache );
}
ASTClassSpecifier classSpecifier = new ASTClassSpecifier( newSymbol, kind, type, access, startingOffset, startingLine, nameOffset, nameEndOffset, nameLine, references );
ASTClassSpecifier classSpecifier = new ASTClassSpecifier( newSymbol, kind, type, access, startingOffset, startingLine, nameOffset, nameEndOffset, nameLine, references, filename );
attachSymbolExtension(newSymbol, classSpecifier, true );
return classSpecifier;
@ -852,10 +861,10 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
protected void handleProblem( IASTScope scope, int id, String attribute ) throws ASTSemanticException
{
handleProblem( scope, id, attribute, -1, -1, -1, true );
handleProblem( scope, id, attribute, -1, -1, -1, true);
}
protected void handleProblem( int id, String attribute, int startOffset, int endOffset, int lineNumber, boolean isError) throws ASTSemanticException {
protected void handleProblem( int id, String attribute, int startOffset, int endOffset, int lineNumber, boolean isError ) throws ASTSemanticException {
handleProblem( null, id, attribute, startOffset, endOffset, lineNumber, isError );
}
@ -866,11 +875,12 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
* @param endOffset
* @param lineNumber
* @param isError TODO
* @param filename
* @throws ASTSemanticException
*/
protected void handleProblem( IASTScope scope, int id, String attribute, int startOffset, int endOffset, int lineNumber, boolean isError) throws ASTSemanticException {
protected void handleProblem( IASTScope scope, int id, String attribute, int startOffset, int endOffset, int lineNumber, boolean isError ) throws ASTSemanticException {
IProblem p = problemFactory.createProblem( id,
startOffset, endOffset, lineNumber, fileProvider.getCurrentFilename(), attribute, !isError, isError );
startOffset, endOffset, lineNumber, filename, attribute, !isError, isError );
TraceUtil.outputTrace(logService, "CompleteParseASTFactory - IProblem : ", p, null, null, null ); //$NON-NLS-1$
@ -919,6 +929,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
ASTAccessVisibility visibility,
ITokenDuple parentClassName) throws ASTSemanticException
{
setFilename( parentClassName );
IDerivableContainerSymbol classSymbol = (IDerivableContainerSymbol)scopeToSymbol( astClassSpec);
Iterator iterator = null;
List references = new ArrayList();
@ -1037,8 +1048,9 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
IASTScope scope,
String name,
int startingOffset,
int startingLine, int nameOffset, int nameEndOffset, int nameLine) throws ASTSemanticException
int startingLine, int nameOffset, int nameEndOffset, int nameLine, char[] fn) throws ASTSemanticException
{
setFilename(fn);
IContainerSymbol containerSymbol = scopeToSymbol(scope);
ITypeInfo.eType pstType = ITypeInfo.t_enumeration;
@ -1052,12 +1064,19 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
handleProblem( e.createProblemID(), name );
}
ASTEnumerationSpecifier enumSpecifier = new ASTEnumerationSpecifier( classSymbol, startingOffset, startingLine, nameOffset, nameEndOffset, nameLine );
ASTEnumerationSpecifier enumSpecifier = new ASTEnumerationSpecifier( classSymbol, startingOffset, startingLine, nameOffset, nameEndOffset, nameLine, fn );
attachSymbolExtension(classSymbol, enumSpecifier, true );
return enumSpecifier;
}
/* (non-Javadoc)
/**
* @param fn
*/
private void setFilename(char[] fn) {
filename = fn;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTFactory#addEnumerator(org.eclipse.cdt.core.parser.ast.IASTEnumerationSpecifier, java.lang.String, int, int, org.eclipse.cdt.core.parser.ast.IASTExpression)
*/
public IASTEnumerator addEnumerator(
@ -1065,8 +1084,9 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
String name,
int startingOffset,
int startingLine,
int nameOffset, int nameEndOffset, int nameLine, int endingOffset, int endLine, IASTExpression initialValue) throws ASTSemanticException
int nameOffset, int nameEndOffset, int nameLine, int endingOffset, int endLine, IASTExpression initialValue, char[] fn) throws ASTSemanticException
{
setFilename(fn);
IContainerSymbol enumerationSymbol = (IContainerSymbol)((ISymbolOwner)enumeration).getSymbol();
ISymbol enumeratorSymbol = pst.newSymbol( name, ITypeInfo.t_enumerator );
@ -1080,7 +1100,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
handleProblem( IProblem.SEMANTIC_INVALID_OVERLOAD, name, startingOffset, endingOffset, startingLine, true );
// assert false : e1;
}
ASTEnumerator enumerator = new ASTEnumerator( enumeratorSymbol, enumeration, startingOffset, startingLine, nameOffset, nameEndOffset, nameLine, endingOffset, endLine, initialValue );
ASTEnumerator enumerator = new ASTEnumerator( enumeratorSymbol, enumeration, startingOffset, startingLine, nameOffset, nameEndOffset, nameLine, endingOffset, endLine, initialValue, fn );
((ASTEnumerationSpecifier)enumeration).addEnumerator( enumerator );
attachSymbolExtension( enumeratorSymbol, enumerator, true );
return enumerator;
@ -1097,6 +1117,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
IASTTypeId typeId,
ITokenDuple idExpression, String literal, IASTNewExpressionDescriptor newDescriptor) throws ASTSemanticException
{
setFilename( idExpression );
if( idExpression != null )
{
TraceUtil.outputTrace(
@ -1917,6 +1938,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
IASTScope scope,
ITokenDuple duple, IASTExpression expressionList)
{
setFilename( duple );
List references = new ArrayList();
IContainerSymbol scopeSymbol = scopeToSymbol(scope);
@ -1966,6 +1988,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
boolean isImaginary,
boolean isGlobal, Map extensionParms ) throws ASTSemanticException
{
setFilename( typeName );
if( extension.overrideCreateSimpleTypeSpecifierMethod( kind ))
return extension.createSimpleTypeSpecifier(pst, scope, kind, typeName, isShort, isLong, isSigned, isUnsigned, isTypename, isComplex, isImaginary, isGlobal, extensionParms );
String typeNameAsString = typeName.toString();
@ -2097,6 +2120,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
boolean isExplicit,
boolean isPureVirtual, List constructorChain, boolean isFunctionDefinition, boolean hasFunctionTryBlock, boolean hasVariableArguments ) throws ASTSemanticException
{
setFilename( name );
List references = new ArrayList();
IContainerSymbol ownerScope = scopeToSymbol( scope );
@ -2200,7 +2224,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
symbol = functionDeclaration;
}
ASTFunction function = new ASTFunction( symbol, nameEndOffset, parameters, returnType, exception, startOffset, startLine, nameOffset, nameLine, ownerTemplate, references, previouslyDeclared, hasFunctionTryBlock, isFriend );
ASTFunction function = new ASTFunction( symbol, nameEndOffset, parameters, returnType, exception, startOffset, startLine, nameOffset, nameLine, ownerTemplate, references, previouslyDeclared, hasFunctionTryBlock, isFriend, filename );
attachSymbolExtension(symbol, function, isFunctionDefinition);
return function;
}
@ -2451,6 +2475,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
boolean isPureVirtual,
ASTAccessVisibility visibility, List constructorChain, List references, boolean isFunctionDefinition, boolean hasFunctionTryBlock, boolean hasVariableArguments ) throws ASTSemanticException
{
setFilename( nameDuple );
boolean isConstructor = false;
boolean isDestructor = false;
@ -2585,7 +2610,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
resolveLeftoverConstructorInitializerMembers( symbol, constructorChain );
ASTMethod method = new ASTMethod( symbol, parameters, returnType, exception, startOffset, startingLine, nameOffset, nameEndOffset, nameLine, ownerTemplate, references, previouslyDeclared, isConstructor, isDestructor, isPureVirtual, visibility, constructorChain, hasFunctionTryBlock, isFriend );
ASTMethod method = new ASTMethod( symbol, parameters, returnType, exception, startOffset, startingLine, nameOffset, nameEndOffset, nameLine, ownerTemplate, references, previouslyDeclared, isConstructor, isDestructor, isPureVirtual, visibility, constructorChain, hasFunctionTryBlock, isFriend, filename );
if( functionDeclaration != null && isFunctionDefinition )
attachSymbolExtension( symbol, (ASTSymbol) functionDeclaration.getASTExtension().getPrimaryDeclaration(), false );
attachSymbolExtension( symbol, method, isFunctionDefinition );
@ -2654,8 +2679,9 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
boolean isRegister,
boolean isStatic,
int startingOffset,
int startingLine, int nameOffset, int nameEndOffset, int nameLine, IASTExpression constructorExpression) throws ASTSemanticException
int startingLine, int nameOffset, int nameEndOffset, int nameLine, IASTExpression constructorExpression, char[] fn) throws ASTSemanticException
{
setFilename( fn );
List references = new ArrayList();
IContainerSymbol ownerScope = scopeToSymbol( scope );
@ -2685,7 +2711,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
ITokenDuple newName = name.getLastSegment();
return createField(fieldParentScope, newName,isAuto, initializerClause, bitfieldExpression, abstractDeclaration, isMutable, isExtern,
isRegister, isStatic, startingOffset, startingLine, newName.getStartOffset(), nameEndOffset, nameLine, constructorExpression, ASTAccessVisibility.PRIVATE, references);
isRegister, isStatic, startingOffset, startingLine, newName.getStartOffset(), nameEndOffset, nameLine, constructorExpression, ASTAccessVisibility.PRIVATE, references, fn);
}
}
@ -2737,7 +2763,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
handleProblem(e.createProblemID(), name.getFirstToken().getImage() );
}
ASTVariable variable = new ASTVariable( newSymbol, abstractDeclaration, initializerClause, bitfieldExpression, startingOffset, startingLine, nameOffset, nameEndOffset, nameLine, references, constructorExpression, previouslyDeclared );
ASTVariable variable = new ASTVariable( newSymbol, abstractDeclaration, initializerClause, bitfieldExpression, startingOffset, startingLine, nameOffset, nameEndOffset, nameLine, references, constructorExpression, previouslyDeclared, filename );
if( variable.getInitializerClause() != null )
{
variable.getInitializerClause().setOwnerVariableDeclaration(variable);
@ -2896,10 +2922,10 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
boolean isStatic,
int startingOffset,
int startingLine,
int nameOffset, int nameEndOffset, int nameLine, IASTExpression constructorExpression, ASTAccessVisibility visibility) throws ASTSemanticException
int nameOffset, int nameEndOffset, int nameLine, IASTExpression constructorExpression, ASTAccessVisibility visibility, char[] fn) throws ASTSemanticException
{
return createField(scope, name,isAuto, initializerClause, bitfieldExpression, abstractDeclaration, isMutable, isExtern,
isRegister, isStatic, startingOffset, startingLine, nameOffset, nameEndOffset, nameLine, constructorExpression, visibility, null);
isRegister, isStatic, startingOffset, startingLine, nameOffset, nameEndOffset, nameLine, constructorExpression, visibility, null, fn);
}
public IASTField createField(
@ -2918,8 +2944,9 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
int nameOffset,
int nameEndOffset,
int nameLine,
IASTExpression constructorExpression, ASTAccessVisibility visibility, List references) throws ASTSemanticException
IASTExpression constructorExpression, ASTAccessVisibility visibility, List references, char[] fn) throws ASTSemanticException
{
setFilename( fn );
IContainerSymbol ownerScope = scopeToSymbol( scope );
String image = ( name != null ) ? name.toString() : EMPTY_STRING;
@ -2975,7 +3002,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
handleProblem(e.createProblemID(), image );
}
ASTField field = new ASTField( newSymbol, abstractDeclaration, initializerClause, bitfieldExpression, startingOffset, startingLine, nameOffset, nameEndOffset, nameLine, references, previouslyDeclared, constructorExpression, visibility );
ASTField field = new ASTField( newSymbol, abstractDeclaration, initializerClause, bitfieldExpression, startingOffset, startingLine, nameOffset, nameEndOffset, nameLine, references, previouslyDeclared, constructorExpression, visibility, filename );
attachSymbolExtension(newSymbol, field, !isStatic );
return field;
@ -2989,8 +3016,9 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
IASTScope scope,
List templateParameters,
boolean exported,
int startingOffset, int startingLine) throws ASTSemanticException
int startingOffset, int startingLine, char[] fn) throws ASTSemanticException
{
setFilename(fn);
ITemplateSymbol template = pst.newTemplateSymbol( ParserSymbolTable.EMPTY_NAME );
// the lookup requires a list of type infos
@ -3005,7 +3033,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
}
}
ASTTemplateDeclaration ast = new ASTTemplateDeclaration( template, scope, templateParameters);
ASTTemplateDeclaration ast = new ASTTemplateDeclaration( template, scope, templateParameters, filename);
ast.setStartingOffsetAndLineNumber( startingOffset, startingLine );
attachSymbolExtension( template, ast, false );
@ -3021,8 +3049,9 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
IASTParameterDeclaration parameter,
List parms,
IASTCodeScope parameterScope,
int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, int endingOffset, int endingLine ) throws ASTSemanticException
int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, int endingOffset, int endingLine, char[] fn ) throws ASTSemanticException
{
//TODO filename
ISymbol symbol = null;
TypeInfoProvider provider = pst.getTypeInfoProvider();
@ -3074,7 +3103,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
} catch (ParserSymbolTableException e) {
}
ASTTemplateParameter ast = new ASTTemplateParameter( symbol, defaultValue, parameter, parms, startingOffset, startingLine, nameOffset, nameEndOffset, nameLine, endingOffset, endingLine );
ASTTemplateParameter ast = new ASTTemplateParameter( symbol, defaultValue, parameter, parms, startingOffset, startingLine, nameOffset, nameEndOffset, nameLine, endingOffset, endingLine, fn );
attachSymbolExtension( symbol, ast, false );
@ -3085,9 +3114,9 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
*/
public IASTTemplateInstantiation createTemplateInstantiation(
IASTScope scope,
int startingOffset, int startingLine)
int startingOffset, int startingLine, char[] fn)
{
ASTTemplateInstantiation inst = new ASTTemplateInstantiation( scope );
ASTTemplateInstantiation inst = new ASTTemplateInstantiation( scope, fn );
inst.setStartingOffsetAndLineNumber( startingOffset, startingLine );
return inst;
}
@ -3096,11 +3125,11 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
*/
public IASTTemplateSpecialization createTemplateSpecialization(
IASTScope scope,
int startingOffset, int startingLine)
int startingOffset, int startingLine, char[] fn)
{
ITemplateSymbol template = pst.newTemplateSymbol( ParserSymbolTable.EMPTY_NAME );
ASTTemplateSpecialization ast = new ASTTemplateSpecialization( template, scope );
ASTTemplateSpecialization ast = new ASTTemplateSpecialization( template, scope, fn );
ast.setStartingOffsetAndLineNumber( startingOffset, startingLine );
attachSymbolExtension( template, ast, false );
@ -3114,8 +3143,9 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
String name,
IASTAbstractDeclaration mapping,
int startingOffset,
int startingLine, int nameOffset, int nameEndOffset, int nameLine) throws ASTSemanticException
int startingLine, int nameOffset, int nameEndOffset, int nameLine, char[] fn) throws ASTSemanticException
{
setFilename( fn );
IContainerSymbol containerSymbol = scopeToSymbol(scope);
ISymbol typeSymbol = cloneSimpleTypeSymbol( name, mapping, null );
@ -3155,7 +3185,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
{
handleProblem(e.createProblemID(), name );
}
ASTTypedef d = new ASTTypedef( typeSymbol, mapping, startingOffset, startingLine, nameOffset, nameEndOffset, nameLine, references );
ASTTypedef d = new ASTTypedef( typeSymbol, mapping, startingOffset, startingLine, nameOffset, nameEndOffset, nameLine, references, filename );
attachSymbolExtension(typeSymbol, d, true );
return d;
}
@ -3167,14 +3197,15 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
IASTTypeSpecifier typeSpecifier,
IASTTemplate template,
int startingOffset,
int startingLine, int endingOffset, int endingLine, boolean isFriend)
int startingLine, int endingOffset, int endingLine, boolean isFriend, char[] fn)
{
return new ASTAbstractTypeSpecifierDeclaration( scopeToSymbol(scope), typeSpecifier, template, startingOffset, startingLine, endingOffset, endingLine, isFriend);
return new ASTAbstractTypeSpecifierDeclaration( scopeToSymbol(scope), typeSpecifier, template, startingOffset, startingLine, endingOffset, endingLine, isFriend, fn );
}
public IASTElaboratedTypeSpecifier createElaboratedTypeSpecifier(IASTScope scope, ASTClassKind kind, ITokenDuple name, int startingOffset, int startingLine, int endOffset, int endingLine, boolean isForewardDecl, boolean isFriend) throws ASTSemanticException
{
setFilename( name );
IContainerSymbol currentScopeSymbol = scopeToSymbol(scope);
IContainerSymbol originalScope = currentScopeSymbol;
@ -3269,7 +3300,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
.getFirstToken().getOffset(), name.getLastToken()
.getEndOffset(), name.getLastToken()
.getLineNumber(), endOffset, endingLine,
references, isForewardDecl);
references, isForewardDecl, filename);
attachSymbolExtension(checkSymbol, elab, !isForewardDecl);
} else if (isFriend) {
((IDerivableContainerSymbol) originalScope).addFriend(checkSymbol);
@ -3290,7 +3321,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
.getFirstToken().getOffset(), name
.getLastToken().getEndOffset(), name
.getLastToken().getLineNumber(), endOffset,
endingLine, references, isForewardDecl);
endingLine, references, isForewardDecl, filename);
attachSymbolExtension(checkSymbol, elab, !isForewardDecl);
return elab;
}
@ -3317,6 +3348,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
*/
public IASTNamespaceAlias createNamespaceAlias(IASTScope scope, String identifier, ITokenDuple alias, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, int endOffset, int endingLine) throws ASTSemanticException
{
setFilename( alias );
IContainerSymbol startingSymbol = scopeToSymbol(scope);
List references = new ArrayList();
@ -3339,7 +3371,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
ASTNamespaceAlias astAlias = new ASTNamespaceAlias(
newSymbol, alias.toString(), (IASTNamespaceDefinition)namespaceSymbol.getASTExtension().getPrimaryDeclaration(),
startingOffset, startingLine, nameOffset, nameEndOffset, nameLine, endOffset, endingLine, references );
startingOffset, startingLine, nameOffset, nameEndOffset, nameLine, endOffset, endingLine, references, filename );
attachSymbolExtension( newSymbol, astAlias, true );
return astAlias;
}
@ -3417,9 +3449,10 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
return false;
}
public IASTParameterDeclaration createParameterDeclaration(boolean isConst, boolean isVolatile, IASTTypeSpecifier typeSpecifier, List pointerOperators, List arrayModifiers, List parameters, ASTPointerOperator pointerOp, String parameterName, IASTInitializerClause initializerClause, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, int endingOffset, int endingLine)
public IASTParameterDeclaration createParameterDeclaration(boolean isConst, boolean isVolatile, IASTTypeSpecifier typeSpecifier, List pointerOperators, List arrayModifiers, List parameters, ASTPointerOperator pointerOp, String parameterName, IASTInitializerClause initializerClause, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, int endingOffset, int endingLine, char[] fn)
{
return new ASTParameterDeclaration( null, isConst, isVolatile, typeSpecifier, pointerOperators, arrayModifiers, parameters, pointerOp, parameterName, initializerClause, startingOffset, startingLine, nameOffset, nameEndOffset, nameLine, endingOffset, endingLine );
setFilename(fn);
return new ASTParameterDeclaration( null, isConst, isVolatile, typeSpecifier, pointerOperators, arrayModifiers, parameters, pointerOp, parameterName, initializerClause, startingOffset, startingLine, nameOffset, nameEndOffset, nameLine, endingOffset, endingLine, filename );
}
/* (non-Javadoc)

View file

@ -100,7 +100,7 @@ public class ExpressionParseASTFactory extends BaseASTFactory implements IASTFac
int nameLine,
int endingOffset,
int endingLine,
IMacroDescriptor info) {
IMacroDescriptor info, char[] fn) {
// TODO Auto-generated method stub
return null;
}
@ -121,7 +121,7 @@ public class ExpressionParseASTFactory extends BaseASTFactory implements IASTFac
int nameEndOffset,
int nameLine,
int endingOffset,
int endingLine) {
int endingLine, char[] fn) {
// TODO Auto-generated method stub
return null;
}
@ -176,7 +176,7 @@ public class ExpressionParseASTFactory extends BaseASTFactory implements IASTFac
int startingOffset,
int startingLine,
int endingOffset,
int endingLine) {
int endingLine, char[] fn) {
// TODO Auto-generated method stub
return null;
}
@ -194,7 +194,7 @@ public class ExpressionParseASTFactory extends BaseASTFactory implements IASTFac
int startingLine,
int nameOffset,
int nameEndOffset,
int nameLineNumber)
int nameLineNumber, char[] fn)
throws ASTSemanticException {
// TODO Auto-generated method stub
return null;
@ -243,7 +243,7 @@ public class ExpressionParseASTFactory extends BaseASTFactory implements IASTFac
IASTScope scope,
String spec,
int startingOffset,
int startingLine) {
int startingLine, char[] fn) {
// TODO Auto-generated method stub
return null;
}
@ -268,7 +268,7 @@ public class ExpressionParseASTFactory extends BaseASTFactory implements IASTFac
int startingLine,
int nameOffset,
int nameEndOffset,
int nameLine)
int nameLine, char[] fn)
throws ASTSemanticException {
// TODO Auto-generated method stub
return null;
@ -327,7 +327,7 @@ public class ExpressionParseASTFactory extends BaseASTFactory implements IASTFac
int startingLine,
int nameOffset,
int nameEndOffset,
int nameLine)
int nameLine, char[] fn)
throws ASTSemanticException {
// TODO Auto-generated method stub
return null;
@ -350,7 +350,7 @@ public class ExpressionParseASTFactory extends BaseASTFactory implements IASTFac
int nameLine,
int endingOffset,
int endLine,
IASTExpression initialValue)
IASTExpression initialValue, char[] fn)
throws ASTSemanticException {
return null;
@ -612,7 +612,7 @@ public class ExpressionParseASTFactory extends BaseASTFactory implements IASTFac
int nameOffset,
int nameEndOffset,
int nameLine,
IASTExpression constructorExpression)
IASTExpression constructorExpression, char[] fn)
throws ASTSemanticException {
// TODO Auto-generated method stub
return null;
@ -647,7 +647,7 @@ public class ExpressionParseASTFactory extends BaseASTFactory implements IASTFac
int nameEndOffset,
int nameLine,
IASTExpression constructorExpression,
ASTAccessVisibility visibility)
ASTAccessVisibility visibility, char[] fn)
throws ASTSemanticException {
// TODO Auto-generated method stub
return null;
@ -695,7 +695,7 @@ public class ExpressionParseASTFactory extends BaseASTFactory implements IASTFac
int nameEndOffset,
int nameLine,
int endingOffset,
int endingLine) {
int endingLine, char[] fn) {
// TODO Auto-generated method stub
return null;
}
@ -711,7 +711,7 @@ public class ExpressionParseASTFactory extends BaseASTFactory implements IASTFac
List templateParameters,
boolean exported,
int startingOffset,
int startingLine) {
int startingLine, char[] fn) {
// TODO Auto-generated method stub
return null;
}
@ -730,12 +730,12 @@ public class ExpressionParseASTFactory extends BaseASTFactory implements IASTFac
IASTTypeId defaultValue,
IASTParameterDeclaration parameter,
List parms, IASTCodeScope parameterScope,
int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, int endingOffset, int endingLine) {
int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, int endingOffset, int endingLine, char[] fn) {
// TODO Auto-generated method stub
return null;
}
/*
/*Os
* (non-Javadoc)
*
* @see org.eclipse.cdt.core.parser.ast.IASTFactory#createTemplateInstantiation(org.eclipse.cdt.core.parser.ast.IASTScope,
@ -744,7 +744,7 @@ public class ExpressionParseASTFactory extends BaseASTFactory implements IASTFac
public IASTTemplateInstantiation createTemplateInstantiation(
IASTScope scope,
int startingOffset,
int startingLine) {
int startingLine, char[] fn) {
// TODO Auto-generated method stub
return null;
}
@ -758,7 +758,7 @@ public class ExpressionParseASTFactory extends BaseASTFactory implements IASTFac
public IASTTemplateSpecialization createTemplateSpecialization(
IASTScope scope,
int startingOffset,
int startingLine) {
int startingLine, char[] fn) {
// TODO Auto-generated method stub
return null;
}
@ -779,7 +779,7 @@ public class ExpressionParseASTFactory extends BaseASTFactory implements IASTFac
int startingLine,
int nameOffset,
int nameEndOffset,
int nameLine)
int nameLine, char[] fn)
throws ASTSemanticException {
// TODO Auto-generated method stub
return null;
@ -800,7 +800,7 @@ public class ExpressionParseASTFactory extends BaseASTFactory implements IASTFac
int startingLine,
int endingOffset,
int endingLine,
boolean isFriend) {
boolean isFriend, char[] fn) {
// TODO Auto-generated method stub
return null;
}

View file

@ -24,12 +24,22 @@ public class ASTASMDefinition
implements IASTASMDefinition {
private final String assembly;
private final char [] fn;
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getFilename()
*/
public char[] getFilename() {
return fn;
}
/**
* @param scope
* @param filename
*/
public ASTASMDefinition(IASTScope scope, String assembly) {
public ASTASMDefinition(IASTScope scope, String assembly, char[] filename) {
super(scope);
this.assembly = assembly;
fn = filename;
}
/* (non-Javadoc)

View file

@ -28,11 +28,20 @@ public class ASTAbstractTypeSpecifierDeclaration
private final IASTTemplate ownerTemplate;
private final IASTTypeSpecifier typeSpecifier;
private final boolean isFriendDeclaration;
private final char [] fn;
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getFilename()
*/
public char[] getFilename() {
return fn;
}
/**
* @param scope
* @param typeSpecifier
* @param filename
*/
public ASTAbstractTypeSpecifierDeclaration(IASTScope scope, IASTTypeSpecifier typeSpecifier, IASTTemplate ownerTemplate, int startingOffset, int endingOffset, int startingLine, int endingLine, boolean isFriend)
public ASTAbstractTypeSpecifierDeclaration(IASTScope scope, IASTTypeSpecifier typeSpecifier, IASTTemplate ownerTemplate, int startingOffset, int endingOffset, int startingLine, int endingLine, boolean isFriend, char[] filename)
{
super( ownerTemplate != null ? null : scope );
this.typeSpecifier = typeSpecifier;
@ -42,6 +51,7 @@ public class ASTAbstractTypeSpecifierDeclaration
ownerTemplate.setOwnedDeclaration( this );
setStartingOffsetAndLineNumber(startingOffset, startingLine);
setEndingOffsetAndLineNumber(endingOffset, endingLine);
fn = filename;
}
/* (non-Javadoc)

View file

@ -35,7 +35,7 @@ public class ASTClassSpecifier extends ASTScopedTypeSpecifier implements IASTQCl
int startingOffset,
int startingLine,
int nameOffset,
int nameEndOffset, int nameLineNumber, ASTAccessVisibility access)
int nameEndOffset, int nameLineNumber, ASTAccessVisibility access, char[] filename)
{
super( scope, name );
classNameType = type;
@ -45,6 +45,7 @@ public class ASTClassSpecifier extends ASTScopedTypeSpecifier implements IASTQCl
setNameEndOffsetAndLineNumber(nameEndOffset, nameLineNumber);
this.access = access;
this.name = name;
fn = filename;
}
private final String name;
@ -54,6 +55,14 @@ public class ASTClassSpecifier extends ASTScopedTypeSpecifier implements IASTQCl
private ASTAccessVisibility access;
private final ClassNameType classNameType;
private final ASTClassKind classKind;
private final char [] fn;
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getFilename()
*/
public char[] getFilename() {
return fn;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTClassSpecifier#getClassNameType()
*/

View file

@ -27,13 +27,22 @@ public class ASTElaboratedTypeSpecifier extends ASTNode implements IASTElaborate
private final String typeName;
private final ASTClassKind classKind;
private final ASTQualifiedNamedElement qualifiedName;
private final char [] fn;
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getFilename()
*/
public char[] getFilename() {
return fn;
}
/**
* @param elaboratedClassKind
* @param typeName
* @param startingOffset
* @param endOffset
* @param filename
*/
public ASTElaboratedTypeSpecifier(IASTScope scope, ASTClassKind elaboratedClassKind, String typeName, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, int endOffset, int endingLine)
public ASTElaboratedTypeSpecifier(IASTScope scope, ASTClassKind elaboratedClassKind, String typeName, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, int endOffset, int endingLine, char[] filename)
{
classKind = elaboratedClassKind;
this.typeName = typeName;
@ -42,6 +51,7 @@ public class ASTElaboratedTypeSpecifier extends ASTNode implements IASTElaborate
setNameEndOffsetAndLineNumber( nameEndOffset, nameLine );
setEndingOffsetAndLineNumber( endOffset, endingLine );
qualifiedName = new ASTQualifiedNamedElement( scope, typeName );
fn = filename;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier#getTypeName()

View file

@ -29,18 +29,28 @@ public class ASTEnumerationSpecifier extends ASTScopedTypeSpecifier
implements IASTEnumerationSpecifier, IASTOffsetableNamedElement
{
private final String name;
private final char [] fn;
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getFilename()
*/
public char[] getFilename() {
return fn;
}
/**
* @param name
* @param startingOffset
* @param filename
*/
public ASTEnumerationSpecifier(IASTScope scope, String name, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine )
public ASTEnumerationSpecifier(IASTScope scope, String name, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, char[] filename )
{
super( scope, name );
this.name = name;
setNameOffset( nameOffset );
setStartingOffsetAndLineNumber( startingOffset, startingLine);
setNameEndOffsetAndLineNumber(nameEndOffset, nameLine);
fn = filename;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement#getName()

View file

@ -28,15 +28,23 @@ public class ASTEnumerator extends ASTNode
private final IASTExpression initialValue;
private final String name;
private final IASTEnumerationSpecifier enumeration;
private final char [] fn;
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getFilename()
*/
public char[] getFilename() {
return fn;
}
/**
* @param enumeration
* @param string
* @param startingOffset
* @param endingOffset
* @param filename
*/
public ASTEnumerator(IASTEnumerationSpecifier enumeration, String string, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, int endingOffset, int endLine, IASTExpression initialValue)
public ASTEnumerator(IASTEnumerationSpecifier enumeration, String string, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, int endingOffset, int endLine, IASTExpression initialValue, char[] filename)
{
this.enumeration = enumeration;
name = string;
@ -45,6 +53,7 @@ public class ASTEnumerator extends ASTNode
setNameEndOffsetAndLineNumber( nameEndOffset, nameLine );
setEndingOffsetAndLineNumber( endingOffset, endLine );
this.initialValue = initialValue;
fn = filename;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement#getName()

View file

@ -39,7 +39,7 @@ public class ASTField extends ASTVariable implements IASTField
* @param isRegister
* @param isStatic
*/
public ASTField(IASTScope scope, String name, boolean isAuto, IASTInitializerClause initializerClause, IASTExpression bitfieldExpression, IASTAbstractDeclaration abstractDeclaration, boolean isMutable, boolean isExtern, boolean isRegister, boolean isStatic, int startingOffset, int startLine, int nameOffset, int nameEndOffset, int nameLine, IASTExpression constructorExpression, ASTAccessVisibility visibility)
public ASTField(IASTScope scope, String name, boolean isAuto, IASTInitializerClause initializerClause, IASTExpression bitfieldExpression, IASTAbstractDeclaration abstractDeclaration, boolean isMutable, boolean isExtern, boolean isRegister, boolean isStatic, int startingOffset, int startLine, int nameOffset, int nameEndOffset, int nameLine, IASTExpression constructorExpression, ASTAccessVisibility visibility, char [] filename)
{
super(
scope,
@ -51,7 +51,7 @@ public class ASTField extends ASTVariable implements IASTField
isMutable,
isExtern,
isRegister,
isStatic, startingOffset, startLine, nameOffset, nameEndOffset, nameLine, constructorExpression );
isStatic, startingOffset, startLine, nameOffset, nameEndOffset, nameLine, constructorExpression, filename );
this.visibility = visibility;
}

View file

@ -33,9 +33,10 @@ public class ASTFunction extends ASTDeclaration implements IASTFunction
{
/**
* @param scope
* @param filename
*/
public ASTFunction(IASTScope scope, String name, List parameters, IASTAbstractDeclaration returnType, IASTExceptionSpecification exception, boolean isInline,
boolean isFriend, boolean isStatic, int startOffset, int startLine, int nameOffset, int nameEndOffset, IASTTemplate ownerTemplate, boolean hasFunctionTryBlock, boolean hasVarArgs, int nameLine )
boolean isFriend, boolean isStatic, int startOffset, int startLine, int nameOffset, int nameEndOffset, IASTTemplate ownerTemplate, boolean hasFunctionTryBlock, boolean hasVarArgs, int nameLine, char[] filename )
{
super(ownerTemplate != null ? null : scope );
this.name = name;
@ -54,6 +55,7 @@ public class ASTFunction extends ASTDeclaration implements IASTFunction
setNameEndOffsetAndLineNumber(nameEndOffset, nameLine);
this.hasFunctionTryBlock = hasFunctionTryBlock;
this.varArgs = hasVarArgs;
fn = filename;
}
private boolean previouslyDeclared;
@ -66,6 +68,14 @@ public class ASTFunction extends ASTDeclaration implements IASTFunction
private final List parms;
private final IASTAbstractDeclaration returnType;
private final boolean isInline, isFriend, isStatic;
private final char [] fn;
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getFilename()
*/
public char[] getFilename() {
return fn;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTFunction#isInline()

View file

@ -29,12 +29,20 @@ public class ASTLinkageSpecification
implements IASTDeclaration, IASTLinkageSpecification, IASTQScope {
private final String linkage;
public ASTLinkageSpecification( IASTScope scope, String linkage, int startingOffset, int startingLine )
private final char [] fn;
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getFilename()
*/
public char[] getFilename() {
return fn;
}
public ASTLinkageSpecification( IASTScope scope, String linkage, int startingOffset, int startingLine, char[] filename )
{
super( scope );
this.linkage = linkage;
setStartingOffsetAndLineNumber(startingOffset, startingLine);
fn = filename;
}
/* (non-Javadoc)

View file

@ -52,6 +52,7 @@ public class ASTMethod extends ASTFunction implements IASTMethod
* @param startOffset
* @param nameOffset
* @param ownerTemplate
* @param filename
*/
public ASTMethod(
IASTScope scope,
@ -73,7 +74,7 @@ public class ASTMethod extends ASTFunction implements IASTMethod
boolean isConstructor,
boolean isDestructor,
boolean isVirtual, boolean isExplicit, boolean isPureVirtual,
ASTAccessVisibility visibility, List constructorChainElements, boolean hasFunctionTryBlock, boolean hasVarArgs )
ASTAccessVisibility visibility, List constructorChainElements, boolean hasFunctionTryBlock, boolean hasVarArgs, char []filename )
{
super(
scope,
@ -87,7 +88,7 @@ public class ASTMethod extends ASTFunction implements IASTMethod
startOffset,
startLine,
nameOffset,
nameEndOffset, ownerTemplate, hasFunctionTryBlock, hasVarArgs, nameLine);
nameEndOffset, ownerTemplate, hasFunctionTryBlock, hasVarArgs, nameLine, filename);
this.isVirtual = isVirtual;
this.isPureVirtual = isPureVirtual;
this.isConstructor = isConstructor;

View file

@ -26,6 +26,14 @@ public class ASTNamespaceAlias extends ASTDeclaration implements IASTNamespaceAl
private final String alias;
private final String identifier;
private final char [] fn;
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getFilename()
*/
public char[] getFilename() {
return fn;
}
/**
* @param scope
* @param identifier
@ -33,8 +41,9 @@ public class ASTNamespaceAlias extends ASTDeclaration implements IASTNamespaceAl
* @param startingOffset
* @param nameOffset
* @param endOffset
* @param filename
*/
public ASTNamespaceAlias(IASTScope scope, String identifier, String string, int startingOffset, int nameOffset, int nameEndOffset, int endOffset, int startingLine, int nameLine, int endingLine)
public ASTNamespaceAlias(IASTScope scope, String identifier, String string, int startingOffset, int nameOffset, int nameEndOffset, int endOffset, int startingLine, int nameLine, int endingLine, char[] filename)
{
super( scope );
setStartingOffsetAndLineNumber(startingOffset, startingLine);
@ -43,6 +52,7 @@ public class ASTNamespaceAlias extends ASTDeclaration implements IASTNamespaceAl
setEndingOffsetAndLineNumber(endOffset, endingLine);
this.identifier = identifier;
this.alias = string;
fn = filename;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)

View file

@ -29,8 +29,15 @@ public class ASTNamespaceDefinition extends ASTDeclaration implements IASTNamesp
private final String name;
private final ASTQualifiedNamedElement qualifiedNameElement;
public ASTNamespaceDefinition( IASTScope scope, String name, int startOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine )
private final char [] fn;
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getFilename()
*/
public char[] getFilename() {
return fn;
}
public ASTNamespaceDefinition( IASTScope scope, String name, int startOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, char[] filename )
{
super( scope );
qualifiedNameElement = new ASTQualifiedNamedElement( scope, name );
@ -38,6 +45,7 @@ public class ASTNamespaceDefinition extends ASTDeclaration implements IASTNamesp
setStartingOffsetAndLineNumber(startOffset, startingLine);
setNameOffset(nameOffset);
setNameEndOffsetAndLineNumber(nameEndOffset, nameEndOffset);
fn = filename;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement#getName()

View file

@ -28,6 +28,14 @@ public class ASTParameterDeclaration extends ASTAbstractDeclaration implements I
{
private final String parameterName;
private final IASTInitializerClause initializerClause;
private final char [] fn;
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getFilename()
*/
public char[] getFilename() {
return fn;
}
/**
* @param isConst
* @param typeSpecifier
@ -35,8 +43,9 @@ public class ASTParameterDeclaration extends ASTAbstractDeclaration implements I
* @param arrayModifiers
* @param parameterName
* @param initializerClause
* @param filename
*/
public ASTParameterDeclaration(boolean isConst, boolean isVolatile, IASTTypeSpecifier typeSpecifier, List pointerOperators, List arrayModifiers, List parameters, ASTPointerOperator pointerOp, String parameterName, IASTInitializerClause initializerClause, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, int endingOffset, int endingLine )
public ASTParameterDeclaration(boolean isConst, boolean isVolatile, IASTTypeSpecifier typeSpecifier, List pointerOperators, List arrayModifiers, List parameters, ASTPointerOperator pointerOp, String parameterName, IASTInitializerClause initializerClause, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, int endingOffset, int endingLine, char[] filename )
{
super( isConst, isVolatile, typeSpecifier, pointerOperators, arrayModifiers, parameters, pointerOp );
this.parameterName = parameterName;
@ -45,6 +54,7 @@ public class ASTParameterDeclaration extends ASTAbstractDeclaration implements I
setEndingOffsetAndLineNumber( endingOffset, endingLine );
setNameOffset( nameOffset );
setNameEndOffsetAndLineNumber(nameEndOffset, nameLine);
fn = filename;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTParameterDeclaration#getName()

View file

@ -31,15 +31,25 @@ public class ASTTemplateDeclaration extends ASTDeclaration implements IASTTempla
private IASTDeclaration ownedDeclaration;
private List templateParameters;
private final boolean isExported;
private final char [] fn;
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getFilename()
*/
public char[] getFilename() {
return fn;
}
/**
* @param templateParameters
* @param filename
*/
public ASTTemplateDeclaration(IASTScope scope, List templateParameters, int startingOffset, int startingLine, boolean isExported)
public ASTTemplateDeclaration(IASTScope scope, List templateParameters, int startingOffset, int startingLine, boolean isExported, char[] filename)
{
super( scope );
this.templateParameters = templateParameters;
setStartingOffsetAndLineNumber(startingOffset, startingLine);
this.isExported = isExported;
fn = filename;
}
/* (non-Javadoc)

View file

@ -27,15 +27,24 @@ import org.eclipse.cdt.core.parser.ast.IReferenceManager;
public class ASTTemplateInstantiation extends ASTDeclaration implements IASTTemplateInstantiation
{
private IASTDeclaration declaration;
private final char [] fn;
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getFilename()
*/
public char[] getFilename() {
return fn;
}
/**
* @param scope
* @param filename
*/
public ASTTemplateInstantiation(IASTScope scope, int startingOffset, int startingLine)
public ASTTemplateInstantiation(IASTScope scope, int startingOffset, int startingLine, char[] filename)
{
super( scope );
setStartingOffsetAndLineNumber(startingOffset, startingLine);
fn = filename;
}
/* (non-Javadoc)

View file

@ -33,13 +33,22 @@ public class ASTTemplateParameter implements IASTTemplateParameter, IASTOffsetab
private final ParamKind kind;
private final String identifier;
private final String defaultValue;
private final char [] fn;
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getFilename()
*/
public char[] getFilename() {
return fn;
}
/**
* @param kind
* @param identifier
* @param defaultValue
* @param parameter
* @param filename
*/
public ASTTemplateParameter(ParamKind kind, String identifier, String defaultValue, IASTParameterDeclaration parameter, List templateParms, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, int endingOffset, int endingLine )
public ASTTemplateParameter(ParamKind kind, String identifier, String defaultValue, IASTParameterDeclaration parameter, List templateParms, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, int endingOffset, int endingLine, char[] filename )
{
this.kind = kind;
this.identifier = identifier;
@ -50,6 +59,7 @@ public class ASTTemplateParameter implements IASTTemplateParameter, IASTOffsetab
setEndingOffsetAndLineNumber( endingOffset, endingLine );
setNameOffset( nameOffset );
setNameEndOffsetAndLineNumber(nameEndOffset, nameLine);
fn = filename;
}
/* (non-Javadoc)

View file

@ -24,9 +24,9 @@ public class ASTTemplateSpecialization extends ASTTemplateDeclaration implements
/**
* @param scope
*/
public ASTTemplateSpecialization(IASTScope scope, int startingOffset, int startingLine )
public ASTTemplateSpecialization(IASTScope scope, int startingOffset, int startingLine, char [] filename )
{
super(scope, null, startingOffset, startingLine, false );
super(scope, null, startingOffset, startingLine, false, filename );
setStartingOffsetAndLineNumber(startingOffset, startingLine);
}

View file

@ -29,12 +29,21 @@ public class ASTTypedefDeclaration extends ASTDeclaration implements IASTTypedef
private final String name;
private final IASTAbstractDeclaration mapping;
private final ASTQualifiedNamedElement qualifiedName;
private final char [] fn;
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getFilename()
*/
public char[] getFilename() {
return fn;
}
/**
* @param scope
* @param name
* @param mapping
* @param filename
*/
public ASTTypedefDeclaration(IASTScope scope, String name, IASTAbstractDeclaration mapping, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine )
public ASTTypedefDeclaration(IASTScope scope, String name, IASTAbstractDeclaration mapping, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, char[] filename )
{
super( scope );
this.name = name;
@ -43,6 +52,7 @@ public class ASTTypedefDeclaration extends ASTDeclaration implements IASTTypedef
setNameOffset(nameOffset);
setNameEndOffsetAndLineNumber(nameEndOffset, nameLine);
qualifiedName = new ASTQualifiedNamedElement( scope, name );
fn = filename;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTTypedef#getName()

View file

@ -28,14 +28,23 @@ public class ASTUsingDeclaration
private final boolean isTypename;
private final String mappingName;
private final char [] fn;
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getFilename()
*/
public char[] getFilename() {
return fn;
}
public ASTUsingDeclaration( IASTScope scope, boolean isTypeName, String mappingName, int startingOffset, int startingLine, int endingOffset, int endingLine )
public ASTUsingDeclaration( IASTScope scope, boolean isTypeName, String mappingName, int startingOffset, int startingLine, int endingOffset, int endingLine, char[] filename )
{
super( scope );
isTypename = isTypeName;
this.mappingName = mappingName;
setStartingOffsetAndLineNumber(startingOffset, startingLine);
setEndingOffsetAndLineNumber(endingOffset, endingLine);
fn = filename;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTUsingDeclaration#isTypename()

View file

@ -25,14 +25,21 @@ public class ASTUsingDirective
extends ASTDeclaration
implements IASTUsingDirective {
private final char [] fn;
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getFilename()
*/
public char[] getFilename() {
return fn;
}
public ASTUsingDirective( IASTScope scope, String name, int startingOffset, int startingLine, int endingOffset, int endingLine )
public ASTUsingDirective( IASTScope scope, String name, int startingOffset, int startingLine, int endingOffset, int endingLine, char[] filename )
{
super( scope );
this.namespaceName = name;
setStartingOffsetAndLineNumber(startingOffset, startingLine);
setEndingOffsetAndLineNumber(endingOffset, endingLine);
fn = filename;
}
private final String namespaceName;

View file

@ -36,11 +36,20 @@ public class ASTVariable extends ASTDeclaration implements IASTVariable
private final boolean isStatic;
private final String name;
private final ASTQualifiedNamedElement qualifiedName;
private final char [] fn;
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getFilename()
*/
public char[] getFilename() {
return fn;
}
/**
* @param scope
* @param filename
*/
public ASTVariable(IASTScope scope, String name, boolean isAuto, IASTInitializerClause initializerClause, IASTExpression bitfieldExpression,
IASTAbstractDeclaration abstractDeclaration, boolean isMutable, boolean isExtern, boolean isRegister, boolean isStatic, int startingOffset, int startLine, int nameOffset, int nameEndOffset, int nameLine, IASTExpression constructorExpression )
IASTAbstractDeclaration abstractDeclaration, boolean isMutable, boolean isExtern, boolean isRegister, boolean isStatic, int startingOffset, int startLine, int nameOffset, int nameEndOffset, int nameLine, IASTExpression constructorExpression, char[] filename )
{
super(scope);
this.isAuto = isAuto;
@ -59,6 +68,7 @@ public class ASTVariable extends ASTDeclaration implements IASTVariable
setNameEndOffsetAndLineNumber( nameEndOffset, nameLine );
if( initializerClause != null )
initializerClause.setOwnerVariableDeclaration(this);
fn = filename;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTVariable#isAuto()

View file

@ -81,14 +81,14 @@ public class QuickParseASTFactory extends BaseASTFactory implements IASTFactory
* @see org.eclipse.cdt.internal.core.parser.ast.IASTFactory#createUsingDirective(org.eclipse.cdt.internal.core.parser.ast.IASTScope, org.eclipse.cdt.internal.core.parser.TokenDuple)
*/
public IASTUsingDirective createUsingDirective(IASTScope scope, ITokenDuple duple, int startingOffset, int startingLine, int endingOffset, int endingLine) {
return new ASTUsingDirective( scope, duple.toString(), startingOffset, startingLine, endingOffset, endingLine );
return new ASTUsingDirective( scope, duple.toString(), startingOffset, startingLine, endingOffset, endingLine, duple.getFilename() );
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.ast.IASTFactory#createASMDefinition(org.eclipse.cdt.internal.core.parser.ast.IASTScope, java.lang.String, int, int)
*/
public IASTASMDefinition createASMDefinition(IASTScope scope, String assembly, int startingOffset, int startingLine, int endingOffset, int endingLine) {
IASTASMDefinition definition = new ASTASMDefinition( scope, assembly );
public IASTASMDefinition createASMDefinition(IASTScope scope, String assembly, int startingOffset, int startingLine, int endingOffset, int endingLine, char[] fn) {
IASTASMDefinition definition = new ASTASMDefinition( scope, assembly, fn );
definition.setStartingOffsetAndLineNumber( startingOffset, startingLine );
definition.setEndingOffsetAndLineNumber( endingOffset, endingLine );
return definition;
@ -97,8 +97,8 @@ public class QuickParseASTFactory extends BaseASTFactory implements IASTFactory
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.ast.IASTFactory#createNamespaceDefinition(int, java.lang.String, int)
*/
public IASTNamespaceDefinition createNamespaceDefinition(IASTScope scope, String identifier, int first, int startingLine, int nameOffset, int nameEndOffset, int nameLineNumber) {
IASTNamespaceDefinition definition = new ASTNamespaceDefinition( scope, identifier, first, startingLine, nameOffset, nameEndOffset, nameLineNumber );
public IASTNamespaceDefinition createNamespaceDefinition(IASTScope scope, String identifier, int first, int startingLine, int nameOffset, int nameEndOffset, int nameLineNumber, char[] fn) {
IASTNamespaceDefinition definition = new ASTNamespaceDefinition( scope, identifier, first, startingLine, nameOffset, nameEndOffset, nameLineNumber, fn );
return definition;
}
@ -112,22 +112,22 @@ public class QuickParseASTFactory extends BaseASTFactory implements IASTFactory
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.ast.IASTFactory#createLinkageSpecification(java.lang.String)
*/
public IASTLinkageSpecification createLinkageSpecification(IASTScope scope, String spec, int startingOffset, int startingLine) {
return new ASTLinkageSpecification( scope, spec, startingOffset, startingLine );
public IASTLinkageSpecification createLinkageSpecification(IASTScope scope, String spec, int startingOffset, int startingLine, char[] fn) {
return new ASTLinkageSpecification( scope, spec, startingOffset, startingLine, fn );
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTFactory#createUsingDeclaration(org.eclipse.cdt.core.parser.ast.IASTScope, boolean, org.eclipse.cdt.internal.core.parser.TokenDuple)
*/
public IASTUsingDeclaration createUsingDeclaration(IASTScope scope, boolean isTypeName, ITokenDuple name, int startingOffset, int startingLine, int endingOffset, int endingLine) {
return new ASTUsingDeclaration( scope, isTypeName, name.toString(), startingOffset, startingLine, endingOffset, endingLine );
return new ASTUsingDeclaration( scope, isTypeName, name.toString(), startingOffset, startingLine, endingOffset, endingLine, name.getFilename() );
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTFactory#createClassSpecifier(org.eclipse.cdt.core.parser.ast.IASTScope, java.lang.String, org.eclipse.cdt.core.parser.ast.ClassKind, org.eclipse.cdt.core.parser.ast.ClassNameType, org.eclipse.cdt.core.parser.ast.AccessVisibility, org.eclipse.cdt.core.parser.ast.IASTTemplateDeclaration)
*/
public IASTClassSpecifier createClassSpecifier(IASTScope scope, ITokenDuple name, ASTClassKind kind, ClassNameType type, ASTAccessVisibility access, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine ) {
return new ASTClassSpecifier( scope, name == null ? "" : name.toString() , kind, type, startingOffset, startingLine, nameOffset, nameEndOffset, nameLine, access ); //$NON-NLS-1$
public IASTClassSpecifier createClassSpecifier(IASTScope scope, ITokenDuple name, ASTClassKind kind, ClassNameType type, ASTAccessVisibility access, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, char[] fn ) {
return new ASTClassSpecifier( scope, name == null ? "" : name.toString() , kind, type, startingOffset, startingLine, nameOffset, nameEndOffset, nameLine, access, fn ); //$NON-NLS-1$
}
/* (non-Javadoc)
@ -141,17 +141,17 @@ public class QuickParseASTFactory extends BaseASTFactory implements IASTFactory
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTFactory#createEnumerationSpecifier(java.lang.String, int)
*/
public IASTEnumerationSpecifier createEnumerationSpecifier(IASTScope scope, String name, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine)
public IASTEnumerationSpecifier createEnumerationSpecifier(IASTScope scope, String name, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, char[] fn)
{
return new ASTEnumerationSpecifier( scope, name, startingOffset, startingLine, nameOffset, nameEndOffset, nameLine );
return new ASTEnumerationSpecifier( scope, name, startingOffset, startingLine, nameOffset, nameEndOffset, nameLine, fn );
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTFactory#addEnumerator(org.eclipse.cdt.core.parser.ast.IASTEnumerationSpecifier, java.lang.String, int, int)
*/
public IASTEnumerator addEnumerator(IASTEnumerationSpecifier enumeration, String string, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, int endingOffset, int endLine, IASTExpression initialValue)
public IASTEnumerator addEnumerator(IASTEnumerationSpecifier enumeration, String string, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, int endingOffset, int endLine, IASTExpression initialValue, char[] fn)
{
IASTEnumerator enumerator = new ASTEnumerator( enumeration, string, startingOffset, startingLine, nameOffset, nameEndOffset, nameLine, endingOffset, endLine, initialValue );
IASTEnumerator enumerator = new ASTEnumerator( enumeration, string, startingOffset, startingLine, nameOffset, nameEndOffset, nameLine, endingOffset, endLine, initialValue, fn );
((ASTEnumerationSpecifier)enumeration).addEnumerator( enumerator );
return enumerator;
}
@ -200,7 +200,7 @@ public class QuickParseASTFactory extends BaseASTFactory implements IASTFactory
*/
public IASTFunction createFunction(IASTScope scope, ITokenDuple name, List parameters, IASTAbstractDeclaration returnType, IASTExceptionSpecification exception, boolean isInline, boolean isFriend, boolean isStatic, int startOffset, int startLine, int nameOffset, int nameEndOffset, int nameLine, IASTTemplate ownerTemplate, boolean isConst, boolean isVolatile, boolean isVirtual, boolean isExplicit, boolean isPureVirtual, List constructorChain, boolean isFunctionDefinition, boolean hasFunctionTryBlock, boolean hasVariableArguments )
{
ASTFunction function = new ASTFunction(scope, name.toString(), parameters, returnType, exception, isInline, isFriend, isStatic, startOffset, startLine, nameOffset, nameEndOffset, ownerTemplate, hasFunctionTryBlock, hasVariableArguments, nameLine );
ASTFunction function = new ASTFunction(scope, name.toString(), parameters, returnType, exception, isInline, isFriend, isStatic, startOffset, startLine, nameOffset, nameEndOffset, ownerTemplate, hasFunctionTryBlock, hasVariableArguments, nameLine, name.getFilename() );
if( isFriend && scope instanceof IASTQClassSpecifier ){
((IASTQClassSpecifier)scope).addFriendDeclaration( function );
}
@ -212,7 +212,7 @@ public class QuickParseASTFactory extends BaseASTFactory implements IASTFactory
*/
public IASTMethod createMethod(IASTScope scope, ITokenDuple name, List parameters, IASTAbstractDeclaration returnType, IASTExceptionSpecification exception, boolean isInline, boolean isFriend, boolean isStatic, int startOffset, int startLine, int nameOffset, int nameEndOffset, int nameLine, IASTTemplate ownerTemplate, boolean isConst, boolean isVolatile, boolean isVirtual, boolean isExplicit, boolean isPureVirtual, ASTAccessVisibility visibility, List constructorChain, boolean isFunctionDefinition, boolean hasFunctionTryBlock, boolean hasVariableArguments )
{
ASTMethod method = new ASTMethod(scope, name.toString(), parameters, returnType, exception, isInline, isFriend, isStatic, startOffset, startLine, nameOffset, nameEndOffset, nameLine, ownerTemplate, isConst, isVolatile, false, false, isVirtual, isExplicit, isPureVirtual, visibility, constructorChain, hasFunctionTryBlock, hasVariableArguments);
ASTMethod method = new ASTMethod(scope, name.toString(), parameters, returnType, exception, isInline, isFriend, isStatic, startOffset, startLine, nameOffset, nameEndOffset, nameLine, ownerTemplate, isConst, isVolatile, false, false, isVirtual, isExplicit, isPureVirtual, visibility, constructorChain, hasFunctionTryBlock, hasVariableArguments, name.getFilename());
if( isFriend && scope instanceof IASTQClassSpecifier ){
((IASTQClassSpecifier)scope).addFriendDeclaration( method );
}
@ -222,65 +222,65 @@ public class QuickParseASTFactory extends BaseASTFactory implements IASTFactory
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTFactory#createVariable(org.eclipse.cdt.core.parser.ast.IASTScope, java.lang.String, boolean, org.eclipse.cdt.core.parser.ast.IASTInitializerClause, org.eclipse.cdt.core.parser.ast.IASTExpression, org.eclipse.cdt.core.parser.ast.IASTAbstractDeclaration, boolean, boolean, boolean, boolean)
*/
public IASTVariable createVariable(IASTScope scope, ITokenDuple name, boolean isAuto, IASTInitializerClause initializerClause, IASTExpression bitfieldExpression, IASTAbstractDeclaration abstractDeclaration, boolean isMutable, boolean isExtern, boolean isRegister, boolean isStatic, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, IASTExpression constructorExpression)
public IASTVariable createVariable(IASTScope scope, ITokenDuple name, boolean isAuto, IASTInitializerClause initializerClause, IASTExpression bitfieldExpression, IASTAbstractDeclaration abstractDeclaration, boolean isMutable, boolean isExtern, boolean isRegister, boolean isStatic, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, IASTExpression constructorExpression, char[] fn)
{
return new ASTVariable(scope, ( name != null ? name.toString() : "" ), isAuto, initializerClause, bitfieldExpression, abstractDeclaration, isMutable, isExtern, isRegister, isStatic, startingOffset, startingLine, nameOffset, nameEndOffset, nameLine, constructorExpression); //$NON-NLS-1$
return new ASTVariable(scope, ( name != null ? name.toString() : "" ), isAuto, initializerClause, bitfieldExpression, abstractDeclaration, isMutable, isExtern, isRegister, isStatic, startingOffset, startingLine, nameOffset, nameEndOffset, nameLine, constructorExpression, fn); //$NON-NLS-1$
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTFactory#createField(org.eclipse.cdt.core.parser.ast.IASTScope, java.lang.String, boolean, org.eclipse.cdt.core.parser.ast.IASTInitializerClause, org.eclipse.cdt.core.parser.ast.IASTExpression, org.eclipse.cdt.core.parser.ast.IASTAbstractDeclaration, boolean, boolean, boolean, boolean, org.eclipse.cdt.core.parser.ast.ASTAccessVisibility)
*/
public IASTField createField(IASTScope scope, ITokenDuple name, boolean isAuto, IASTInitializerClause initializerClause, IASTExpression bitfieldExpression, IASTAbstractDeclaration abstractDeclaration, boolean isMutable, boolean isExtern, boolean isRegister, boolean isStatic, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, IASTExpression constructorExpression, ASTAccessVisibility visibility)
public IASTField createField(IASTScope scope, ITokenDuple name, boolean isAuto, IASTInitializerClause initializerClause, IASTExpression bitfieldExpression, IASTAbstractDeclaration abstractDeclaration, boolean isMutable, boolean isExtern, boolean isRegister, boolean isStatic, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, IASTExpression constructorExpression, ASTAccessVisibility visibility, char[] fn)
{
return new ASTField(scope, ( name != null ? name.toString() : "" ), isAuto, initializerClause, bitfieldExpression, abstractDeclaration, isMutable, isExtern, isRegister, isStatic, startingOffset, startingLine, nameOffset, nameEndOffset, nameLine, constructorExpression, visibility); //$NON-NLS-1$
return new ASTField(scope, ( name != null ? name.toString() : "" ), isAuto, initializerClause, bitfieldExpression, abstractDeclaration, isMutable, isExtern, isRegister, isStatic, startingOffset, startingLine, nameOffset, nameEndOffset, nameLine, constructorExpression, visibility, fn); //$NON-NLS-1$
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTFactory#createTemplateDeclaration(java.util.List)
*/
public IASTTemplateDeclaration createTemplateDeclaration(IASTScope scope, List templateParameters, boolean exported, int startingOffset, int startingLine)
public IASTTemplateDeclaration createTemplateDeclaration(IASTScope scope, List templateParameters, boolean exported, int startingOffset, int startingLine, char[] fn)
{
return new ASTTemplateDeclaration( scope, templateParameters, startingOffset, startingLine, exported );
return new ASTTemplateDeclaration( scope, templateParameters, startingOffset, startingLine, exported, fn );
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTFactory#createTemplateParameter(org.eclipse.cdt.core.parser.ast.IASTTemplateParameter.ParameterKind, org.eclipse.cdt.core.parser.IToken, java.lang.String, org.eclipse.cdt.core.parser.ast.IASTParameterDeclaration)
*/
public IASTTemplateParameter createTemplateParameter(IASTTemplateParameter.ParamKind kind, String identifier, IASTTypeId defaultValue, IASTParameterDeclaration parameter, List parms, IASTCodeScope parameterScope, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, int endingOffset, int endingLine)
public IASTTemplateParameter createTemplateParameter(IASTTemplateParameter.ParamKind kind, String identifier, IASTTypeId defaultValue, IASTParameterDeclaration parameter, List parms, IASTCodeScope parameterScope, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, int endingOffset, int endingLine, char[] fn)
{
return new ASTTemplateParameter( kind, identifier, defaultValue != null ? defaultValue.getTypeOrClassName() : "", parameter, parms, startingOffset, startingLine, nameOffset, nameEndOffset, nameLine, endingOffset, endingLine ); //$NON-NLS-1$
return new ASTTemplateParameter( kind, identifier, defaultValue != null ? defaultValue.getTypeOrClassName() : "", parameter, parms, startingOffset, startingLine, nameOffset, nameEndOffset, nameLine, endingOffset, endingLine, fn ); //$NON-NLS-1$
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTFactory#createTemplateInstantiation()
*/
public IASTTemplateInstantiation createTemplateInstantiation(IASTScope scope, int startingOffset, int startingLine)
public IASTTemplateInstantiation createTemplateInstantiation(IASTScope scope, int startingOffset, int startingLine, char[] fn)
{
return new ASTTemplateInstantiation(scope, startingOffset, startingLine);
return new ASTTemplateInstantiation(scope, startingOffset, startingLine, fn);
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTFactory#createTemplateSpecialization()
*/
public IASTTemplateSpecialization createTemplateSpecialization(IASTScope scope, int startingOffset, int startingLine)
public IASTTemplateSpecialization createTemplateSpecialization(IASTScope scope, int startingOffset, int startingLine, char[] fn)
{
return new ASTTemplateSpecialization(scope, startingOffset, startingLine );
return new ASTTemplateSpecialization(scope, startingOffset, startingLine, fn );
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTFactory#createTypedef(org.eclipse.cdt.core.parser.ast.IASTScope, java.lang.String, org.eclipse.cdt.core.parser.ast.IASTAbstractDeclaration)
*/
public IASTTypedefDeclaration createTypedef(IASTScope scope, String name, IASTAbstractDeclaration mapping, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine)
public IASTTypedefDeclaration createTypedef(IASTScope scope, String name, IASTAbstractDeclaration mapping, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, char[] fn)
{
return new ASTTypedefDeclaration( scope, name, mapping, startingOffset, startingLine, nameOffset, nameEndOffset, nameLine);
return new ASTTypedefDeclaration( scope, name, mapping, startingOffset, startingLine, nameOffset, nameEndOffset, nameLine, fn);
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTFactory#createTypeSpecDeclaration(org.eclipse.cdt.core.parser.ast.IASTScope, boolean, org.eclipse.cdt.core.parser.ast.IASTTypeSpecifier, java.util.List, java.util.List)
*/
public IASTAbstractTypeSpecifierDeclaration createTypeSpecDeclaration(IASTScope scope, IASTTypeSpecifier typeSpecifier, IASTTemplate template, int startingOffset, int startingLine, int endingOffset, int endingLine, boolean isFriend)
public IASTAbstractTypeSpecifierDeclaration createTypeSpecDeclaration(IASTScope scope, IASTTypeSpecifier typeSpecifier, IASTTemplate template, int startingOffset, int startingLine, int endingOffset, int endingLine, boolean isFriend, char[] fn)
{
ASTAbstractTypeSpecifierDeclaration abs = new ASTAbstractTypeSpecifierDeclaration( scope, typeSpecifier, template, startingOffset, endingOffset, startingLine, endingLine, isFriend );
ASTAbstractTypeSpecifierDeclaration abs = new ASTAbstractTypeSpecifierDeclaration( scope, typeSpecifier, template, startingOffset, endingOffset, startingLine, endingLine, isFriend, fn );
if( isFriend && scope instanceof IASTQClassSpecifier ){
((IASTQClassSpecifier)scope).addFriendDeclaration( abs );
}
@ -289,7 +289,7 @@ public class QuickParseASTFactory extends BaseASTFactory implements IASTFactory
public IASTElaboratedTypeSpecifier createElaboratedTypeSpecifier(IASTScope scope, ASTClassKind elaboratedClassKind, ITokenDuple typeName, int startingOffset, int startingLine, int endOffset, int endingLine, boolean isForewardDecl, boolean isFriend)
{
return new ASTElaboratedTypeSpecifier( scope, elaboratedClassKind, typeName.toString(), startingOffset, startingLine, typeName.getFirstToken().getOffset(), typeName.getLastToken().getEndOffset(), typeName.getLastToken().getLineNumber(), endOffset, endingLine );
return new ASTElaboratedTypeSpecifier( scope, elaboratedClassKind, typeName.toString(), startingOffset, startingLine, typeName.getFirstToken().getOffset(), typeName.getLastToken().getEndOffset(), typeName.getLastToken().getLineNumber(), endOffset, endingLine, typeName.getFilename() );
}
/* (non-Javadoc)
@ -297,7 +297,7 @@ public class QuickParseASTFactory extends BaseASTFactory implements IASTFactory
*/
public IASTNamespaceAlias createNamespaceAlias(IASTScope scope, String identifier, ITokenDuple alias, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, int endOffset, int endingLine)
{
return new ASTNamespaceAlias( scope, identifier, alias.toString(), startingOffset, nameOffset, nameEndOffset, endOffset, startingLine, nameLine, endingLine );
return new ASTNamespaceAlias( scope, identifier, alias.toString(), startingOffset, nameOffset, nameEndOffset, endOffset, startingLine, nameLine, endingLine, alias.getFilename());
}
/* (non-Javadoc)
@ -314,9 +314,9 @@ public class QuickParseASTFactory extends BaseASTFactory implements IASTFactory
return true; // we have no information to say that it is not
}
public IASTParameterDeclaration createParameterDeclaration(boolean isConst, boolean isVolatile, IASTTypeSpecifier typeSpecifier, List pointerOperators, List arrayModifiers, List parameters, ASTPointerOperator pointerOp, String parameterName, IASTInitializerClause initializerClause, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, int endingOffset, int endingLine)
public IASTParameterDeclaration createParameterDeclaration(boolean isConst, boolean isVolatile, IASTTypeSpecifier typeSpecifier, List pointerOperators, List arrayModifiers, List parameters, ASTPointerOperator pointerOp, String parameterName, IASTInitializerClause initializerClause, int startingOffset, int startingLine, int nameOffset, int nameEndOffset, int nameLine, int endingOffset, int endingLine, char[] fn)
{
return new ASTParameterDeclaration( isConst, isVolatile, typeSpecifier, pointerOperators, arrayModifiers, parameters, pointerOp, parameterName, initializerClause, startingOffset, startingLine, nameOffset, nameEndOffset, nameLine, endingOffset, endingLine );
return new ASTParameterDeclaration( isConst, isVolatile, typeSpecifier, pointerOperators, arrayModifiers, parameters, pointerOp, parameterName, initializerClause, startingOffset, startingLine, nameOffset, nameEndOffset, nameLine, endingOffset, endingLine, fn );
}
/* (non-Javadoc)

View file

@ -112,7 +112,7 @@ public class ContextStack {
}
public void updateInclusionContext(CodeReader code, IASTInclusion inclusion, ISourceElementRequestor requestor) throws ContextException {
addInclusionFilename( code.filename );
addInclusionFilename( new String( code.filename ));
ScannerContextInclusion context = new ScannerContextInclusion( code, inclusion, currentInclusionIndex - 1 );
if( isCircularInclusion( context.getContextName() ) )

View file

@ -168,7 +168,7 @@ public final class Scanner implements IScanner, IScannerData {
this.contextStack = new ContextStack( this, log );
this.workingCopies = workingCopies;
this.scannerExtension = extension;
this.astFactory = ParserFactory.createASTFactory( this, parserMode, language );
this.astFactory = ParserFactory.createASTFactory( parserMode, language );
if (reader.isFile())
fileCache.put(reader.filename, reader);
@ -631,12 +631,12 @@ public final class Scanner implements IScanner, IScannerData {
inclusion =
getASTFactory().createInclusion(
fileName,
duple.filename,
new String( duple.filename ),
!useIncludePaths,
beginOffset,
startLine,
nameOffset,
nameOffset + fileName.length(), nameLine, endOffset, endLine);
nameOffset + fileName.length(), nameLine, endOffset, endLine, getCurrentFilename());
}
catch (Exception e)
{
@ -2786,7 +2786,7 @@ public final class Scanner implements IScanner, IScannerData {
beginningOffset,
startLine,
directive.getStartOffset(),
directive.getStartOffset() + directive.getFilename().length(), nameLine, directive.getEndOffset(), endLine);
directive.getStartOffset() + directive.getFilename().length(), nameLine, directive.getEndOffset(), endLine, getCurrentFilename());
}
catch (Exception e)
{
@ -3090,7 +3090,7 @@ public final class Scanner implements IScanner, IScannerData {
try
{
getASTFactory().createMacro( key, beginning, beginningLine, offset, offset + key.length(), nameLine, currentContext.getOffset(), contextStack.getCurrentLineNumber(), descriptor ).acceptElement( requestor, null );
getASTFactory().createMacro( key, beginning, beginningLine, offset, offset + key.length(), nameLine, currentContext.getOffset(), contextStack.getCurrentLineNumber(), descriptor, getCurrentFilename() ).acceptElement( requestor, null );
}
catch (Exception e)
{
@ -3554,7 +3554,7 @@ public final class Scanner implements IScanner, IScannerData {
*/
public IASTFactory getASTFactory() {
if( astFactory == null )
astFactory = ParserFactory.createASTFactory( this, parserMode, language );
astFactory = ParserFactory.createASTFactory( parserMode, language );
return astFactory;
}

View file

@ -37,7 +37,7 @@ public class ScannerContextInclusion implements IScannerContext
public final String getContextName()
{
return code.filename;
return new String( code.filename );
}
public int getOffset()

View file

@ -147,4 +147,11 @@ public class MacroExpansionToken implements IToken {
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.IToken#getFilename()
*/
public char[] getFilename() {
return null;
}
}

View file

@ -61,16 +61,15 @@ public class Scanner2 implements IScanner, IScannerData {
public final IASTInclusion inclusion;
public final CodeReader reader;
public final int index;
/**
* @param reader
* @param inclusion
*/
public InclusionData(CodeReader reader, IASTInclusion inclusion, int index ) {
public InclusionData(CodeReader reader, IASTInclusion inclusion ) {
this.reader = reader;
this.inclusion = inclusion;
this.index = index;
}
}
@ -133,7 +132,6 @@ public class Scanner2 implements IScanner, IScannerData {
fileCache.put(reader.filename, reader);
pushContext(reader.buffer, reader);
addToFileIndex( reader.filename.toCharArray() );
setupBuiltInMacros();
@ -266,6 +264,8 @@ public class Scanner2 implements IScanner, IScannerData {
private static final String EMPTY_STRING = ""; //$NON-NLS-1$
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.IScanner#nextToken()
*/
@ -318,7 +318,7 @@ public class Scanner2 implements IScanner, IScannerData {
int tokenType = IToken.tSTRING;
if( lastToken.getType() == IToken.tLSTRING || nextToken.getType() == IToken.tLSTRING )
tokenType = IToken.tLSTRING;
lastToken = new ImagedToken(tokenType, (lastToken.getImage() + nextToken.getImage()).toCharArray(), nextToken.getEndOffset()); //TODO Fix this
lastToken = new ImagedToken(tokenType, (lastToken.getImage() + nextToken.getImage()).toCharArray(), nextToken.getEndOffset(), getCurrentFilename() ); //TODO Fix this
if (oldToken != null)
oldToken.setNext(lastToken);
nextToken = fetchToken();
@ -464,20 +464,20 @@ public class Scanner2 implements IScanner, IScannerData {
if (pos + 2 < limit) {
if (buffer[pos + 2] == '.') {
bufferPos[bufferStackPos] += 2;
return new SimpleToken(IToken.tELLIPSIS, bufferPos[bufferStackPos] + 1 );
return new SimpleToken(IToken.tELLIPSIS, bufferPos[bufferStackPos] + 1 , getCurrentFilename() );
}
}
case '*':
++bufferPos[bufferStackPos];
return new SimpleToken(IToken.tDOTSTAR, bufferPos[bufferStackPos]+ 1);
return new SimpleToken(IToken.tDOTSTAR, bufferPos[bufferStackPos]+ 1, getCurrentFilename() );
}
}
return new SimpleToken(IToken.tDOT, bufferPos[bufferStackPos]+ 1);
return new SimpleToken(IToken.tDOT, bufferPos[bufferStackPos]+ 1, getCurrentFilename() );
case '#':
if (pos + 1 < limit && buffer[pos + 1] == '#') {
++bufferPos[bufferStackPos];
return new SimpleToken(IToken.tPOUNDPOUND, bufferPos[bufferStackPos]+ 1);
return new SimpleToken(IToken.tPOUNDPOUND, bufferPos[bufferStackPos]+ 1, getCurrentFilename() );
}
// Should really check to make sure this is the first
@ -486,49 +486,49 @@ public class Scanner2 implements IScanner, IScannerData {
continue;
case '{':
return new SimpleToken(IToken.tLBRACE, bufferPos[bufferStackPos]+ 1);
return new SimpleToken(IToken.tLBRACE, bufferPos[bufferStackPos]+ 1, getCurrentFilename() );
case '}':
return new SimpleToken(IToken.tRBRACE, bufferPos[bufferStackPos]+ 1);
return new SimpleToken(IToken.tRBRACE, bufferPos[bufferStackPos]+ 1, getCurrentFilename() );
case '[':
return new SimpleToken(IToken.tLBRACKET, bufferPos[bufferStackPos]+ 1);
return new SimpleToken(IToken.tLBRACKET, bufferPos[bufferStackPos]+ 1, getCurrentFilename() );
case ']':
return new SimpleToken(IToken.tRBRACKET, bufferPos[bufferStackPos]+ 1);
return new SimpleToken(IToken.tRBRACKET, bufferPos[bufferStackPos]+ 1, getCurrentFilename() );
case '(':
return new SimpleToken(IToken.tLPAREN, bufferPos[bufferStackPos]+ 1);
return new SimpleToken(IToken.tLPAREN, bufferPos[bufferStackPos]+ 1, getCurrentFilename() );
case ')':
return new SimpleToken(IToken.tRPAREN, bufferPos[bufferStackPos]+ 1);
return new SimpleToken(IToken.tRPAREN, bufferPos[bufferStackPos]+ 1, getCurrentFilename() );
case ';':
return new SimpleToken(IToken.tSEMI, bufferPos[bufferStackPos]+ 1);
return new SimpleToken(IToken.tSEMI, bufferPos[bufferStackPos]+ 1, getCurrentFilename() );
case ':':
if (pos + 1 < limit) {
if (buffer[pos + 1] == ':') {
++bufferPos[bufferStackPos];
return new SimpleToken(IToken.tCOLONCOLON, bufferPos[bufferStackPos]+ 1);
return new SimpleToken(IToken.tCOLONCOLON, bufferPos[bufferStackPos]+ 1, getCurrentFilename() );
}
}
return new SimpleToken(IToken.tCOLON, bufferPos[bufferStackPos]+ 1);
return new SimpleToken(IToken.tCOLON, bufferPos[bufferStackPos]+ 1, getCurrentFilename() );
case '?':
return new SimpleToken(IToken.tQUESTION, bufferPos[bufferStackPos]+ 1);
return new SimpleToken(IToken.tQUESTION, bufferPos[bufferStackPos]+ 1, getCurrentFilename() );
case '+':
if (pos + 1 < limit) {
if (buffer[pos + 1] == '+') {
++bufferPos[bufferStackPos];
return new SimpleToken(IToken.tINCR, bufferPos[bufferStackPos]+ 1);
return new SimpleToken(IToken.tINCR, bufferPos[bufferStackPos]+ 1, getCurrentFilename() );
} else if (buffer[pos + 1] == '=') {
++bufferPos[bufferStackPos];
return new SimpleToken(IToken.tPLUSASSIGN, bufferPos[bufferStackPos]+ 1);
return new SimpleToken(IToken.tPLUSASSIGN, bufferPos[bufferStackPos]+ 1, getCurrentFilename() );
}
}
return new SimpleToken(IToken.tPLUS, bufferPos[bufferStackPos]+ 1);
return new SimpleToken(IToken.tPLUS, bufferPos[bufferStackPos]+ 1, getCurrentFilename() );
case '-':
if (pos + 1 < limit) {
@ -536,140 +536,140 @@ public class Scanner2 implements IScanner, IScannerData {
if (pos + 2 < limit) {
if (buffer[pos + 2] == '*') {
bufferPos[bufferStackPos] += 2;
return new SimpleToken(IToken.tARROWSTAR, bufferPos[bufferStackPos]+ 1);
return new SimpleToken(IToken.tARROWSTAR, bufferPos[bufferStackPos]+ 1, getCurrentFilename() );
}
}
++bufferPos[bufferStackPos];
return new SimpleToken(IToken.tARROW, bufferPos[bufferStackPos]+ 1);
return new SimpleToken(IToken.tARROW, bufferPos[bufferStackPos]+ 1, getCurrentFilename() );
} else if (buffer[pos + 1] == '-') {
++bufferPos[bufferStackPos];
return new SimpleToken(IToken.tDECR, bufferPos[bufferStackPos]+ 1);
return new SimpleToken(IToken.tDECR, bufferPos[bufferStackPos]+ 1, getCurrentFilename() );
} else if (buffer[pos + 1] == '=') {
++bufferPos[bufferStackPos];
return new SimpleToken(IToken.tMINUSASSIGN, bufferPos[bufferStackPos]+ 1);
return new SimpleToken(IToken.tMINUSASSIGN, bufferPos[bufferStackPos]+ 1, getCurrentFilename() );
}
}
return new SimpleToken(IToken.tMINUS, bufferPos[bufferStackPos]+ 1);
return new SimpleToken(IToken.tMINUS, bufferPos[bufferStackPos]+ 1, getCurrentFilename() );
case '*':
if (pos + 1 < limit) {
if (buffer[pos + 1] == '=') {
++bufferPos[bufferStackPos];
return new SimpleToken(IToken.tSTARASSIGN, bufferPos[bufferStackPos]+ 1);
return new SimpleToken(IToken.tSTARASSIGN, bufferPos[bufferStackPos]+ 1, getCurrentFilename() );
}
}
return new SimpleToken(IToken.tSTAR, bufferPos[bufferStackPos]+ 1);
return new SimpleToken(IToken.tSTAR, bufferPos[bufferStackPos]+ 1, getCurrentFilename() );
case '/':
if (pos + 1 < limit) {
if (buffer[pos + 1] == '=') {
++bufferPos[bufferStackPos];
return new SimpleToken(IToken.tDIVASSIGN, bufferPos[bufferStackPos]+ 1);
return new SimpleToken(IToken.tDIVASSIGN, bufferPos[bufferStackPos]+ 1, getCurrentFilename() );
}
}
return new SimpleToken(IToken.tDIV, bufferPos[bufferStackPos]+ 1);
return new SimpleToken(IToken.tDIV, bufferPos[bufferStackPos]+ 1, getCurrentFilename() );
case '%':
if (pos + 1 < limit) {
if (buffer[pos + 1] == '=') {
++bufferPos[bufferStackPos];
return new SimpleToken(IToken.tMODASSIGN, bufferPos[bufferStackPos]+ 1);
return new SimpleToken(IToken.tMODASSIGN, bufferPos[bufferStackPos]+ 1, getCurrentFilename() );
}
}
return new SimpleToken(IToken.tMOD, bufferPos[bufferStackPos]+ 1);
return new SimpleToken(IToken.tMOD, bufferPos[bufferStackPos]+ 1, getCurrentFilename() );
case '^':
if (pos + 1 < limit) {
if (buffer[pos + 1] == '=') {
++bufferPos[bufferStackPos];
return new SimpleToken(IToken.tXORASSIGN, bufferPos[bufferStackPos]+ 1);
return new SimpleToken(IToken.tXORASSIGN, bufferPos[bufferStackPos]+ 1, getCurrentFilename() );
}
}
return new SimpleToken(IToken.tXOR, bufferPos[bufferStackPos]+ 1);
return new SimpleToken(IToken.tXOR, bufferPos[bufferStackPos]+ 1, getCurrentFilename() );
case '&':
if (pos + 1 < limit) {
if (buffer[pos + 1] == '&') {
++bufferPos[bufferStackPos];
return new SimpleToken(IToken.tAND, bufferPos[bufferStackPos]+ 1);
return new SimpleToken(IToken.tAND, bufferPos[bufferStackPos]+ 1, getCurrentFilename() );
} else if (buffer[pos + 1] == '=') {
++bufferPos[bufferStackPos];
return new SimpleToken(IToken.tAMPERASSIGN, bufferPos[bufferStackPos]+ 1);
return new SimpleToken(IToken.tAMPERASSIGN, bufferPos[bufferStackPos]+ 1, getCurrentFilename() );
}
}
return new SimpleToken(IToken.tAMPER, bufferPos[bufferStackPos]+ 1);
return new SimpleToken(IToken.tAMPER, bufferPos[bufferStackPos]+ 1, getCurrentFilename() );
case '|':
if (pos + 1 < limit) {
if (buffer[pos + 1] == '|') {
++bufferPos[bufferStackPos];
return new SimpleToken(IToken.tOR, bufferPos[bufferStackPos]+ 1);
return new SimpleToken(IToken.tOR, bufferPos[bufferStackPos]+ 1, getCurrentFilename() );
} else if (buffer[pos + 1] == '=') {
++bufferPos[bufferStackPos];
return new SimpleToken(IToken.tBITORASSIGN, bufferPos[bufferStackPos]+ 1);
return new SimpleToken(IToken.tBITORASSIGN, bufferPos[bufferStackPos]+ 1, getCurrentFilename() );
}
}
return new SimpleToken(IToken.tBITOR, bufferPos[bufferStackPos]+ 1);
return new SimpleToken(IToken.tBITOR, bufferPos[bufferStackPos]+ 1, getCurrentFilename() );
case '~':
return new SimpleToken(IToken.tCOMPL, bufferPos[bufferStackPos]+ 1);
return new SimpleToken(IToken.tCOMPL, bufferPos[bufferStackPos]+ 1, getCurrentFilename() );
case '!':
if (pos + 1 < limit) {
if (buffer[pos + 1] == '=') {
++bufferPos[bufferStackPos];
return new SimpleToken(IToken.tNOTEQUAL, bufferPos[bufferStackPos]+ 1);
return new SimpleToken(IToken.tNOTEQUAL, bufferPos[bufferStackPos]+ 1, getCurrentFilename() );
}
}
return new SimpleToken(IToken.tNOT, bufferPos[bufferStackPos]+ 1);
return new SimpleToken(IToken.tNOT, bufferPos[bufferStackPos]+ 1, getCurrentFilename() );
case '=':
if (pos + 1 < limit) {
if (buffer[pos + 1] == '=') {
++bufferPos[bufferStackPos];
return new SimpleToken(IToken.tEQUAL, bufferPos[bufferStackPos]+ 1);
return new SimpleToken(IToken.tEQUAL, bufferPos[bufferStackPos]+ 1, getCurrentFilename() );
}
}
return new SimpleToken(IToken.tASSIGN, bufferPos[bufferStackPos]+ 1);
return new SimpleToken(IToken.tASSIGN, bufferPos[bufferStackPos]+ 1, getCurrentFilename() );
case '<':
if (pos + 1 < limit) {
if (buffer[pos + 1] == '=') {
++bufferPos[bufferStackPos];
return new SimpleToken(IToken.tLTEQUAL, bufferPos[bufferStackPos]+ 1);
return new SimpleToken(IToken.tLTEQUAL, bufferPos[bufferStackPos]+ 1, getCurrentFilename() );
} else if (buffer[pos + 1] == '<') {
if (pos + 2 < limit) {
if (buffer[pos + 2] == '=') {
bufferPos[bufferStackPos] += 2;
return new SimpleToken(IToken.tSHIFTLASSIGN, bufferPos[bufferStackPos]+ 1);
return new SimpleToken(IToken.tSHIFTLASSIGN, bufferPos[bufferStackPos]+ 1, getCurrentFilename() );
}
}
++bufferPos[bufferStackPos];
return new SimpleToken(IToken.tSHIFTL, bufferPos[bufferStackPos]+ 1);
return new SimpleToken(IToken.tSHIFTL, bufferPos[bufferStackPos]+ 1, getCurrentFilename() );
}
}
return new SimpleToken(IToken.tLT, bufferPos[bufferStackPos]+ 1);
return new SimpleToken(IToken.tLT, bufferPos[bufferStackPos]+ 1, getCurrentFilename() );
case '>':
if (pos + 1 < limit) {
if (buffer[pos + 1] == '=') {
++bufferPos[bufferStackPos];
return new SimpleToken(IToken.tGTEQUAL, bufferPos[bufferStackPos]+ 1);
return new SimpleToken(IToken.tGTEQUAL, bufferPos[bufferStackPos]+ 1, getCurrentFilename() );
} else if (buffer[pos + 1] == '>') {
if (pos + 2 < limit) {
if (buffer[pos + 2] == '=') {
bufferPos[bufferStackPos] += 2;
return new SimpleToken(IToken.tSHIFTRASSIGN, bufferPos[bufferStackPos]+ 1);
return new SimpleToken(IToken.tSHIFTRASSIGN, bufferPos[bufferStackPos]+ 1, getCurrentFilename() );
}
}
++bufferPos[bufferStackPos];
return new SimpleToken(IToken.tSHIFTR, bufferPos[bufferStackPos]+ 1);
return new SimpleToken(IToken.tSHIFTR, bufferPos[bufferStackPos]+ 1, getCurrentFilename() );
}
}
return new SimpleToken(IToken.tGT, bufferPos[bufferStackPos]+ 1);
return new SimpleToken(IToken.tGT, bufferPos[bufferStackPos]+ 1, getCurrentFilename() );
case ',':
return new SimpleToken(IToken.tCOMMA, bufferPos[bufferStackPos]+ 1);
return new SimpleToken(IToken.tCOMMA, bufferPos[bufferStackPos]+ 1, getCurrentFilename() );
default:
// skip over anything we don't handle
@ -739,8 +739,8 @@ public class Scanner2 implements IScanner, IScannerData {
int tokenType = keywords.get(buffer, start, len);
char [] result = removedEscapedNewline( CharArrayUtils.extract( buffer, start, len ) );
if (tokenType == keywords.undefined)
return new ImagedToken(IToken.tIDENTIFIER, result, bufferPos[bufferStackPos]+ 1);
return new SimpleToken(tokenType, start + len);
return new ImagedToken(IToken.tIDENTIFIER, result, bufferPos[bufferStackPos]+ 1, getCurrentFilename() );
return new SimpleToken(tokenType, start + len, getCurrentFilename() );
}
private IToken scanString() {
@ -774,7 +774,7 @@ public class Scanner2 implements IScanner, IScannerData {
// We should really throw an exception if we didn't get the terminating
// quote before the end of buffer
return new ImagedToken(tokenType, CharArrayUtils.extract(buffer, stringStart, stringLen), stringStart + stringLen+ 1);
return new ImagedToken(tokenType, CharArrayUtils.extract(buffer, stringStart, stringLen), stringStart + stringLen+ 1, getCurrentFilename() );
}
private IToken scanCharLiteral(boolean b) {
@ -791,7 +791,7 @@ public class Scanner2 implements IScanner, IScannerData {
}
if (start >= limit) {
return new ImagedToken(tokenType, emptyCharArray, start);
return new ImagedToken(tokenType, emptyCharArray, start, getCurrentFilename() );
}
@ -814,7 +814,7 @@ public class Scanner2 implements IScanner, IScannerData {
? CharArrayUtils.extract(buffer, start, length)
: emptyCharArray;
return new ImagedToken(tokenType, image, start + length+ 1 );
return new ImagedToken(tokenType, image, start + length+ 1 , getCurrentFilename() );
}
private IToken scanNumber() {
@ -992,7 +992,7 @@ public class Scanner2 implements IScanner, IScannerData {
return new ImagedToken(isFloat ? IToken.tFLOATINGPT : IToken.tINTEGER,
CharArrayUtils.extract(buffer, start,
bufferPos[bufferStackPos] - start + 1), bufferPos[bufferStackPos]+ 1);
bufferPos[bufferStackPos] - start + 1), bufferPos[bufferStackPos]+ 1, getCurrentFilename() );
}
private void handlePPDirective(int pos) throws ScannerException {
@ -1171,7 +1171,7 @@ public class Scanner2 implements IScanner, IScannerData {
if( parserMode == ParserMode.QUICK_PARSE )
{
IASTInclusion inclusion = getASTFactory().createInclusion( new String( filename ), EMPTY_STRING, local, startOffset, startLine, nameOffset, nameEndOffset, nameLine, endOffset, endLine );
IASTInclusion inclusion = getASTFactory().createInclusion( new String( filename ), EMPTY_STRING, local, startOffset, startLine, nameOffset, nameEndOffset, nameLine, endOffset, endLine, getCurrentFilename() );
requestor.enterInclusion( inclusion );
requestor.exitInclusion( inclusion );
}
@ -1189,8 +1189,8 @@ public class Scanner2 implements IScanner, IScannerData {
if (reader.filename != null)
fileCache.put(reader.filename, reader);
if (dlog != null) dlog.println("#include \"" + finalPath + "\""); //$NON-NLS-1$ //$NON-NLS-2$
IASTInclusion inclusion = getASTFactory().createInclusion( new String( filename ), new String( reader.filename ), local, startOffset, startLine, nameOffset, nameEndOffset, nameLine, endOffset, endLine );
pushContext(reader.buffer, new InclusionData( reader, inclusion, addToFileIndex( reader.filename.toCharArray() ) ));
IASTInclusion inclusion = getASTFactory().createInclusion( new String( filename ), new String( reader.filename ), local, startOffset, startLine, nameOffset, nameEndOffset, nameLine, endOffset, endLine, getCurrentFilename() );
pushContext(reader.buffer, new InclusionData( reader, inclusion ));
return;
}
}
@ -1215,8 +1215,8 @@ public class Scanner2 implements IScanner, IScannerData {
if (reader.filename != null)
fileCache.put(reader.filename, reader);
if (dlog != null) dlog.println("#include <" + finalPath + ">"); //$NON-NLS-1$ //$NON-NLS-2$
IASTInclusion inclusion = getASTFactory().createInclusion( new String( filename ), new String( reader.filename ), local, startOffset, startLine, nameOffset, nameEndOffset, nameLine, endOffset, endLine );
pushContext(reader.buffer, new InclusionData( reader, inclusion, addToFileIndex( reader.filename.toCharArray() ) ));
IASTInclusion inclusion = getASTFactory().createInclusion( new String( filename ), new String( reader.filename ), local, startOffset, startLine, nameOffset, nameEndOffset, nameLine, endOffset, endLine, getCurrentFilename() );
pushContext(reader.buffer, new InclusionData( reader, inclusion ));
return;
}
}
@ -1337,7 +1337,7 @@ public class Scanner2 implements IScanner, IScannerData {
? new ObjectStyleMacro(name, text)
: new FunctionStyleMacro(name, text, arglist) );
requestor.acceptMacro( getASTFactory().createMacro( new String( name ), startingOffset, startingLine, idstart, idstart + idlen, nameLine, textstart + textlen, endingLine, null )); //TODO - IMacroDescriptor?
requestor.acceptMacro( getASTFactory().createMacro( new String( name ), startingOffset, startingLine, idstart, idstart + idlen, nameLine, textstart + textlen, endingLine, null, getCurrentFilename() )); //TODO - IMacroDescriptor?
}
@ -2388,7 +2388,7 @@ public class Scanner2 implements IScanner, IScannerData {
*/
public final IASTFactory getASTFactory() {
if( astFactory == null )
astFactory = ParserFactory.createASTFactory( this, parserMode, language );
astFactory = ParserFactory.createASTFactory( parserMode, language );
return astFactory;
}
/* (non-Javadoc)
@ -2515,52 +2515,17 @@ public class Scanner2 implements IScanner, IScannerData {
}
protected static final int STARTING_FILECACHE_SIZE = 32;
protected char [][] fileNames = new char[STARTING_FILECACHE_SIZE][];
protected int fileIndexCounter = 0;
/**
* @param cs
* @return
*/
private int addToFileIndex(char[] cs) {
if( fileIndexCounter >= fileNames.length )
{
char [][] prev = fileNames;
fileNames = new char[ prev.length * 2 ][];
System.arraycopy( prev, 0, fileNames, 0, prev.length );
}
int result = fileIndexCounter;
fileNames[ fileIndexCounter ] = cs;
++fileIndexCounter;
return result;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.IFilenameProvider#getCurrentFileIndex()
*/
public final int getCurrentFileIndex() {
for( int i = bufferStackPos; i >= 0; --i )
{
if( bufferData[i] instanceof InclusionData )
return ((InclusionData)bufferData[i]).index;
}
return 0;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.IFilenameProvider#getCurrentFilename()
*/
public final char[] getCurrentFilename() {
return fileNames[ getCurrentFileIndex() ];
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.IFilenameProvider#getFilenameForIndex(int)
*/
public String getFilenameForIndex(int index) {
if( index >= 0 && index < fileIndexCounter )
return new String( fileNames[index] );
return EMPTY_STRING;
for( int i = bufferStackPos; i >= 0; --i )
{
if( bufferData[i] instanceof InclusionData )
return ((InclusionData)bufferData[i]).reader.filename;
}
return emptyCharArray;
}
private static CharArrayIntMap keywords;

View file

@ -24,15 +24,19 @@ import org.eclipse.cdt.core.parser.ast.IReferenceManager;
*/
public abstract class AbstractToken implements IToken, ITokenDuple {
public AbstractToken( int type, int lineNumber )
private final char[] filename;
public AbstractToken( int type, int lineNumber, char [] filename )
{
setType( type );
this.lineNumber = lineNumber;
this.filename = filename;
}
public AbstractToken( int type )
public AbstractToken( int type, char [] filename )
{
setType( type );
this.filename = filename;
}
public String toString() {
@ -53,6 +57,13 @@ public abstract class AbstractToken implements IToken, ITokenDuple {
return lineNumber;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.IToken#getFilename()
*/
public char[] getFilename() {
return filename;
}
public int getEndOffset() { return getOffset() + getLength(); }
protected int type;

View file

@ -501,5 +501,12 @@ public class BasicTokenDuple implements ITokenDuple {
return toString().toCharArray(); //TODO fix me!
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ITokenDuple#getFilename()
*/
public char[] getFilename() {
return firstToken.getFilename();
}
}

View file

@ -25,8 +25,8 @@ public class ImagedExpansionToken extends ImagedToken implements IToken {
* @param contextStack
* @param i
*/
public ImagedExpansionToken(int t, ContextStack contextStack, char[] i) {
super(t, contextStack, i);
public ImagedExpansionToken(int t, ContextStack contextStack, char[] i, char [] f) {
super(t, contextStack, i, f);
}
/**
@ -34,8 +34,8 @@ public class ImagedExpansionToken extends ImagedToken implements IToken {
* @param contextStack
* @param i
*/
public ImagedExpansionToken(int t, char[] i, int macroOffset, int macroLength ) {
super(t, i, macroOffset );
public ImagedExpansionToken(int t, char[] i, int macroOffset, int macroLength, char [] f) {
super(t, i, macroOffset, f );
setOffsetAndLength( macroOffset, macroLength );
}

View file

@ -25,14 +25,14 @@ public class ImagedToken extends SimpleToken {
* @param contextStack
* @param i
*/
public ImagedToken(int t, ContextStack contextStack, char[] i) {
super(t, contextStack);
public ImagedToken(int t, ContextStack contextStack, char[] i, char [] f) {
super(t, contextStack, f );
setImage( i );
setOffsetAndLength(contextStack.getCurrentContext());
}
public ImagedToken( int t, char[] i, int endOffset) {
super( t, 0 );
public ImagedToken( int t, char[] i, int endOffset, char [] f ) {
super( t, 0, f );
setImage(i);
setOffsetAndLength( endOffset );
}

View file

@ -24,8 +24,8 @@ public class SimpleExpansionToken extends SimpleToken implements IToken {
* @param tokenType
* @param stack
*/
public SimpleExpansionToken(int tokenType, ContextStack stack) {
super( tokenType, stack );
public SimpleExpansionToken(int tokenType, ContextStack stack, char [] f) {
super( tokenType, stack, f );
}
protected int length;

View file

@ -18,14 +18,14 @@ import org.eclipse.cdt.internal.core.parser.scanner.IScannerContext;
public class SimpleToken extends AbstractToken implements IToken {
public SimpleToken(int t, ContextStack contextStack ) {
super(t,contextStack.getCurrentLineNumber());
public SimpleToken(int t, ContextStack contextStack, char [] filename ) {
super(t,contextStack.getCurrentLineNumber(), filename );
setOffsetAndLength(contextStack.getCurrentContext());
}
public SimpleToken( int t, int endOffset )
public SimpleToken( int t, int endOffset, char [] filename )
{
super( t );
super( t, filename );
setOffsetAndLength( endOffset );
}

View file

@ -24,12 +24,21 @@ import org.eclipse.cdt.internal.core.parser.scanner.IScannerData;
*/
public class TokenFactory {
protected static final char[] EMPTY_CHAR_ARRAY = "".toCharArray(); //$NON-NLS-1$
public static IToken createToken( int tokenType, IScannerData scannerData )
{
if( scannerData.getContextStack().getCurrentContext().getKind() == IScannerContext.ContextKind.MACROEXPANSION )
return new SimpleExpansionToken( tokenType, scannerData.getContextStack() );
return new SimpleExpansionToken( tokenType, scannerData.getContextStack(), getCurrentFilename(scannerData) );
return new SimpleToken( tokenType, scannerData.getContextStack() );
return new SimpleToken( tokenType, scannerData.getContextStack(), getCurrentFilename(scannerData) );
}
/**
* @param scannerData
* @return
*/
private static char[] getCurrentFilename(IScannerData scannerData) {
return scannerData.getContextStack().getInclusionFilename(scannerData.getContextStack().getMostRelevantFileContextIndex() ).toCharArray();
}
/**
@ -40,14 +49,14 @@ public class TokenFactory {
*/
public static IToken createUniquelyImagedToken(int type, String image, IScannerData scannerData) {
if( scannerData.getContextStack().getCurrentContext().getKind() == IScannerContext.ContextKind.MACROEXPANSION )
return new ImagedExpansionToken( type, scannerData.getContextStack(), image.toCharArray() );
return new ImagedExpansionToken( type, scannerData.getContextStack(), image.toCharArray(), getCurrentFilename(scannerData) );
return new ImagedToken(type, scannerData.getContextStack(), image.toCharArray() );
return new ImagedToken(type, scannerData.getContextStack(), image.toCharArray(), getCurrentFilename(scannerData));
}
public static IToken createStandAloneToken( int type, String image )
{
return new ImagedToken( type, image.toCharArray(), 0);
return new ImagedToken( type, image.toCharArray(), 0, EMPTY_CHAR_ARRAY);
}
public static ITokenDuple createTokenDuple( IToken first, IToken last )