Skip to content
This repository was archived by the owner on Dec 20, 2022. It is now read-only.

Commit 6c10e27

Browse files
committed
Combined ClassBuilderInterceptorExtensionImpl, NativeIrGenerationExtension and JsSyntheticTranslateExtensionExt into ProcessorFinishedDetectorImpl
1 parent e4bfd60 commit 6c10e27

File tree

10 files changed

+76
-92
lines changed

10 files changed

+76
-92
lines changed

kotlin-compiler-native-plugin/src/main/java/de/jensklingenberg/common/NativeTestComponentRegistrar.kt

-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
88
import org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar
99
import org.jetbrains.kotlin.config.CompilerConfiguration
1010
import org.jetbrains.kotlin.extensions.StorageComponentContainerContributor
11-
import org.jetbrains.kotlin.resolve.extensions.SyntheticResolveExtension
1211

1312

1413
/**

mpapt-runtime/src/main/java/de/jensklingenberg/mpapt/common/MpAptProject.kt

+3-9
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,14 @@
11
package de.jensklingenberg.mpapt.common
22

3-
import de.jensklingenberg.mpapt.extension.ClassBuilderInterceptorExtensionImpl
4-
import de.jensklingenberg.mpapt.extension.NativeIrGenerationExtension
3+
import de.jensklingenberg.mpapt.extension.ProcessorFinishedDetector
4+
import de.jensklingenberg.mpapt.extension.ProcessorFinishedDetectorImpl
55
import de.jensklingenberg.mpapt.extension.StorageComponentContainerContributorImpl
6-
import de.jensklingenberg.mpapt.extension.js.JsSyntheticTranslateExtensionExt
76
import de.jensklingenberg.mpapt.model.AbstractProcessor
8-
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
9-
import org.jetbrains.kotlin.codegen.extensions.ClassBuilderInterceptorExtension
107
import org.jetbrains.kotlin.config.CompilerConfiguration
118
import org.jetbrains.kotlin.extensions.StorageComponentContainerContributor
12-
import org.jetbrains.kotlin.js.translate.extensions.JsSyntheticTranslateExtension
139

1410
class MpAptProject(abstractProcessor: AbstractProcessor, configuration: CompilerConfiguration) :
15-
IrGenerationExtension by NativeIrGenerationExtension(abstractProcessor),
16-
JsSyntheticTranslateExtension by JsSyntheticTranslateExtensionExt(abstractProcessor),
17-
ClassBuilderInterceptorExtension by ClassBuilderInterceptorExtensionImpl(abstractProcessor),
11+
ProcessorFinishedDetector by ProcessorFinishedDetectorImpl(abstractProcessor),
1812
StorageComponentContainerContributor by StorageComponentContainerContributorImpl(abstractProcessor)
1913
{
2014
init {

mpapt-runtime/src/main/java/de/jensklingenberg/mpapt/extension/ClassBuilderInterceptorExtensionImpl.kt

-33
This file was deleted.

mpapt-runtime/src/main/java/de/jensklingenberg/mpapt/extension/DeclarationCheckerImpl.kt

-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ class DeclarationCheckerImpl(private val processor: AbstractProcessor) : Declara
3939
)
4040
)
4141
processor.process(roundEnvironment)
42-
4342
}
4443
}
4544

mpapt-runtime/src/main/java/de/jensklingenberg/mpapt/extension/NativeIrGenerationExtension.kt

-19
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package de.jensklingenberg.mpapt.extension
2+
3+
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
4+
import org.jetbrains.kotlin.codegen.extensions.ClassBuilderInterceptorExtension
5+
import org.jetbrains.kotlin.js.translate.extensions.JsSyntheticTranslateExtension
6+
7+
interface ProcessorFinishedDetector : IrGenerationExtension, JsSyntheticTranslateExtension, ClassBuilderInterceptorExtension
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
package de.jensklingenberg.mpapt.extension
2+
3+
import de.jensklingenberg.mpapt.model.Processor
4+
import org.jetbrains.kotlin.backend.common.BackendContext
5+
import org.jetbrains.kotlin.codegen.ClassBuilder
6+
import org.jetbrains.kotlin.codegen.ClassBuilderFactory
7+
import org.jetbrains.kotlin.descriptors.ClassDescriptor
8+
import org.jetbrains.kotlin.diagnostics.DiagnosticSink
9+
import org.jetbrains.kotlin.ir.declarations.IrFile
10+
import org.jetbrains.kotlin.js.translate.context.TranslationContext
11+
import org.jetbrains.kotlin.js.translate.declaration.DeclarationBodyVisitor
12+
import org.jetbrains.kotlin.psi.KtPureClassOrObject
13+
import org.jetbrains.kotlin.resolve.BindingContext
14+
import org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOrigin
15+
16+
/**
17+
* This class is used to detect that the [DeclarationCheckerImpl] is finished with processing
18+
*
19+
*/
20+
class ProcessorFinishedDetectorImpl(val processor: Processor) : ProcessorFinishedDetector {
21+
22+
23+
/**
24+
* This is used to detect that the [DeclarationCheckerImpl] is finished with processing on Kotlin Native
25+
*/
26+
override fun generate(file: IrFile, backendContext: BackendContext, bindingContext: BindingContext) {
27+
if (processor.isTargetPlatformSupported()) {
28+
processor.onProcessingOver()
29+
}
30+
}
31+
32+
/**
33+
* This is used to detect that the [DeclarationCheckerImpl] is finished with processing on KotlinJS
34+
*/
35+
override fun generateClassSyntheticParts(
36+
declaration: KtPureClassOrObject,
37+
descriptor: ClassDescriptor,
38+
translator: DeclarationBodyVisitor,
39+
context: TranslationContext
40+
) {
41+
if (processor.isTargetPlatformSupported()) {
42+
processor.onProcessingOver()
43+
}
44+
}
45+
46+
/**
47+
* This is used to detect that the [DeclarationCheckerImpl] is finished with processing on KotlinJVM
48+
*/
49+
override fun interceptClassBuilderFactory(
50+
interceptedFactory: ClassBuilderFactory,
51+
bindingContext: BindingContext,
52+
diagnostics: DiagnosticSink
53+
): ClassBuilderFactory = object : ClassBuilderFactory by interceptedFactory {
54+
55+
override fun newClassBuilder(origin: JvmDeclarationOrigin): ClassBuilder {
56+
if (processor.isTargetPlatformSupported()) {
57+
processor.onProcessingOver()
58+
}
59+
60+
return interceptedFactory.newClassBuilder(origin)
61+
}
62+
}
63+
}
64+

mpapt-runtime/src/main/java/de/jensklingenberg/mpapt/extension/StorageComponentContainerContributorImpl.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import org.jetbrains.kotlin.descriptors.ModuleDescriptor
77
import org.jetbrains.kotlin.extensions.StorageComponentContainerContributor
88
import org.jetbrains.kotlin.platform.TargetPlatform
99

10-
class StorageComponentContainerContributorImpl(val processor: AbstractProcessor) : StorageComponentContainerContributor {
10+
class StorageComponentContainerContributorImpl(private val processor: AbstractProcessor) : StorageComponentContainerContributor {
1111

1212
/**
1313
* Here we get the targetplatform of the module

mpapt-runtime/src/main/java/de/jensklingenberg/mpapt/extension/js/JsSyntheticTranslateExtensionExt.kt

-27
This file was deleted.

settings.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
enableFeaturePreview("GRADLE_METADATA")
1+
22
include 'annotations'
33
include 'example'
44
include ':kotlin-compiler-native-plugin'

0 commit comments

Comments
 (0)