--- old/src/jdk.compiler/share/classes/com/sun/tools/javac/code/Lint.java 2019-09-04 13:03:47.949963468 -0700 +++ new/src/jdk.compiler/share/classes/com/sun/tools/javac/code/Lint.java 2019-09-04 13:03:47.753963468 -0700 @@ -177,6 +177,11 @@ DEPRECATION("deprecation"), /** + * Warn about compiler generation of a default constructor. + */ + DEFAULT_CTOR("default-ctor"), + + /** * Warn about items which are documented with an {@code @deprecated} JavaDoc * comment, but which do not have {@code @Deprecated} annotation. */ --- old/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java 2019-09-04 13:03:48.401963468 -0700 +++ new/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java 2019-09-04 13:03:48.241963468 -0700 @@ -3566,6 +3566,20 @@ } } + /** + * + */ + void checkDefaultConstructor(ClassSymbol c) { + // Kick out anonymous and private? + if (lint.isEnabled(Lint.LintCategory.DEFAULT_CTOR) && + (c.flags() & ENUM) == 0 && + !c.isAnonymous() && + (c.flags() & PUBLIC) != 0) { + System.out.println("Default ctor on " + c); + } + return; + } + private class ConversionWarner extends Warner { final String uncheckedKey; final Type found; --- old/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TypeEnter.java 2019-09-04 13:03:48.901963468 -0700 +++ new/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TypeEnter.java 2019-09-04 13:03:48.725963468 -0700 @@ -914,6 +914,8 @@ } } if (addConstructor) { + // Lint check here + chk.checkDefaultConstructor(sym); MethodSymbol basedConstructor = nc != null ? (MethodSymbol)nc.constructor : null; JCTree constrDef = DefaultConstructor(make.at(tree.pos), sym,