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:
parent
0c39fffd3c
commit
9ac724d2ed
9 changed files with 239 additions and 12 deletions
|
@ -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());
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Add table
Reference in a new issue