@@ -93,9 +93,19 @@ impl PreprocessorDependencies {
93
93
enum BytecodeDependencyKind {
94
94
/// `type(Contract).creationCode`
95
95
CreationCode ,
96
- /// `new Contract`. Holds the name of the contract, args length and call args offset,
97
- /// `msg.value` (if any) and salt (if any).
98
- New ( String , usize , usize , Option < String > , Option < String > ) ,
96
+ /// `new Contract`.
97
+ New {
98
+ /// Contract name.
99
+ name : String ,
100
+ /// Constructor args length.
101
+ args_length : usize ,
102
+ /// Constructor call args offset.
103
+ call_args_offset : usize ,
104
+ /// `msg.value` (if any) used when creating contract.
105
+ value : Option < String > ,
106
+ /// `salt` (if any) used when creating contract.
107
+ salt : Option < String > ,
108
+ } ,
99
109
}
100
110
101
111
/// Represents a single bytecode dependency.
@@ -191,13 +201,18 @@ impl<'hir> Visit<'hir> for BytecodeDependencyCollector<'hir> {
191
201
192
202
let args_len = expr. span . hi ( ) - ty_new. span . hi ( ) ;
193
203
self . collect_dependency ( BytecodeDependency {
194
- kind : BytecodeDependencyKind :: New (
195
- name. to_string ( ) ,
196
- args_len. to_usize ( ) ,
204
+ kind : BytecodeDependencyKind :: New {
205
+ name : name . to_string ( ) ,
206
+ args_length : args_len. to_usize ( ) ,
197
207
call_args_offset,
198
- named_arg ( self . src , named_args, "value" , self . source_map ) ,
199
- named_arg ( self . src , named_args, "salt" , self . source_map ) ,
200
- ) ,
208
+ value : named_arg (
209
+ self . src ,
210
+ named_args,
211
+ "value" ,
212
+ self . source_map ,
213
+ ) ,
214
+ salt : named_arg ( self . src , named_args, "salt" , self . source_map ) ,
215
+ } ,
201
216
loc : span_to_range ( self . source_map , ty. span ) ,
202
217
referenced_contract : contract_id,
203
218
} ) ;
@@ -279,7 +294,13 @@ pub(crate) fn remove_bytecode_dependencies(
279
294
format ! ( "{vm}.getCode(\" {artifact}\" )" ) ,
280
295
) ) ;
281
296
}
282
- BytecodeDependencyKind :: New ( name, args_length, call_args_offset, value, salt) => {
297
+ BytecodeDependencyKind :: New {
298
+ name,
299
+ args_length,
300
+ call_args_offset,
301
+ value,
302
+ salt,
303
+ } => {
283
304
let mut update = format ! ( "{name}(payable({vm}.deployCode({{" ) ;
284
305
update. push_str ( & format ! ( "_artifact: \" {artifact}\" " ) ) ;
285
306
0 commit comments