private TextPosition startOf(String token, ASTNode node) { // try to compensate for the fact that getLastLineNumber() is sometimes wrong int lastLineIndex = Math.max(node.getLineNumber(), node.getLastLineNumber()) - 1; for (int lineIndex = lastLineIndex; lineIndex >= 0; lineIndex--) { int columnIndex = lineIndex == lastLineIndex ? lines[lineIndex].lastIndexOf(token, node.getColumnNumber() - 1) : lines[lineIndex].lastIndexOf(token); if (columnIndex != -1) return TextPosition.create(lineIndex + 1, columnIndex + 1); } throw new IllegalArgumentException(String.format("token %s not found in expression", token)); } }
public String lookup(ASTNode node) { StringBuilder text = new StringBuilder(); for (int i = node.getLineNumber(); i <= node.getLastLineNumber(); i++) { String line = sourceUnit.getSample(i, 0, janitor); if (line == null) { return null; // most probably a Groovy bug, but we prefer to handle this situation gracefully } try { if (i == node.getLastLineNumber()) line = line.substring(0, node.getLastColumnNumber() - 1); if (i == node.getLineNumber()) line = line.substring(node.getColumnNumber() - 1); text.append(line); if (i != node.getLastLineNumber()) text.append('\n'); } catch (StringIndexOutOfBoundsException e) { return null; // most probably a Groovy bug, but we prefer to handle this situation gracefully } } return text.toString().trim(); }
private static int getLine(ASTNode node) { return node.getLineNumber() > 0 ? node.getLineNumber() : node.getLastLineNumber(); }
public static TextPosition endOf(ASTNode node) { return create(node.getLastLineNumber(), node.getLastColumnNumber()); }
for (int x = expression.getLineNumber(); x <= expression.getLastLineNumber(); x++) { String line = readerSource.getLine(x, null); if (line == null) { ); if (x == expression.getLastLineNumber()) { line = line.substring(0, expression.getLastColumnNumber() - 1);
private static boolean hasPlausibleSourcePosition(ASTNode node) { return node.getLineNumber() > 0 && node.getColumnNumber() > 0 && node.getLastLineNumber() >= node.getLineNumber() && node.getLastColumnNumber() > (node.getLineNumber() == node.getLastLineNumber() ? node.getColumnNumber() : 0); }
/** * Sets the source position using another ASTNode. * The sourcePosition consists of a line/column pair for * the start and a line/column pair for the end of the * expression or statement * * @param node - the node used to configure the position information */ public void setSourcePosition(ASTNode node) { this.columnNumber = node.getColumnNumber(); this.lastLineNumber = node.getLastLineNumber(); this.lastColumnNumber = node.getLastColumnNumber(); this.lineNumber = node.getLineNumber(); }
public SyntaxException(String message, ASTNode node) { this(message, node.getLineNumber(), node.getColumnNumber(), node.getLastLineNumber(), node.getLastColumnNumber()); }
protected void visitNode(ASTNode node) { String nodeName = node.getClass().getName(); //get classname without package nodeName = nodeName.substring(nodeName.lastIndexOf(".") + 1,nodeName.length()); astString.append("["); astString.append(nodeName); astString.append(",("); astString.append(node.getLineNumber()); astString.append(":"); astString.append(node.getColumnNumber()); astString.append("),("); astString.append(node.getLastLineNumber()); astString.append(":"); astString.append(node.getLastColumnNumber()); astString.append(")]"); //String of each node looks like: [AssertStatement,(1:1),(1:20)] }
/** * Tells if the source position for the given AST node is plausible. * Does not imply that the source position is correct. * * @param node an AST node * @return <tt>true</tt> iff the AST node has a plausible source position */ public static boolean hasPlausibleSourcePosition(ASTNode node) { return node.getLineNumber() > 0 && node.getLastLineNumber() >= node.getLineNumber() && node.getColumnNumber() > 0 && node.getLastColumnNumber() > node.getColumnNumber(); }
@Override public void addError(final String msg, final ASTNode expr) { Long err = ((long) expr.getLineNumber()) << 16 + expr.getColumnNumber(); if ((DEBUG_GENERATED_CODE && expr.getLineNumber() < 0) || !typeCheckingContext.reportedErrors.contains(err)) { typeCheckingContext.getErrorCollector().addErrorAndContinue(new SyntaxErrorMessage( new SyntaxException(msg + '\n', expr.getLineNumber(), expr.getColumnNumber(), expr.getLastLineNumber(), expr.getLastColumnNumber()), typeCheckingContext.source) ); typeCheckingContext.reportedErrors.add(err); } }
public void throwParserException() throws SyntaxException { final ASTNode node = getNode(); throw new SyntaxException(getMessage(), node.getLineNumber(), node.getColumnNumber(), node.getLastLineNumber(), node.getLastColumnNumber()); }
public static void copySourcePosition(ASTNode from, ASTNode to) { to.setLineNumber(from.getLineNumber()); to.setLastLineNumber(from.getLastLineNumber()); to.setColumnNumber(from.getColumnNumber()); to.setLastColumnNumber(from.getLastColumnNumber()); }
public void addError(String msg, ASTNode expr) { sourceUnit.getErrorCollector().addErrorAndContinue(new SyntaxErrorMessage( new SyntaxException(msg + '\n', expr.getLineNumber(), expr.getColumnNumber(), expr.getLastLineNumber(), expr.getLastColumnNumber()), sourceUnit) ); }
public void addError(String msg, ASTNode expr) { this.source.getErrorCollector().addErrorAndContinue( new SyntaxErrorMessage( new SyntaxException(msg + '\n', expr.getLineNumber(), expr.getColumnNumber(), expr.getLastLineNumber(), expr.getLastColumnNumber()), this.source) ); }
/** * Adds a new syntax error to the source unit and then continues. * * @param message the message * @param node the node for the error report * @param source the source unit for the error report */ protected void addError(String message, ASTNode node, SourceUnit source) { source.getErrorCollector().addErrorAndContinue(new SyntaxErrorMessage(new SyntaxException( message, node.getLineNumber(), node.getColumnNumber(), node.getLastLineNumber(), node.getLastColumnNumber() ), source)); }
protected void addError(String msg, ASTNode expr) { this.errorCollector.addErrorAndContinue( new SyntaxErrorMessage(new SyntaxException(msg + " in @" + this.reportClass.getName() + '\n', expr.getLineNumber(), expr.getColumnNumber(), expr.getLastLineNumber(), expr.getLastColumnNumber()), this.source) ); }
/** * Reports an error back to the source unit. * * @param msg the error message * @param expr the expression that caused the error message. */ protected void addError(String msg, ASTNode expr) { sourceUnit.getErrorCollector().addErrorAndContinue( new SyntaxErrorMessage(new SyntaxException(msg + '\n', expr.getLineNumber(), expr.getColumnNumber(), expr.getLastLineNumber(), expr.getLastColumnNumber()), sourceUnit) ); }
public void addError(String msg, ASTNode expr) { SourceUnit source = getSourceUnit(); source.getErrorCollector().addErrorAndContinue( new SyntaxErrorMessage(new SyntaxException(msg + '\n', expr.getLineNumber(), expr.getColumnNumber(), expr.getLastLineNumber(), expr.getLastColumnNumber()), source) ); }
ASTNode node = rpe.getNode(); getErrorCollector().addError( new SyntaxException(rpe.getMessage(), node.getLineNumber(), node.getColumnNumber(), node.getLastLineNumber(), node.getLastColumnNumber()), source );