// !LANGUAGE: +IntrinsicConstEvaluation // DONT_TARGET_EXACT_BACKEND: JVM // DONT_TARGET_EXACT_BACKEND: JS // IGNORE_BACKEND_K1: JVM_IR, JS_IR, JS_IR_ES6, NATIVE, WASM fun T.id() = this class A(val OK: Int, val somePropertyWithLongName: String) { fun foo() {} suspend fun bar() {} } val topLevelProp = 1 const val propertyName1 = A::OK.name const val propertyName2 = A::somePropertyWithLongName.name const val methodName = A::foo.name const val suspendMethodName = A::bar.name const val className = ::A.")!>name const val topLevelPropName = ::topLevelProp.name const val nameInComplexExpression = A::OK.name + "!" // STOP_EVALUATION_CHECKS fun box(): String { if (propertyName1.id() != "OK") return "Fail 1" if (propertyName2.id() != "somePropertyWithLongName") return "Fail 2" if (methodName.id() != "foo") return "Fail 3" if (suspendMethodName.id() != "bar") return "Fail 3.2" if (className.id() != "") return "Fail 4" if (topLevelPropName.id() != "topLevelProp") return "Fail 5" if (nameInComplexExpression.id() != "OK!") return "Fail 5" return "OK" }