1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

Fixed 71534 - [Parser] IUsing does not have starting offset (IASTUsingDirective)

This commit is contained in:
John Camelon 2004-09-07 20:04:30 +00:00
parent 0c39fffd3c
commit 9ac724d2ed
9 changed files with 239 additions and 12 deletions

View file

@ -753,7 +753,7 @@ public class CModelBuilder {
parent.addChild(element);
// set positions
//element.setIdPos(usingDirDeclaration.getNameOffset(), (usingDirective.getNameEndOffset() - usingDirDeclaration.getNameOffset()));
element.setIdPos(usingDirDeclaration.getNameOffset(), (usingDirDeclaration.getNameEndOffset() - usingDirDeclaration.getNameOffset()));
element.setPos(usingDirDeclaration.getStartingOffset(), usingDirDeclaration.getEndingOffset() - usingDirDeclaration.getStartingOffset());
element.setLines(usingDirDeclaration.getStartingLine(), usingDirDeclaration.getEndingLine() );
this.newElements.put(element, element.getElementInfo());
@ -770,7 +770,7 @@ public class CModelBuilder {
parent.addChild(element);
// set positions
//element.setIdPos(usingDeclaration.getNameOffset(), (usingDeclaration.getNameEndOffset() - usingDeclaration.getNameOffset()));
element.setIdPos(usingDeclaration.getNameOffset(), (usingDeclaration.getNameEndOffset() - usingDeclaration.getNameOffset()));
element.setPos(usingDeclaration.getStartingOffset(), usingDeclaration.getEndingOffset() - usingDeclaration.getStartingOffset());
element.setLines(usingDeclaration.getStartingLine(), usingDeclaration.getEndingLine() );
this.newElements.put(element, element.getElementInfo());

View file

@ -16,7 +16,7 @@ import java.util.Iterator;
* @author jcamelon
*
*/
public interface IASTUsingDeclaration extends IASTDeclaration, IASTOffsetableElement {
public interface IASTUsingDeclaration extends IASTDeclaration, IASTOffsetableNamedElement {
public boolean isTypename();
public String usingTypeName();

View file

@ -14,7 +14,7 @@ package org.eclipse.cdt.core.parser.ast;
* @author jcamelon
*
*/
public interface IASTUsingDirective extends IASTDeclaration, IASTOffsetableElement {
public interface IASTUsingDirective extends IASTDeclaration, IASTOffsetableNamedElement {
public String getNamespaceName();
public IASTNamespaceDefinition getNamespaceDefinition() throws ASTNotImplementedException;

View file

@ -41,9 +41,12 @@ public class ASTUsingDeclaration extends ASTNode implements IASTUsingDeclaration
/**
* @param filename
* @param nStart
* @param nEnd
* @param nLine
*
*/
public ASTUsingDeclaration( IASTScope ownerScope, char[] name, List declarations, boolean isTypeName, int startingOffset, int startingLine, int endingOffset, int endingLine, List references, char[] filename )
public ASTUsingDeclaration( IASTScope ownerScope, char[] name, List declarations, boolean isTypeName, int startingOffset, int startingLine, int endingOffset, int endingLine, List references, char[] filename, int nStart, int nEnd, int nLine )
{
this.ownerScope = ownerScope;
this.isTypeName = isTypeName;
@ -53,6 +56,8 @@ public class ASTUsingDeclaration extends ASTNode implements IASTUsingDeclaration
setEndingOffsetAndLineNumber(endingOffset, endingLine);
this.references = references;
fn = filename;
setNameOffset(nStart);
setNameEndOffsetAndLineNumber( nEnd, nLine );
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTUsingDeclaration#isTypename()
@ -159,4 +164,58 @@ public class ASTUsingDeclaration extends ASTNode implements IASTUsingDeclaration
return endingOffset;
}
private int nameEndOffset;
private int nameStartOffset;
private int nameLine;
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement#getName()
*/
public String getName() {
return new String( name );
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement#getNameCharArray()
*/
public char[] getNameCharArray() {
return name;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement#getNameOffset()
*/
public int getNameOffset() {
return nameStartOffset;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement#setNameOffset(int)
*/
public void setNameOffset(int o) {
nameStartOffset = o;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement#getNameEndOffset()
*/
public int getNameEndOffset() {
return nameEndOffset;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement#setNameEndOffsetAndLineNumber(int, int)
*/
public void setNameEndOffsetAndLineNumber(int offset, int lineNumber) {
nameLine = lineNumber;
nameEndOffset = offset;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement#getNameLineNumber()
*/
public int getNameLineNumber() {
return nameLine;
}
}

View file

@ -40,9 +40,12 @@ public class ASTUsingDirective extends ASTAnonymousDeclaration implements IASTUs
* @param startingOffset
* @param endingOffset
* @param filename
* @param nStart
* @param nEnd
* @param nLine
*/
//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, char[] filename )
public ASTUsingDirective(IContainerSymbol ownerSymbol, IUsingDirectiveSymbol usingDirective, int startingOffset, int startingLine, int endingOffset, int endingLine, List references, char[] filename, int nStart, int nEnd, int nLine )
{
super( ownerSymbol );
//namespace = namespaceDefinition;
@ -51,6 +54,8 @@ public class ASTUsingDirective extends ASTAnonymousDeclaration implements IASTUs
setEndingOffsetAndLineNumber(endingOffset, endingLine);
this.references = references;
fn = filename;
setNameOffset( nStart );
setNameEndOffsetAndLineNumber( nEnd, nLine );
}
/* (non-Javadoc)
@ -153,4 +158,58 @@ public class ASTUsingDirective extends ASTAnonymousDeclaration implements IASTUs
return endingOffset;
}
private int nameEndOffset;
private int nameStartOffset;
private int nameLine;
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement#getName()
*/
public String getName() {
return getNamespaceName();
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement#getNameCharArray()
*/
public char[] getNameCharArray() {
return getName().toCharArray();
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement#getNameOffset()
*/
public int getNameOffset() {
return nameStartOffset;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement#setNameOffset(int)
*/
public void setNameOffset(int o) {
nameStartOffset = o;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement#getNameEndOffset()
*/
public int getNameEndOffset() {
return nameEndOffset;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement#setNameEndOffsetAndLineNumber(int, int)
*/
public void setNameEndOffsetAndLineNumber(int offset, int lineNumber) {
nameLine = lineNumber;
nameEndOffset = offset;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement#getNameLineNumber()
*/
public int getNameLineNumber() {
return nameLine;
}
}

View file

@ -459,7 +459,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
handleProblem( pste.createProblemID(), duple.toCharArray(), startingOffset, endingOffset, startingLine, true );
}
ASTUsingDirective using = new ASTUsingDirective( scopeToSymbol(scope), usingDirective, startingOffset, startingLine, endingOffset, endingLine, references, filename );
ASTUsingDirective using = new ASTUsingDirective( scopeToSymbol(scope), usingDirective, startingOffset, startingLine, endingOffset, endingLine, references, filename, duple.getStartOffset(), duple.getEndOffset(), duple.getLineNumber() );
attachSymbolExtension( usingDirective, using );
return using;
@ -548,7 +548,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
}
ASTUsingDeclaration using = new ASTUsingDeclaration( scope, name.getLastToken().getCharImage(),
endResult.getReferencedSymbols(), isTypeName, startingOffset, startingLine, endingOffset, endingLine, references, filename );
endResult.getReferencedSymbols(), isTypeName, startingOffset, startingLine, endingOffset, endingLine, references, filename, name.getStartOffset(), name.getEndOffset(), name.getLineNumber() );
attachSymbolExtension( endResult, using );
return using;

View file

@ -36,7 +36,7 @@ public class ASTUsingDeclaration
}
public ASTUsingDeclaration( IASTScope scope, boolean isTypeName, char[] mappingName, int startingOffset, int startingLine, int endingOffset, int endingLine, char[] filename )
public ASTUsingDeclaration( IASTScope scope, boolean isTypeName, char[] mappingName, int startingOffset, int startingLine, int endingOffset, int endingLine, char[] filename, int nStart, int nEnd, int nLine )
{
super( scope );
isTypename = isTypeName;
@ -44,6 +44,8 @@ public class ASTUsingDeclaration
setStartingOffsetAndLineNumber(startingOffset, startingLine);
setEndingOffsetAndLineNumber(endingOffset, endingLine);
fn = filename;
setNameOffset( nStart );
setNameEndOffsetAndLineNumber( nEnd, nLine );
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTUsingDeclaration#isTypename()
@ -96,6 +98,9 @@ public class ASTUsingDeclaration
throw new ASTNotImplementedException();
}
private int startingLineNumber, startingOffset, endingLineNumber, endingOffset;
private int nameStartOffset;
private int nameEndOffset;
private int nameLine;
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getStartingLine()
*/
@ -139,5 +144,54 @@ public class ASTUsingDeclaration
{
return endingOffset;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement#getName()
*/
public String getName() {
return new String( mappingName );
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement#getNameCharArray()
*/
public char[] getNameCharArray() {
return mappingName;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement#getNameOffset()
*/
public int getNameOffset() {
return nameStartOffset;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement#setNameOffset(int)
*/
public void setNameOffset(int o) {
nameStartOffset = o;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement#getNameEndOffset()
*/
public int getNameEndOffset() {
return nameEndOffset;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement#setNameEndOffsetAndLineNumber(int, int)
*/
public void setNameEndOffsetAndLineNumber(int offset, int lineNumber) {
nameEndOffset = offset;
nameLine = lineNumber;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement#getNameLineNumber()
*/
public int getNameLineNumber() {
return nameLine;
}
}

View file

@ -32,13 +32,15 @@ public class ASTUsingDirective
return fn;
}
public ASTUsingDirective( IASTScope scope, String name, int startingOffset, int startingLine, int endingOffset, int endingLine, char[] filename )
public ASTUsingDirective( IASTScope scope, String name, int startingOffset, int startingLine, int endingOffset, int endingLine, char[] filename, int nStart, int nEnd, int nLine )
{
super( scope );
this.namespaceName = name;
setStartingOffsetAndLineNumber(startingOffset, startingLine);
setEndingOffsetAndLineNumber(endingOffset, endingLine);
fn = filename;
setNameOffset( nStart );
setNameEndOffsetAndLineNumber( nEnd, nLine );
}
private final String namespaceName;
@ -82,6 +84,9 @@ public class ASTUsingDirective
throw new ASTNotImplementedException();
}
private int startingLineNumber, startingOffset, endingLineNumber, endingOffset;
private int nameStartOffset;
private int nameEndOffset;
private int nameLine;
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getStartingLine()
*/
@ -126,4 +131,54 @@ public class ASTUsingDirective
return endingOffset;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement#getName()
*/
public String getName() {
return namespaceName;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement#getNameCharArray()
*/
public char[] getNameCharArray() {
return namespaceName.toCharArray();
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement#getNameOffset()
*/
public int getNameOffset() {
return nameStartOffset;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement#setNameOffset(int)
*/
public void setNameOffset(int o) {
nameStartOffset = o;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement#getNameEndOffset()
*/
public int getNameEndOffset() {
return nameEndOffset;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement#setNameEndOffsetAndLineNumber(int, int)
*/
public void setNameEndOffsetAndLineNumber(int offset, int lineNumber) {
nameEndOffset = offset;
nameLine = lineNumber;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement#getNameLineNumber()
*/
public int getNameLineNumber() {
return nameLine;
}
}

View file

@ -80,7 +80,7 @@ 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, duple.getFilename() );
return new ASTUsingDirective( scope, duple.toString(), startingOffset, startingLine, endingOffset, endingLine, duple.getFilename(), duple.getStartOffset(), duple.getEndOffset(), duple.getLineNumber() );
}
/* (non-Javadoc)
@ -119,7 +119,7 @@ public class QuickParseASTFactory extends BaseASTFactory implements IASTFactory
* @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.toCharArray(), startingOffset, startingLine, endingOffset, endingLine, name.getFilename() );
return new ASTUsingDeclaration( scope, isTypeName, name.toCharArray(), startingOffset, startingLine, endingOffset, endingLine, name.getFilename(), name.getStartOffset(), name.getEndOffset(), name.getLineNumber() );
}
/* (non-Javadoc)