Ignores ExperimentalMaterialApi in MaterialImportDetector

This is needed to use pull refresh APIs - when pull refresh is added to m3 we can remove this exception as well.

Fixes: b/293381183
Test: MaterialImportDetectorTest
Change-Id: I5135418e75345ded43f6923435ea1ebee59c44bf
diff --git a/compose/material3/material3-lint/src/main/java/androidx/compose/material3/lint/MaterialImportDetector.kt b/compose/material3/material3-lint/src/main/java/androidx/compose/material3/lint/MaterialImportDetector.kt
index 33c73a5..b7ee362 100644
--- a/compose/material3/material3-lint/src/main/java/androidx/compose/material3/lint/MaterialImportDetector.kt
+++ b/compose/material3/material3-lint/src/main/java/androidx/compose/material3/lint/MaterialImportDetector.kt
@@ -53,6 +53,7 @@
             ) {
                 // Ignore explicitly allowed imports
                 if (AllowlistedSubpackages.any { importString.contains(it) }) return
+                if (AllowlistedImports.any { importString == it }) return
 
                 context.report(
                     UsingMaterialAndMaterial3Libraries,
@@ -94,3 +95,8 @@
     // ignore
     "$MaterialPackage.pullrefresh"
 )
+
+// TODO: b/261760718 - remove this when pullrefresh is added to m3
+private val AllowlistedImports = listOf(
+    "$MaterialPackage.ExperimentalMaterialApi"
+)
diff --git a/compose/material3/material3-lint/src/test/java/androidx/compose/material3/lint/MaterialImportDetectorTest.kt b/compose/material3/material3-lint/src/test/java/androidx/compose/material3/lint/MaterialImportDetectorTest.kt
index 065d628..5bdd89c 100644
--- a/compose/material3/material3-lint/src/test/java/androidx/compose/material3/lint/MaterialImportDetectorTest.kt
+++ b/compose/material3/material3-lint/src/test/java/androidx/compose/material3/lint/MaterialImportDetectorTest.kt
@@ -65,6 +65,43 @@
         """
     )
 
+    private val ExperimentalMaterialApiStub = bytecodeStub(
+        filename = "ExperimentalMaterialApi.kt",
+        filepath = "androidx/compose/material",
+        checksum = 0x6caaf88f,
+        """
+            package androidx.compose.material
+
+            @RequiresOptIn(
+                "This material API is experimental and is likely to change or to be removed in" +
+                    " the future."
+            )
+            @Retention(AnnotationRetention.BINARY)
+            annotation class ExperimentalMaterialApi
+        """,
+"""
+        META-INF/main.kotlin_module:
+        H4sIAAAAAAAA/2NgYGBmYGBgBGIOBijgUuWSTMxLKcrPTKnQS87PLcgvTtXL
+        TSxJLcpMzBHicCotKcnP8y7hMuNSxalMr6A0J6coNa0otThDiDcAyAmCcID6
+        dLgUcOsryiwoyEkV4ggC00DValxSOFUbI7mGl4s5LT9fiC0ktbjEu0SJQYsB
+        ANpB3LXcAAAA
+        """,
+        """
+        androidx/compose/material/ExperimentalMaterialApi.class:
+        H4sIAAAAAAAA/5VSwW4TMRB93pAmpEDTAiVpKDUcyq3bFm6ctgjQSimtEoRU
+        5eQkQ+Nmd52uvVF6y41/4oAijnwUYlY0JBJFiMv4zbxnzxvb3398+QrgJZ4J
+        HKiknxrdn/g9E4+MJT9WjlKtIv/NZMQgpsSp6Pi6GIx0CUKgeqHGyo9Ucu6f
+        dC+o50ooCOwsqipJjFNOm8QPfsMSigKbzaFxkU78Fl1mOiV7MnJh8kqgFJO1
+        6pwEzj4MtJVzIzI4DSXntORHsu28FukhRVfSGdkbcFuSJs2TLsmUYjMmFiXS
+        DUh+ylyW0p7A9rz9ksMWOT6VEbsojlWUsYfnN+gWkyzvWDkK3wetMwHZvHH+
+        Ze3uPySnJtK9q9zG62bQbgusz20ck1N95RRzXjwu8PuJPJTzAAEx5PpE59k+
+        o/6BQH02LVe8mlfxqo3yt89ebTY99PbF0WyaCw4FXjT/+/G5Ozfb+gu7N3QC
+        lbbJ0h691RHfYr2V8VwxfdRWdyNaXKAVaFxzYTL+g91li7jFrVby8VDADkcP
+        TyB5fcd5hblVwh3cxb1fcA1VrKOIjQ4KIe6HeBDiITYZ4lGIGuodCIstNDrw
+        LB5bbOMpH7bKu/lLo2xx+yc4GLrsGQMAAA==
+        """
+    )
+
     private val Material3ButtonStub = bytecodeStub(
         filename = "Button.kt",
         filepath = "androidx/compose/material3",
@@ -187,6 +224,7 @@
                 package foo
 
                 import androidx.compose.material.Button
+                import androidx.compose.material.ExperimentalMaterialApi
                 import androidx.compose.material3.Button
                 import androidx.compose.material.ripple.rememberRipple
                 import androidx.compose.material.icons.Icons
@@ -196,6 +234,7 @@
             """
             ),
             MaterialButtonStub,
+            ExperimentalMaterialApiStub,
             Material3ButtonStub,
             RippleStub,
             IconsStub,
@@ -229,6 +268,7 @@
             """
             ),
             MaterialButtonStub,
+            ExperimentalMaterialApiStub,
             Material3ButtonStub,
             RippleStub,
             IconsStub,