Class AbstractExpressionHandler
java.lang.Object
com.puppycrawl.tools.checkstyle.checks.indentation.AbstractExpressionHandler
- Direct Known Subclasses:
BlockParentHandler,CaseHandler,ImportHandler,IndexHandler,LabelHandler,LambdaHandler,MemberDefHandler,MethodCallHandler,NewHandler,PackageDefHandler,PrimordialHandler,SwitchRuleHandler,YieldHandler
Abstract base class for all handlers.
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedAbstractExpressionHandler(IndentationCheck indentCheck, String typeName, DetailAST expr, AbstractExpressionHandler parent) Construct an instance of this handler with the given indentation check, name, abstract syntax tree, and parent handler. -
Method Summary
Modifier and TypeMethodDescriptionprotected final voidcheckChildren(DetailAST parentNode, int[] tokenTypes, IndentLevel startIndent, boolean firstLineMatches, boolean allowNesting) Check the indent level of the children of the specified parent expression.protected final voidcheckExpressionSubtree(DetailAST tree, IndentLevel indentLevel, boolean firstLineMatches, boolean allowNesting) Check the indentation level for an expression subtree.abstract voidCheck the indentation of the expression we are handling.protected final voidcheckLeftParen(DetailAST lparen) Check the indentation of the left parenthesis.protected voidCheck the indentation level of modifiers.protected final voidcheckRightParen(DetailAST lparen, DetailAST rparen) Check the indentation of the right parenthesis.protected voidcheckWrappingIndentation(DetailAST firstNode, DetailAST lastNode) Checks indentation on wrapped lines between and includingfirstNodeandlastNode.protected voidcheckWrappingIndentation(DetailAST firstNode, DetailAST lastNode, int wrappedIndentLevel, int startIndent, boolean ignoreFirstLine) Checks indentation on wrapped lines between and includingfirstNodeandlastNode.protected final intGet the column number for the start of a given expression, expanding tabs out into spaces in the process.protected final voidfindSubtreeAst(DetailAstSet astSet, DetailAST tree, boolean allowNesting) Find the set of abstract syntax tree for a given subtree.protected final intA shortcut forIndentationCheckproperty.protected final intA shortcut forIndentationCheckproperty.protected static DetailASTgetFirstAst(DetailAST ast, DetailAST tree) Get the first ast for given expression.protected static intgetFirstLine(DetailAST tree) Get the first line number for given expression.static DetailASTgetFirstToken(DetailAST ast) Searches in given sub-tree (including given node) for the token which represents first symbol for this sub-tree in file.final IndentLevelGet the indentation amount for this handler.protected final IndentationCheckAccessor for the IndentCheck attribute.protected IndentLevelCompute the indentation amount for this handler.protected final intgetLineStart(int lineNo) Get the start of the line for the given line number.protected final intgetLineStart(DetailAST ast) Get the start of the line for the given expression.protected final DetailASTAccessor for the MainAst attribute.protected final AbstractExpressionHandlerAccessor for the Parent attribute.Indentation level suggested for a child element.protected final booleanisOnStartOfLine(DetailAST ast) Determines if the given expression is at the start of a line.protected final voidLog an indentation error.protected final voidlogError(DetailAST ast, String subtypeName, int actualIndent, IndentLevel expectedIndent) Log an indentation error.protected booleanChecks that indentation should be increased after first line in checkLinesIndent().
-
Constructor Details
-
AbstractExpressionHandler
protected AbstractExpressionHandler(IndentationCheck indentCheck, String typeName, DetailAST expr, AbstractExpressionHandler parent) Construct an instance of this handler with the given indentation check, name, abstract syntax tree, and parent handler.- Parameters:
indentCheck- the indentation checktypeName- the name of the handlerexpr- the abstract syntax treeparent- the parent handler
-
-
Method Details
-
checkIndentation
public abstract void checkIndentation()Check the indentation of the expression we are handling. -
getIndent
Get the indentation amount for this handler. For performance reasons, this value is cached. The first time this method is called, the indentation amount is computed and stored. On further calls, the stored value is returned.- Returns:
- the expected indentation amount
-
getIndentImpl
Compute the indentation amount for this handler.- Returns:
- the expected indentation amount
-
getSuggestedChildIndent
Indentation level suggested for a child element. Children don't have to respect this, but most do.- Parameters:
child- child AST (so suggestion level can differ based on child type)- Returns:
- suggested indentation for child
-
logError
Log an indentation error.- Parameters:
ast- the expression that caused the errorsubtypeName- the type of the expressionactualIndent- the actual indent level of the expression
-
logError
protected final void logError(DetailAST ast, String subtypeName, int actualIndent, IndentLevel expectedIndent) Log an indentation error.- Parameters:
ast- the expression that caused the errorsubtypeName- the type of the expressionactualIndent- the actual indent level of the expressionexpectedIndent- the expected indent level of the expression
-
isOnStartOfLine
Determines if the given expression is at the start of a line.- Parameters:
ast- the expression to check- Returns:
- true if it is, false otherwise
-
getFirstToken
Searches in given sub-tree (including given node) for the token which represents first symbol for this sub-tree in file.- Parameters:
ast- a root of sub-tree in which the search should be performed.- Returns:
- a token which occurs first in the file.
-
getLineStart
Get the start of the line for the given expression.- Parameters:
ast- the expression to find the start of the line for- Returns:
- the start of the line for the given expression
-
getLineStart
protected final int getLineStart(int lineNo) Get the start of the line for the given line number.- Parameters:
lineNo- the line number to find the start for- Returns:
- the start of the line for the given expression
-
shouldIncreaseIndent
protected boolean shouldIncreaseIndent()Checks that indentation should be increased after first line in checkLinesIndent().- Returns:
- true if indentation should be increased after first line in checkLinesIndent() false otherwise
-
checkWrappingIndentation
Checks indentation on wrapped lines between and includingfirstNodeandlastNode.- Parameters:
firstNode- First node to start examining.lastNode- Last node to examine inclusively.
-
checkWrappingIndentation
protected void checkWrappingIndentation(DetailAST firstNode, DetailAST lastNode, int wrappedIndentLevel, int startIndent, boolean ignoreFirstLine) Checks indentation on wrapped lines between and includingfirstNodeandlastNode.- Parameters:
firstNode- First node to start examining.lastNode- Last node to examine inclusively.wrappedIndentLevel- Indentation all wrapped lines should use.startIndent- Indentation first line before wrapped lines used.ignoreFirstLine- Test if first line's indentation should be checked or not.
-
checkChildren
protected final void checkChildren(DetailAST parentNode, int[] tokenTypes, IndentLevel startIndent, boolean firstLineMatches, boolean allowNesting) Check the indent level of the children of the specified parent expression.- Parameters:
parentNode- the parent whose children we are checkingtokenTypes- the token types to checkstartIndent- the starting indent levelfirstLineMatches- whether or not the first line needs to matchallowNesting- whether or not nested children are allowed
-
checkExpressionSubtree
protected final void checkExpressionSubtree(DetailAST tree, IndentLevel indentLevel, boolean firstLineMatches, boolean allowNesting) Check the indentation level for an expression subtree.- Parameters:
tree- the expression subtree to checkindentLevel- the indentation levelfirstLineMatches- whether or not the first line has to matchallowNesting- whether or not subtree nesting is allowed
-
getFirstLine
Get the first line number for given expression.- Parameters:
tree- the expression to find the first line for- Returns:
- the first line of expression
-
getFirstAst
Get the first ast for given expression.- Parameters:
ast- the current ast that may have minimum line numbertree- the expression to find the first line for- Returns:
- the first ast of the expression
-
expandedTabsColumnNo
Get the column number for the start of a given expression, expanding tabs out into spaces in the process.- Parameters:
ast- the expression to find the start of- Returns:
- the column number for the start of the expression
-
findSubtreeAst
Find the set of abstract syntax tree for a given subtree.- Parameters:
astSet- the set of ast to addtree- the subtree to examineallowNesting- whether or not to allow nested subtrees
-
checkModifiers
protected void checkModifiers()Check the indentation level of modifiers. -
getIndentCheck
Accessor for the IndentCheck attribute.- Returns:
- the IndentCheck attribute
-
getMainAst
Accessor for the MainAst attribute.- Returns:
- the MainAst attribute
-
getParent
Accessor for the Parent attribute.- Returns:
- the Parent attribute
-
getBasicOffset
protected final int getBasicOffset()A shortcut forIndentationCheckproperty.- Returns:
- value of basicOffset property of
IndentationCheck
-
getBraceAdjustment
protected final int getBraceAdjustment()A shortcut forIndentationCheckproperty.- Returns:
- value of braceAdjustment property
of
IndentationCheck
-
checkRightParen
Check the indentation of the right parenthesis.- Parameters:
lparen- left parenthesis associated with aRparenrparen- parenthesis to check
-
checkLeftParen
Check the indentation of the left parenthesis.- Parameters:
lparen- parenthesis to check
-