mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-08-08 00:35:49 +02:00
Fixed a few incorrect locations/offsets.
This commit is contained in:
parent
493b29d4e4
commit
9592a5366f
4 changed files with 40 additions and 7 deletions
|
@ -25,7 +25,8 @@ public interface IASTUnaryExpression extends IASTExpression {
|
|||
public static final int op_sizeof = 8;
|
||||
public static final int op_postFixIncr = 9;
|
||||
public static final int op_postFixDecr = 10;
|
||||
public static final int op_last = op_postFixDecr;
|
||||
public static final int op_bracketedPrimary = 11;
|
||||
public static final int op_last = op_bracketedPrimary;
|
||||
|
||||
public int getOperator();
|
||||
public void setOperator( int value );
|
||||
|
|
|
@ -1124,8 +1124,8 @@ public class GNUCSourceParser extends AbstractGNUSourceCodeParser {
|
|||
t = consume();
|
||||
//TODO - do we need to return a wrapper?
|
||||
IASTExpression lhs = expression();
|
||||
consume(IToken.tRPAREN);
|
||||
return lhs;
|
||||
int finalOffset = consume(IToken.tRPAREN).getEndOffset();
|
||||
return buildUnaryExpression( IASTUnaryExpression.op_bracketedPrimary, lhs, t.getOffset(), finalOffset );
|
||||
case IToken.tIDENTIFIER:
|
||||
|
||||
int startingOffset = LA(1).getOffset();
|
||||
|
@ -1694,6 +1694,7 @@ public class GNUCSourceParser extends AbstractGNUSourceCodeParser {
|
|||
d.setInitializer(i);
|
||||
i.setParent(d);
|
||||
i.setPropertyInParent(IASTDeclarator.INITIALIZER);
|
||||
((ASTNode)d).setLength( calculateEndOffset( i ) - ((ASTNode)d).getOffset() );
|
||||
}
|
||||
return d;
|
||||
} finally {
|
||||
|
|
|
@ -1675,13 +1675,12 @@ public class GNUCPPSourceParser extends AbstractGNUSourceCodeParser {
|
|||
if (templateIdScopes.size() > 0) {
|
||||
templateIdScopes.push(IToken.tLPAREN);
|
||||
}
|
||||
//TODO We need to wrap this
|
||||
IASTExpression lhs = expression();
|
||||
consume(IToken.tRPAREN).getEndOffset();
|
||||
int finalOffset = consume(IToken.tRPAREN).getEndOffset();
|
||||
if (templateIdScopes.size() > 0) {
|
||||
templateIdScopes.pop();
|
||||
}
|
||||
return lhs;
|
||||
return buildUnaryExpression( IASTUnaryExpression.op_bracketedPrimary, lhs, t.getOffset(), finalOffset );
|
||||
case IToken.tIDENTIFIER:
|
||||
case IToken.tCOLONCOLON:
|
||||
case IToken.t_operator:
|
||||
|
@ -3317,6 +3316,7 @@ public class GNUCPPSourceParser extends AbstractGNUSourceCodeParser {
|
|||
d.setInitializer(initializer);
|
||||
initializer.setParent(d);
|
||||
initializer.setPropertyInParent(IASTDeclarator.INITIALIZER);
|
||||
((ASTNode)d).setLength( calculateEndOffset( initializer ) - ((ASTNode)d).getOffset() );
|
||||
}
|
||||
|
||||
return d;
|
||||
|
|
|
@ -10,6 +10,8 @@
|
|||
***********************************************************************/
|
||||
package org.eclipse.cdt.internal.core.parser.token;
|
||||
|
||||
import org.eclipse.cdt.core.parser.IToken;
|
||||
|
||||
|
||||
/**
|
||||
* @author johnc
|
||||
|
@ -47,10 +49,39 @@ public class ImagedToken extends SimpleToken {
|
|||
{
|
||||
this.image = image;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.internal.core.parser.token.SimpleToken#getOffset()
|
||||
*/
|
||||
public int getOffset() {
|
||||
int s_val = super.getOffset();
|
||||
switch( getType() )
|
||||
{
|
||||
case IToken.tSTRING:
|
||||
case IToken.tCHAR:
|
||||
return s_val;
|
||||
case IToken.tLSTRING:
|
||||
case IToken.tLCHAR:
|
||||
return s_val - 1;
|
||||
default:
|
||||
return s_val;
|
||||
}
|
||||
}
|
||||
|
||||
public int getLength() {
|
||||
if( getCharImage() == null )
|
||||
return 0;
|
||||
return getCharImage().length;
|
||||
int s_length = getCharImage().length;
|
||||
switch( getType() )
|
||||
{
|
||||
case IToken.tSTRING:
|
||||
case IToken.tCHAR:
|
||||
return s_length + 2;
|
||||
case IToken.tLSTRING:
|
||||
case IToken.tLCHAR:
|
||||
return s_length + 3;
|
||||
default:
|
||||
return s_length;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue