Skip to content

Commit e1b16e2

Browse files
graememorganError Prone Team
authored andcommitted
@ImmutableTypeParameter is really a subset of @ThreadSafeTypeParameter, much as @Immutable is a subset of @ThreadSafe.
PiperOrigin-RevId: 797282844
1 parent 0aca163 commit e1b16e2

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

core/src/main/java/com/google/errorprone/bugpatterns/threadsafety/ThreadSafety.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import com.google.errorprone.VisitorState;
3333
import com.google.errorprone.annotations.CanIgnoreReturnValue;
3434
import com.google.errorprone.annotations.Immutable;
35+
import com.google.errorprone.annotations.ImmutableTypeParameter;
3536
import com.google.errorprone.annotations.ThreadSafe;
3637
import com.google.errorprone.annotations.ThreadSafeTypeParameter;
3738
import com.google.errorprone.bugpatterns.CanBeStaticAnalyzer;
@@ -94,7 +95,10 @@ public static ThreadSafety.Builder threadSafeBuilder(
9495
.knownTypes(wellKnownThreadSafety)
9596
.markerAnnotations(ImmutableSet.of(ThreadSafe.class.getName()))
9697
.acceptedAnnotations(ImmutableSet.of(Immutable.class.getName()))
97-
.typeParameterAnnotation(ImmutableSet.of(ThreadSafeTypeParameter.class.getName()));
98+
.typeParameterAnnotation(
99+
ImmutableSet.of(
100+
ThreadSafeTypeParameter.class.getName(),
101+
ImmutableTypeParameter.class.getName()));
98102
return builder;
99103
}
100104

core/src/test/java/com/google/errorprone/bugpatterns/threadsafety/ThreadSafeCheckerTest.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1353,6 +1353,23 @@ class Test<@ThreadSafeTypeParameter T> {
13531353
.doTest();
13541354
}
13551355

1356+
@Test
1357+
public void immutableTypeParam_alsoThreadSafe() {
1358+
compilationHelper
1359+
.addSourceLines(
1360+
"Test.java",
1361+
"""
1362+
import com.google.errorprone.annotations.ThreadSafe;
1363+
import com.google.errorprone.annotations.ImmutableTypeParameter;
1364+
1365+
@ThreadSafe
1366+
class Test<@ImmutableTypeParameter T> {
1367+
final T t = null;
1368+
}
1369+
""")
1370+
.doTest();
1371+
}
1372+
13561373
@Test
13571374
public void threadSafeTypeParameterInstantiation() {
13581375
compilationHelper

0 commit comments

Comments
 (0)