Remove special handling for UI_INJECTION_HOST in location calculation

Since 241 w/ KTIJ-27448 (ui injection host), all kinds of string
literals are modeled as polyadic expression. Special handling for that
rather made inconsistent locations for simple string literal, where we
have dropped quotes.

Bug: 293581088
Test: bazel test //tools/base/lint/libs/lint-tests:tests.test
Change-Id: I02c2a9b8610289107ddbd8d40be2021e490afd13
diff --git a/lint/libs/lint-api/src/main/java/com/android/tools/lint/helpers/DefaultUastParser.kt b/lint/libs/lint-api/src/main/java/com/android/tools/lint/helpers/DefaultUastParser.kt
index 47856b6..da26217 100644
--- a/lint/libs/lint-api/src/main/java/com/android/tools/lint/helpers/DefaultUastParser.kt
+++ b/lint/libs/lint-api/src/main/java/com/android/tools/lint/helpers/DefaultUastParser.kt
@@ -25,7 +25,6 @@
 import com.android.tools.lint.detector.api.Project
 import com.android.tools.lint.detector.api.Severity
 import com.android.tools.lint.detector.api.UastLintUtils
-import com.android.tools.lint.detector.api.isPolyadicFromStringTemplate
 import com.intellij.lang.Language
 import com.intellij.openapi.util.TextRange
 import com.intellij.openapi.util.io.FileUtilRt
@@ -279,9 +278,6 @@
       val location = Location.create(ioFile, text, element.startOffset, element.endOffset)
       location.setSource(element)
       return location
-    } else if (isPolyadicFromStringTemplate(element) && element.operands.size == 1) {
-      val literal = element.operands[0]
-      return getLocation(context, literal).withSource(literal)
     } else {
       val psiElement = element.sourcePsi
       if (psiElement != null) {
diff --git a/lint/libs/lint-tests/src/test/java/com/android/tools/lint/checks/FileEndsWithDetectorTest.kt b/lint/libs/lint-tests/src/test/java/com/android/tools/lint/checks/FileEndsWithDetectorTest.kt
index 185ce1a..a47035b 100644
--- a/lint/libs/lint-tests/src/test/java/com/android/tools/lint/checks/FileEndsWithDetectorTest.kt
+++ b/lint/libs/lint-tests/src/test/java/com/android/tools/lint/checks/FileEndsWithDetectorTest.kt
@@ -53,10 +53,10 @@
                                ~~~~~~~~~~~~~~~~
             src/test.kt:7: Warning: File.extension does not include the leading dot; did you mean "json" ? [FileEndsWithExt]
             fun File.isJson() = extension == ".json"
-                                              ~~~~~
+                                             ~~~~~~~
             src/test.kt:8: Warning: File.extension does not include the leading dot; did you mean "webp" ? [FileEndsWithExt]
             fun isWebp(path: File) = path.extension.startsWith(".webp")
-                                                                ~~~~~
+                                                               ~~~~~~~
             0 errors, 3 warnings
             """
       )
@@ -119,13 +119,13 @@
                                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
             src/test.kt:7: Warning: File.extension does not include the leading dot; did you mean "webp" ? [FileEndsWithExt]
             fun isWebp1(path: File) = path.parentFile.extension.startsWith(".webp") // ERROR 4
-                                                                            ~~~~~
+                                                                           ~~~~~~~
             src/test.kt:8: Warning: File.extension does not include the leading dot; did you mean "webp" ? [FileEndsWithExt]
             fun isWebp2(path: File) = path.parentFile.parentFile.extension.startsWith(".webp") // ERROR 5
-                                                                                       ~~~~~
+                                                                                      ~~~~~~~
             src/test.kt:9: Warning: File.extension does not include the leading dot; did you mean "webp" ? [FileEndsWithExt]
             fun isWebp3(path: File) = path.parentFile!!.extension.startsWith(".webp") // ERROR 6
-                                                                              ~~~~~
+                                                                             ~~~~~~~
             0 errors, 6 warnings
             """
       )
diff --git a/lint/libs/lint-tests/src/test/java/com/android/tools/lint/checks/GradleDetectorTest.kt b/lint/libs/lint-tests/src/test/java/com/android/tools/lint/checks/GradleDetectorTest.kt
index 100f7e4..51a0e0a 100644
--- a/lint/libs/lint-tests/src/test/java/com/android/tools/lint/checks/GradleDetectorTest.kt
+++ b/lint/libs/lint-tests/src/test/java/com/android/tools/lint/checks/GradleDetectorTest.kt
@@ -614,7 +614,7 @@
         """
                 build.gradle.kts:3: Warning: Use the existing version catalog reference (libs.androidx.appCompat) instead [UseTomlInstead]
                     implementation("androidx.appcompat:appcompat:1.5.1")
-                                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                 0 errors, 1 warnings
                 """
       )
