@@ -992,15 +992,19 @@ pub fn add_serialized_output(result: &mut serde_json::Value, value: Value) {
992
992
993
993
/// Returns (process-exit-code, Option<json-output>)
994
994
pub fn invoke_command ( invoked_by : & str , args : & [ String ] ) -> ( i32 , Option < serde_json:: Value > ) {
995
- invoke_command_with_db ( invoked_by, args, None )
995
+ let mut store = MemoryBackingStore :: new ( ) ;
996
+ let mut analysis_db = store. as_analysis_db ( ) ;
997
+ analysis_db. begin ( ) ;
998
+
999
+ invoke_command_with_db ( invoked_by, args, & mut analysis_db)
996
1000
}
997
1001
998
1002
/// Returns (process-exit-code, Option<json-output>)
999
1003
/// Optionally accepts a shared analysis database for contract dependency resolution
1000
1004
pub fn invoke_command_with_db (
1001
1005
invoked_by : & str ,
1002
1006
args : & [ String ] ,
1003
- analysis_db : Option < & mut AnalysisDatabase > ,
1007
+ analysis_db : & mut AnalysisDatabase ,
1004
1008
) -> ( i32 , Option < serde_json:: Value > ) {
1005
1009
if args. is_empty ( ) {
1006
1010
print_usage ( invoked_by) ;
@@ -1659,8 +1663,7 @@ pub fn invoke_command_with_db(
1659
1663
} else {
1660
1664
None
1661
1665
} ;
1662
- let ( _, _, analysis_result_and_cost) = if let Some ( analysis_db) = analysis_db {
1663
- // Use shared analysis database for contract dependency resolution
1666
+ let ( _, _, analysis_result_and_cost) =
1664
1667
in_block ( header_db, marf_kv, |header_db, mut marf| {
1665
1668
let analysis_result =
1666
1669
run_analysis ( & contract_identifier, & mut ast, & header_db, & mut marf, true ) ;
@@ -1688,36 +1691,7 @@ pub fn invoke_command_with_db(
1688
1691
( header_db, marf, Ok ( ( contract_analysis, ( result, cost) ) ) )
1689
1692
}
1690
1693
}
1691
- } )
1692
- } else {
1693
- // Original behavior without shared analysis database
1694
- in_block ( header_db, marf_kv, |header_db, mut marf| {
1695
- let analysis_result =
1696
- run_analysis ( & contract_identifier, & mut ast, & header_db, & mut marf, true ) ;
1697
- match analysis_result {
1698
- Err ( e) => ( header_db, marf, Err ( e) ) ,
1699
- Ok ( contract_analysis) => {
1700
- let result_and_cost = with_env_costs (
1701
- mainnet,
1702
- & header_db,
1703
- & mut marf,
1704
- coverage. as_mut ( ) ,
1705
- |vm_env| {
1706
- vm_env. initialize_versioned_contract (
1707
- contract_identifier,
1708
- ClarityVersion :: Clarity2 ,
1709
- & contract_content,
1710
- None ,
1711
- ASTRules :: PrecheckSize ,
1712
- )
1713
- } ,
1714
- ) ;
1715
- let ( result, cost) = result_and_cost;
1716
- ( header_db, marf, Ok ( ( contract_analysis, ( result, cost) ) ) )
1717
- }
1718
- }
1719
- } )
1720
- } ;
1694
+ } ) ;
1721
1695
1722
1696
match analysis_result_and_cost {
1723
1697
Ok ( ( contract_analysis, ( Ok ( ( _x, asset_map, events) ) , cost) ) ) => {
@@ -2084,7 +2058,7 @@ mod test {
2084
2058
cargo_workspace_as_string ( "sample/contracts/tokens.clar" ) ,
2085
2059
db_name. clone ( ) ,
2086
2060
] ,
2087
- Some ( & mut analysis_db) ,
2061
+ & mut analysis_db,
2088
2062
) ;
2089
2063
2090
2064
let exit = invoked. 0 ;
@@ -2175,7 +2149,7 @@ mod test {
2175
2149
"--assets" . to_string ( ) ,
2176
2150
db_name. clone ( ) ,
2177
2151
] ,
2178
- Some ( & mut analysis_db) ,
2152
+ & mut analysis_db,
2179
2153
) ;
2180
2154
2181
2155
let exit = invoked. 0 ;
0 commit comments