serialization of compile time constant: add support for expressions <const>: <type>

This commit is contained in:
Michael Nedzelsky
2015-02-18 03:53:34 +03:00
parent 5889112a94
commit 608b603f58
7 changed files with 24 additions and 4 deletions
@@ -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
@@ -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
@@ -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