@@ -106,6 +106,10 @@ import org.usvm.util.throwExceptionWithoutStackFrameDrop
106106
107107private val logger = KotlinLogging .logger {}
108108
109+ const val ADHOC_STRING = 777777.0 // arbitrary string
110+ const val ADHOC_STRING__NUMBER = 55555.0 // 'number'
111+ const val ADHOC_STRING__STRING = 2222.0 // 'string'
112+
109113class TsExprResolver (
110114 private val ctx : TsContext ,
111115 private val scope : TsStepScope ,
@@ -252,7 +256,16 @@ class TsExprResolver(
252256 error(" Not supported $expr " )
253257 }
254258
255- override fun visit (expr : EtsTypeOfExpr ): UExpr <out USort >? {
259+ override fun visit (expr : EtsTypeOfExpr ): UExpr <out USort >? = with (ctx) {
260+ val arg = resolve(expr.arg) ? : return null
261+
262+ if (arg.sort == fp64Sort) {
263+ if (arg == mkFp64(ADHOC_STRING )) {
264+ return mkFp64(ADHOC_STRING__STRING )
265+ }
266+ return mkFp64(ADHOC_STRING__NUMBER ) // 'number'
267+ }
268+
256269 logger.warn { " visit(${expr::class .simpleName} ) is not implemented yet" }
257270 error(" Not supported $expr " )
258271 }
@@ -834,8 +847,11 @@ class TsSimpleValueResolver(
834847 }
835848
836849 override fun visit (value : EtsStringConstant ): UExpr <out USort > = with (ctx) {
837- logger.warn { " visit(${value::class .simpleName} ) is not implemented yet" }
838- error(" Not supported $value " )
850+ return when (value.value) {
851+ " number" -> mkFp64(ADHOC_STRING__NUMBER )
852+ " string" -> mkFp64(ADHOC_STRING__STRING )
853+ else -> mkFp64(ADHOC_STRING )
854+ }
839855 }
840856
841857 override fun visit (value : EtsBooleanConstant ): UExpr <out USort > = with (ctx) {
0 commit comments