Introduce PureReifiable annotation

It prevents reporting unsafe substitution warning on expressions
like 'arrayOf(arrayOf(""))'
This commit is contained in:
Denis Zharkov
2016-01-21 19:09:46 +03:00
parent 32755a269c
commit 6c0cd70a22
16 changed files with 137 additions and 21 deletions
+36
View File
@@ -7,6 +7,15 @@ PsiJetFileStubImpl[package=kotlin]
TYPE_PARAMETER_LIST:
TYPE_PARAMETER:[fqName=null, isInVariance=false, isOutVariance=false, name=T]
MODIFIER_LIST:[reified]
ANNOTATION_ENTRY:[hasValueArguments=false, shortName=PureReifiable]
CONSTRUCTOR_CALLEE:
TYPE_REFERENCE:
USER_TYPE:[isAbsoluteInRootPackage=false]
USER_TYPE:[isAbsoluteInRootPackage=false]
USER_TYPE:[isAbsoluteInRootPackage=false]
REFERENCE_EXPRESSION:[referencedName=kotlin]
REFERENCE_EXPRESSION:[referencedName=internal]
REFERENCE_EXPRESSION:[referencedName=PureReifiable]
VALUE_PARAMETER_LIST:
VALUE_PARAMETER:[fqName=null, hasDefaultValue=false, hasValOrVar=false, isMutable=false, name=size]
TYPE_REFERENCE:
@@ -274,6 +283,15 @@ PsiJetFileStubImpl[package=kotlin]
TYPE_PARAMETER_LIST:
TYPE_PARAMETER:[fqName=null, isInVariance=false, isOutVariance=false, name=T]
MODIFIER_LIST:[reified]
ANNOTATION_ENTRY:[hasValueArguments=false, shortName=PureReifiable]
CONSTRUCTOR_CALLEE:
TYPE_REFERENCE:
USER_TYPE:[isAbsoluteInRootPackage=false]
USER_TYPE:[isAbsoluteInRootPackage=false]
USER_TYPE:[isAbsoluteInRootPackage=false]
REFERENCE_EXPRESSION:[referencedName=kotlin]
REFERENCE_EXPRESSION:[referencedName=internal]
REFERENCE_EXPRESSION:[referencedName=PureReifiable]
VALUE_PARAMETER_LIST:
VALUE_PARAMETER:[fqName=null, hasDefaultValue=false, hasValOrVar=false, isMutable=false, name=elements]
MODIFIER_LIST:[vararg]
@@ -295,6 +313,15 @@ PsiJetFileStubImpl[package=kotlin]
TYPE_PARAMETER_LIST:
TYPE_PARAMETER:[fqName=null, isInVariance=false, isOutVariance=false, name=T]
MODIFIER_LIST:[reified]
ANNOTATION_ENTRY:[hasValueArguments=false, shortName=PureReifiable]
CONSTRUCTOR_CALLEE:
TYPE_REFERENCE:
USER_TYPE:[isAbsoluteInRootPackage=false]
USER_TYPE:[isAbsoluteInRootPackage=false]
USER_TYPE:[isAbsoluteInRootPackage=false]
REFERENCE_EXPRESSION:[referencedName=kotlin]
REFERENCE_EXPRESSION:[referencedName=internal]
REFERENCE_EXPRESSION:[referencedName=PureReifiable]
VALUE_PARAMETER_LIST:
VALUE_PARAMETER:[fqName=null, hasDefaultValue=false, hasValOrVar=false, isMutable=false, name=size]
TYPE_REFERENCE:
@@ -378,6 +405,15 @@ PsiJetFileStubImpl[package=kotlin]
TYPE_PARAMETER_LIST:
TYPE_PARAMETER:[fqName=null, isInVariance=false, isOutVariance=false, name=T]
MODIFIER_LIST:[reified]
ANNOTATION_ENTRY:[hasValueArguments=false, shortName=PureReifiable]
CONSTRUCTOR_CALLEE:
TYPE_REFERENCE:
USER_TYPE:[isAbsoluteInRootPackage=false]
USER_TYPE:[isAbsoluteInRootPackage=false]
USER_TYPE:[isAbsoluteInRootPackage=false]
REFERENCE_EXPRESSION:[referencedName=kotlin]
REFERENCE_EXPRESSION:[referencedName=internal]
REFERENCE_EXPRESSION:[referencedName=PureReifiable]
VALUE_PARAMETER_LIST:
TYPE_REFERENCE:
USER_TYPE:[isAbsoluteInRootPackage=false]
+4 -4
View File
@@ -3,7 +3,7 @@
package kotlin
public inline fun <reified T> Array(size: kotlin.Int, init: (kotlin.Int) -> T): kotlin.Array<T> { /* compiled code */ }
public inline fun <reified @kotlin.internal.PureReifiable T> Array(size: kotlin.Int, init: (kotlin.Int) -> T): kotlin.Array<T> { /* compiled code */ }
public inline fun BooleanArray(size: kotlin.Int, init: (kotlin.Int) -> kotlin.Boolean): kotlin.BooleanArray { /* compiled code */ }
@@ -21,9 +21,9 @@ public inline fun LongArray(size: kotlin.Int, init: (kotlin.Int) -> kotlin.Long)
public inline fun ShortArray(size: kotlin.Int, init: (kotlin.Int) -> kotlin.Short): kotlin.ShortArray { /* compiled code */ }
public inline fun <reified T> arrayOf(vararg elements: T): kotlin.Array<T> { /* compiled code */ }
public inline fun <reified @kotlin.internal.PureReifiable T> arrayOf(vararg elements: T): kotlin.Array<T> { /* compiled code */ }
public fun <reified T> arrayOfNulls(size: kotlin.Int): kotlin.Array<T?> { /* compiled code */ }
public fun <reified @kotlin.internal.PureReifiable T> arrayOfNulls(size: kotlin.Int): kotlin.Array<T?> { /* compiled code */ }
public fun booleanArrayOf(vararg elements: kotlin.Boolean): kotlin.BooleanArray { /* compiled code */ }
@@ -33,7 +33,7 @@ public fun charArrayOf(vararg elements: kotlin.Char): kotlin.CharArray { /* comp
public fun doubleArrayOf(vararg elements: kotlin.Double): kotlin.DoubleArray { /* compiled code */ }
public inline fun <reified T> emptyArray(): kotlin.Array<T> { /* compiled code */ }
public inline fun <reified @kotlin.internal.PureReifiable T> emptyArray(): kotlin.Array<T> { /* compiled code */ }
public fun floatArrayOf(vararg elements: kotlin.Float): kotlin.FloatArray { /* compiled code */ }