[Gradle, Wasm] Add wasm platform kind
KTIJ-25583
This commit is contained in:
committed by
Space Team
parent
04cb217791
commit
bcefa1cd66
@@ -8,6 +8,7 @@ dependencies {
|
|||||||
api(project(":compiler:config"))
|
api(project(":compiler:config"))
|
||||||
api(project(":compiler:config.jvm"))
|
api(project(":compiler:config.jvm"))
|
||||||
api(project(":js:js.config"))
|
api(project(":js:js.config"))
|
||||||
|
api(project(":wasm:wasm.config"))
|
||||||
api(project(":native:kotlin-native-utils"))
|
api(project(":native:kotlin-native-utils"))
|
||||||
api(project(":compiler:plugin-api"))
|
api(project(":compiler:plugin-api"))
|
||||||
compileOnly(commonDependency("org.jetbrains.kotlin:kotlin-reflect")) { isTransitive = false }
|
compileOnly(commonDependency("org.jetbrains.kotlin:kotlin-reflect")) { isTransitive = false }
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.platform.jvm.JvmPlatforms.allJvmPlatforms
|
|||||||
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms.unspecifiedJvmPlatform
|
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms.unspecifiedJvmPlatform
|
||||||
import org.jetbrains.kotlin.platform.konan.NativePlatforms.allNativePlatforms
|
import org.jetbrains.kotlin.platform.konan.NativePlatforms.allNativePlatforms
|
||||||
import org.jetbrains.kotlin.platform.konan.NativePlatforms.unspecifiedNativePlatform
|
import org.jetbrains.kotlin.platform.konan.NativePlatforms.unspecifiedNativePlatform
|
||||||
|
import org.jetbrains.kotlin.platform.wasm.WasmPlatforms
|
||||||
|
|
||||||
@Suppress("DEPRECATION_ERROR")
|
@Suppress("DEPRECATION_ERROR")
|
||||||
object CommonPlatforms {
|
object CommonPlatforms {
|
||||||
@@ -23,6 +24,7 @@ object CommonPlatforms {
|
|||||||
setOf(
|
setOf(
|
||||||
unspecifiedJvmPlatform.single(),
|
unspecifiedJvmPlatform.single(),
|
||||||
defaultJsPlatform.single(),
|
defaultJsPlatform.single(),
|
||||||
|
WasmPlatforms.Default.single(),
|
||||||
unspecifiedNativePlatform.single()
|
unspecifiedNativePlatform.single()
|
||||||
)
|
)
|
||||||
), org.jetbrains.kotlin.analyzer.common.CommonPlatform {
|
), org.jetbrains.kotlin.analyzer.common.CommonPlatform {
|
||||||
@@ -39,6 +41,7 @@ object CommonPlatforms {
|
|||||||
yieldAll(allJvmPlatforms)
|
yieldAll(allJvmPlatforms)
|
||||||
yieldAll(allNativePlatforms)
|
yieldAll(allNativePlatforms)
|
||||||
yieldAll(allJsPlatforms)
|
yieldAll(allJsPlatforms)
|
||||||
|
yield(WasmPlatforms.Default)
|
||||||
|
|
||||||
// TODO(dsavvinov): extensions points?
|
// TODO(dsavvinov): extensions points?
|
||||||
}.toList()
|
}.toList()
|
||||||
|
|||||||
@@ -98,7 +98,9 @@ private val DEFAULT_CLASH_RESOLVERS = listOf<PlatformExtensionsClashResolver<*>>
|
|||||||
|
|
||||||
PlatformExtensionsClashResolver.FallbackToDefault(DynamicTypesSettings(), DynamicTypesSettings::class.java),
|
PlatformExtensionsClashResolver.FallbackToDefault(DynamicTypesSettings(), DynamicTypesSettings::class.java),
|
||||||
|
|
||||||
PlatformExtensionsClashResolver.FirstWins(AbsentDescriptorHandler::class.java)
|
PlatformExtensionsClashResolver.FirstWins(AbsentDescriptorHandler::class.java),
|
||||||
|
|
||||||
|
PlatformDiagnosticSuppressorClashesResolver()
|
||||||
)
|
)
|
||||||
|
|
||||||
fun StorageComponentContainer.configureDefaultCheckers() {
|
fun StorageComponentContainer.configureDefaultCheckers() {
|
||||||
|
|||||||
+2
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.test.directives
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.config.JvmTarget
|
import org.jetbrains.kotlin.config.JvmTarget
|
||||||
import org.jetbrains.kotlin.platform.TargetPlatform
|
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||||
|
import org.jetbrains.kotlin.platform.WasmPlatform
|
||||||
import org.jetbrains.kotlin.platform.js.JsPlatforms
|
import org.jetbrains.kotlin.platform.js.JsPlatforms
|
||||||
import org.jetbrains.kotlin.platform.jvm.JdkPlatform
|
import org.jetbrains.kotlin.platform.jvm.JdkPlatform
|
||||||
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||||
@@ -19,6 +20,7 @@ enum class TargetPlatformEnum(val targetPlatform: TargetPlatform) {
|
|||||||
setOf(
|
setOf(
|
||||||
JdkPlatform(JvmTarget.DEFAULT),
|
JdkPlatform(JvmTarget.DEFAULT),
|
||||||
JsPlatforms.DefaultSimpleJsPlatform,
|
JsPlatforms.DefaultSimpleJsPlatform,
|
||||||
|
WasmPlatform,
|
||||||
NativePlatformUnspecifiedTarget
|
NativePlatformUnspecifiedTarget
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -42,6 +42,7 @@ fun TargetPlatform.createArguments(init: (CommonCompilerArguments).() -> Unit =
|
|||||||
jvmTarget = (single() as? JdkPlatform)?.targetVersion?.description ?: JvmTarget.DEFAULT.description
|
jvmTarget = (single() as? JdkPlatform)?.targetVersion?.description ?: JvmTarget.DEFAULT.description
|
||||||
}
|
}
|
||||||
isJs() -> K2JSCompilerArguments().apply { init() }
|
isJs() -> K2JSCompilerArguments().apply { init() }
|
||||||
|
isWasm() -> K2JSCompilerArguments().apply { init() }
|
||||||
isNative() -> K2NativeCompilerArguments().apply { init() }
|
isNative() -> K2NativeCompilerArguments().apply { init() }
|
||||||
else -> error("Unknown platform $this")
|
else -> error("Unknown platform $this")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ import org.jetbrains.kotlin.platform.impl.CommonIdePlatformKind
|
|||||||
import org.jetbrains.kotlin.platform.impl.JsIdePlatformKind
|
import org.jetbrains.kotlin.platform.impl.JsIdePlatformKind
|
||||||
import org.jetbrains.kotlin.platform.impl.JvmIdePlatformKind
|
import org.jetbrains.kotlin.platform.impl.JvmIdePlatformKind
|
||||||
import org.jetbrains.kotlin.platform.impl.NativeIdePlatformKind
|
import org.jetbrains.kotlin.platform.impl.NativeIdePlatformKind
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult
|
import org.jetbrains.kotlin.platform.impl.WasmIdePlatformKind
|
||||||
|
|
||||||
abstract class IdePlatformKind {
|
abstract class IdePlatformKind {
|
||||||
abstract fun supportsTargetPlatform(platform: TargetPlatform): Boolean
|
abstract fun supportsTargetPlatform(platform: TargetPlatform): Boolean
|
||||||
@@ -54,6 +54,7 @@ abstract class IdePlatformKind {
|
|||||||
get() = listOf(
|
get() = listOf(
|
||||||
JvmIdePlatformKind,
|
JvmIdePlatformKind,
|
||||||
JsIdePlatformKind,
|
JsIdePlatformKind,
|
||||||
|
WasmIdePlatformKind,
|
||||||
CommonIdePlatformKind,
|
CommonIdePlatformKind,
|
||||||
NativeIdePlatformKind
|
NativeIdePlatformKind
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -15,12 +15,15 @@ import org.jetbrains.kotlin.platform.impl.JsIdePlatformKind
|
|||||||
import org.jetbrains.kotlin.platform.impl.JvmIdePlatformKind
|
import org.jetbrains.kotlin.platform.impl.JvmIdePlatformKind
|
||||||
import org.jetbrains.kotlin.platform.impl.NativeIdePlatformKind
|
import org.jetbrains.kotlin.platform.impl.NativeIdePlatformKind
|
||||||
import org.jetbrains.kotlin.platform.JsPlatform
|
import org.jetbrains.kotlin.platform.JsPlatform
|
||||||
|
import org.jetbrains.kotlin.platform.WasmPlatform
|
||||||
|
import org.jetbrains.kotlin.platform.impl.WasmIdePlatformKind
|
||||||
import org.jetbrains.kotlin.platform.js.JsPlatforms
|
import org.jetbrains.kotlin.platform.js.JsPlatforms
|
||||||
import org.jetbrains.kotlin.platform.jvm.JdkPlatform
|
import org.jetbrains.kotlin.platform.jvm.JdkPlatform
|
||||||
import org.jetbrains.kotlin.platform.jvm.JvmPlatform
|
import org.jetbrains.kotlin.platform.jvm.JvmPlatform
|
||||||
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||||
import org.jetbrains.kotlin.platform.konan.NativePlatforms
|
import org.jetbrains.kotlin.platform.konan.NativePlatforms
|
||||||
import org.jetbrains.kotlin.platform.konan.NativePlatform
|
import org.jetbrains.kotlin.platform.konan.NativePlatform
|
||||||
|
import org.jetbrains.kotlin.platform.wasm.WasmPlatforms
|
||||||
|
|
||||||
typealias OldPlatform = org.jetbrains.kotlin.resolve.TargetPlatform
|
typealias OldPlatform = org.jetbrains.kotlin.resolve.TargetPlatform
|
||||||
typealias NewPlatform = org.jetbrains.kotlin.platform.TargetPlatform
|
typealias NewPlatform = org.jetbrains.kotlin.platform.TargetPlatform
|
||||||
@@ -51,6 +54,7 @@ fun IdePlatform<*, *>.toNewPlatform(): NewPlatform = when (this) {
|
|||||||
is CommonIdePlatformKind.Platform -> CommonPlatforms.defaultCommonPlatform
|
is CommonIdePlatformKind.Platform -> CommonPlatforms.defaultCommonPlatform
|
||||||
is JvmIdePlatformKind.Platform -> JvmPlatforms.jvmPlatformByTargetVersion(this.version)
|
is JvmIdePlatformKind.Platform -> JvmPlatforms.jvmPlatformByTargetVersion(this.version)
|
||||||
is JsIdePlatformKind.Platform -> JsPlatforms.defaultJsPlatform
|
is JsIdePlatformKind.Platform -> JsPlatforms.defaultJsPlatform
|
||||||
|
is WasmIdePlatformKind.Platform -> WasmPlatforms.Default
|
||||||
is NativeIdePlatformKind.Platform -> NativePlatforms.unspecifiedNativePlatform
|
is NativeIdePlatformKind.Platform -> NativePlatforms.unspecifiedNativePlatform
|
||||||
else -> error("Unknown platform $this")
|
else -> error("Unknown platform $this")
|
||||||
}
|
}
|
||||||
@@ -60,6 +64,7 @@ fun NewPlatform.toIdePlatform(): IdePlatform<*, *> = when (val single = singleOr
|
|||||||
is JdkPlatform -> JvmIdePlatformKind.Platform(single.targetVersion)
|
is JdkPlatform -> JvmIdePlatformKind.Platform(single.targetVersion)
|
||||||
is JvmPlatform -> JvmIdePlatformKind.Platform(JvmTarget.DEFAULT)
|
is JvmPlatform -> JvmIdePlatformKind.Platform(JvmTarget.DEFAULT)
|
||||||
is JsPlatform -> JsIdePlatformKind.Platform
|
is JsPlatform -> JsIdePlatformKind.Platform
|
||||||
|
is WasmPlatform -> WasmIdePlatformKind.Platform
|
||||||
is NativePlatform -> NativeIdePlatformKind.Platform
|
is NativePlatform -> NativeIdePlatformKind.Platform
|
||||||
else -> error("Unknown platform $single")
|
else -> error("Unknown platform $single")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ object JsIdePlatformKind : IdePlatformKind() {
|
|||||||
override fun supportsTargetPlatform(platform: TargetPlatform): Boolean = platform.isJs()
|
override fun supportsTargetPlatform(platform: TargetPlatform): Boolean = platform.isJs()
|
||||||
|
|
||||||
override fun platformByCompilerArguments(arguments: CommonCompilerArguments): TargetPlatform? {
|
override fun platformByCompilerArguments(arguments: CommonCompilerArguments): TargetPlatform? {
|
||||||
return if (arguments is K2JSCompilerArguments)
|
return if (arguments is K2JSCompilerArguments && !arguments.wasm)
|
||||||
JsPlatforms.defaultJsPlatform
|
JsPlatforms.defaultJsPlatform
|
||||||
else
|
else
|
||||||
null
|
null
|
||||||
|
|||||||
@@ -0,0 +1,55 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2018 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:JvmName("WasmIdePlatformUtil")
|
||||||
|
@file:Suppress("DEPRECATION_ERROR", "DeprecatedCallableAddReplaceWith")
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.platform.impl
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments
|
||||||
|
import org.jetbrains.kotlin.cli.common.arguments.K2JSCompilerArguments
|
||||||
|
import org.jetbrains.kotlin.platform.*
|
||||||
|
import org.jetbrains.kotlin.platform.wasm.WasmPlatforms
|
||||||
|
|
||||||
|
object WasmIdePlatformKind : IdePlatformKind() {
|
||||||
|
override fun supportsTargetPlatform(platform: TargetPlatform): Boolean = platform.isWasm()
|
||||||
|
|
||||||
|
override fun platformByCompilerArguments(arguments: CommonCompilerArguments): TargetPlatform? {
|
||||||
|
return if (arguments is K2JSCompilerArguments && arguments.wasm)
|
||||||
|
WasmPlatforms.Default
|
||||||
|
else
|
||||||
|
null
|
||||||
|
}
|
||||||
|
|
||||||
|
val platforms get() = listOf(WasmPlatforms.Default)
|
||||||
|
override val defaultPlatform get() = WasmPlatforms.Default
|
||||||
|
|
||||||
|
@Deprecated(
|
||||||
|
message = "IdePlatform is deprecated and will be removed soon, please, migrate to org.jetbrains.kotlin.platform.TargetPlatform",
|
||||||
|
level = DeprecationLevel.ERROR
|
||||||
|
)
|
||||||
|
override fun getDefaultPlatform(): IdePlatform<*, *> = WasmIdePlatformKind.Platform
|
||||||
|
|
||||||
|
override fun createArguments(): CommonCompilerArguments {
|
||||||
|
return K2JSCompilerArguments()
|
||||||
|
}
|
||||||
|
|
||||||
|
override val argumentsClass get() = K2JSCompilerArguments::class.java
|
||||||
|
|
||||||
|
override val name get() = "WebAssembly"
|
||||||
|
|
||||||
|
@Deprecated(
|
||||||
|
message = "IdePlatform is deprecated and will be removed soon, please, migrate to org.jetbrains.kotlin.platform.TargetPlatform",
|
||||||
|
level = DeprecationLevel.ERROR
|
||||||
|
)
|
||||||
|
object Platform : IdePlatform<WasmIdePlatformKind, K2JSCompilerArguments>() {
|
||||||
|
override val kind get() = WasmIdePlatformKind
|
||||||
|
override val version get() = TargetPlatformVersion.NoVersion
|
||||||
|
override fun createArguments(init: K2JSCompilerArguments.() -> Unit) = K2JSCompilerArguments().apply(init)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
val IdePlatformKind?.isWasm
|
||||||
|
get() = this is WasmIdePlatformKind
|
||||||
@@ -34,6 +34,10 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.isEnumValueOfMethod
|
|||||||
import java.util.*
|
import java.util.*
|
||||||
import kotlin.math.abs
|
import kotlin.math.abs
|
||||||
|
|
||||||
|
class JsNameSuggestion : NameSuggestion()
|
||||||
|
|
||||||
|
class WasmNameSuggestion : NameSuggestion()
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class is responsible for generating names for declarations. It does not produce fully-qualified JS name, instead
|
* This class is responsible for generating names for declarations. It does not produce fully-qualified JS name, instead
|
||||||
* it tries to generate a simple name and specify a scoping declaration. This information can be used by the front-end
|
* it tries to generate a simple name and specify a scoping declaration. This information can be used by the front-end
|
||||||
@@ -43,7 +47,7 @@ import kotlin.math.abs
|
|||||||
* A new instance of this class can be created for each request, however, it's recommended to use stable instance, since
|
* A new instance of this class can be created for each request, however, it's recommended to use stable instance, since
|
||||||
* [NameSuggestion] supports caching.
|
* [NameSuggestion] supports caching.
|
||||||
*/
|
*/
|
||||||
class NameSuggestion {
|
open class NameSuggestion {
|
||||||
private val cache: MutableMap<DeclarationDescriptor, SuggestedName?> = Collections.synchronizedMap(WeakHashMap())
|
private val cache: MutableMap<DeclarationDescriptor, SuggestedName?> = Collections.synchronizedMap(WeakHashMap())
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.container.StorageComponentContainer
|
|||||||
import org.jetbrains.kotlin.container.useImpl
|
import org.jetbrains.kotlin.container.useImpl
|
||||||
import org.jetbrains.kotlin.container.useInstance
|
import org.jetbrains.kotlin.container.useInstance
|
||||||
import org.jetbrains.kotlin.js.analyze.JsNativeDiagnosticSuppressor
|
import org.jetbrains.kotlin.js.analyze.JsNativeDiagnosticSuppressor
|
||||||
|
import org.jetbrains.kotlin.js.naming.JsNameSuggestion
|
||||||
import org.jetbrains.kotlin.js.naming.NameSuggestion
|
import org.jetbrains.kotlin.js.naming.NameSuggestion
|
||||||
import org.jetbrains.kotlin.js.resolve.diagnostics.*
|
import org.jetbrains.kotlin.js.resolve.diagnostics.*
|
||||||
import org.jetbrains.kotlin.resolve.PlatformConfiguratorBase
|
import org.jetbrains.kotlin.resolve.PlatformConfiguratorBase
|
||||||
@@ -37,7 +38,7 @@ object JsPlatformConfigurator : PlatformConfiguratorBase(
|
|||||||
),
|
),
|
||||||
) {
|
) {
|
||||||
override fun configureModuleComponents(container: StorageComponentContainer) {
|
override fun configureModuleComponents(container: StorageComponentContainer) {
|
||||||
container.useInstance(NameSuggestion())
|
container.useInstance(JsNameSuggestion())
|
||||||
container.useImpl<JsCallChecker>()
|
container.useImpl<JsCallChecker>()
|
||||||
container.useImpl<JsTypeSpecificityComparator>()
|
container.useImpl<JsTypeSpecificityComparator>()
|
||||||
container.useImpl<JsNameClashChecker>()
|
container.useImpl<JsNameClashChecker>()
|
||||||
|
|||||||
+2
-2
@@ -19,13 +19,13 @@ package org.jetbrains.kotlin.js.resolve.diagnostics
|
|||||||
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
|
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||||
import org.jetbrains.kotlin.js.naming.NameSuggestion
|
import org.jetbrains.kotlin.js.naming.JsNameSuggestion
|
||||||
import org.jetbrains.kotlin.js.translate.utils.AnnotationsUtils
|
import org.jetbrains.kotlin.js.translate.utils.AnnotationsUtils
|
||||||
import org.jetbrains.kotlin.psi.KtDeclaration
|
import org.jetbrains.kotlin.psi.KtDeclaration
|
||||||
import org.jetbrains.kotlin.resolve.checkers.DeclarationChecker
|
import org.jetbrains.kotlin.resolve.checkers.DeclarationChecker
|
||||||
import org.jetbrains.kotlin.resolve.checkers.DeclarationCheckerContext
|
import org.jetbrains.kotlin.resolve.checkers.DeclarationCheckerContext
|
||||||
|
|
||||||
class JsBuiltinNameClashChecker(private val nameSuggestion: NameSuggestion) : DeclarationChecker {
|
class JsBuiltinNameClashChecker(private val nameSuggestion: JsNameSuggestion) : DeclarationChecker {
|
||||||
override fun check(declaration: KtDeclaration, descriptor: DeclarationDescriptor, context: DeclarationCheckerContext) {
|
override fun check(declaration: KtDeclaration, descriptor: DeclarationDescriptor, context: DeclarationCheckerContext) {
|
||||||
if (AnnotationsUtils.isNativeObject(descriptor)) return
|
if (AnnotationsUtils.isNativeObject(descriptor)) return
|
||||||
if (descriptor.containingDeclaration !is ClassDescriptor) return
|
if (descriptor.containingDeclaration !is ClassDescriptor) return
|
||||||
|
|||||||
+7
-1
@@ -9,13 +9,19 @@ import org.jetbrains.kotlin.config.LanguageFeature
|
|||||||
import org.jetbrains.kotlin.descriptors.ConstructorDescriptor
|
import org.jetbrains.kotlin.descriptors.ConstructorDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.PropertyAccessorDescriptor
|
import org.jetbrains.kotlin.descriptors.PropertyAccessorDescriptor
|
||||||
|
import org.jetbrains.kotlin.js.naming.JsNameSuggestion
|
||||||
import org.jetbrains.kotlin.js.naming.NameSuggestion
|
import org.jetbrains.kotlin.js.naming.NameSuggestion
|
||||||
|
import org.jetbrains.kotlin.js.naming.WasmNameSuggestion
|
||||||
import org.jetbrains.kotlin.js.translate.utils.AnnotationsUtils
|
import org.jetbrains.kotlin.js.translate.utils.AnnotationsUtils
|
||||||
import org.jetbrains.kotlin.psi.KtDeclaration
|
import org.jetbrains.kotlin.psi.KtDeclaration
|
||||||
import org.jetbrains.kotlin.resolve.checkers.DeclarationChecker
|
import org.jetbrains.kotlin.resolve.checkers.DeclarationChecker
|
||||||
import org.jetbrains.kotlin.resolve.checkers.DeclarationCheckerContext
|
import org.jetbrains.kotlin.resolve.checkers.DeclarationCheckerContext
|
||||||
|
|
||||||
class JsNameCharsChecker(private val suggestion: NameSuggestion) : DeclarationChecker {
|
class JsNameCharsChecker(suggestion: JsNameSuggestion) : AbstractNameCharsChecker(suggestion)
|
||||||
|
|
||||||
|
class WasmNameCharsChecker(suggestion: WasmNameSuggestion) : AbstractNameCharsChecker(suggestion)
|
||||||
|
|
||||||
|
abstract class AbstractNameCharsChecker(private val suggestion: NameSuggestion) : DeclarationChecker {
|
||||||
override fun check(declaration: KtDeclaration, descriptor: DeclarationDescriptor, context: DeclarationCheckerContext) {
|
override fun check(declaration: KtDeclaration, descriptor: DeclarationDescriptor, context: DeclarationCheckerContext) {
|
||||||
if (context.languageVersionSettings.supportsFeature(LanguageFeature.JsAllowInvalidCharsIdentifiersEscaping)) {
|
if (context.languageVersionSettings.supportsFeature(LanguageFeature.JsAllowInvalidCharsIdentifiersEscaping)) {
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -20,8 +20,10 @@ import org.jetbrains.kotlin.config.LanguageVersionSettings
|
|||||||
import org.jetbrains.kotlin.descriptors.*
|
import org.jetbrains.kotlin.descriptors.*
|
||||||
import org.jetbrains.kotlin.diagnostics.DiagnosticSink
|
import org.jetbrains.kotlin.diagnostics.DiagnosticSink
|
||||||
import org.jetbrains.kotlin.diagnostics.Errors
|
import org.jetbrains.kotlin.diagnostics.Errors
|
||||||
|
import org.jetbrains.kotlin.js.naming.JsNameSuggestion
|
||||||
import org.jetbrains.kotlin.js.naming.NameSuggestion
|
import org.jetbrains.kotlin.js.naming.NameSuggestion
|
||||||
import org.jetbrains.kotlin.js.naming.SuggestedName
|
import org.jetbrains.kotlin.js.naming.SuggestedName
|
||||||
|
import org.jetbrains.kotlin.js.naming.WasmNameSuggestion
|
||||||
import org.jetbrains.kotlin.js.translate.utils.AnnotationsUtils
|
import org.jetbrains.kotlin.js.translate.utils.AnnotationsUtils
|
||||||
import org.jetbrains.kotlin.psi.KtDeclaration
|
import org.jetbrains.kotlin.psi.KtDeclaration
|
||||||
import org.jetbrains.kotlin.resolve.BindingContext
|
import org.jetbrains.kotlin.resolve.BindingContext
|
||||||
@@ -35,6 +37,26 @@ import org.jetbrains.kotlin.resolve.scopes.MemberScope
|
|||||||
import org.jetbrains.kotlin.types.checker.KotlinTypeRefiner
|
import org.jetbrains.kotlin.types.checker.KotlinTypeRefiner
|
||||||
|
|
||||||
class JsNameClashChecker(
|
class JsNameClashChecker(
|
||||||
|
nameSuggestion: JsNameSuggestion,
|
||||||
|
languageVersionSettings: LanguageVersionSettings,
|
||||||
|
kotlinTypeRefiner: KotlinTypeRefiner,
|
||||||
|
) : AbstractNameClashChecker(
|
||||||
|
nameSuggestion,
|
||||||
|
languageVersionSettings,
|
||||||
|
kotlinTypeRefiner,
|
||||||
|
)
|
||||||
|
|
||||||
|
class WasmNameClashChecker(
|
||||||
|
nameSuggestion: WasmNameSuggestion,
|
||||||
|
languageVersionSettings: LanguageVersionSettings,
|
||||||
|
kotlinTypeRefiner: KotlinTypeRefiner,
|
||||||
|
) : AbstractNameClashChecker(
|
||||||
|
nameSuggestion,
|
||||||
|
languageVersionSettings,
|
||||||
|
kotlinTypeRefiner,
|
||||||
|
)
|
||||||
|
|
||||||
|
abstract class AbstractNameClashChecker(
|
||||||
private val nameSuggestion: NameSuggestion,
|
private val nameSuggestion: NameSuggestion,
|
||||||
private val languageVersionSettings: LanguageVersionSettings,
|
private val languageVersionSettings: LanguageVersionSettings,
|
||||||
private val kotlinTypeRefiner: KotlinTypeRefiner,
|
private val kotlinTypeRefiner: KotlinTypeRefiner,
|
||||||
|
|||||||
+4
-3
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.container.StorageComponentContainer
|
|||||||
import org.jetbrains.kotlin.container.useImpl
|
import org.jetbrains.kotlin.container.useImpl
|
||||||
import org.jetbrains.kotlin.container.useInstance
|
import org.jetbrains.kotlin.container.useInstance
|
||||||
import org.jetbrains.kotlin.js.naming.NameSuggestion
|
import org.jetbrains.kotlin.js.naming.NameSuggestion
|
||||||
|
import org.jetbrains.kotlin.js.naming.WasmNameSuggestion
|
||||||
import org.jetbrains.kotlin.js.resolve.ExtensionFunctionToExternalIsInlinable
|
import org.jetbrains.kotlin.js.resolve.ExtensionFunctionToExternalIsInlinable
|
||||||
import org.jetbrains.kotlin.js.resolve.diagnostics.*
|
import org.jetbrains.kotlin.js.resolve.diagnostics.*
|
||||||
import org.jetbrains.kotlin.resolve.PlatformConfiguratorBase
|
import org.jetbrains.kotlin.resolve.PlatformConfiguratorBase
|
||||||
@@ -38,10 +39,10 @@ object WasmPlatformConfigurator : PlatformConfiguratorBase(
|
|||||||
),
|
),
|
||||||
) {
|
) {
|
||||||
override fun configureModuleComponents(container: StorageComponentContainer) {
|
override fun configureModuleComponents(container: StorageComponentContainer) {
|
||||||
container.useInstance(NameSuggestion())
|
container.useInstance(WasmNameSuggestion())
|
||||||
container.useImpl<WasmJsCallChecker>()
|
container.useImpl<WasmJsCallChecker>()
|
||||||
container.useImpl<JsNameClashChecker>()
|
container.useImpl<WasmNameClashChecker>()
|
||||||
container.useImpl<JsNameCharsChecker>()
|
container.useImpl<WasmNameCharsChecker>()
|
||||||
container.useInstance(JsModuleClassLiteralChecker)
|
container.useInstance(JsModuleClassLiteralChecker)
|
||||||
container.useImpl<JsReflectionAPICallChecker>()
|
container.useImpl<JsReflectionAPICallChecker>()
|
||||||
container.useImpl<JsNativeRttiChecker>()
|
container.useImpl<JsNativeRttiChecker>()
|
||||||
|
|||||||
Reference in New Issue
Block a user