Remove Intrinsic annotation from *arrayOf functions

This commit is contained in:
Alexander Udalov
2015-12-11 23:24:34 +03:00
committed by Ilya Gorbunov
parent 09191622e5
commit 477e25ae2f
6 changed files with 20 additions and 19 deletions
@@ -17,6 +17,7 @@
package org.jetbrains.kotlin.codegen.intrinsics;
import com.google.common.collect.ImmutableList;
import kotlin.StringsKt;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
@@ -26,6 +27,7 @@ import org.jetbrains.kotlin.name.Name;
import org.jetbrains.kotlin.resolve.CompileTimeConstantUtils;
import org.jetbrains.kotlin.resolve.jvm.JvmPrimitiveType;
import org.jetbrains.kotlin.types.expressions.OperatorConventions;
import org.jetbrains.kotlin.util.capitalizeDecapitalize.CapitalizeDecapitalizeKt;
import java.util.HashMap;
import java.util.Map;
@@ -63,11 +65,12 @@ public class IntrinsicMethods {
namedMethods.put("kotlin.javaClass.function", new JavaClassFunction());
namedMethods.put("kotlin.javaClass.property", new JavaClassProperty());
namedMethods.put("kotlin.KClass.java.property", new KClassJavaProperty());
namedMethods.put("kotlin.arrays.array", new JavaClassArray());
namedMethods.put("kotlin.jvm.internal.unsafe.monitorEnter", MonitorInstruction.MONITOR_ENTER);
namedMethods.put("kotlin.jvm.internal.unsafe.monitorExit", MonitorInstruction.MONITOR_EXIT);
namedMethods.put("kotlin.jvm.isArrayOf", new IsArrayOf());
intrinsicsMap.registerIntrinsic(BUILT_INS_PACKAGE_FQ_NAME, null, "arrayOf", 1, new JavaClassArray());
ImmutableList<Name> primitiveCastMethods = OperatorConventions.NUMBER_CONVERSIONS.asList();
for (Name method : primitiveCastMethods) {
String methodName = method.asString();
@@ -94,6 +97,10 @@ public class IntrinsicMethods {
declareIntrinsicFunction(typeName, "equals", 1, EQUALS);
declareIntrinsicFunction(typeName, "hashCode", 0, HASH_CODE);
declareIntrinsicFunction(typeName, "toString", 0, TO_STRING);
intrinsicsMap.registerIntrinsic(
BUILT_INS_PACKAGE_FQ_NAME, null, StringsKt.decapitalize(type.getArrayTypeName().asString()) + "Of", 1, new JavaClassArray()
);
}
declareBinaryOp("plus", IADD);
@@ -28,7 +28,6 @@ import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.DeclarationChecker
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils
import org.jetbrains.kotlin.resolve.DescriptorUtils
import org.jetbrains.kotlin.resolve.annotations.hasIntrinsicAnnotation
import org.jetbrains.kotlin.resolve.annotations.hasJvmStaticAnnotation
import org.jetbrains.kotlin.resolve.inline.InlineUtil
import org.jetbrains.kotlin.resolve.jvm.annotations.hasJvmOverloadsAnnotation
@@ -215,8 +214,6 @@ public class ReifiedTypeParameterAnnotationChecker : DeclarationChecker {
diagnosticHolder: DiagnosticSink,
bindingContext: BindingContext
) {
if (descriptor.hasIntrinsicAnnotation()) return
if (descriptor is CallableDescriptor && !InlineUtil.isInline(descriptor)) {
checkTypeParameterDescriptorsAreNotReified(descriptor.getTypeParameters(), diagnosticHolder)
}
@@ -35,10 +35,6 @@ public fun DeclarationDescriptor.hasJvmSyntheticAnnotation(): Boolean {
Annotations.findUseSiteTargetedAnnotation(annotations, AnnotationUseSiteTarget.FIELD, jvmSyntheticName) != null
}
public fun DeclarationDescriptor.hasIntrinsicAnnotation(): Boolean {
return getAnnotations().findAnnotation(FqName("kotlin.jvm.internal.Intrinsic")) != null
}
public fun CallableDescriptor.isPlatformStaticInObjectOrClass(): Boolean =
isPlatformStaticIn { DescriptorUtils.isNonCompanionObject(it) || DescriptorUtils.isClass(it) || DescriptorUtils.isEnumClass(it) }
@@ -5,54 +5,53 @@ package kotlin
import java.io.ByteArrayInputStream
import java.nio.charset.Charset
import kotlin.jvm.internal.Intrinsic
// Array "constructor"
/**
* Returns an array containing the specified elements.
*/
@Intrinsic("kotlin.arrays.array") public fun <reified T> arrayOf(vararg elements: T) : Array<T> = elements as Array<T>
public inline fun <reified T> arrayOf(vararg elements: T) : Array<T> = elements as Array<T>
// "constructors" for primitive types array
/**
* Returns an array containing the specified [Double] numbers.
*/
@Intrinsic("kotlin.arrays.array") public fun doubleArrayOf(vararg elements: Double) : DoubleArray = elements
public fun doubleArrayOf(vararg elements: Double) : DoubleArray = elements
/**
* Returns an array containing the specified [Float] numbers.
*/
@Intrinsic("kotlin.arrays.array") public fun floatArrayOf(vararg elements: Float) : FloatArray = elements
public fun floatArrayOf(vararg elements: Float) : FloatArray = elements
/**
* Returns an array containing the specified [Long] numbers.
*/
@Intrinsic("kotlin.arrays.array") public fun longArrayOf(vararg elements: Long) : LongArray = elements
public fun longArrayOf(vararg elements: Long) : LongArray = elements
/**
* Returns an array containing the specified [Int] numbers.
*/
@Intrinsic("kotlin.arrays.array") public fun intArrayOf(vararg elements: Int) : IntArray = elements
public fun intArrayOf(vararg elements: Int) : IntArray = elements
/**
* Returns an array containing the specified characters.
*/
@Intrinsic("kotlin.arrays.array") public fun charArrayOf(vararg elements: Char) : CharArray = elements
public fun charArrayOf(vararg elements: Char) : CharArray = elements
/**
* Returns an array containing the specified [Short] numbers.
*/
@Intrinsic("kotlin.arrays.array") public fun shortArrayOf(vararg elements: Short) : ShortArray = elements
public fun shortArrayOf(vararg elements: Short) : ShortArray = elements
/**
* Returns an array containing the specified [Byte] numbers.
*/
@Intrinsic("kotlin.arrays.array") public fun byteArrayOf(vararg elements: Byte) : ByteArray = elements
public fun byteArrayOf(vararg elements: Byte) : ByteArray = elements
/**
* Returns an array containing the specified boolean values.
*/
@Intrinsic("kotlin.arrays.array") public fun booleanArrayOf(vararg elements: Boolean) : BooleanArray = elements
public fun booleanArrayOf(vararg elements: Boolean) : BooleanArray = elements
/**
* Converts the contents of this byte array to a string using the specified [charset].
+2 -1
View File
@@ -22,5 +22,6 @@ import kotlin.jvm.internal.Intrinsic
* Checks if array can contain element of type [T].
*/
@Intrinsic("kotlin.jvm.isArrayOf")
@Suppress("REIFIED_TYPE_PARAMETER_NO_INLINE")
public fun <reified T : Any> Array<*>.isArrayOf(): Boolean =
T::class.java.isAssignableFrom(this.javaClass.componentType)
T::class.java.isAssignableFrom(this.javaClass.componentType)
@@ -39,6 +39,7 @@ public val <T: Any> T.javaClass : Class<T>
* Returns the Java class for the specified type.
*/
@Intrinsic("kotlin.javaClass.function")
@Suppress("REIFIED_TYPE_PARAMETER_NO_INLINE")
@Deprecated("Use the class reference and .java extension property instead: MyClass::class.java", ReplaceWith("T::class.java"))
public fun <reified T: Any> javaClass(): Class<T> = T::class.java