@Override public void close() { if (endPrefixSpace) { printerTokenWriter.writeSpace(); } if (end != null && !end.isEmpty()) { printerTokenWriter.writeSeparator(end); } } }
/** * Exits an expression. */ protected void exitCtExpression(CtExpression<?> e) { while ((!context.parenthesedExpression.isEmpty()) && e == context.parenthesedExpression.peek()) { context.parenthesedExpression.pop(); printer.writeSeparator(")"); } if (!(e instanceof CtStatement)) { elementPrinterHelper.writeComment(e, CommentOffset.AFTER); } }
@Override public void visitCtTypeMemberWildcardImportReference(CtTypeMemberWildcardImportReference wildcardReference) { scan(wildcardReference.getTypeReference()); printer.writeSeparator(".").writeSeparator("*"); }
@Override public TokenWriter writeSeparator(String token) { this.listener.onTokenWriterWrite(TokenType.SEPARATOR, token, null, () -> delegate.writeSeparator(token)); return this; }
@Override public <T> void visitCtArrayTypeReference(CtArrayTypeReference<T> reference) { if (reference.isImplicit()) { return; } scan(reference.getComponentType()); if (!context.skipArray()) { printer.writeSeparator("[").writeSeparator("]"); } }
@Override public TokenWriter writeSeparator(String token) { if (isMuted()) { getPrinterHelper().setShouldWriteTabs(false); return this; } delegate.writeSeparator(token); return this; } @Override
private <T, E extends CtExpression<?>> void printCtArrayAccess(CtArrayAccess<T, E> arrayAccess) { enterCtExpression(arrayAccess); scan(arrayAccess.getTarget()); printer.writeSeparator("["); scan(arrayAccess.getIndexExpression()); printer.writeSeparator("]"); exitCtExpression(arrayAccess); }
@Override public <A extends Annotation> void visitCtAnnotationType(CtAnnotationType<A> annotationType) { visitCtType(annotationType); printer.writeSeparator("@").writeKeyword("interface") .writeSpace().writeIdentifier(annotationType.getSimpleName()) .writeSpace().writeSeparator("{").incTab(); elementPrinterHelper.writeElementList(annotationType.getTypeMembers()); printer.decTab().writeSeparator("}"); }
/** * Exits a statement. */ protected void exitCtStatement(CtStatement statement) { if (!(statement instanceof CtBlock || statement instanceof CtIf || statement instanceof CtFor || statement instanceof CtForEach || statement instanceof CtWhile || statement instanceof CtTry || statement instanceof CtSwitch || statement instanceof CtSynchronized || statement instanceof CtClass || statement instanceof CtComment)) { if (context.isStatement(statement) && !context.isFirstForVariable() && !context.isNextForVariable()) { printer.writeSeparator(";"); } } elementPrinterHelper.writeComment(statement, CommentOffset.AFTER); }
@Override public void visitCtWhile(CtWhile whileLoop) { enterCtStatement(whileLoop); printer.writeKeyword("while").writeSpace().writeSeparator("("); scan(whileLoop.getLoopingExpression()); printer.writeSeparator(")"); elementPrinterHelper.writeIfOrLoopBlock(whileLoop.getBody()); exitCtStatement(whileLoop); }
@Override public void visitCtForEach(CtForEach foreach) { enterCtStatement(foreach); printer.writeKeyword("for").writeSpace().writeSeparator("("); scan(foreach.getVariable()); printer.writeSpace().writeSeparator(":").writeSpace(); scan(foreach.getExpression()); printer.writeSeparator(")"); elementPrinterHelper.writeIfOrLoopBlock(foreach.getBody()); exitCtStatement(foreach); }
public void writePackageLine(String packageQualifiedName) { printer.writeKeyword("package").writeSpace(); writeQualifiedName(packageQualifiedName).writeSeparator(";").writeln(); }
@Override public void visitCtSynchronized(CtSynchronized synchro) { enterCtStatement(synchro); printer.writeKeyword("synchronized"); if (synchro.getExpression() != null) { printer.writeSeparator("("); scan(synchro.getExpression()); printer.writeSeparator(")").writeSpace(); } scan(synchro.getBlock()); exitCtStatement(synchro); }
@Override public void visitCtDo(CtDo doLoop) { enterCtStatement(doLoop); printer.writeKeyword("do"); elementPrinterHelper.writeIfOrLoopBlock(doLoop.getBody()); printer.writeKeyword("while").writeSpace().writeSeparator("("); scan(doLoop.getLoopingExpression()); printer.writeSpace().writeSeparator(")"); exitCtStatement(doLoop); }
@Override public void visitCtUsedService(CtUsedService usedService) { printer.writeKeyword("uses").writeSpace(); scan(usedService.getServiceType()); printer.writeSeparator(";").writeln(); }
@Override public void visitCtModuleRequirement(CtModuleRequirement moduleRequirement) { printer.writeKeyword("requires").writeSpace(); if (!moduleRequirement.getRequiresModifiers().isEmpty()) { this.elementPrinterHelper.printList(moduleRequirement.getRequiresModifiers(), null, false, null, false, false, " ", false, false, " ", modifier -> printer.writeKeyword(modifier.name().toLowerCase())); } scan(moduleRequirement.getModuleReference()); printer.writeSeparator(";").writeln(); }
@Override public <T> void visitCtSuperAccess(CtSuperAccess<T> f) { enterCtExpression(f); if (f.getTarget() != null) { scan(f.getTarget()); printer.writeSeparator("."); } printer.writeKeyword("super"); exitCtExpression(f); }
@Override public void visitCtProvidedService(CtProvidedService moduleProvidedService) { printer.writeKeyword("provides").writeSpace(); scan(moduleProvidedService.getServiceType()); this.elementPrinterHelper.printList(moduleProvidedService.getImplementationTypes(), null, false, " with", true, false, ",", true, false, null, implementations -> scan(implementations)); printer.writeSeparator(";").writeln(); }
@Override public void visitCtModule(CtModule module) { enter(module); if (module.isOpenModule()) { printer.writeKeyword("open").writeSpace(); } printer.writeKeyword("module").writeSpace().writeIdentifier(module.getSimpleName()); printer.writeSpace().writeSeparator("{").incTab().writeln(); for (CtModuleDirective moduleDirective : module.getModuleDirectives()) { scan(moduleDirective); } printer.decTab().writeSeparator("}"); exit(module); }
@Override public <T> void visitCtAssert(CtAssert<T> asserted) { enterCtStatement(asserted); printer.writeKeyword("assert").writeSpace(); scan(asserted.getAssertExpression()); if (asserted.getExpression() != null) { printer.writeSpace().writeSeparator(":").writeSpace(); scan(asserted.getExpression()); } exitCtStatement(asserted); }