diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/ArrayIndices.java b/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/ArrayIndices.java deleted file mode 100644 index 5c73429cb6b..00000000000 --- a/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/ArrayIndices.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright 2010-2013 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. - */ - -package org.jetbrains.jet.codegen.intrinsics; - -import com.intellij.psi.PsiElement; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.jet.codegen.ExpressionCodegen; -import org.jetbrains.jet.codegen.StackValue; -import org.jetbrains.jet.lang.psi.JetExpression; -import org.jetbrains.org.objectweb.asm.Type; -import org.jetbrains.org.objectweb.asm.commons.InstructionAdapter; - -import java.util.List; - -import static org.jetbrains.jet.lang.resolve.java.AsmTypeConstants.INT_RANGE_TYPE; -import static org.jetbrains.org.objectweb.asm.Type.INT_TYPE; - -public class ArrayIndices extends IntrinsicMethod { - @NotNull - @Override - public Type generateImpl( - @NotNull ExpressionCodegen codegen, - @NotNull InstructionAdapter v, - @NotNull Type returnType, - PsiElement element, - List arguments, - StackValue receiver - ) { - receiver.put(receiver.type, v); - v.arraylength(); - v.invokestatic(IntrinsicMethods.INTRINSICS_CLASS_NAME, "arrayIndices", Type.getMethodDescriptor(INT_RANGE_TYPE, INT_TYPE), false); - return INT_RANGE_TYPE; - } -} diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/IntrinsicMethods.java b/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/IntrinsicMethods.java index e4c927752ba..14dec6bc802 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/IntrinsicMethods.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/IntrinsicMethods.java @@ -48,7 +48,6 @@ public class IntrinsicMethods { private static final IntrinsicMethod HASH_CODE = new HashCode(); private static final IntrinsicMethod ARRAY_SIZE = new ArraySize(); - private static final IntrinsicMethod ARRAY_INDICES = new ArrayIndices(); private static final Equals EQUALS = new Equals(); private static final IdentityEquals IDENTITY_EQUALS = new IdentityEquals(); private static final IteratorNext ITERATOR_NEXT = new IteratorNext(); @@ -143,7 +142,6 @@ public class IntrinsicMethods { } declareIntrinsicFunction("Array", "size", 0, ARRAY_SIZE); - declareIntrinsicProperty("Array", "indices", ARRAY_INDICES); declareIntrinsicFunction("Array", "set", 2, ARRAY_SET); declareIntrinsicFunction("Array", "get", 1, ARRAY_GET); declareIntrinsicFunction("Array", "clone", 0, CLONE); @@ -153,7 +151,6 @@ public class IntrinsicMethods { private void declareArrayMethodsForPrimitive(@NotNull JvmPrimitiveType jvmPrimitiveType) { String arrayTypeName = jvmPrimitiveType.getPrimitiveType().getArrayTypeName().asString(); declareIntrinsicFunction(arrayTypeName, "size", 0, ARRAY_SIZE); - declareIntrinsicProperty(arrayTypeName, "indices", ARRAY_INDICES); declareIntrinsicFunction(arrayTypeName, "set", 2, ARRAY_SET); declareIntrinsicFunction(arrayTypeName, "get", 1, ARRAY_GET); declareIntrinsicFunction(arrayTypeName, "clone", 0, CLONE); diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/AsmTypeConstants.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/AsmTypeConstants.java index f7dc92c7bac..bcf3c54ce68 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/AsmTypeConstants.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/AsmTypeConstants.java @@ -33,7 +33,6 @@ public class AsmTypeConstants { public static final Type UNIT_TYPE = Type.getObjectType(BUILT_INS_PACKAGE_FQ_NAME + "/Unit"); public static final Type FUNCTION1_TYPE = Type.getObjectType(BUILT_INS_PACKAGE_FQ_NAME + "/Function1"); - public static final Type INT_RANGE_TYPE = Type.getObjectType(BUILT_INS_PACKAGE_FQ_NAME + "/IntRange"); public static final Type PROPERTY_METADATA_TYPE = Type.getObjectType(BUILT_INS_PACKAGE_FQ_NAME + "/PropertyMetadata"); public static final Type PROPERTY_METADATA_IMPL_TYPE = Type.getObjectType(BUILT_INS_PACKAGE_FQ_NAME + "/PropertyMetadataImpl"); diff --git a/compiler/testData/builtin-classes.txt b/compiler/testData/builtin-classes.txt index ab8ffbc5111..8ee10fa0ff2 100644 --- a/compiler/testData/builtin-classes.txt +++ b/compiler/testData/builtin-classes.txt @@ -15,8 +15,6 @@ public open class Any { public final class Array : kotlin.Cloneable { /*primary*/ public constructor Array(/*0*/ size: kotlin.Int, /*1*/ init: kotlin.Function1) - public final val indices: kotlin.IntRange - public final fun (): kotlin.IntRange public open override /*1*/ fun clone(): kotlin.Array public final fun get(/*0*/ index: kotlin.Int): T public final fun iterator(): kotlin.Iterator @@ -35,8 +33,6 @@ public final class Boolean : kotlin.Comparable { public final class BooleanArray : kotlin.Cloneable { /*primary*/ public constructor BooleanArray(/*0*/ size: kotlin.Int) - public final val indices: kotlin.IntRange - public final fun (): kotlin.IntRange public open override /*1*/ fun clone(): kotlin.BooleanArray public final fun get(/*0*/ index: kotlin.Int): kotlin.Boolean public final fun iterator(): kotlin.BooleanIterator @@ -117,8 +113,6 @@ public final class Byte : kotlin.Number, kotlin.Comparable { public final class ByteArray : kotlin.Cloneable { /*primary*/ public constructor ByteArray(/*0*/ size: kotlin.Int) - public final val indices: kotlin.IntRange - public final fun (): kotlin.IntRange public open override /*1*/ fun clone(): kotlin.ByteArray public final fun get(/*0*/ index: kotlin.Int): kotlin.Byte public final fun iterator(): kotlin.ByteIterator @@ -237,8 +231,6 @@ public final class Char : kotlin.Comparable { public final class CharArray : kotlin.Cloneable { /*primary*/ public constructor CharArray(/*0*/ size: kotlin.Int) - public final val indices: kotlin.IntRange - public final fun (): kotlin.IntRange public open override /*1*/ fun clone(): kotlin.CharArray public final fun get(/*0*/ index: kotlin.Int): kotlin.Char public final fun iterator(): kotlin.CharIterator @@ -388,8 +380,6 @@ public final class Double : kotlin.Number, kotlin.Comparable { public final class DoubleArray : kotlin.Cloneable { /*primary*/ public constructor DoubleArray(/*0*/ size: kotlin.Int) - public final val indices: kotlin.IntRange - public final fun (): kotlin.IntRange public open override /*1*/ fun clone(): kotlin.DoubleArray public final fun get(/*0*/ index: kotlin.Int): kotlin.Double public final fun iterator(): kotlin.DoubleIterator @@ -614,8 +604,6 @@ public final class Float : kotlin.Number, kotlin.Comparable { public final class FloatArray : kotlin.Cloneable { /*primary*/ public constructor FloatArray(/*0*/ size: kotlin.Int) - public final val indices: kotlin.IntRange - public final fun (): kotlin.IntRange public open override /*1*/ fun clone(): kotlin.FloatArray public final fun get(/*0*/ index: kotlin.Int): kotlin.Float public final fun iterator(): kotlin.FloatIterator @@ -918,8 +906,6 @@ public final class Int : kotlin.Number, kotlin.Comparable { public final class IntArray : kotlin.Cloneable { /*primary*/ public constructor IntArray(/*0*/ size: kotlin.Int) - public final val indices: kotlin.IntRange - public final fun (): kotlin.IntRange public open override /*1*/ fun clone(): kotlin.IntArray public final fun get(/*0*/ index: kotlin.Int): kotlin.Int public final fun iterator(): kotlin.IntIterator @@ -1087,8 +1073,6 @@ public final class Long : kotlin.Number, kotlin.Comparable { public final class LongArray : kotlin.Cloneable { /*primary*/ public constructor LongArray(/*0*/ size: kotlin.Int) - public final val indices: kotlin.IntRange - public final fun (): kotlin.IntRange public open override /*1*/ fun clone(): kotlin.LongArray public final fun get(/*0*/ index: kotlin.Int): kotlin.Long public final fun iterator(): kotlin.LongIterator @@ -1381,8 +1365,6 @@ public final class Short : kotlin.Number, kotlin.Comparable { public final class ShortArray : kotlin.Cloneable { /*primary*/ public constructor ShortArray(/*0*/ size: kotlin.Int) - public final val indices: kotlin.IntRange - public final fun (): kotlin.IntRange public open override /*1*/ fun clone(): kotlin.ShortArray public final fun get(/*0*/ index: kotlin.Int): kotlin.Short public final fun iterator(): kotlin.ShortIterator diff --git a/compiler/testData/codegen/box/arrays/kt2997.kt b/compiler/testData/codegen/box/arrays/kt2997.kt index 4c31fa08153..bf272a5e054 100644 --- a/compiler/testData/codegen/box/arrays/kt2997.kt +++ b/compiler/testData/codegen/box/arrays/kt2997.kt @@ -5,55 +5,47 @@ fun foo(a: Any): Int { a.get(0) a.set(0, 1) a.iterator() - a.indices return a.size() } if (a is ShortArray) { a.get(0) a.set(0, 1) a.iterator() - a.indices return a.size() } if (a is ByteArray) { a.get(0) a.set(0, 1) a.iterator() - a.indices return a.size() } if (a is FloatArray) { a.get(0) a.set(0, 1.toFloat()) a.iterator() - a.indices return a.size() } if (a is DoubleArray) { a.get(0) a.set(0, 1.0) a.iterator() - a.indices return a.size() } if (a is BooleanArray) { a.get(0) a.set(0, false) a.iterator() - a.indices return a.size() } if (a is CharArray) { a.get(0) a.set(0, 'a') a.iterator() - a.indices return a.size() } if (a is Array<*>) { if (a.size() > 0) a.get(0) a.iterator() - a.indices return a.size() } diff --git a/compiler/testData/codegen/box/vararg/kt581.kt b/compiler/testData/codegen/box/vararg/kt581.kt index 2124d3cb53c..50ce681cd35 100644 --- a/compiler/testData/codegen/box/vararg/kt581.kt +++ b/compiler/testData/codegen/box/vararg/kt581.kt @@ -3,7 +3,7 @@ package whats.the.difference import java.util.HashSet fun iarray(vararg a : Int) = a // BUG - +val IntArray.indices: IntRange get() = IntRange(0, lastIndex()) fun IntArray.lastIndex() = size() - 1 fun box() : String { diff --git a/compiler/testData/codegen/box/arrays/indices.kt b/compiler/testData/codegen/boxWithStdlib/arrays/indices.kt similarity index 100% rename from compiler/testData/codegen/box/arrays/indices.kt rename to compiler/testData/codegen/boxWithStdlib/arrays/indices.kt diff --git a/compiler/testData/codegen/box/arrays/indicesChar.kt b/compiler/testData/codegen/boxWithStdlib/arrays/indicesChar.kt similarity index 100% rename from compiler/testData/codegen/box/arrays/indicesChar.kt rename to compiler/testData/codegen/boxWithStdlib/arrays/indicesChar.kt diff --git a/compiler/testData/codegen/box/controlStructures/forIntRange.kt b/compiler/testData/codegen/boxWithStdlib/ranges/forIntRange.kt similarity index 100% rename from compiler/testData/codegen/box/controlStructures/forIntRange.kt rename to compiler/testData/codegen/boxWithStdlib/ranges/forIntRange.kt diff --git a/compiler/testData/codegen/box/controlStructures/kt998.kt b/compiler/testData/codegen/boxWithStdlib/regressions/kt998.kt similarity index 100% rename from compiler/testData/codegen/box/controlStructures/kt998.kt rename to compiler/testData/codegen/boxWithStdlib/regressions/kt998.kt diff --git a/compiler/testData/diagnostics/tests/regressions/kt580.kt b/compiler/testData/diagnostics/tests/regressions/kt580.kt index 6664ace4aff..460aa8cc956 100644 --- a/compiler/testData/diagnostics/tests/regressions/kt580.kt +++ b/compiler/testData/diagnostics/tests/regressions/kt580.kt @@ -19,3 +19,4 @@ fun main() { fun Array.lastIndex() = size() - 1 val Array.lastIndex : Int get() = size() - 1 +val Array.indices : IntRange get() = IntRange(0, lastIndex) diff --git a/compiler/testData/diagnostics/tests/regressions/kt580.lazy.log b/compiler/testData/diagnostics/tests/regressions/kt580.lazy.log index 9a593404b1c..935c5e842ea 100644 --- a/compiler/testData/diagnostics/tests/regressions/kt580.lazy.log +++ b/compiler/testData/diagnostics/tests/regressions/kt580.lazy.log @@ -129,28 +129,28 @@ LazyJavaClassifierType@101['E'] { arguments = ArrayList@102[empty] classifier = JavaTypeParameterImpl@103['E'] nullable = 'false': Boolean@85 - typeConstructor = AbstractLazyTypeParameterDescriptor$1@100 + typeConstructor = AbstractLazyTypeParameterDescriptor$1@104 } -LazyJavaClassifierType@104['E'] { - arguments = ArrayList@105[empty] - classifier = JavaTypeParameterImpl@106['E'] +LazyJavaClassifierType@105['E'] { + arguments = ArrayList@106[empty] + classifier = JavaTypeParameterImpl@107['E'] nullable = 'false': Boolean@85 - typeConstructor = AbstractLazyTypeParameterDescriptor$1@107 + typeConstructor = AbstractLazyTypeParameterDescriptor$1@100 } LazyJavaClassifierType@108['E'] { arguments = ArrayList@109[empty] classifier = JavaTypeParameterImpl@110['E'] nullable = 'false': Boolean@85 - typeConstructor = AbstractLazyTypeParameterDescriptor$1@111 + typeConstructor = AbstractLazyTypeParameterDescriptor$1@100 } -LazyJavaClassifierType@112['E'] { - arguments = ArrayList@113[empty] - classifier = JavaTypeParameterImpl@114['E'] +LazyJavaClassifierType@111['E'] { + arguments = ArrayList@112[empty] + classifier = JavaTypeParameterImpl@113['E'] nullable = 'false': Boolean@85 - typeConstructor = AbstractLazyTypeParameterDescriptor$1@100 + typeConstructor = AbstractLazyTypeParameterDescriptor$1@114 } LazyJavaClassifierType@115['E'] { @@ -164,7 +164,7 @@ LazyJavaClassifierType@118['E'] { arguments = ArrayList@119[empty] classifier = JavaTypeParameterImpl@120['E'] nullable = 'false': Boolean@85 - typeConstructor = AbstractLazyTypeParameterDescriptor$1@100 + typeConstructor = AbstractLazyTypeParameterDescriptor$1@104 } LazyJavaClassifierType@121['E'] { @@ -178,110 +178,110 @@ LazyJavaClassifierType@124['E'] { arguments = ArrayList@125[empty] classifier = JavaTypeParameterImpl@126['E'] nullable = 'false': Boolean@85 - typeConstructor = AbstractLazyTypeParameterDescriptor$1@107 + typeConstructor = AbstractLazyTypeParameterDescriptor$1@104 } LazyJavaClassifierType@127['E'] { arguments = ArrayList@128[empty] classifier = JavaTypeParameterImpl@129['E'] nullable = 'false': Boolean@85 - typeConstructor = AbstractLazyTypeParameterDescriptor$1@111 + typeConstructor = AbstractLazyTypeParameterDescriptor$1@114 } LazyJavaClassifierType@130['E'] { arguments = ArrayList@131[empty] classifier = JavaTypeParameterImpl@132['E'] nullable = 'false': Boolean@85 - typeConstructor = AbstractLazyTypeParameterDescriptor$1@111 + typeConstructor = AbstractLazyTypeParameterDescriptor$1@104 } LazyJavaClassifierType@133['E'] { arguments = ArrayList@134[empty] classifier = JavaTypeParameterImpl@135['E'] nullable = 'false': Boolean@85 - typeConstructor = AbstractLazyTypeParameterDescriptor$1@111 + typeConstructor = AbstractLazyTypeParameterDescriptor$1@100 } LazyJavaClassifierType@136['E'] { arguments = ArrayList@137[empty] - classifier = JavaTypeParameterImpl@126['E'] + classifier = JavaTypeParameterImpl@103['E'] nullable = 'true': Boolean@91 - typeConstructor = AbstractLazyTypeParameterDescriptor$1@107 + typeConstructor = AbstractLazyTypeParameterDescriptor$1@104 } LazyJavaClassifierType@138['E'] { arguments = ArrayList@139[empty] - classifier = JavaTypeParameterImpl@117['E'] + classifier = JavaTypeParameterImpl@110['E'] nullable = 'true': Boolean@91 typeConstructor = AbstractLazyTypeParameterDescriptor$1@100 } LazyJavaClassifierType@140['E'] { arguments = ArrayList@141[empty] - classifier = JavaTypeParameterImpl@110['E'] + classifier = JavaTypeParameterImpl@113['E'] nullable = 'true': Boolean@91 - typeConstructor = AbstractLazyTypeParameterDescriptor$1@111 + typeConstructor = AbstractLazyTypeParameterDescriptor$1@114 } LazyJavaClassifierType@142['E'] { arguments = ArrayList@143[empty] - classifier = JavaTypeParameterImpl@103['E'] + classifier = JavaTypeParameterImpl@123['E'] nullable = 'true': Boolean@91 typeConstructor = AbstractLazyTypeParameterDescriptor$1@100 } LazyJavaClassifierType@144['E'] { arguments = ArrayList@145[empty] - classifier = JavaTypeParameterImpl@135['E'] + classifier = JavaTypeParameterImpl@107['E'] nullable = 'true': Boolean@91 - typeConstructor = AbstractLazyTypeParameterDescriptor$1@111 + typeConstructor = AbstractLazyTypeParameterDescriptor$1@100 } LazyJavaClassifierType@146['E'] { arguments = ArrayList@147[empty] classifier = JavaTypeParameterImpl@129['E'] nullable = 'true': Boolean@91 - typeConstructor = AbstractLazyTypeParameterDescriptor$1@111 + typeConstructor = AbstractLazyTypeParameterDescriptor$1@114 } LazyJavaClassifierType@148['E'] { arguments = ArrayList@149[empty] - classifier = JavaTypeParameterImpl@114['E'] + classifier = JavaTypeParameterImpl@126['E'] nullable = 'true': Boolean@91 - typeConstructor = AbstractLazyTypeParameterDescriptor$1@100 + typeConstructor = AbstractLazyTypeParameterDescriptor$1@104 } LazyJavaClassifierType@150['E'] { arguments = ArrayList@151[empty] - classifier = JavaTypeParameterImpl@106['E'] - nullable = 'true': Boolean@91 - typeConstructor = AbstractLazyTypeParameterDescriptor$1@107 -} - -LazyJavaClassifierType@152['E'] { - arguments = ArrayList@153[empty] - classifier = JavaTypeParameterImpl@99['E'] + classifier = JavaTypeParameterImpl@117['E'] nullable = 'true': Boolean@91 typeConstructor = AbstractLazyTypeParameterDescriptor$1@100 } +LazyJavaClassifierType@152['E'] { + arguments = ArrayList@153[empty] + classifier = JavaTypeParameterImpl@132['E'] + nullable = 'true': Boolean@91 + typeConstructor = AbstractLazyTypeParameterDescriptor$1@104 +} + LazyJavaClassifierType@154['E'] { arguments = ArrayList@155[empty] - classifier = JavaTypeParameterImpl@123['E'] + classifier = JavaTypeParameterImpl@99['E'] nullable = 'true': Boolean@91 typeConstructor = AbstractLazyTypeParameterDescriptor$1@100 } LazyJavaClassifierType@156['E'] { arguments = ArrayList@157[empty] - classifier = JavaTypeParameterImpl@132['E'] + classifier = JavaTypeParameterImpl@120['E'] nullable = 'true': Boolean@91 - typeConstructor = AbstractLazyTypeParameterDescriptor$1@111 + typeConstructor = AbstractLazyTypeParameterDescriptor$1@104 } LazyJavaClassifierType@158['E'] { arguments = ArrayList@159[empty] - classifier = JavaTypeParameterImpl@120['E'] + classifier = JavaTypeParameterImpl@135['E'] nullable = 'true': Boolean@91 typeConstructor = AbstractLazyTypeParameterDescriptor$1@100 } @@ -333,157 +333,167 @@ LazyJavaPackageFragmentProvider@181 { packageFragments('': FqName@182) = LazyJavaPackageFragment@183[''] packageFragments('Array': FqName@184) = null packageFragments('Int': FqName@185) = null - packageFragments('String': FqName@186) = null - packageFragments('T': FqName@187) = null - packageFragments('java': FqName@188) = LazyJavaPackageFragment@189['java'] - packageFragments('java.io': FqName@190) = LazyJavaPackageFragment@191['io'] - packageFragments('java.lang': FqName@192) = LazyJavaPackageFragment@193['lang'] - packageFragments('java.lang.Array': FqName@194) = null - packageFragments('java.lang.Int': FqName@195) = null - packageFragments('java.lang.String': FqName@196) = null - packageFragments('java.lang.T': FqName@197) = null - packageFragments('java.util': FqName@198) = LazyJavaPackageFragment@199['util'] - packageFragments('java.util.Array': FqName@200) = null - packageFragments('java.util.Int': FqName@201) = null - packageFragments('java.util.String': FqName@202) = null - packageFragments('java.util.T': FqName@203) = null - packageFragments('kotlin': FqName@204) = null - packageFragments('kotlin.Array': FqName@205) = null - packageFragments('kotlin.Int': FqName@206) = null - packageFragments('kotlin.String': FqName@207) = null - packageFragments('kotlin.T': FqName@208) = null - packageFragments('kotlin.io': FqName@209) = null - packageFragments('kotlin.jvm': FqName@210) = null - packageFragments('whats': FqName@211) = null - packageFragments('whats.the': FqName@212) = null - packageFragments('whats.the.difference': FqName@213) = null - packageFragments('whats.the.difference.Array': FqName@214) = null - packageFragments('whats.the.difference.Int': FqName@215) = null - packageFragments('whats.the.difference.String': FqName@216) = null - packageFragments('whats.the.difference.T': FqName@217) = null - packageFragments('whats.the.difference.lastIndex': FqName@218) = null + packageFragments('IntRange': FqName@186) = null + packageFragments('String': FqName@187) = null + packageFragments('T': FqName@188) = null + packageFragments('java': FqName@189) = LazyJavaPackageFragment@190['java'] + packageFragments('java.io': FqName@191) = LazyJavaPackageFragment@192['io'] + packageFragments('java.lang': FqName@193) = LazyJavaPackageFragment@194['lang'] + packageFragments('java.lang.Array': FqName@195) = null + packageFragments('java.lang.Int': FqName@196) = null + packageFragments('java.lang.IntRange': FqName@197) = null + packageFragments('java.lang.String': FqName@198) = null + packageFragments('java.lang.T': FqName@199) = null + packageFragments('java.util': FqName@200) = LazyJavaPackageFragment@201['util'] + packageFragments('java.util.Array': FqName@202) = null + packageFragments('java.util.Int': FqName@203) = null + packageFragments('java.util.IntRange': FqName@204) = null + packageFragments('java.util.String': FqName@205) = null + packageFragments('java.util.T': FqName@206) = null + packageFragments('kotlin': FqName@207) = null + packageFragments('kotlin.Array': FqName@208) = null + packageFragments('kotlin.Int': FqName@209) = null + packageFragments('kotlin.IntRange': FqName@210) = null + packageFragments('kotlin.String': FqName@211) = null + packageFragments('kotlin.T': FqName@212) = null + packageFragments('kotlin.io': FqName@213) = null + packageFragments('kotlin.jvm': FqName@214) = null + packageFragments('whats': FqName@215) = null + packageFragments('whats.the': FqName@216) = null + packageFragments('whats.the.difference': FqName@217) = null + packageFragments('whats.the.difference.Array': FqName@218) = null + packageFragments('whats.the.difference.Int': FqName@219) = null + packageFragments('whats.the.difference.IntRange': FqName@220) = null + packageFragments('whats.the.difference.String': FqName@221) = null + packageFragments('whats.the.difference.T': FqName@222) = null + packageFragments('whats.the.difference.indices': FqName@223) = null + packageFragments('whats.the.difference.lastIndex': FqName@224) = null topLevelClasses(JavaClassImpl@69['AbstractCollection']) = LazyJavaClassDescriptor@3['AbstractCollection'] topLevelClasses(JavaClassImpl@73['AbstractList']) = LazyJavaClassDescriptor@14['AbstractList'] - topLevelClasses(JavaClassImpl@219['ArrayList']) = LazyJavaClassDescriptor@24['ArrayList'] + topLevelClasses(JavaClassImpl@225['ArrayList']) = LazyJavaClassDescriptor@24['ArrayList'] topLevelClasses(JavaClassImpl@177['RandomAccess']) = LazyJavaClassDescriptor@39['RandomAccess'] topLevelClasses(JavaClassImpl@180['Serializable']) = LazyJavaClassDescriptor@43['Serializable'] } -LazyJavaPackageFragment@189['java'] { - classes('lang': Name@220) = null // through LazyPackageFragmentScopeForJavaPackage@221 - classes('util': Name@222) = null // through LazyPackageFragmentScopeForJavaPackage@221 - deserializedPackageScope = Empty@223 // through LazyPackageFragmentScopeForJavaPackage@221 - functions('lang': Name@224) = EmptyList@11[empty] // through LazyPackageFragmentScopeForJavaPackage@221 - functions('util': Name@225) = EmptyList@11[empty] // through LazyPackageFragmentScopeForJavaPackage@221 - memberIndex = computeMemberIndex$1@226 // through LazyPackageFragmentScopeForJavaPackage@221 +LazyJavaPackageFragment@190['java'] { + classes('lang': Name@226) = null // through LazyPackageFragmentScopeForJavaPackage@227 + classes('util': Name@228) = null // through LazyPackageFragmentScopeForJavaPackage@227 + deserializedPackageScope = Empty@229 // through LazyPackageFragmentScopeForJavaPackage@227 + functions('lang': Name@230) = EmptyList@11[empty] // through LazyPackageFragmentScopeForJavaPackage@227 + functions('util': Name@231) = EmptyList@11[empty] // through LazyPackageFragmentScopeForJavaPackage@227 + memberIndex = computeMemberIndex$1@232 // through LazyPackageFragmentScopeForJavaPackage@227 } -LazyJavaPackageFragment@193['lang'] { - classes('ArrayList': Name@227) = null // through LazyPackageFragmentScopeForJavaPackage@228 - classes('add': Name@10) = null // through LazyPackageFragmentScopeForJavaPackage@228 - classes('get': Name@229) = null // through LazyPackageFragmentScopeForJavaPackage@228 - classes('hasNext': Name@230) = null // through LazyPackageFragmentScopeForJavaPackage@228 - classes('iarray': Name@231) = null // through LazyPackageFragmentScopeForJavaPackage@228 - classes('iterator': Name@232) = null // through LazyPackageFragmentScopeForJavaPackage@228 - classes('lastIndex': Name@233) = null // through LazyPackageFragmentScopeForJavaPackage@228 - classes('minus': Name@234) = null // through LazyPackageFragmentScopeForJavaPackage@228 - classes('next': Name@235) = null // through LazyPackageFragmentScopeForJavaPackage@228 - classes('rangeTo': Name@236) = null // through LazyPackageFragmentScopeForJavaPackage@228 - classes('size': Name@237) = null // through LazyPackageFragmentScopeForJavaPackage@228 - deserializedPackageScope = Empty@223 // through LazyPackageFragmentScopeForJavaPackage@228 - functions('ArrayList': Name@227) = EmptyList@11[empty] // through LazyPackageFragmentScopeForJavaPackage@228 - functions('add': Name@10) = EmptyList@11[empty] // through LazyPackageFragmentScopeForJavaPackage@228 - functions('get': Name@229) = EmptyList@11[empty] // through LazyPackageFragmentScopeForJavaPackage@228 - functions('hasNext': Name@230) = EmptyList@11[empty] // through LazyPackageFragmentScopeForJavaPackage@228 - functions('iarray': Name@231) = EmptyList@11[empty] // through LazyPackageFragmentScopeForJavaPackage@228 - functions('iterator': Name@232) = EmptyList@11[empty] // through LazyPackageFragmentScopeForJavaPackage@228 - functions('lastIndex': Name@233) = EmptyList@11[empty] // through LazyPackageFragmentScopeForJavaPackage@228 - functions('minus': Name@234) = EmptyList@11[empty] // through LazyPackageFragmentScopeForJavaPackage@228 - functions('next': Name@235) = EmptyList@11[empty] // through LazyPackageFragmentScopeForJavaPackage@228 - functions('rangeTo': Name@236) = EmptyList@11[empty] // through LazyPackageFragmentScopeForJavaPackage@228 - functions('size': Name@237) = EmptyList@11[empty] // through LazyPackageFragmentScopeForJavaPackage@228 - memberIndex = computeMemberIndex$1@238 // through LazyPackageFragmentScopeForJavaPackage@228 +LazyJavaPackageFragment@194['lang'] { + classes('ArrayList': Name@233) = null // through LazyPackageFragmentScopeForJavaPackage@234 + classes('IntRange': Name@235) = null // through LazyPackageFragmentScopeForJavaPackage@234 + classes('add': Name@10) = null // through LazyPackageFragmentScopeForJavaPackage@234 + classes('get': Name@236) = null // through LazyPackageFragmentScopeForJavaPackage@234 + classes('hasNext': Name@237) = null // through LazyPackageFragmentScopeForJavaPackage@234 + classes('iarray': Name@238) = null // through LazyPackageFragmentScopeForJavaPackage@234 + classes('iterator': Name@239) = null // through LazyPackageFragmentScopeForJavaPackage@234 + classes('lastIndex': Name@240) = null // through LazyPackageFragmentScopeForJavaPackage@234 + classes('minus': Name@241) = null // through LazyPackageFragmentScopeForJavaPackage@234 + classes('next': Name@242) = null // through LazyPackageFragmentScopeForJavaPackage@234 + classes('rangeTo': Name@243) = null // through LazyPackageFragmentScopeForJavaPackage@234 + classes('size': Name@244) = null // through LazyPackageFragmentScopeForJavaPackage@234 + deserializedPackageScope = Empty@229 // through LazyPackageFragmentScopeForJavaPackage@234 + functions('ArrayList': Name@233) = EmptyList@11[empty] // through LazyPackageFragmentScopeForJavaPackage@234 + functions('IntRange': Name@235) = EmptyList@11[empty] // through LazyPackageFragmentScopeForJavaPackage@234 + functions('add': Name@10) = EmptyList@11[empty] // through LazyPackageFragmentScopeForJavaPackage@234 + functions('get': Name@236) = EmptyList@11[empty] // through LazyPackageFragmentScopeForJavaPackage@234 + functions('hasNext': Name@237) = EmptyList@11[empty] // through LazyPackageFragmentScopeForJavaPackage@234 + functions('iarray': Name@238) = EmptyList@11[empty] // through LazyPackageFragmentScopeForJavaPackage@234 + functions('iterator': Name@239) = EmptyList@11[empty] // through LazyPackageFragmentScopeForJavaPackage@234 + functions('lastIndex': Name@245) = EmptyList@11[empty] // through LazyPackageFragmentScopeForJavaPackage@234 + functions('minus': Name@241) = EmptyList@11[empty] // through LazyPackageFragmentScopeForJavaPackage@234 + functions('next': Name@242) = EmptyList@11[empty] // through LazyPackageFragmentScopeForJavaPackage@234 + functions('rangeTo': Name@243) = EmptyList@11[empty] // through LazyPackageFragmentScopeForJavaPackage@234 + functions('size': Name@244) = EmptyList@11[empty] // through LazyPackageFragmentScopeForJavaPackage@234 + memberIndex = computeMemberIndex$1@246 // through LazyPackageFragmentScopeForJavaPackage@234 } -LazyJavaPackageFragment@199['util'] { - classes('Array': Name@239) = null // through LazyPackageFragmentScopeForJavaPackage@240 - classes('ArrayList': Name@227) = LazyJavaClassDescriptor@24['ArrayList'] // through LazyPackageFragmentScopeForJavaPackage@240 - classes('Int': Name@241) = null // through LazyPackageFragmentScopeForJavaPackage@240 - classes('String': Name@242) = null // through LazyPackageFragmentScopeForJavaPackage@240 - classes('add': Name@10) = null // through LazyPackageFragmentScopeForJavaPackage@240 - classes('get': Name@229) = null // through LazyPackageFragmentScopeForJavaPackage@240 - classes('hasNext': Name@230) = null // through LazyPackageFragmentScopeForJavaPackage@240 - classes('iarray': Name@231) = null // through LazyPackageFragmentScopeForJavaPackage@240 - classes('iterator': Name@232) = null // through LazyPackageFragmentScopeForJavaPackage@240 - classes('lastIndex': Name@233) = null // through LazyPackageFragmentScopeForJavaPackage@240 - classes('minus': Name@234) = null // through LazyPackageFragmentScopeForJavaPackage@240 - classes('next': Name@235) = null // through LazyPackageFragmentScopeForJavaPackage@240 - classes('rangeTo': Name@236) = null // through LazyPackageFragmentScopeForJavaPackage@240 - classes('size': Name@237) = null // through LazyPackageFragmentScopeForJavaPackage@240 - deserializedPackageScope = Empty@223 // through LazyPackageFragmentScopeForJavaPackage@240 - functions('ArrayList': Name@227) = EmptyList@11[empty] // through LazyPackageFragmentScopeForJavaPackage@240 - functions('add': Name@10) = EmptyList@11[empty] // through LazyPackageFragmentScopeForJavaPackage@240 - functions('get': Name@229) = EmptyList@11[empty] // through LazyPackageFragmentScopeForJavaPackage@240 - functions('hasNext': Name@230) = EmptyList@11[empty] // through LazyPackageFragmentScopeForJavaPackage@240 - functions('iarray': Name@231) = EmptyList@11[empty] // through LazyPackageFragmentScopeForJavaPackage@240 - functions('iterator': Name@232) = EmptyList@11[empty] // through LazyPackageFragmentScopeForJavaPackage@240 - functions('lastIndex': Name@233) = EmptyList@11[empty] // through LazyPackageFragmentScopeForJavaPackage@240 - functions('minus': Name@234) = EmptyList@11[empty] // through LazyPackageFragmentScopeForJavaPackage@240 - functions('next': Name@235) = EmptyList@11[empty] // through LazyPackageFragmentScopeForJavaPackage@240 - functions('rangeTo': Name@236) = EmptyList@11[empty] // through LazyPackageFragmentScopeForJavaPackage@240 - functions('size': Name@237) = EmptyList@11[empty] // through LazyPackageFragmentScopeForJavaPackage@240 - memberIndex = computeMemberIndex$1@243 // through LazyPackageFragmentScopeForJavaPackage@240 +LazyJavaPackageFragment@201['util'] { + classes('Array': Name@247) = null // through LazyPackageFragmentScopeForJavaPackage@248 + classes('ArrayList': Name@233) = LazyJavaClassDescriptor@24['ArrayList'] // through LazyPackageFragmentScopeForJavaPackage@248 + classes('Int': Name@249) = null // through LazyPackageFragmentScopeForJavaPackage@248 + classes('IntRange': Name@250) = null // through LazyPackageFragmentScopeForJavaPackage@248 + classes('String': Name@251) = null // through LazyPackageFragmentScopeForJavaPackage@248 + classes('add': Name@10) = null // through LazyPackageFragmentScopeForJavaPackage@248 + classes('get': Name@236) = null // through LazyPackageFragmentScopeForJavaPackage@248 + classes('hasNext': Name@237) = null // through LazyPackageFragmentScopeForJavaPackage@248 + classes('iarray': Name@238) = null // through LazyPackageFragmentScopeForJavaPackage@248 + classes('iterator': Name@239) = null // through LazyPackageFragmentScopeForJavaPackage@248 + classes('lastIndex': Name@240) = null // through LazyPackageFragmentScopeForJavaPackage@248 + classes('minus': Name@241) = null // through LazyPackageFragmentScopeForJavaPackage@248 + classes('next': Name@242) = null // through LazyPackageFragmentScopeForJavaPackage@248 + classes('rangeTo': Name@243) = null // through LazyPackageFragmentScopeForJavaPackage@248 + classes('size': Name@244) = null // through LazyPackageFragmentScopeForJavaPackage@248 + deserializedPackageScope = Empty@229 // through LazyPackageFragmentScopeForJavaPackage@248 + functions('ArrayList': Name@233) = EmptyList@11[empty] // through LazyPackageFragmentScopeForJavaPackage@248 + functions('IntRange': Name@235) = EmptyList@11[empty] // through LazyPackageFragmentScopeForJavaPackage@248 + functions('add': Name@10) = EmptyList@11[empty] // through LazyPackageFragmentScopeForJavaPackage@248 + functions('get': Name@236) = EmptyList@11[empty] // through LazyPackageFragmentScopeForJavaPackage@248 + functions('hasNext': Name@237) = EmptyList@11[empty] // through LazyPackageFragmentScopeForJavaPackage@248 + functions('iarray': Name@238) = EmptyList@11[empty] // through LazyPackageFragmentScopeForJavaPackage@248 + functions('iterator': Name@239) = EmptyList@11[empty] // through LazyPackageFragmentScopeForJavaPackage@248 + functions('lastIndex': Name@245) = EmptyList@11[empty] // through LazyPackageFragmentScopeForJavaPackage@248 + functions('minus': Name@241) = EmptyList@11[empty] // through LazyPackageFragmentScopeForJavaPackage@248 + functions('next': Name@242) = EmptyList@11[empty] // through LazyPackageFragmentScopeForJavaPackage@248 + functions('rangeTo': Name@243) = EmptyList@11[empty] // through LazyPackageFragmentScopeForJavaPackage@248 + functions('size': Name@244) = EmptyList@11[empty] // through LazyPackageFragmentScopeForJavaPackage@248 + memberIndex = computeMemberIndex$1@252 // through LazyPackageFragmentScopeForJavaPackage@248 } LazyJavaTypeParameterDescriptor@57['E'] { - defaultType = JetTypeImpl@244['E'] + defaultType = JetTypeImpl@253['E'] typeConstructor = AbstractLazyTypeParameterDescriptor$1@100 - upperBounds = LinkedHashSet@245[1] { NullableType@246 } - upperBoundsAsType = NullableType@246 -} - -LazyJavaTypeParameterDescriptor@48['E'] { - defaultType = JetTypeImpl@247['E'] - typeConstructor = AbstractLazyTypeParameterDescriptor$1@107 - upperBounds = LinkedHashSet@248[1] { NullableType@249 } - upperBoundsAsType = NullableType@249 + upperBounds = LinkedHashSet@254[1] { NullableType@255 } + upperBoundsAsType = NullableType@255 } LazyJavaTypeParameterDescriptor@52['E'] { - defaultType = JetTypeImpl@250['E'] - typeConstructor = AbstractLazyTypeParameterDescriptor$1@111 - upperBounds = LinkedHashSet@251[1] { NullableType@252 } - upperBoundsAsType = NullableType@252 + defaultType = JetTypeImpl@256['E'] + typeConstructor = AbstractLazyTypeParameterDescriptor$1@104 + upperBounds = LinkedHashSet@257[1] { NullableType@258 } + upperBoundsAsType = NullableType@258 } -LazyJavaTypeParameterResolver@253 { - resolve(JavaTypeParameterImpl@254['E']) = LazyJavaTypeParameterDescriptor@48['E'] -} - -LazyJavaTypeParameterResolver@255 { - resolve(JavaTypeParameterImpl@256['E']) = LazyJavaTypeParameterDescriptor@57['E'] -} - -LazyJavaTypeParameterResolver@257 { - resolve(JavaTypeParameterImpl@258['E']) = LazyJavaTypeParameterDescriptor@52['E'] -} - -LazyJavaTypeParameterResolver@259 { - resolve(JavaTypeParameterImpl@123['E']) = null -} - -LazyJavaTypeParameterResolver@260 { - resolve(JavaTypeParameterImpl@126['E']) = null -} - -LazyJavaTypeParameterResolver@261 { - resolve(JavaTypeParameterImpl@99['E']) = null +LazyJavaTypeParameterDescriptor@48['E'] { + defaultType = JetTypeImpl@259['E'] + typeConstructor = AbstractLazyTypeParameterDescriptor$1@114 + upperBounds = LinkedHashSet@260[1] { NullableType@261 } + upperBoundsAsType = NullableType@261 } LazyJavaTypeParameterResolver@262 { + resolve(JavaTypeParameterImpl@263['E']) = LazyJavaTypeParameterDescriptor@48['E'] +} + +LazyJavaTypeParameterResolver@264 { + resolve(JavaTypeParameterImpl@265['E']) = LazyJavaTypeParameterDescriptor@57['E'] +} + +LazyJavaTypeParameterResolver@266 { + resolve(JavaTypeParameterImpl@267['E']) = LazyJavaTypeParameterDescriptor@52['E'] +} + +LazyJavaTypeParameterResolver@268 { resolve(JavaTypeParameterImpl@132['E']) = null } -LazyJavaTypeParameterResolver@263 { - resolve(JavaTypeParameterImpl@129['E']) = null +LazyJavaTypeParameterResolver@269 { + resolve(JavaTypeParameterImpl@126['E']) = null +} + +LazyJavaTypeParameterResolver@270 { + resolve(JavaTypeParameterImpl@113['E']) = null +} + +LazyJavaTypeParameterResolver@271 { + resolve(JavaTypeParameterImpl@123['E']) = null +} + +LazyJavaTypeParameterResolver@272 { + resolve(JavaTypeParameterImpl@117['E']) = null } diff --git a/compiler/testData/diagnostics/tests/regressions/kt580.txt b/compiler/testData/diagnostics/tests/regressions/kt580.txt index 465dfffd1df..4c1f52de1ac 100644 --- a/compiler/testData/diagnostics/tests/regressions/kt580.txt +++ b/compiler/testData/diagnostics/tests/regressions/kt580.txt @@ -5,6 +5,7 @@ package whats { package whats.the { package whats.the.difference { + internal val kotlin.Array.indices: kotlin.IntRange internal val kotlin.Array.lastIndex: kotlin.Int internal fun iarray(/*0*/ vararg a: kotlin.String /*kotlin.Array*/): kotlin.Array internal fun main(): kotlin.Unit diff --git a/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxCodegenTestGenerated.java index be11614eaca..efd74667060 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxCodegenTestGenerated.java @@ -129,18 +129,6 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { doTest(fileName); } - @TestMetadata("indices.kt") - public void testIndices() throws Exception { - String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/box/arrays/indices.kt"); - doTest(fileName); - } - - @TestMetadata("indicesChar.kt") - public void testIndicesChar() throws Exception { - String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/box/arrays/indicesChar.kt"); - doTest(fileName); - } - @TestMetadata("iterator.kt") public void testIterator() throws Exception { String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/box/arrays/iterator.kt"); @@ -1902,12 +1890,6 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { doTest(fileName); } - @TestMetadata("forIntRange.kt") - public void testForIntRange() throws Exception { - String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/box/controlStructures/forIntRange.kt"); - doTest(fileName); - } - @TestMetadata("forLoopMemberExtensionAll.kt") public void testForLoopMemberExtensionAll() throws Exception { String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/box/controlStructures/forLoopMemberExtensionAll.kt"); @@ -2124,12 +2106,6 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { doTest(fileName); } - @TestMetadata("kt998.kt") - public void testKt998() throws Exception { - String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/box/controlStructures/kt998.kt"); - doTest(fileName); - } - @TestMetadata("longRange.kt") public void testLongRange() throws Exception { String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/box/controlStructures/longRange.kt"); diff --git a/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxWithStdlibCodegenTestGenerated.java b/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxWithStdlibCodegenTestGenerated.java index 16d03f73cea..b68e3fe520e 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxWithStdlibCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxWithStdlibCodegenTestGenerated.java @@ -120,6 +120,18 @@ public class BlackBoxWithStdlibCodegenTestGenerated extends AbstractBlackBoxCode doTestWithStdlib(fileName); } + @TestMetadata("indices.kt") + public void testIndices() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/boxWithStdlib/arrays/indices.kt"); + doTestWithStdlib(fileName); + } + + @TestMetadata("indicesChar.kt") + public void testIndicesChar() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/boxWithStdlib/arrays/indicesChar.kt"); + doTestWithStdlib(fileName); + } + @TestMetadata("kt3771.kt") public void testKt3771() throws Exception { String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/boxWithStdlib/arrays/kt3771.kt"); @@ -1626,6 +1638,12 @@ public class BlackBoxWithStdlibCodegenTestGenerated extends AbstractBlackBoxCode doTestWithStdlib(fileName); } + @TestMetadata("forIntRange.kt") + public void testForIntRange() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/boxWithStdlib/ranges/forIntRange.kt"); + doTestWithStdlib(fileName); + } + @TestMetadata("multiAssignmentIterationOverIntRange.kt") public void testMultiAssignmentIterationOverIntRange() throws Exception { String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/boxWithStdlib/ranges/multiAssignmentIterationOverIntRange.kt"); @@ -2426,6 +2444,12 @@ public class BlackBoxWithStdlibCodegenTestGenerated extends AbstractBlackBoxCode doTestWithStdlib(fileName); } + @TestMetadata("kt998.kt") + public void testKt998() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/boxWithStdlib/regressions/kt998.kt"); + doTestWithStdlib(fileName); + } + @TestMetadata("objectCaptureOuterConstructorProperty.kt") public void testObjectCaptureOuterConstructorProperty() throws Exception { String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/boxWithStdlib/regressions/objectCaptureOuterConstructorProperty.kt"); diff --git a/core/builtins/native/kotlin/Array.kt b/core/builtins/native/kotlin/Array.kt index 17078e992f4..7314c46f8e9 100644 --- a/core/builtins/native/kotlin/Array.kt +++ b/core/builtins/native/kotlin/Array.kt @@ -24,7 +24,5 @@ public class Array(size: Int, init: (Int) -> T) : Cloneable { public fun iterator(): Iterator - public val indices: IntRange - public override fun clone(): Array } diff --git a/core/builtins/native/kotlin/Arrays.kt b/core/builtins/native/kotlin/Arrays.kt index 0b31e5a981a..9fdb5e73611 100644 --- a/core/builtins/native/kotlin/Arrays.kt +++ b/core/builtins/native/kotlin/Arrays.kt @@ -26,8 +26,6 @@ public class ByteArray(size: Int) : Cloneable { public fun iterator(): ByteIterator - public val indices: IntRange - public override fun clone(): ByteArray } @@ -39,8 +37,6 @@ public class CharArray(size: Int) : Cloneable { public fun iterator(): CharIterator - public val indices: IntRange - public override fun clone(): CharArray } @@ -52,8 +48,6 @@ public class ShortArray(size: Int) : Cloneable { public fun iterator(): ShortIterator - public val indices: IntRange - public override fun clone(): ShortArray } @@ -65,8 +59,6 @@ public class IntArray(size: Int) : Cloneable { public fun iterator(): IntIterator - public val indices: IntRange - public override fun clone(): IntArray } @@ -78,8 +70,6 @@ public class LongArray(size: Int) : Cloneable { public fun iterator(): LongIterator - public val indices: IntRange - public override fun clone(): LongArray } @@ -91,8 +81,6 @@ public class FloatArray(size: Int) : Cloneable { public fun iterator(): FloatIterator - public val indices: IntRange - public override fun clone(): FloatArray } @@ -104,8 +92,6 @@ public class DoubleArray(size: Int) : Cloneable { public fun iterator(): DoubleIterator - public val indices: IntRange - public override fun clone(): DoubleArray } @@ -117,8 +103,6 @@ public class BooleanArray(size: Int) : Cloneable { public fun iterator(): BooleanIterator - public val indices: IntRange - public override fun clone(): BooleanArray } diff --git a/core/runtime.jvm/src/kotlin/jvm/internal/Intrinsics.java b/core/runtime.jvm/src/kotlin/jvm/internal/Intrinsics.java index bc1287287f1..bce20822b32 100644 --- a/core/runtime.jvm/src/kotlin/jvm/internal/Intrinsics.java +++ b/core/runtime.jvm/src/kotlin/jvm/internal/Intrinsics.java @@ -19,6 +19,7 @@ package kotlin.jvm.internal; import kotlin.IntRange; import kotlin.KotlinNullPointerException; +import java.lang.Deprecated; import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; @@ -93,6 +94,8 @@ public class Intrinsics { return first == null ? second == null : first.equals(second); } + // This method is not used from generated code anymore but kept for backwards compatibility + @Deprecated public static IntRange arrayIndices(int length) { return new IntRange(0, length - 1); } diff --git a/generators/src/org/jetbrains/jet/generators/builtins/arrays.kt b/generators/src/org/jetbrains/jet/generators/builtins/arrays.kt index 1669d218cb4..a3e5b54eb07 100644 --- a/generators/src/org/jetbrains/jet/generators/builtins/arrays.kt +++ b/generators/src/org/jetbrains/jet/generators/builtins/arrays.kt @@ -34,8 +34,6 @@ class GenerateArrays(out: PrintWriter) : BuiltInsSourceGenerator(out) { out.println() out.println(" public fun iterator(): ${s}Iterator") out.println() - out.println(" public val indices: IntRange") - out.println() out.println(" public override fun clone(): ${s}Array") out.println("}") out.println() diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/functions/factories/ArrayFIF.java b/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/functions/factories/ArrayFIF.java index 64669189d15..5c5f3342d3b 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/functions/factories/ArrayFIF.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/functions/factories/ArrayFIF.java @@ -138,7 +138,6 @@ public final class ArrayFIF extends CompositeFIF { add(pattern(ARRAYS, "get"), GET_INTRINSIC); add(pattern(ARRAYS, "set"), SET_INTRINSIC); add(pattern(ARRAYS, "size"), LENGTH_PROPERTY_INTRINSIC); - add(pattern(ARRAYS, ""), new KotlinFunctionIntrinsic("arrayIndices")); add(pattern(ARRAYS, "iterator"), new KotlinFunctionIntrinsic("arrayIterator")); add(pattern(ARRAY, ""), new KotlinFunctionIntrinsic("arrayFromFun")); add(pattern(NUMBER_ARRAY, ""),new KotlinFunctionIntrinsic("numberArrayOfSize")); diff --git a/js/js.translator/testData/kotlin_lib.js b/js/js.translator/testData/kotlin_lib.js index 2f473b0d701..9c63dbfdc22 100644 --- a/js/js.translator/testData/kotlin_lib.js +++ b/js/js.translator/testData/kotlin_lib.js @@ -974,10 +974,6 @@ return result; }; - Kotlin.arrayIndices = function (arr) { - return new Kotlin.NumberRange(0, arr.length - 1); - }; - Kotlin.arrayIterator = function (array) { return new Kotlin.ArrayIterator(array); }; diff --git a/libraries/stdlib/src/kotlin/collections/Arrays.kt b/libraries/stdlib/src/kotlin/collections/Arrays.kt index 50a6b6cc42c..5b8c5be472f 100644 --- a/libraries/stdlib/src/kotlin/collections/Arrays.kt +++ b/libraries/stdlib/src/kotlin/collections/Arrays.kt @@ -26,3 +26,31 @@ public val CharArray.lastIndex: Int public val Array<*>.lastIndex: Int get() = this.size - 1 + + +public val BooleanArray.indices: IntRange + get() = IntRange(0, this.size - 1) + +public val ByteArray.indices: IntRange + get() = IntRange(0, this.size - 1) + +public val ShortArray.indices: IntRange + get() = IntRange(0, this.size - 1) + +public val IntArray.indices: IntRange + get() = IntRange(0, this.size - 1) + +public val LongArray.indices: IntRange + get() = IntRange(0, this.size - 1) + +public val FloatArray.indices: IntRange + get() = IntRange(0, this.size - 1) + +public val DoubleArray.indices: IntRange + get() = IntRange(0, this.size - 1) + +public val CharArray.indices: IntRange + get() = IntRange(0, this.size - 1) + +public val Array<*>.indices: IntRange + get() = IntRange(0, this.size - 1)