@Override public void leaveToken(DetailAST ast) { if (ast.getType() != TokenTypes.CLASS_DEF) { return; } final ClassDesc desc = classes.pop(); if (!desc.isDeclaredAsFinal() && !desc.isDeclaredAsAbstract() && desc.isWithPrivateCtor() && !desc.isWithNonPrivateCtor()) { final String className = ast.findFirstToken(TokenTypes.IDENT).getText(); log(ast.getLineNo(), MSG_KEY, className); } }
public String toString() { return "[array " + JDeserialize.hex(handle) + " classdesc " + classdesc.toString() + ": " + data.toString() + "]"; }
@Override public void visitToken(DetailAST ast) { final DetailAST modifiers = ast.findFirstToken(TokenTypes.MODIFIERS); if (ast.getType() == TokenTypes.CLASS_DEF) { final boolean isFinal = modifiers.branchContains(TokenTypes.FINAL); final boolean isAbstract = modifiers.branchContains(TokenTypes.ABSTRACT); classes.push(new ClassDesc(isFinal, isAbstract)); } // ctors in enums don't matter else if (!ScopeUtils.isInEnumBlock(ast)) { final ClassDesc desc = classes.peek(); if (modifiers.branchContains(TokenTypes.LITERAL_PRIVATE)) { desc.reportPrivateCtor(); } else { desc.reportNonPrivateCtor(); } } }