From aeeb5d5c48fb1d5d65af2057d408fc21b21ac4d4 Mon Sep 17 00:00:00 2001 From: Svyatoslav Kuzmich Date: Mon, 23 Oct 2023 15:02:35 +0200 Subject: [PATCH] [Wasm] Disallow dynamic type in K2 (KT-56849) --- .../analysis/wasm/checkers/WasmTypeCheckers.kt | 18 ++++++++++++++++++ .../kotlin/fir/checkers/CheckersContainers.kt | 2 ++ .../jsInterop/dynamicUnsupported.fir.kt | 8 -------- .../wasmTests/jsInterop/dynamicUnsupported.kt | 1 + 4 files changed, 21 insertions(+), 8 deletions(-) create mode 100644 compiler/fir/checkers/checkers.wasm/src/org/jetbrains/kotlin/fir/analysis/wasm/checkers/WasmTypeCheckers.kt delete mode 100644 compiler/testData/diagnostics/wasmTests/jsInterop/dynamicUnsupported.fir.kt diff --git a/compiler/fir/checkers/checkers.wasm/src/org/jetbrains/kotlin/fir/analysis/wasm/checkers/WasmTypeCheckers.kt b/compiler/fir/checkers/checkers.wasm/src/org/jetbrains/kotlin/fir/analysis/wasm/checkers/WasmTypeCheckers.kt new file mode 100644 index 00000000000..93790b406e4 --- /dev/null +++ b/compiler/fir/checkers/checkers.wasm/src/org/jetbrains/kotlin/fir/analysis/wasm/checkers/WasmTypeCheckers.kt @@ -0,0 +1,18 @@ +/* + * Copyright 2010-2023 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.analysis.wasm.checkers + +import org.jetbrains.kotlin.fir.analysis.checkers.declaration.* +import org.jetbrains.kotlin.fir.analysis.checkers.type.FirTypeRefChecker +import org.jetbrains.kotlin.fir.analysis.checkers.type.TypeCheckers +import org.jetbrains.kotlin.fir.analysis.wasm.checkers.declaration.* + +object WasmTypeCheckers : TypeCheckers() { + override val typeRefCheckers: Set + get() = setOf( + FirDynamicUnsupportedChecker, + ) +} diff --git a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/checkers/CheckersContainers.kt b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/checkers/CheckersContainers.kt index 6a586fd15fc..eda8171f79b 100644 --- a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/checkers/CheckersContainers.kt +++ b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/checkers/CheckersContainers.kt @@ -15,6 +15,7 @@ import org.jetbrains.kotlin.fir.analysis.native.checkers.NativeDeclarationChecke import org.jetbrains.kotlin.fir.analysis.native.checkers.NativeExpressionCheckers import org.jetbrains.kotlin.fir.analysis.wasm.checkers.WasmDeclarationCheckers import org.jetbrains.kotlin.fir.analysis.wasm.checkers.WasmExpressionCheckers +import org.jetbrains.kotlin.fir.analysis.wasm.checkers.WasmTypeCheckers import org.jetbrains.kotlin.fir.session.FirSessionConfigurator fun FirSessionConfigurator.registerCommonCheckers() { @@ -50,4 +51,5 @@ fun FirSessionConfigurator.registerNativeCheckers() { fun FirSessionConfigurator.registerWasmCheckers() { useCheckers(WasmDeclarationCheckers) useCheckers(WasmExpressionCheckers) + useCheckers(WasmTypeCheckers) } \ No newline at end of file diff --git a/compiler/testData/diagnostics/wasmTests/jsInterop/dynamicUnsupported.fir.kt b/compiler/testData/diagnostics/wasmTests/jsInterop/dynamicUnsupported.fir.kt deleted file mode 100644 index f5fea40bd94..00000000000 --- a/compiler/testData/diagnostics/wasmTests/jsInterop/dynamicUnsupported.fir.kt +++ /dev/null @@ -1,8 +0,0 @@ -val foo: dynamic = 1 - -fun foo(x: dynamic): dynamic { - class C { - val foo: dynamic = 1 - } - return x + C().foo -} diff --git a/compiler/testData/diagnostics/wasmTests/jsInterop/dynamicUnsupported.kt b/compiler/testData/diagnostics/wasmTests/jsInterop/dynamicUnsupported.kt index 20043dea59d..85606001074 100644 --- a/compiler/testData/diagnostics/wasmTests/jsInterop/dynamicUnsupported.kt +++ b/compiler/testData/diagnostics/wasmTests/jsInterop/dynamicUnsupported.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL val foo: dynamic = 1 fun foo(x: dynamic): dynamic {