serialization of compile time constant: add support for expressions <const>: <type>
This commit is contained in:
+3
@@ -149,6 +149,9 @@ public class ConstantExpressionEvaluator private (val trace: BindingTrace) : Jet
|
||||
else null
|
||||
}
|
||||
|
||||
override fun visitBinaryWithTypeRHSExpression(expression: JetBinaryExpressionWithTypeRHS, expectedType: JetType?): CompileTimeConstant<*>? =
|
||||
evaluate(expression.getLeft(), expectedType)
|
||||
|
||||
override fun visitBinaryExpression(expression: JetBinaryExpression, expectedType: JetType?): CompileTimeConstant<*>? {
|
||||
val leftExpression = expression.getLeft()
|
||||
if (leftExpression == null) return null
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@ internal final class C {
|
||||
|
||||
kotlin.suppress(names = {"warnings"}: kotlin.Array<out kotlin.String>) internal class object Default {
|
||||
private constructor Default()
|
||||
internal final val foo: kotlin.String?
|
||||
internal final val foo: kotlin.String? = null
|
||||
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
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@ package
|
||||
|
||||
internal final class C {
|
||||
public constructor C()
|
||||
kotlin.suppress(names = {"warnings"}: kotlin.Array<out kotlin.String>) internal final val foo: kotlin.String?
|
||||
kotlin.suppress(names = {"warnings"}: kotlin.Array<out kotlin.String>) internal final val foo: kotlin.String? = null
|
||||
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
|
||||
|
||||
@@ -8,7 +8,7 @@ internal final class C {
|
||||
|
||||
kotlin.suppress(names = {"REDUNDANT_NULLABLE"}: kotlin.Array<out kotlin.String>) internal class object Default {
|
||||
private constructor Default()
|
||||
internal final val foo: kotlin.String?
|
||||
internal final val foo: kotlin.String? = null
|
||||
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
|
||||
|
||||
@@ -2,7 +2,7 @@ package
|
||||
|
||||
internal final class C {
|
||||
public constructor C()
|
||||
kotlin.suppress(names = {"REDUNDANT_NULLABLE"}: kotlin.Array<out kotlin.String>) internal final val foo: kotlin.String?
|
||||
kotlin.suppress(names = {"REDUNDANT_NULLABLE"}: kotlin.Array<out kotlin.String>) internal final val foo: kotlin.String? = null
|
||||
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
|
||||
|
||||
@@ -22,3 +22,16 @@ Primitives(
|
||||
boolean = true
|
||||
)
|
||||
class C
|
||||
|
||||
Primitives(
|
||||
byte = 7: Byte,
|
||||
char = '%': Char,
|
||||
short = 239: Short,
|
||||
int = 239017: Int,
|
||||
long = 123456789123456789L: Long,
|
||||
float = 2.72f: Float,
|
||||
double = -3.14: Double,
|
||||
boolean = true: Boolean
|
||||
)
|
||||
class D
|
||||
|
||||
|
||||
@@ -4,6 +4,10 @@ test.Primitives(boolean = true: kotlin.Boolean, byte = 7.toByte(): kotlin.Byte,
|
||||
public constructor C()
|
||||
}
|
||||
|
||||
test.Primitives(boolean = true: kotlin.Boolean, byte = 7.toByte(): kotlin.Byte, char = \u0025 ('%'): kotlin.Char, double = -3.14.toDouble(): kotlin.Double, float = 2.72.toFloat(): kotlin.Float, int = 239017: kotlin.Int, long = 123456789123456789.toLong(): kotlin.Long, short = 239.toShort(): kotlin.Short) internal final class D {
|
||||
public constructor D()
|
||||
}
|
||||
|
||||
internal final annotation class Primitives : kotlin.Annotation {
|
||||
public constructor Primitives(/*0*/ byte: kotlin.Byte, /*1*/ char: kotlin.Char, /*2*/ short: kotlin.Short, /*3*/ int: kotlin.Int, /*4*/ long: kotlin.Long, /*5*/ float: kotlin.Float, /*6*/ double: kotlin.Double, /*7*/ boolean: kotlin.Boolean)
|
||||
internal final val boolean: kotlin.Boolean
|
||||
|
||||
Reference in New Issue
Block a user