1
- from typing import Collection , Iterable , List
1
+ from typing import Collection , Iterable , List , Tuple
2
2
3
3
from pyk .cterm import CTerm
4
4
from pyk .kast .inner import KApply , KInner , KRewrite , KVariable
@@ -36,7 +36,7 @@ def _expand_macros(_term: KInner) -> KInner:
36
36
return term
37
37
38
38
39
- def KCFG__replace_node (cfg : KCFG , node_id : str , new_cterm : CTerm ) -> KCFG : # noqa: N802
39
+ def KCFG__replace_node (cfg : KCFG , node_id : str , new_cterm : CTerm ) -> Tuple [ KCFG , str ] : # noqa: N802
40
40
41
41
# Remove old node, record data
42
42
node = cfg .node (node_id )
@@ -57,9 +57,9 @@ def KCFG__replace_node(cfg: KCFG, node_id: str, new_cterm: CTerm) -> KCFG: # no
57
57
for out_edge in out_edges :
58
58
cfg .create_edge (new_node .id , out_edge .target .id , out_edge .condition , out_edge .depth )
59
59
for in_cover in in_covers :
60
- cfg .create_cover (in_cover .source .id , new_node .id )
60
+ cfg .create_cover (in_cover .source .id , new_node .id , subst = in_cover . subst , constraint = in_cover . constraint )
61
61
for out_cover in out_covers :
62
- cfg .create_cover (new_node .id , out_cover .target .id )
62
+ cfg .create_cover (new_node .id , out_cover .target .id , subst = in_cover . subst , constraint = in_cover . constraint )
63
63
if init :
64
64
cfg .add_init (new_node .id )
65
65
if target :
@@ -70,7 +70,7 @@ def KCFG__replace_node(cfg: KCFG, node_id: str, new_cterm: CTerm) -> KCFG: # no
70
70
if in_expanded [nid ]:
71
71
cfg .add_expanded (nid )
72
72
73
- return cfg
73
+ return ( cfg , new_node . id )
74
74
75
75
76
76
def KPrint_make_unparsing (_self : KPrint , extra_modules : Iterable [KFlatModule ] = ()) -> KPrint : # noqa: N802
0 commit comments