diff --git a/generators/src/org/jetbrains/kotlin/generators/tests/GenerateTests.kt b/generators/src/org/jetbrains/kotlin/generators/tests/GenerateTests.kt index 5648d4089d1..e498f00fcb6 100755 --- a/generators/src/org/jetbrains/kotlin/generators/tests/GenerateTests.kt +++ b/generators/src/org/jetbrains/kotlin/generators/tests/GenerateTests.kt @@ -24,10 +24,10 @@ import org.jetbrains.kotlin.allopen.AbstractBytecodeListingTestForAllOpen import org.jetbrains.kotlin.android.* import org.jetbrains.kotlin.android.configure.AbstractConfigureProjectTest import org.jetbrains.kotlin.android.folding.AbstractAndroidResourceFoldingTest -import org.jetbrains.kotlin.android.intentions.AbstractAndroidIntentionTest -import org.jetbrains.kotlin.android.intentions.AbstractAndroidResourceIntentionTest +import org.jetbrains.kotlin.android.quickfix.AbstractAndroidLintQuickfixTest +import org.jetbrains.kotlin.android.intention.AbstractAndroidResourceIntentionTest import org.jetbrains.kotlin.android.lint.AbstractKotlinLintTest -import org.jetbrains.kotlin.android.quickfixes.AbstractAndroidQuickFixMultiFileTest +import org.jetbrains.kotlin.android.quickfix.AbstractAndroidQuickFixMultiFileTest import org.jetbrains.kotlin.annotation.AbstractAnnotationProcessorBoxTest import org.jetbrains.kotlin.annotation.processing.test.sourceRetention.AbstractBytecodeListingTestForSourceRetention import org.jetbrains.kotlin.annotation.processing.test.wrappers.AbstractAnnotationProcessingTest @@ -1209,7 +1209,7 @@ fun main(args: Array) { } testClass { - model("android/resourceIntentions", extension = "test", singleClass = true) + model("android/resourceIntention", extension = "test", singleClass = true) } testClass { @@ -1220,8 +1220,8 @@ fun main(args: Array) { model("android/lint", excludeParentDirs = true) } - testClass { - model("android/intentions", pattern = "^([\\w\\-_]+)\\.kt$") + testClass { + model("android/lintQuickfix", pattern = "^([\\w\\-_]+)\\.kt$") } testClass { diff --git a/idea/idea-android/src/org/jetbrains/kotlin/android/intentions/CreateXmlResourceParameters.kt b/idea/idea-android/src/org/jetbrains/kotlin/android/intention/CreateXmlResourceParameters.kt similarity index 95% rename from idea/idea-android/src/org/jetbrains/kotlin/android/intentions/CreateXmlResourceParameters.kt rename to idea/idea-android/src/org/jetbrains/kotlin/android/intention/CreateXmlResourceParameters.kt index ffd0d46b20f..69e8ffe3f5f 100644 --- a/idea/idea-android/src/org/jetbrains/kotlin/android/intentions/CreateXmlResourceParameters.kt +++ b/idea/idea-android/src/org/jetbrains/kotlin/android/intention/CreateXmlResourceParameters.kt @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.jetbrains.kotlin.android.intentions +package org.jetbrains.kotlin.android.intention import com.intellij.openapi.util.Key diff --git a/idea/idea-android/src/org/jetbrains/kotlin/android/intentions/KotlinAndroidAddStringResource.kt b/idea/idea-android/src/org/jetbrains/kotlin/android/intention/KotlinAndroidAddStringResource.kt similarity index 99% rename from idea/idea-android/src/org/jetbrains/kotlin/android/intentions/KotlinAndroidAddStringResource.kt rename to idea/idea-android/src/org/jetbrains/kotlin/android/intention/KotlinAndroidAddStringResource.kt index 13d03c9f983..ad23cb5ac7e 100644 --- a/idea/idea-android/src/org/jetbrains/kotlin/android/intentions/KotlinAndroidAddStringResource.kt +++ b/idea/idea-android/src/org/jetbrains/kotlin/android/intention/KotlinAndroidAddStringResource.kt @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.jetbrains.kotlin.android.intentions +package org.jetbrains.kotlin.android.intention import com.android.resources.ResourceType import com.intellij.CommonBundle diff --git a/idea/idea-android/tests/org/jetbrains/kotlin/android/intentions/AbstractAndroidResourceIntentionTest.kt b/idea/idea-android/tests/org/jetbrains/kotlin/android/intention/AbstractAndroidResourceIntentionTest.kt similarity index 98% rename from idea/idea-android/tests/org/jetbrains/kotlin/android/intentions/AbstractAndroidResourceIntentionTest.kt rename to idea/idea-android/tests/org/jetbrains/kotlin/android/intention/AbstractAndroidResourceIntentionTest.kt index 6bd4e8b8cbc..eeb916bcb41 100644 --- a/idea/idea-android/tests/org/jetbrains/kotlin/android/intentions/AbstractAndroidResourceIntentionTest.kt +++ b/idea/idea-android/tests/org/jetbrains/kotlin/android/intention/AbstractAndroidResourceIntentionTest.kt @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.jetbrains.kotlin.android.intentions +package org.jetbrains.kotlin.android.intention import com.android.SdkConstants import com.google.gson.JsonObject diff --git a/idea/idea-android/tests/org/jetbrains/kotlin/android/intentions/AndroidResourceIntentionTestGenerated.java b/idea/idea-android/tests/org/jetbrains/kotlin/android/intention/AndroidResourceIntentionTestGenerated.java similarity index 75% rename from idea/idea-android/tests/org/jetbrains/kotlin/android/intentions/AndroidResourceIntentionTestGenerated.java rename to idea/idea-android/tests/org/jetbrains/kotlin/android/intention/AndroidResourceIntentionTestGenerated.java index 627d8bd36c8..45615cc64bf 100644 --- a/idea/idea-android/tests/org/jetbrains/kotlin/android/intentions/AndroidResourceIntentionTestGenerated.java +++ b/idea/idea-android/tests/org/jetbrains/kotlin/android/intention/AndroidResourceIntentionTestGenerated.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.jetbrains.kotlin.android.intentions; +package org.jetbrains.kotlin.android.intention; import com.intellij.testFramework.TestDataPath; import org.jetbrains.kotlin.test.JUnit3RunnerWithInners; @@ -28,131 +28,131 @@ import java.util.regex.Pattern; /** This class is generated by {@link org.jetbrains.kotlin.generators.tests.TestsPackage}. DO NOT MODIFY MANUALLY */ @SuppressWarnings("all") -@TestMetadata("idea/testData/android/resourceIntentions") +@TestMetadata("idea/testData/android/resourceIntention") @TestDataPath("$PROJECT_ROOT") @RunWith(JUnit3RunnerWithInners.class) public class AndroidResourceIntentionTestGenerated extends AbstractAndroidResourceIntentionTest { - public void testAllFilesPresentInResourceIntentions() throws Exception { - KotlinTestUtils.assertAllTestsPresentInSingleGeneratedClass(this.getClass(), new File("idea/testData/android/resourceIntentions"), Pattern.compile("^(.+)\\.test$"), TargetBackend.ANY); + public void testAllFilesPresentInResourceIntention() throws Exception { + KotlinTestUtils.assertAllTestsPresentInSingleGeneratedClass(this.getClass(), new File("idea/testData/android/resourceIntention"), Pattern.compile("^(.+)\\.test$"), TargetBackend.ANY); } @TestMetadata("createColorValueResource/alreadyExists/alreadyExists.test") public void testCreateColorValueResource_alreadyExists_AlreadyExists() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/resourceIntentions/createColorValueResource/alreadyExists/alreadyExists.test"); + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/resourceIntention/createColorValueResource/alreadyExists/alreadyExists.test"); doTest(fileName); } @TestMetadata("createColorValueResource/simpleFunction/simpleFunction.test") public void testCreateColorValueResource_simpleFunction_SimpleFunction() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/resourceIntentions/createColorValueResource/simpleFunction/simpleFunction.test"); + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/resourceIntention/createColorValueResource/simpleFunction/simpleFunction.test"); doTest(fileName); } @TestMetadata("createLayoutResourceFile/alreadyExists/alreadyExists.test") public void testCreateLayoutResourceFile_alreadyExists_AlreadyExists() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/resourceIntentions/createLayoutResourceFile/alreadyExists/alreadyExists.test"); + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/resourceIntention/createLayoutResourceFile/alreadyExists/alreadyExists.test"); doTest(fileName); } @TestMetadata("createLayoutResourceFile/simpleFunction/simpleFunction.test") public void testCreateLayoutResourceFile_simpleFunction_SimpleFunction() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/resourceIntentions/createLayoutResourceFile/simpleFunction/simpleFunction.test"); + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/resourceIntention/createLayoutResourceFile/simpleFunction/simpleFunction.test"); doTest(fileName); } @TestMetadata("createStringValueResource/alreadyExists/alreadyExists.test") public void testCreateStringValueResource_alreadyExists_AlreadyExists() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/resourceIntentions/createStringValueResource/alreadyExists/alreadyExists.test"); + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/resourceIntention/createStringValueResource/alreadyExists/alreadyExists.test"); doTest(fileName); } @TestMetadata("createStringValueResource/simpleFunction/simpleFunction.test") public void testCreateStringValueResource_simpleFunction_SimpleFunction() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/resourceIntentions/createStringValueResource/simpleFunction/simpleFunction.test"); + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/resourceIntention/createStringValueResource/simpleFunction/simpleFunction.test"); doTest(fileName); } @TestMetadata("kotlinAndroidAddStringResource/activityExtension/activityExtension.test") public void testKotlinAndroidAddStringResource_activityExtension_ActivityExtension() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/activityExtension/activityExtension.test"); + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/activityExtension/activityExtension.test"); doTest(fileName); } @TestMetadata("kotlinAndroidAddStringResource/activityMethod/activityMethod.test") public void testKotlinAndroidAddStringResource_activityMethod_ActivityMethod() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/activityMethod/activityMethod.test"); + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/activityMethod/activityMethod.test"); doTest(fileName); } @TestMetadata("kotlinAndroidAddStringResource/classInActivity/classInActivity.test") public void testKotlinAndroidAddStringResource_classInActivity_ClassInActivity() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/classInActivity/classInActivity.test"); + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/classInActivity/classInActivity.test"); doTest(fileName); } @TestMetadata("kotlinAndroidAddStringResource/extensionLambda/extensionLambda.test") public void testKotlinAndroidAddStringResource_extensionLambda_ExtensionLambda() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/extensionLambda/extensionLambda.test"); + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/extensionLambda/extensionLambda.test"); doTest(fileName); } @TestMetadata("kotlinAndroidAddStringResource/function/function.test") public void testKotlinAndroidAddStringResource_function_Function() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/function/function.test"); + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/function/function.test"); doTest(fileName); } @TestMetadata("kotlinAndroidAddStringResource/genericContextExtensionFunction/genericContextExtensionFunction.test") public void testKotlinAndroidAddStringResource_genericContextExtensionFunction_GenericContextExtensionFunction() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/genericContextExtensionFunction/genericContextExtensionFunction.test"); + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/genericContextExtensionFunction/genericContextExtensionFunction.test"); doTest(fileName); } @TestMetadata("kotlinAndroidAddStringResource/innerClassInActivity/innerClassInActivity.test") public void testKotlinAndroidAddStringResource_innerClassInActivity_InnerClassInActivity() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/innerClassInActivity/innerClassInActivity.test"); + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/innerClassInActivity/innerClassInActivity.test"); doTest(fileName); } @TestMetadata("kotlinAndroidAddStringResource/innerViewInActivity/innerViewInActivity.test") public void testKotlinAndroidAddStringResource_innerViewInActivity_InnerViewInActivity() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/innerViewInActivity/innerViewInActivity.test"); + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/innerViewInActivity/innerViewInActivity.test"); doTest(fileName); } @TestMetadata("kotlinAndroidAddStringResource/objectInActivity/objectInActivity.test") public void testKotlinAndroidAddStringResource_objectInActivity_ObjectInActivity() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/objectInActivity/objectInActivity.test"); + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/objectInActivity/objectInActivity.test"); doTest(fileName); } @TestMetadata("kotlinAndroidAddStringResource/objectInActivityMethod/objectInActivityMethod.test") public void testKotlinAndroidAddStringResource_objectInActivityMethod_ObjectInActivityMethod() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/objectInActivityMethod/objectInActivityMethod.test"); + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/objectInActivityMethod/objectInActivityMethod.test"); doTest(fileName); } @TestMetadata("kotlinAndroidAddStringResource/objectInFunction/objectInFunction.test") public void testKotlinAndroidAddStringResource_objectInFunction_ObjectInFunction() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/objectInFunction/objectInFunction.test"); + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/objectInFunction/objectInFunction.test"); doTest(fileName); } @TestMetadata("kotlinAndroidAddStringResource/stringTemplate/stringTemplate.test") public void testKotlinAndroidAddStringResource_stringTemplate_StringTemplate() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/stringTemplate/stringTemplate.test"); + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/stringTemplate/stringTemplate.test"); doTest(fileName); } @TestMetadata("kotlinAndroidAddStringResource/viewExtensionActivityMethod/viewExtensionActivityMethod.test") public void testKotlinAndroidAddStringResource_viewExtensionActivityMethod_ViewExtensionActivityMethod() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/viewExtensionActivityMethod/viewExtensionActivityMethod.test"); + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/viewExtensionActivityMethod/viewExtensionActivityMethod.test"); doTest(fileName); } @TestMetadata("kotlinAndroidAddStringResource/viewMethod/viewMethod.test") public void testKotlinAndroidAddStringResource_viewMethod_ViewMethod() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/viewMethod/viewMethod.test"); + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/viewMethod/viewMethod.test"); doTest(fileName); } } diff --git a/idea/idea-android/tests/org/jetbrains/kotlin/android/intentions/AndroidIntentionTestGenerated.java b/idea/idea-android/tests/org/jetbrains/kotlin/android/intentions/AndroidIntentionTestGenerated.java deleted file mode 100644 index 4be67e55a7e..00000000000 --- a/idea/idea-android/tests/org/jetbrains/kotlin/android/intentions/AndroidIntentionTestGenerated.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright 2010-2017 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.android.intentions; - -import com.intellij.testFramework.TestDataPath; -import org.jetbrains.kotlin.test.JUnit3RunnerWithInners; -import org.jetbrains.kotlin.test.KotlinTestUtils; -import org.jetbrains.kotlin.test.TargetBackend; -import org.jetbrains.kotlin.test.TestMetadata; -import org.junit.runner.RunWith; - -import java.io.File; -import java.util.regex.Pattern; - -/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.TestsPackage}. DO NOT MODIFY MANUALLY */ -@SuppressWarnings("all") -@TestMetadata("idea/testData/android/intentions") -@TestDataPath("$PROJECT_ROOT") -@RunWith(JUnit3RunnerWithInners.class) -public class AndroidIntentionTestGenerated extends AbstractAndroidIntentionTest { - public void testAllFilesPresentInIntentions() throws Exception { - KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/android/intentions"), Pattern.compile("^([\\w\\-_]+)\\.kt$"), TargetBackend.ANY, true); - } - - @TestMetadata("idea/testData/android/intentions/suppressLint") - @TestDataPath("$PROJECT_ROOT") - @RunWith(JUnit3RunnerWithInners.class) - public static class SuppressLint extends AbstractAndroidIntentionTest { - @TestMetadata("activityMethod.kt") - public void testActivityMethod() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/intentions/suppressLint/activityMethod.kt"); - doTest(fileName); - } - - @TestMetadata("addToExistingAnnotation.kt") - public void testAddToExistingAnnotation() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/intentions/suppressLint/addToExistingAnnotation.kt"); - doTest(fileName); - } - - public void testAllFilesPresentInSuppressLint() throws Exception { - KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/android/intentions/suppressLint"), Pattern.compile("^([\\w\\-_]+)\\.kt$"), TargetBackend.ANY, true); - } - - @TestMetadata("constructorParameter.kt") - public void testConstructorParameter() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/intentions/suppressLint/constructorParameter.kt"); - doTest(fileName); - } - - @TestMetadata("destructuringDeclaration.kt") - public void testDestructuringDeclaration() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/intentions/suppressLint/destructuringDeclaration.kt"); - doTest(fileName); - } - - @TestMetadata("lambdaArgument.kt") - public void testLambdaArgument() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/intentions/suppressLint/lambdaArgument.kt"); - doTest(fileName); - } - - @TestMetadata("lambdaArgumentProperty.kt") - public void testLambdaArgumentProperty() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/intentions/suppressLint/lambdaArgumentProperty.kt"); - doTest(fileName); - } - - @TestMetadata("methodParameter.kt") - public void testMethodParameter() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/intentions/suppressLint/methodParameter.kt"); - doTest(fileName); - } - - @TestMetadata("propertyWithLambda.kt") - public void testPropertyWithLambda() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/intentions/suppressLint/propertyWithLambda.kt"); - doTest(fileName); - } - - @TestMetadata("simpleProperty.kt") - public void testSimpleProperty() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/intentions/suppressLint/simpleProperty.kt"); - doTest(fileName); - } - } -} diff --git a/idea/idea-android/tests/org/jetbrains/kotlin/android/intentions/AbstractAndroidIntentionTest.kt b/idea/idea-android/tests/org/jetbrains/kotlin/android/quickfix/AbstractAndroidLintQuickfixTest.kt similarity index 55% rename from idea/idea-android/tests/org/jetbrains/kotlin/android/intentions/AbstractAndroidIntentionTest.kt rename to idea/idea-android/tests/org/jetbrains/kotlin/android/quickfix/AbstractAndroidLintQuickfixTest.kt index 95f51e33370..d77c09079e6 100644 --- a/idea/idea-android/tests/org/jetbrains/kotlin/android/intentions/AbstractAndroidIntentionTest.kt +++ b/idea/idea-android/tests/org/jetbrains/kotlin/android/quickfix/AbstractAndroidLintQuickfixTest.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2016 JetBrains s.r.o. + * Copyright 2010-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,40 +14,52 @@ * limitations under the License. */ -package org.jetbrains.kotlin.android.intentions +package org.jetbrains.kotlin.android.quickfix import com.android.SdkConstants +import com.intellij.codeInspection.InspectionProfileEntry import com.intellij.openapi.util.io.FileUtil import com.intellij.util.PathUtil import org.jetbrains.android.inspections.klint.AndroidLintInspectionBase import org.jetbrains.kotlin.android.KotlinAndroidTestCase -import org.jetbrains.kotlin.idea.test.DirectiveBasedActionUtils -import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.test.InTextDirectivesUtils import org.jetbrains.kotlin.test.KotlinTestUtils import java.io.File -abstract class AbstractAndroidIntentionTest : KotlinAndroidTestCase() { +abstract class AbstractAndroidLintQuickfixTest : KotlinAndroidTestCase() { + + override fun setUp() { + AndroidLintInspectionBase.invalidateInspectionShortName2IssueMap() + super.setUp() + } fun doTest(path: String) { val fileText = FileUtil.loadFile(File(path), true) val intentionText = InTextDirectivesUtils.findStringWithPrefixes(fileText, "// INTENTION_TEXT: ") ?: error("Empty intention text") val mainInspectionClassName = InTextDirectivesUtils.findStringWithPrefixes(fileText, "// INSPECTION_CLASS: ") ?: error("Empty inspection class name") + val dependency = InTextDirectivesUtils.findStringWithPrefixes(fileText, "// DEPENDENCY: ") + val intentionAvailable = !InTextDirectivesUtils.isDirectiveDefined(fileText, "// INTENTION_NOT_AVAILABLE") - val inspectionClass = Class.forName(mainInspectionClassName).newInstance() as AndroidLintInspectionBase - - myFixture.enableInspections(inspectionClass) + val inspection = Class.forName(mainInspectionClassName).newInstance() as InspectionProfileEntry + myFixture.enableInspections(inspection) val sourceFile = myFixture.copyFileToProject(path, "src/${PathUtil.getFileName(path)}") myFixture.configureFromExistingVirtualFile(sourceFile) - DirectiveBasedActionUtils.checkForUnexpectedErrors(myFixture.file as KtFile) + if (dependency != null) { + val (dependencyFile, dependencyTargetPath) = dependency.split(" -> ").map(String::trim) + myFixture.copyFileToProject("${PathUtil.getParentPath(path)}/$dependencyFile", "src/$dependencyTargetPath") + } - val intention = myFixture.getAvailableIntention(intentionText) ?: error("Failed to find intention") - myFixture.launchAction(intention) - - myFixture.checkResultByFile(path + ".expected") + if (intentionAvailable) { + val intention = myFixture.getAvailableIntention(intentionText) ?: error("Failed to find intention") + myFixture.launchAction(intention) + myFixture.checkResultByFile(path + ".expected") + } + else { + assertNull("Intention should not be availabale", myFixture.availableIntentions.find { it.text == intentionText }) + } } override fun createManifest() { diff --git a/idea/idea-android/tests/org/jetbrains/kotlin/android/quickfixes/AbstractAndroidQuickFixMultiFileTest.java b/idea/idea-android/tests/org/jetbrains/kotlin/android/quickfix/AbstractAndroidQuickFixMultiFileTest.java similarity index 97% rename from idea/idea-android/tests/org/jetbrains/kotlin/android/quickfixes/AbstractAndroidQuickFixMultiFileTest.java rename to idea/idea-android/tests/org/jetbrains/kotlin/android/quickfix/AbstractAndroidQuickFixMultiFileTest.java index f13d6a6fed9..166d4394820 100644 --- a/idea/idea-android/tests/org/jetbrains/kotlin/android/quickfixes/AbstractAndroidQuickFixMultiFileTest.java +++ b/idea/idea-android/tests/org/jetbrains/kotlin/android/quickfix/AbstractAndroidQuickFixMultiFileTest.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.jetbrains.kotlin.android.quickfixes; +package org.jetbrains.kotlin.android.quickfix; import com.intellij.facet.FacetManager; import com.intellij.facet.ModifiableFacetModel; diff --git a/idea/idea-android/tests/org/jetbrains/kotlin/android/quickfix/AndroidLintQuickfixTestGenerated.java b/idea/idea-android/tests/org/jetbrains/kotlin/android/quickfix/AndroidLintQuickfixTestGenerated.java new file mode 100644 index 00000000000..2998a9cf61a --- /dev/null +++ b/idea/idea-android/tests/org/jetbrains/kotlin/android/quickfix/AndroidLintQuickfixTestGenerated.java @@ -0,0 +1,272 @@ +/* + * Copyright 2010-2017 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.kotlin.android.quickfix; + +import com.intellij.testFramework.TestDataPath; +import org.jetbrains.kotlin.test.JUnit3RunnerWithInners; +import org.jetbrains.kotlin.test.KotlinTestUtils; +import org.jetbrains.kotlin.test.TargetBackend; +import org.jetbrains.kotlin.test.TestMetadata; +import org.junit.runner.RunWith; + +import java.io.File; +import java.util.regex.Pattern; + +/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.TestsPackage}. DO NOT MODIFY MANUALLY */ +@SuppressWarnings("all") +@TestMetadata("idea/testData/android/lintQuickfix") +@TestDataPath("$PROJECT_ROOT") +@RunWith(JUnit3RunnerWithInners.class) +public class AndroidLintQuickfixTestGenerated extends AbstractAndroidLintQuickfixTest { + public void testAllFilesPresentInLintQuickfix() throws Exception { + KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/android/lintQuickfix"), Pattern.compile("^([\\w\\-_]+)\\.kt$"), TargetBackend.ANY, true); + } + + @TestMetadata("idea/testData/android/lintQuickfix/requiresApi") + @TestDataPath("$PROJECT_ROOT") + @RunWith(JUnit3RunnerWithInners.class) + public static class RequiresApi extends AbstractAndroidLintQuickfixTest { + public void testAllFilesPresentInRequiresApi() throws Exception { + KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/android/lintQuickfix/requiresApi"), Pattern.compile("^([\\w\\-_]+)\\.kt$"), TargetBackend.ANY, true); + } + + @TestMetadata("annotation.kt") + public void testAnnotation() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/lintQuickfix/requiresApi/annotation.kt"); + doTest(fileName); + } + + @TestMetadata("companion.kt") + public void testCompanion() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/lintQuickfix/requiresApi/companion.kt"); + doTest(fileName); + } + + @TestMetadata("defaultParameter.kt") + public void testDefaultParameter() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/lintQuickfix/requiresApi/defaultParameter.kt"); + doTest(fileName); + } + + @TestMetadata("extend.kt") + public void testExtend() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/lintQuickfix/requiresApi/extend.kt"); + doTest(fileName); + } + + @TestMetadata("functionLiteral.kt") + public void testFunctionLiteral() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/lintQuickfix/requiresApi/functionLiteral.kt"); + doTest(fileName); + } + + @TestMetadata("method.kt") + public void testMethod() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/lintQuickfix/requiresApi/method.kt"); + doTest(fileName); + } + + @TestMetadata("property.kt") + public void testProperty() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/lintQuickfix/requiresApi/property.kt"); + doTest(fileName); + } + + @TestMetadata("when.kt") + public void testWhen() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/lintQuickfix/requiresApi/when.kt"); + doTest(fileName); + } + } + + @TestMetadata("idea/testData/android/lintQuickfix/suppressLint") + @TestDataPath("$PROJECT_ROOT") + @RunWith(JUnit3RunnerWithInners.class) + public static class SuppressLint extends AbstractAndroidLintQuickfixTest { + @TestMetadata("activityMethod.kt") + public void testActivityMethod() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/lintQuickfix/suppressLint/activityMethod.kt"); + doTest(fileName); + } + + @TestMetadata("addToExistingAnnotation.kt") + public void testAddToExistingAnnotation() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/lintQuickfix/suppressLint/addToExistingAnnotation.kt"); + doTest(fileName); + } + + public void testAllFilesPresentInSuppressLint() throws Exception { + KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/android/lintQuickfix/suppressLint"), Pattern.compile("^([\\w\\-_]+)\\.kt$"), TargetBackend.ANY, true); + } + + @TestMetadata("constructorParameter.kt") + public void testConstructorParameter() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/lintQuickfix/suppressLint/constructorParameter.kt"); + doTest(fileName); + } + + @TestMetadata("destructuringDeclaration.kt") + public void testDestructuringDeclaration() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/lintQuickfix/suppressLint/destructuringDeclaration.kt"); + doTest(fileName); + } + + @TestMetadata("lambdaArgument.kt") + public void testLambdaArgument() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/lintQuickfix/suppressLint/lambdaArgument.kt"); + doTest(fileName); + } + + @TestMetadata("lambdaArgumentProperty.kt") + public void testLambdaArgumentProperty() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/lintQuickfix/suppressLint/lambdaArgumentProperty.kt"); + doTest(fileName); + } + + @TestMetadata("methodParameter.kt") + public void testMethodParameter() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/lintQuickfix/suppressLint/methodParameter.kt"); + doTest(fileName); + } + + @TestMetadata("propertyWithLambda.kt") + public void testPropertyWithLambda() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/lintQuickfix/suppressLint/propertyWithLambda.kt"); + doTest(fileName); + } + + @TestMetadata("simpleProperty.kt") + public void testSimpleProperty() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/lintQuickfix/suppressLint/simpleProperty.kt"); + doTest(fileName); + } + } + + @TestMetadata("idea/testData/android/lintQuickfix/targetApi") + @TestDataPath("$PROJECT_ROOT") + @RunWith(JUnit3RunnerWithInners.class) + public static class TargetApi extends AbstractAndroidLintQuickfixTest { + public void testAllFilesPresentInTargetApi() throws Exception { + KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/android/lintQuickfix/targetApi"), Pattern.compile("^([\\w\\-_]+)\\.kt$"), TargetBackend.ANY, true); + } + + @TestMetadata("annotation.kt") + public void testAnnotation() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/lintQuickfix/targetApi/annotation.kt"); + doTest(fileName); + } + + @TestMetadata("companion.kt") + public void testCompanion() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/lintQuickfix/targetApi/companion.kt"); + doTest(fileName); + } + + @TestMetadata("defaultParameter.kt") + public void testDefaultParameter() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/lintQuickfix/targetApi/defaultParameter.kt"); + doTest(fileName); + } + + @TestMetadata("extend.kt") + public void testExtend() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/lintQuickfix/targetApi/extend.kt"); + doTest(fileName); + } + + @TestMetadata("functionLiteral.kt") + public void testFunctionLiteral() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/lintQuickfix/targetApi/functionLiteral.kt"); + doTest(fileName); + } + + @TestMetadata("method.kt") + public void testMethod() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/lintQuickfix/targetApi/method.kt"); + doTest(fileName); + } + + @TestMetadata("property.kt") + public void testProperty() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/lintQuickfix/targetApi/property.kt"); + doTest(fileName); + } + + @TestMetadata("when.kt") + public void testWhen() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/lintQuickfix/targetApi/when.kt"); + doTest(fileName); + } + } + + @TestMetadata("idea/testData/android/lintQuickfix/targetVersionCheck") + @TestDataPath("$PROJECT_ROOT") + @RunWith(JUnit3RunnerWithInners.class) + public static class TargetVersionCheck extends AbstractAndroidLintQuickfixTest { + public void testAllFilesPresentInTargetVersionCheck() throws Exception { + KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/android/lintQuickfix/targetVersionCheck"), Pattern.compile("^([\\w\\-_]+)\\.kt$"), TargetBackend.ANY, true); + } + + @TestMetadata("annotation.kt") + public void testAnnotation() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/lintQuickfix/targetVersionCheck/annotation.kt"); + doTest(fileName); + } + + @TestMetadata("defaultParameter.kt") + public void testDefaultParameter() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/lintQuickfix/targetVersionCheck/defaultParameter.kt"); + doTest(fileName); + } + + @TestMetadata("expressionBody.kt") + public void testExpressionBody() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/lintQuickfix/targetVersionCheck/expressionBody.kt"); + doTest(fileName); + } + + @TestMetadata("functionLiteral.kt") + public void testFunctionLiteral() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/lintQuickfix/targetVersionCheck/functionLiteral.kt"); + doTest(fileName); + } + + @TestMetadata("if.kt") + public void testIf() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/lintQuickfix/targetVersionCheck/if.kt"); + doTest(fileName); + } + + @TestMetadata("ifWithBlock.kt") + public void testIfWithBlock() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/lintQuickfix/targetVersionCheck/ifWithBlock.kt"); + doTest(fileName); + } + + @TestMetadata("method.kt") + public void testMethod() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/lintQuickfix/targetVersionCheck/method.kt"); + doTest(fileName); + } + + @TestMetadata("when.kt") + public void testWhen() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/android/lintQuickfix/targetVersionCheck/when.kt"); + doTest(fileName); + } + } +} diff --git a/idea/idea-android/tests/org/jetbrains/kotlin/android/quickfixes/AndroidQuickFixMultiFileTestGenerated.java b/idea/idea-android/tests/org/jetbrains/kotlin/android/quickfix/AndroidQuickFixMultiFileTestGenerated.java similarity index 98% rename from idea/idea-android/tests/org/jetbrains/kotlin/android/quickfixes/AndroidQuickFixMultiFileTestGenerated.java rename to idea/idea-android/tests/org/jetbrains/kotlin/android/quickfix/AndroidQuickFixMultiFileTestGenerated.java index ceed89548ce..394eae26834 100644 --- a/idea/idea-android/tests/org/jetbrains/kotlin/android/quickfixes/AndroidQuickFixMultiFileTestGenerated.java +++ b/idea/idea-android/tests/org/jetbrains/kotlin/android/quickfix/AndroidQuickFixMultiFileTestGenerated.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.jetbrains.kotlin.android.quickfixes; +package org.jetbrains.kotlin.android.quickfix; import com.intellij.testFramework.TestDataPath; import org.jetbrains.kotlin.test.JUnit3RunnerWithInners; diff --git a/idea/src/META-INF/android.xml b/idea/src/META-INF/android.xml index 6d871388068..003c7c434ea 100644 --- a/idea/src/META-INF/android.xml +++ b/idea/src/META-INF/android.xml @@ -19,7 +19,7 @@ - org.jetbrains.kotlin.android.intentions.KotlinAndroidAddStringResource + org.jetbrains.kotlin.android.intention.KotlinAndroidAddStringResource Kotlin Android diff --git a/idea/testData/android/lintQuickfix/requiresApi/RequiresApi.java b/idea/testData/android/lintQuickfix/requiresApi/RequiresApi.java new file mode 100644 index 00000000000..ddd315876f9 --- /dev/null +++ b/idea/testData/android/lintQuickfix/requiresApi/RequiresApi.java @@ -0,0 +1,49 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package android.support.annotation; + +import java.lang.annotation.Retention; +import java.lang.annotation.Target; + +import static java.lang.annotation.ElementType.CONSTRUCTOR; +import static java.lang.annotation.ElementType.FIELD; +import static java.lang.annotation.ElementType.METHOD; +import static java.lang.annotation.ElementType.TYPE; + +import static java.lang.annotation.RetentionPolicy.CLASS; + +/** + * Denotes that the annotated element should only be called on the given API level + * or higher. + *

