tbroyer / gradle-errorprone-plugin

Gradle plugin to use the error-prone compiler for Java

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Compiler error when migrating from Error Prone 2.3.4 to 2.4.0

serhii-lekariev opened this issue · comments

If an enum declares a method with a Javadoc that has a {@link } reference, error: enum types may not be instantiated compiler error is emitted.

This was discovered when changing the version from 2.3.4 to 2.4.0. This cannot be reproduced using the 2.3.4 version.

The version of this plugin doesn't seem to matter, this happens on versions 1.1.1 and 1.2.1.

Minimal reproduction can be found here.

This is an ErrorProne bug; please report it there.

Running your repro with --debug displays de compiler arguments passed to Javac; copy-paste them, fix the -sourcepath argument by providing an actual empty string (i.e. -sourcepath '"" rather than -sourcepath ), and pass them to javac on the command-line:

$ java -version
openjdk version "11.0.7" 2020-04-14
OpenJDK Runtime Environment (build 11.0.7+10)
OpenJDK 64-Bit Server VM (build 11.0.7+10, mixed mode)
$ javac -version
javac 11.0.7
$ javac -source 11 -target 11 -d /home/tbr/Projects/error-prone-error-repro/build/classes/java/main -h /home/tbr/Projects/error-prone-error-repro/build/generated/sources/headers/java/main -g -sourcepath '' -processorpath /home/tbr/.gradle/caches/modules-2/files-2.1/com.google.errorprone/error_prone_core/2.4.0/ae8ef63e28e269972672797175f195a59edde69b/error_prone_core-2.4.0.jar:/home/tbr/.gradle/caches/modules-2/files-2.1/com.google.errorprone/error_prone_check_api/2.4.0/d66d1e00201c8ee6e62593bd77ef798ac9e1caaa/error_prone_check_api-2.4.0.jar:/home/tbr/.gradle/caches/modules-2/files-2.1/com.google.errorprone/error_prone_annotation/2.4.0/8abfd21ac0ce61d1344ec5288962c74edf534dd0/error_prone_annotation-2.4.0.jar:/home/tbr/.gradle/caches/modules-2/files-2.1/com.google.errorprone/error_prone_type_annotations/2.4.0/101b970285e1e464d0c39e4402e2395c20c70a4f/error_prone_type_annotations-2.4.0.jar:/home/tbr/.gradle/caches/modules-2/files-2.1/org.pcollections/pcollections/2.1.2/15925fd6c32a29fe3f40a048d238c5ca58cb8362/pcollections-2.1.2.jar:/home/tbr/.gradle/caches/modules-2/files-2.1/com.google.auto/auto-common/0.10/c8f153ebe04a17183480ab4016098055fb474364/auto-common-0.10.jar:/home/tbr/.gradle/caches/modules-2/files-2.1/com.google.guava/guava/27.0.1-jre/bd41a290787b5301e63929676d792c507bbc00ae/guava-27.0.1-jre.jar:/home/tbr/.gradle/caches/modules-2/files-2.1/com.google.code.findbugs/jFormatString/3.0.0/d3995f9be450813bc2ccee8f0774c1a3033a0f30/jFormatString-3.0.0.jar:/home/tbr/.gradle/caches/modules-2/files-2.1/com.google.code.findbugs/jsr305/3.0.2/25ea2e8b0c338a877313bd4672d3fe056ea78f0d/jsr305-3.0.2.jar:/home/tbr/.gradle/caches/modules-2/files-2.1/org.checkerframework/dataflow-shaded/3.1.2/24f7f6545797d249da9886f7479f834a37b78c47/dataflow-shaded-3.1.2.jar:/home/tbr/.gradle/caches/modules-2/files-2.1/com.google.auto.value/auto-value-annotations/1.7/5be124948ebdc7807df68207f35a0f23ce427f29/auto-value-annotations-1.7.jar:/home/tbr/.gradle/caches/modules-2/files-2.1/com.github.ben-manes.caffeine/caffeine/2.8.0/6000774d7f8412ced005a704188ced78beeed2bb/caffeine-2.8.0.jar:/home/tbr/.gradle/caches/modules-2/files-2.1/com.google.errorprone/error_prone_annotations/2.4.0/32ecccc595e4e4d813a80ee9e3ab5813d65874eb/error_prone_annotations-2.4.0.jar:/home/tbr/.gradle/caches/modules-2/files-2.1/com.google.protobuf/protobuf-java/3.4.0/b32aba0cbe737a4ca953f71688725972e3ee927c/protobuf-java-3.4.0.jar:/home/tbr/.gradle/caches/modules-2/files-2.1/com.google.auto.service/auto-service-annotations/1.0-rc6/32c6a6313217c949396376d9caddb6b8c8f4e7c3/auto-service-annotations-1.0-rc6.jar:/home/tbr/.gradle/caches/modules-2/files-2.1/org.threeten/threeten-extra/1.5.0/d6adb54fefe72482ed049f07af31ddf2c287345f/threeten-extra-1.5.0.jar:/home/tbr/.gradle/caches/modules-2/files-2.1/com.googlecode.java-diff-utils/diffutils/1.3.0/7e060dd5b19431e6d198e91ff670644372f60fbd/diffutils-1.3.0.jar:/home/tbr/.gradle/caches/modules-2/files-2.1/com.github.kevinstern/software-and-algorithms/1.0/5e77666b72c6c5dd583c36148d17fc47f944dfb5/software-and-algorithms-1.0.jar:/home/tbr/.gradle/caches/modules-2/files-2.1/com.google.guava/failureaccess/1.0.1/1dcf1de382a0bf95a3d8b0849546c88bac1292c9/failureaccess-1.0.1.jar:/home/tbr/.gradle/caches/modules-2/files-2.1/com.google.guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/b421526c5f297295adef1c886e5246c39d4ac629/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar:/home/tbr/.gradle/caches/modules-2/files-2.1/org.checkerframework/checker-qual/2.10.0/5786699a0cb71f9dc32e6cca1d665eef07a0882f/checker-qual-2.10.0.jar:/home/tbr/.gradle/caches/modules-2/files-2.1/com.google.j2objc/j2objc-annotations/1.1/ed28ded51a8b1c6b112568def5f4b455e6809019/j2objc-annotations-1.1.jar:/home/tbr/.gradle/caches/modules-2/files-2.1/org.codehaus.mojo/animal-sniffer-annotations/1.17/f97ce6decaea32b36101e37979f8b647f00681fb/animal-sniffer-annotations-1.17.jar -s /home/tbr/Projects/error-prone-error-repro/build/generated/sources/annotationProcessor/java/main -XDuseUnsharedTable=true -Xplugin:ErrorProne  -XDcompilePolicy=simple /home/tbr/Projects/error-prone-error-repro/src/main/java/repro/EnumThatReproduces.java
/home/tbr/Projects/error-prone-error-repro/src/main/java/repro/EnumThatReproduces.java:19: warning: [UnusedMethod] Private method 'method' is never used.
        private void method() {
                     ^
    (see https://errorprone.info/bugpattern/UnusedMethod)
  Did you mean to remove this line?
/home/tbr/Projects/error-prone-error-repro/src/main/java/repro/EnumThatReproduces.java:5: error: enum types may not be instantiated
    INSTANCE {
             ^
1 error
1 warning

Alternatively, you could also change the build script to remove the plugin:

diff --git a/build.gradle.kts b/build.gradle.kts
index 7ecb765..93f0445 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -2,7 +2,6 @@ import java.net.URI
 
 plugins {
     java
-    id("net.ltgt.errorprone").version("1.2.1")
 }
 
 java {
@@ -22,5 +21,13 @@ repositories {
 }
 
 dependencies {
-    errorprone("com.google.errorprone:error_prone_core:2.4.0")
+    annotationProcessor("com.google.errorprone:error_prone_core:2.4.0") {
+        exclude("com.google.errorprone", "javac")
+    }
+}
+
+tasks {
+    compileJava {
+        options.compilerArgs.addAll(listOf("-Xplugin:ErrorProne", "-XDcompilePolicy=simple"))
+    }
 }