mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
This commit is contained in:
parent
1b95b94a14
commit
02e31a94fd
10 changed files with 172 additions and 50 deletions
|
@ -13,10 +13,6 @@ package org.eclipse.cdt.core.parser;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTFactory;
|
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTNode;
|
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTScope;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author jcamelon
|
* @author jcamelon
|
||||||
|
@ -48,7 +44,6 @@ public interface ITokenDuple {
|
||||||
|
|
||||||
public int findLastTokenType( int type );
|
public int findLastTokenType( int type );
|
||||||
|
|
||||||
public IASTNode lookup( IASTFactory factory, IASTScope scope );
|
|
||||||
public int getStartOffset();
|
public int getStartOffset();
|
||||||
public int getEndOffset();
|
public int getEndOffset();
|
||||||
public int getLineNumber();
|
public int getLineNumber();
|
||||||
|
|
|
@ -239,7 +239,7 @@ public interface IASTFactory
|
||||||
*/
|
*/
|
||||||
public void signalEndOfClassSpecifier(IASTClassSpecifier astClassSpecifier);
|
public void signalEndOfClassSpecifier(IASTClassSpecifier astClassSpecifier);
|
||||||
|
|
||||||
public IASTNode lookupSymbolInContext( IASTScope scope, ITokenDuple duple ) throws ASTNotImplementedException;
|
public IASTNode lookupSymbolInContext( IASTScope scope, ITokenDuple duple, IASTNode reference ) throws ASTNotImplementedException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param log
|
* @param log
|
||||||
|
|
|
@ -155,7 +155,7 @@ public class ContextualParser extends CompleteParser {
|
||||||
setCompletionKeywords(key);
|
setCompletionKeywords(key);
|
||||||
ITokenDuple duple = new TokenDuple( first, last );
|
ITokenDuple duple = new TokenDuple( first, last );
|
||||||
try {
|
try {
|
||||||
setCompletionContext( astFactory.lookupSymbolInContext( scope, duple ) );
|
setCompletionContext( astFactory.lookupSymbolInContext( scope, duple, null ) );
|
||||||
} catch (ASTNotImplementedException e) {
|
} catch (ASTNotImplementedException e) {
|
||||||
}
|
}
|
||||||
setCompletionFunctionName();
|
setCompletionFunctionName();
|
||||||
|
|
|
@ -2840,10 +2840,12 @@ public abstract class Parser extends ExpressionParser implements IParser
|
||||||
case IToken.t_break :
|
case IToken.t_break :
|
||||||
consume();
|
consume();
|
||||||
consume(IToken.tSEMI);
|
consume(IToken.tSEMI);
|
||||||
|
cleanupLastToken();
|
||||||
return;
|
return;
|
||||||
case IToken.t_continue :
|
case IToken.t_continue :
|
||||||
consume();
|
consume();
|
||||||
consume(IToken.tSEMI);
|
consume(IToken.tSEMI);
|
||||||
|
cleanupLastToken();
|
||||||
return;
|
return;
|
||||||
case IToken.t_return :
|
case IToken.t_return :
|
||||||
consume();
|
consume();
|
||||||
|
@ -2853,19 +2855,23 @@ public abstract class Parser extends ExpressionParser implements IParser
|
||||||
retVal.acceptElement(requestor);
|
retVal.acceptElement(requestor);
|
||||||
}
|
}
|
||||||
consume(IToken.tSEMI);
|
consume(IToken.tSEMI);
|
||||||
|
cleanupLastToken();
|
||||||
return;
|
return;
|
||||||
case IToken.t_goto :
|
case IToken.t_goto :
|
||||||
consume();
|
consume();
|
||||||
consume(IToken.tIDENTIFIER);
|
consume(IToken.tIDENTIFIER);
|
||||||
consume(IToken.tSEMI);
|
consume(IToken.tSEMI);
|
||||||
|
cleanupLastToken();
|
||||||
return;
|
return;
|
||||||
case IToken.t_try :
|
case IToken.t_try :
|
||||||
consume();
|
consume();
|
||||||
compoundStatement(scope,true);
|
compoundStatement(scope,true);
|
||||||
catchHandlerSequence(scope);
|
catchHandlerSequence(scope);
|
||||||
|
cleanupLastToken();
|
||||||
return;
|
return;
|
||||||
case IToken.tSEMI :
|
case IToken.tSEMI :
|
||||||
consume();
|
consume();
|
||||||
|
cleanupLastToken();
|
||||||
return;
|
return;
|
||||||
default :
|
default :
|
||||||
// can be many things:
|
// can be many things:
|
||||||
|
@ -2876,6 +2882,7 @@ public abstract class Parser extends ExpressionParser implements IParser
|
||||||
consume(IToken.tIDENTIFIER);
|
consume(IToken.tIDENTIFIER);
|
||||||
consume(IToken.tCOLON);
|
consume(IToken.tCOLON);
|
||||||
statement(scope);
|
statement(scope);
|
||||||
|
cleanupLastToken();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// expressionStatement
|
// expressionStatement
|
||||||
|
@ -2887,6 +2894,7 @@ public abstract class Parser extends ExpressionParser implements IParser
|
||||||
IASTExpression expressionStatement = expression(scope, CompletionKind.SINGLE_NAME_REFERENCE, Key.STATEMENT);
|
IASTExpression expressionStatement = expression(scope, CompletionKind.SINGLE_NAME_REFERENCE, Key.STATEMENT);
|
||||||
consume(IToken.tSEMI);
|
consume(IToken.tSEMI);
|
||||||
expressionStatement.acceptElement( requestor );
|
expressionStatement.acceptElement( requestor );
|
||||||
|
endExpressionStatement(expressionStatement);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
catch (BacktrackException b)
|
catch (BacktrackException b)
|
||||||
|
|
|
@ -20,8 +20,12 @@ import org.eclipse.cdt.core.parser.IToken;
|
||||||
import org.eclipse.cdt.core.parser.ITokenDuple;
|
import org.eclipse.cdt.core.parser.ITokenDuple;
|
||||||
import org.eclipse.cdt.core.parser.ParseError;
|
import org.eclipse.cdt.core.parser.ParseError;
|
||||||
import org.eclipse.cdt.core.parser.ParserLanguage;
|
import org.eclipse.cdt.core.parser.ParserLanguage;
|
||||||
|
import org.eclipse.cdt.core.parser.ast.ASTNotImplementedException;
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTCompletionNode;
|
import org.eclipse.cdt.core.parser.ast.IASTCompletionNode;
|
||||||
|
import org.eclipse.cdt.core.parser.ast.IASTDeclaration;
|
||||||
|
import org.eclipse.cdt.core.parser.ast.IASTExpression;
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTNode;
|
import org.eclipse.cdt.core.parser.ast.IASTNode;
|
||||||
|
import org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement;
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTScope;
|
import org.eclipse.cdt.core.parser.ast.IASTScope;
|
||||||
import org.eclipse.cdt.core.parser.extension.IParserExtension;
|
import org.eclipse.cdt.core.parser.extension.IParserExtension;
|
||||||
import org.eclipse.cdt.internal.core.parser.token.OffsetDuple;
|
import org.eclipse.cdt.internal.core.parser.token.OffsetDuple;
|
||||||
|
@ -40,6 +44,7 @@ public class SelectionParser extends ContextualParser {
|
||||||
private IASTNode ourContext = null;
|
private IASTNode ourContext = null;
|
||||||
private ITokenDuple greaterContextDuple = null;
|
private ITokenDuple greaterContextDuple = null;
|
||||||
private boolean pastPointOfSelection = false;
|
private boolean pastPointOfSelection = false;
|
||||||
|
private IASTNode contextNode = null;
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.eclipse.cdt.internal.core.parser.Parser#handleNewToken(org.eclipse.cdt.core.parser.IToken)
|
* @see org.eclipse.cdt.internal.core.parser.Parser#handleNewToken(org.eclipse.cdt.core.parser.IToken)
|
||||||
|
@ -58,7 +63,7 @@ public class SelectionParser extends ContextualParser {
|
||||||
TraceUtil.outputTrace(log, "Offset Ceiling Hit w/token \"", null, value.getImage(), "\"", null ); //$NON-NLS-1$ //$NON-NLS-2$
|
TraceUtil.outputTrace(log, "Offset Ceiling Hit w/token \"", null, value.getImage(), "\"", null ); //$NON-NLS-1$ //$NON-NLS-2$
|
||||||
lastTokenOfDuple = value;
|
lastTokenOfDuple = value;
|
||||||
}
|
}
|
||||||
if( lastTokenOfDuple != null && lastTokenOfDuple.getEndOffset() >= offsetRange.getCeilingOffset() )
|
if( tokenDupleCompleted() )
|
||||||
{
|
{
|
||||||
if ( ourScope == null )
|
if ( ourScope == null )
|
||||||
ourScope = getCompletionScope();
|
ourScope = getCompletionScope();
|
||||||
|
@ -73,6 +78,16 @@ public class SelectionParser extends ContextualParser {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
protected boolean tokenDupleCompleted() {
|
||||||
|
return lastTokenOfDuple != null && lastTokenOfDuple.getEndOffset() >= offsetRange.getCeilingOffset();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param scanner
|
* @param scanner
|
||||||
* @param callback
|
* @param callback
|
||||||
|
@ -122,29 +137,54 @@ public class SelectionParser extends ContextualParser {
|
||||||
if( ! duple.equals( greaterContextDuple ))
|
if( ! duple.equals( greaterContextDuple ))
|
||||||
{
|
{
|
||||||
// 3 cases
|
// 3 cases
|
||||||
|
|
||||||
// duple is prefix of greaterContextDuple
|
// duple is prefix of greaterContextDuple
|
||||||
if( duple.getFirstToken().equals( greaterContextDuple.getFirstToken() ))
|
// or duple is suffix of greaterContextDuple
|
||||||
{
|
|
||||||
// => do not use greaterContextDuple
|
|
||||||
finalDuple = duple;
|
|
||||||
}
|
|
||||||
// duple is suffix of greaterContextDuple
|
|
||||||
else if( duple.getLastToken().equals( greaterContextDuple.getLastToken() ))
|
|
||||||
{
|
|
||||||
// => use greaterContextDuple
|
|
||||||
finalDuple = greaterContextDuple;
|
|
||||||
}
|
|
||||||
// duple is a sub-duple of greaterContextDuple
|
// duple is a sub-duple of greaterContextDuple
|
||||||
|
if( duple.getFirstToken().equals( greaterContextDuple.getFirstToken() ))
|
||||||
|
finalDuple = duple; // => do not use greaterContextDuple
|
||||||
|
else if( duple.getLastToken().equals( greaterContextDuple.getLastToken() ))
|
||||||
|
finalDuple = greaterContextDuple; // => use greaterContextDuple
|
||||||
else
|
else
|
||||||
{
|
|
||||||
// => throw ParseError
|
|
||||||
throw new ParseError( ParseError.ParseErrorKind.OFFSET_RANGE_NOT_NAME );
|
throw new ParseError( ParseError.ParseErrorKind.OFFSET_RANGE_NOT_NAME );
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else
|
else
|
||||||
finalDuple = greaterContextDuple;
|
finalDuple = greaterContextDuple;
|
||||||
return finalDuple.lookup( astFactory, ourScope );
|
|
||||||
|
|
||||||
|
return lookupNode(finalDuple);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param finalDuple
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
protected IASTNode lookupNode(ITokenDuple finalDuple) {
|
||||||
|
if( contextNode == null ) return null;
|
||||||
|
if( contextNode instanceof IASTDeclaration )
|
||||||
|
{
|
||||||
|
if( contextNode instanceof IASTOffsetableNamedElement )
|
||||||
|
{
|
||||||
|
if( ((IASTOffsetableNamedElement)contextNode).getName().equals( finalDuple.toString() ) )
|
||||||
|
return contextNode;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
return astFactory.lookupSymbolInContext( ourScope, finalDuple, null );
|
||||||
|
} catch (ASTNotImplementedException e) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if( contextNode instanceof IASTExpression )
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
return astFactory.lookupSymbolInContext( ourScope, finalDuple, contextNode );
|
||||||
|
} catch (ASTNotImplementedException e) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -189,4 +229,33 @@ public class SelectionParser extends ContextualParser {
|
||||||
greaterContextDuple = tokenDuple;
|
greaterContextDuple = tokenDuple;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.internal.core.parser.Parser#endDeclaration(org.eclipse.cdt.core.parser.ast.IASTDeclaration)
|
||||||
|
*/
|
||||||
|
protected void endDeclaration(IASTDeclaration declaration)
|
||||||
|
throws EndOfFileException {
|
||||||
|
if( ! tokenDupleCompleted() )
|
||||||
|
super.endDeclaration(declaration);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
contextNode = declaration;
|
||||||
|
throw new EndOfFileException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.internal.core.parser.Parser#endExpressionStatement(org.eclipse.cdt.core.parser.ast.IASTExpression)
|
||||||
|
*/
|
||||||
|
protected void endExpressionStatement(IASTExpression expression)
|
||||||
|
throws EndOfFileException {
|
||||||
|
if( ! tokenDupleCompleted() )
|
||||||
|
super.endExpressionStatement(expression);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
contextNode = expression;
|
||||||
|
throw new EndOfFileException();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,6 +20,7 @@ import org.eclipse.cdt.core.parser.ast.ASTNotImplementedException;
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTExpression;
|
import org.eclipse.cdt.core.parser.ast.IASTExpression;
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTReference;
|
import org.eclipse.cdt.core.parser.ast.IASTReference;
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTTypeId;
|
import org.eclipse.cdt.core.parser.ast.IASTTypeId;
|
||||||
|
import org.eclipse.cdt.core.parser.ast.IASTNode.LookupError;
|
||||||
import org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol;
|
import org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol;
|
||||||
import org.eclipse.cdt.internal.core.parser.pst.TypeInfo;
|
import org.eclipse.cdt.internal.core.parser.pst.TypeInfo;
|
||||||
|
|
||||||
|
@ -310,7 +311,6 @@ public class ASTExpression extends ASTNode implements IASTExpression
|
||||||
}
|
}
|
||||||
return stringRepresentation;
|
return stringRepresentation;
|
||||||
}
|
}
|
||||||
|
|
||||||
public IContainerSymbol getLookupQualificationSymbol() throws LookupError {
|
public IContainerSymbol getLookupQualificationSymbol() throws LookupError {
|
||||||
ExpressionResult result = getResultType();
|
ExpressionResult result = getResultType();
|
||||||
TypeInfo type = (result != null ) ? getResultType().getResult() : null;
|
TypeInfo type = (result != null ) ? getResultType().getResult() : null;
|
||||||
|
@ -325,5 +325,36 @@ public class ASTExpression extends ASTNode implements IASTExpression
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
|
} /**
|
||||||
|
* @param duple
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public ASTExpression findOwnerExpressionForIDExpression(ITokenDuple duple) {
|
||||||
|
if( isIDExpressionForDuple( lhs, duple ) || isIDExpressionForDuple(rhs, duple) || isIDExpressionForDuple(thirdExpression, duple))
|
||||||
|
return this;
|
||||||
|
ASTExpression result = recursiveFindExpressionForDuple(lhs, duple);
|
||||||
|
if( result != null ) return result;
|
||||||
|
result = recursiveFindExpressionForDuple(rhs, duple);
|
||||||
|
if( result != null ) return result;
|
||||||
|
result = recursiveFindExpressionForDuple(thirdExpression, duple);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param duple
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private ASTExpression recursiveFindExpressionForDuple(IASTExpression expression, ITokenDuple duple) {
|
||||||
|
return ((ASTExpression)expression).findOwnerExpressionForIDExpression(duple);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected boolean isIDExpressionForDuple( IASTExpression expression, ITokenDuple duple )
|
||||||
|
{
|
||||||
|
if( expression == null ) return false;
|
||||||
|
if( expression.getExpressionKind() == IASTExpression.Kind.ID_EXPRESSION &&
|
||||||
|
expression instanceof ASTExpression &&
|
||||||
|
((ASTExpression)expression).getIdExpressionTokenDuple().equals( duple ) )
|
||||||
|
return true;
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3294,12 +3294,48 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.eclipse.cdt.core.parser.ast.IASTFactory#lookupSymbolInContext(org.eclipse.cdt.core.parser.ast.IASTScope, org.eclipse.cdt.core.parser.ITokenDuple)
|
* @see org.eclipse.cdt.core.parser.ast.IASTFactory#lookupSymbolInContext(org.eclipse.cdt.core.parser.ast.IASTScope, org.eclipse.cdt.core.parser.ITokenDuple)
|
||||||
*/
|
*/
|
||||||
public IASTNode lookupSymbolInContext(IASTScope scope, ITokenDuple duple) throws ASTNotImplementedException {
|
public IASTNode lookupSymbolInContext(IASTScope scope, ITokenDuple duple, IASTNode reference) throws ASTNotImplementedException {
|
||||||
ISymbol s = null;
|
ISymbol s = null;
|
||||||
|
if( reference == null ) {
|
||||||
try {
|
try {
|
||||||
s = lookupQualifiedName( scopeToSymbol( scope ), duple, new ArrayList(), false );
|
s = lookupQualifiedName( scopeToSymbol( scope ), duple, new ArrayList(), false );
|
||||||
} catch (ASTSemanticException e) {
|
} catch (ASTSemanticException e) {
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if( reference instanceof ASTExpression )
|
||||||
|
{
|
||||||
|
ASTExpression expression = (ASTExpression) reference;
|
||||||
|
if( expression.getExpressionKind() == IASTExpression.Kind.ID_EXPRESSION )
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
s = lookupQualifiedName( scopeToSymbol( scope ), duple, new ArrayList(), false );
|
||||||
|
} catch (ASTSemanticException e1) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ASTExpression ownerExpression = expression.findOwnerExpressionForIDExpression( duple );
|
||||||
|
if( ownerExpression == null ) return null;
|
||||||
|
if( ownerExpression.getExpressionKind().isPostfixMemberReference() )
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
s = lookupQualifiedName( getSearchScope(ownerExpression.getExpressionKind(), ownerExpression.getLHSExpression(), scopeToSymbol(scope)), duple, new ArrayList(), false );
|
||||||
|
} catch (ASTSemanticException e) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
s = lookupQualifiedName( scopeToSymbol( scope ), duple, new ArrayList(), false );
|
||||||
|
} catch (ASTSemanticException e1) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
if ( s == null ) return null;
|
if ( s == null ) return null;
|
||||||
return s.getASTExtension().getPrimaryDeclaration();
|
return s.getASTExtension().getPrimaryDeclaration();
|
||||||
}
|
}
|
||||||
|
@ -3314,7 +3350,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|
||||||
if( expression instanceof ASTExpression)
|
if( expression instanceof ASTExpression)
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
return lookupSymbolInContext(scope, ((ASTExpression)expression).getIdExpressionTokenDuple());
|
return lookupSymbolInContext(scope, ((ASTExpression)expression).getIdExpressionTokenDuple(), null);
|
||||||
} catch (ASTNotImplementedException e) {
|
} catch (ASTNotImplementedException e) {
|
||||||
// assert false : e;
|
// assert false : e;
|
||||||
}
|
}
|
||||||
|
|
|
@ -878,7 +878,7 @@ public class ExpressionParseASTFactory extends BaseASTFactory implements IASTFac
|
||||||
* @see org.eclipse.cdt.core.parser.ast.IASTFactory#lookupSymbolInContext(org.eclipse.cdt.core.parser.ast.IASTScope,
|
* @see org.eclipse.cdt.core.parser.ast.IASTFactory#lookupSymbolInContext(org.eclipse.cdt.core.parser.ast.IASTScope,
|
||||||
* org.eclipse.cdt.core.parser.ITokenDuple)
|
* org.eclipse.cdt.core.parser.ITokenDuple)
|
||||||
*/
|
*/
|
||||||
public IASTNode lookupSymbolInContext(IASTScope scope, ITokenDuple duple)
|
public IASTNode lookupSymbolInContext(IASTScope scope, ITokenDuple duple, IASTNode reference)
|
||||||
throws ASTNotImplementedException {
|
throws ASTNotImplementedException {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
|
@ -348,7 +348,7 @@ public class QuickParseASTFactory extends BaseASTFactory implements IASTFactory
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.eclipse.cdt.core.parser.ast.IASTFactory#lookupSymbolInContext(org.eclipse.cdt.core.parser.ast.IASTScope, org.eclipse.cdt.core.parser.ITokenDuple)
|
* @see org.eclipse.cdt.core.parser.ast.IASTFactory#lookupSymbolInContext(org.eclipse.cdt.core.parser.ast.IASTScope, org.eclipse.cdt.core.parser.ITokenDuple)
|
||||||
*/
|
*/
|
||||||
public IASTNode lookupSymbolInContext(IASTScope scope, ITokenDuple duple) throws ASTNotImplementedException {
|
public IASTNode lookupSymbolInContext(IASTScope scope, ITokenDuple duple, IASTNode reference) throws ASTNotImplementedException {
|
||||||
throw new ASTNotImplementedException();
|
throw new ASTNotImplementedException();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -18,10 +18,6 @@ import java.util.NoSuchElementException;
|
||||||
|
|
||||||
import org.eclipse.cdt.core.parser.IToken;
|
import org.eclipse.cdt.core.parser.IToken;
|
||||||
import org.eclipse.cdt.core.parser.ITokenDuple;
|
import org.eclipse.cdt.core.parser.ITokenDuple;
|
||||||
import org.eclipse.cdt.core.parser.ast.ASTNotImplementedException;
|
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTFactory;
|
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTNode;
|
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTScope;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author jcamelon
|
* @author jcamelon
|
||||||
|
@ -363,19 +359,6 @@ public class TokenDuple implements ITokenDuple {
|
||||||
return lastFound;
|
return lastFound;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
|
||||||
* @see org.eclipse.cdt.core.parser.ITokenDuple#lookup(org.eclipse.cdt.core.parser.ast.IASTFactory)
|
|
||||||
*/
|
|
||||||
public IASTNode lookup(IASTFactory factory, IASTScope scope) {
|
|
||||||
// check syntax of the node
|
|
||||||
|
|
||||||
try {
|
|
||||||
return factory.lookupSymbolInContext(scope, this );
|
|
||||||
} catch (ASTNotImplementedException e) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.eclipse.cdt.core.parser.ITokenDuple#getEndOffset()
|
* @see org.eclipse.cdt.core.parser.ITokenDuple#getEndOffset()
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Add table
Reference in a new issue