diff --git a/compiler/testData/diagnostics/testsWithJsStdLib/native/inlineClass.kt b/compiler/testData/diagnostics/testsWithJsStdLib/native/inlineClass.kt new file mode 100644 index 00000000000..66067604eae --- /dev/null +++ b/compiler/testData/diagnostics/testsWithJsStdLib/native/inlineClass.kt @@ -0,0 +1,9 @@ +// !LANGUAGE: +InlineClasses + +external inline class C(val a: Int) { + fun foo() +} + +inline external enum class E { + A +} diff --git a/compiler/testData/diagnostics/testsWithJsStdLib/native/inlineClass.txt b/compiler/testData/diagnostics/testsWithJsStdLib/native/inlineClass.txt new file mode 100644 index 00000000000..da2abe06b53 --- /dev/null +++ b/compiler/testData/diagnostics/testsWithJsStdLib/native/inlineClass.txt @@ -0,0 +1,27 @@ +package + +public final external inline class C { + public constructor C(/*0*/ a: kotlin.Int) + public final val a: kotlin.Int + public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public final fun foo(): kotlin.Unit + public open override /*1*/ /*synthesized*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String +} + +public final external inline enum class E : kotlin.Enum { + enum entry A + + 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*/ /*synthesized*/ 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/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestWithJsStdLibGenerated.java b/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestWithJsStdLibGenerated.java index c6a6926f22e..6807f095843 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestWithJsStdLibGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestWithJsStdLibGenerated.java @@ -659,6 +659,11 @@ public class DiagnosticsTestWithJsStdLibGenerated extends AbstractDiagnosticsTes runTest("compiler/testData/diagnostics/testsWithJsStdLib/native/inline.kt"); } + @TestMetadata("inlineClass.kt") + public void testInlineClass() throws Exception { + runTest("compiler/testData/diagnostics/testsWithJsStdLib/native/inlineClass.kt"); + } + @TestMetadata("inlineExtensionToNative.kt") public void testInlineExtensionToNative() throws Exception { runTest("compiler/testData/diagnostics/testsWithJsStdLib/native/inlineExtensionToNative.kt"); 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 ab1630d836f..f49b4826c87 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 @@ -1,17 +1,6 @@ /* - * Copyright 2010-2016 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * Copyright 2010-2018 JetBrains s.r.o. 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.js.resolve.diagnostics @@ -28,8 +17,8 @@ import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.DescriptorUtils import org.jetbrains.kotlin.resolve.calls.callUtil.getResolvedCall -import org.jetbrains.kotlin.resolve.checkers.DeclarationCheckerContext import org.jetbrains.kotlin.resolve.checkers.DeclarationChecker +import org.jetbrains.kotlin.resolve.checkers.DeclarationCheckerContext import org.jetbrains.kotlin.resolve.descriptorUtil.* import org.jetbrains.kotlin.resolve.source.getPsi import org.jetbrains.kotlin.types.TypeUtils @@ -59,6 +48,9 @@ object JsExternalChecker : DeclarationChecker { else if (descriptor is ClassDescriptor && descriptor.isInner) { trace.report(ErrorsJs.WRONG_EXTERNAL_DECLARATION.on(declaration, "inner class")) } + else if (descriptor is ClassDescriptor && descriptor.isInline) { + trace.report(ErrorsJs.WRONG_EXTERNAL_DECLARATION.on(declaration, "inline class")) + } else if (isPrivateMemberOfExternalClass(descriptor)) { trace.report(ErrorsJs.WRONG_EXTERNAL_DECLARATION.on(declaration, "private member of class")) }