diff --git a/compiler/testData/diagnostics/testsWithJsStdLib/native/anonymousInitializer.kt b/compiler/testData/diagnostics/testsWithJsStdLib/native/anonymousInitializer.kt new file mode 100644 index 00000000000..33b8ca83983 --- /dev/null +++ b/compiler/testData/diagnostics/testsWithJsStdLib/native/anonymousInitializer.kt @@ -0,0 +1,5 @@ +external class A { + init { + noImpl + } +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/testsWithJsStdLib/native/anonymousInitializer.txt b/compiler/testData/diagnostics/testsWithJsStdLib/native/anonymousInitializer.txt new file mode 100644 index 00000000000..3f5eb8690d0 --- /dev/null +++ b/compiler/testData/diagnostics/testsWithJsStdLib/native/anonymousInitializer.txt @@ -0,0 +1,8 @@ +package + +public external final class A { + public constructor A() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} diff --git a/compiler/testData/diagnostics/testsWithJsStdLib/native/enumEntry.kt b/compiler/testData/diagnostics/testsWithJsStdLib/native/enumEntry.kt new file mode 100644 index 00000000000..ead35fd63e2 --- /dev/null +++ b/compiler/testData/diagnostics/testsWithJsStdLib/native/enumEntry.kt @@ -0,0 +1,7 @@ +external enum class E { + X, + Y { + fun foo() + }, + Z {} +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/testsWithJsStdLib/native/enumEntry.txt b/compiler/testData/diagnostics/testsWithJsStdLib/native/enumEntry.txt new file mode 100644 index 00000000000..b3a968f867e --- /dev/null +++ b/compiler/testData/diagnostics/testsWithJsStdLib/native/enumEntry.txt @@ -0,0 +1,22 @@ +package + +public external final enum class E : kotlin.Enum { + enum entry X + + enum entry Y + + enum entry Z + + private constructor E() + public final override /*1*/ /*fake_override*/ val name: kotlin.String + public final override /*1*/ /*fake_override*/ val ordinal: kotlin.Int + protected final override /*1*/ /*fake_override*/ fun clone(): kotlin.Any + public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: E): kotlin.Int + public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + // Static members + public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): E + public final /*synthesized*/ fun values(): kotlin.Array +} diff --git a/compiler/testData/diagnostics/testsWithJsStdLib/native/propertyParameter.kt b/compiler/testData/diagnostics/testsWithJsStdLib/native/propertyParameter.kt new file mode 100644 index 00000000000..4034589e7b7 --- /dev/null +++ b/compiler/testData/diagnostics/testsWithJsStdLib/native/propertyParameter.kt @@ -0,0 +1 @@ +external class C(x: Int, val y: String) \ No newline at end of file diff --git a/compiler/testData/diagnostics/testsWithJsStdLib/native/propertyParameter.txt b/compiler/testData/diagnostics/testsWithJsStdLib/native/propertyParameter.txt new file mode 100644 index 00000000000..6a0a260d2dc --- /dev/null +++ b/compiler/testData/diagnostics/testsWithJsStdLib/native/propertyParameter.txt @@ -0,0 +1,9 @@ +package + +public external final class C { + public constructor C(/*0*/ x: kotlin.Int, /*1*/ y: kotlin.String) + public final val y: kotlin.String + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} diff --git a/compiler/testData/diagnostics/testsWithJsStdLib/native/wrongTarget.kt b/compiler/testData/diagnostics/testsWithJsStdLib/native/wrongTarget.kt index cfc40b9e737..2274c9a1418 100644 --- a/compiler/testData/diagnostics/testsWithJsStdLib/native/wrongTarget.kt +++ b/compiler/testData/diagnostics/testsWithJsStdLib/native/wrongTarget.kt @@ -1,4 +1,4 @@ -external annotation class A +external annotation class A(val x: Int) val x: Int external get() = noImpl @@ -16,4 +16,6 @@ class C { external class D { val a: Int external get() = noImpl -} \ No newline at end of file +} + +external data class E(val x: Int) \ No newline at end of file diff --git a/compiler/testData/diagnostics/testsWithJsStdLib/native/wrongTarget.txt b/compiler/testData/diagnostics/testsWithJsStdLib/native/wrongTarget.txt index 8c943be598a..449acdedb24 100644 --- a/compiler/testData/diagnostics/testsWithJsStdLib/native/wrongTarget.txt +++ b/compiler/testData/diagnostics/testsWithJsStdLib/native/wrongTarget.txt @@ -4,7 +4,8 @@ public val x: kotlin.Int public val B.x: kotlin.Int public external final annotation class A : kotlin.Annotation { - public constructor A() + public constructor A(/*0*/ x: kotlin.Int) + public final val x: kotlin.Int public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String @@ -32,3 +33,13 @@ public external final class D { public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } + +public external final data class E { + public constructor E(/*0*/ x: kotlin.Int) + public final val x: kotlin.Int + public final operator /*synthesized*/ fun component1(): kotlin.Int + public final /*synthesized*/ fun copy(/*0*/ x: kotlin.Int = ...): E + public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*synthesized*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String +} diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestWithJsStdLibGenerated.java b/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestWithJsStdLibGenerated.java index 08861a7dd61..dd367789280 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestWithJsStdLibGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestWithJsStdLibGenerated.java @@ -569,6 +569,12 @@ public class DiagnosticsTestWithJsStdLibGenerated extends AbstractDiagnosticsTes KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/diagnostics/testsWithJsStdLib/native"), Pattern.compile("^(.+)\\.kt$"), TargetBackend.ANY, true); } + @TestMetadata("anonymousInitializer.kt") + public void testAnonymousInitializer() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/testsWithJsStdLib/native/anonymousInitializer.kt"); + doTest(fileName); + } + @TestMetadata("body.kt") public void testBody() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/testsWithJsStdLib/native/body.kt"); @@ -587,6 +593,12 @@ public class DiagnosticsTestWithJsStdLibGenerated extends AbstractDiagnosticsTes doTest(fileName); } + @TestMetadata("enumEntry.kt") + public void testEnumEntry() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/testsWithJsStdLib/native/enumEntry.kt"); + doTest(fileName); + } + @TestMetadata("extensionFunctionAndProperty.kt") public void testExtensionFunctionAndProperty() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/testsWithJsStdLib/native/extensionFunctionAndProperty.kt"); @@ -635,6 +647,12 @@ public class DiagnosticsTestWithJsStdLibGenerated extends AbstractDiagnosticsTes doTest(fileName); } + @TestMetadata("propertyParameter.kt") + public void testPropertyParameter() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/testsWithJsStdLib/native/propertyParameter.kt"); + doTest(fileName); + } + @TestMetadata("wrongTarget.kt") public void testWrongTarget() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/testsWithJsStdLib/native/wrongTarget.kt"); diff --git a/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/diagnostics/DefaultErrorMessagesJs.kt b/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/diagnostics/DefaultErrorMessagesJs.kt index 745c8b55c1c..a4a629caa41 100644 --- a/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/diagnostics/DefaultErrorMessagesJs.kt +++ b/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/diagnostics/DefaultErrorMessagesJs.kt @@ -80,8 +80,11 @@ private val DIAGNOSTIC_FACTORY_TO_RENDERER by lazy { put(ErrorsJs.WRONG_INITIALIZER_OF_EXTERNAL_DECLARATION, "Wrong initializer of external declaration. Must be ' = noImpl'") put(ErrorsJs.WRONG_DEFAULT_VALUE_FOR_EXTERNAL_FUN_PARAMETER, "Wrong default value for parameter of external function. Must be ' = noImpl'") - put(ErrorsJs.EXTERNAL_DELEGATED_CONSTRUCTOR_CALL, "Delegated constructor call in external class") - put(ErrorsJs.EXTERNAL_DELEGATION, "Using delegate on external declaration") + put(ErrorsJs.EXTERNAL_DELEGATED_CONSTRUCTOR_CALL, "Delegated constructor call in external class is not allowed") + put(ErrorsJs.EXTERNAL_DELEGATION, "Can't use delegate on external declaration") + put(ErrorsJs.EXTERNAL_ANONYMOUS_INITIALIZER, "Anonymous initializer is not allowed in external classes") + put(ErrorsJs.EXTERNAL_ENUM_ENTRY_WITH_BODY, "Entry of external enum class can't have body") + put(ErrorsJs.EXTERNAL_CLASS_CONSTRUCTOR_PROPERTY_PARAMETER, "External class constructor cannot have a property parameter") this } diff --git a/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/diagnostics/ErrorsJs.java b/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/diagnostics/ErrorsJs.java index 56139986e3b..31001b4c3af 100644 --- a/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/diagnostics/ErrorsJs.java +++ b/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/diagnostics/ErrorsJs.java @@ -20,10 +20,7 @@ import com.intellij.psi.PsiElement; import org.jetbrains.kotlin.descriptors.DeclarationDescriptor; import org.jetbrains.kotlin.descriptors.FunctionDescriptor; import org.jetbrains.kotlin.diagnostics.*; -import org.jetbrains.kotlin.psi.KtClassOrObject; -import org.jetbrains.kotlin.psi.KtDeclaration; -import org.jetbrains.kotlin.psi.KtElement; -import org.jetbrains.kotlin.psi.KtExpression; +import org.jetbrains.kotlin.psi.*; import org.jetbrains.kotlin.types.KotlinType; import static org.jetbrains.kotlin.diagnostics.PositioningStrategies.*; @@ -87,6 +84,9 @@ public interface ErrorsJs { DiagnosticFactory0 WRONG_DEFAULT_VALUE_FOR_EXTERNAL_FUN_PARAMETER = DiagnosticFactory0.create(ERROR); DiagnosticFactory0 EXTERNAL_DELEGATED_CONSTRUCTOR_CALL = DiagnosticFactory0.create(ERROR); DiagnosticFactory0 EXTERNAL_DELEGATION = DiagnosticFactory0.create(ERROR); + DiagnosticFactory0 EXTERNAL_ANONYMOUS_INITIALIZER = DiagnosticFactory0.create(ERROR); + DiagnosticFactory0 EXTERNAL_ENUM_ENTRY_WITH_BODY = DiagnosticFactory0.create(ERROR); + DiagnosticFactory0 EXTERNAL_CLASS_CONSTRUCTOR_PROPERTY_PARAMETER = DiagnosticFactory0.create(ERROR); @SuppressWarnings("UnusedDeclaration") Object _initializer = new Object() { diff --git a/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/diagnostics/JsExternalChecker.kt b/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/diagnostics/JsExternalChecker.kt index b19ac7799c6..2226eab3c09 100644 --- a/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/diagnostics/JsExternalChecker.kt +++ b/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/diagnostics/JsExternalChecker.kt @@ -51,6 +51,9 @@ object JsExternalChecker : SimpleDeclarationChecker { if (DescriptorUtils.isAnnotationClass(descriptor)) { diagnosticHolder.report(ErrorsJs.WRONG_EXTERNAL_DECLARATION.on(declaration, "annotation class")) } + else if (descriptor is ClassDescriptor && descriptor.isData) { + diagnosticHolder.report(ErrorsJs.WRONG_EXTERNAL_DECLARATION.on(declaration, "data class")) + } else if (descriptor is PropertyAccessorDescriptor && isDirectlyExternal(declaration, descriptor)) { diagnosticHolder.report(ErrorsJs.WRONG_EXTERNAL_DECLARATION.on(declaration, "property accessor")) } @@ -92,6 +95,9 @@ object JsExternalChecker : SimpleDeclarationChecker { checkBody(declaration, descriptor, diagnosticHolder, bindingContext) checkDelegation(declaration, descriptor, diagnosticHolder) + checkAnonymousInitializer(declaration, diagnosticHolder) + checkEnumEntry(declaration, diagnosticHolder) + checkConstructorPropertyParam(declaration, descriptor, diagnosticHolder) } private fun checkBody( @@ -143,6 +149,32 @@ object JsExternalChecker : SimpleDeclarationChecker { } } + private fun checkAnonymousInitializer(declaration: KtDeclaration, diagnosticHolder: DiagnosticSink) { + if (declaration !is KtClassOrObject) return + + for (anonymousInitializer in declaration.getAnonymousInitializers()) { + diagnosticHolder.report(ErrorsJs.EXTERNAL_ANONYMOUS_INITIALIZER.on(anonymousInitializer)) + } + } + + private fun checkEnumEntry(declaration: KtDeclaration, diagnosticHolder: DiagnosticSink) { + if (declaration !is KtEnumEntry) return + declaration.getBody()?.let { + diagnosticHolder.report(ErrorsJs.EXTERNAL_ENUM_ENTRY_WITH_BODY.on(it)) + } + } + + private fun checkConstructorPropertyParam( + declaration: KtDeclaration, + descriptor: DeclarationDescriptor, + diagnosticHolder: DiagnosticSink + ) { + if (descriptor !is PropertyDescriptor || declaration !is KtParameter) return + val containingClass = descriptor.containingDeclaration as ClassDescriptor + if (containingClass.isData || DescriptorUtils.isAnnotationClass(containingClass)) return + diagnosticHolder.report(ErrorsJs.EXTERNAL_CLASS_CONSTRUCTOR_PROPERTY_PARAMETER.on(declaration)) + } + private fun isDirectlyExternal(declaration: KtDeclaration, descriptor: DeclarationDescriptor): Boolean { if (declaration is KtProperty && descriptor is PropertyAccessorDescriptor) return false diff --git a/js/js.translator/testData/box/jsModule/externalClass.kt b/js/js.translator/testData/box/jsModule/externalClass.kt index 27ff4c5fcba..51815070176 100644 --- a/js/js.translator/testData/box/jsModule/externalClass.kt +++ b/js/js.translator/testData/box/jsModule/externalClass.kt @@ -2,7 +2,9 @@ package foo @JsModule("lib") -external class A(val x: Int = noImpl) { +external class A(x: Int = noImpl) { + val x: Int + fun foo(y: Int): Int = noImpl } diff --git a/js/js.translator/testData/box/jsModule/externalPackage.kt b/js/js.translator/testData/box/jsModule/externalPackage.kt index 7d18973b614..af67305206e 100644 --- a/js/js.translator/testData/box/jsModule/externalPackage.kt +++ b/js/js.translator/testData/box/jsModule/externalPackage.kt @@ -2,7 +2,9 @@ @file:JsModule("lib") package foo -external class A(@native val x: Int = noImpl) { +external class A(@native x: Int = noImpl) { + val x: Int + fun foo(y: Int): Int = noImpl } diff --git a/js/js.translator/testData/box/jsModule/externalPackageInDifferentFile.kt b/js/js.translator/testData/box/jsModule/externalPackageInDifferentFile.kt index dcc8a978d70..b0ffe3641e4 100644 --- a/js/js.translator/testData/box/jsModule/externalPackageInDifferentFile.kt +++ b/js/js.translator/testData/box/jsModule/externalPackageInDifferentFile.kt @@ -3,7 +3,9 @@ @file:JsModule("lib") package foo -external class A(@native val x: Int = noImpl) { +external class A(x: Int = noImpl) { + val x: Int + fun foo(y: Int): Int = noImpl } diff --git a/js/js.translator/testData/box/jsModule/externalPackagePlain.kt b/js/js.translator/testData/box/jsModule/externalPackagePlain.kt index a4b9bf162ed..c1480c5d48c 100644 --- a/js/js.translator/testData/box/jsModule/externalPackagePlain.kt +++ b/js/js.translator/testData/box/jsModule/externalPackagePlain.kt @@ -2,7 +2,9 @@ @file:JsNonModule package foo -external class A(val x: Int = noImpl) { +external class A(x: Int = noImpl) { + val x: Int + fun foo(y: Int): Int = noImpl } diff --git a/js/js.translator/testData/box/jsModule/externalPackageUmdFallback.kt b/js/js.translator/testData/box/jsModule/externalPackageUmdFallback.kt index 289ec93a455..5de22e83427 100644 --- a/js/js.translator/testData/box/jsModule/externalPackageUmdFallback.kt +++ b/js/js.translator/testData/box/jsModule/externalPackageUmdFallback.kt @@ -4,7 +4,9 @@ @file:JsNonModule package foo -external class A(val x: Int = noImpl) { +external class A(x: Int = noImpl) { + val x: Int + fun foo(y: Int): Int = noImpl } diff --git a/js/js.translator/testData/box/jsName/inheritFromRenamedNativeClass.kt b/js/js.translator/testData/box/jsName/inheritFromRenamedNativeClass.kt index ec183a98c6f..d0a904354c2 100644 --- a/js/js.translator/testData/box/jsName/inheritFromRenamedNativeClass.kt +++ b/js/js.translator/testData/box/jsName/inheritFromRenamedNativeClass.kt @@ -3,7 +3,9 @@ package foo @JsName("A") -external open class B(val foo: String) +external open class B(foo: String) { + val foo: String +} class C(s: String) : B(s) diff --git a/js/js.translator/testData/box/jsName/inheritFromRenamedNativeClassMultimodule.kt b/js/js.translator/testData/box/jsName/inheritFromRenamedNativeClassMultimodule.kt index 06217899224..a4dcbe26423 100644 --- a/js/js.translator/testData/box/jsName/inheritFromRenamedNativeClassMultimodule.kt +++ b/js/js.translator/testData/box/jsName/inheritFromRenamedNativeClassMultimodule.kt @@ -4,7 +4,9 @@ package foo @JsName("A") -external open class B(val foo: String) +external open class B(foo: String) { + val foo: String +} // MODULE: main(module1) // FILE: main.kt diff --git a/js/js.translator/testData/box/multiModuleWrappers/amd/jsModuleOnPackage.kt b/js/js.translator/testData/box/multiModuleWrappers/amd/jsModuleOnPackage.kt index c7531fac376..9bc21346794 100644 --- a/js/js.translator/testData/box/multiModuleWrappers/amd/jsModuleOnPackage.kt +++ b/js/js.translator/testData/box/multiModuleWrappers/amd/jsModuleOnPackage.kt @@ -4,7 +4,9 @@ @file:JsModule("native-lib") package foo -external class A(val x: Int = noImpl) { +external class A(x: Int = noImpl) { + val x: Int + fun foo(y: Int): Int = noImpl } diff --git a/js/js.translator/testData/box/native/classObject.kt b/js/js.translator/testData/box/native/classObject.kt index fc90f3e3565..3ff1194788e 100644 --- a/js/js.translator/testData/box/native/classObject.kt +++ b/js/js.translator/testData/box/native/classObject.kt @@ -1,6 +1,8 @@ package foo -external class A(val c: Int) { +external class A(c: Int) { + val c: Int + companion object { val g: Int val c: String = noImpl diff --git a/js/js.translator/testData/box/native/inheritanceFromNativeClass.kt b/js/js.translator/testData/box/native/inheritanceFromNativeClass.kt index 41a8debd7bc..d7713300fb2 100644 --- a/js/js.translator/testData/box/native/inheritanceFromNativeClass.kt +++ b/js/js.translator/testData/box/native/inheritanceFromNativeClass.kt @@ -1,6 +1,8 @@ package foo -internal external open class A(val a: Int) { +internal external open class A(a: Int) { + val a: Int + fun g(): Int = noImpl fun m(): Int = noImpl diff --git a/js/js.translator/testData/box/native/nestedElements.kt b/js/js.translator/testData/box/native/nestedElements.kt index 06608303baf..7c31564c77c 100644 --- a/js/js.translator/testData/box/native/nestedElements.kt +++ b/js/js.translator/testData/box/native/nestedElements.kt @@ -87,7 +87,8 @@ external object Object { fun test(): Int = noImpl @JsName("AnotherClass") - class Class(val a: String) { + class Class(a: String) { + val a: String var b: String = noImpl fun test(): Int = noImpl @@ -99,7 +100,8 @@ external object Object { } } - class Class(val a: String) { + class Class(a: String) { + val a: String var b: String = noImpl fun test(): Int = noImpl @@ -135,7 +137,8 @@ external class Class { fun test(): Int = noImpl } - class Class(val a: String) { + class Class(a: String) { + val a: String var b: String = noImpl fun test(): Int = noImpl @@ -174,7 +177,8 @@ external interface Trait { fun test(): Int = noImpl } - class Class(val a: String) { + class Class(a: String) { + val a: String var b: String = noImpl fun test(): Int = noImpl diff --git a/js/js.translator/testData/box/native/passExtLambdaFromNative.kt b/js/js.translator/testData/box/native/passExtLambdaFromNative.kt index c4ccd7d4517..c65d36e0128 100644 --- a/js/js.translator/testData/box/native/passExtLambdaFromNative.kt +++ b/js/js.translator/testData/box/native/passExtLambdaFromNative.kt @@ -1,6 +1,8 @@ package foo -internal external class A(val v: String) +internal external class A(v: String) { + val v: String +} internal class B { fun bar(a: A, extLambda: A.(Int, String) -> String): String = a.extLambda(7, "_rr_") diff --git a/js/js.translator/testData/box/native/passExtLambdaToNative.kt b/js/js.translator/testData/box/native/passExtLambdaToNative.kt index 454e756d855..1ee10c905f2 100644 --- a/js/js.translator/testData/box/native/passExtLambdaToNative.kt +++ b/js/js.translator/testData/box/native/passExtLambdaToNative.kt @@ -1,6 +1,8 @@ package foo -external class A(val v: String) +external class A(v: String) { + val v: String +} external fun bar(a: A, extLambda: A.(Int, String) -> String): String = noImpl diff --git a/js/js.translator/testData/box/native/passMemberOrExtFromNative.kt b/js/js.translator/testData/box/native/passMemberOrExtFromNative.kt index 974fac088e5..a5093b0b927 100644 --- a/js/js.translator/testData/box/native/passMemberOrExtFromNative.kt +++ b/js/js.translator/testData/box/native/passMemberOrExtFromNative.kt @@ -1,6 +1,8 @@ package foo -external class A(val v: String) { +external class A(v: String) { + val v: String + fun m(i:Int, s:String): String = noImpl } diff --git a/js/js.translator/testData/box/native/vararg.kt b/js/js.translator/testData/box/native/vararg.kt index 62cabdf4daf..95429115f24 100644 --- a/js/js.translator/testData/box/native/vararg.kt +++ b/js/js.translator/testData/box/native/vararg.kt @@ -16,7 +16,8 @@ fun anotherCount(vararg a: Int) = anotherParamCount(*a) external fun test3(bar: Bar, dummy: Int, vararg args: Int): Boolean = noImpl -external class Bar(val size: Int, order: Int = noImpl) { +external class Bar(size: Int, order: Int = noImpl) { + val size: Int fun test(order: Int, dummy: Int, vararg args: Int): Boolean = noImpl companion object { fun startNewTest(): Boolean = noImpl diff --git a/js/js.translator/testData/box/nestedTypes/outerNative.kt b/js/js.translator/testData/box/nestedTypes/outerNative.kt index 4086869d30b..e2fc386730c 100644 --- a/js/js.translator/testData/box/nestedTypes/outerNative.kt +++ b/js/js.translator/testData/box/nestedTypes/outerNative.kt @@ -7,7 +7,9 @@ external class A(x: Int) { fun foo(): Int = noImpl - class B(val value: Int) { + class B(value: Int) { + val value: Int + fun bar(): Int = noImpl } }