Support class literals (A::class)
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
class A
|
||||
|
||||
fun box(): String {
|
||||
val klass = A::class
|
||||
return if (klass.toString() == "class A") "OK" else "Fail: $klass"
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
import kotlin.reflect.jvm.*
|
||||
|
||||
class A
|
||||
|
||||
fun box(): String {
|
||||
val a1 = javaClass<A>().kotlin
|
||||
val a2 = A::class
|
||||
|
||||
if (a1 != a2) return "Fail equals"
|
||||
if (a1.hashCode() != a2.hashCode()) return "Fail hashCode"
|
||||
if (a1.toString() != a2.toString()) return "Fail toString"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
class A
|
||||
|
||||
val k = A::class
|
||||
@@ -0,0 +1,10 @@
|
||||
package
|
||||
|
||||
internal val k: kotlin.reflect.KClass<A>
|
||||
|
||||
internal final class A {
|
||||
public constructor A()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
@@ -28,6 +28,11 @@ fun ok() {
|
||||
a??::b
|
||||
a<b>?::c
|
||||
a<b?,c?>?::d
|
||||
|
||||
A::class
|
||||
a<b,c>::class
|
||||
::class
|
||||
a b ::class
|
||||
}
|
||||
|
||||
fun err0() {
|
||||
|
||||
@@ -464,6 +464,51 @@ JetFile: DoubleColon.kt
|
||||
PsiElement(COLONCOLON)('::')
|
||||
REFERENCE_EXPRESSION
|
||||
PsiElement(IDENTIFIER)('d')
|
||||
PsiWhiteSpace('\n\n ')
|
||||
CLASS_LITERAL_EXPRESSION
|
||||
TYPE_REFERENCE
|
||||
USER_TYPE
|
||||
REFERENCE_EXPRESSION
|
||||
PsiElement(IDENTIFIER)('A')
|
||||
PsiElement(COLONCOLON)('::')
|
||||
PsiElement(class)('class')
|
||||
PsiWhiteSpace('\n ')
|
||||
CLASS_LITERAL_EXPRESSION
|
||||
TYPE_REFERENCE
|
||||
USER_TYPE
|
||||
REFERENCE_EXPRESSION
|
||||
PsiElement(IDENTIFIER)('a')
|
||||
TYPE_ARGUMENT_LIST
|
||||
PsiElement(LT)('<')
|
||||
TYPE_PROJECTION
|
||||
TYPE_REFERENCE
|
||||
USER_TYPE
|
||||
REFERENCE_EXPRESSION
|
||||
PsiElement(IDENTIFIER)('b')
|
||||
PsiElement(COMMA)(',')
|
||||
TYPE_PROJECTION
|
||||
TYPE_REFERENCE
|
||||
USER_TYPE
|
||||
REFERENCE_EXPRESSION
|
||||
PsiElement(IDENTIFIER)('c')
|
||||
PsiElement(GT)('>')
|
||||
PsiElement(COLONCOLON)('::')
|
||||
PsiElement(class)('class')
|
||||
PsiWhiteSpace('\n ')
|
||||
CLASS_LITERAL_EXPRESSION
|
||||
PsiElement(COLONCOLON)('::')
|
||||
PsiElement(class)('class')
|
||||
PsiWhiteSpace('\n ')
|
||||
BINARY_EXPRESSION
|
||||
REFERENCE_EXPRESSION
|
||||
PsiElement(IDENTIFIER)('a')
|
||||
PsiWhiteSpace(' ')
|
||||
OPERATION_REFERENCE
|
||||
PsiElement(IDENTIFIER)('b')
|
||||
PsiWhiteSpace(' ')
|
||||
CLASS_LITERAL_EXPRESSION
|
||||
PsiElement(COLONCOLON)('::')
|
||||
PsiElement(class)('class')
|
||||
PsiWhiteSpace('\n')
|
||||
PsiElement(RBRACE)('}')
|
||||
PsiWhiteSpace('\n\n')
|
||||
|
||||
Reference in New Issue
Block a user