From 721096fd16b9f9af7ae7dd657bd9d4ae75db5b46 Mon Sep 17 00:00:00 2001 From: Liam Miller-Cushon Date: Fri, 30 Dec 2022 17:04:58 -0800 Subject: [PATCH] Fix a crash in NonCanonicalType on module symbols Fixes https://github.com/google/error-prone/issues/3639 PiperOrigin-RevId: 498646740 --- .../errorprone/bugpatterns/NonCanonicalType.java | 7 ++++++- .../errorprone/bugpatterns/NonCanonicalTypeTest.java | 12 ++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/com/google/errorprone/bugpatterns/NonCanonicalType.java b/core/src/main/java/com/google/errorprone/bugpatterns/NonCanonicalType.java index bfe848bba12..0991a851a59 100644 --- a/core/src/main/java/com/google/errorprone/bugpatterns/NonCanonicalType.java +++ b/core/src/main/java/com/google/errorprone/bugpatterns/NonCanonicalType.java @@ -89,7 +89,12 @@ private static String canonicalName(MemberSelectTree tree) { if (!(sym instanceof Symbol.TypeSymbol)) { return null; } - return sym.owner.getQualifiedName() + "." + sym.getSimpleName(); + Symbol owner = sym.owner; + if (owner == null) { + // module symbols don't have owners + return null; + } + return owner.getQualifiedName() + "." + sym.getSimpleName(); } private static final Pattern PACKAGE_CLASS_NAME_SPLITTER = Pattern.compile("(.*?)\\.([A-Z].*)"); diff --git a/core/src/test/java/com/google/errorprone/bugpatterns/NonCanonicalTypeTest.java b/core/src/test/java/com/google/errorprone/bugpatterns/NonCanonicalTypeTest.java index 127bca95cc5..23d1d6e8ab6 100644 --- a/core/src/test/java/com/google/errorprone/bugpatterns/NonCanonicalTypeTest.java +++ b/core/src/test/java/com/google/errorprone/bugpatterns/NonCanonicalTypeTest.java @@ -242,4 +242,16 @@ public void innerArray() { "}") .doTest(); } + + // see https://github.com/google/error-prone/issues/3639 + @Test + public void moduleInfo() { + compilationHelper + .addSourceLines( + "module-info.java", // + "module testmodule {", + " requires java.base;", + "}") + .doTest(); + } }