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"))
+ }
}