diff --git a/.github/workflows/full-check.yml b/.github/workflows/full-check.yml
index a20411227d4..58282a9e90e 100644
--- a/.github/workflows/full-check.yml
+++ b/.github/workflows/full-check.yml
@@ -24,7 +24,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
- java-version: [ '11', '17', '21', '22' ]
+ java-version: [ '17', '21', '25' ]
steps:
- name: Checkout GWT itself into one directory
uses: actions/checkout@v6
@@ -33,7 +33,8 @@ jobs:
- name: Checkout GWT tools into a sibling directory
uses: actions/checkout@v6
with:
- repository: 'gwtproject/tools'
+ repository: 'Vertispan/tools'
+ ref: 'errorprone-2.42'
path: 'tools'
- name: Set up JDK ${{ matrix.java-version }}
# GWT requires Java 11+ to build
diff --git a/.github/workflows/quick-check.yml b/.github/workflows/quick-check.yml
index e87cc11e973..52add851053 100644
--- a/.github/workflows/quick-check.yml
+++ b/.github/workflows/quick-check.yml
@@ -9,7 +9,7 @@ jobs:
strategy:
fail-fast: false
matrix:
- java-version: ['11', '17', '21', '22']
+ java-version: ['17', '21', '25']
steps:
- name: Checkout GWT itself into one directory
uses: actions/checkout@v6
@@ -20,7 +20,8 @@ jobs:
- name: Checkout GWT tools into a sibling directory
uses: actions/checkout@v6
with:
- repository: 'gwtproject/tools'
+ repository: 'Vertispan/tools'
+ ref: 'errorprone-2.42'
path: 'tools'
- name: Set up JDK ${{ matrix.java-version }}
# GWT presently requires Java 11+ to build
diff --git a/build_tools/doctool/src/com/google/doctool/custom/missing/gh10337.properties b/build_tools/doctool/src/com/google/doctool/custom/missing/gh10337.properties
new file mode 100644
index 00000000000..303cec80cdd
--- /dev/null
+++ b/build_tools/doctool/src/com/google/doctool/custom/missing/gh10337.properties
@@ -0,0 +1,3 @@
+description=This is the wrong issue, but these methods are still preview, and we need an issue.
+members=java.util.List#ofLazy(int, IntFunction)\
+java.util.Map#ofLazy(Set, Function)
diff --git a/build_tools/doctool/src/com/google/doctool/custom/missing/gh10338.properties b/build_tools/doctool/src/com/google/doctool/custom/missing/gh10338.properties
new file mode 100644
index 00000000000..d2e5d4aea0c
--- /dev/null
+++ b/build_tools/doctool/src/com/google/doctool/custom/missing/gh10338.properties
@@ -0,0 +1,2 @@
+members=java.util.Comparator#min(Object, Object)\
+java.util.Comparator#max(Object, Object)
diff --git a/build_tools/doctool/src/com/google/doctool/custom/missing/gh10339.properties b/build_tools/doctool/src/com/google/doctool/custom/missing/gh10339.properties
new file mode 100644
index 00000000000..40e1a619f0d
--- /dev/null
+++ b/build_tools/doctool/src/com/google/doctool/custom/missing/gh10339.properties
@@ -0,0 +1 @@
+members=java.lang.CharSequence#getChars(int, int, char[], int)
diff --git a/build_tools/doctool/src/com/google/doctool/custom/missing/gh10340.properties b/build_tools/doctool/src/com/google/doctool/custom/missing/gh10340.properties
new file mode 100644
index 00000000000..3db156e1ac5
--- /dev/null
+++ b/build_tools/doctool/src/com/google/doctool/custom/missing/gh10340.properties
@@ -0,0 +1,14 @@
+members=java.lang.Math#unsignedMultiplyExact(int, int)\
+java.lang.Math#unsignedMultiplyExact(long, long)\
+java.lang.Math#unsignedMultiplyExact(long, int)\
+java.lang.Math#powExact(int, int)\
+java.lang.Math#powExact(long, int)\
+java.lang.Math#unsignedPowExact(long, int)\
+java.lang.Math#unsignedPowExact(int, int)\
+java.lang.StrictMath#unsignedMultiplyExact(long, int)\
+java.lang.StrictMath#unsignedMultiplyExact(long, long)\
+java.lang.StrictMath#unsignedMultiplyExact(int, int)\
+java.lang.StrictMath#powExact(long, int)\
+java.lang.StrictMath#powExact(int, int)\
+java.lang.StrictMath#unsignedPowExact(long, int)\
+java.lang.StrictMath#unsignedPowExact(int, int)
diff --git a/build_tools/doctool/src/com/google/doctool/custom/missing/gh10341.properties b/build_tools/doctool/src/com/google/doctool/custom/missing/gh10341.properties
new file mode 100644
index 00000000000..2988c0c918f
--- /dev/null
+++ b/build_tools/doctool/src/com/google/doctool/custom/missing/gh10341.properties
@@ -0,0 +1,3 @@
+members=java.io.Reader#of(CharSequence)\
+java.io.Reader#readAllLines()\
+java.io.Reader#readAllAsString()
diff --git a/build_tools/doctool/src/com/google/doctool/custom/missing/gh10342.properties b/build_tools/doctool/src/com/google/doctool/custom/missing/gh10342.properties
new file mode 100644
index 00000000000..f644db36295
--- /dev/null
+++ b/build_tools/doctool/src/com/google/doctool/custom/missing/gh10342.properties
@@ -0,0 +1,2 @@
+members=java.math.BigInteger#rootn(int)\
+java.math.BigInteger#rootnAndRemainder(int)
diff --git a/build_tools/doctool/src/com/google/doctool/custom/missing/gh10343.properties b/build_tools/doctool/src/com/google/doctool/custom/missing/gh10343.properties
new file mode 100644
index 00000000000..106d8693e27
--- /dev/null
+++ b/build_tools/doctool/src/com/google/doctool/custom/missing/gh10343.properties
@@ -0,0 +1,3 @@
+members=java.lang.String#equalsFoldCase(String)\
+java.lang.String#compareToFoldCase(String)\
+java.lang.String#UNICODE_CASEFOLD_ORDER
diff --git a/common.ant.xml b/common.ant.xml
index d5e03123423..d2f2d06f981 100755
--- a/common.ant.xml
+++ b/common.ant.xml
@@ -54,13 +54,13 @@
-
+
-
-
+
+
@@ -187,6 +187,7 @@
+
diff --git a/dev/core/test/com/google/gwt/dev/GwtVersionTest.java b/dev/core/test/com/google/gwt/dev/GwtVersionTest.java
index 283cbfd27a5..e6c40eedcb9 100644
--- a/dev/core/test/com/google/gwt/dev/GwtVersionTest.java
+++ b/dev/core/test/com/google/gwt/dev/GwtVersionTest.java
@@ -78,6 +78,7 @@ public void testCompareTo() {
/**
* Test that GwtVersion.compareTo produced expected results.
*/
+ @SuppressWarnings("SelfAssertion")
public void testEquals() {
GwtVersion v1 = new GwtVersion("0.0.0");
assertEquals(v1, v1);
diff --git a/dev/core/test/com/google/gwt/dev/javac/CompilationStateTestBase.java b/dev/core/test/com/google/gwt/dev/javac/CompilationStateTestBase.java
index 3a0834ac226..6a5cc93e840 100644
--- a/dev/core/test/com/google/gwt/dev/javac/CompilationStateTestBase.java
+++ b/dev/core/test/com/google/gwt/dev/javac/CompilationStateTestBase.java
@@ -170,12 +170,12 @@ protected void validateCompilationState(String... generatedTypeNames) {
// Not always true due to caching! A source unit for FOO can b
// identical to the generated FOO and already be cached.
// assertTrue(unit.isGenerated());
- assertNotNull(generatedTypes.remove(className));
+ assertTrue(generatedTypes.remove(className));
} else {
String partialPath = className.replace('.', '/') + ".java";
assertTrue(resourcePathNames.contains(partialPath));
// TODO: Validate the source file matches the resource.
- assertNotNull(resourcePathNames.remove(partialPath));
+ assertTrue(resourcePathNames.remove(partialPath));
}
}
// The mutable sets should be empty now.
diff --git a/dev/core/test/com/google/gwt/dev/util/StringKeyTest.java b/dev/core/test/com/google/gwt/dev/util/StringKeyTest.java
index 10e4fb42361..91312064583 100644
--- a/dev/core/test/com/google/gwt/dev/util/StringKeyTest.java
+++ b/dev/core/test/com/google/gwt/dev/util/StringKeyTest.java
@@ -48,6 +48,7 @@ private static > void assertLT(T a, T b) {
assertTrue(a.compareTo(b) < 0);
}
+ @SuppressWarnings("SelfAssertion")
public void test() {
StringKey a = new KeyA("hello");
StringKey b = new KeyB("world");
@@ -64,6 +65,7 @@ public void test() {
assertGT(b, a);
}
+ @SuppressWarnings("SelfAssertion")
public void testNull() {
StringKey a = new KeyA(null);
StringKey b = new KeyB(null);
diff --git a/dev/core/test/org/apache/commons/collections/AbstractTestObject.java b/dev/core/test/org/apache/commons/collections/AbstractTestObject.java
index 4bc2e948a9d..640b66b7d13 100644
--- a/dev/core/test/org/apache/commons/collections/AbstractTestObject.java
+++ b/dev/core/test/org/apache/commons/collections/AbstractTestObject.java
@@ -105,6 +105,7 @@ public boolean isEqualsCheckable() {
}
//-----------------------------------------------------------------------
+ @SuppressWarnings("SelfAssertion")
public void testObjectEqualsSelf() {
Object obj = makeObject();
assertEquals("A Object should equal itself", obj, obj);
diff --git a/user/src/com/google/gwt/resources/rg/CssResourceGenerator.java b/user/src/com/google/gwt/resources/rg/CssResourceGenerator.java
index e8376f22443..4ed93e7859f 100644
--- a/user/src/com/google/gwt/resources/rg/CssResourceGenerator.java
+++ b/user/src/com/google/gwt/resources/rg/CssResourceGenerator.java
@@ -90,6 +90,7 @@
import java.util.List;
import java.util.Locale;
import java.util.Map;
+import java.util.Objects;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeMap;
@@ -931,7 +932,7 @@ private void initReplacements(TreeLogger logger, ResourceContext context,
* be be worth the effort to simplify this.
*/
- if (context.getCachedData(KEY_HAS_CACHED_DATA, Boolean.class) != Boolean.TRUE) {
+ if (!Objects.equals(context.getCachedData(KEY_HAS_CACHED_DATA, Boolean.class), Boolean.TRUE)) {
ConfigurationProperty prop;
TreeSet reservedPrefixes = new TreeSet();
diff --git a/user/src/com/google/gwt/resources/rg/GssResourceGenerator.java b/user/src/com/google/gwt/resources/rg/GssResourceGenerator.java
index bfd787ff8d1..d5a88c43a94 100644
--- a/user/src/com/google/gwt/resources/rg/GssResourceGenerator.java
+++ b/user/src/com/google/gwt/resources/rg/GssResourceGenerator.java
@@ -140,6 +140,7 @@
import java.util.List;
import java.util.Locale;
import java.util.Map;
+import java.util.Objects;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;
@@ -695,7 +696,7 @@ public void init(TreeLogger logger, ResourceContext context) throws UnableToComp
@SuppressWarnings("unchecked")
private void initReplacement(ResourceContext context) {
- if (context.getCachedData(KEY_HAS_CACHED_DATA, Boolean.class) != Boolean.TRUE) {
+ if (!Objects.equals(context.getCachedData(KEY_HAS_CACHED_DATA, Boolean.class), Boolean.TRUE)) {
context.putCachedData(KEY_SHARED_METHODS, new IdentityHashMap());
context.putCachedData(KEY_BY_CLASS_AND_METHOD, new IdentityHashMap 0L);
diff --git a/user/test/com/google/gwt/emultest/java/lang/CompilerConstantStringTest.java b/user/test/com/google/gwt/emultest/java/lang/CompilerConstantStringTest.java
index 80763a0b4f4..43fa0e9f572 100644
--- a/user/test/com/google/gwt/emultest/java/lang/CompilerConstantStringTest.java
+++ b/user/test/com/google/gwt/emultest/java/lang/CompilerConstantStringTest.java
@@ -38,6 +38,7 @@ public void testCharAt() {
assertEquals('b', "abc".charAt(1));
}
+ @SuppressWarnings("SelfAssertion")
public void testConcat() {
assertEquals("abcdef", "abc" + "def");
assertEquals("abcdef", "abc".concat("def"));
diff --git a/user/test/com/google/gwt/emultest/java/util/TestObject.java b/user/test/com/google/gwt/emultest/java/util/TestObject.java
index 63ce3e42a59..60d5dfa7677 100644
--- a/user/test/com/google/gwt/emultest/java/util/TestObject.java
+++ b/user/test/com/google/gwt/emultest/java/util/TestObject.java
@@ -47,6 +47,7 @@ public int getCompatibilityVersion() {
/** Return a new, empty {@link Object} to used for testing. */
public abstract Object makeObject();
+ @SuppressWarnings("SelfAssertion")
public void testObjectEqualsSelf() {
Object obj = makeObject();
assertEquals("A Object should equal itself", obj, obj);
diff --git a/user/test/com/google/gwt/emultest/java8/lang/StringTest.java b/user/test/com/google/gwt/emultest/java8/lang/StringTest.java
index 67dace4100d..11f4fd757cb 100644
--- a/user/test/com/google/gwt/emultest/java8/lang/StringTest.java
+++ b/user/test/com/google/gwt/emultest/java8/lang/StringTest.java
@@ -29,6 +29,7 @@ public String getModuleName() {
return "com.google.gwt.emultest.EmulSuite";
}
+ @SuppressWarnings("StringJoin")
public void testJoin() {
assertEquals("", String.join("", ""));
assertEquals("", String.join(",", ""));
diff --git a/user/test/com/google/gwt/junit/client/GWTTestCaseTest.java b/user/test/com/google/gwt/junit/client/GWTTestCaseTest.java
index 44681379679..ec527522a4f 100644
--- a/user/test/com/google/gwt/junit/client/GWTTestCaseTest.java
+++ b/user/test/com/google/gwt/junit/client/GWTTestCaseTest.java
@@ -117,6 +117,7 @@ public void testThrowsNonSerializableException_hasMetaData() throws Throwable {
}
+ @SuppressWarnings("SelfAssertion")
public void testAssertEqualsDouble() {
assertEquals(0.0, 0.0, 0.0);
assertEquals(1.1, 1.1, 0.0);
@@ -134,6 +135,7 @@ public void testAssertEqualsDouble() {
assertNotEquals(-2.0, -1.0, 0.1);
}
+ @SuppressWarnings("SelfAssertion")
public void testAssertEqualsFloat() {
assertEquals(0.0f, 0.0f, 0.0f);
assertEquals(1.1f, 1.1f, 0.0f);
@@ -151,6 +153,7 @@ public void testAssertEqualsFloat() {
assertNotEquals(-2.0f, -1.0f, 0.1f);
}
+ @SuppressWarnings("SelfAssertion")
public void testAssertEqualsIntInt() {
assertEquals(5, 5);
assertEquals("msg", 5, 5);
@@ -166,6 +169,7 @@ public void testAssertEqualsIntIntFailWithMessage() {
assertEquals("msg", 5, 4);
}
+ @SuppressWarnings("SelfAssertion")
public void testAssertEqualsObjectObject() {
assertEquals(obj1, obj1Equal);
assertEquals("msg", obj1, obj1);
diff --git a/user/test/com/google/gwt/storage/client/MapInterfaceTest.java b/user/test/com/google/gwt/storage/client/MapInterfaceTest.java
index bb866bb92a0..3fdd4d1c3f5 100644
--- a/user/test/com/google/gwt/storage/client/MapInterfaceTest.java
+++ b/user/test/com/google/gwt/storage/client/MapInterfaceTest.java
@@ -782,6 +782,7 @@ public void testEntrySetSetValueSameValue() {
assertInvariants(map);
}
+ @SuppressWarnings("SelfAssertion")
public void testEqualsForEqualMap() {
final Map map;
try {
@@ -841,6 +842,7 @@ public void disabled_testEqualsForSmallerMap() {
assertFalse(map.equals(smallerMap));
}
+ @SuppressWarnings("SelfAssertion")
public void testEqualsForEmptyMap() {
final Map map;
try {