Remove Intrinsic annotation from *arrayOf functions
This commit is contained in:
committed by
Ilya Gorbunov
parent
09191622e5
commit
477e25ae2f
@@ -17,6 +17,7 @@
|
|||||||
package org.jetbrains.kotlin.codegen.intrinsics;
|
package org.jetbrains.kotlin.codegen.intrinsics;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableList;
|
import com.google.common.collect.ImmutableList;
|
||||||
|
import kotlin.StringsKt;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
|
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.CompileTimeConstantUtils;
|
||||||
import org.jetbrains.kotlin.resolve.jvm.JvmPrimitiveType;
|
import org.jetbrains.kotlin.resolve.jvm.JvmPrimitiveType;
|
||||||
import org.jetbrains.kotlin.types.expressions.OperatorConventions;
|
import org.jetbrains.kotlin.types.expressions.OperatorConventions;
|
||||||
|
import org.jetbrains.kotlin.util.capitalizeDecapitalize.CapitalizeDecapitalizeKt;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -63,11 +65,12 @@ public class IntrinsicMethods {
|
|||||||
namedMethods.put("kotlin.javaClass.function", new JavaClassFunction());
|
namedMethods.put("kotlin.javaClass.function", new JavaClassFunction());
|
||||||
namedMethods.put("kotlin.javaClass.property", new JavaClassProperty());
|
namedMethods.put("kotlin.javaClass.property", new JavaClassProperty());
|
||||||
namedMethods.put("kotlin.KClass.java.property", new KClassJavaProperty());
|
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.monitorEnter", MonitorInstruction.MONITOR_ENTER);
|
||||||
namedMethods.put("kotlin.jvm.internal.unsafe.monitorExit", MonitorInstruction.MONITOR_EXIT);
|
namedMethods.put("kotlin.jvm.internal.unsafe.monitorExit", MonitorInstruction.MONITOR_EXIT);
|
||||||
namedMethods.put("kotlin.jvm.isArrayOf", new IsArrayOf());
|
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();
|
ImmutableList<Name> primitiveCastMethods = OperatorConventions.NUMBER_CONVERSIONS.asList();
|
||||||
for (Name method : primitiveCastMethods) {
|
for (Name method : primitiveCastMethods) {
|
||||||
String methodName = method.asString();
|
String methodName = method.asString();
|
||||||
@@ -94,6 +97,10 @@ public class IntrinsicMethods {
|
|||||||
declareIntrinsicFunction(typeName, "equals", 1, EQUALS);
|
declareIntrinsicFunction(typeName, "equals", 1, EQUALS);
|
||||||
declareIntrinsicFunction(typeName, "hashCode", 0, HASH_CODE);
|
declareIntrinsicFunction(typeName, "hashCode", 0, HASH_CODE);
|
||||||
declareIntrinsicFunction(typeName, "toString", 0, TO_STRING);
|
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);
|
declareBinaryOp("plus", IADD);
|
||||||
|
|||||||
-3
@@ -28,7 +28,6 @@ import org.jetbrains.kotlin.resolve.BindingContext
|
|||||||
import org.jetbrains.kotlin.resolve.DeclarationChecker
|
import org.jetbrains.kotlin.resolve.DeclarationChecker
|
||||||
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils
|
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils
|
||||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
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.annotations.hasJvmStaticAnnotation
|
||||||
import org.jetbrains.kotlin.resolve.inline.InlineUtil
|
import org.jetbrains.kotlin.resolve.inline.InlineUtil
|
||||||
import org.jetbrains.kotlin.resolve.jvm.annotations.hasJvmOverloadsAnnotation
|
import org.jetbrains.kotlin.resolve.jvm.annotations.hasJvmOverloadsAnnotation
|
||||||
@@ -215,8 +214,6 @@ public class ReifiedTypeParameterAnnotationChecker : DeclarationChecker {
|
|||||||
diagnosticHolder: DiagnosticSink,
|
diagnosticHolder: DiagnosticSink,
|
||||||
bindingContext: BindingContext
|
bindingContext: BindingContext
|
||||||
) {
|
) {
|
||||||
if (descriptor.hasIntrinsicAnnotation()) return
|
|
||||||
|
|
||||||
if (descriptor is CallableDescriptor && !InlineUtil.isInline(descriptor)) {
|
if (descriptor is CallableDescriptor && !InlineUtil.isInline(descriptor)) {
|
||||||
checkTypeParameterDescriptorsAreNotReified(descriptor.getTypeParameters(), diagnosticHolder)
|
checkTypeParameterDescriptorsAreNotReified(descriptor.getTypeParameters(), diagnosticHolder)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,10 +35,6 @@ public fun DeclarationDescriptor.hasJvmSyntheticAnnotation(): Boolean {
|
|||||||
Annotations.findUseSiteTargetedAnnotation(annotations, AnnotationUseSiteTarget.FIELD, jvmSyntheticName) != null
|
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 =
|
public fun CallableDescriptor.isPlatformStaticInObjectOrClass(): Boolean =
|
||||||
isPlatformStaticIn { DescriptorUtils.isNonCompanionObject(it) || DescriptorUtils.isClass(it) || DescriptorUtils.isEnumClass(it) }
|
isPlatformStaticIn { DescriptorUtils.isNonCompanionObject(it) || DescriptorUtils.isClass(it) || DescriptorUtils.isEnumClass(it) }
|
||||||
|
|
||||||
|
|||||||
@@ -5,54 +5,53 @@ package kotlin
|
|||||||
|
|
||||||
import java.io.ByteArrayInputStream
|
import java.io.ByteArrayInputStream
|
||||||
import java.nio.charset.Charset
|
import java.nio.charset.Charset
|
||||||
import kotlin.jvm.internal.Intrinsic
|
|
||||||
|
|
||||||
// Array "constructor"
|
// Array "constructor"
|
||||||
/**
|
/**
|
||||||
* Returns an array containing the specified elements.
|
* 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
|
// "constructors" for primitive types array
|
||||||
/**
|
/**
|
||||||
* Returns an array containing the specified [Double] numbers.
|
* 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.
|
* 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.
|
* 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.
|
* 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.
|
* 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.
|
* 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.
|
* 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.
|
* 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].
|
* Converts the contents of this byte array to a string using the specified [charset].
|
||||||
|
|||||||
@@ -22,5 +22,6 @@ import kotlin.jvm.internal.Intrinsic
|
|||||||
* Checks if array can contain element of type [T].
|
* Checks if array can contain element of type [T].
|
||||||
*/
|
*/
|
||||||
@Intrinsic("kotlin.jvm.isArrayOf")
|
@Intrinsic("kotlin.jvm.isArrayOf")
|
||||||
|
@Suppress("REIFIED_TYPE_PARAMETER_NO_INLINE")
|
||||||
public fun <reified T : Any> Array<*>.isArrayOf(): Boolean =
|
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.
|
* Returns the Java class for the specified type.
|
||||||
*/
|
*/
|
||||||
@Intrinsic("kotlin.javaClass.function")
|
@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"))
|
@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
|
public fun <reified T: Any> javaClass(): Class<T> = T::class.java
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user