File tree Expand file tree Collapse file tree 4 files changed +33
-9
lines changed
Expand file tree Collapse file tree 4 files changed +33
-9
lines changed Original file line number Diff line number Diff line change 1- KNOWNBUG
1+ CORE
22process1.smv
33
4- ^EXIT=0$
4+ ^file .* line 8: no support for asynchronous processes$
5+ ^EXIT=2$
56^SIGNAL=0$
67--
78^warning: ignoring
89--
9- This does not parse.
Original file line number Diff line number Diff line change @@ -42,6 +42,8 @@ IREP_ID_ONE(smv_setnotin)
4242IREP_ID_ONE (smv_signed_cast )
4343IREP_ID_ONE (smv_signed_word )
4444IREP_ID_ONE (smv_sizeof )
45+ IREP_ID_ONE (smv_module_instance )
46+ IREP_ID_ONE (smv_process_module_instance )
4547IREP_ID_ONE (smv_swconst )
4648IREP_ID_ONE (smv_union )
4749IREP_ID_ONE (smv_unsigned_cast )
Original file line number Diff line number Diff line change @@ -589,16 +589,26 @@ simple_type_specifier:
589589 ;
590590
591591module_type_specifier:
592- module_name
592+ module_name parameter_list_paren_opt
593593 {
594594 init ($$, ID_smv_module_instance);
595595 to_smv_module_instance_type (stack_type ($$)).base_name (stack_expr ($1 ).id ());
596+ stack_expr ($$).operands ().swap (stack_expr ($2 ).operands ());
596597 }
597- | module_name ' ( ' parameter_list ' ) '
598+ | process_Token module_name parameter_list_paren_opt
598599 {
599- init ($$, ID_smv_module_instance);
600- to_smv_module_instance_type (stack_type ($$)).base_name (stack_expr ($1 ).id ());
601- stack_expr ($$).operands ().swap (stack_expr ($3 ).operands ());
600+ init ($$, ID_smv_process_module_instance);
601+ }
602+ ;
603+
604+ parameter_list_paren_opt:
605+ /* optional */
606+ {
607+ init ($$);
608+ }
609+ | ' (' parameter_list ' )'
610+ {
611+ $$ = $2 ;
602612 }
603613 ;
604614
Original file line number Diff line number Diff line change @@ -261,6 +261,14 @@ void smv_typecheckt::flatten_hierarchy(smv_parse_treet::modulet &smv_module)
261261 instance.arguments (),
262262 instance.source_location ());
263263 }
264+
265+ if (
266+ element.is_var () &&
267+ element.expr .type ().id () == ID_smv_process_module_instance)
268+ {
269+ throw errort ().with_location (element.expr .source_location ())
270+ << " no support for asynchronous processes" ;
271+ }
264272 }
265273}
266274
@@ -2277,8 +2285,12 @@ void smv_typecheckt::create_var_symbols(
22772285 else
22782286 symbol.pretty_name = strip_smv_prefix (symbol.name );
22792287
2280- if (symbol.type .id () == ID_smv_module_instance)
2288+ if (
2289+ symbol.type .id () == ID_smv_module_instance ||
2290+ symbol.type .id () == ID_smv_process_module_instance)
2291+ {
22812292 symbol.is_input = false ;
2293+ }
22822294 else
22832295 symbol.is_input = true ;
22842296
You can’t perform that action at this time.
0 commit comments