1 package com.puppycrawl.tools.checkstyle.checks.indentation; 20 21 import com.puppycrawl.tools.checkstyle.api.DetailAST; 22 import com.puppycrawl.tools.checkstyle.api.TokenTypes; 23 24 29 public class MethodDefHandler extends BlockParentHandler 30 { 31 39 public MethodDefHandler(IndentationCheck aIndentCheck, 40 DetailAST aAst, ExpressionHandler aParent) 41 { 42 super(aIndentCheck, (aAst.getType() == TokenTypes.CTOR_DEF) 43 ? "ctor def" : "method def", aAst, aParent); 44 } 45 46 51 protected DetailAST getToplevelAST() 52 { 53 return null; 55 } 56 57 60 private void checkIdent() 61 { 62 final DetailAST ident = getMainAst().findFirstToken(TokenTypes.IDENT); 63 final int columnNo = expandedTabsColumnNo(ident); 64 if (startsLine(ident) && !getLevel().accept(columnNo)) { 65 logError(ident, "", columnNo); 66 } 67 } 68 69 72 private void checkThrows() 73 { 74 final DetailAST throwsAst = 75 getMainAst().findFirstToken(TokenTypes.LITERAL_THROWS); 76 if (throwsAst == null) { 77 return; 78 } 79 80 final int columnNo = expandedTabsColumnNo(throwsAst); 81 final IndentLevel expectedColumnNo = 82 new IndentLevel(getLevel(), getBasicOffset()); 83 84 if (startsLine(throwsAst) 85 && !expectedColumnNo.accept(columnNo)) 86 { 87 logError(throwsAst, "throws", columnNo, expectedColumnNo); 88 } 89 } 90 91 94 private void checkType() 95 { 96 final DetailAST type = getMainAst().findFirstToken(TokenTypes.TYPE); 97 final DetailAST ident = ExpressionHandler.getFirstToken(type); 98 final int columnNo = expandedTabsColumnNo(ident); 99 if (startsLine(ident) && !getLevel().accept(columnNo)) { 100 logError(ident, "return type", columnNo); 101 } 102 } 103 104 107 private void checkParameters() 108 { 109 final DetailAST params = 110 getMainAst().findFirstToken(TokenTypes.PARAMETERS); 111 checkExpressionSubtree(params, getLevel(), false, false); 112 } 113 114 117 public void checkIndentation() 118 { 119 checkModifiers(); 120 checkIdent(); 121 checkThrows(); 122 if (getMainAst().getType() != TokenTypes.CTOR_DEF) { 123 checkType(); 124 } 125 checkParameters(); 126 127 if (getLCurly() == null) { 128 return; 130 } 131 super.checkIndentation(); 132 } 133 } 134 | Popular Tags |