Fix lint crashes on kotlin top level properties

We need to handle cases where kotlin functions don't have a surrounding
class.

This change allows the surrounding class to be null and in that case we
just skip the check.

RelNote: "The `OnCreateDialogIncorrectCallback` lint check will no
longer crash when declaring a top level variable."
Test: kotlin anonymous object test
Bug: 189967522

Change-Id: I62de88c344cee0cb9deda26c9e5fc27247cf2d95
diff --git a/fragment/fragment-lint/src/main/java/androidx/fragment/lint/OnCreateDialogIncorrectCallbackDetector.kt b/fragment/fragment-lint/src/main/java/androidx/fragment/lint/OnCreateDialogIncorrectCallbackDetector.kt
index 3fecccc..012ed0a 100644
--- a/fragment/fragment-lint/src/main/java/androidx/fragment/lint/OnCreateDialogIncorrectCallbackDetector.kt
+++ b/fragment/fragment-lint/src/main/java/androidx/fragment/lint/OnCreateDialogIncorrectCallbackDetector.kt
@@ -75,7 +75,7 @@
     private inner class UastHandler(val context: JavaContext) : UElementHandler() {
         override fun visitClass(node: UClass) {
             if (isKotlin(context.psiFile) &&
-                (node as KotlinUClass).ktClass!!.getSuperNames().firstOrNull() !=
+                (node as? KotlinUClass)?.ktClass?.getSuperNames()?.firstOrNull() !=
                 DIALOG_FRAGMENT_CLASS
             ) {
                 return
diff --git a/fragment/fragment-lint/src/test/java/androidx/fragment/lint/OnCreateDialogIncorrectCallbackDetectorTest.kt b/fragment/fragment-lint/src/test/java/androidx/fragment/lint/OnCreateDialogIncorrectCallbackDetectorTest.kt
index 322d5c2..73405fd 100644
--- a/fragment/fragment-lint/src/test/java/androidx/fragment/lint/OnCreateDialogIncorrectCallbackDetectorTest.kt
+++ b/fragment/fragment-lint/src/test/java/androidx/fragment/lint/OnCreateDialogIncorrectCallbackDetectorTest.kt
@@ -300,4 +300,42 @@
             .run()
             .expectClean()
     }
+
+    @Test
+    fun `kotlin anonymous object`() {
+        lint().files(
+            kotlin(
+                """
+            package com.example
+
+            val foo = object : Foo() {
+                override fun test() { }
+            }
+            """
+            ).indented()
+        )
+            .run()
+            .expectClean()
+    }
+
+    @Test
+    fun `java anonymous object`() {
+        lint().files(
+            java(
+                """
+            package com.example;
+
+            interface Foo {
+                fun test();
+            }
+
+            class Bar {
+                Foo foo = (com.example.Foo)()-> { };
+            }
+            """
+            ).indented()
+        )
+            .run()
+            .expectClean()
+    }
 }