[Analysis API] add diagnostic test for compiler annotation with argument from another module

^KT-63547
This commit is contained in:
Dmitrii Gridin
2023-12-19 14:39:31 +01:00
committed by Space Team
parent acf3f2a3a1
commit 4bd73e4ccd
7 changed files with 75 additions and 3 deletions
@@ -46,6 +46,12 @@ public class Fe10IdeNormalAnalysisSourceModuleCollectDiagnosticsTestGenerated ex
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/components/diagnosticsProvider/diagnostics"), Pattern.compile("^(.+)\\.kt$"), null, true);
}
@Test
@TestMetadata("annotationWithEnumFromDuplicatedLibrary.kt")
public void testAnnotationWithEnumFromDuplicatedLibrary() throws Exception {
runTest("analysis/analysis-api/testData/components/diagnosticsProvider/diagnostics/annotationWithEnumFromDuplicatedLibrary.kt");
}
@Test
@TestMetadata("declarationErrors.kt")
public void testDeclarationErrors() throws Exception {
@@ -46,6 +46,12 @@ public class FirIdeNormalAnalysisSourceModuleCollectDiagnosticsTestGenerated ext
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/components/diagnosticsProvider/diagnostics"), Pattern.compile("^(.+)\\.kt$"), null, true);
}
@Test
@TestMetadata("annotationWithEnumFromDuplicatedLibrary.kt")
public void testAnnotationWithEnumFromDuplicatedLibrary() throws Exception {
runTest("analysis/analysis-api/testData/components/diagnosticsProvider/diagnostics/annotationWithEnumFromDuplicatedLibrary.kt");
}
@Test
@TestMetadata("declarationErrors.kt")
public void testDeclarationErrors() throws Exception {
@@ -9,7 +9,8 @@ import com.intellij.openapi.util.TextRange
import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.analysis.api.components.KtDiagnosticCheckerFilter
import org.jetbrains.kotlin.analysis.api.diagnostics.KtDiagnosticWithPsi
import org.jetbrains.kotlin.analysis.test.framework.base.AbstractAnalysisApiSingleFileTest
import org.jetbrains.kotlin.analysis.test.framework.base.AbstractAnalysisApiBasedTest
import org.jetbrains.kotlin.analysis.test.framework.project.structure.ktModuleProvider
import org.jetbrains.kotlin.diagnostics.DiagnosticUtils.getLineAndColumnRangeInPsiFile
import org.jetbrains.kotlin.diagnostics.PsiDiagnosticUtils.offsetToLineAndColumn
import org.jetbrains.kotlin.psi.KtElement
@@ -17,12 +18,19 @@ import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.psi.KtTreeVisitorVoid
import org.jetbrains.kotlin.psi.psiUtil.startOffset
import org.jetbrains.kotlin.test.model.TestModule
import org.jetbrains.kotlin.test.services.TestModuleStructure
import org.jetbrains.kotlin.test.services.TestServices
import org.jetbrains.kotlin.test.services.assertions
import kotlin.test.assertEquals
abstract class AbstractCollectDiagnosticsTest : AbstractAnalysisApiSingleFileTest() {
override fun doTestByFileStructure(ktFile: KtFile, module: TestModule, testServices: TestServices) {
abstract class AbstractCollectDiagnosticsTest : AbstractAnalysisApiBasedTest() {
override fun doTestByModuleStructure(moduleStructure: TestModuleStructure, testServices: TestServices) {
val lastModule = moduleStructure.modules.last()
val firstKtFileFile = testServices.ktModuleProvider.getModuleFiles(lastModule).firstNotNullOf { it as? KtFile }
doTestByFileStructure(firstKtFileFile, lastModule, testServices)
}
open fun doTestByFileStructure(ktFile: KtFile, module: TestModule, testServices: TestServices) {
fun TextRange.asLineColumnRange(): String {
return getLineAndColumnRangeInPsiFile(ktFile, this).toString()
}
@@ -46,6 +46,12 @@ public class FirStandaloneNormalAnalysisSourceModuleCollectDiagnosticsTestGenera
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/components/diagnosticsProvider/diagnostics"), Pattern.compile("^(.+)\\.kt$"), null, true);
}
@Test
@TestMetadata("annotationWithEnumFromDuplicatedLibrary.kt")
public void testAnnotationWithEnumFromDuplicatedLibrary() throws Exception {
runTest("analysis/analysis-api/testData/components/diagnosticsProvider/diagnostics/annotationWithEnumFromDuplicatedLibrary.kt");
}
@Test
@TestMetadata("declarationErrors.kt")
public void testDeclarationErrors() throws Exception {
@@ -0,0 +1,7 @@
Diagnostics from elements:
for PSI element of type KtConstructorCalleeExpression at (34,2-12)
NO_VALUE_FOR_PARAMETER text ranges: [(115,125)]
PSI: KtConstructorCalleeExpression at (34,2-12)
for PSI element of type KtNameReferenceExpression at (32,8-10)
UNRESOLVED_REFERENCE text ranges: [(94,96)]
PSI: KtNameReferenceExpression at (32,8-10)
@@ -0,0 +1,35 @@
// ALLOW_KOTLIN_PACKAGE
// DISABLE_SEALED_INHERITOR_CALCULATOR
// MODULE: lib1
// FILE: anno.kt
package kotlin.annotation
public enum class AnnotationTarget {
CLASS;
}
// MODULE: dep(lib1)
// FILE: annotation.kt
package my.pack
import kotlin.annotation.AnnotationTarget
@Target(AnnotationTarget.CLASS)
annotation class Deprecated
// MODULE: lib2
// FILE: anno.kt
package kotlin.annotation
public enum class AnnotationTarget {
CLASS;
}
// MODULE: main(lib2, dep)
// FILE: usage.kt
package usage
import my.pack.Deprecated
@Deprecated
class Usage
@@ -0,0 +1,4 @@
Diagnostics from elements:
for PSI element of type KtAnnotationEntry at (34,1-12)
WRONG_ANNOTATION_TARGET text ranges: [(114,125)]
PSI: KtAnnotationEntry at (34,1-12)