@Override public void visitBreak(JCBreak tree) { storePositions(tree); super.visitBreak(tree); }
@Override public void visitModifiers(JCModifiers mods) { storePositions(mods); super.visitModifiers(mods); }
@Override public void visitTree(JCTree tree) { storePositions(tree); super.visitTree(tree); }
@Override public void visitWildcard(JCWildcard tree) { storePositions(tree); super.visitWildcard(tree); }
@Override public void visitErroneous(JCErroneous tree) { storePositions(tree); super.visitErroneous(tree); }
@Override public void visitTypeIdent(JCPrimitiveTypeTree tree) { storePositions(tree); super.visitTypeIdent(tree); }
@Override public void visitTypeApply(JCTypeApply tree) { storePositions(tree); super.visitTypeApply(tree); }
@Override public void visitNewClass(JCNewClass tree) { storePositions(tree); super.visitNewClass(tree); }
@Override public void visitNewArray(JCNewArray tree) { storePositions(tree); super.visitNewArray(tree); }
@Override public void visitAssert(JCAssert tree) { storePositions(tree); super.visitAssert(tree); }
@Override public void visitApply(JCMethodInvocation tree) { storePositions(tree); super.visitApply(tree); }
@Override public void visitThrow(JCThrow tree) { storePositions(tree); super.visitThrow(tree); }
@Override public void visitReturn(JCReturn tree) { storePositions(tree); super.visitReturn(tree); }
@Override public void visitContinue(JCContinue tree) { storePositions(tree); super.visitContinue(tree); }
@Override public void visitIdent(JCIdent tree) { storePositions(tree); super.visitIdent(tree); }
@Override public void visitParens(JCParens tree) { storePositions(tree); super.visitParens(tree); }
@Override public void visitLiteral(JCLiteral tree) { storePositions(tree); super.visitLiteral(tree); }
@Override public void visitAssignop(JCAssignOp tree) { storePositions(tree); super.visitAssignop(tree); }
@Override public void visitTypeArray(JCArrayTypeTree tree) { storePositions(tree); super.visitTypeArray(tree); }
@Override public void visitBinary(JCBinary tree) { storePositions(tree); super.visitBinary(tree); }
@Override public void visitTypeParameter(JCTypeParameter tree) { storePositions(tree); super.visitTypeParameter(tree); }
@Override public void visitTypeCast(JCTypeCast tree) { storePositions(tree); super.visitTypeCast(tree); }
@Override public void visitTypeBoundKind(TypeBoundKind tree) { storePositions(tree); super.visitTypeBoundKind(tree); }
@Override public void visitTypeTest(JCInstanceOf tree) { storePositions(tree); super.visitTypeTest(tree); }
@Override public void visitLetExpr(LetExpr tree) { storePositions(tree); super.visitLetExpr(tree); }
@Override public void visitIndexed(JCArrayAccess tree) { storePositions(tree); super.visitIndexed(tree); }
@Override public void visitAnnotation(JCAnnotation tree) { storePositions(tree); super.visitAnnotation(tree); }
@Override public void visitSelect(JCFieldAccess tree) { storePositions(tree); super.visitSelect(tree); }
public String getJavaSourceCodeWithCeylonPositions() { final CharArrayWriter writer = new CharArrayWriter(); Pretty printer = new Pretty(writer, true) { int previousCeylonPosition = -1; int previousPositionInString = 0; private void outputCeylonPosition(JCTree tree) { try { int currentCeylonPosition = tree.getPreferredPosition(); int currentPositionInString = writer.size(); if (previousCeylonPosition != currentCeylonPosition || previousPositionInString != currentPositionInString) { if (currentCeylonPosition != -1 && currentCeylonPosition != 0) { writer.write("/* " + formatCeylonPosition(currentCeylonPosition) + " */"); } previousCeylonPosition = currentCeylonPosition; previousPositionInString = writer.size(); } } catch (IOException e) { e.printStackTrace(); } } @Override public void visitTopLevel(JCCompilationUnit tree) { outputCeylonPosition(tree); super.visitTopLevel(tree); } @Override public void visitImport(JCImport tree) { outputCeylonPosition(tree); super.visitImport(tree); } @Override public void visitClassDef(JCClassDecl tree) { outputCeylonPosition(tree); super.visitClassDef(tree); } @Override public void visitMethodDef(JCMethodDecl tree) { outputCeylonPosition(tree); super.visitMethodDef(tree); } @Override public void visitVarDef(JCVariableDecl tree) { outputCeylonPosition(tree); super.visitVarDef(tree); } @Override public void visitSkip(JCSkip tree) { outputCeylonPosition(tree); super.visitSkip(tree); } @Override public void visitBlock(JCBlock tree) { outputCeylonPosition(tree); super.visitBlock(tree); tree.endpos = currentPosition - 1; } @Override public void visitDoLoop(JCDoWhileLoop tree) { outputCeylonPosition(tree); super.visitDoLoop(tree); } @Override public void visitWhileLoop(JCWhileLoop tree) { outputCeylonPosition(tree); super.visitWhileLoop(tree); } @Override public void visitForLoop(JCForLoop tree) { outputCeylonPosition(tree); super.visitForLoop(tree); } @Override public void visitForeachLoop(JCEnhancedForLoop tree) { outputCeylonPosition(tree); super.visitForeachLoop(tree); } @Override public void visitLabelled(JCLabeledStatement tree) { outputCeylonPosition(tree); super.visitLabelled(tree); } @Override public void visitSwitch(JCSwitch tree) { outputCeylonPosition(tree); super.visitSwitch(tree); } @Override public void visitCase(JCCase tree) { outputCeylonPosition(tree); super.visitCase(tree); } @Override public void visitSynchronized(JCSynchronized tree) { outputCeylonPosition(tree); super.visitSynchronized(tree); } @Override public void visitTry(JCTry tree) { outputCeylonPosition(tree); super.visitTry(tree); } @Override public void visitCatch(JCCatch tree) { outputCeylonPosition(tree); super.visitCatch(tree); } @Override public void visitConditional(JCConditional tree) { outputCeylonPosition(tree); super.visitConditional(tree); } @Override public void visitIf(JCIf tree) { outputCeylonPosition(tree); super.visitIf(tree); } @Override public void visitExec(JCExpressionStatement tree) { outputCeylonPosition(tree); super.visitExec(tree); } @Override public void visitBreak(JCBreak tree) { outputCeylonPosition(tree); super.visitBreak(tree); } @Override public void visitContinue(JCContinue tree) { outputCeylonPosition(tree); super.visitContinue(tree); } @Override public void visitReturn(JCReturn tree) { outputCeylonPosition(tree); super.visitReturn(tree); } @Override public void visitThrow(JCThrow tree) { outputCeylonPosition(tree); super.visitThrow(tree); } @Override public void visitAssert(JCAssert tree) { outputCeylonPosition(tree); super.visitAssert(tree); } @Override public void visitApply(JCMethodInvocation tree) { outputCeylonPosition(tree); super.visitApply(tree); } @Override public void visitNewClass(JCNewClass tree) { outputCeylonPosition(tree); super.visitNewClass(tree); } @Override public void visitNewArray(JCNewArray tree) { outputCeylonPosition(tree); super.visitNewArray(tree); } @Override public void visitParens(JCParens tree) { outputCeylonPosition(tree); super.visitParens(tree); } @Override public void visitAssign(JCAssign tree) { outputCeylonPosition(tree); super.visitAssign(tree); } @Override public void visitAssignop(JCAssignOp tree) { outputCeylonPosition(tree); super.visitAssignop(tree); } @Override public void visitUnary(JCUnary tree) { outputCeylonPosition(tree); super.visitUnary(tree); } @Override public void visitBinary(JCBinary tree) { outputCeylonPosition(tree); super.visitBinary(tree); } @Override public void visitTypeCast(JCTypeCast tree) { outputCeylonPosition(tree); super.visitTypeCast(tree); } @Override public void visitTypeTest(JCInstanceOf tree) { outputCeylonPosition(tree); super.visitTypeTest(tree); } @Override public void visitIndexed(JCArrayAccess tree) { outputCeylonPosition(tree); super.visitIndexed(tree); } @Override public void visitSelect(JCFieldAccess tree) { outputCeylonPosition(tree); super.visitSelect(tree); } @Override public void visitIdent(JCIdent tree) { outputCeylonPosition(tree); super.visitIdent(tree); } @Override public void visitLiteral(JCLiteral tree) { outputCeylonPosition(tree); super.visitLiteral(tree); } @Override public void visitTypeIdent(JCPrimitiveTypeTree tree) { outputCeylonPosition(tree); super.visitTypeIdent(tree); } @Override public void visitTypeArray(JCArrayTypeTree tree) { outputCeylonPosition(tree); super.visitTypeArray(tree); } @Override public void visitTypeApply(JCTypeApply tree) { outputCeylonPosition(tree); super.visitTypeApply(tree); } @Override public void visitTypeParameter(JCTypeParameter tree) { outputCeylonPosition(tree); super.visitTypeParameter(tree); } @Override public void visitWildcard(JCWildcard tree) { outputCeylonPosition(tree); super.visitWildcard(tree); } @Override public void visitTypeBoundKind(TypeBoundKind tree) { outputCeylonPosition(tree); super.visitTypeBoundKind(tree); } @Override public void visitErroneous(JCErroneous tree) { outputCeylonPosition(tree); super.visitErroneous(tree); } @Override public void visitLetExpr(LetExpr tree) { outputCeylonPosition(tree); super.visitLetExpr(tree); } @Override public void visitModifiers(JCModifiers mods) { outputCeylonPosition(mods); super.visitModifiers(mods); } @Override public void visitAnnotation(JCAnnotation tree) { outputCeylonPosition(tree); super.visitAnnotation(tree); } @Override public void visitTree(JCTree tree) { outputCeylonPosition(tree); super.visitTree(tree); } }; printer.visitTopLevel(unit); return writer.toString(); }
@Override public void visitExec(JCExpressionStatement tree) { storePositions(tree); super.visitExec(tree); }