Modify test data to reflect changes with IntrinsicConstEvaluation

This commit is contained in:
Ivan Kylchik
2023-03-16 11:22:53 +01:00
committed by Space Team
parent b28d9a1b48
commit 8eeb7e2631
41 changed files with 617 additions and 160 deletions
@@ -1,32 +0,0 @@
package
public const val name1: kotlin.String
public const val name2: kotlin.String
public const val name3: kotlin.String
public const val name4: kotlin.String
public final enum class EnumClass : kotlin.Enum<EnumClass> {
enum entry OK
enum entry VALUE
enum entry anotherValue
enum entry WITH_UNDERSCORE
private constructor EnumClass()
@kotlin.internal.IntrinsicConstEvaluation public final override /*1*/ /*fake_override*/ val name: kotlin.String
public final override /*1*/ /*fake_override*/ val ordinal: kotlin.Int
protected final override /*1*/ /*fake_override*/ fun clone(): kotlin.Any
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: EnumClass): kotlin.Int
public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
protected/*protected and package*/ final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun finalize(): kotlin.Unit
public final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun getDeclaringClass(): java.lang.Class<EnumClass!>!
public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
// Static members
public final /*synthesized*/ val entries: kotlin.enums.EnumEntries<EnumClass>
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): EnumClass
public final /*synthesized*/ fun values(): kotlin.Array<EnumClass>
}
@@ -1,3 +1,5 @@
// !LANGUAGE: +IntrinsicConstEvaluation
enum class EnumClass {
OK, VALUE, anotherValue, WITH_UNDERSCORE
}
@@ -5,4 +7,4 @@ enum class EnumClass {
const val name1 = EnumClass.OK.name
const val name2 = EnumClass.VALUE.name
const val name3 = EnumClass.anotherValue.name
const val name4 = EnumClass.WITH_UNDERSCORE.name
const val name4 = EnumClass.WITH_UNDERSCORE.name
@@ -1,3 +1,5 @@
// !LANGUAGE: +IntrinsicConstEvaluation
enum class EnumClass {
OK, VALUE, anotherValue, WITH_UNDERSCORE
}
@@ -0,0 +1,11 @@
// FIR_IDENTICAL
// !LANGUAGE: -IntrinsicConstEvaluation
enum class EnumClass {
OK, VALUE, anotherValue, WITH_UNDERSCORE
}
const val name1 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>EnumClass.OK.name<!>
const val name2 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>EnumClass.VALUE.name<!>
const val name3 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>EnumClass.anotherValue.name<!>
const val name4 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>EnumClass.WITH_UNDERSCORE.name<!>
@@ -0,0 +1,46 @@
// !LANGUAGE: +IntrinsicConstEvaluation
const val equalsBoolean1 = true.equals(true)
const val equalsBoolean2 = false != true
const val equalsBoolean3 = false.equals(1)
const val equalsBoolean4 = <!EQUALITY_NOT_APPLICABLE_WARNING!>false == 1<!>
const val equalsChar1 = '1'.equals('2')
const val equalsChar2 = '2' == '2'
const val equalsChar3 = '1'.equals(1)
const val equalsChar4 = <!EQUALITY_NOT_APPLICABLE_WARNING!>'1' == 1<!>
const val equalsByte1 = 1.toByte().equals(2.toByte())
const val equalsByte2 = 2.toByte() == 2.toByte()
const val equalsByte3 = 1.toByte().equals("1")
const val equalsByte4 = <!EQUALITY_NOT_APPLICABLE!>1.toByte() == "1"<!>
const val equalsShort1 = 1.toShort().equals(2.toShort())
const val equalsShort2 = 2.toShort() == 2.toShort()
const val equalsShort3 = 1.toShort().equals("1")
const val equalsShort4 = <!EQUALITY_NOT_APPLICABLE!>1.toShort() == "1"<!>
const val equalsInt1 = 1.equals(2)
const val equalsInt2 = 2 == 2
const val equalsInt3 = 1.equals("1")
const val equalsInt4 = <!EQUALITY_NOT_APPLICABLE!>1 == "1"<!>
const val equalsLong1 = 1L.equals(2L)
const val equalsLong2 = 2L == 2L
const val equalsLong3 = 1L.equals("1")
const val equalsLong4 = <!EQUALITY_NOT_APPLICABLE!>1L == "1"<!>
const val equalsFloat1 = 1.0f.equals(2.0f)
const val equalsFloat2 = 2.0f == 2.0f
const val equalsFloat3 = 1.0f.equals("1")
const val equalsFloat4 = <!EQUALITY_NOT_APPLICABLE!>1.0f == "1"<!>
const val equalsDoable1 = 1.0.equals(2.0)
const val equalsDoable2 = 2.0 == 2.0
const val equalsDoable3 = 1.0.equals("1")
const val equalsDoable4 = <!EQUALITY_NOT_APPLICABLE!>1.0 == "1"<!>
const val equalsString1 = "someStr".equals("123")
const val equalsString2 = "someStr" == "otherStr"
const val equalsString3 = "someStr".equals(1)
const val equalsString4 = <!EQUALITY_NOT_APPLICABLE!>"someStr" == 1<!>
@@ -0,0 +1,46 @@
// !LANGUAGE: +IntrinsicConstEvaluation
const val equalsBoolean1 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>true.equals(true)<!>
const val equalsBoolean2 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>false != true<!>
const val equalsBoolean3 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>false.equals(1)<!>
const val equalsBoolean4 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER, EQUALITY_NOT_APPLICABLE!>false == 1<!>
const val equalsChar1 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>'1'.equals('2')<!>
const val equalsChar2 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>'2' == '2'<!>
const val equalsChar3 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>'1'.equals(1)<!>
const val equalsChar4 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER, EQUALITY_NOT_APPLICABLE!>'1' == 1<!>
const val equalsByte1 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>1.toByte().equals(2.toByte())<!>
const val equalsByte2 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>2.toByte() == 2.toByte()<!>
const val equalsByte3 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>1.toByte().equals("1")<!>
const val equalsByte4 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER, EQUALITY_NOT_APPLICABLE!>1.toByte() == "1"<!>
const val equalsShort1 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>1.toShort().equals(2.toShort())<!>
const val equalsShort2 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>2.toShort() == 2.toShort()<!>
const val equalsShort3 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>1.toShort().equals("1")<!>
const val equalsShort4 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER, EQUALITY_NOT_APPLICABLE!>1.toShort() == "1"<!>
const val equalsInt1 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>1.equals(2)<!>
const val equalsInt2 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>2 == 2<!>
const val equalsInt3 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>1.equals("1")<!>
const val equalsInt4 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER, EQUALITY_NOT_APPLICABLE!>1 == "1"<!>
const val equalsLong1 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>1L.equals(2L)<!>
const val equalsLong2 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>2L == 2L<!>
const val equalsLong3 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>1L.equals("1")<!>
const val equalsLong4 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER, EQUALITY_NOT_APPLICABLE!>1L == "1"<!>
const val equalsFloat1 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>1.0f.equals(2.0f)<!>
const val equalsFloat2 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>2.0f == 2.0f<!>
const val equalsFloat3 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>1.0f.equals("1")<!>
const val equalsFloat4 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER, EQUALITY_NOT_APPLICABLE!>1.0f == "1"<!>
const val equalsDoable1 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>1.0.equals(2.0)<!>
const val equalsDoable2 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>2.0 == 2.0<!>
const val equalsDoable3 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>1.0.equals("1")<!>
const val equalsDoable4 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER, EQUALITY_NOT_APPLICABLE!>1.0 == "1"<!>
const val equalsString1 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>"someStr".equals("123")<!>
const val equalsString2 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>"someStr" == "otherStr"<!>
const val equalsString3 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>"someStr".equals(1)<!>
const val equalsString4 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER, EQUALITY_NOT_APPLICABLE!>"someStr" == 1<!>
@@ -0,0 +1,46 @@
// !LANGUAGE: -IntrinsicConstEvaluation
const val equalsBoolean1 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>true.equals(true)<!>
const val equalsBoolean2 = false != true
const val equalsBoolean3 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>false.equals(1)<!>
const val equalsBoolean4 = <!EQUALITY_NOT_APPLICABLE_WARNING!>false == 1<!>
const val equalsChar1 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>'1'.equals('2')<!>
const val equalsChar2 = '2' == '2'
const val equalsChar3 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>'1'.equals(1)<!>
const val equalsChar4 = <!EQUALITY_NOT_APPLICABLE_WARNING!>'1' == 1<!>
const val equalsByte1 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>1.toByte().equals(2.toByte())<!>
const val equalsByte2 = 2.toByte() == 2.toByte()
const val equalsByte3 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>1.toByte().equals("1")<!>
const val equalsByte4 = <!EQUALITY_NOT_APPLICABLE!>1.toByte() == "1"<!>
const val equalsShort1 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>1.toShort().equals(2.toShort())<!>
const val equalsShort2 = 2.toShort() == 2.toShort()
const val equalsShort3 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>1.toShort().equals("1")<!>
const val equalsShort4 = <!EQUALITY_NOT_APPLICABLE!>1.toShort() == "1"<!>
const val equalsInt1 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>1.equals(2)<!>
const val equalsInt2 = 2 == 2
const val equalsInt3 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>1.equals("1")<!>
const val equalsInt4 = <!EQUALITY_NOT_APPLICABLE!>1 == "1"<!>
const val equalsLong1 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>1L.equals(2L)<!>
const val equalsLong2 = 2L == 2L
const val equalsLong3 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>1L.equals("1")<!>
const val equalsLong4 = <!EQUALITY_NOT_APPLICABLE!>1L == "1"<!>
const val equalsFloat1 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>1.0f.equals(2.0f)<!>
const val equalsFloat2 = 2.0f == 2.0f
const val equalsFloat3 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>1.0f.equals("1")<!>
const val equalsFloat4 = <!EQUALITY_NOT_APPLICABLE!>1.0f == "1"<!>
const val equalsDoable1 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>1.0.equals(2.0)<!>
const val equalsDoable2 = 2.0 == 2.0
const val equalsDoable3 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>1.0.equals("1")<!>
const val equalsDoable4 = <!EQUALITY_NOT_APPLICABLE!>1.0 == "1"<!>
const val equalsString1 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>"someStr".equals("123")<!>
const val equalsString2 = "someStr" == "otherStr"
const val equalsString3 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>"someStr".equals(1)<!>
const val equalsString4 = <!EQUALITY_NOT_APPLICABLE!>"someStr" == 1<!>
@@ -0,0 +1,46 @@
// !LANGUAGE: -IntrinsicConstEvaluation
const val equalsBoolean1 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>true.equals(true)<!>
const val equalsBoolean2 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>false != true<!>
const val equalsBoolean3 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>false.equals(1)<!>
const val equalsBoolean4 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER, EQUALITY_NOT_APPLICABLE!>false == 1<!>
const val equalsChar1 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>'1'.equals('2')<!>
const val equalsChar2 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>'2' == '2'<!>
const val equalsChar3 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>'1'.equals(1)<!>
const val equalsChar4 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER, EQUALITY_NOT_APPLICABLE!>'1' == 1<!>
const val equalsByte1 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>1.toByte().equals(2.toByte())<!>
const val equalsByte2 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>2.toByte() == 2.toByte()<!>
const val equalsByte3 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>1.toByte().equals("1")<!>
const val equalsByte4 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER, EQUALITY_NOT_APPLICABLE!>1.toByte() == "1"<!>
const val equalsShort1 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>1.toShort().equals(2.toShort())<!>
const val equalsShort2 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>2.toShort() == 2.toShort()<!>
const val equalsShort3 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>1.toShort().equals("1")<!>
const val equalsShort4 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER, EQUALITY_NOT_APPLICABLE!>1.toShort() == "1"<!>
const val equalsInt1 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>1.equals(2)<!>
const val equalsInt2 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>2 == 2<!>
const val equalsInt3 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>1.equals("1")<!>
const val equalsInt4 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER, EQUALITY_NOT_APPLICABLE!>1 == "1"<!>
const val equalsLong1 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>1L.equals(2L)<!>
const val equalsLong2 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>2L == 2L<!>
const val equalsLong3 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>1L.equals("1")<!>
const val equalsLong4 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER, EQUALITY_NOT_APPLICABLE!>1L == "1"<!>
const val equalsFloat1 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>1.0f.equals(2.0f)<!>
const val equalsFloat2 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>2.0f == 2.0f<!>
const val equalsFloat3 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>1.0f.equals("1")<!>
const val equalsFloat4 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER, EQUALITY_NOT_APPLICABLE!>1.0f == "1"<!>
const val equalsDoable1 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>1.0.equals(2.0)<!>
const val equalsDoable2 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>2.0 == 2.0<!>
const val equalsDoable3 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>1.0.equals("1")<!>
const val equalsDoable4 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER, EQUALITY_NOT_APPLICABLE!>1.0 == "1"<!>
const val equalsString1 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>"someStr".equals("123")<!>
const val equalsString2 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>"someStr" == "otherStr"<!>
const val equalsString3 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>"someStr".equals(1)<!>
const val equalsString4 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER, EQUALITY_NOT_APPLICABLE!>"someStr" == 1<!>
@@ -1,13 +0,0 @@
package
public const val condition: kotlin.String
public const val errorBranch: kotlin.Boolean
public const val errorConstIf: kotlin.Int
public const val flag: kotlin.Boolean = true
public const val multibranchIf: kotlin.Int
public val nonConstFlag: kotlin.Boolean = true
public const val value: kotlin.Int = 10
public const val withWhen: kotlin.String
public const val withWhen2: kotlin.String
public const val withWhen3: kotlin.String
@@ -1,3 +1,5 @@
// !LANGUAGE: +IntrinsicConstEvaluation
const val flag = true
const val value = 10
@@ -1,3 +1,5 @@
// !LANGUAGE: +IntrinsicConstEvaluation
const val flag = true
const val value = 10
@@ -0,0 +1,25 @@
// FIR_IDENTICAL
// !LANGUAGE: -IntrinsicConstEvaluation
const val flag = true
const val value = 10
const val condition = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>if (flag) "True" else "Error"<!>
const val withWhen = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>when (flag) {
true -> "True"
else -> "Error"
}<!>
const val withWhen2 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>when {
flag == true -> "True"
else -> "Error"
}<!>
const val withWhen3 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>when(value) {
10 -> "1"
100 -> "2"
else -> "3"
}<!>
const val multibranchIf = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>if (value == 100) 1 else if (value == 1000) 2 else 3<!>
val nonConstFlag = true
const val errorConstIf = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>if (nonConstFlag) 1 else 2<!>
const val errorBranch = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>if (flag) nonConstFlag else false<!>
@@ -1,22 +0,0 @@
package
public const val anotherPropName: kotlin.String
public const val barName: kotlin.String
public const val className: kotlin.String
public const val errorAccess: kotlin.String
public const val errorPlus: kotlin.String
public const val fooName: kotlin.String
public const val lengthPropName: kotlin.String
public const val propName: kotlin.String
public const val stringClassName: kotlin.String
public final class SomeClassWithName {
public constructor SomeClassWithName(/*0*/ property: kotlin.Int)
public final val anotherProperty: kotlin.String = ""
public final val property: kotlin.Int
public final fun bar(/*0*/ a: kotlin.Int, /*1*/ b: kotlin.Double): kotlin.String
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final fun foo(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -1,3 +1,5 @@
// !LANGUAGE: +IntrinsicConstEvaluation
class SomeClassWithName(val property: Int) {
val anotherProperty: String = ""
@@ -1,3 +1,5 @@
// !LANGUAGE: +IntrinsicConstEvaluation
class SomeClassWithName(val property: Int) {
val anotherProperty: String = ""
@@ -0,0 +1,21 @@
// FIR_IDENTICAL
// !LANGUAGE: -IntrinsicConstEvaluation
class SomeClassWithName(val property: Int) {
val anotherProperty: String = ""
fun foo() {}
fun bar(a: Int, b: Double): String = ""
}
const val className = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>::SomeClassWithName.name<!>
const val propName = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>SomeClassWithName::property.name<!>
const val anotherPropName = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>SomeClassWithName::anotherProperty.name<!>
const val fooName = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>SomeClassWithName::foo.name<!>
const val barName = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>SomeClassWithName::bar.name<!>
const val stringClassName = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>::String.name<!>
const val lengthPropName = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>String::length.name<!>
const val errorAccess = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>SomeClassWithName(1)::property.name<!>
const val errorPlus = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>"" + SomeClassWithName(1)::property<!>