~ JsCode unsupported function kind
diff --git a/compiler/testData/diagnostics/wasmTests/jsInterop/jsCode.kt b/compiler/testData/diagnostics/wasmTests/jsInterop/jsCode.kt
index 655d938..75fe270 100644
--- a/compiler/testData/diagnostics/wasmTests/jsInterop/jsCode.kt
+++ b/compiler/testData/diagnostics/wasmTests/jsInterop/jsCode.kt
@@ -59,3 +59,15 @@
 fun withDefault(x: Int = <!JSCODE_WRONG_CONTEXT!>js<!>("1")) {
     println(x)
 }
+
+suspend fun suspendFun(): Int = <!JSCODE_UNSUPPORTED_FUNCTION_KIND!>js<!>("1")
+
+inline fun inlineFun(f: () -> Int): Int = <!JSCODE_UNSUPPORTED_FUNCTION_KIND!>js<!>("f()")
+
+fun Int.extensionFun(): Int = <!JSCODE_UNSUPPORTED_FUNCTION_KIND!>js<!>("1")
+
+var propertyWithAccessors: Int
+    get(): Int = <!JSCODE_WRONG_CONTEXT!>js<!>("1")
+    set(<!UNUSED_PARAMETER!>value<!>: Int) {
+        <!JSCODE_WRONG_CONTEXT!>js<!>("console.log(value);")
+    }
diff --git a/wasm/wasm.frontend/src/org/jetbrains/kotlin/wasm/resolve/diagnostics/DefaultErrorMessagesWasm.kt b/wasm/wasm.frontend/src/org/jetbrains/kotlin/wasm/resolve/diagnostics/DefaultErrorMessagesWasm.kt
index c434bf1..377f0041 100644
--- a/wasm/wasm.frontend/src/org/jetbrains/kotlin/wasm/resolve/diagnostics/DefaultErrorMessagesWasm.kt
+++ b/wasm/wasm.frontend/src/org/jetbrains/kotlin/wasm/resolve/diagnostics/DefaultErrorMessagesWasm.kt
@@ -5,6 +5,7 @@
 
 package org.jetbrains.kotlin.wasm.resolve.diagnostics
 
+import org.jetbrains.kotlin.diagnostics.rendering.CommonRenderers
 import org.jetbrains.kotlin.diagnostics.rendering.DefaultErrorMessages
 import org.jetbrains.kotlin.diagnostics.rendering.DiagnosticFactoryToRendererMap
 import org.jetbrains.kotlin.diagnostics.rendering.Renderers
@@ -30,6 +31,11 @@
             ErrorsWasm.JSCODE_WRONG_CONTEXT,
             "Calls to js(code) should be a single expression inside a top-level function body or a property initializer in Kotlin/Wasm"
         )
+        put(
+            ErrorsWasm.JSCODE_UNSUPPORTED_FUNCTION_KIND,
+            "Calls to js(code) are not supported in {0} in Kotlin/Wasm",
+            CommonRenderers.STRING
+        )
     }
 }
 
diff --git a/wasm/wasm.frontend/src/org/jetbrains/kotlin/wasm/resolve/diagnostics/ErrorsWasm.java b/wasm/wasm.frontend/src/org/jetbrains/kotlin/wasm/resolve/diagnostics/ErrorsWasm.java
index e7b87f8..0ec3255 100644
--- a/wasm/wasm.frontend/src/org/jetbrains/kotlin/wasm/resolve/diagnostics/ErrorsWasm.java
+++ b/wasm/wasm.frontend/src/org/jetbrains/kotlin/wasm/resolve/diagnostics/ErrorsWasm.java
@@ -29,6 +29,7 @@
     DiagnosticFactory0<PsiElement> WRONG_JS_FUN_TARGET = DiagnosticFactory0.create(ERROR);
 
     DiagnosticFactory0<PsiElement> JSCODE_WRONG_CONTEXT = DiagnosticFactory0.create(ERROR);
+    DiagnosticFactory1<PsiElement, String> JSCODE_UNSUPPORTED_FUNCTION_KIND = DiagnosticFactory1.create(ERROR);
 
     @SuppressWarnings("UnusedDeclaration")
     Object _initializer = new Object() {
diff --git a/wasm/wasm.frontend/src/org/jetbrains/kotlin/wasm/resolve/diagnostics/WasmJsCodeCallsChecker.kt b/wasm/wasm.frontend/src/org/jetbrains/kotlin/wasm/resolve/diagnostics/WasmJsCodeCallsChecker.kt
index e76d5a3..eee1238 100644
--- a/wasm/wasm.frontend/src/org/jetbrains/kotlin/wasm/resolve/diagnostics/WasmJsCodeCallsChecker.kt
+++ b/wasm/wasm.frontend/src/org/jetbrains/kotlin/wasm/resolve/diagnostics/WasmJsCodeCallsChecker.kt
@@ -50,6 +50,16 @@
                 is FunctionDescriptor -> {
                     if (!containingDeclaration.hasValidJsCodeBody(context.trace.bindingContext)) {
                         context.trace.report(ErrorsWasm.JSCODE_WRONG_CONTEXT.on(reportOn))
+                    } else {
+                        if (containingDeclaration.isSuspend) {
+                            context.trace.report(ErrorsWasm.JSCODE_UNSUPPORTED_FUNCTION_KIND.on(reportOn, "suspend function"))
+                        }
+                        if (containingDeclaration.isInline) {
+                            context.trace.report(ErrorsWasm.JSCODE_UNSUPPORTED_FUNCTION_KIND.on(reportOn, "inline function"))
+                        }
+                        if (containingDeclaration.extensionReceiverParameter != null) {
+                            context.trace.report(ErrorsWasm.JSCODE_UNSUPPORTED_FUNCTION_KIND.on(reportOn, "function with extension receiver"))
+                        }
                     }
                 }
                 is PropertyDescriptor -> {