backend: move some JVM lowering to common
This commit is contained in:
@@ -18,6 +18,7 @@ package org.jetbrains.kotlin.backend.common
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.ir.IrElement
|
import org.jetbrains.kotlin.ir.IrElement
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrClass
|
import org.jetbrains.kotlin.ir.declarations.IrClass
|
||||||
|
import org.jetbrains.kotlin.ir.declarations.IrDeclarationContainer
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrFile
|
import org.jetbrains.kotlin.ir.declarations.IrFile
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrFunction
|
import org.jetbrains.kotlin.ir.declarations.IrFunction
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrBody
|
import org.jetbrains.kotlin.ir.expressions.IrBody
|
||||||
@@ -33,6 +34,10 @@ interface ClassLoweringPass {
|
|||||||
fun lower(irClass: IrClass)
|
fun lower(irClass: IrClass)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface DeclarationContainerLoweringPass {
|
||||||
|
fun lower(irDeclarationContainer: IrDeclarationContainer)
|
||||||
|
}
|
||||||
|
|
||||||
interface FunctionLoweringPass {
|
interface FunctionLoweringPass {
|
||||||
fun lower(irFunction: IrFunction)
|
fun lower(irFunction: IrFunction)
|
||||||
}
|
}
|
||||||
@@ -54,6 +59,17 @@ fun ClassLoweringPass.runOnFilePostfix(irFile: IrFile) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun DeclarationContainerLoweringPass.asClassLoweringPass() = object : ClassLoweringPass {
|
||||||
|
override fun lower(irClass: IrClass) {
|
||||||
|
this@asClassLoweringPass.lower(irClass)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun DeclarationContainerLoweringPass.runOnFilePostfix(irFile: IrFile) {
|
||||||
|
this.asClassLoweringPass().runOnFilePostfix(irFile)
|
||||||
|
this.lower(irFile)
|
||||||
|
}
|
||||||
|
|
||||||
fun BodyLoweringPass.runOnFilePostfix(irFile: IrFile) {
|
fun BodyLoweringPass.runOnFilePostfix(irFile: IrFile) {
|
||||||
irFile.acceptVoid(object : IrElementVisitorVoid {
|
irFile.acceptVoid(object : IrElementVisitorVoid {
|
||||||
override fun visitElement(element: IrElement) {
|
override fun visitElement(element: IrElement) {
|
||||||
|
|||||||
+7
-6
@@ -14,12 +14,12 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.jetbrains.kotlin.backend.jvm.lower
|
package org.jetbrains.kotlin.backend.common.lower
|
||||||
|
|
||||||
import org.jetbrains.kotlin.backend.common.AbstractClosureAnnotator
|
import org.jetbrains.kotlin.backend.common.AbstractClosureAnnotator
|
||||||
import org.jetbrains.kotlin.backend.common.ClassLoweringPass
|
import org.jetbrains.kotlin.backend.common.BackendContext
|
||||||
import org.jetbrains.kotlin.backend.common.Closure
|
import org.jetbrains.kotlin.backend.common.Closure
|
||||||
import org.jetbrains.kotlin.backend.jvm.JvmBackendContext
|
import org.jetbrains.kotlin.backend.common.DeclarationContainerLoweringPass
|
||||||
import org.jetbrains.kotlin.descriptors.*
|
import org.jetbrains.kotlin.descriptors.*
|
||||||
import org.jetbrains.kotlin.descriptors.impl.SimpleFunctionDescriptorImpl
|
import org.jetbrains.kotlin.descriptors.impl.SimpleFunctionDescriptorImpl
|
||||||
import org.jetbrains.kotlin.descriptors.impl.ValueParameterDescriptorImpl
|
import org.jetbrains.kotlin.descriptors.impl.ValueParameterDescriptorImpl
|
||||||
@@ -27,6 +27,7 @@ import org.jetbrains.kotlin.ir.IrElement
|
|||||||
import org.jetbrains.kotlin.ir.IrStatement
|
import org.jetbrains.kotlin.ir.IrStatement
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrClass
|
import org.jetbrains.kotlin.ir.declarations.IrClass
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrDeclaration
|
import org.jetbrains.kotlin.ir.declarations.IrDeclaration
|
||||||
|
import org.jetbrains.kotlin.ir.declarations.IrDeclarationContainer
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrFunction
|
import org.jetbrains.kotlin.ir.declarations.IrFunction
|
||||||
import org.jetbrains.kotlin.ir.declarations.impl.IrFunctionImpl
|
import org.jetbrains.kotlin.ir.declarations.impl.IrFunctionImpl
|
||||||
import org.jetbrains.kotlin.ir.expressions.*
|
import org.jetbrains.kotlin.ir.expressions.*
|
||||||
@@ -42,9 +43,9 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.parentsWithSelf
|
|||||||
import org.jetbrains.kotlin.types.KotlinType
|
import org.jetbrains.kotlin.types.KotlinType
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class LocalFunctionsLowering(val context: JvmBackendContext): ClassLoweringPass {
|
class LocalFunctionsLowering(val context: BackendContext): DeclarationContainerLoweringPass {
|
||||||
override fun lower(irClass: IrClass) {
|
override fun lower(irDeclarationContainer: IrDeclarationContainer) {
|
||||||
irClass.declarations.transformFlat { memberDeclaration ->
|
irDeclarationContainer.declarations.transformFlat { memberDeclaration ->
|
||||||
if (memberDeclaration is IrFunction)
|
if (memberDeclaration is IrFunction)
|
||||||
LocalFunctionsTransformer(memberDeclaration).lowerLocalFunctions()
|
LocalFunctionsTransformer(memberDeclaration).lowerLocalFunctions()
|
||||||
else
|
else
|
||||||
+3
-3
@@ -14,10 +14,10 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.jetbrains.kotlin.backend.jvm.lower
|
package org.jetbrains.kotlin.backend.common.lower
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.backend.common.BackendContext
|
||||||
import org.jetbrains.kotlin.backend.common.FunctionLoweringPass
|
import org.jetbrains.kotlin.backend.common.FunctionLoweringPass
|
||||||
import org.jetbrains.kotlin.backend.jvm.JvmBackendContext
|
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.ValueDescriptor
|
import org.jetbrains.kotlin.descriptors.ValueDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.VariableDescriptor
|
import org.jetbrains.kotlin.descriptors.VariableDescriptor
|
||||||
@@ -33,7 +33,7 @@ import org.jetbrains.kotlin.ir.expressions.IrValueAccessExpression
|
|||||||
import org.jetbrains.kotlin.ir.visitors.*
|
import org.jetbrains.kotlin.ir.visitors.*
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class SharedVariablesLowering(val context: JvmBackendContext) : FunctionLoweringPass {
|
class SharedVariablesLowering(val context: BackendContext) : FunctionLoweringPass {
|
||||||
override fun lower(irFunction: IrFunction) {
|
override fun lower(irFunction: IrFunction) {
|
||||||
SharedVariablesTransformer(irFunction).lowerSharedVariables()
|
SharedVariablesTransformer(irFunction).lowerSharedVariables()
|
||||||
}
|
}
|
||||||
@@ -16,6 +16,8 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.backend.jvm
|
package org.jetbrains.kotlin.backend.jvm
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.backend.common.lower.LocalFunctionsLowering
|
||||||
|
import org.jetbrains.kotlin.backend.common.lower.SharedVariablesLowering
|
||||||
import org.jetbrains.kotlin.backend.common.runOnFilePostfix
|
import org.jetbrains.kotlin.backend.common.runOnFilePostfix
|
||||||
import org.jetbrains.kotlin.backend.jvm.lower.*
|
import org.jetbrains.kotlin.backend.jvm.lower.*
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrFile
|
import org.jetbrains.kotlin.ir.declarations.IrFile
|
||||||
|
|||||||
Reference in New Issue
Block a user