diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/DescriptorResolver.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/DescriptorResolver.java index 61295f5b6b1..849dc20afbe 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/DescriptorResolver.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/DescriptorResolver.java @@ -698,7 +698,8 @@ public class DescriptorResolver { @NotNull KtTypeAlias typeAlias, @NotNull BindingTrace trace ) { - if (!(containingDeclaration instanceof PackageFragmentDescriptor)) { + if (!(containingDeclaration instanceof PackageFragmentDescriptor) && + !(containingDeclaration instanceof ScriptDescriptor)) { trace.report(TOPLEVEL_TYPEALIASES_ONLY.on(typeAlias)); } diff --git a/compiler/testData/codegen/script/topLevelTypealias.kts b/compiler/testData/codegen/script/topLevelTypealias.kts new file mode 100644 index 00000000000..cdd610174e2 --- /dev/null +++ b/compiler/testData/codegen/script/topLevelTypealias.kts @@ -0,0 +1,9 @@ +class SimpleClass(val s: String) { + fun foo() = s +} + +typealias Test = SimpleClass + +val rv = Test("OK").foo() + +// expected: rv: OK diff --git a/compiler/testData/diagnostics/tests/script/typealiasInScript.kts b/compiler/testData/diagnostics/tests/script/typealiasInScript.kts new file mode 100644 index 00000000000..9607616d33b --- /dev/null +++ b/compiler/testData/diagnostics/tests/script/typealiasInScript.kts @@ -0,0 +1,9 @@ +typealias TopLevelInScript = String + +class C { + typealias NestedInClass = String +} + +fun foo() { + typealias Local = String +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/script/typealiasInScript.txt b/compiler/testData/diagnostics/tests/script/typealiasInScript.txt new file mode 100644 index 00000000000..34b2c688b0e --- /dev/null +++ b/compiler/testData/diagnostics/tests/script/typealiasInScript.txt @@ -0,0 +1,19 @@ +package + +public final class TypealiasInScript : kotlin.script.templates.standard.ScriptTemplateWithArgs { + public constructor TypealiasInScript(/*0*/ args: kotlin.Array) + public final override /*1*/ /*fake_override*/ val args: kotlin.Array + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public final fun foo(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + public final class C { + public constructor C() + 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 + public typealias NestedInClass = kotlin.String + } + public typealias TopLevelInScript = kotlin.String +} diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java index 9129591cef7..a2fa5d3869b 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java @@ -23605,6 +23605,12 @@ public class DiagnosticsTestGenerated extends AbstractDiagnosticsTest { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/script/topLevelVariable.kts"); doTest(fileName); } + + @TestMetadata("typealiasInScript.kts") + public void testTypealiasInScript() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/script/typealiasInScript.kts"); + doTest(fileName); + } } @TestMetadata("compiler/testData/codegen/box/diagnostics") diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/ScriptCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/ScriptCodegenTestGenerated.java index 092dcf6c112..85e2c4f3ae5 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/ScriptCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/ScriptCodegenTestGenerated.java @@ -173,4 +173,10 @@ public class ScriptCodegenTestGenerated extends AbstractScriptCodegenTest { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/script/topLevelProperty.kts"); doTest(fileName); } + + @TestMetadata("topLevelTypealias.kts") + public void testTopLevelTypealias() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/script/topLevelTypealias.kts"); + doTest(fileName); + } }