Class AbstractExpressionHandler

    • Constructor Detail

      • AbstractExpressionHandler

        protected AbstractExpressionHandler​(IndentationCheck indentCheck,
                                            java.lang.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 check
        typeName - the name of the handler
        expr - the abstract syntax tree
        parent - the parent handler
    • Method Detail

      • checkIndentation

        public abstract void checkIndentation()
        Check the indentation of the expression we are handling.
      • getIndent

        public final IndentLevel 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

        protected IndentLevel getIndentImpl()
        Compute the indentation amount for this handler.
        Returns:
        the expected indentation amount
      • getSuggestedChildIndent

        public IndentLevel getSuggestedChildIndent​(AbstractExpressionHandler child)
        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

        protected final void logError​(DetailAST ast,
                                      java.lang.String subtypeName,
                                      int actualIndent)
        Log an indentation error.
        Parameters:
        ast - the expression that caused the error
        subtypeName - the type of the expression
        actualIndent - the actual indent level of the expression
      • logError

        protected final void logError​(DetailAST ast,
                                      java.lang.String subtypeName,
                                      int actualIndent,
                                      IndentLevel expectedIndent)
        Log an indentation error.
        Parameters:
        ast - the expression that caused the error
        subtypeName - the type of the expression
        actualIndent - the actual indent level of the expression
        expectedIndent - the expected indent level of the expression
      • isOnStartOfLine

        protected final boolean isOnStartOfLine​(DetailAST ast)
        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

        public static DetailAST getFirstToken​(DetailAST ast)
        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

        protected final int getLineStart​(DetailAST ast)
        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

        protected void checkWrappingIndentation​(DetailAST firstNode,
                                                DetailAST lastNode)
        Checks indentation on wrapped lines between and including firstNode and lastNode.
        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 including firstNode and lastNode.
        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 checking
        tokenTypes - the token types to check
        startIndent - the starting indent level
        firstLineMatches - whether or not the first line needs to match
        allowNesting - 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 check
        indentLevel - the indentation level
        firstLineMatches - whether or not the first line has to match
        allowNesting - whether or not subtree nesting is allowed
      • getFirstLine

        protected static int getFirstLine​(DetailAST tree)
        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

        protected static DetailAST getFirstAst​(DetailAST ast,
                                               DetailAST tree)
        Get the first ast for given expression.
        Parameters:
        ast - the current ast that may have minimum line number
        tree - the expression to find the first line for
        Returns:
        the first ast of the expression
      • expandedTabsColumnNo

        protected final int expandedTabsColumnNo​(DetailAST ast)
        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

        protected final void findSubtreeAst​(DetailAstSet astSet,
                                            DetailAST tree,
                                            boolean allowNesting)
        Find the set of abstract syntax tree for a given subtree.
        Parameters:
        astSet - the set of ast to add
        tree - the subtree to examine
        allowNesting - whether or not to allow nested subtrees
      • checkModifiers

        protected void checkModifiers()
        Check the indentation level of modifiers.
      • getIndentCheck

        protected final IndentationCheck getIndentCheck()
        Accessor for the IndentCheck attribute.
        Returns:
        the IndentCheck attribute
      • getMainAst

        protected final DetailAST getMainAst()
        Accessor for the MainAst attribute.
        Returns:
        the MainAst attribute
      • getParent

        protected final AbstractExpressionHandler getParent()
        Accessor for the Parent attribute.
        Returns:
        the Parent attribute
      • getBasicOffset

        protected final int getBasicOffset()
        A shortcut for IndentationCheck property.
        Returns:
        value of basicOffset property of IndentationCheck
      • getBraceAdjustment

        protected final int getBraceAdjustment()
        A shortcut for IndentationCheck property.
        Returns:
        value of braceAdjustment property of IndentationCheck
      • checkRightParen

        protected final void checkRightParen​(DetailAST lparen,
                                             DetailAST rparen)
        Check the indentation of the right parenthesis.
        Parameters:
        rparen - parenthesis to check
        lparen - left parenthesis associated with aRparen
      • checkLeftParen

        protected final void checkLeftParen​(DetailAST lparen)
        Check the indentation of the left parenthesis.
        Parameters:
        lparen - parenthesis to check