Package com.google.googlejavaformat.java
Class JavaInputAstVisitor
- java.lang.Object
-
- com.sun.source.util.TreeScanner<R,P>
-
- com.sun.source.util.TreePathScanner<java.lang.Void,java.lang.Void>
-
- com.google.googlejavaformat.java.JavaInputAstVisitor
-
- All Implemented Interfaces:
com.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>
public class JavaInputAstVisitor extends com.sun.source.util.TreePathScanner<java.lang.Void,java.lang.Void>An AST visitor that builds a stream ofOps to format from the givenCompilationUnitTree.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static classJavaInputAstVisitor.AllowLeadingBlankLineWhether to allow leading blank lines in blocks.protected static classJavaInputAstVisitor.AllowTrailingBlankLineWhether to allow trailing blank lines in blocks.(package private) static classJavaInputAstVisitor.AnnotationOrModifierRepresents an annotation or a modifier in aModifiersTree.protected static classJavaInputAstVisitor.BracesOrNotWhether to include braces.protected static classJavaInputAstVisitor.BreakOrNotWhether to break or not.protected static classJavaInputAstVisitor.CollapseEmptyOrNotWhether to collapse empty blocks.protected static classJavaInputAstVisitor.DeclarationKindKind of declaration.(package private) static classJavaInputAstVisitor.DeclarationModifiersAndTypeAnnotationsThe modifiers annotations for a declaration, grouped in to a prefix that contains all of the declaration annotations and modifiers, and a suffix of type annotations.(package private) static classJavaInputAstVisitor.DimensionsOrNotWhether or not to include dimensions.protected static classJavaInputAstVisitor.DirectionDirection for Annotations (usually VERTICAL).protected static classJavaInputAstVisitor.FirstDeclarationsOrNotWhether these declarations are the first in the block.(package private) static classJavaInputAstVisitor.ReceiverParameterWhether the formal parameter declaration is a receiver.(package private) static classJavaInputAstVisitor.VarArgsOrNotWhether or not the declaration is Varargs.
-
Field Summary
Fields Modifier and Type Field Description protected OpsBuilderbuilderprotected static longCOMPACT_RECORD_CONSTRUCTORprivate static java.util.regex.PatternFORMAT_SPECIFIERprotected intindentMultiplierprivate java.util.Deque<java.lang.Boolean>inExpressionA record of whether we have visited into an expression.(package private) static com.google.common.collect.ImmutableSet<java.lang.String>LOG_METHODSprivate static intMAX_ITEM_LENGTH_FOR_FILLINGAllow multi-line filling (of array initializers, argument lists, and boolean expressions) for items with length less than or equal to this threshold.protected Indent.ConstminusFourprotected Indent.ConstminusTwoprotected Indent.ConstplusFourprotected Indent.ConstplusTwoprotected static longRECORDprivate static com.google.common.collect.ImmutableMultimap<java.lang.String,java.lang.String>TYPE_ANNOTATIONSprivate java.util.Set<javax.lang.model.element.Name>typeAnnotationSimpleNamesprotected static Indent.ConstZERO
-
Constructor Summary
Constructors Constructor Description JavaInputAstVisitor(OpsBuilder builder, int indentMultiplier)TheVisitorconstructor.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private java.lang.IntegeractualColumn(com.sun.source.tree.ExpressionTree expression)(package private) voidaddArguments(java.util.List<? extends com.sun.source.tree.ExpressionTree> arguments, Indent plusIndent)Add arguments to a method invocation, etc.protected voidaddBodyDeclarations(java.util.List<? extends com.sun.source.tree.Tree> bodyDeclarations, JavaInputAstVisitor.BracesOrNot braces, JavaInputAstVisitor.FirstDeclarationsOrNot first0)Add a list of declarations.(package private) voidaddTypeArguments(java.util.List<? extends com.sun.source.tree.Tree> typeArguments, Indent plusIndent)Helper methods for method invocations.private booleanambiguousUnaryOperator(com.sun.source.tree.UnaryTree node, java.lang.String operatorName)private voidargList(java.util.List<? extends com.sun.source.tree.ExpressionTree> arguments)private intargumentsAreTabular(java.util.List<? extends com.sun.source.tree.ExpressionTree> arguments)Returns the number of columns if the arguments arg laid out in a grid, or else-1.private static com.google.common.collect.ImmutableList<Op>breakFillList(java.util.Optional<Output.BreakTag> breakTag)private static com.google.common.collect.ImmutableList<Op>breakList(java.util.Optional<Output.BreakTag> breakTag)private static JavaInputAstVisitor.DirectioncanLocalHaveHorizontalAnnotations(com.sun.source.tree.ModifiersTree modifiers)Can a local with a set of modifiers be declared with horizontal annotations? This is currently true if there is at most one parameterless annotation, and no others.private voidcheckForTypeAnnotation(com.sun.source.tree.ImportTree node)private voidclassDeclarationTypeList(java.lang.String token, java.util.List<? extends com.sun.source.tree.Tree> types)private voiddeclareMany(java.util.List<com.sun.source.tree.VariableTree> fragments, JavaInputAstVisitor.Direction annotationDirection)protected intdeclareOne(JavaInputAstVisitor.DeclarationKind kind, JavaInputAstVisitor.Direction annotationsDirection, java.util.Optional<com.sun.source.tree.ModifiersTree> modifiers, com.sun.source.tree.Tree type, javax.lang.model.element.Name name, java.lang.String op, java.lang.String equals, java.util.Optional<com.sun.source.tree.ExpressionTree> initializer, java.util.Optional<java.lang.String> trailing, java.util.Optional<com.sun.source.tree.ExpressionTree> receiverExpression, java.util.Optional<DimensionHelpers.TypeWithDims> typeWithDims)Declare one variable or variable-like thing.private voiddotExpressionArgsAndParen(com.sun.source.tree.ExpressionTree expression, Indent tyargIndent, Indent indent)private voiddotExpressionUpToArgs(com.sun.source.tree.ExpressionTree expression, java.util.Optional<Output.BreakTag> tyargTag)protected voiddropEmptyDeclarations()Skips over extra semi-colons at the top-level, or in a class member declaration lists.private static booleanexpressionsAreParallel(java.util.List<java.util.List<com.sun.source.tree.ExpressionTree>> rows, int column, int atLeastM)Returns true ifatLeastMof the expressions in the given column are the same kind.private static JavaInputAstVisitor.DirectionfieldAnnotationDirection(com.sun.source.tree.ModifiersTree modifiers)Should a field with a set of modifiers be declared with horizontal annotations? This is currently true if all annotations are parameterless annotations.private booleanfillFirstArgument(com.sun.source.tree.ExpressionTree e, java.util.List<com.sun.source.tree.ExpressionTree> items, Indent indent)private static com.google.common.collect.ImmutableList<Op>forceBreakList(java.util.Optional<Output.BreakTag> breakTag)private voidformatAnnotationOrModifier(java.util.Deque<JavaInputAstVisitor.AnnotationOrModifier> modifiers)private voidformatArrayIndices(java.util.Deque<com.sun.source.tree.ExpressionTree> indices)Lays out one or more array indices.(package private) Output.BreakTaggenSym()private static com.sun.source.tree.ExpressionTreegetArrayBase(com.sun.source.tree.ExpressionTree node)Returns the base expression of an erray access, e.g.private static java.util.Deque<com.sun.source.tree.ExpressionTree>getArrayIndices(com.sun.source.tree.ExpressionTree expression)Returns all array indices for the given expression, e.g.private static com.sun.source.tree.ExpressionTreegetMethodReceiver(com.sun.source.tree.MethodInvocationTree methodInvocation)private static java.util.Optional<? extends Input.Token>getNextToken(Input input, int position)protected java.util.List<? extends com.sun.source.tree.Tree>getPermitsClause(com.sun.source.tree.ClassTree node)Gets the permits clause for the given node.private static javax.lang.model.element.NamegetSimpleName(com.sun.source.tree.ImportTree importTree)private booleanhandleLogStatement(com.sun.source.tree.MethodInvocationTree node)Special-cases log statements, to output:protected voidhandleModule(boolean afterFirstToken, com.sun.source.tree.CompilationUnitTree node)private static java.util.List<java.lang.Long>handleStream(java.util.List<com.sun.source.tree.ExpressionTree> parts)private booleanhasJavaDoc(com.sun.source.tree.Tree bodyDeclaration)Does this declaration have javadoc preceding it?private booleanhasOnlyShortItems(java.util.List<? extends com.sun.source.tree.ExpressionTree> expressions)private booleanhasTrailingToken(Input input, java.util.List<? extends com.sun.source.tree.Tree> nodes, java.lang.String token)Does this list of trees end with the specified token?private static <T> java.util.stream.Stream<java.lang.Long>indexes(java.util.stream.Stream<T> stream, com.google.common.base.Predicate<T> predicate)private booleaninExpression()private static booleanisArrayValue(com.sun.source.tree.ExpressionTree argument)private booleanisFormatMethod(java.util.List<? extends com.sun.source.tree.ExpressionTree> arguments)Identifies String formatting methods likeString.format(java.lang.String, java.lang.Object...)which we prefer to format as:private static booleanisModifier(java.lang.String token)private booleanisStringConcat(com.sun.source.tree.ExpressionTree first)(package private) booleanisTypeAnnotation(com.sun.source.tree.AnnotationTree annotationTree)private static booleanisUnaryMinusLiteral(java.lang.String literalTreeSource)protected voidmarkForPartialFormat()private voidmaybeAddDims(java.util.Deque<com.sun.source.tree.ExpressionTree> dimExpressions, java.util.Deque<java.util.List<? extends com.sun.source.tree.AnnotationTree>> annotations)The compiler does not always preserve the concrete syntax of annotated array dimensions, and mixed-notation array dimensions.private voidmaybeAddDims(java.util.Deque<java.util.List<? extends com.sun.source.tree.AnnotationTree>> annotations)private voidmethodBody(com.sun.source.tree.MethodTree node)(package private) static introwLength(java.util.List<? extends com.sun.source.tree.ExpressionTree> row)java.lang.Voidscan(com.sun.source.tree.Tree tree, java.lang.Void unused)private static com.google.common.collect.ImmutableList<java.lang.String>simpleNames(java.util.Deque<com.sun.source.tree.ExpressionTree> stack)Returns the simple names of expressions in a "." chain.(package private) JavaInputAstVisitor.DeclarationModifiersAndTypeAnnotationssplitModifiers(com.sun.source.tree.ModifiersTree modifiersTree, java.util.List<? extends com.sun.source.tree.AnnotationTree> annotations)Examines the token stream to convert the modifiers for a declaration into aJavaInputAstVisitor.DeclarationModifiersAndTypeAnnotations.private voidsplitToken(java.lang.String operatorName)protected voidsync(com.sun.source.tree.Tree node)Sync to position in the input.protected voidtoken(java.lang.String token)Emit aDoc.Token.protected voidtoken(java.lang.String token, Indent plusIndentCommentsBefore)Emit aDoc.Token.(package private) voidtokenBreakTrailingComment(java.lang.String token, Indent breakAndIndentTrailingComment)Emit aDoc.Token, and breaks and indents trailing javadoc or block comments.java.lang.StringtoString()private static com.google.common.collect.ImmutableSetMultimap<java.lang.String,java.lang.String>typeAnnotations()protected voidtypeDeclarationModifiers(com.sun.source.tree.ModifiersTree modifiers)protected voidtypeParametersRest(java.util.List<? extends com.sun.source.tree.TypeParameterTree> typeParameters, Indent plusIndent)Does not omit the leading"<", which should be associated with the type name.private com.sun.tools.javac.tree.JCTree.TagunaryTag(com.sun.source.tree.ExpressionTree expression)private static DimensionHelpers.TypeWithDimsvariableFragmentDims(boolean afterFirstToken, int leadingDims, com.sun.source.tree.Tree type)private static java.util.List<com.sun.source.tree.VariableTree>variableFragments(com.google.common.collect.PeekingIterator<? extends com.sun.source.tree.Tree> it, com.sun.source.tree.Tree first)The parser expands multi-variable declarations into separate single-variable declarations.protected voidvariableName(javax.lang.model.element.Name name)(package private) voidverticalAnnotations(java.util.List<com.sun.source.tree.AnnotationTree> annotations)booleanvisit(javax.lang.model.element.Name name)(package private) voidvisitAndBreakModifiers(com.sun.source.tree.ModifiersTree modifiers, JavaInputAstVisitor.Direction annotationDirection, java.util.Optional<Output.BreakTag> declarationAnnotationBreak)Output combined modifiers and annotations and the trailing break.private voidvisitAnnotatedArrayType(com.sun.source.tree.Tree node)java.lang.VoidvisitAnnotatedType(com.sun.source.tree.AnnotatedTypeTree node, java.lang.Void unused)java.lang.VoidvisitAnnotation(com.sun.source.tree.AnnotationTree node, java.lang.Void unused)voidvisitAnnotationArgument(com.sun.source.tree.AssignmentTree node)protected voidvisitAnnotations(java.util.List<? extends com.sun.source.tree.AnnotationTree> annotations, JavaInputAstVisitor.BreakOrNot breakBefore, JavaInputAstVisitor.BreakOrNot breakAfter)Helper method for annotations.voidvisitAnnotationType(com.sun.source.tree.ClassTree node)java.lang.VoidvisitArrayAccess(com.sun.source.tree.ArrayAccessTree node, java.lang.Void unused)booleanvisitArrayInitializer(java.util.List<? extends com.sun.source.tree.ExpressionTree> expressions)java.lang.VoidvisitArrayType(com.sun.source.tree.ArrayTypeTree node, java.lang.Void unused)java.lang.VoidvisitAssert(com.sun.source.tree.AssertTree node, java.lang.Void unused)java.lang.VoidvisitAssignment(com.sun.source.tree.AssignmentTree node, java.lang.Void unused)java.lang.VoidvisitBinary(com.sun.source.tree.BinaryTree node, java.lang.Void unused)protected voidvisitBlock(com.sun.source.tree.BlockTree node, JavaInputAstVisitor.CollapseEmptyOrNot collapseEmptyOrNot, JavaInputAstVisitor.AllowLeadingBlankLine allowLeadingBlankLine, JavaInputAstVisitor.AllowTrailingBlankLine allowTrailingBlankLine)Helper method for blocks.java.lang.VoidvisitBlock(com.sun.source.tree.BlockTree node, java.lang.Void unused)java.lang.VoidvisitBreak(com.sun.source.tree.BreakTree node, java.lang.Void unused)java.lang.VoidvisitCase(com.sun.source.tree.CaseTree node, java.lang.Void unused)java.lang.VoidvisitCatch(com.sun.source.tree.CatchTree node, java.lang.Void unused)private voidvisitCatchClause(com.sun.source.tree.CatchTree node, JavaInputAstVisitor.AllowTrailingBlankLine allowTrailingBlankLine)Helper method forCatchTrees.java.lang.VoidvisitClass(com.sun.source.tree.ClassTree tree, java.lang.Void unused)voidvisitClassDeclaration(com.sun.source.tree.ClassTree node)java.lang.VoidvisitCompilationUnit(com.sun.source.tree.CompilationUnitTree node, java.lang.Void unused)java.lang.VoidvisitCompoundAssignment(com.sun.source.tree.CompoundAssignmentTree node, java.lang.Void unused)java.lang.VoidvisitConditionalExpression(com.sun.source.tree.ConditionalExpressionTree node, java.lang.Void unused)java.lang.VoidvisitContinue(com.sun.source.tree.ContinueTree node, java.lang.Void unused)private voidvisitDirective(java.lang.String name, java.lang.String separator, com.sun.source.tree.ExpressionTree nameExpression, @Nullable java.util.List<? extends com.sun.source.tree.ExpressionTree> items)(package private) voidvisitDot(com.sun.source.tree.ExpressionTree node0)Output a "." node.private voidvisitDotWithPrefix(java.util.List<com.sun.source.tree.ExpressionTree> items, boolean needDot, java.util.Collection<java.lang.Integer> prefixes, Doc.FillMode prefixFillMode)Output a chain of dereferences where some prefix should be treated as a single syntactic unit, either because it looks like a type name or because there is only a single method invocation in the chain.java.lang.VoidvisitDoWhileLoop(com.sun.source.tree.DoWhileLoopTree node, java.lang.Void unused)java.lang.VoidvisitEmptyStatement(com.sun.source.tree.EmptyStatementTree node, java.lang.Void unused)java.lang.VoidvisitEnhancedForLoop(com.sun.source.tree.EnhancedForLoopTree node, java.lang.Void unused)private voidvisitEnumConstantDeclaration(com.sun.source.tree.VariableTree enumConstant)booleanvisitEnumDeclaration(com.sun.source.tree.ClassTree node)java.lang.VoidvisitExports(com.sun.source.tree.ExportsTree node, java.lang.Void unused)java.lang.VoidvisitExpressionStatement(com.sun.source.tree.ExpressionStatementTree node, java.lang.Void unused)java.lang.VoidvisitForLoop(com.sun.source.tree.ForLoopTree node, java.lang.Void unused)protected voidvisitFormals(java.util.Optional<com.sun.source.tree.VariableTree> receiver, java.util.List<? extends com.sun.source.tree.VariableTree> parameters)java.lang.VoidvisitIdentifier(com.sun.source.tree.IdentifierTree node, java.lang.Void unused)java.lang.VoidvisitIf(com.sun.source.tree.IfTree node, java.lang.Void unused)java.lang.VoidvisitImport(com.sun.source.tree.ImportTree node, java.lang.Void unused)java.lang.VoidvisitInstanceOf(com.sun.source.tree.InstanceOfTree node, java.lang.Void unused)java.lang.VoidvisitIntersectionType(com.sun.source.tree.IntersectionTypeTree node, java.lang.Void unused)java.lang.VoidvisitLabeledStatement(com.sun.source.tree.LabeledStatementTree node, java.lang.Void unused)java.lang.VoidvisitLambdaExpression(com.sun.source.tree.LambdaExpressionTree node, java.lang.Void unused)java.lang.VoidvisitLiteral(com.sun.source.tree.LiteralTree node, java.lang.Void unused)java.lang.VoidvisitMemberReference(com.sun.source.tree.MemberReferenceTree node, java.lang.Void unused)java.lang.VoidvisitMemberSelect(com.sun.source.tree.MemberSelectTree node, java.lang.Void unused)java.lang.VoidvisitMethod(com.sun.source.tree.MethodTree node, java.lang.Void unused)java.lang.VoidvisitMethodInvocation(com.sun.source.tree.MethodInvocationTree node, java.lang.Void unused)private com.google.common.collect.ImmutableList<com.sun.source.tree.AnnotationTree>visitModifiers(JavaInputAstVisitor.DeclarationModifiersAndTypeAnnotations splitModifiers, JavaInputAstVisitor.Direction annotationsDirection, java.util.Optional<Output.BreakTag> declarationAnnotationBreak)protected com.google.common.collect.ImmutableList<com.sun.source.tree.AnnotationTree>visitModifiers(com.sun.source.tree.ModifiersTree modifiersTree, JavaInputAstVisitor.Direction annotationsDirection, java.util.Optional<Output.BreakTag> declarationAnnotationBreak)Output combined modifiers and annotations and returns the trailing break.java.lang.VoidvisitModifiers(com.sun.source.tree.ModifiersTree node, java.lang.Void unused)protected com.google.common.collect.ImmutableList<com.sun.source.tree.AnnotationTree>visitModifiers(com.sun.source.tree.ModifiersTree modifiersTree, java.util.List<? extends com.sun.source.tree.AnnotationTree> annotationTrees, JavaInputAstVisitor.Direction annotationsDirection, java.util.Optional<Output.BreakTag> declarationAnnotationBreak)java.lang.VoidvisitModule(com.sun.source.tree.ModuleTree node, java.lang.Void unused)private voidvisitName(com.sun.source.tree.Tree node)Helper method for import declarations, names, and qualified names.java.lang.VoidvisitNewArray(com.sun.source.tree.NewArrayTree node, java.lang.Void unused)java.lang.VoidvisitNewClass(com.sun.source.tree.NewClassTree node, java.lang.Void unused)java.lang.VoidvisitOpens(com.sun.source.tree.OpensTree node, java.lang.Void unused)private voidvisitPackage(com.sun.source.tree.ExpressionTree packageName, java.util.List<? extends com.sun.source.tree.AnnotationTree> packageAnnotations)java.lang.VoidvisitParameterizedType(com.sun.source.tree.ParameterizedTypeTree node, java.lang.Void unused)java.lang.VoidvisitParenthesized(com.sun.source.tree.ParenthesizedTree node, java.lang.Void unused)java.lang.VoidvisitPrimitiveType(com.sun.source.tree.PrimitiveTypeTree node, java.lang.Void unused)java.lang.VoidvisitProvides(com.sun.source.tree.ProvidesTree node, java.lang.Void unused)private voidvisitRegularDot(java.util.List<com.sun.source.tree.ExpressionTree> items, boolean needDot)Output a "regular" chain of dereferences, possibly in builder-style.java.lang.VoidvisitRequires(com.sun.source.tree.RequiresTree node, java.lang.Void unused)java.lang.VoidvisitReturn(com.sun.source.tree.ReturnTree node, java.lang.Void unused)(package private) booleanvisitSingleMemberAnnotation(com.sun.source.tree.AnnotationTree node)private voidvisitStatement(com.sun.source.tree.StatementTree node, JavaInputAstVisitor.CollapseEmptyOrNot collapseEmptyOrNot, JavaInputAstVisitor.AllowLeadingBlankLine allowLeadingBlank, JavaInputAstVisitor.AllowTrailingBlankLine allowTrailingBlank)Helper method for statements.protected voidvisitStatements(java.util.List<? extends com.sun.source.tree.StatementTree> statements)protected voidvisitSwitch(com.sun.source.tree.ExpressionTree expression, java.util.List<? extends com.sun.source.tree.CaseTree> cases)java.lang.VoidvisitSwitch(com.sun.source.tree.SwitchTree node, java.lang.Void unused)java.lang.VoidvisitSynchronized(com.sun.source.tree.SynchronizedTree node, java.lang.Void unused)java.lang.VoidvisitThrow(com.sun.source.tree.ThrowTree node, java.lang.Void unused)private voidvisitThrowsClause(java.util.List<? extends com.sun.source.tree.ExpressionTree> thrownExceptionTypes)private voidvisitToDeclare(JavaInputAstVisitor.DeclarationKind kind, JavaInputAstVisitor.Direction annotationsDirection, com.sun.source.tree.VariableTree node, java.util.Optional<com.sun.source.tree.ExpressionTree> initializer, java.lang.String equals, java.util.Optional<java.lang.String> trailing)java.lang.VoidvisitTry(com.sun.source.tree.TryTree node, java.lang.Void unused)java.lang.VoidvisitTypeCast(com.sun.source.tree.TypeCastTree node, java.lang.Void unused)java.lang.VoidvisitTypeParameter(com.sun.source.tree.TypeParameterTree node, java.lang.Void unused)java.lang.VoidvisitUnary(com.sun.source.tree.UnaryTree node, java.lang.Void unused)java.lang.VoidvisitUnionType(com.sun.source.tree.UnionTypeTree node, java.lang.Void unused)private voidvisitUnionType(com.sun.source.tree.VariableTree declaration)Formats a union type declaration in a catch clause.java.lang.VoidvisitUses(com.sun.source.tree.UsesTree node, java.lang.Void unused)java.lang.VoidvisitVariable(com.sun.source.tree.VariableTree node, java.lang.Void unused)(package private) voidvisitVariables(java.util.List<com.sun.source.tree.VariableTree> fragments, JavaInputAstVisitor.DeclarationKind declarationKind, JavaInputAstVisitor.Direction annotationDirection)java.lang.VoidvisitWhileLoop(com.sun.source.tree.WhileLoopTree node, java.lang.Void unused)java.lang.VoidvisitWildcard(com.sun.source.tree.WildcardTree node, java.lang.Void unused)private static voidwalkInfix(int precedence, com.sun.source.tree.ExpressionTree expression, java.util.List<com.sun.source.tree.ExpressionTree> operands, java.util.List<java.lang.String> operators)Accumulate the operands and operators.
-
-
-
Field Detail
-
TYPE_ANNOTATIONS
private static final com.google.common.collect.ImmutableMultimap<java.lang.String,java.lang.String> TYPE_ANNOTATIONS
-
builder
protected final OpsBuilder builder
-
ZERO
protected static final Indent.Const ZERO
-
indentMultiplier
protected final int indentMultiplier
-
minusTwo
protected final Indent.Const minusTwo
-
minusFour
protected final Indent.Const minusFour
-
plusTwo
protected final Indent.Const plusTwo
-
plusFour
protected final Indent.Const plusFour
-
typeAnnotationSimpleNames
private final java.util.Set<javax.lang.model.element.Name> typeAnnotationSimpleNames
-
MAX_ITEM_LENGTH_FOR_FILLING
private static final int MAX_ITEM_LENGTH_FOR_FILLING
Allow multi-line filling (of array initializers, argument lists, and boolean expressions) for items with length less than or equal to this threshold.- See Also:
- Constant Field Values
-
inExpression
private final java.util.Deque<java.lang.Boolean> inExpression
A record of whether we have visited into an expression.
-
COMPACT_RECORD_CONSTRUCTOR
protected static final long COMPACT_RECORD_CONSTRUCTOR
- See Also:
- Constant Field Values
-
RECORD
protected static final long RECORD
- See Also:
- Constant Field Values
-
LOG_METHODS
static final com.google.common.collect.ImmutableSet<java.lang.String> LOG_METHODS
-
FORMAT_SPECIFIER
private static final java.util.regex.Pattern FORMAT_SPECIFIER
-
-
Constructor Detail
-
JavaInputAstVisitor
public JavaInputAstVisitor(OpsBuilder builder, int indentMultiplier)
TheVisitorconstructor.- Parameters:
builder- theOpsBuilder
-
-
Method Detail
-
typeAnnotations
private static com.google.common.collect.ImmutableSetMultimap<java.lang.String,java.lang.String> typeAnnotations()
-
breakList
private static final com.google.common.collect.ImmutableList<Op> breakList(java.util.Optional<Output.BreakTag> breakTag)
-
breakFillList
private static final com.google.common.collect.ImmutableList<Op> breakFillList(java.util.Optional<Output.BreakTag> breakTag)
-
forceBreakList
private static final com.google.common.collect.ImmutableList<Op> forceBreakList(java.util.Optional<Output.BreakTag> breakTag)
-
inExpression
private boolean inExpression()
-
scan
public java.lang.Void scan(com.sun.source.tree.Tree tree, java.lang.Void unused)- Overrides:
scanin classcom.sun.source.util.TreePathScanner<java.lang.Void,java.lang.Void>
-
visitCompilationUnit
public java.lang.Void visitCompilationUnit(com.sun.source.tree.CompilationUnitTree node, java.lang.Void unused)- Specified by:
visitCompilationUnitin interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitCompilationUnitin classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
handleModule
protected void handleModule(boolean afterFirstToken, com.sun.source.tree.CompilationUnitTree node)
-
dropEmptyDeclarations
protected void dropEmptyDeclarations()
Skips over extra semi-colons at the top-level, or in a class member declaration lists.
-
visitClass
public java.lang.Void visitClass(com.sun.source.tree.ClassTree tree, java.lang.Void unused)- Specified by:
visitClassin interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitClassin classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visitAnnotationType
public void visitAnnotationType(com.sun.source.tree.ClassTree node)
-
visitArrayAccess
public java.lang.Void visitArrayAccess(com.sun.source.tree.ArrayAccessTree node, java.lang.Void unused)- Specified by:
visitArrayAccessin interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitArrayAccessin classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visitNewArray
public java.lang.Void visitNewArray(com.sun.source.tree.NewArrayTree node, java.lang.Void unused)- Specified by:
visitNewArrayin interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitNewArrayin classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visitArrayInitializer
public boolean visitArrayInitializer(java.util.List<? extends com.sun.source.tree.ExpressionTree> expressions)
-
hasOnlyShortItems
private boolean hasOnlyShortItems(java.util.List<? extends com.sun.source.tree.ExpressionTree> expressions)
-
visitArrayType
public java.lang.Void visitArrayType(com.sun.source.tree.ArrayTypeTree node, java.lang.Void unused)- Specified by:
visitArrayTypein interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitArrayTypein classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visitAnnotatedArrayType
private void visitAnnotatedArrayType(com.sun.source.tree.Tree node)
-
visitAssert
public java.lang.Void visitAssert(com.sun.source.tree.AssertTree node, java.lang.Void unused)- Specified by:
visitAssertin interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitAssertin classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visitAssignment
public java.lang.Void visitAssignment(com.sun.source.tree.AssignmentTree node, java.lang.Void unused)- Specified by:
visitAssignmentin interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitAssignmentin classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visitBlock
public java.lang.Void visitBlock(com.sun.source.tree.BlockTree node, java.lang.Void unused)- Specified by:
visitBlockin interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitBlockin classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visitCompoundAssignment
public java.lang.Void visitCompoundAssignment(com.sun.source.tree.CompoundAssignmentTree node, java.lang.Void unused)- Specified by:
visitCompoundAssignmentin interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitCompoundAssignmentin classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visitBreak
public java.lang.Void visitBreak(com.sun.source.tree.BreakTree node, java.lang.Void unused)- Specified by:
visitBreakin interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitBreakin classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visitTypeCast
public java.lang.Void visitTypeCast(com.sun.source.tree.TypeCastTree node, java.lang.Void unused)- Specified by:
visitTypeCastin interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitTypeCastin classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visitNewClass
public java.lang.Void visitNewClass(com.sun.source.tree.NewClassTree node, java.lang.Void unused)- Specified by:
visitNewClassin interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitNewClassin classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visitConditionalExpression
public java.lang.Void visitConditionalExpression(com.sun.source.tree.ConditionalExpressionTree node, java.lang.Void unused)- Specified by:
visitConditionalExpressionin interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitConditionalExpressionin classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visitContinue
public java.lang.Void visitContinue(com.sun.source.tree.ContinueTree node, java.lang.Void unused)- Specified by:
visitContinuein interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitContinuein classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visitDoWhileLoop
public java.lang.Void visitDoWhileLoop(com.sun.source.tree.DoWhileLoopTree node, java.lang.Void unused)- Specified by:
visitDoWhileLoopin interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitDoWhileLoopin classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visitEmptyStatement
public java.lang.Void visitEmptyStatement(com.sun.source.tree.EmptyStatementTree node, java.lang.Void unused)- Specified by:
visitEmptyStatementin interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitEmptyStatementin classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visitEnhancedForLoop
public java.lang.Void visitEnhancedForLoop(com.sun.source.tree.EnhancedForLoopTree node, java.lang.Void unused)- Specified by:
visitEnhancedForLoopin interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitEnhancedForLoopin classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visitEnumConstantDeclaration
private void visitEnumConstantDeclaration(com.sun.source.tree.VariableTree enumConstant)
-
visitEnumDeclaration
public boolean visitEnumDeclaration(com.sun.source.tree.ClassTree node)
-
visitMemberReference
public java.lang.Void visitMemberReference(com.sun.source.tree.MemberReferenceTree node, java.lang.Void unused)- Specified by:
visitMemberReferencein interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitMemberReferencein classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visitExpressionStatement
public java.lang.Void visitExpressionStatement(com.sun.source.tree.ExpressionStatementTree node, java.lang.Void unused)- Specified by:
visitExpressionStatementin interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitExpressionStatementin classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visitVariable
public java.lang.Void visitVariable(com.sun.source.tree.VariableTree node, java.lang.Void unused)- Specified by:
visitVariablein interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitVariablein classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visitVariables
void visitVariables(java.util.List<com.sun.source.tree.VariableTree> fragments, JavaInputAstVisitor.DeclarationKind declarationKind, JavaInputAstVisitor.Direction annotationDirection)
-
variableFragmentDims
private static DimensionHelpers.TypeWithDims variableFragmentDims(boolean afterFirstToken, int leadingDims, com.sun.source.tree.Tree type)
-
visitForLoop
public java.lang.Void visitForLoop(com.sun.source.tree.ForLoopTree node, java.lang.Void unused)- Specified by:
visitForLoopin interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitForLoopin classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visitIf
public java.lang.Void visitIf(com.sun.source.tree.IfTree node, java.lang.Void unused)- Specified by:
visitIfin interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitIfin classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visitImport
public java.lang.Void visitImport(com.sun.source.tree.ImportTree node, java.lang.Void unused)- Specified by:
visitImportin interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitImportin classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
checkForTypeAnnotation
private void checkForTypeAnnotation(com.sun.source.tree.ImportTree node)
-
getSimpleName
private static javax.lang.model.element.Name getSimpleName(com.sun.source.tree.ImportTree importTree)
-
visitBinary
public java.lang.Void visitBinary(com.sun.source.tree.BinaryTree node, java.lang.Void unused)- Specified by:
visitBinaryin interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitBinaryin classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visitInstanceOf
public java.lang.Void visitInstanceOf(com.sun.source.tree.InstanceOfTree node, java.lang.Void unused)- Specified by:
visitInstanceOfin interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitInstanceOfin classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visitIntersectionType
public java.lang.Void visitIntersectionType(com.sun.source.tree.IntersectionTypeTree node, java.lang.Void unused)- Specified by:
visitIntersectionTypein interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitIntersectionTypein classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visitLabeledStatement
public java.lang.Void visitLabeledStatement(com.sun.source.tree.LabeledStatementTree node, java.lang.Void unused)- Specified by:
visitLabeledStatementin interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitLabeledStatementin classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visitLambdaExpression
public java.lang.Void visitLambdaExpression(com.sun.source.tree.LambdaExpressionTree node, java.lang.Void unused)- Specified by:
visitLambdaExpressionin interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitLambdaExpressionin classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visitAnnotation
public java.lang.Void visitAnnotation(com.sun.source.tree.AnnotationTree node, java.lang.Void unused)- Specified by:
visitAnnotationin interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitAnnotationin classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
isArrayValue
private static boolean isArrayValue(com.sun.source.tree.ExpressionTree argument)
-
visitAnnotationArgument
public void visitAnnotationArgument(com.sun.source.tree.AssignmentTree node)
-
visitAnnotatedType
public java.lang.Void visitAnnotatedType(com.sun.source.tree.AnnotatedTypeTree node, java.lang.Void unused)- Specified by:
visitAnnotatedTypein interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitAnnotatedTypein classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visitMethod
public java.lang.Void visitMethod(com.sun.source.tree.MethodTree node, java.lang.Void unused)- Specified by:
visitMethodin interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitMethodin classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
methodBody
private void methodBody(com.sun.source.tree.MethodTree node)
-
visitMethodInvocation
public java.lang.Void visitMethodInvocation(com.sun.source.tree.MethodInvocationTree node, java.lang.Void unused)- Specified by:
visitMethodInvocationin interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitMethodInvocationin classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
handleLogStatement
private boolean handleLogStatement(com.sun.source.tree.MethodInvocationTree node)
Special-cases log statements, to output:logger.atInfo().log( "Number of foos: %d, foos.size());Instead of:
logger .atInfo() .log( "Number of foos: %d, foos.size());
-
handleStream
private static java.util.List<java.lang.Long> handleStream(java.util.List<com.sun.source.tree.ExpressionTree> parts)
-
indexes
private static <T> java.util.stream.Stream<java.lang.Long> indexes(java.util.stream.Stream<T> stream, com.google.common.base.Predicate<T> predicate)
-
visitMemberSelect
public java.lang.Void visitMemberSelect(com.sun.source.tree.MemberSelectTree node, java.lang.Void unused)- Specified by:
visitMemberSelectin interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitMemberSelectin classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visitLiteral
public java.lang.Void visitLiteral(com.sun.source.tree.LiteralTree node, java.lang.Void unused)- Specified by:
visitLiteralin interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitLiteralin classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
isUnaryMinusLiteral
private static boolean isUnaryMinusLiteral(java.lang.String literalTreeSource)
-
visitPackage
private void visitPackage(com.sun.source.tree.ExpressionTree packageName, java.util.List<? extends com.sun.source.tree.AnnotationTree> packageAnnotations)
-
visitParameterizedType
public java.lang.Void visitParameterizedType(com.sun.source.tree.ParameterizedTypeTree node, java.lang.Void unused)- Specified by:
visitParameterizedTypein interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitParameterizedTypein classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visitParenthesized
public java.lang.Void visitParenthesized(com.sun.source.tree.ParenthesizedTree node, java.lang.Void unused)- Specified by:
visitParenthesizedin interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitParenthesizedin classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visitUnary
public java.lang.Void visitUnary(com.sun.source.tree.UnaryTree node, java.lang.Void unused)- Specified by:
visitUnaryin interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitUnaryin classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
splitToken
private void splitToken(java.lang.String operatorName)
-
ambiguousUnaryOperator
private boolean ambiguousUnaryOperator(com.sun.source.tree.UnaryTree node, java.lang.String operatorName)
-
unaryTag
private com.sun.tools.javac.tree.JCTree.Tag unaryTag(com.sun.source.tree.ExpressionTree expression)
-
visitPrimitiveType
public java.lang.Void visitPrimitiveType(com.sun.source.tree.PrimitiveTypeTree node, java.lang.Void unused)- Specified by:
visitPrimitiveTypein interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitPrimitiveTypein classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visit
public boolean visit(javax.lang.model.element.Name name)
-
visitReturn
public java.lang.Void visitReturn(com.sun.source.tree.ReturnTree node, java.lang.Void unused)- Specified by:
visitReturnin interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitReturnin classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visitSingleMemberAnnotation
boolean visitSingleMemberAnnotation(com.sun.source.tree.AnnotationTree node)
-
visitCase
public java.lang.Void visitCase(com.sun.source.tree.CaseTree node, java.lang.Void unused)- Specified by:
visitCasein interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitCasein classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visitSwitch
public java.lang.Void visitSwitch(com.sun.source.tree.SwitchTree node, java.lang.Void unused)- Specified by:
visitSwitchin interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitSwitchin classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visitSwitch
protected void visitSwitch(com.sun.source.tree.ExpressionTree expression, java.util.List<? extends com.sun.source.tree.CaseTree> cases)
-
visitSynchronized
public java.lang.Void visitSynchronized(com.sun.source.tree.SynchronizedTree node, java.lang.Void unused)- Specified by:
visitSynchronizedin interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitSynchronizedin classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visitThrow
public java.lang.Void visitThrow(com.sun.source.tree.ThrowTree node, java.lang.Void unused)- Specified by:
visitThrowin interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitThrowin classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visitTry
public java.lang.Void visitTry(com.sun.source.tree.TryTree node, java.lang.Void unused)- Specified by:
visitTryin interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitTryin classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visitClassDeclaration
public void visitClassDeclaration(com.sun.source.tree.ClassTree node)
-
visitTypeParameter
public java.lang.Void visitTypeParameter(com.sun.source.tree.TypeParameterTree node, java.lang.Void unused)- Specified by:
visitTypeParameterin interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitTypeParameterin classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visitUnionType
public java.lang.Void visitUnionType(com.sun.source.tree.UnionTypeTree node, java.lang.Void unused)- Specified by:
visitUnionTypein interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitUnionTypein classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visitWhileLoop
public java.lang.Void visitWhileLoop(com.sun.source.tree.WhileLoopTree node, java.lang.Void unused)- Specified by:
visitWhileLoopin interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitWhileLoopin classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visitWildcard
public java.lang.Void visitWildcard(com.sun.source.tree.WildcardTree node, java.lang.Void unused)- Specified by:
visitWildcardin interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitWildcardin classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visitAnnotations
protected void visitAnnotations(java.util.List<? extends com.sun.source.tree.AnnotationTree> annotations, JavaInputAstVisitor.BreakOrNot breakBefore, JavaInputAstVisitor.BreakOrNot breakAfter)Helper method for annotations.
-
verticalAnnotations
void verticalAnnotations(java.util.List<com.sun.source.tree.AnnotationTree> annotations)
-
visitBlock
protected void visitBlock(com.sun.source.tree.BlockTree node, JavaInputAstVisitor.CollapseEmptyOrNot collapseEmptyOrNot, JavaInputAstVisitor.AllowLeadingBlankLine allowLeadingBlankLine, JavaInputAstVisitor.AllowTrailingBlankLine allowTrailingBlankLine)Helper method for blocks.
-
visitStatement
private void visitStatement(com.sun.source.tree.StatementTree node, JavaInputAstVisitor.CollapseEmptyOrNot collapseEmptyOrNot, JavaInputAstVisitor.AllowLeadingBlankLine allowLeadingBlank, JavaInputAstVisitor.AllowTrailingBlankLine allowTrailingBlank)Helper method for statements.
-
visitStatements
protected void visitStatements(java.util.List<? extends com.sun.source.tree.StatementTree> statements)
-
typeDeclarationModifiers
protected void typeDeclarationModifiers(com.sun.source.tree.ModifiersTree modifiers)
-
visitAndBreakModifiers
void visitAndBreakModifiers(com.sun.source.tree.ModifiersTree modifiers, JavaInputAstVisitor.Direction annotationDirection, java.util.Optional<Output.BreakTag> declarationAnnotationBreak)Output combined modifiers and annotations and the trailing break.
-
visitModifiers
public java.lang.Void visitModifiers(com.sun.source.tree.ModifiersTree node, java.lang.Void unused)- Specified by:
visitModifiersin interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitModifiersin classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visitModifiers
@CheckReturnValue protected com.google.common.collect.ImmutableList<com.sun.source.tree.AnnotationTree> visitModifiers(com.sun.source.tree.ModifiersTree modifiersTree, JavaInputAstVisitor.Direction annotationsDirection, java.util.Optional<Output.BreakTag> declarationAnnotationBreak)Output combined modifiers and annotations and returns the trailing break.
-
visitModifiers
@CheckReturnValue protected com.google.common.collect.ImmutableList<com.sun.source.tree.AnnotationTree> visitModifiers(com.sun.source.tree.ModifiersTree modifiersTree, java.util.List<? extends com.sun.source.tree.AnnotationTree> annotationTrees, JavaInputAstVisitor.Direction annotationsDirection, java.util.Optional<Output.BreakTag> declarationAnnotationBreak)
-
visitModifiers
@CheckReturnValue private com.google.common.collect.ImmutableList<com.sun.source.tree.AnnotationTree> visitModifiers(JavaInputAstVisitor.DeclarationModifiersAndTypeAnnotations splitModifiers, JavaInputAstVisitor.Direction annotationsDirection, java.util.Optional<Output.BreakTag> declarationAnnotationBreak)
-
splitModifiers
JavaInputAstVisitor.DeclarationModifiersAndTypeAnnotations splitModifiers(com.sun.source.tree.ModifiersTree modifiersTree, java.util.List<? extends com.sun.source.tree.AnnotationTree> annotations)
Examines the token stream to convert the modifiers for a declaration into aJavaInputAstVisitor.DeclarationModifiersAndTypeAnnotations.
-
formatAnnotationOrModifier
private void formatAnnotationOrModifier(java.util.Deque<JavaInputAstVisitor.AnnotationOrModifier> modifiers)
-
isTypeAnnotation
boolean isTypeAnnotation(com.sun.source.tree.AnnotationTree annotationTree)
-
isModifier
private static boolean isModifier(java.lang.String token)
-
visitCatch
public java.lang.Void visitCatch(com.sun.source.tree.CatchTree node, java.lang.Void unused)- Specified by:
visitCatchin interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitCatchin classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visitCatchClause
private void visitCatchClause(com.sun.source.tree.CatchTree node, JavaInputAstVisitor.AllowTrailingBlankLine allowTrailingBlankLine)Helper method forCatchTrees.
-
visitUnionType
private void visitUnionType(com.sun.source.tree.VariableTree declaration)
Formats a union type declaration in a catch clause.
-
walkInfix
private static void walkInfix(int precedence, com.sun.source.tree.ExpressionTree expression, java.util.List<com.sun.source.tree.ExpressionTree> operands, java.util.List<java.lang.String> operators)Accumulate the operands and operators.
-
visitFormals
protected void visitFormals(java.util.Optional<com.sun.source.tree.VariableTree> receiver, java.util.List<? extends com.sun.source.tree.VariableTree> parameters)
-
visitThrowsClause
private void visitThrowsClause(java.util.List<? extends com.sun.source.tree.ExpressionTree> thrownExceptionTypes)
-
visitIdentifier
public java.lang.Void visitIdentifier(com.sun.source.tree.IdentifierTree node, java.lang.Void unused)- Specified by:
visitIdentifierin interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitIdentifierin classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visitModule
public java.lang.Void visitModule(com.sun.source.tree.ModuleTree node, java.lang.Void unused)- Specified by:
visitModulein interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitModulein classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visitDirective
private void visitDirective(java.lang.String name, java.lang.String separator, com.sun.source.tree.ExpressionTree nameExpression, @Nullable java.util.List<? extends com.sun.source.tree.ExpressionTree> items)
-
visitExports
public java.lang.Void visitExports(com.sun.source.tree.ExportsTree node, java.lang.Void unused)- Specified by:
visitExportsin interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitExportsin classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visitOpens
public java.lang.Void visitOpens(com.sun.source.tree.OpensTree node, java.lang.Void unused)- Specified by:
visitOpensin interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitOpensin classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visitProvides
public java.lang.Void visitProvides(com.sun.source.tree.ProvidesTree node, java.lang.Void unused)- Specified by:
visitProvidesin interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitProvidesin classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visitRequires
public java.lang.Void visitRequires(com.sun.source.tree.RequiresTree node, java.lang.Void unused)- Specified by:
visitRequiresin interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitRequiresin classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visitUses
public java.lang.Void visitUses(com.sun.source.tree.UsesTree node, java.lang.Void unused)- Specified by:
visitUsesin interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitUsesin classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visitName
private void visitName(com.sun.source.tree.Tree node)
Helper method for import declarations, names, and qualified names.
-
visitToDeclare
private void visitToDeclare(JavaInputAstVisitor.DeclarationKind kind, JavaInputAstVisitor.Direction annotationsDirection, com.sun.source.tree.VariableTree node, java.util.Optional<com.sun.source.tree.ExpressionTree> initializer, java.lang.String equals, java.util.Optional<java.lang.String> trailing)
-
typeParametersRest
protected void typeParametersRest(java.util.List<? extends com.sun.source.tree.TypeParameterTree> typeParameters, Indent plusIndent)Does not omit the leading"<", which should be associated with the type name.
-
visitDot
void visitDot(com.sun.source.tree.ExpressionTree node0)
Output a "." node.- Parameters:
node0- the "." node
-
visitRegularDot
private void visitRegularDot(java.util.List<com.sun.source.tree.ExpressionTree> items, boolean needDot)Output a "regular" chain of dereferences, possibly in builder-style. Break before every dot.- Parameters:
items- in the chainneedDot- whether a leading dot is needed
-
fillFirstArgument
private boolean fillFirstArgument(com.sun.source.tree.ExpressionTree e, java.util.List<com.sun.source.tree.ExpressionTree> items, Indent indent)
-
visitDotWithPrefix
private void visitDotWithPrefix(java.util.List<com.sun.source.tree.ExpressionTree> items, boolean needDot, java.util.Collection<java.lang.Integer> prefixes, Doc.FillMode prefixFillMode)Output a chain of dereferences where some prefix should be treated as a single syntactic unit, either because it looks like a type name or because there is only a single method invocation in the chain.- Parameters:
items- in the chainneedDot- whether a leading dot is neededprefixes- the terminal indices of 'prefixes' of the expression that should be treated as a syntactic unit
-
simpleNames
private static com.google.common.collect.ImmutableList<java.lang.String> simpleNames(java.util.Deque<com.sun.source.tree.ExpressionTree> stack)
Returns the simple names of expressions in a "." chain.
-
dotExpressionUpToArgs
private void dotExpressionUpToArgs(com.sun.source.tree.ExpressionTree expression, java.util.Optional<Output.BreakTag> tyargTag)
-
getArrayBase
private static com.sun.source.tree.ExpressionTree getArrayBase(com.sun.source.tree.ExpressionTree node)
Returns the base expression of an erray access, e.g. givenfoo[0][0]returnsfoo.
-
getMethodReceiver
private static com.sun.source.tree.ExpressionTree getMethodReceiver(com.sun.source.tree.MethodInvocationTree methodInvocation)
-
dotExpressionArgsAndParen
private void dotExpressionArgsAndParen(com.sun.source.tree.ExpressionTree expression, Indent tyargIndent, Indent indent)
-
formatArrayIndices
private void formatArrayIndices(java.util.Deque<com.sun.source.tree.ExpressionTree> indices)
Lays out one or more array indices. Does not output the expression for the array itself.
-
getArrayIndices
private static java.util.Deque<com.sun.source.tree.ExpressionTree> getArrayIndices(com.sun.source.tree.ExpressionTree expression)
Returns all array indices for the given expression, e.g. givenfoo[0][0]returns the expressions for[0][0].
-
addTypeArguments
void addTypeArguments(java.util.List<? extends com.sun.source.tree.Tree> typeArguments, Indent plusIndent)Helper methods for method invocations.
-
addArguments
void addArguments(java.util.List<? extends com.sun.source.tree.ExpressionTree> arguments, Indent plusIndent)Add arguments to a method invocation, etc. The arguments indentedplusFour, filled, from the current indent. The arguments may be output two at a time if they seem to be arguments to a map constructor, etc.- Parameters:
arguments- the argumentsplusIndent- the extra indent for the arguments
-
argList
private void argList(java.util.List<? extends com.sun.source.tree.ExpressionTree> arguments)
-
isFormatMethod
private boolean isFormatMethod(java.util.List<? extends com.sun.source.tree.ExpressionTree> arguments)
Identifies String formatting methods likeString.format(java.lang.String, java.lang.Object...)which we prefer to format as:String.format( "the format string: %s %s %s", arg, arg, arg);And not:
String.format( "the format string: %s %s %s", arg, arg, arg);
-
isStringConcat
private boolean isStringConcat(com.sun.source.tree.ExpressionTree first)
-
argumentsAreTabular
private int argumentsAreTabular(java.util.List<? extends com.sun.source.tree.ExpressionTree> arguments)
Returns the number of columns if the arguments arg laid out in a grid, or else-1.
-
rowLength
static int rowLength(java.util.List<? extends com.sun.source.tree.ExpressionTree> row)
-
actualColumn
private java.lang.Integer actualColumn(com.sun.source.tree.ExpressionTree expression)
-
expressionsAreParallel
private static boolean expressionsAreParallel(java.util.List<java.util.List<com.sun.source.tree.ExpressionTree>> rows, int column, int atLeastM)Returns true ifatLeastMof the expressions in the given column are the same kind.
-
declareOne
protected int declareOne(JavaInputAstVisitor.DeclarationKind kind, JavaInputAstVisitor.Direction annotationsDirection, java.util.Optional<com.sun.source.tree.ModifiersTree> modifiers, com.sun.source.tree.Tree type, javax.lang.model.element.Name name, java.lang.String op, java.lang.String equals, java.util.Optional<com.sun.source.tree.ExpressionTree> initializer, java.util.Optional<java.lang.String> trailing, java.util.Optional<com.sun.source.tree.ExpressionTree> receiverExpression, java.util.Optional<DimensionHelpers.TypeWithDims> typeWithDims)
Declare one variable or variable-like thing.
-
variableName
protected void variableName(javax.lang.model.element.Name name)
-
maybeAddDims
private void maybeAddDims(java.util.Deque<java.util.List<? extends com.sun.source.tree.AnnotationTree>> annotations)
-
maybeAddDims
private void maybeAddDims(java.util.Deque<com.sun.source.tree.ExpressionTree> dimExpressions, java.util.Deque<java.util.List<? extends com.sun.source.tree.AnnotationTree>> annotations)The compiler does not always preserve the concrete syntax of annotated array dimensions, and mixed-notation array dimensions. Use look-ahead to preserve the original syntax.It is assumed that any number of regular dimension specifiers (
[]with no annotations) may be present in the input.- Parameters:
dimExpressions- an ordered list of dimension expressions (e.g. the0innew int[0]annotations- an ordered list of type annotations grouped by dimension (e.g.[[@A, @B], [@C]]forint @A [] @B @C []
-
declareMany
private void declareMany(java.util.List<com.sun.source.tree.VariableTree> fragments, JavaInputAstVisitor.Direction annotationDirection)
-
addBodyDeclarations
protected void addBodyDeclarations(java.util.List<? extends com.sun.source.tree.Tree> bodyDeclarations, JavaInputAstVisitor.BracesOrNot braces, JavaInputAstVisitor.FirstDeclarationsOrNot first0)Add a list of declarations.
-
getPermitsClause
protected java.util.List<? extends com.sun.source.tree.Tree> getPermitsClause(com.sun.source.tree.ClassTree node)
Gets the permits clause for the given node. This is only available in Java 15 and later.
-
classDeclarationTypeList
private void classDeclarationTypeList(java.lang.String token, java.util.List<? extends com.sun.source.tree.Tree> types)
-
variableFragments
private static java.util.List<com.sun.source.tree.VariableTree> variableFragments(com.google.common.collect.PeekingIterator<? extends com.sun.source.tree.Tree> it, com.sun.source.tree.Tree first)The parser expands multi-variable declarations into separate single-variable declarations. All of the fragments in the original declaration have the same start position, so we use that as a signal to collect them and preserve the multi-variable declaration in the output.e.g.
int x, y;is parsed asint x; int y;.
-
hasJavaDoc
private boolean hasJavaDoc(com.sun.source.tree.Tree bodyDeclaration)
Does this declaration have javadoc preceding it?
-
getNextToken
private static java.util.Optional<? extends Input.Token> getNextToken(Input input, int position)
-
hasTrailingToken
private boolean hasTrailingToken(Input input, java.util.List<? extends com.sun.source.tree.Tree> nodes, java.lang.String token)
Does this list of trees end with the specified token?
-
canLocalHaveHorizontalAnnotations
private static JavaInputAstVisitor.Direction canLocalHaveHorizontalAnnotations(com.sun.source.tree.ModifiersTree modifiers)
Can a local with a set of modifiers be declared with horizontal annotations? This is currently true if there is at most one parameterless annotation, and no others.- Parameters:
modifiers- the list ofModifiersTrees- Returns:
- whether the local can be declared with horizontal annotations
-
fieldAnnotationDirection
private static JavaInputAstVisitor.Direction fieldAnnotationDirection(com.sun.source.tree.ModifiersTree modifiers)
Should a field with a set of modifiers be declared with horizontal annotations? This is currently true if all annotations are parameterless annotations.
-
token
protected final void token(java.lang.String token)
Emit aDoc.Token.- Parameters:
token- theStringto wrap in aDoc.Token
-
token
protected final void token(java.lang.String token, Indent plusIndentCommentsBefore)Emit aDoc.Token.- Parameters:
token- theStringto wrap in aDoc.TokenplusIndentCommentsBefore- extra indent for comments before this token
-
tokenBreakTrailingComment
final void tokenBreakTrailingComment(java.lang.String token, Indent breakAndIndentTrailingComment)Emit aDoc.Token, and breaks and indents trailing javadoc or block comments.
-
markForPartialFormat
protected void markForPartialFormat()
-
sync
protected final void sync(com.sun.source.tree.Tree node)
Sync to position in the input. If we've skipped outputting any tokens that were present in the input tokens, output them here and complain.- Parameters:
node- the ASTNode holding the input position
-
genSym
final Output.BreakTag genSym()
-
toString
public final java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
-