More AtomicXFieldUpdater initializer tests with handlers.

Bug: b/453628974
Change-Id: Ia5adb3be3e352236566226e4f72365bbd230d6f3
diff --git a/src/test/java/com/android/tools/r8/optimize/atomicfieldupdater/reference/AtomicFieldUpdaterCatchInitTest.java b/src/test/java/com/android/tools/r8/optimize/atomicfieldupdater/AtomicFieldUpdaterCatchInitTest.java
similarity index 74%
rename from src/test/java/com/android/tools/r8/optimize/atomicfieldupdater/reference/AtomicFieldUpdaterCatchInitTest.java
rename to src/test/java/com/android/tools/r8/optimize/atomicfieldupdater/AtomicFieldUpdaterCatchInitTest.java
index 3b377ac..43878a2 100644
--- a/src/test/java/com/android/tools/r8/optimize/atomicfieldupdater/reference/AtomicFieldUpdaterCatchInitTest.java
+++ b/src/test/java/com/android/tools/r8/optimize/atomicfieldupdater/AtomicFieldUpdaterCatchInitTest.java
@@ -1,7 +1,7 @@
 // Copyright (c) 2026, the R8 project authors. Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-package com.android.tools.r8.optimize.atomicfieldupdater.reference;
+package com.android.tools.r8.optimize.atomicfieldupdater;
 
 import static com.android.tools.r8.DiagnosticsMatcher.diagnosticMessage;
 import static org.hamcrest.MatcherAssert.assertThat;
@@ -10,8 +10,9 @@
 
 import com.android.tools.r8.TestParameters;
 import com.android.tools.r8.TestParametersCollection;
-import com.android.tools.r8.optimize.atomicfieldupdater.AtomicFieldUpdaterBase;
 import com.android.tools.r8.utils.codeinspector.MethodSubject;
+import java.util.concurrent.atomic.AtomicIntegerFieldUpdater;
+import java.util.concurrent.atomic.AtomicLongFieldUpdater;
 import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -42,6 +43,8 @@
             isOptimizationOn(),
             diagnostics ->
                 diagnostics.assertInfosMatch(
+                    diagnosticMessage(containsString("Cannot instrument")),
+                    diagnosticMessage(containsString("Cannot instrument")),
                     diagnosticMessage(containsString("Cannot instrument"))))
         .inspect(
             inspector -> {
@@ -51,20 +54,26 @@
               assertThat(classInitializer, not(INVOKES_UNSAFE));
             })
         .run(parameters.getRuntime(), testClass)
-        .assertSuccessWithOutputLines("Hello");
+        .assertSuccessWithOutputLines("Hello", "42", "42");
   }
 
-  // Corresponding to simple kotlin usage of `atomic("Hello")` via atomicfu.
+  // Corresponding to simple kotlin usage of `atomic(..)` via atomicfu.
   public static class TestClass {
 
     private volatile Object myString;
+    private volatile int myInt;
+    private volatile long myLong;
 
     private static final AtomicReferenceFieldUpdater<TestClass, Object> myString$FU;
+    private static final AtomicIntegerFieldUpdater<TestClass> myInt$FU;
+    private static final AtomicLongFieldUpdater<TestClass> myLong$FU;
 
     static {
       try {
         myString$FU =
             AtomicReferenceFieldUpdater.newUpdater(TestClass.class, Object.class, "myString");
+        myInt$FU = AtomicIntegerFieldUpdater.newUpdater(TestClass.class, "myInt");
+        myLong$FU = AtomicLongFieldUpdater.newUpdater(TestClass.class, "myLong");
       } catch (Exception e) {
         // The try block never throws. This is here to test the rewriting with catch handlers.
         throw new RuntimeException(e);
@@ -74,11 +83,15 @@
     public TestClass() {
       super();
       myString = "Hello";
+      myInt = 42;
+      myLong = 42L;
     }
 
     public static void main(String[] args) {
       TestClass instance = new TestClass();
       System.out.println(myString$FU.get(instance));
+      System.out.println(myInt$FU.get(instance));
+      System.out.println(myLong$FU.get(instance));
     }
   }
 }