K2: Introduce new FIR node kind FirFromMissingDependenciesNamedReference
The basic idea is that during deserialization/loading compiled Java classes, there might be some of the dependencies absent that are referenced from enum arguments in annotations. Such situation is not considered as totally ill-formed, thus supporting it, allowing to read the names of mentioned in the annotation argument might be useful for Java enhancement ^KT-56656 In Progress
This commit is contained in:
committed by
Space Team
parent
157c260fda
commit
955b8e1490
+27
@@ -0,0 +1,27 @@
|
||||
/*
|
||||
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.fir.references
|
||||
|
||||
import org.jetbrains.kotlin.KtSourceElement
|
||||
import org.jetbrains.kotlin.fir.FirElement
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.fir.visitors.*
|
||||
|
||||
/*
|
||||
* This file was generated automatically
|
||||
* DO NOT MODIFY IT MANUALLY
|
||||
*/
|
||||
|
||||
abstract class FirFromMissingDependenciesNamedReference : FirNamedReference() {
|
||||
abstract override val source: KtSourceElement?
|
||||
abstract override val name: Name
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitFromMissingDependenciesNamedReference(this, data)
|
||||
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
override fun <E : FirElement, D> transform(transformer: FirTransformer<D>, data: D): E =
|
||||
transformer.transformFromMissingDependenciesNamedReference(this, data) as E
|
||||
}
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
/*
|
||||
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
@file:Suppress("DuplicatedCode")
|
||||
|
||||
package org.jetbrains.kotlin.fir.references.builder
|
||||
|
||||
import kotlin.contracts.*
|
||||
import org.jetbrains.kotlin.KtSourceElement
|
||||
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
|
||||
import org.jetbrains.kotlin.fir.references.FirFromMissingDependenciesNamedReference
|
||||
import org.jetbrains.kotlin.fir.references.impl.FirFromMissingDependenciesNamedReferenceImpl
|
||||
import org.jetbrains.kotlin.fir.visitors.*
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
/*
|
||||
* This file was generated automatically
|
||||
* DO NOT MODIFY IT MANUALLY
|
||||
*/
|
||||
|
||||
@FirBuilderDsl
|
||||
class FirFromMissingDependenciesNamedReferenceBuilder {
|
||||
var source: KtSourceElement? = null
|
||||
lateinit var name: Name
|
||||
|
||||
fun build(): FirFromMissingDependenciesNamedReference {
|
||||
return FirFromMissingDependenciesNamedReferenceImpl(
|
||||
source,
|
||||
name,
|
||||
)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalContracts::class)
|
||||
inline fun buildFromMissingDependenciesNamedReference(init: FirFromMissingDependenciesNamedReferenceBuilder.() -> Unit): FirFromMissingDependenciesNamedReference {
|
||||
contract {
|
||||
callsInPlace(init, kotlin.contracts.InvocationKind.EXACTLY_ONCE)
|
||||
}
|
||||
return FirFromMissingDependenciesNamedReferenceBuilder().apply(init).build()
|
||||
}
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
/*
|
||||
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
@file:Suppress("DuplicatedCode")
|
||||
|
||||
package org.jetbrains.kotlin.fir.references.impl
|
||||
|
||||
import org.jetbrains.kotlin.KtSourceElement
|
||||
import org.jetbrains.kotlin.fir.references.FirFromMissingDependenciesNamedReference
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.fir.visitors.*
|
||||
|
||||
/*
|
||||
* This file was generated automatically
|
||||
* DO NOT MODIFY IT MANUALLY
|
||||
*/
|
||||
|
||||
internal class FirFromMissingDependenciesNamedReferenceImpl(
|
||||
override val source: KtSourceElement?,
|
||||
override val name: Name,
|
||||
) : FirFromMissingDependenciesNamedReference() {
|
||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {}
|
||||
|
||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirFromMissingDependenciesNamedReferenceImpl {
|
||||
return this
|
||||
}
|
||||
}
|
||||
@@ -129,6 +129,7 @@ import org.jetbrains.kotlin.fir.expressions.FirWrappedDelegateExpression
|
||||
import org.jetbrains.kotlin.fir.references.FirNamedReference
|
||||
import org.jetbrains.kotlin.fir.references.FirNamedReferenceWithCandidateBase
|
||||
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
|
||||
import org.jetbrains.kotlin.fir.references.FirFromMissingDependenciesNamedReference
|
||||
import org.jetbrains.kotlin.fir.references.FirSuperReference
|
||||
import org.jetbrains.kotlin.fir.references.FirThisReference
|
||||
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
||||
@@ -271,6 +272,8 @@ abstract class FirDefaultVisitor<out R, in D> : FirVisitor<R, D>() {
|
||||
|
||||
override fun visitNamedReferenceWithCandidateBase(namedReferenceWithCandidateBase: FirNamedReferenceWithCandidateBase, data: D): R = visitNamedReference(namedReferenceWithCandidateBase, data)
|
||||
|
||||
override fun visitFromMissingDependenciesNamedReference(fromMissingDependenciesNamedReference: FirFromMissingDependenciesNamedReference, data: D): R = visitNamedReference(fromMissingDependenciesNamedReference, data)
|
||||
|
||||
override fun visitSuperReference(superReference: FirSuperReference, data: D): R = visitReference(superReference, data)
|
||||
|
||||
override fun visitThisReference(thisReference: FirThisReference, data: D): R = visitReference(thisReference, data)
|
||||
|
||||
@@ -129,6 +129,7 @@ import org.jetbrains.kotlin.fir.expressions.FirWrappedDelegateExpression
|
||||
import org.jetbrains.kotlin.fir.references.FirNamedReference
|
||||
import org.jetbrains.kotlin.fir.references.FirNamedReferenceWithCandidateBase
|
||||
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
|
||||
import org.jetbrains.kotlin.fir.references.FirFromMissingDependenciesNamedReference
|
||||
import org.jetbrains.kotlin.fir.references.FirSuperReference
|
||||
import org.jetbrains.kotlin.fir.references.FirThisReference
|
||||
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
||||
@@ -271,6 +272,8 @@ abstract class FirDefaultVisitorVoid : FirVisitorVoid() {
|
||||
|
||||
override fun visitNamedReferenceWithCandidateBase(namedReferenceWithCandidateBase: FirNamedReferenceWithCandidateBase) = visitNamedReference(namedReferenceWithCandidateBase)
|
||||
|
||||
override fun visitFromMissingDependenciesNamedReference(fromMissingDependenciesNamedReference: FirFromMissingDependenciesNamedReference) = visitNamedReference(fromMissingDependenciesNamedReference)
|
||||
|
||||
override fun visitSuperReference(superReference: FirSuperReference) = visitReference(superReference)
|
||||
|
||||
override fun visitThisReference(thisReference: FirThisReference) = visitReference(thisReference)
|
||||
|
||||
@@ -129,6 +129,7 @@ import org.jetbrains.kotlin.fir.expressions.FirWrappedDelegateExpression
|
||||
import org.jetbrains.kotlin.fir.references.FirNamedReference
|
||||
import org.jetbrains.kotlin.fir.references.FirNamedReferenceWithCandidateBase
|
||||
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
|
||||
import org.jetbrains.kotlin.fir.references.FirFromMissingDependenciesNamedReference
|
||||
import org.jetbrains.kotlin.fir.references.FirSuperReference
|
||||
import org.jetbrains.kotlin.fir.references.FirThisReference
|
||||
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
||||
@@ -652,6 +653,10 @@ abstract class FirTransformer<in D> : FirVisitor<FirElement, D>() {
|
||||
return transformElement(errorNamedReference, data)
|
||||
}
|
||||
|
||||
open fun transformFromMissingDependenciesNamedReference(fromMissingDependenciesNamedReference: FirFromMissingDependenciesNamedReference, data: D): FirReference {
|
||||
return transformElement(fromMissingDependenciesNamedReference, data)
|
||||
}
|
||||
|
||||
open fun transformSuperReference(superReference: FirSuperReference, data: D): FirReference {
|
||||
return transformElement(superReference, data)
|
||||
}
|
||||
@@ -1232,6 +1237,10 @@ abstract class FirTransformer<in D> : FirVisitor<FirElement, D>() {
|
||||
return transformErrorNamedReference(errorNamedReference, data)
|
||||
}
|
||||
|
||||
final override fun visitFromMissingDependenciesNamedReference(fromMissingDependenciesNamedReference: FirFromMissingDependenciesNamedReference, data: D): FirReference {
|
||||
return transformFromMissingDependenciesNamedReference(fromMissingDependenciesNamedReference, data)
|
||||
}
|
||||
|
||||
final override fun visitSuperReference(superReference: FirSuperReference, data: D): FirReference {
|
||||
return transformSuperReference(superReference, data)
|
||||
}
|
||||
|
||||
@@ -129,6 +129,7 @@ import org.jetbrains.kotlin.fir.expressions.FirWrappedDelegateExpression
|
||||
import org.jetbrains.kotlin.fir.references.FirNamedReference
|
||||
import org.jetbrains.kotlin.fir.references.FirNamedReferenceWithCandidateBase
|
||||
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
|
||||
import org.jetbrains.kotlin.fir.references.FirFromMissingDependenciesNamedReference
|
||||
import org.jetbrains.kotlin.fir.references.FirSuperReference
|
||||
import org.jetbrains.kotlin.fir.references.FirThisReference
|
||||
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
||||
@@ -405,6 +406,8 @@ abstract class FirVisitor<out R, in D> {
|
||||
|
||||
open fun visitErrorNamedReference(errorNamedReference: FirErrorNamedReference, data: D): R = visitElement(errorNamedReference, data)
|
||||
|
||||
open fun visitFromMissingDependenciesNamedReference(fromMissingDependenciesNamedReference: FirFromMissingDependenciesNamedReference, data: D): R = visitElement(fromMissingDependenciesNamedReference, data)
|
||||
|
||||
open fun visitSuperReference(superReference: FirSuperReference, data: D): R = visitElement(superReference, data)
|
||||
|
||||
open fun visitThisReference(thisReference: FirThisReference, data: D): R = visitElement(thisReference, data)
|
||||
|
||||
@@ -129,6 +129,7 @@ import org.jetbrains.kotlin.fir.expressions.FirWrappedDelegateExpression
|
||||
import org.jetbrains.kotlin.fir.references.FirNamedReference
|
||||
import org.jetbrains.kotlin.fir.references.FirNamedReferenceWithCandidateBase
|
||||
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
|
||||
import org.jetbrains.kotlin.fir.references.FirFromMissingDependenciesNamedReference
|
||||
import org.jetbrains.kotlin.fir.references.FirSuperReference
|
||||
import org.jetbrains.kotlin.fir.references.FirThisReference
|
||||
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
||||
@@ -651,6 +652,10 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
||||
visitElement(errorNamedReference)
|
||||
}
|
||||
|
||||
open fun visitFromMissingDependenciesNamedReference(fromMissingDependenciesNamedReference: FirFromMissingDependenciesNamedReference) {
|
||||
visitElement(fromMissingDependenciesNamedReference)
|
||||
}
|
||||
|
||||
open fun visitSuperReference(superReference: FirSuperReference) {
|
||||
visitElement(superReference)
|
||||
}
|
||||
@@ -1231,6 +1236,10 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
||||
visitErrorNamedReference(errorNamedReference)
|
||||
}
|
||||
|
||||
final override fun visitFromMissingDependenciesNamedReference(fromMissingDependenciesNamedReference: FirFromMissingDependenciesNamedReference, data: Nothing?) {
|
||||
visitFromMissingDependenciesNamedReference(fromMissingDependenciesNamedReference)
|
||||
}
|
||||
|
||||
final override fun visitSuperReference(superReference: FirSuperReference, data: Nothing?) {
|
||||
visitSuperReference(superReference)
|
||||
}
|
||||
|
||||
+1
@@ -156,6 +156,7 @@ object FirTreeBuilder : AbstractFirTreeBuilder() {
|
||||
val namedReference by element(Reference, reference)
|
||||
val namedReferenceWithCandidateBase by element(Reference, namedReference)
|
||||
val errorNamedReference by element(Reference, namedReference, diagnosticHolder)
|
||||
val fromMissingDependenciesNamedReference by element(Reference, namedReference)
|
||||
val superReference by element(Reference, reference)
|
||||
val thisReference by element(Reference, reference)
|
||||
val controlFlowGraphReference by element(Reference, reference)
|
||||
|
||||
+2
-2
@@ -499,6 +499,8 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator()
|
||||
default("name", "Name.special(\"<\${diagnostic.reason}>\")")
|
||||
}
|
||||
|
||||
impl(fromMissingDependenciesNamedReference)
|
||||
|
||||
impl(breakExpression) {
|
||||
defaultTypeRefWithSource("FirImplicitNothingTypeRef")
|
||||
useTypes(implicitNothingTypeRefType)
|
||||
@@ -650,5 +652,3 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user