@@ -738,7 +738,7 @@
                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         build.gradle.kts:5: Warning: Use version catalog instead [UseTomlInstead]
           testImplementation("com.google.truth:truth:1.1.3")
-                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         0 errors, 3 warnings
         """
       )
@@ -1025,7 +1025,7 @@
         """
         build.gradle.kts:2: Warning: Use version catalog instead [UseTomlInstead]
           implementation("com.android.tools.lint:lint-checks:31.1.0-alpha04")
-                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         0 errors, 1 warnings
         """
       )
@@ -1102,7 +1102,7 @@
         """
                 build.gradle.kts:2: Warning: Use version catalog instead [UseTomlInstead]
                     implementation("androidx.fragment:fragment:1.5.1")
-                                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                 0 errors, 1 warnings
                 """
       )
@@ -3565,10 +3565,10 @@
         "        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
         "build.gradle.kts:8: Warning: A newer version of com.android.tools.build:gradle than 3.2.1 is available: 3.5.0 [AndroidGradlePluginVersion]\n" +
         "        classpath(\"com.android.tools.build:gradle:3.2.1\")\n" +
-        "                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+        "                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
         "build.gradle.kts:9: Warning: A newer version of com.android.tools.build:gradle than 3.3.0-alpha04 is available: 3.5.0 [AndroidGradlePluginVersion]\n" +
         "        classpath(\"com.android.tools.build:gradle:3.3.0-alpha04\")\n" +
-        "                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+        "                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
         "1 errors, 2 warnings\n"
 
     lint()
@@ -4539,13 +4539,13 @@
         """
                 build.gradle.kts:3: Warning: 'android' is deprecated; use 'com.android.application' instead [GradleDeprecated]
                     id("android") version "2.3.3"
-                        ~~~~~~~
+                       ~~~~~~~~~
                 build.gradle.kts:4: Warning: 'android' is deprecated; use 'com.android.application' instead [GradleDeprecated]
                     id("android") version "2.3.3" apply true
-                        ~~~~~~~
+                       ~~~~~~~~~
                 build.gradle.kts:30: Warning: A newer version of com.android.support.constraint:constraint-layout than 1.0.0-alpha8 is available: 1.0.3-alpha8 [GradleDependency]
                     compile("com.android.support.constraint:constraint-layout:1.0.0-alpha8")
-                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                 build.gradle.kts:12: Warning: The value of minSdkVersion is too low. It can be incremented without noticeably reducing the number of supported devices. [MinSdkTooLow]
                         minSdkVersion(7)
                         ~~~~~~~~~~~~~~~~
