1
1
use std:: collections:: { HashMap } ;
2
2
use std:: fmt;
3
- //use std::collections::{HashMap, HashSet};
4
- use std:: rc:: Rc ;
5
3
use crate :: ast:: { Decl , DeclX , Ident , SnapShots , Typ , TypX } ;
6
4
use crate :: context:: Context ;
7
5
use z3:: ast:: { Bool , Dynamic , Int } ;
@@ -41,7 +39,7 @@ impl<'a> Model<'a> {
41
39
// pub fn save_snapshots(&self, snapshots: SnapShots) {
42
40
// self.snapshots = snapshots.clone();
43
41
// }
44
- fn lookup_var ( & self , var_name : & String , var_smt : & Dynamic ) -> String {
42
+ fn lookup_z3_var ( & self , var_name : & String , var_smt : & Dynamic ) -> String {
45
43
if let Some ( x) = self . z3_model . eval ( var_smt) {
46
44
if let Some ( b) = x. as_bool ( ) {
47
45
format ! ( "{}" , b)
@@ -68,16 +66,16 @@ impl<'a> Model<'a> {
68
66
let var_name = crate :: var_to_const:: rename_var ( & * var_id, * var_count) ;
69
67
println ! ( "\t {}" , var_name) ;
70
68
let var_smt = context. vars . get ( & var_name) . unwrap_or_else ( || panic ! ( "internal error: variable {} not found" , var_name) ) ;
71
- let val = self . lookup_var ( & var_name, var_smt) ;
72
- value_snapshot. insert ( Rc :: new ( var_name ) , val) ;
69
+ let val = self . lookup_z3_var ( & var_name, var_smt) ;
70
+ value_snapshot. insert ( var_id . clone ( ) , val) ;
73
71
}
74
72
// Add the local variables to every snapshot for uniformity
75
73
println ! ( "local_vars has {} variables" , local_vars. len( ) ) ;
76
74
for decl in local_vars. iter ( ) {
77
75
if let DeclX :: Const ( var_name, typ) = & * * decl {
78
76
println ! ( "\t {}" , var_name) ;
79
77
let var_smt = new_const ( context, & var_name, & typ) ;
80
- let val = self . lookup_var ( & var_name, & var_smt) ;
78
+ let val = self . lookup_z3_var ( & var_name, & var_smt) ;
81
79
value_snapshot. insert ( var_name. clone ( ) , val) ;
82
80
//value_snapshot.insert(Rc::new((*var_name).clone()), val);
83
81
} else {
0 commit comments