+ * This is similar in purpose to the older {@code @TargetApi} annotation, but more + * clearly expresses that this is a requirement on the caller, rather than being + * used to "suppress" warnings within the method that exceed the {@code minSdkVersion}. + */ +@Retention(CLASS) +@Target({TYPE,METHOD,CONSTRUCTOR,FIELD}) +public @interface RequiresApi { + /** + * The API level to require. Alias for {@link #api} which allows you to leave out the + * {@code api=} part. + */ + @IntRange(from=1) + int value() default 1; + + /** The API level to require */ + @IntRange(from=1) + int api() default 1; +} diff --git a/idea/testData/android/lintQuickfix/requiresApi/annotation.kt b/idea/testData/android/lintQuickfix/requiresApi/annotation.kt new file mode 100644 index 00000000000..dbf09a01c09 --- /dev/null +++ b/idea/testData/android/lintQuickfix/requiresApi/annotation.kt @@ -0,0 +1,12 @@ +// INTENTION_TEXT: Add @RequiresApi(LOLLIPOP) Annotation +// INSPECTION_CLASS: org.jetbrains.android.inspections.klint.AndroidLintInspectionToolProvider$AndroidKLintNewApiInspection +// DEPENDENCY: RequiresApi.java -> android/support/annotation/RequiresApi.java + +import android.graphics.drawable.VectorDrawable +import kotlin.reflect.KClass + +annotation class SomeAnnotationWithClass(val cls: KClass<*>) + +@SomeAnnotationWithClass(VectorDrawable::class) +class VectorDrawableProvider { +} \ No newline at end of file diff --git a/idea/testData/android/lintQuickfix/requiresApi/annotation.kt.expected b/idea/testData/android/lintQuickfix/requiresApi/annotation.kt.expected new file mode 100644 index 00000000000..2db4b45bc3f --- /dev/null +++ b/idea/testData/android/lintQuickfix/requiresApi/annotation.kt.expected @@ -0,0 +1,15 @@ +// INTENTION_TEXT: Add @RequiresApi(LOLLIPOP) Annotation +// INSPECTION_CLASS: org.jetbrains.android.inspections.klint.AndroidLintInspectionToolProvider$AndroidKLintNewApiInspection +// DEPENDENCY: RequiresApi.java -> android/support/annotation/RequiresApi.java + +import android.graphics.drawable.VectorDrawable +import android.os.Build +import android.support.annotation.RequiresApi +import kotlin.reflect.KClass + +annotation class SomeAnnotationWithClass(val cls: KClass<*>) + +@RequiresApi(Build.VERSION_CODES.LOLLIPOP) +@SomeAnnotationWithClass(VectorDrawable::class) +class VectorDrawableProvider { +} \ No newline at end of file diff --git a/idea/testData/android/lintQuickfix/requiresApi/companion.kt b/idea/testData/android/lintQuickfix/requiresApi/companion.kt new file mode 100644 index 00000000000..d3325230e28 --- /dev/null +++ b/idea/testData/android/lintQuickfix/requiresApi/companion.kt @@ -0,0 +1,11 @@ +// INTENTION_TEXT: Add @RequiresApi(LOLLIPOP) Annotation +// INSPECTION_CLASS: org.jetbrains.android.inspections.klint.AndroidLintInspectionToolProvider$AndroidKLintNewApiInspection +// DEPENDENCY: RequiresApi.java -> android/support/annotation/RequiresApi.java + +import android.graphics.drawable.VectorDrawable + +class VectorDrawableProvider { + companion object { + val VECTOR_DRAWABLE = VectorDrawable() + } +} \ No newline at end of file diff --git a/idea/testData/android/lintQuickfix/requiresApi/companion.kt.expected b/idea/testData/android/lintQuickfix/requiresApi/companion.kt.expected new file mode 100644 index 00000000000..1858d14b757 --- /dev/null +++ b/idea/testData/android/lintQuickfix/requiresApi/companion.kt.expected @@ -0,0 +1,14 @@ +// INTENTION_TEXT: Add @RequiresApi(LOLLIPOP) Annotation +// INSPECTION_CLASS: org.jetbrains.android.inspections.klint.AndroidLintInspectionToolProvider$AndroidKLintNewApiInspection +// DEPENDENCY: RequiresApi.java -> android/support/annotation/RequiresApi.java + +import android.graphics.drawable.VectorDrawable +import android.os.Build +import android.support.annotation.RequiresApi + +class VectorDrawableProvider { + companion object { + @RequiresApi(Build.VERSION_CODES.LOLLIPOP) + val VECTOR_DRAWABLE = VectorDrawable() + } +} \ No newline at end of file diff --git a/idea/testData/android/lintQuickfix/requiresApi/defaultParameter.kt b/idea/testData/android/lintQuickfix/requiresApi/defaultParameter.kt new file mode 100644 index 00000000000..9f7d6c647aa --- /dev/null +++ b/idea/testData/android/lintQuickfix/requiresApi/defaultParameter.kt @@ -0,0 +1,10 @@ +// INTENTION_TEXT: Add @RequiresApi(LOLLIPOP) Annotation +// INSPECTION_CLASS: org.jetbrains.android.inspections.klint.AndroidLintInspectionToolProvider$AndroidKLintNewApiInspection +// DEPENDENCY: RequiresApi.java -> android/support/annotation/RequiresApi.java + +import android.graphics.drawable.VectorDrawable + + +fun withDefaultParameter(vector: VectorDrawable = VectorDrawable()) { + +} \ No newline at end of file diff --git a/idea/testData/android/lintQuickfix/requiresApi/defaultParameter.kt.expected b/idea/testData/android/lintQuickfix/requiresApi/defaultParameter.kt.expected new file mode 100644 index 00000000000..31602b7a3ab --- /dev/null +++ b/idea/testData/android/lintQuickfix/requiresApi/defaultParameter.kt.expected @@ -0,0 +1,13 @@ +// INTENTION_TEXT: Add @RequiresApi(LOLLIPOP) Annotation +// INSPECTION_CLASS: org.jetbrains.android.inspections.klint.AndroidLintInspectionToolProvider$AndroidKLintNewApiInspection +// DEPENDENCY: RequiresApi.java -> android/support/annotation/RequiresApi.java + +import android.graphics.drawable.VectorDrawable +import android.os.Build +import android.support.annotation.RequiresApi + + +@RequiresApi(Build.VERSION_CODES.LOLLIPOP) +fun withDefaultParameter(vector: VectorDrawable = VectorDrawable()) { + +} \ No newline at end of file diff --git a/idea/testData/android/lintQuickfix/requiresApi/extend.kt b/idea/testData/android/lintQuickfix/requiresApi/extend.kt new file mode 100644 index 00000000000..7b955856b4b --- /dev/null +++ b/idea/testData/android/lintQuickfix/requiresApi/extend.kt @@ -0,0 +1,9 @@ +// INTENTION_TEXT: Add @RequiresApi(LOLLIPOP) Annotation +// INSPECTION_CLASS: org.jetbrains.android.inspections.klint.AndroidLintInspectionToolProvider$AndroidKLintNewApiInspection +// DEPENDENCY: RequiresApi.java -> android/support/annotation/RequiresApi.java + +import android.graphics.drawable.VectorDrawable + +class MyVectorDrawable : VectorDrawable() { + +} \ No newline at end of file diff --git a/idea/testData/android/lintQuickfix/requiresApi/extend.kt.expected b/idea/testData/android/lintQuickfix/requiresApi/extend.kt.expected new file mode 100644 index 00000000000..1965006bd62 --- /dev/null +++ b/idea/testData/android/lintQuickfix/requiresApi/extend.kt.expected @@ -0,0 +1,12 @@ +// INTENTION_TEXT: Add @RequiresApi(LOLLIPOP) Annotation +// INSPECTION_CLASS: org.jetbrains.android.inspections.klint.AndroidLintInspectionToolProvider$AndroidKLintNewApiInspection +// DEPENDENCY: RequiresApi.java -> android/support/annotation/RequiresApi.java + +import android.graphics.drawable.VectorDrawable +import android.os.Build +import android.support.annotation.RequiresApi + +@RequiresApi(Build.VERSION_CODES.LOLLIPOP) +class MyVectorDrawable : VectorDrawable() { + +} \ No newline at end of file diff --git a/idea/testData/android/lintQuickfix/requiresApi/functionLiteral.kt b/idea/testData/android/lintQuickfix/requiresApi/functionLiteral.kt new file mode 100644 index 00000000000..9b04c508ebe --- /dev/null +++ b/idea/testData/android/lintQuickfix/requiresApi/functionLiteral.kt @@ -0,0 +1,13 @@ +// INTENTION_TEXT: Add @RequiresApi(LOLLIPOP) Annotation +// INSPECTION_CLASS: org.jetbrains.android.inspections.klint.AndroidLintInspectionToolProvider$AndroidKLintNewApiInspection +// DEPENDENCY: RequiresApi.java -> android/support/annotation/RequiresApi.java + +import android.graphics.drawable.VectorDrawable + +class VectorDrawableProvider { + fun getVectorDrawable(): VectorDrawable { + with(this) { + return VectorDrawable() + } + } +} \ No newline at end of file diff --git a/idea/testData/android/lintQuickfix/requiresApi/functionLiteral.kt.expected b/idea/testData/android/lintQuickfix/requiresApi/functionLiteral.kt.expected new file mode 100644 index 00000000000..fad5bf9a068 --- /dev/null +++ b/idea/testData/android/lintQuickfix/requiresApi/functionLiteral.kt.expected @@ -0,0 +1,16 @@ +// INTENTION_TEXT: Add @RequiresApi(LOLLIPOP) Annotation +// INSPECTION_CLASS: org.jetbrains.android.inspections.klint.AndroidLintInspectionToolProvider$AndroidKLintNewApiInspection +// DEPENDENCY: RequiresApi.java -> android/support/annotation/RequiresApi.java + +import android.graphics.drawable.VectorDrawable +import android.os.Build +import android.support.annotation.RequiresApi + +class VectorDrawableProvider { + @RequiresApi(Build.VERSION_CODES.LOLLIPOP) + fun getVectorDrawable(): VectorDrawable { + with(this) { + return VectorDrawable() + } + } +} \ No newline at end of file diff --git a/idea/testData/android/lintQuickfix/requiresApi/method.kt b/idea/testData/android/lintQuickfix/requiresApi/method.kt new file mode 100644 index 00000000000..79068fceb87 --- /dev/null +++ b/idea/testData/android/lintQuickfix/requiresApi/method.kt @@ -0,0 +1,11 @@ +// INTENTION_TEXT: Add @RequiresApi(LOLLIPOP) Annotation +// INSPECTION_CLASS: org.jetbrains.android.inspections.klint.AndroidLintInspectionToolProvider$AndroidKLintNewApiInspection +// DEPENDENCY: RequiresApi.java -> android/support/annotation/RequiresApi.java + +import android.graphics.drawable.VectorDrawable + +class VectorDrawableProvider { + fun getVectorDrawable(): VectorDrawable { + return VectorDrawable() + } +} \ No newline at end of file diff --git a/idea/testData/android/lintQuickfix/requiresApi/method.kt.expected b/idea/testData/android/lintQuickfix/requiresApi/method.kt.expected new file mode 100644 index 00000000000..97c45ca4729 --- /dev/null +++ b/idea/testData/android/lintQuickfix/requiresApi/method.kt.expected @@ -0,0 +1,14 @@ +// INTENTION_TEXT: Add @RequiresApi(LOLLIPOP) Annotation +// INSPECTION_CLASS: org.jetbrains.android.inspections.klint.AndroidLintInspectionToolProvider$AndroidKLintNewApiInspection +// DEPENDENCY: RequiresApi.java -> android/support/annotation/RequiresApi.java + +import android.graphics.drawable.VectorDrawable +import android.os.Build +import android.support.annotation.RequiresApi + +class VectorDrawableProvider { + @RequiresApi(Build.VERSION_CODES.LOLLIPOP) + fun getVectorDrawable(): VectorDrawable { + return VectorDrawable() + } +} \ No newline at end of file diff --git a/idea/testData/android/lintQuickfix/requiresApi/property.kt b/idea/testData/android/lintQuickfix/requiresApi/property.kt new file mode 100644 index 00000000000..d4c0ae8be3a --- /dev/null +++ b/idea/testData/android/lintQuickfix/requiresApi/property.kt @@ -0,0 +1,9 @@ +// INTENTION_TEXT: Add @RequiresApi(LOLLIPOP) Annotation +// INSPECTION_CLASS: org.jetbrains.android.inspections.klint.AndroidLintInspectionToolProvider$AndroidKLintNewApiInspection +// DEPENDENCY: RequiresApi.java -> android/support/annotation/RequiresApi.java + +import android.graphics.drawable.VectorDrawable + +class VectorDrawableProvider { + val VECTOR_DRAWABLE = VectorDrawable() +} \ No newline at end of file diff --git a/idea/testData/android/lintQuickfix/requiresApi/property.kt.expected b/idea/testData/android/lintQuickfix/requiresApi/property.kt.expected new file mode 100644 index 00000000000..09a6dbc8157 --- /dev/null +++ b/idea/testData/android/lintQuickfix/requiresApi/property.kt.expected @@ -0,0 +1,12 @@ +// INTENTION_TEXT: Add @RequiresApi(LOLLIPOP) Annotation +// INSPECTION_CLASS: org.jetbrains.android.inspections.klint.AndroidLintInspectionToolProvider$AndroidKLintNewApiInspection +// DEPENDENCY: RequiresApi.java -> android/support/annotation/RequiresApi.java + +import android.graphics.drawable.VectorDrawable +import android.os.Build +import android.support.annotation.RequiresApi + +class VectorDrawableProvider { + @RequiresApi(Build.VERSION_CODES.LOLLIPOP) + val VECTOR_DRAWABLE = VectorDrawable() +} \ No newline at end of file diff --git a/idea/testData/android/lintQuickfix/requiresApi/when.kt b/idea/testData/android/lintQuickfix/requiresApi/when.kt new file mode 100644 index 00000000000..67d45b87a8a --- /dev/null +++ b/idea/testData/android/lintQuickfix/requiresApi/when.kt @@ -0,0 +1,15 @@ +// INTENTION_TEXT: Add @RequiresApi(LOLLIPOP) Annotation +// INSPECTION_CLASS: org.jetbrains.android.inspections.klint.AndroidLintInspectionToolProvider$AndroidKLintNewApiInspection +// DEPENDENCY: RequiresApi.java -> android/support/annotation/RequiresApi.java + +import android.graphics.drawable.VectorDrawable + +class VectorDrawableProvider { + val flag = false + fun getVectorDrawable(): VectorDrawable { + return when (flag) { + true -> VectorDrawable() + else -> VectorDrawable() + } + } +} \ No newline at end of file diff --git a/idea/testData/android/lintQuickfix/requiresApi/when.kt.expected b/idea/testData/android/lintQuickfix/requiresApi/when.kt.expected new file mode 100644 index 00000000000..3126a6e75be --- /dev/null +++ b/idea/testData/android/lintQuickfix/requiresApi/when.kt.expected @@ -0,0 +1,18 @@ +// INTENTION_TEXT: Add @RequiresApi(LOLLIPOP) Annotation +// INSPECTION_CLASS: org.jetbrains.android.inspections.klint.AndroidLintInspectionToolProvider$AndroidKLintNewApiInspection +// DEPENDENCY: RequiresApi.java -> android/support/annotation/RequiresApi.java + +import android.graphics.drawable.VectorDrawable +import android.os.Build +import android.support.annotation.RequiresApi + +class VectorDrawableProvider { + val flag = false + @RequiresApi(Build.VERSION_CODES.LOLLIPOP) + fun getVectorDrawable(): VectorDrawable { + return when (flag) { + true -> VectorDrawable() + else -> VectorDrawable() + } + } +} \ No newline at end of file diff --git a/idea/testData/android/intentions/suppressLint/activityMethod.kt b/idea/testData/android/lintQuickfix/suppressLint/activityMethod.kt similarity index 100% rename from idea/testData/android/intentions/suppressLint/activityMethod.kt rename to idea/testData/android/lintQuickfix/suppressLint/activityMethod.kt diff --git a/idea/testData/android/intentions/suppressLint/activityMethod.kt.expected b/idea/testData/android/lintQuickfix/suppressLint/activityMethod.kt.expected similarity index 100% rename from idea/testData/android/intentions/suppressLint/activityMethod.kt.expected rename to idea/testData/android/lintQuickfix/suppressLint/activityMethod.kt.expected diff --git a/idea/testData/android/intentions/suppressLint/addToExistingAnnotation.kt b/idea/testData/android/lintQuickfix/suppressLint/addToExistingAnnotation.kt similarity index 100% rename from idea/testData/android/intentions/suppressLint/addToExistingAnnotation.kt rename to idea/testData/android/lintQuickfix/suppressLint/addToExistingAnnotation.kt diff --git a/idea/testData/android/intentions/suppressLint/addToExistingAnnotation.kt.expected b/idea/testData/android/lintQuickfix/suppressLint/addToExistingAnnotation.kt.expected similarity index 100% rename from idea/testData/android/intentions/suppressLint/addToExistingAnnotation.kt.expected rename to idea/testData/android/lintQuickfix/suppressLint/addToExistingAnnotation.kt.expected diff --git a/idea/testData/android/intentions/suppressLint/constructorParameter.kt b/idea/testData/android/lintQuickfix/suppressLint/constructorParameter.kt similarity index 100% rename from idea/testData/android/intentions/suppressLint/constructorParameter.kt rename to idea/testData/android/lintQuickfix/suppressLint/constructorParameter.kt diff --git a/idea/testData/android/intentions/suppressLint/constructorParameter.kt.expected b/idea/testData/android/lintQuickfix/suppressLint/constructorParameter.kt.expected similarity index 100% rename from idea/testData/android/intentions/suppressLint/constructorParameter.kt.expected rename to idea/testData/android/lintQuickfix/suppressLint/constructorParameter.kt.expected diff --git a/idea/testData/android/intentions/suppressLint/destructuringDeclaration.kt b/idea/testData/android/lintQuickfix/suppressLint/destructuringDeclaration.kt similarity index 100% rename from idea/testData/android/intentions/suppressLint/destructuringDeclaration.kt rename to idea/testData/android/lintQuickfix/suppressLint/destructuringDeclaration.kt diff --git a/idea/testData/android/intentions/suppressLint/destructuringDeclaration.kt.expected b/idea/testData/android/lintQuickfix/suppressLint/destructuringDeclaration.kt.expected similarity index 100% rename from idea/testData/android/intentions/suppressLint/destructuringDeclaration.kt.expected rename to idea/testData/android/lintQuickfix/suppressLint/destructuringDeclaration.kt.expected diff --git a/idea/testData/android/intentions/suppressLint/lambdaArgument.kt b/idea/testData/android/lintQuickfix/suppressLint/lambdaArgument.kt similarity index 100% rename from idea/testData/android/intentions/suppressLint/lambdaArgument.kt rename to idea/testData/android/lintQuickfix/suppressLint/lambdaArgument.kt diff --git a/idea/testData/android/intentions/suppressLint/lambdaArgument.kt.expected b/idea/testData/android/lintQuickfix/suppressLint/lambdaArgument.kt.expected similarity index 100% rename from idea/testData/android/intentions/suppressLint/lambdaArgument.kt.expected rename to idea/testData/android/lintQuickfix/suppressLint/lambdaArgument.kt.expected diff --git a/idea/testData/android/intentions/suppressLint/lambdaArgumentProperty.kt b/idea/testData/android/lintQuickfix/suppressLint/lambdaArgumentProperty.kt similarity index 100% rename from idea/testData/android/intentions/suppressLint/lambdaArgumentProperty.kt rename to idea/testData/android/lintQuickfix/suppressLint/lambdaArgumentProperty.kt diff --git a/idea/testData/android/intentions/suppressLint/lambdaArgumentProperty.kt.expected b/idea/testData/android/lintQuickfix/suppressLint/lambdaArgumentProperty.kt.expected similarity index 100% rename from idea/testData/android/intentions/suppressLint/lambdaArgumentProperty.kt.expected rename to idea/testData/android/lintQuickfix/suppressLint/lambdaArgumentProperty.kt.expected diff --git a/idea/testData/android/intentions/suppressLint/methodParameter.kt b/idea/testData/android/lintQuickfix/suppressLint/methodParameter.kt similarity index 100% rename from idea/testData/android/intentions/suppressLint/methodParameter.kt rename to idea/testData/android/lintQuickfix/suppressLint/methodParameter.kt diff --git a/idea/testData/android/intentions/suppressLint/methodParameter.kt.expected b/idea/testData/android/lintQuickfix/suppressLint/methodParameter.kt.expected similarity index 100% rename from idea/testData/android/intentions/suppressLint/methodParameter.kt.expected rename to idea/testData/android/lintQuickfix/suppressLint/methodParameter.kt.expected diff --git a/idea/testData/android/intentions/suppressLint/propertyWithLambda.kt b/idea/testData/android/lintQuickfix/suppressLint/propertyWithLambda.kt similarity index 100% rename from idea/testData/android/intentions/suppressLint/propertyWithLambda.kt rename to idea/testData/android/lintQuickfix/suppressLint/propertyWithLambda.kt diff --git a/idea/testData/android/intentions/suppressLint/propertyWithLambda.kt.expected b/idea/testData/android/lintQuickfix/suppressLint/propertyWithLambda.kt.expected similarity index 100% rename from idea/testData/android/intentions/suppressLint/propertyWithLambda.kt.expected rename to idea/testData/android/lintQuickfix/suppressLint/propertyWithLambda.kt.expected diff --git a/idea/testData/android/intentions/suppressLint/simpleProperty.kt b/idea/testData/android/lintQuickfix/suppressLint/simpleProperty.kt similarity index 100% rename from idea/testData/android/intentions/suppressLint/simpleProperty.kt rename to idea/testData/android/lintQuickfix/suppressLint/simpleProperty.kt diff --git a/idea/testData/android/intentions/suppressLint/simpleProperty.kt.expected b/idea/testData/android/lintQuickfix/suppressLint/simpleProperty.kt.expected similarity index 100% rename from idea/testData/android/intentions/suppressLint/simpleProperty.kt.expected rename to idea/testData/android/lintQuickfix/suppressLint/simpleProperty.kt.expected diff --git a/idea/testData/android/lintQuickfix/targetApi/annotation.kt b/idea/testData/android/lintQuickfix/targetApi/annotation.kt new file mode 100644 index 00000000000..f9f055359d7 --- /dev/null +++ b/idea/testData/android/lintQuickfix/targetApi/annotation.kt @@ -0,0 +1,11 @@ +// INTENTION_TEXT: Add @TargetApi(LOLLIPOP) Annotation +// INSPECTION_CLASS: org.jetbrains.android.inspections.klint.AndroidLintInspectionToolProvider$AndroidKLintNewApiInspection + +import android.graphics.drawable.VectorDrawable +import kotlin.reflect.KClass + +annotation class SomeAnnotationWithClass(val cls: KClass<*>) + +@SomeAnnotationWithClass(VectorDrawable::class) +class VectorDrawableProvider { +} \ No newline at end of file diff --git a/idea/testData/android/lintQuickfix/targetApi/annotation.kt.expected b/idea/testData/android/lintQuickfix/targetApi/annotation.kt.expected new file mode 100644 index 00000000000..738d2a571d1 --- /dev/null +++ b/idea/testData/android/lintQuickfix/targetApi/annotation.kt.expected @@ -0,0 +1,14 @@ +// INTENTION_TEXT: Add @TargetApi(LOLLIPOP) Annotation +// INSPECTION_CLASS: org.jetbrains.android.inspections.klint.AndroidLintInspectionToolProvider$AndroidKLintNewApiInspection + +import android.annotation.TargetApi +import android.graphics.drawable.VectorDrawable +import android.os.Build +import kotlin.reflect.KClass + +annotation class SomeAnnotationWithClass(val cls: KClass<*>) + +@TargetApi(Build.VERSION_CODES.LOLLIPOP) +@SomeAnnotationWithClass(VectorDrawable::class) +class VectorDrawableProvider { +} \ No newline at end of file diff --git a/idea/testData/android/lintQuickfix/targetApi/companion.kt b/idea/testData/android/lintQuickfix/targetApi/companion.kt new file mode 100644 index 00000000000..a35ae52f4bc --- /dev/null +++ b/idea/testData/android/lintQuickfix/targetApi/companion.kt @@ -0,0 +1,10 @@ +// INTENTION_TEXT: Add @TargetApi(LOLLIPOP) Annotation +// INSPECTION_CLASS: org.jetbrains.android.inspections.klint.AndroidLintInspectionToolProvider$AndroidKLintNewApiInspection + +import android.graphics.drawable.VectorDrawable + +class VectorDrawableProvider { + companion object { + val VECTOR_DRAWABLE = VectorDrawable() + } +} \ No newline at end of file diff --git a/idea/testData/android/lintQuickfix/targetApi/companion.kt.expected b/idea/testData/android/lintQuickfix/targetApi/companion.kt.expected new file mode 100644 index 00000000000..570322550cb --- /dev/null +++ b/idea/testData/android/lintQuickfix/targetApi/companion.kt.expected @@ -0,0 +1,13 @@ +// INTENTION_TEXT: Add @TargetApi(LOLLIPOP) Annotation +// INSPECTION_CLASS: org.jetbrains.android.inspections.klint.AndroidLintInspectionToolProvider$AndroidKLintNewApiInspection + +import android.annotation.TargetApi +import android.graphics.drawable.VectorDrawable +import android.os.Build + +class VectorDrawableProvider { + @TargetApi(Build.VERSION_CODES.LOLLIPOP) + companion object { + val VECTOR_DRAWABLE = VectorDrawable() + } +} \ No newline at end of file diff --git a/idea/testData/android/lintQuickfix/targetApi/defaultParameter.kt b/idea/testData/android/lintQuickfix/targetApi/defaultParameter.kt new file mode 100644 index 00000000000..8cff109b6cd --- /dev/null +++ b/idea/testData/android/lintQuickfix/targetApi/defaultParameter.kt @@ -0,0 +1,9 @@ +// INTENTION_TEXT: Add @TargetApi(LOLLIPOP) Annotation +// INSPECTION_CLASS: org.jetbrains.android.inspections.klint.AndroidLintInspectionToolProvider$AndroidKLintNewApiInspection + +import android.graphics.drawable.VectorDrawable + + +fun withDefaultParameter(vector: VectorDrawable = VectorDrawable()) { + +} \ No newline at end of file diff --git a/idea/testData/android/lintQuickfix/targetApi/defaultParameter.kt.expected b/idea/testData/android/lintQuickfix/targetApi/defaultParameter.kt.expected new file mode 100644 index 00000000000..1b00e2bc819 --- /dev/null +++ b/idea/testData/android/lintQuickfix/targetApi/defaultParameter.kt.expected @@ -0,0 +1,12 @@ +// INTENTION_TEXT: Add @TargetApi(LOLLIPOP) Annotation +// INSPECTION_CLASS: org.jetbrains.android.inspections.klint.AndroidLintInspectionToolProvider$AndroidKLintNewApiInspection + +import android.annotation.TargetApi +import android.graphics.drawable.VectorDrawable +import android.os.Build + + +@TargetApi(Build.VERSION_CODES.LOLLIPOP) +fun withDefaultParameter(vector: VectorDrawable = VectorDrawable()) { + +} \ No newline at end of file diff --git a/idea/testData/android/lintQuickfix/targetApi/extend.kt b/idea/testData/android/lintQuickfix/targetApi/extend.kt new file mode 100644 index 00000000000..b47ea573746 --- /dev/null +++ b/idea/testData/android/lintQuickfix/targetApi/extend.kt @@ -0,0 +1,8 @@ +// INTENTION_TEXT: Add @TargetApi(LOLLIPOP) Annotation +// INSPECTION_CLASS: org.jetbrains.android.inspections.klint.AndroidLintInspectionToolProvider$AndroidKLintNewApiInspection + +import android.graphics.drawable.VectorDrawable + +class MyVectorDrawable : VectorDrawable() { + +} \ No newline at end of file diff --git a/idea/testData/android/lintQuickfix/targetApi/extend.kt.expected b/idea/testData/android/lintQuickfix/targetApi/extend.kt.expected new file mode 100644 index 00000000000..6ea867dfef8 --- /dev/null +++ b/idea/testData/android/lintQuickfix/targetApi/extend.kt.expected @@ -0,0 +1,11 @@ +// INTENTION_TEXT: Add @TargetApi(LOLLIPOP) Annotation +// INSPECTION_CLASS: org.jetbrains.android.inspections.klint.AndroidLintInspectionToolProvider$AndroidKLintNewApiInspection + +import android.annotation.TargetApi +import android.graphics.drawable.VectorDrawable +import android.os.Build + +@TargetApi(Build.VERSION_CODES.LOLLIPOP) +class MyVectorDrawable : VectorDrawable() { + +} \ No newline at end of file diff --git a/idea/testData/android/lintQuickfix/targetApi/functionLiteral.kt b/idea/testData/android/lintQuickfix/targetApi/functionLiteral.kt new file mode 100644 index 00000000000..ea1b9c2c64b --- /dev/null +++ b/idea/testData/android/lintQuickfix/targetApi/functionLiteral.kt @@ -0,0 +1,12 @@ +// INTENTION_TEXT: Add @TargetApi(LOLLIPOP) Annotation +// INSPECTION_CLASS: org.jetbrains.android.inspections.klint.AndroidLintInspectionToolProvider$AndroidKLintNewApiInspection + +import android.graphics.drawable.VectorDrawable + +class VectorDrawableProvider { + fun getVectorDrawable(): VectorDrawable { + with(this) { + return VectorDrawable() + } + } +} \ No newline at end of file diff --git a/idea/testData/android/lintQuickfix/targetApi/functionLiteral.kt.expected b/idea/testData/android/lintQuickfix/targetApi/functionLiteral.kt.expected new file mode 100644 index 00000000000..3c31dd270f4 --- /dev/null +++ b/idea/testData/android/lintQuickfix/targetApi/functionLiteral.kt.expected @@ -0,0 +1,15 @@ +// INTENTION_TEXT: Add @TargetApi(LOLLIPOP) Annotation +// INSPECTION_CLASS: org.jetbrains.android.inspections.klint.AndroidLintInspectionToolProvider$AndroidKLintNewApiInspection + +import android.annotation.TargetApi +import android.graphics.drawable.VectorDrawable +import android.os.Build + +class VectorDrawableProvider { + @TargetApi(Build.VERSION_CODES.LOLLIPOP) + fun getVectorDrawable(): VectorDrawable { + with(this) { + return VectorDrawable() + } + } +} \ No newline at end of file diff --git a/idea/testData/android/lintQuickfix/targetApi/method.kt b/idea/testData/android/lintQuickfix/targetApi/method.kt new file mode 100644 index 00000000000..4df86f64ee4 --- /dev/null +++ b/idea/testData/android/lintQuickfix/targetApi/method.kt @@ -0,0 +1,10 @@ +// INTENTION_TEXT: Add @TargetApi(LOLLIPOP) Annotation +// INSPECTION_CLASS: org.jetbrains.android.inspections.klint.AndroidLintInspectionToolProvider$AndroidKLintNewApiInspection + +import android.graphics.drawable.VectorDrawable + +class VectorDrawableProvider { + fun getVectorDrawable(): VectorDrawable { + return VectorDrawable() + } +} \ No newline at end of file diff --git a/idea/testData/android/lintQuickfix/targetApi/method.kt.expected b/idea/testData/android/lintQuickfix/targetApi/method.kt.expected new file mode 100644 index 00000000000..8e27e69701f --- /dev/null +++ b/idea/testData/android/lintQuickfix/targetApi/method.kt.expected @@ -0,0 +1,13 @@ +// INTENTION_TEXT: Add @TargetApi(LOLLIPOP) Annotation +// INSPECTION_CLASS: org.jetbrains.android.inspections.klint.AndroidLintInspectionToolProvider$AndroidKLintNewApiInspection + +import android.annotation.TargetApi +import android.graphics.drawable.VectorDrawable +import android.os.Build + +class VectorDrawableProvider { + @TargetApi(Build.VERSION_CODES.LOLLIPOP) + fun getVectorDrawable(): VectorDrawable { + return VectorDrawable() + } +} \ No newline at end of file diff --git a/idea/testData/android/lintQuickfix/targetApi/property.kt b/idea/testData/android/lintQuickfix/targetApi/property.kt new file mode 100644 index 00000000000..0cc187c454d --- /dev/null +++ b/idea/testData/android/lintQuickfix/targetApi/property.kt @@ -0,0 +1,8 @@ +// INTENTION_TEXT: Add @TargetApi(LOLLIPOP) Annotation +// INSPECTION_CLASS: org.jetbrains.android.inspections.klint.AndroidLintInspectionToolProvider$AndroidKLintNewApiInspection + +import android.graphics.drawable.VectorDrawable + +class VectorDrawableProvider { + val VECTOR_DRAWABLE = VectorDrawable() +} \ No newline at end of file diff --git a/idea/testData/android/lintQuickfix/targetApi/property.kt.expected b/idea/testData/android/lintQuickfix/targetApi/property.kt.expected new file mode 100644 index 00000000000..9b8f9a4119e --- /dev/null +++ b/idea/testData/android/lintQuickfix/targetApi/property.kt.expected @@ -0,0 +1,11 @@ +// INTENTION_TEXT: Add @TargetApi(LOLLIPOP) Annotation +// INSPECTION_CLASS: org.jetbrains.android.inspections.klint.AndroidLintInspectionToolProvider$AndroidKLintNewApiInspection + +import android.annotation.TargetApi +import android.graphics.drawable.VectorDrawable +import android.os.Build + +@TargetApi(Build.VERSION_CODES.LOLLIPOP) +class VectorDrawableProvider { + val VECTOR_DRAWABLE = VectorDrawable() +} \ No newline at end of file diff --git a/idea/testData/android/lintQuickfix/targetApi/when.kt b/idea/testData/android/lintQuickfix/targetApi/when.kt new file mode 100644 index 00000000000..27a59191406 --- /dev/null +++ b/idea/testData/android/lintQuickfix/targetApi/when.kt @@ -0,0 +1,14 @@ +// INTENTION_TEXT: Add @TargetApi(LOLLIPOP) Annotation +// INSPECTION_CLASS: org.jetbrains.android.inspections.klint.AndroidLintInspectionToolProvider$AndroidKLintNewApiInspection + +import android.graphics.drawable.VectorDrawable + +class VectorDrawableProvider { + val flag = false + fun getVectorDrawable(): VectorDrawable { + return when (flag) { + true -> VectorDrawable() + else -> VectorDrawable() + } + } +} \ No newline at end of file diff --git a/idea/testData/android/lintQuickfix/targetApi/when.kt.expected b/idea/testData/android/lintQuickfix/targetApi/when.kt.expected new file mode 100644 index 00000000000..4ca486cdcbb --- /dev/null +++ b/idea/testData/android/lintQuickfix/targetApi/when.kt.expected @@ -0,0 +1,17 @@ +// INTENTION_TEXT: Add @TargetApi(LOLLIPOP) Annotation +// INSPECTION_CLASS: org.jetbrains.android.inspections.klint.AndroidLintInspectionToolProvider$AndroidKLintNewApiInspection + +import android.annotation.TargetApi +import android.graphics.drawable.VectorDrawable +import android.os.Build + +class VectorDrawableProvider { + val flag = false + @TargetApi(Build.VERSION_CODES.LOLLIPOP) + fun getVectorDrawable(): VectorDrawable { + return when (flag) { + true -> VectorDrawable() + else -> VectorDrawable() + } + } +} \ No newline at end of file diff --git a/idea/testData/android/lintQuickfix/targetVersionCheck/annotation.kt b/idea/testData/android/lintQuickfix/targetVersionCheck/annotation.kt new file mode 100644 index 00000000000..e052b68c6e6 --- /dev/null +++ b/idea/testData/android/lintQuickfix/targetVersionCheck/annotation.kt @@ -0,0 +1,12 @@ +// INTENTION_TEXT: Surround with if (VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) { ... } +// INTENTION_NOT_AVAILABLE +// INSPECTION_CLASS: org.jetbrains.android.inspections.klint.AndroidLintInspectionToolProvider$AndroidKLintNewApiInspection + +import android.graphics.drawable.VectorDrawable +import kotlin.reflect.KClass + +annotation class SomeAnnotationWithClass(val cls: KClass<*>) + +@SomeAnnotationWithClass(VectorDrawable::class) +class VectorDrawableProvider { +} \ No newline at end of file diff --git a/idea/testData/android/lintQuickfix/targetVersionCheck/defaultParameter.kt b/idea/testData/android/lintQuickfix/targetVersionCheck/defaultParameter.kt new file mode 100644 index 00000000000..97f5da238fa --- /dev/null +++ b/idea/testData/android/lintQuickfix/targetVersionCheck/defaultParameter.kt @@ -0,0 +1,10 @@ +// INTENTION_TEXT: Surround with if (VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) { ... } +// INTENTION_NOT_AVAILABLE +// INSPECTION_CLASS: org.jetbrains.android.inspections.klint.AndroidLintInspectionToolProvider$AndroidKLintNewApiInspection + +import android.graphics.drawable.VectorDrawable + + +fun withDefaultParameter(vector: VectorDrawable = VectorDrawable()) { + +} \ No newline at end of file diff --git a/idea/testData/android/lintQuickfix/targetVersionCheck/expressionBody.kt b/idea/testData/android/lintQuickfix/targetVersionCheck/expressionBody.kt new file mode 100644 index 00000000000..16ee93fa998 --- /dev/null +++ b/idea/testData/android/lintQuickfix/targetVersionCheck/expressionBody.kt @@ -0,0 +1,8 @@ +// INTENTION_TEXT: Surround with if (VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) { ... } +// INSPECTION_CLASS: org.jetbrains.android.inspections.klint.AndroidLintInspectionToolProvider$AndroidKLintNewApiInspection + +import android.graphics.drawable.VectorDrawable + +class VectorDrawableProvider { + fun getVectorDrawable(): VectorDrawable = VectorDrawable() +} \ No newline at end of file diff --git a/idea/testData/android/lintQuickfix/targetVersionCheck/expressionBody.kt.expected b/idea/testData/android/lintQuickfix/targetVersionCheck/expressionBody.kt.expected new file mode 100644 index 00000000000..4dbd098d280 --- /dev/null +++ b/idea/testData/android/lintQuickfix/targetVersionCheck/expressionBody.kt.expected @@ -0,0 +1,11 @@ +// INTENTION_TEXT: Surround with if (VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) { ... } +// INSPECTION_CLASS: org.jetbrains.android.inspections.klint.AndroidLintInspectionToolProvider$AndroidKLintNewApiInspection + +import android.graphics.drawable.VectorDrawable +import android.os.Build + +class VectorDrawableProvider { + fun getVectorDrawable(): VectorDrawable = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + VectorDrawable() + } +} \ No newline at end of file diff --git a/idea/testData/android/lintQuickfix/targetVersionCheck/functionLiteral.kt b/idea/testData/android/lintQuickfix/targetVersionCheck/functionLiteral.kt new file mode 100644 index 00000000000..915c5c697a8 --- /dev/null +++ b/idea/testData/android/lintQuickfix/targetVersionCheck/functionLiteral.kt @@ -0,0 +1,12 @@ +// INTENTION_TEXT: Surround with if (VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) { ... } +// INSPECTION_CLASS: org.jetbrains.android.inspections.klint.AndroidLintInspectionToolProvider$AndroidKLintNewApiInspection + +import android.graphics.drawable.VectorDrawable + +class VectorDrawableProvider { + fun getVectorDrawable(): VectorDrawable { + with(this) { + return VectorDrawable() + } + } +} \ No newline at end of file diff --git a/idea/testData/android/lintQuickfix/targetVersionCheck/functionLiteral.kt.expected b/idea/testData/android/lintQuickfix/targetVersionCheck/functionLiteral.kt.expected new file mode 100644 index 00000000000..375c7905f46 --- /dev/null +++ b/idea/testData/android/lintQuickfix/targetVersionCheck/functionLiteral.kt.expected @@ -0,0 +1,15 @@ +// INTENTION_TEXT: Surround with if (VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) { ... } +// INSPECTION_CLASS: org.jetbrains.android.inspections.klint.AndroidLintInspectionToolProvider$AndroidKLintNewApiInspection + +import android.graphics.drawable.VectorDrawable +import android.os.Build + +class VectorDrawableProvider { + fun getVectorDrawable(): VectorDrawable { + with(this) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + return VectorDrawable() + } + } + } +} \ No newline at end of file diff --git a/idea/testData/android/lintQuickfix/targetVersionCheck/if.kt b/idea/testData/android/lintQuickfix/targetVersionCheck/if.kt new file mode 100644 index 00000000000..e2f81f2bbc0 --- /dev/null +++ b/idea/testData/android/lintQuickfix/targetVersionCheck/if.kt @@ -0,0 +1,12 @@ +// INTENTION_TEXT: Surround with if (VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) { ... } +// INSPECTION_CLASS: org.jetbrains.android.inspections.klint.AndroidLintInspectionToolProvider$AndroidKLintNewApiInspection + +import android.graphics.drawable.VectorDrawable + +class VectorDrawableProvider { + val flag = false + fun getVectorDrawable(): VectorDrawable { + if (flag) + return VectorDrawable() + } +} \ No newline at end of file diff --git a/idea/testData/android/lintQuickfix/targetVersionCheck/if.kt.expected b/idea/testData/android/lintQuickfix/targetVersionCheck/if.kt.expected new file mode 100644 index 00000000000..c1fe66e6c43 --- /dev/null +++ b/idea/testData/android/lintQuickfix/targetVersionCheck/if.kt.expected @@ -0,0 +1,15 @@ +// INTENTION_TEXT: Surround with if (VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) { ... } +// INSPECTION_CLASS: org.jetbrains.android.inspections.klint.AndroidLintInspectionToolProvider$AndroidKLintNewApiInspection + +import android.graphics.drawable.VectorDrawable +import android.os.Build + +class VectorDrawableProvider { + val flag = false + fun getVectorDrawable(): VectorDrawable { + if (flag) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + return VectorDrawable() + } + } +} \ No newline at end of file diff --git a/idea/testData/android/lintQuickfix/targetVersionCheck/ifWithBlock.kt b/idea/testData/android/lintQuickfix/targetVersionCheck/ifWithBlock.kt new file mode 100644 index 00000000000..c74f3ee3ab6 --- /dev/null +++ b/idea/testData/android/lintQuickfix/targetVersionCheck/ifWithBlock.kt @@ -0,0 +1,13 @@ +// INTENTION_TEXT: Surround with if (VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) { ... } +// INSPECTION_CLASS: org.jetbrains.android.inspections.klint.AndroidLintInspectionToolProvider$AndroidKLintNewApiInspection + +import android.graphics.drawable.VectorDrawable + +class VectorDrawableProvider { + val flag = false + fun getVectorDrawable(): VectorDrawable { + if (flag) { + return VectorDrawable() + } + } +} \ No newline at end of file diff --git a/idea/testData/android/lintQuickfix/targetVersionCheck/ifWithBlock.kt.expected b/idea/testData/android/lintQuickfix/targetVersionCheck/ifWithBlock.kt.expected new file mode 100644 index 00000000000..bb365b9d6f9 --- /dev/null +++ b/idea/testData/android/lintQuickfix/targetVersionCheck/ifWithBlock.kt.expected @@ -0,0 +1,16 @@ +// INTENTION_TEXT: Surround with if (VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) { ... } +// INSPECTION_CLASS: org.jetbrains.android.inspections.klint.AndroidLintInspectionToolProvider$AndroidKLintNewApiInspection + +import android.graphics.drawable.VectorDrawable +import android.os.Build + +class VectorDrawableProvider { + val flag = false + fun getVectorDrawable(): VectorDrawable { + if (flag) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + return VectorDrawable() + } + } + } +} \ No newline at end of file diff --git a/idea/testData/android/lintQuickfix/targetVersionCheck/method.kt b/idea/testData/android/lintQuickfix/targetVersionCheck/method.kt new file mode 100644 index 00000000000..a1bbff234ae --- /dev/null +++ b/idea/testData/android/lintQuickfix/targetVersionCheck/method.kt @@ -0,0 +1,10 @@ +// INTENTION_TEXT: Surround with if (VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) { ... } +// INSPECTION_CLASS: org.jetbrains.android.inspections.klint.AndroidLintInspectionToolProvider$AndroidKLintNewApiInspection + +import android.graphics.drawable.VectorDrawable + +class VectorDrawableProvider { + fun getVectorDrawable(): VectorDrawable { + return VectorDrawable() + } +} \ No newline at end of file diff --git a/idea/testData/android/lintQuickfix/targetVersionCheck/method.kt.expected b/idea/testData/android/lintQuickfix/targetVersionCheck/method.kt.expected new file mode 100644 index 00000000000..20a4c2038f5 --- /dev/null +++ b/idea/testData/android/lintQuickfix/targetVersionCheck/method.kt.expected @@ -0,0 +1,13 @@ +// INTENTION_TEXT: Surround with if (VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) { ... } +// INSPECTION_CLASS: org.jetbrains.android.inspections.klint.AndroidLintInspectionToolProvider$AndroidKLintNewApiInspection + +import android.graphics.drawable.VectorDrawable +import android.os.Build + +class VectorDrawableProvider { + fun getVectorDrawable(): VectorDrawable { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + return VectorDrawable() + } + } +} \ No newline at end of file diff --git a/idea/testData/android/lintQuickfix/targetVersionCheck/when.kt b/idea/testData/android/lintQuickfix/targetVersionCheck/when.kt new file mode 100644 index 00000000000..11474aca918 --- /dev/null +++ b/idea/testData/android/lintQuickfix/targetVersionCheck/when.kt @@ -0,0 +1,14 @@ +// INTENTION_TEXT: Surround with if (VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) { ... } +// INSPECTION_CLASS: org.jetbrains.android.inspections.klint.AndroidLintInspectionToolProvider$AndroidKLintNewApiInspection + +import android.graphics.drawable.VectorDrawable + +class VectorDrawableProvider { + val flag = false + fun getVectorDrawable(): VectorDrawable { + return when (flag) { + true -> VectorDrawable() + else -> VectorDrawable() + } + } +} \ No newline at end of file diff --git a/idea/testData/android/lintQuickfix/targetVersionCheck/when.kt.expected b/idea/testData/android/lintQuickfix/targetVersionCheck/when.kt.expected new file mode 100644 index 00000000000..90ccdff38f1 --- /dev/null +++ b/idea/testData/android/lintQuickfix/targetVersionCheck/when.kt.expected @@ -0,0 +1,17 @@ +// INTENTION_TEXT: Surround with if (VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) { ... } +// INSPECTION_CLASS: org.jetbrains.android.inspections.klint.AndroidLintInspectionToolProvider$AndroidKLintNewApiInspection + +import android.graphics.drawable.VectorDrawable +import android.os.Build + +class VectorDrawableProvider { + val flag = false + fun getVectorDrawable(): VectorDrawable { + return when (flag) { + true -> if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + VectorDrawable() + } + else -> VectorDrawable() + } + } +} \ No newline at end of file diff --git a/idea/testData/android/resourceIntentions/R.kt b/idea/testData/android/resourceIntention/R.kt similarity index 100% rename from idea/testData/android/resourceIntentions/R.kt rename to idea/testData/android/resourceIntention/R.kt diff --git a/idea/testData/android/resourceIntentions/createColorValueResource/alreadyExists/R.java b/idea/testData/android/resourceIntention/createColorValueResource/alreadyExists/R.java similarity index 100% rename from idea/testData/android/resourceIntentions/createColorValueResource/alreadyExists/R.java rename to idea/testData/android/resourceIntention/createColorValueResource/alreadyExists/R.java diff --git a/idea/testData/android/resourceIntentions/createColorValueResource/alreadyExists/alreadyExists.test b/idea/testData/android/resourceIntention/createColorValueResource/alreadyExists/alreadyExists.test similarity index 100% rename from idea/testData/android/resourceIntentions/createColorValueResource/alreadyExists/alreadyExists.test rename to idea/testData/android/resourceIntention/createColorValueResource/alreadyExists/alreadyExists.test diff --git a/idea/testData/android/resourceIntentions/createColorValueResource/alreadyExists/main.kt b/idea/testData/android/resourceIntention/createColorValueResource/alreadyExists/main.kt similarity index 100% rename from idea/testData/android/resourceIntentions/createColorValueResource/alreadyExists/main.kt rename to idea/testData/android/resourceIntention/createColorValueResource/alreadyExists/main.kt diff --git a/idea/testData/android/resourceIntentions/createColorValueResource/simpleFunction/R.java b/idea/testData/android/resourceIntention/createColorValueResource/simpleFunction/R.java similarity index 100% rename from idea/testData/android/resourceIntentions/createColorValueResource/simpleFunction/R.java rename to idea/testData/android/resourceIntention/createColorValueResource/simpleFunction/R.java diff --git a/idea/testData/android/resourceIntentions/createColorValueResource/simpleFunction/expected/main.kt b/idea/testData/android/resourceIntention/createColorValueResource/simpleFunction/expected/main.kt similarity index 100% rename from idea/testData/android/resourceIntentions/createColorValueResource/simpleFunction/expected/main.kt rename to idea/testData/android/resourceIntention/createColorValueResource/simpleFunction/expected/main.kt diff --git a/idea/testData/android/resourceIntentions/createColorValueResource/simpleFunction/expected/res/values/colors.xml b/idea/testData/android/resourceIntention/createColorValueResource/simpleFunction/expected/res/values/colors.xml similarity index 100% rename from idea/testData/android/resourceIntentions/createColorValueResource/simpleFunction/expected/res/values/colors.xml rename to idea/testData/android/resourceIntention/createColorValueResource/simpleFunction/expected/res/values/colors.xml diff --git a/idea/testData/android/resourceIntentions/createColorValueResource/simpleFunction/expected/res/values/strings.xml b/idea/testData/android/resourceIntention/createColorValueResource/simpleFunction/expected/res/values/strings.xml similarity index 100% rename from idea/testData/android/resourceIntentions/createColorValueResource/simpleFunction/expected/res/values/strings.xml rename to idea/testData/android/resourceIntention/createColorValueResource/simpleFunction/expected/res/values/strings.xml diff --git a/idea/testData/android/resourceIntentions/createColorValueResource/simpleFunction/main.kt b/idea/testData/android/resourceIntention/createColorValueResource/simpleFunction/main.kt similarity index 100% rename from idea/testData/android/resourceIntentions/createColorValueResource/simpleFunction/main.kt rename to idea/testData/android/resourceIntention/createColorValueResource/simpleFunction/main.kt diff --git a/idea/testData/android/resourceIntentions/createColorValueResource/simpleFunction/simpleFunction.test b/idea/testData/android/resourceIntention/createColorValueResource/simpleFunction/simpleFunction.test similarity index 100% rename from idea/testData/android/resourceIntentions/createColorValueResource/simpleFunction/simpleFunction.test rename to idea/testData/android/resourceIntention/createColorValueResource/simpleFunction/simpleFunction.test diff --git a/idea/testData/android/resourceIntentions/createLayoutResourceFile/alreadyExists/R.java b/idea/testData/android/resourceIntention/createLayoutResourceFile/alreadyExists/R.java similarity index 100% rename from idea/testData/android/resourceIntentions/createLayoutResourceFile/alreadyExists/R.java rename to idea/testData/android/resourceIntention/createLayoutResourceFile/alreadyExists/R.java diff --git a/idea/testData/android/resourceIntentions/createLayoutResourceFile/alreadyExists/alreadyExists.test b/idea/testData/android/resourceIntention/createLayoutResourceFile/alreadyExists/alreadyExists.test similarity index 100% rename from idea/testData/android/resourceIntentions/createLayoutResourceFile/alreadyExists/alreadyExists.test rename to idea/testData/android/resourceIntention/createLayoutResourceFile/alreadyExists/alreadyExists.test diff --git a/idea/testData/android/resourceIntentions/createLayoutResourceFile/alreadyExists/main.kt b/idea/testData/android/resourceIntention/createLayoutResourceFile/alreadyExists/main.kt similarity index 100% rename from idea/testData/android/resourceIntentions/createLayoutResourceFile/alreadyExists/main.kt rename to idea/testData/android/resourceIntention/createLayoutResourceFile/alreadyExists/main.kt diff --git a/idea/testData/android/resourceIntentions/createLayoutResourceFile/simpleFunction/R.java b/idea/testData/android/resourceIntention/createLayoutResourceFile/simpleFunction/R.java similarity index 100% rename from idea/testData/android/resourceIntentions/createLayoutResourceFile/simpleFunction/R.java rename to idea/testData/android/resourceIntention/createLayoutResourceFile/simpleFunction/R.java diff --git a/idea/testData/android/resourceIntentions/createLayoutResourceFile/simpleFunction/expected/main.kt b/idea/testData/android/resourceIntention/createLayoutResourceFile/simpleFunction/expected/main.kt similarity index 100% rename from idea/testData/android/resourceIntentions/createLayoutResourceFile/simpleFunction/expected/main.kt rename to idea/testData/android/resourceIntention/createLayoutResourceFile/simpleFunction/expected/main.kt diff --git a/idea/testData/android/resourceIntentions/createLayoutResourceFile/simpleFunction/expected/res/layout/activity_main.xml b/idea/testData/android/resourceIntention/createLayoutResourceFile/simpleFunction/expected/res/layout/activity_main.xml similarity index 100% rename from idea/testData/android/resourceIntentions/createLayoutResourceFile/simpleFunction/expected/res/layout/activity_main.xml rename to idea/testData/android/resourceIntention/createLayoutResourceFile/simpleFunction/expected/res/layout/activity_main.xml diff --git a/idea/testData/android/resourceIntentions/createLayoutResourceFile/simpleFunction/expected/res/values/strings.xml b/idea/testData/android/resourceIntention/createLayoutResourceFile/simpleFunction/expected/res/values/strings.xml similarity index 100% rename from idea/testData/android/resourceIntentions/createLayoutResourceFile/simpleFunction/expected/res/values/strings.xml rename to idea/testData/android/resourceIntention/createLayoutResourceFile/simpleFunction/expected/res/values/strings.xml diff --git a/idea/testData/android/resourceIntentions/createLayoutResourceFile/simpleFunction/main.kt b/idea/testData/android/resourceIntention/createLayoutResourceFile/simpleFunction/main.kt similarity index 100% rename from idea/testData/android/resourceIntentions/createLayoutResourceFile/simpleFunction/main.kt rename to idea/testData/android/resourceIntention/createLayoutResourceFile/simpleFunction/main.kt diff --git a/idea/testData/android/resourceIntentions/createLayoutResourceFile/simpleFunction/simpleFunction.test b/idea/testData/android/resourceIntention/createLayoutResourceFile/simpleFunction/simpleFunction.test similarity index 100% rename from idea/testData/android/resourceIntentions/createLayoutResourceFile/simpleFunction/simpleFunction.test rename to idea/testData/android/resourceIntention/createLayoutResourceFile/simpleFunction/simpleFunction.test diff --git a/idea/testData/android/resourceIntentions/createStringValueResource/alreadyExists/R.java b/idea/testData/android/resourceIntention/createStringValueResource/alreadyExists/R.java similarity index 100% rename from idea/testData/android/resourceIntentions/createStringValueResource/alreadyExists/R.java rename to idea/testData/android/resourceIntention/createStringValueResource/alreadyExists/R.java diff --git a/idea/testData/android/resourceIntentions/createStringValueResource/alreadyExists/alreadyExists.test b/idea/testData/android/resourceIntention/createStringValueResource/alreadyExists/alreadyExists.test similarity index 100% rename from idea/testData/android/resourceIntentions/createStringValueResource/alreadyExists/alreadyExists.test rename to idea/testData/android/resourceIntention/createStringValueResource/alreadyExists/alreadyExists.test diff --git a/idea/testData/android/resourceIntentions/createStringValueResource/alreadyExists/main.kt b/idea/testData/android/resourceIntention/createStringValueResource/alreadyExists/main.kt similarity index 100% rename from idea/testData/android/resourceIntentions/createStringValueResource/alreadyExists/main.kt rename to idea/testData/android/resourceIntention/createStringValueResource/alreadyExists/main.kt diff --git a/idea/testData/android/resourceIntentions/createStringValueResource/simpleFunction/R.java b/idea/testData/android/resourceIntention/createStringValueResource/simpleFunction/R.java similarity index 100% rename from idea/testData/android/resourceIntentions/createStringValueResource/simpleFunction/R.java rename to idea/testData/android/resourceIntention/createStringValueResource/simpleFunction/R.java diff --git a/idea/testData/android/resourceIntentions/createStringValueResource/simpleFunction/expected/main.kt b/idea/testData/android/resourceIntention/createStringValueResource/simpleFunction/expected/main.kt similarity index 100% rename from idea/testData/android/resourceIntentions/createStringValueResource/simpleFunction/expected/main.kt rename to idea/testData/android/resourceIntention/createStringValueResource/simpleFunction/expected/main.kt diff --git a/idea/testData/android/resourceIntentions/createStringValueResource/simpleFunction/expected/res/values/strings.xml b/idea/testData/android/resourceIntention/createStringValueResource/simpleFunction/expected/res/values/strings.xml similarity index 100% rename from idea/testData/android/resourceIntentions/createStringValueResource/simpleFunction/expected/res/values/strings.xml rename to idea/testData/android/resourceIntention/createStringValueResource/simpleFunction/expected/res/values/strings.xml diff --git a/idea/testData/android/resourceIntentions/createStringValueResource/simpleFunction/main.kt b/idea/testData/android/resourceIntention/createStringValueResource/simpleFunction/main.kt similarity index 100% rename from idea/testData/android/resourceIntentions/createStringValueResource/simpleFunction/main.kt rename to idea/testData/android/resourceIntention/createStringValueResource/simpleFunction/main.kt diff --git a/idea/testData/android/resourceIntentions/createStringValueResource/simpleFunction/simpleFunction.test b/idea/testData/android/resourceIntention/createStringValueResource/simpleFunction/simpleFunction.test similarity index 100% rename from idea/testData/android/resourceIntentions/createStringValueResource/simpleFunction/simpleFunction.test rename to idea/testData/android/resourceIntention/createStringValueResource/simpleFunction/simpleFunction.test diff --git a/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/activityExtension/activityExtension.test b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/activityExtension/activityExtension.test new file mode 100644 index 00000000000..d134935d769 --- /dev/null +++ b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/activityExtension/activityExtension.test @@ -0,0 +1,5 @@ +{ + "rFile": "../../R.kt", + "resDirectory": "../../res", + "intentionClass": "org.jetbrains.kotlin.android.intention.KotlinAndroidAddStringResource" +} \ No newline at end of file diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/activityExtension/expected/main.kt b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/activityExtension/expected/main.kt similarity index 100% rename from idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/activityExtension/expected/main.kt rename to idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/activityExtension/expected/main.kt diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/activityExtension/expected/res/values/strings.xml b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/activityExtension/expected/res/values/strings.xml similarity index 100% rename from idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/activityExtension/expected/res/values/strings.xml rename to idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/activityExtension/expected/res/values/strings.xml diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/activityExtension/main.kt b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/activityExtension/main.kt similarity index 100% rename from idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/activityExtension/main.kt rename to idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/activityExtension/main.kt diff --git a/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/activityMethod/activityMethod.test b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/activityMethod/activityMethod.test new file mode 100644 index 00000000000..d134935d769 --- /dev/null +++ b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/activityMethod/activityMethod.test @@ -0,0 +1,5 @@ +{ + "rFile": "../../R.kt", + "resDirectory": "../../res", + "intentionClass": "org.jetbrains.kotlin.android.intention.KotlinAndroidAddStringResource" +} \ No newline at end of file diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/activityMethod/expected/main.kt b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/activityMethod/expected/main.kt similarity index 100% rename from idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/activityMethod/expected/main.kt rename to idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/activityMethod/expected/main.kt diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/activityMethod/expected/res/values/strings.xml b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/activityMethod/expected/res/values/strings.xml similarity index 100% rename from idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/activityMethod/expected/res/values/strings.xml rename to idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/activityMethod/expected/res/values/strings.xml diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/activityMethod/main.kt b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/activityMethod/main.kt similarity index 100% rename from idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/activityMethod/main.kt rename to idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/activityMethod/main.kt diff --git a/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/classInActivity/classInActivity.test b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/classInActivity/classInActivity.test new file mode 100644 index 00000000000..d134935d769 --- /dev/null +++ b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/classInActivity/classInActivity.test @@ -0,0 +1,5 @@ +{ + "rFile": "../../R.kt", + "resDirectory": "../../res", + "intentionClass": "org.jetbrains.kotlin.android.intention.KotlinAndroidAddStringResource" +} \ No newline at end of file diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/classInActivity/expected/main.kt b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/classInActivity/expected/main.kt similarity index 100% rename from idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/classInActivity/expected/main.kt rename to idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/classInActivity/expected/main.kt diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/classInActivity/expected/res/values/strings.xml b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/classInActivity/expected/res/values/strings.xml similarity index 100% rename from idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/classInActivity/expected/res/values/strings.xml rename to idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/classInActivity/expected/res/values/strings.xml diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/classInActivity/main.kt b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/classInActivity/main.kt similarity index 100% rename from idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/classInActivity/main.kt rename to idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/classInActivity/main.kt diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/extensionLambda/expected/main.kt b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/extensionLambda/expected/main.kt similarity index 100% rename from idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/extensionLambda/expected/main.kt rename to idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/extensionLambda/expected/main.kt diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/extensionLambda/expected/res/values/strings.xml b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/extensionLambda/expected/res/values/strings.xml similarity index 100% rename from idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/extensionLambda/expected/res/values/strings.xml rename to idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/extensionLambda/expected/res/values/strings.xml diff --git a/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/extensionLambda/extensionLambda.test b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/extensionLambda/extensionLambda.test new file mode 100644 index 00000000000..d134935d769 --- /dev/null +++ b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/extensionLambda/extensionLambda.test @@ -0,0 +1,5 @@ +{ + "rFile": "../../R.kt", + "resDirectory": "../../res", + "intentionClass": "org.jetbrains.kotlin.android.intention.KotlinAndroidAddStringResource" +} \ No newline at end of file diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/extensionLambda/main.kt b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/extensionLambda/main.kt similarity index 100% rename from idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/extensionLambda/main.kt rename to idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/extensionLambda/main.kt diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/function/expected/main.kt b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/function/expected/main.kt similarity index 100% rename from idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/function/expected/main.kt rename to idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/function/expected/main.kt diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/function/expected/res/values/strings.xml b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/function/expected/res/values/strings.xml similarity index 100% rename from idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/function/expected/res/values/strings.xml rename to idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/function/expected/res/values/strings.xml diff --git a/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/function/function.test b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/function/function.test new file mode 100644 index 00000000000..d134935d769 --- /dev/null +++ b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/function/function.test @@ -0,0 +1,5 @@ +{ + "rFile": "../../R.kt", + "resDirectory": "../../res", + "intentionClass": "org.jetbrains.kotlin.android.intention.KotlinAndroidAddStringResource" +} \ No newline at end of file diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/function/main.kt b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/function/main.kt similarity index 100% rename from idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/function/main.kt rename to idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/function/main.kt diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/genericContextExtensionFunction/expected/main.kt b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/genericContextExtensionFunction/expected/main.kt similarity index 100% rename from idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/genericContextExtensionFunction/expected/main.kt rename to idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/genericContextExtensionFunction/expected/main.kt diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/genericContextExtensionFunction/expected/res/values/strings.xml b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/genericContextExtensionFunction/expected/res/values/strings.xml similarity index 100% rename from idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/genericContextExtensionFunction/expected/res/values/strings.xml rename to idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/genericContextExtensionFunction/expected/res/values/strings.xml diff --git a/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/genericContextExtensionFunction/genericContextExtensionFunction.test b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/genericContextExtensionFunction/genericContextExtensionFunction.test new file mode 100644 index 00000000000..d134935d769 --- /dev/null +++ b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/genericContextExtensionFunction/genericContextExtensionFunction.test @@ -0,0 +1,5 @@ +{ + "rFile": "../../R.kt", + "resDirectory": "../../res", + "intentionClass": "org.jetbrains.kotlin.android.intention.KotlinAndroidAddStringResource" +} \ No newline at end of file diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/genericContextExtensionFunction/main.kt b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/genericContextExtensionFunction/main.kt similarity index 100% rename from idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/genericContextExtensionFunction/main.kt rename to idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/genericContextExtensionFunction/main.kt diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/innerClassInActivity/expected/main.kt b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/innerClassInActivity/expected/main.kt similarity index 100% rename from idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/innerClassInActivity/expected/main.kt rename to idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/innerClassInActivity/expected/main.kt diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/innerClassInActivity/expected/res/values/strings.xml b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/innerClassInActivity/expected/res/values/strings.xml similarity index 100% rename from idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/innerClassInActivity/expected/res/values/strings.xml rename to idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/innerClassInActivity/expected/res/values/strings.xml diff --git a/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/innerClassInActivity/innerClassInActivity.test b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/innerClassInActivity/innerClassInActivity.test new file mode 100644 index 00000000000..d134935d769 --- /dev/null +++ b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/innerClassInActivity/innerClassInActivity.test @@ -0,0 +1,5 @@ +{ + "rFile": "../../R.kt", + "resDirectory": "../../res", + "intentionClass": "org.jetbrains.kotlin.android.intention.KotlinAndroidAddStringResource" +} \ No newline at end of file diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/innerClassInActivity/main.kt b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/innerClassInActivity/main.kt similarity index 100% rename from idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/innerClassInActivity/main.kt rename to idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/innerClassInActivity/main.kt diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/innerViewInActivity/expected/main.kt b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/innerViewInActivity/expected/main.kt similarity index 100% rename from idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/innerViewInActivity/expected/main.kt rename to idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/innerViewInActivity/expected/main.kt diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/innerViewInActivity/expected/res/values/strings.xml b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/innerViewInActivity/expected/res/values/strings.xml similarity index 100% rename from idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/innerViewInActivity/expected/res/values/strings.xml rename to idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/innerViewInActivity/expected/res/values/strings.xml diff --git a/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/innerViewInActivity/innerViewInActivity.test b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/innerViewInActivity/innerViewInActivity.test new file mode 100644 index 00000000000..d134935d769 --- /dev/null +++ b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/innerViewInActivity/innerViewInActivity.test @@ -0,0 +1,5 @@ +{ + "rFile": "../../R.kt", + "resDirectory": "../../res", + "intentionClass": "org.jetbrains.kotlin.android.intention.KotlinAndroidAddStringResource" +} \ No newline at end of file diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/innerViewInActivity/main.kt b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/innerViewInActivity/main.kt similarity index 100% rename from idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/innerViewInActivity/main.kt rename to idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/innerViewInActivity/main.kt diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/objectInActivity/expected/main.kt b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/objectInActivity/expected/main.kt similarity index 100% rename from idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/objectInActivity/expected/main.kt rename to idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/objectInActivity/expected/main.kt diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/objectInActivity/expected/res/values/strings.xml b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/objectInActivity/expected/res/values/strings.xml similarity index 100% rename from idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/objectInActivity/expected/res/values/strings.xml rename to idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/objectInActivity/expected/res/values/strings.xml diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/objectInActivity/main.kt b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/objectInActivity/main.kt similarity index 100% rename from idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/objectInActivity/main.kt rename to idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/objectInActivity/main.kt diff --git a/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/objectInActivity/objectInActivity.test b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/objectInActivity/objectInActivity.test new file mode 100644 index 00000000000..d134935d769 --- /dev/null +++ b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/objectInActivity/objectInActivity.test @@ -0,0 +1,5 @@ +{ + "rFile": "../../R.kt", + "resDirectory": "../../res", + "intentionClass": "org.jetbrains.kotlin.android.intention.KotlinAndroidAddStringResource" +} \ No newline at end of file diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/objectInActivityMethod/expected/main.kt b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/objectInActivityMethod/expected/main.kt similarity index 100% rename from idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/objectInActivityMethod/expected/main.kt rename to idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/objectInActivityMethod/expected/main.kt diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/objectInActivityMethod/expected/res/values/strings.xml b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/objectInActivityMethod/expected/res/values/strings.xml similarity index 100% rename from idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/objectInActivityMethod/expected/res/values/strings.xml rename to idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/objectInActivityMethod/expected/res/values/strings.xml diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/objectInActivityMethod/main.kt b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/objectInActivityMethod/main.kt similarity index 100% rename from idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/objectInActivityMethod/main.kt rename to idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/objectInActivityMethod/main.kt diff --git a/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/objectInActivityMethod/objectInActivityMethod.test b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/objectInActivityMethod/objectInActivityMethod.test new file mode 100644 index 00000000000..d134935d769 --- /dev/null +++ b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/objectInActivityMethod/objectInActivityMethod.test @@ -0,0 +1,5 @@ +{ + "rFile": "../../R.kt", + "resDirectory": "../../res", + "intentionClass": "org.jetbrains.kotlin.android.intention.KotlinAndroidAddStringResource" +} \ No newline at end of file diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/objectInFunction/expected/main.kt b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/objectInFunction/expected/main.kt similarity index 100% rename from idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/objectInFunction/expected/main.kt rename to idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/objectInFunction/expected/main.kt diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/objectInFunction/expected/res/values/strings.xml b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/objectInFunction/expected/res/values/strings.xml similarity index 100% rename from idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/objectInFunction/expected/res/values/strings.xml rename to idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/objectInFunction/expected/res/values/strings.xml diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/objectInFunction/main.kt b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/objectInFunction/main.kt similarity index 100% rename from idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/objectInFunction/main.kt rename to idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/objectInFunction/main.kt diff --git a/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/objectInFunction/objectInFunction.test b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/objectInFunction/objectInFunction.test new file mode 100644 index 00000000000..d134935d769 --- /dev/null +++ b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/objectInFunction/objectInFunction.test @@ -0,0 +1,5 @@ +{ + "rFile": "../../R.kt", + "resDirectory": "../../res", + "intentionClass": "org.jetbrains.kotlin.android.intention.KotlinAndroidAddStringResource" +} \ No newline at end of file diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/stringTemplate/main.kt b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/stringTemplate/main.kt similarity index 100% rename from idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/stringTemplate/main.kt rename to idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/stringTemplate/main.kt diff --git a/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/stringTemplate/stringTemplate.test b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/stringTemplate/stringTemplate.test new file mode 100644 index 00000000000..774c4ef3d37 --- /dev/null +++ b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/stringTemplate/stringTemplate.test @@ -0,0 +1,4 @@ +{ + "intentionClass": "org.jetbrains.kotlin.android.intention.KotlinAndroidAddStringResource", + "isApplicable": false +} \ No newline at end of file diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/viewExtensionActivityMethod/expected/main.kt b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/viewExtensionActivityMethod/expected/main.kt similarity index 100% rename from idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/viewExtensionActivityMethod/expected/main.kt rename to idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/viewExtensionActivityMethod/expected/main.kt diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/viewExtensionActivityMethod/expected/res/values/strings.xml b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/viewExtensionActivityMethod/expected/res/values/strings.xml similarity index 100% rename from idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/viewExtensionActivityMethod/expected/res/values/strings.xml rename to idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/viewExtensionActivityMethod/expected/res/values/strings.xml diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/viewExtensionActivityMethod/main.kt b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/viewExtensionActivityMethod/main.kt similarity index 100% rename from idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/viewExtensionActivityMethod/main.kt rename to idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/viewExtensionActivityMethod/main.kt diff --git a/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/viewExtensionActivityMethod/viewExtensionActivityMethod.test b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/viewExtensionActivityMethod/viewExtensionActivityMethod.test new file mode 100644 index 00000000000..d134935d769 --- /dev/null +++ b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/viewExtensionActivityMethod/viewExtensionActivityMethod.test @@ -0,0 +1,5 @@ +{ + "rFile": "../../R.kt", + "resDirectory": "../../res", + "intentionClass": "org.jetbrains.kotlin.android.intention.KotlinAndroidAddStringResource" +} \ No newline at end of file diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/viewMethod/expected/main.kt b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/viewMethod/expected/main.kt similarity index 100% rename from idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/viewMethod/expected/main.kt rename to idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/viewMethod/expected/main.kt diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/viewMethod/expected/res/values/strings.xml b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/viewMethod/expected/res/values/strings.xml similarity index 100% rename from idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/viewMethod/expected/res/values/strings.xml rename to idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/viewMethod/expected/res/values/strings.xml diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/viewMethod/main.kt b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/viewMethod/main.kt similarity index 100% rename from idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/viewMethod/main.kt rename to idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/viewMethod/main.kt diff --git a/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/viewMethod/viewMethod.test b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/viewMethod/viewMethod.test new file mode 100644 index 00000000000..d134935d769 --- /dev/null +++ b/idea/testData/android/resourceIntention/kotlinAndroidAddStringResource/viewMethod/viewMethod.test @@ -0,0 +1,5 @@ +{ + "rFile": "../../R.kt", + "resDirectory": "../../res", + "intentionClass": "org.jetbrains.kotlin.android.intention.KotlinAndroidAddStringResource" +} \ No newline at end of file diff --git a/idea/testData/android/resourceIntentions/res/values/strings.xml b/idea/testData/android/resourceIntention/res/values/strings.xml similarity index 100% rename from idea/testData/android/resourceIntentions/res/values/strings.xml rename to idea/testData/android/resourceIntention/res/values/strings.xml diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/activityExtension/activityExtension.test b/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/activityExtension/activityExtension.test deleted file mode 100644 index 8d736982924..00000000000 --- a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/activityExtension/activityExtension.test +++ /dev/null @@ -1,5 +0,0 @@ -{ - "rFile": "../../R.kt", - "resDirectory": "../../res", - "intentionClass": "org.jetbrains.kotlin.android.intentions.KotlinAndroidAddStringResource" -} \ No newline at end of file diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/activityMethod/activityMethod.test b/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/activityMethod/activityMethod.test deleted file mode 100644 index 8d736982924..00000000000 --- a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/activityMethod/activityMethod.test +++ /dev/null @@ -1,5 +0,0 @@ -{ - "rFile": "../../R.kt", - "resDirectory": "../../res", - "intentionClass": "org.jetbrains.kotlin.android.intentions.KotlinAndroidAddStringResource" -} \ No newline at end of file diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/classInActivity/classInActivity.test b/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/classInActivity/classInActivity.test deleted file mode 100644 index 8d736982924..00000000000 --- a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/classInActivity/classInActivity.test +++ /dev/null @@ -1,5 +0,0 @@ -{ - "rFile": "../../R.kt", - "resDirectory": "../../res", - "intentionClass": "org.jetbrains.kotlin.android.intentions.KotlinAndroidAddStringResource" -} \ No newline at end of file diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/extensionLambda/extensionLambda.test b/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/extensionLambda/extensionLambda.test deleted file mode 100644 index 8d736982924..00000000000 --- a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/extensionLambda/extensionLambda.test +++ /dev/null @@ -1,5 +0,0 @@ -{ - "rFile": "../../R.kt", - "resDirectory": "../../res", - "intentionClass": "org.jetbrains.kotlin.android.intentions.KotlinAndroidAddStringResource" -} \ No newline at end of file diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/function/function.test b/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/function/function.test deleted file mode 100644 index 8d736982924..00000000000 --- a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/function/function.test +++ /dev/null @@ -1,5 +0,0 @@ -{ - "rFile": "../../R.kt", - "resDirectory": "../../res", - "intentionClass": "org.jetbrains.kotlin.android.intentions.KotlinAndroidAddStringResource" -} \ No newline at end of file diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/genericContextExtensionFunction/genericContextExtensionFunction.test b/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/genericContextExtensionFunction/genericContextExtensionFunction.test deleted file mode 100644 index 8d736982924..00000000000 --- a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/genericContextExtensionFunction/genericContextExtensionFunction.test +++ /dev/null @@ -1,5 +0,0 @@ -{ - "rFile": "../../R.kt", - "resDirectory": "../../res", - "intentionClass": "org.jetbrains.kotlin.android.intentions.KotlinAndroidAddStringResource" -} \ No newline at end of file diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/innerClassInActivity/innerClassInActivity.test b/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/innerClassInActivity/innerClassInActivity.test deleted file mode 100644 index 8d736982924..00000000000 --- a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/innerClassInActivity/innerClassInActivity.test +++ /dev/null @@ -1,5 +0,0 @@ -{ - "rFile": "../../R.kt", - "resDirectory": "../../res", - "intentionClass": "org.jetbrains.kotlin.android.intentions.KotlinAndroidAddStringResource" -} \ No newline at end of file diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/innerViewInActivity/innerViewInActivity.test b/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/innerViewInActivity/innerViewInActivity.test deleted file mode 100644 index 8d736982924..00000000000 --- a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/innerViewInActivity/innerViewInActivity.test +++ /dev/null @@ -1,5 +0,0 @@ -{ - "rFile": "../../R.kt", - "resDirectory": "../../res", - "intentionClass": "org.jetbrains.kotlin.android.intentions.KotlinAndroidAddStringResource" -} \ No newline at end of file diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/objectInActivity/objectInActivity.test b/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/objectInActivity/objectInActivity.test deleted file mode 100644 index 8d736982924..00000000000 --- a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/objectInActivity/objectInActivity.test +++ /dev/null @@ -1,5 +0,0 @@ -{ - "rFile": "../../R.kt", - "resDirectory": "../../res", - "intentionClass": "org.jetbrains.kotlin.android.intentions.KotlinAndroidAddStringResource" -} \ No newline at end of file diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/objectInActivityMethod/objectInActivityMethod.test b/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/objectInActivityMethod/objectInActivityMethod.test deleted file mode 100644 index 8d736982924..00000000000 --- a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/objectInActivityMethod/objectInActivityMethod.test +++ /dev/null @@ -1,5 +0,0 @@ -{ - "rFile": "../../R.kt", - "resDirectory": "../../res", - "intentionClass": "org.jetbrains.kotlin.android.intentions.KotlinAndroidAddStringResource" -} \ No newline at end of file diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/objectInFunction/objectInFunction.test b/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/objectInFunction/objectInFunction.test deleted file mode 100644 index 8d736982924..00000000000 --- a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/objectInFunction/objectInFunction.test +++ /dev/null @@ -1,5 +0,0 @@ -{ - "rFile": "../../R.kt", - "resDirectory": "../../res", - "intentionClass": "org.jetbrains.kotlin.android.intentions.KotlinAndroidAddStringResource" -} \ No newline at end of file diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/stringTemplate/stringTemplate.test b/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/stringTemplate/stringTemplate.test deleted file mode 100644 index caafa4f8945..00000000000 --- a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/stringTemplate/stringTemplate.test +++ /dev/null @@ -1,4 +0,0 @@ -{ - "intentionClass": "org.jetbrains.kotlin.android.intentions.KotlinAndroidAddStringResource", - "isApplicable": false -} \ No newline at end of file diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/viewExtensionActivityMethod/viewExtensionActivityMethod.test b/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/viewExtensionActivityMethod/viewExtensionActivityMethod.test deleted file mode 100644 index 8d736982924..00000000000 --- a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/viewExtensionActivityMethod/viewExtensionActivityMethod.test +++ /dev/null @@ -1,5 +0,0 @@ -{ - "rFile": "../../R.kt", - "resDirectory": "../../res", - "intentionClass": "org.jetbrains.kotlin.android.intentions.KotlinAndroidAddStringResource" -} \ No newline at end of file diff --git a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/viewMethod/viewMethod.test b/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/viewMethod/viewMethod.test deleted file mode 100644 index 8d736982924..00000000000 --- a/idea/testData/android/resourceIntentions/kotlinAndroidAddStringResource/viewMethod/viewMethod.test +++ /dev/null @@ -1,5 +0,0 @@ -{ - "rFile": "../../R.kt", - "resDirectory": "../../res", - "intentionClass": "org.jetbrains.kotlin.android.intentions.KotlinAndroidAddStringResource" -} \ No newline at end of file diff --git a/plugins/lint/lint-checks/src/com/android/tools/klint/checks/ApiDetector.java b/plugins/lint/lint-checks/src/com/android/tools/klint/checks/ApiDetector.java index 2ebcb04572c..241c6d85e0e 100644 --- a/plugins/lint/lint-checks/src/com/android/tools/klint/checks/ApiDetector.java +++ b/plugins/lint/lint-checks/src/com/android/tools/klint/checks/ApiDetector.java @@ -50,6 +50,8 @@ import org.w3c.dom.NodeList; import java.io.File; import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import static com.android.SdkConstants.*; import static com.android.tools.klint.detector.api.ClassContext.getFqcn; @@ -100,9 +102,9 @@ public class ApiDetector extends ResourceXmlDetector Severity.ERROR, new Implementation( ApiDetector.class, - EnumSet.of(Scope.CLASS_FILE, Scope.RESOURCE_FILE, Scope.MANIFEST), + EnumSet.of(Scope.JAVA_FILE, Scope.RESOURCE_FILE, Scope.MANIFEST), + Scope.JAVA_FILE_SCOPE, Scope.RESOURCE_FILE_SCOPE, - Scope.CLASS_FILE_SCOPE, Scope.MANIFEST_SCOPE)); /** Accessing an inlined API on older platforms */ @@ -873,6 +875,16 @@ public class ApiDetector extends ResourceXmlDetector return false; } + public static int getRequiredVersion(String errorMessage) { + Pattern pattern = Pattern.compile("\\s(\\d+)\\s"); + Matcher matcher = pattern.matcher(errorMessage); + if (matcher.find()) { + return Integer.parseInt(matcher.group(1)); + } + + return -1; + } + private final class ApiVisitor extends AbstractUastVisitor { private final JavaContext mContext; diff --git a/plugins/lint/lint-idea/lint-idea.iml b/plugins/lint/lint-idea/lint-idea.iml index fe3d0017a80..9089c2f83be 100644 --- a/plugins/lint/lint-idea/lint-idea.iml +++ b/plugins/lint/lint-idea/lint-idea.iml @@ -18,5 +18,6 @@ + \ No newline at end of file diff --git a/plugins/lint/lint-idea/src/org/jetbrains/android/inspections/klint/AddTargetApiQuickFix.kt b/plugins/lint/lint-idea/src/org/jetbrains/android/inspections/klint/AddTargetApiQuickFix.kt new file mode 100644 index 00000000000..16618a463bb --- /dev/null +++ b/plugins/lint/lint-idea/src/org/jetbrains/android/inspections/klint/AddTargetApiQuickFix.kt @@ -0,0 +1,86 @@ +/* + * Copyright 2010-2017 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.android.inspections.klint + +import com.android.SdkConstants +import com.android.tools.klint.checks.ApiDetector.REQUIRES_API_ANNOTATION +import com.intellij.codeInsight.FileModificationService +import com.intellij.psi.PsiElement +import com.intellij.psi.util.PsiTreeUtil +import org.jetbrains.android.util.AndroidBundle +import org.jetbrains.kotlin.idea.util.addAnnotation +import org.jetbrains.kotlin.name.FqName +import org.jetbrains.kotlin.psi.* + + +class AddTargetApiQuickFix( + val api: Int, + val useRequiresApi: Boolean +) : AndroidLintQuickFix { + + private companion object { + val FQNAME_TARGET_API = FqName(SdkConstants.FQCN_TARGET_API) + val FQNAME_REQUIRES_API = FqName(REQUIRES_API_ANNOTATION) + } + + override fun isApplicable(startElement: PsiElement, endElement: PsiElement, contextType: AndroidQuickfixContexts.ContextType): Boolean = + getAnnotationContainer(startElement, useRequiresApi) != null + + override fun getName(): String = getAnnotationValue(false).let { + if (useRequiresApi) { + // Not Available in Android plugin 2.0 + // AndroidBundle.message("android.lint.fix.add.requires.api", it) + "Add @RequiresApi($it) Annotation" + } else { + AndroidBundle.message("android.lint.fix.add.target.api", it) + } + } + + override fun apply(startElement: PsiElement, endElement: PsiElement, context: AndroidQuickfixContexts.Context) { + val annotationContainer = getAnnotationContainer(startElement, useRequiresApi) ?: return + if (!FileModificationService.getInstance().preparePsiElementForWrite(annotationContainer)) { + return + } + + if (annotationContainer is KtModifierListOwner) { + annotationContainer.addAnnotation( + if (useRequiresApi) FQNAME_REQUIRES_API else FQNAME_TARGET_API, + getAnnotationValue(true), + whiteSpaceText = "\n") + } + } + + private fun getAnnotationValue(fullyQualified: Boolean) = getVersionField(api, fullyQualified) + + private fun getAnnotationContainer(element: PsiElement, useRequiresApi: Boolean) = + PsiTreeUtil.findFirstParent(element) { + if (useRequiresApi) + it.isRequiresApiAnnotationValidTarget() + else + it.isTargetApiAnnotationValidTarget() + } + + + // TODO: KtFunctionLiteral is not supported now because addAnnotation fails to shorten references, investigate + private fun PsiElement.isRequiresApiAnnotationValidTarget() = this is KtClassOrObject || + (this is KtFunction && this !is KtFunctionLiteral) || + (this is KtProperty && !this.isLocal) + + // TODO: KtFunctionLiteral is not supported now because addAnnotation fails to shorten references, investigate + private fun PsiElement.isTargetApiAnnotationValidTarget() = this is KtClassOrObject || + (this is KtFunction && this !is KtFunctionLiteral) +} \ No newline at end of file diff --git a/plugins/lint/lint-idea/src/org/jetbrains/android/inspections/klint/AddTargetVersionCheckQuickFix.kt b/plugins/lint/lint-idea/src/org/jetbrains/android/inspections/klint/AddTargetVersionCheckQuickFix.kt new file mode 100644 index 00000000000..e38cfcba535 --- /dev/null +++ b/plugins/lint/lint-idea/src/org/jetbrains/android/inspections/klint/AddTargetVersionCheckQuickFix.kt @@ -0,0 +1,78 @@ +/* + * Copyright 2010-2017 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.android.inspections.klint + +import com.intellij.codeInsight.FileModificationService +import com.intellij.psi.PsiDocumentManager +import com.intellij.psi.PsiElement +import com.intellij.psi.util.PsiTreeUtil +import org.jetbrains.kotlin.idea.codeInsight.surroundWith.statement.KotlinIfSurrounder +import org.jetbrains.kotlin.idea.core.ShortenReferences +import org.jetbrains.kotlin.idea.inspections.findExistingEditor +import org.jetbrains.kotlin.psi.* + + +class AddTargetVersionCheckQuickFix(val api: Int) : AndroidLintQuickFix { + + companion object { + private val IF_SURROUNDER = KotlinIfSurrounder() + } + + override fun apply(startElement: PsiElement, endElement: PsiElement, context: AndroidQuickfixContexts.Context) { + val targetExpression = getTargetExpression(startElement) + val project = targetExpression?.project ?: return + val editor = targetExpression.findExistingEditor() ?: return + + val file = targetExpression.containingFile + val documentManager = PsiDocumentManager.getInstance(project) + val document = documentManager.getDocument(file) ?: return + + if (!FileModificationService.getInstance().prepareFileForWrite(file)) { + return + } + + val conditionRange = IF_SURROUNDER.surroundElements(project, editor, arrayOf(targetExpression)) ?: return + val conditionText = "android.os.Build.VERSION.SDK_INT >= ${getVersionField(api, true)}" + document.replaceString(conditionRange.startOffset, conditionRange.endOffset, conditionText) + documentManager.commitDocument(document) + + ShortenReferences.DEFAULT.process(documentManager.getPsiFile(document) as KtFile, + conditionRange.startOffset, + conditionRange.startOffset + conditionText.length) + } + + override fun isApplicable(startElement: PsiElement, endElement: PsiElement, contextType: AndroidQuickfixContexts.ContextType): Boolean = + getTargetExpression(startElement) != null + + override fun getName(): String = "Surround with if (VERSION.SDK_INT >= VERSION_CODES.${getVersionField(api, false)}) { ... }" + + // TODO: Delegated property, initializer, annotation parameter + private fun getTargetExpression(element: PsiElement): PsiElement? { + var current = PsiTreeUtil.getParentOfType(element, KtExpression::class.java) + while (current != null) { + if (current.parent is KtBlockExpression || + current.parent is KtContainerNode || + current.parent is KtWhenEntry || + current.parent is KtFunction) { + break + } + current = PsiTreeUtil.getParentOfType(current, KtExpression::class.java, true) + } + + return current + } +} \ No newline at end of file diff --git a/plugins/lint/lint-idea/src/org/jetbrains/android/inspections/klint/AndroidLintInspectionToolProvider.java b/plugins/lint/lint-idea/src/org/jetbrains/android/inspections/klint/AndroidLintInspectionToolProvider.java index 458a7db555b..60a38775eff 100644 --- a/plugins/lint/lint-idea/src/org/jetbrains/android/inspections/klint/AndroidLintInspectionToolProvider.java +++ b/plugins/lint/lint-idea/src/org/jetbrains/android/inspections/klint/AndroidLintInspectionToolProvider.java @@ -12,7 +12,68 @@ import com.android.sdklib.SdkVersionInfo; import com.android.tools.idea.actions.OverrideResourceAction; import com.android.tools.idea.templates.RepositoryUrlManager; import com.android.tools.klint.checks.*; +import com.android.tools.klint.checks.AddJavascriptInterfaceDetector; +import com.android.tools.klint.checks.AlarmDetector; +import com.android.tools.klint.checks.AllowAllHostnameVerifierDetector; +import com.android.tools.klint.checks.AlwaysShowActionDetector; +import com.android.tools.klint.checks.AndroidAutoDetector; +import com.android.tools.klint.checks.AnnotationDetector; +import com.android.tools.klint.checks.ApiDetector; +import com.android.tools.klint.checks.AppCompatCallDetector; +import com.android.tools.klint.checks.AppIndexingApiDetector; +import com.android.tools.klint.checks.BadHostnameVerifierDetector; +import com.android.tools.klint.checks.CallSuperDetector; +import com.android.tools.klint.checks.CipherGetInstanceDetector; +import com.android.tools.klint.checks.CleanupDetector; +import com.android.tools.klint.checks.CommentDetector; +import com.android.tools.klint.checks.CustomViewDetector; +import com.android.tools.klint.checks.CutPasteDetector; +import com.android.tools.klint.checks.DateFormatDetector; +import com.android.tools.klint.checks.FragmentDetector; +import com.android.tools.klint.checks.GetSignaturesDetector; +import com.android.tools.klint.checks.HandlerDetector; +import com.android.tools.klint.checks.IconDetector; +import com.android.tools.klint.checks.JavaPerformanceDetector; +import com.android.tools.klint.checks.JavaScriptInterfaceDetector; +import com.android.tools.klint.checks.LayoutConsistencyDetector; +import com.android.tools.klint.checks.LayoutInflationDetector; +import com.android.tools.klint.checks.LocaleDetector; +import com.android.tools.klint.checks.LogDetector; +import com.android.tools.klint.checks.MathDetector; +import com.android.tools.klint.checks.MergeRootFrameLayoutDetector; +import com.android.tools.klint.checks.NonInternationalizedSmsDetector; +import com.android.tools.klint.checks.OverdrawDetector; +import com.android.tools.klint.checks.OverrideConcreteDetector; +import com.android.tools.klint.checks.ParcelDetector; +import com.android.tools.klint.checks.PreferenceActivityDetector; +import com.android.tools.klint.checks.PrivateResourceDetector; +import com.android.tools.klint.checks.ReadParcelableDetector; +import com.android.tools.klint.checks.RecyclerViewDetector; +import com.android.tools.klint.checks.RegistrationDetector; +import com.android.tools.klint.checks.RequiredAttributeDetector; +import com.android.tools.klint.checks.RtlDetector; +import com.android.tools.klint.checks.SQLiteDetector; +import com.android.tools.klint.checks.SdCardDetector; +import com.android.tools.klint.checks.SecureRandomDetector; +import com.android.tools.klint.checks.SecurityDetector; +import com.android.tools.klint.checks.ServiceCastDetector; +import com.android.tools.klint.checks.SetJavaScriptEnabledDetector; +import com.android.tools.klint.checks.SetTextDetector; +import com.android.tools.klint.checks.SslCertificateSocketFactoryDetector; +import com.android.tools.klint.checks.StringFormatDetector; +import com.android.tools.klint.checks.ToastDetector; +import com.android.tools.klint.checks.TrustAllX509TrustManagerDetector; +import com.android.tools.klint.checks.UnsafeBroadcastReceiverDetector; +import com.android.tools.klint.checks.UnsafeNativeCodeDetector; +import com.android.tools.klint.checks.ViewConstructorDetector; +import com.android.tools.klint.checks.ViewHolderDetector; +import com.android.tools.klint.checks.ViewTagDetector; +import com.android.tools.klint.checks.ViewTypeDetector; +import com.android.tools.klint.checks.WrongCallDetector; +import com.android.tools.klint.checks.WrongImportDetector; import com.android.tools.klint.detector.api.Issue; +import com.android.tools.lint.checks.*; +import com.android.tools.lint.detector.api.TextFormat; import com.google.common.collect.Lists; import com.intellij.codeInsight.intention.IntentionAction; import com.intellij.openapi.application.ApplicationManager; @@ -410,6 +471,28 @@ public class AndroidLintInspectionToolProvider { super(AndroidBundle.message("android.lint.inspections.new.api"), ApiDetector.UNSUPPORTED); } + @NotNull + @Override + public AndroidLintQuickFix[] getQuickFixes(@NotNull PsiElement startElement, @NotNull PsiElement endElement, @NotNull String message) { + int api = ApiDetector.getRequiredVersion(TextFormat.RAW.toText(message)); + if (api == -1) { + return AndroidLintQuickFix.EMPTY_ARRAY; + } + + Project project = startElement.getProject(); + if (JavaPsiFacade.getInstance(project).findClass(REQUIRES_API_ANNOTATION, GlobalSearchScope.allScope(project)) != null) { + return new AndroidLintQuickFix[] { + new AddTargetApiQuickFix(api, true), + new AddTargetApiQuickFix(api, false), + new AddTargetVersionCheckQuickFix(api) + }; + } + + return new AndroidLintQuickFix[] { + new AddTargetApiQuickFix(api, false), + new AddTargetVersionCheckQuickFix(api) + }; + } } public static class AndroidKLintInlinedApiInspection extends AndroidLintInspectionBase { diff --git a/plugins/lint/lint-idea/src/org/jetbrains/android/inspections/klint/ApiUtils.kt b/plugins/lint/lint-idea/src/org/jetbrains/android/inspections/klint/ApiUtils.kt new file mode 100644 index 00000000000..e3509d2c9cf --- /dev/null +++ b/plugins/lint/lint-idea/src/org/jetbrains/android/inspections/klint/ApiUtils.kt @@ -0,0 +1,24 @@ +/* + * Copyright 2010-2017 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.android.inspections.klint + +import com.android.sdklib.SdkVersionInfo + + +fun getVersionField(api: Int, fullyQualified: Boolean): String = SdkVersionInfo.getBuildCode(api)?.let { + if (fullyQualified) "android.os.Build.VERSION_CODES.$it" else it +} ?: api.toString() \ No newline at end of file