From a37975ab21bcb64aad762e01edc8ee8da8b1dcf6 Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Thu, 23 Apr 2020 17:23:33 +0300 Subject: [PATCH] [FIR] Add compiler extension for plugin registration --- .../META-INF/extensions/compiler.xml | 2 ++ .../FirExtensionRegistrarExtension.kt | 28 +++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 compiler/fir/resolve/src/org/jetbrains/kotlin/fir/extensions/FirExtensionRegistrarExtension.kt diff --git a/compiler/cli/cli-common/resources/META-INF/extensions/compiler.xml b/compiler/cli/cli-common/resources/META-INF/extensions/compiler.xml index fdd17f3b5d2..24ebccd57fd 100644 --- a/compiler/cli/cli-common/resources/META-INF/extensions/compiler.xml +++ b/compiler/cli/cli-common/resources/META-INF/extensions/compiler.xml @@ -62,5 +62,7 @@ interface="com.intellij.ide.util.projectWizard.ModuleBuilder"/> + diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/extensions/FirExtensionRegistrarExtension.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/extensions/FirExtensionRegistrarExtension.kt new file mode 100644 index 00000000000..b4e93afbf35 --- /dev/null +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/extensions/FirExtensionRegistrarExtension.kt @@ -0,0 +1,28 @@ +/* + * Copyright 2010-2020 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.extensions + +import org.jetbrains.kotlin.extensions.ProjectExtensionDescriptor + +abstract class FirExtensionRegistrarExtension { + companion object : ProjectExtensionDescriptor( + "org.jetbrains.kotlin.fir.frontendIrExtensionRegistrarExtension", + FirExtensionRegistrarExtension::class.java + ) + + protected inner class ExtensionRegistrarContext + + protected abstract fun ExtensionRegistrarContext.configurePlugin() + + fun configure(): RegisteredExtensions { + ExtensionRegistrarContext().configurePlugin() + return RegisteredExtensions() + } + + class RegisteredExtensions +} + +fun FirExtensionPointService.registerExtensions(extensions: FirExtensionRegistrarExtension.RegisteredExtensions) {} \ No newline at end of file