--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java Tue Apr 04 23:04:39 2017 -0700
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java Wed Apr 05 14:34:15 2017 +0530
@@ -2107,10 +2107,32 @@
Name moduleName = tree.sym.name;
Assert.checkNonNull(moduleName);
if (lint.isEnabled(LintCategory.MODULE)) {
- String moduleNameString = moduleName.toString();
- int nameLength = moduleNameString.length();
- if (nameLength > 0 && Character.isDigit(moduleNameString.charAt(nameLength - 1))) {
- log.warning(Lint.LintCategory.MODULE, tree.qualId.pos(), Warnings.PoorChoiceForModuleName(moduleName));
+ JCExpression qualId = tree.qualId;
+ while (qualId != null) {
+ Name componentName;
+ DiagnosticPosition pos;
+ switch (qualId.getTag()) {
+ case SELECT:
+ JCFieldAccess selectNode = ((JCFieldAccess) qualId);
+ componentName = selectNode.name;
+ pos = selectNode.pos();
+ qualId = selectNode.selected;
+ break;
+ case IDENT:
+ componentName = ((JCIdent) qualId).name;
+ pos = qualId.pos();
+ qualId = null;
+ break;
+ default:
+ throw new AssertionError("Unexpected qualified identifier: " + qualId.toString());
+ }
+ if (componentName != null) {
+ String moduleNameComponentString = componentName.toString();
+ int nameLength = moduleNameComponentString.length();
+ if (nameLength > 0 && Character.isDigit(moduleNameComponentString.charAt(nameLength - 1))) {
+ log.warning(Lint.LintCategory.MODULE, pos, Warnings.PoorChoiceForModuleName(componentName));
+ }
+ }
}
}
}