@@ -7197,10 +7197,10 @@
         """
                 build.gradle.kts:7: Warning: A newer version of com.android.support:multidex than 1.0.0 is available: 1.0.1 [GradleDependency]
                    implementation("com.android.support:multidex:1.0.0")
-                                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                 build.gradle.kts:8: Warning: A newer version of com.android.support:multidex than 1.0.0 is available: 1.0.1 [GradleDependency]
                    implementation("com.android.support:multidex:1.0.0@aar")
-                                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                 build.gradle.kts:9: Warning: A newer version of com.android.support:multidex than 1.0.0 is available: 1.0.1 [GradleDependency]
                    implementation("com.android.support:multidex:$multiDexVersion")
                                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/lint/libs/lint-tests/src/test/java/com/android/tools/lint/checks/LintDetectorDetectorTest.kt b/lint/libs/lint-tests/src/test/java/com/android/tools/lint/checks/LintDetectorDetectorTest.kt
index 7be4ffa..17d5822 100644
--- a/lint/libs/lint-tests/src/test/java/com/android/tools/lint/checks/LintDetectorDetectorTest.kt
+++ b/lint/libs/lint-tests/src/test/java/com/android/tools/lint/checks/LintDetectorDetectorTest.kt
@@ -374,7 +374,7 @@
                                           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                 src/test/pkg/MyKotlinLintDetector.kt:60: Error: Lint issue IDs should use capitalized camel case, such as MyIssueId [LintImplIdFormat]
                                 id = "badlyCapitalized id",
-                                      ~~~~~~~~~~~~~~~~~~~
+                                     ~~~~~~~~~~~~~~~~~~~~~
                 src/test/pkg/MyJavaLintDetector.java:70: Warning: "LinearLayout" looks like a code reference; surround with backtics in string to display as symbol, e.g. `LinearLayout` [LintImplTextFormat]
                             "Wrong use of LinearLayout.");
                                           ~~~~~~~~~~~~
diff --git a/lint/libs/lint-tests/src/test/java/com/android/tools/lint/checks/SecretDetectorTest.kt b/lint/libs/lint-tests/src/test/java/com/android/tools/lint/checks/SecretDetectorTest.kt
index ed6905d..c348319 100644
--- a/lint/libs/lint-tests/src/test/java/com/android/tools/lint/checks/SecretDetectorTest.kt
+++ b/lint/libs/lint-tests/src/test/java/com/android/tools/lint/checks/SecretDetectorTest.kt
@@ -64,7 +64,7 @@
                                                  ~~~
           src/com/pkg/keydemo/test.kt:9: Warning: This argument looks like an API key that has come from source code; API keys should not be included in source code [SecretInSource]
             val model2 = GenerativeModel("name", "AIzadGhpcyBpcyBhbm90aGVy_IHQ-akd==")
-                                                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                                                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           0 errors, 2 warnings
           """
       )
@@ -174,7 +174,7 @@
                                                                    ~
           src/com/pkg/keydemo/test.kt:8: Warning: This argument looks like an API key that has come from source code; API keys should not be included in source code [SecretInSource]
             val model1 = GenerativeModel("name", "AIzadGhpcyBpcyBhbm90aGVy_IHQ-akd==")
-                                                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+                                                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           src/com/pkg/keydemo/test.kt:10: Warning: This argument looks like an API key that has come from source code; API keys should not be included in source code [SecretInSource]
             val model3 = GenerativeModel("name", KEY)
                                                  ~~~
diff --git a/lint/libs/lint-tests/src/test/java/com/android/tools/lint/detector/api/ContextTest.kt b/lint/libs/lint-tests/src/test/java/com/android/tools/lint/detector/api/ContextTest.kt
index 6523fbd..ae489d8 100644
--- a/lint/libs/lint-tests/src/test/java/com/android/tools/lint/detector/api/ContextTest.kt
+++ b/lint/libs/lint-tests/src/test/java/com/android/tools/lint/detector/api/ContextTest.kt
@@ -239,9 +239,7 @@
     }
   }
 
-  // TODO(b/293581088): UAST of Kotlin strings (PSI: KtStringTemplateExpression) with 1 child is
-  //  somewhat broken until "kotlin.uast.force.uinjectionhost" defaults to true.
-  fun ignoreTestLocationOfKotlinString() {
+  fun testLocationOfKotlinString() {
     val tripleQuotes = "\"\"\""
     lint()
       .files(
@@ -302,14 +300,7 @@
 
     override fun visitMethodCall(context: JavaContext, node: UCallExpression, method: PsiMethod) {
       val arg = node.getArgumentForParameter(0)
-      context.report(
-        Incident(
-          ISSUE,
-          "Argument to foo",
-          context.getLocation(node.getArgumentForParameter(0)),
-          arg,
-        )
-      )
+      context.report(Incident(ISSUE, "Argument to foo", context.getLocation(arg), arg))
     }
 
     companion object {