[Gradle, Wasm] Add wasm platform kind
KTIJ-25583
This commit is contained in:
committed by
Space Team
parent
04cb217791
commit
bcefa1cd66
@@ -34,6 +34,10 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.isEnumValueOfMethod
|
||||
import java.util.*
|
||||
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
|
||||
* 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
|
||||
* [NameSuggestion] supports caching.
|
||||
*/
|
||||
class NameSuggestion {
|
||||
open class NameSuggestion {
|
||||
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.useInstance
|
||||
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.resolve.diagnostics.*
|
||||
import org.jetbrains.kotlin.resolve.PlatformConfiguratorBase
|
||||
@@ -37,7 +38,7 @@ object JsPlatformConfigurator : PlatformConfiguratorBase(
|
||||
),
|
||||
) {
|
||||
override fun configureModuleComponents(container: StorageComponentContainer) {
|
||||
container.useInstance(NameSuggestion())
|
||||
container.useInstance(JsNameSuggestion())
|
||||
container.useImpl<JsCallChecker>()
|
||||
container.useImpl<JsTypeSpecificityComparator>()
|
||||
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.ClassDescriptor
|
||||
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.psi.KtDeclaration
|
||||
import org.jetbrains.kotlin.resolve.checkers.DeclarationChecker
|
||||
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) {
|
||||
if (AnnotationsUtils.isNativeObject(descriptor)) 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.DeclarationDescriptor
|
||||
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.WasmNameSuggestion
|
||||
import org.jetbrains.kotlin.js.translate.utils.AnnotationsUtils
|
||||
import org.jetbrains.kotlin.psi.KtDeclaration
|
||||
import org.jetbrains.kotlin.resolve.checkers.DeclarationChecker
|
||||
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) {
|
||||
if (context.languageVersionSettings.supportsFeature(LanguageFeature.JsAllowInvalidCharsIdentifiersEscaping)) {
|
||||
return
|
||||
|
||||
@@ -20,8 +20,10 @@ import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.diagnostics.DiagnosticSink
|
||||
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.SuggestedName
|
||||
import org.jetbrains.kotlin.js.naming.WasmNameSuggestion
|
||||
import org.jetbrains.kotlin.js.translate.utils.AnnotationsUtils
|
||||
import org.jetbrains.kotlin.psi.KtDeclaration
|
||||
import org.jetbrains.kotlin.resolve.BindingContext
|
||||
@@ -35,6 +37,26 @@ import org.jetbrains.kotlin.resolve.scopes.MemberScope
|
||||
import org.jetbrains.kotlin.types.checker.KotlinTypeRefiner
|
||||
|
||||
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 languageVersionSettings: LanguageVersionSettings,
|
||||
private val kotlinTypeRefiner: KotlinTypeRefiner,
|
||||
|
||||
Reference in New Issue
Block a user