diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/FirUtils.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/FirUtils.kt index be47a590023..1efd3760254 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/FirUtils.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/FirUtils.kt @@ -47,6 +47,10 @@ internal fun FirNamedReference.getCandidateSymbols(): Collection> = when (this) { + is ConeHiddenCandidateError -> { + // Candidate with @Deprecated(DeprecationLevel.HIDDEN) + emptyList() + } is ConeDiagnosticWithCandidates -> candidateSymbols else -> emptyList() } \ No newline at end of file diff --git a/analysis/analysis-api-fir/tests/org/jetbrains/kotlin/analysis/api/fir/ReferenceResolveTestGenerated.java b/analysis/analysis-api-fir/tests/org/jetbrains/kotlin/analysis/api/fir/ReferenceResolveTestGenerated.java index 303378e41c9..36c696f6829 100644 --- a/analysis/analysis-api-fir/tests/org/jetbrains/kotlin/analysis/api/fir/ReferenceResolveTestGenerated.java +++ b/analysis/analysis-api-fir/tests/org/jetbrains/kotlin/analysis/api/fir/ReferenceResolveTestGenerated.java @@ -150,6 +150,18 @@ public class ReferenceResolveTestGenerated extends AbstractReferenceResolveTest runTest("analysis/analysis-api/testData/referenceResolve/DefaultObjectInShortReferenceFormCall.kt"); } + @Test + @TestMetadata("Deprecated.kt") + public void testDeprecated() throws Exception { + runTest("analysis/analysis-api/testData/referenceResolve/Deprecated.kt"); + } + + @Test + @TestMetadata("DeprecatedHidden.kt") + public void testDeprecatedHidden() throws Exception { + runTest("analysis/analysis-api/testData/referenceResolve/DeprecatedHidden.kt"); + } + @Test @TestMetadata("EnumValues.kt") public void testEnumValues() throws Exception { @@ -270,6 +282,12 @@ public class ReferenceResolveTestGenerated extends AbstractReferenceResolveTest runTest("analysis/analysis-api/testData/referenceResolve/InVaragReferenceInNamedParameter.kt"); } + @Test + @TestMetadata("InvisibleMember.kt") + public void testInvisibleMember() throws Exception { + runTest("analysis/analysis-api/testData/referenceResolve/InvisibleMember.kt"); + } + @Test @TestMetadata("JavaAnnotationParameter.kt") public void testJavaAnnotationParameter() throws Exception { diff --git a/analysis/analysis-api/testData/referenceResolve/Deprecated.kt b/analysis/analysis-api/testData/referenceResolve/Deprecated.kt new file mode 100644 index 00000000000..6855b54def3 --- /dev/null +++ b/analysis/analysis-api/testData/referenceResolve/Deprecated.kt @@ -0,0 +1,6 @@ +@Deprecated("don't use i") +val i: Int = 1 + +fun test() { + i +} diff --git a/analysis/analysis-api/testData/referenceResolve/Deprecated.txt b/analysis/analysis-api/testData/referenceResolve/Deprecated.txt new file mode 100644 index 00000000000..dfbf39bc38b --- /dev/null +++ b/analysis/analysis-api/testData/referenceResolve/Deprecated.txt @@ -0,0 +1,2 @@ +Resolved to: +0: (in ROOT) val i: kotlin.Int diff --git a/analysis/analysis-api/testData/referenceResolve/DeprecatedHidden.kt b/analysis/analysis-api/testData/referenceResolve/DeprecatedHidden.kt new file mode 100644 index 00000000000..bf1904a3900 --- /dev/null +++ b/analysis/analysis-api/testData/referenceResolve/DeprecatedHidden.kt @@ -0,0 +1,8 @@ +// UNRESOLVED_REFERENCE + +@Deprecated("don't use i", level = DeprecationLevel.HIDDEN) +val i: Int = 1 + +fun test() { + i +} diff --git a/analysis/analysis-api/testData/referenceResolve/InvisibleMember.kt b/analysis/analysis-api/testData/referenceResolve/InvisibleMember.kt new file mode 100644 index 00000000000..0a6d8f0c20b --- /dev/null +++ b/analysis/analysis-api/testData/referenceResolve/InvisibleMember.kt @@ -0,0 +1,7 @@ +class A { + private val i: Int = 1 +} + +fun test(a: A) { + a.i +} diff --git a/analysis/analysis-api/testData/referenceResolve/InvisibleMember.txt b/analysis/analysis-api/testData/referenceResolve/InvisibleMember.txt new file mode 100644 index 00000000000..9f796ceaeec --- /dev/null +++ b/analysis/analysis-api/testData/referenceResolve/InvisibleMember.txt @@ -0,0 +1,2 @@ +Resolved to: +0: (in A) private val i: kotlin.Int