@@ -194,8 +194,11 @@ class EtsMethodBuilder(
194194 if (entity is EtsExpr || entity is EtsFieldRef || entity is EtsArrayAccess ) {
195195 return ensureLocal(entity)
196196 } else {
197- check(entity is EtsValue ) {
198- " Expected EtsValue, but got $entity "
197+ if (entity !is EtsValue ) {
198+ logger.error {
199+ " Expected EtsValue, but got ${entity::class .java} : $entity \n Method: $method "
200+ }
201+ error(" Expected EtsValue, but got ${entity::class .java} " )
199202 }
200203 return entity
201204 }
@@ -207,9 +210,19 @@ class EtsMethodBuilder(
207210 }
208211
209212 is AssignStmtDto -> {
210- val lhv = left.toEtsEntity() as EtsValue // safe cast
211- check(lhv is EtsLocal || lhv is EtsFieldRef || lhv is EtsArrayAccess ) {
212- " LHV of AssignStmt should be EtsLocal, EtsFieldRef, or EtsArrayAccess, but got $lhv "
213+ val lhv = left.toEtsEntity().let {
214+ // Drop cast on LHV
215+ if (it is EtsCastExpr ) {
216+ it.arg
217+ } else {
218+ it
219+ }
220+ }
221+ if (! (lhv is EtsLocal || lhv is EtsFieldRef || lhv is EtsArrayAccess )) {
222+ logger.error {
223+ " LHV of AssignStmt should be EtsLocal, EtsFieldRef, or EtsArrayAccess, but got ${lhv::class .java} : $lhv \n Method: $method \n Stmt: $this "
224+ }
225+ error(" LHV of AssignStmt should be EtsLocal, EtsFieldRef, or EtsArrayAccess, but got ${lhv::class .java} " )
213226 }
214227 val rhv = right.toEtsEntity().let { rhv ->
215228 if (lhv is EtsLocal ) {
@@ -232,7 +245,13 @@ class EtsMethodBuilder(
232245 }
233246
234247 is CallStmtDto -> {
235- val expr = expr.toEtsEntity() as EtsCallExpr // safe cast
248+ val expr = expr.toEtsEntity()
249+ if (expr !is EtsCallExpr ) {
250+ logger.error {
251+ " Expr in CallStmt should be EtsCallExpr, but got ${expr::class .java} : $expr \n Method: $method \n Stmt: $this "
252+ }
253+ error(" Expr in CallStmt should be EtsCallExpr, but got ${expr::class .java} " )
254+ }
236255 EtsCallStmt (
237256 location = loc(),
238257 expr = expr,
0 commit comments