@@ -1257,47 +1257,57 @@ Function: smv_typecheckt::typecheck
1257
1257
void smv_typecheckt::typecheck (
1258
1258
smv_parse_treet::modulet::itemt &item)
1259
1259
{
1260
- modet mode;
1261
-
1262
1260
switch (item.item_type )
1263
1261
{
1264
- case smv_parse_treet::modulet::itemt::ASSIGN_CURRENT:
1265
- mode = OTHER;
1266
- break ;
1267
-
1268
- case smv_parse_treet::modulet::itemt::ASSIGN_INIT:
1269
- mode = INIT;
1270
- break ;
1271
-
1272
- case smv_parse_treet::modulet::itemt::ASSIGN_NEXT:
1273
- mode = TRANS;
1274
- break ;
1275
-
1276
1262
case smv_parse_treet::modulet::itemt::INIT:
1277
- mode=INIT;
1278
- break ;
1263
+ typecheck (item.expr , INIT);
1264
+ convert_expr_to (item.expr , bool_typet{});
1265
+ return ;
1279
1266
1280
1267
case smv_parse_treet::modulet::itemt::TRANS:
1281
- mode=TRANS;
1282
- break ;
1268
+ typecheck (item.expr , TRANS);
1269
+ convert_expr_to (item.expr , bool_typet{});
1270
+ return ;
1283
1271
1284
1272
case smv_parse_treet::modulet::itemt::CTLSPEC:
1285
- mode = CTL;
1286
- break ;
1273
+ typecheck (item.expr , CTL);
1274
+ convert_expr_to (item.expr , bool_typet{});
1275
+ return ;
1287
1276
1288
1277
case smv_parse_treet::modulet::itemt::LTLSPEC:
1289
- mode = LTL;
1290
- break ;
1278
+ typecheck (item.expr , LTL);
1279
+ convert_expr_to (item.expr , bool_typet{});
1280
+ return ;
1291
1281
1292
- case smv_parse_treet::modulet::itemt::DEFINE:
1293
1282
case smv_parse_treet::modulet::itemt::INVAR:
1294
1283
case smv_parse_treet::modulet::itemt::FAIRNESS:
1295
- default :
1296
- mode=OTHER;
1297
- }
1284
+ typecheck (item.expr , OTHER);
1285
+ convert_expr_to (item.expr , bool_typet{});
1286
+ return ;
1287
+
1288
+ case smv_parse_treet::modulet::itemt::ASSIGN_CURRENT:
1289
+ typecheck (item.equal_expr ().lhs (), OTHER);
1290
+ typecheck (item.equal_expr ().rhs (), item.equal_expr ().lhs ().type (), OTHER);
1291
+ item.equal_expr ().type () = bool_typet{};
1292
+ return ;
1293
+
1294
+ case smv_parse_treet::modulet::itemt::ASSIGN_INIT:
1295
+ typecheck (item.equal_expr ().lhs (), INIT);
1296
+ typecheck (item.equal_expr ().rhs (), item.equal_expr ().lhs ().type (), INIT);
1297
+ item.equal_expr ().type () = bool_typet{};
1298
+ return ;
1298
1299
1299
- typecheck (item.expr , mode);
1300
- convert_expr_to (item.expr , bool_typet{});
1300
+ case smv_parse_treet::modulet::itemt::ASSIGN_NEXT:
1301
+ typecheck (item.equal_expr ().lhs (), TRANS);
1302
+ typecheck (item.equal_expr ().rhs (), item.equal_expr ().lhs ().type (), TRANS);
1303
+ item.equal_expr ().type () = bool_typet{};
1304
+ return ;
1305
+
1306
+ case smv_parse_treet::modulet::itemt::DEFINE:
1307
+ typecheck (item.expr , OTHER);
1308
+ item.equal_expr ().type () = bool_typet{};
1309
+ return ;
1310
+ }
1301
1311
}
1302
1312
1303
1313
/* ******************************************************************\
0 commit comments