From 8d47bdfebb6f910e34532902a9451ae2f08cafd9 Mon Sep 17 00:00:00 2001 From: Denis Zharkov Date: Thu, 13 Nov 2014 14:34:05 +0400 Subject: [PATCH] Made in arrayOfNulls() reified #KT-5651 Fixed --- compiler/testData/builtin-classes.txt | 2 +- .../duplicateClass/collectionMethodStub.txt | 2 +- .../diagnostics/tests/regressions/kt860.txt | 2 +- .../reified/arrayOfNullsReified.kt | 14 ++ .../reified/arrayOfNullsReified.lazy.log | 125 ++++++++++++++++++ .../reified/arrayOfNullsReified.txt | 5 + ...JetDiagnosticsTestWithStdLibGenerated.java | 6 + core/builtins/native/kotlin/Library.kt | 2 +- 8 files changed, 154 insertions(+), 4 deletions(-) create mode 100644 compiler/testData/diagnostics/testsWithStdLib/reified/arrayOfNullsReified.kt create mode 100644 compiler/testData/diagnostics/testsWithStdLib/reified/arrayOfNullsReified.lazy.log create mode 100644 compiler/testData/diagnostics/testsWithStdLib/reified/arrayOfNullsReified.txt diff --git a/compiler/testData/builtin-classes.txt b/compiler/testData/builtin-classes.txt index c85ade984a2..108f3f1b81c 100644 --- a/compiler/testData/builtin-classes.txt +++ b/compiler/testData/builtin-classes.txt @@ -1,6 +1,6 @@ package-fragment kotlin -public fun arrayOfNulls(/*0*/ size: kotlin.Int): kotlin.Array +public fun arrayOfNulls(/*0*/ size: kotlin.Int): kotlin.Array public fun kotlin.Any?.equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public fun kotlin.Any?.identityEquals(/*0*/ other: kotlin.Any?): kotlin.Boolean public fun kotlin.String?.plus(/*0*/ other: kotlin.Any?): kotlin.String diff --git a/compiler/testData/diagnostics/tests/multimodule/duplicateClass/collectionMethodStub.txt b/compiler/testData/diagnostics/tests/multimodule/duplicateClass/collectionMethodStub.txt index 37e66403930..c52a65af515 100644 --- a/compiler/testData/diagnostics/tests/multimodule/duplicateClass/collectionMethodStub.txt +++ b/compiler/testData/diagnostics/tests/multimodule/duplicateClass/collectionMethodStub.txt @@ -11,7 +11,7 @@ internal final class C : kotlin.MutableIterator { } package kotlin { - public fun arrayOfNulls(/*0*/ size: kotlin.Int): kotlin.Array + public fun arrayOfNulls(/*0*/ size: kotlin.Int): kotlin.Array public fun kotlin.Any?.equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public fun kotlin.Any?.identityEquals(/*0*/ other: kotlin.Any?): kotlin.Boolean public fun kotlin.String?.plus(/*0*/ other: kotlin.Any?): kotlin.String diff --git a/compiler/testData/diagnostics/tests/regressions/kt860.txt b/compiler/testData/diagnostics/tests/regressions/kt860.txt index c0795d0de02..dc438ce3336 100644 --- a/compiler/testData/diagnostics/tests/regressions/kt860.txt +++ b/compiler/testData/diagnostics/tests/regressions/kt860.txt @@ -1,7 +1,7 @@ package package kotlin { - public fun arrayOfNulls(/*0*/ size: kotlin.Int): kotlin.Array + public fun arrayOfNulls(/*0*/ size: kotlin.Int): kotlin.Array public fun kotlin.Any?.equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public fun kotlin.Any?.identityEquals(/*0*/ other: kotlin.Any?): kotlin.Boolean public fun kotlin.String?.plus(/*0*/ other: kotlin.Any?): kotlin.String diff --git a/compiler/testData/diagnostics/testsWithStdLib/reified/arrayOfNullsReified.kt b/compiler/testData/diagnostics/testsWithStdLib/reified/arrayOfNullsReified.kt new file mode 100644 index 00000000000..cf6b8df0e93 --- /dev/null +++ b/compiler/testData/diagnostics/testsWithStdLib/reified/arrayOfNullsReified.kt @@ -0,0 +1,14 @@ +// !DIAGNOSTICS: -NOTHING_TO_INLINE -UNUSED_VARIABLE + +fun foo() { + val x = arrayOfNulls(5) +} + +inline fun bar() { + val x = arrayOfNulls(5) +} + +fun baz() { + bar() + val x: Array = arrayOfNulls(5) +} diff --git a/compiler/testData/diagnostics/testsWithStdLib/reified/arrayOfNullsReified.lazy.log b/compiler/testData/diagnostics/testsWithStdLib/reified/arrayOfNullsReified.lazy.log new file mode 100644 index 00000000000..cf689408faf --- /dev/null +++ b/compiler/testData/diagnostics/testsWithStdLib/reified/arrayOfNullsReified.lazy.log @@ -0,0 +1,125 @@ +ClassDeserializer@0 { + classes(ClassKey@1) = DeserializedClassDescriptor@2['inline'] +} + +DeserializedClassDescriptor@2['inline'] { + containingDeclaration = LazyJavaPackageFragment@3['kotlin'] + primaryConstructor = ConstructorDescriptorImpl@4[''] +} + +LazyAnnotationDescriptor@5 { + resolutionResults = OverloadResolutionResultsImpl@6 + type = JetTypeImpl@7['inline'] + valueArguments(ValueParameterDescriptorImpl@8['strategy']) = null +} + +LazyJavaPackageFragmentProvider@9 { + packageFragments('': FqName@10) = LazyJavaPackageFragment@11[''] + packageFragments('Array': FqName@12) = null + packageFragments('Int': FqName@13) = null + packageFragments('T': FqName@14) = null + packageFragments('inline': FqName@15) = null + packageFragments('java': FqName@16) = LazyJavaPackageFragment@17['java'] + packageFragments('java.lang': FqName@18) = LazyJavaPackageFragment@19['lang'] + packageFragments('java.lang.Array': FqName@20) = null + packageFragments('java.lang.Int': FqName@21) = null + packageFragments('java.lang.T': FqName@22) = null + packageFragments('java.lang.inline': FqName@23) = null + packageFragments('kotlin': FqName@24) = LazyJavaPackageFragment@3['kotlin'] + packageFragments('kotlin.Array': FqName@25) = null + packageFragments('kotlin.Int': FqName@26) = null + packageFragments('kotlin.T': FqName@27) = null + packageFragments('kotlin.inline': FqName@28) = null + packageFragments('kotlin.io': FqName@29) = LazyJavaPackageFragment@30['io'] + packageFragments('kotlin.io.Array': FqName@31) = null + packageFragments('kotlin.io.Int': FqName@32) = null + packageFragments('kotlin.io.T': FqName@33) = null + packageFragments('kotlin.io.inline': FqName@34) = null + packageFragments('kotlin.jvm': FqName@35) = LazyJavaPackageFragment@36['jvm'] + packageFragments('kotlin.jvm.Array': FqName@37) = null + packageFragments('kotlin.jvm.Int': FqName@38) = null + packageFragments('kotlin.jvm.T': FqName@39) = null + packageFragments('kotlin.jvm.inline': FqName@40) = null +} + +LazyJavaPackageFragment@11[''] { + classes('Array': Name@41) = null // through LazyPackageFragmentScopeForJavaPackage@42 + classes('Int': Name@43) = null // through LazyPackageFragmentScopeForJavaPackage@42 + classes('arrayOfNulls': Name@44) = null // through LazyPackageFragmentScopeForJavaPackage@42 + classes('bar': Name@45) = null // through LazyPackageFragmentScopeForJavaPackage@42 + classes('inline': Name@46) = null // through LazyPackageFragmentScopeForJavaPackage@42 + deserializedPackageScope = Empty@47 // through LazyPackageFragmentScopeForJavaPackage@42 + functions('arrayOfNulls': Name@44) = EmptyList@48[empty] // through LazyPackageFragmentScopeForJavaPackage@42 + functions('bar': Name@45) = EmptyList@48[empty] // through LazyPackageFragmentScopeForJavaPackage@42 + memberIndex = computeMemberIndex$1@49 // through LazyPackageFragmentScopeForJavaPackage@42 +} + +LazyJavaPackageFragment@30['io'] { + classes('Array': Name@41) = null // through LazyPackageFragmentScopeForJavaPackage@50 + classes('Int': Name@43) = null // through LazyPackageFragmentScopeForJavaPackage@50 + classes('arrayOfNulls': Name@44) = null // through LazyPackageFragmentScopeForJavaPackage@50 + classes('bar': Name@45) = null // through LazyPackageFragmentScopeForJavaPackage@50 + classes('inline': Name@46) = null // through LazyPackageFragmentScopeForJavaPackage@50 + deserializedPackageScope = DeserializedPackageMemberScope@51 // through LazyPackageFragmentScopeForJavaPackage@50 + functions('arrayOfNulls': Name@44) = EmptyList@48[empty] // through DeserializedPackageMemberScope@51 + functions('arrayOfNulls': Name@44) = EmptyList@48[empty] // through LazyPackageFragmentScopeForJavaPackage@50 + functions('bar': Name@45) = EmptyList@48[empty] // through DeserializedPackageMemberScope@51 + functions('bar': Name@45) = EmptyList@48[empty] // through LazyPackageFragmentScopeForJavaPackage@50 + memberIndex = computeMemberIndex$1@52 // through LazyPackageFragmentScopeForJavaPackage@50 + membersProtos = HashMap@53 // through DeserializedPackageMemberScope@51 + properties('arrayOfNulls': Name@44) = EmptyList@48[empty] // through DeserializedPackageMemberScope@51 + properties('bar': Name@45) = EmptyList@48[empty] // through DeserializedPackageMemberScope@51 +} + +LazyJavaPackageFragment@17['java'] { + classes('lang': Name@54) = null // through LazyPackageFragmentScopeForJavaPackage@55 + deserializedPackageScope = Empty@47 // through LazyPackageFragmentScopeForJavaPackage@55 + functions('lang': Name@56) = EmptyList@48[empty] // through LazyPackageFragmentScopeForJavaPackage@55 + memberIndex = computeMemberIndex$1@57 // through LazyPackageFragmentScopeForJavaPackage@55 +} + +LazyJavaPackageFragment@36['jvm'] { + classes('Array': Name@41) = null // through LazyPackageFragmentScopeForJavaPackage@58 + classes('Int': Name@43) = null // through LazyPackageFragmentScopeForJavaPackage@58 + classes('arrayOfNulls': Name@44) = null // through LazyPackageFragmentScopeForJavaPackage@58 + classes('bar': Name@45) = null // through LazyPackageFragmentScopeForJavaPackage@58 + classes('inline': Name@46) = null // through LazyPackageFragmentScopeForJavaPackage@58 + deserializedPackageScope = Empty@47 // through LazyPackageFragmentScopeForJavaPackage@58 + functions('arrayOfNulls': Name@44) = EmptyList@48[empty] // through LazyPackageFragmentScopeForJavaPackage@58 + functions('bar': Name@45) = EmptyList@48[empty] // through LazyPackageFragmentScopeForJavaPackage@58 + memberIndex = computeMemberIndex$1@59 // through LazyPackageFragmentScopeForJavaPackage@58 +} + +LazyJavaPackageFragment@3['kotlin'] { + classes('Array': Name@41) = null // through LazyPackageFragmentScopeForJavaPackage@60 + classes('Int': Name@43) = null // through LazyPackageFragmentScopeForJavaPackage@60 + classes('arrayOfNulls': Name@44) = null // through LazyPackageFragmentScopeForJavaPackage@60 + classes('bar': Name@45) = null // through LazyPackageFragmentScopeForJavaPackage@60 + classes('inline': Name@46) = DeserializedClassDescriptor@2['inline'] // through LazyPackageFragmentScopeForJavaPackage@60 + classes('io': Name@61) = null // through LazyPackageFragmentScopeForJavaPackage@60 + classes('jvm': Name@62) = null // through LazyPackageFragmentScopeForJavaPackage@60 + deserializedPackageScope = DeserializedPackageMemberScope@63 // through LazyPackageFragmentScopeForJavaPackage@60 + functions('arrayOfNulls': Name@44) = EmptyList@48[empty] // through DeserializedPackageMemberScope@63 + functions('arrayOfNulls': Name@44) = EmptyList@48[empty] // through LazyPackageFragmentScopeForJavaPackage@60 + functions('bar': Name@45) = EmptyList@48[empty] // through DeserializedPackageMemberScope@63 + functions('bar': Name@45) = EmptyList@48[empty] // through LazyPackageFragmentScopeForJavaPackage@60 + functions('io': Name@64) = EmptyList@48[empty] // through DeserializedPackageMemberScope@63 + functions('io': Name@64) = EmptyList@48[empty] // through LazyPackageFragmentScopeForJavaPackage@60 + functions('jvm': Name@65) = EmptyList@48[empty] // through DeserializedPackageMemberScope@63 + functions('jvm': Name@65) = EmptyList@48[empty] // through LazyPackageFragmentScopeForJavaPackage@60 + memberIndex = computeMemberIndex$1@66 // through LazyPackageFragmentScopeForJavaPackage@60 + membersProtos = HashMap@67 // through DeserializedPackageMemberScope@63 + properties('arrayOfNulls': Name@44) = EmptyList@48[empty] // through DeserializedPackageMemberScope@63 + properties('bar': Name@45) = EmptyList@48[empty] // through DeserializedPackageMemberScope@63 + properties('io': Name@64) = EmptyList@48[empty] // through DeserializedPackageMemberScope@63 + properties('jvm': Name@65) = EmptyList@48[empty] // through DeserializedPackageMemberScope@63 +} + +LazyJavaPackageFragment@19['lang'] { + classes('arrayOfNulls': Name@44) = null // through LazyPackageFragmentScopeForJavaPackage@68 + classes('bar': Name@45) = null // through LazyPackageFragmentScopeForJavaPackage@68 + deserializedPackageScope = Empty@47 // through LazyPackageFragmentScopeForJavaPackage@68 + functions('arrayOfNulls': Name@44) = EmptyList@48[empty] // through LazyPackageFragmentScopeForJavaPackage@68 + functions('bar': Name@45) = EmptyList@48[empty] // through LazyPackageFragmentScopeForJavaPackage@68 + memberIndex = computeMemberIndex$1@69 // through LazyPackageFragmentScopeForJavaPackage@68 +} diff --git a/compiler/testData/diagnostics/testsWithStdLib/reified/arrayOfNullsReified.txt b/compiler/testData/diagnostics/testsWithStdLib/reified/arrayOfNullsReified.txt new file mode 100644 index 00000000000..6058341453e --- /dev/null +++ b/compiler/testData/diagnostics/testsWithStdLib/reified/arrayOfNullsReified.txt @@ -0,0 +1,5 @@ +package + +kotlin.inline() internal fun bar(): kotlin.Unit +internal fun baz(): kotlin.Unit +internal fun foo(): kotlin.Unit diff --git a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestWithStdLibGenerated.java b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestWithStdLibGenerated.java index 9d1fe968d55..29f00f27506 100644 --- a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestWithStdLibGenerated.java +++ b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestWithStdLibGenerated.java @@ -635,6 +635,12 @@ public class JetDiagnosticsTestWithStdLibGenerated extends AbstractJetDiagnostic JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/diagnostics/testsWithStdLib/reified"), Pattern.compile("^(.+)\\.kt$"), true); } + @TestMetadata("arrayOfNullsReified.kt") + public void testArrayOfNullsReified() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/testsWithStdLib/reified/arrayOfNullsReified.kt"); + doTest(fileName); + } + @TestMetadata("nonCallableReiefied.kt") public void testNonCallableReiefied() throws Exception { String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/testsWithStdLib/reified/nonCallableReiefied.kt"); diff --git a/core/builtins/native/kotlin/Library.kt b/core/builtins/native/kotlin/Library.kt index 8aa6d38605f..9f4865de8f9 100644 --- a/core/builtins/native/kotlin/Library.kt +++ b/core/builtins/native/kotlin/Library.kt @@ -25,4 +25,4 @@ public fun Any?.toString(): String public fun String?.plus(other: Any?): String -public fun arrayOfNulls(size: Int): Array +public fun arrayOfNulls(size: Int): Array