Skip to content

Commit a70ec7c

Browse files
committed
CRC: revert eager evaluation of expensive errors and general code cleanup
Signed-off-by: Jacinta Ferrant <[email protected]>
1 parent 66502b1 commit a70ec7c

File tree

6 files changed

+27
-28
lines changed

6 files changed

+27
-28
lines changed

clarity/src/vm/analysis/type_checker/v2_1/mod.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1240,6 +1240,7 @@ impl<'a, 'b> TypeChecker<'a, 'b> {
12401240
.cloned()
12411241
}
12421242

1243+
#[allow(clippy::unnecessary_lazy_evaluations)]
12431244
fn type_check_define_function(
12441245
&mut self,
12451246
signature: &[SymbolicExpression],
@@ -1270,11 +1271,11 @@ impl<'a, 'b> TypeChecker<'a, 'b> {
12701271
if self.epoch.analysis_memory() {
12711272
let added_memory = u64::from(arg_name.len())
12721273
.checked_add(arg_type.type_size()?.into())
1273-
.ok_or(CostErrors::CostOverflow)?;
1274+
.ok_or_else(|| CostErrors::CostOverflow)?;
12741275
self.add_memory(added_memory)?;
12751276
tracked_mem = tracked_mem
12761277
.checked_add(added_memory)
1277-
.ok_or(CostErrors::CostOverflow)?;
1278+
.ok_or_else(|| CostErrors::CostOverflow)?;
12781279
}
12791280

12801281
match arg_type {

clarity/src/vm/analysis/type_checker/v2_1/natives/mod.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,7 @@ pub fn check_special_tuple_cons(
263263
Ok(TypeSignature::TupleType(tuple_signature))
264264
}
265265

266+
#[allow(clippy::unnecessary_lazy_evaluations)]
266267
fn check_special_let(
267268
checker: &mut TypeChecker,
268269
args: &[SymbolicExpression],
@@ -297,10 +298,10 @@ fn check_special_let(
297298
if checker.epoch.analysis_memory() {
298299
let memory_use = u64::from(var_name.len())
299300
.checked_add(u64::from(typed_result.type_size()?))
300-
.ok_or(CostErrors::CostOverflow)?;
301+
.ok_or_else(|| CostErrors::CostOverflow)?;
301302
added_memory = added_memory
302303
.checked_add(memory_use)
303-
.ok_or(CostErrors::CostOverflow)?;
304+
.ok_or_else(|| CostErrors::CostOverflow)?;
304305
checker.add_memory(memory_use)?;
305306
}
306307
out_context.add_variable_type(var_name.clone(), typed_result, checker.clarity_version);

clarity/src/vm/analysis/type_checker/v2_1/natives/options.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,7 @@ pub fn check_special_unwrap_err(
274274
inner_unwrap_err(input, checker)
275275
}
276276

277+
#[allow(clippy::unnecessary_lazy_evaluations)]
277278
fn eval_with_new_binding(
278279
body: &SymbolicExpression,
279280
bind_name: ClarityName,
@@ -292,7 +293,7 @@ fn eval_with_new_binding(
292293
if checker.epoch.analysis_memory() {
293294
memory_use = u64::from(bind_name.len())
294295
.checked_add(u64::from(bind_type.type_size()?))
295-
.ok_or(CostErrors::CostOverflow)?;
296+
.ok_or_else(|| CostErrors::CostOverflow)?;
296297
checker.add_memory(memory_use)?;
297298
}
298299
checker.contract_context.check_name_used(&bind_name)?;

clarity/src/vm/docs/mod.rs

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -814,19 +814,19 @@ pub fn get_output_type_string(function_type: &FunctionType) -> String {
814814
FunctionType::Binary(left, right, ref out_sig) => match out_sig {
815815
FunctionReturnsSignature::Fixed(out_type) => format!("{}", out_type),
816816
FunctionReturnsSignature::TypeOfArgAtPosition(pos) => {
817-
let arg_sig =
818-
match pos {
819-
0 => left,
820-
1 => right,
821-
_ => panic!("Index out of range: TypeOfArgAtPosition for FunctionType::Binary can only handle two arguments, zero-indexed (0 or 1).")
822-
};
817+
let arg_sig = match pos {
818+
0 => left,
819+
1 => right,
820+
_ => panic!("Index out of range: TypeOfArgAtPosition for FunctionType::Binary can only handle two arguments, zero-indexed (0 or 1).")
821+
};
822+
823823
match arg_sig {
824-
FunctionArgSignature::Single(arg_type) => format!("{}", arg_type),
825-
FunctionArgSignature::Union(arg_types) => {
826-
let out_types: Vec<String> =
827-
arg_types.iter().map(|x| format!("{}", x)).collect();
828-
out_types.join(" | ")
829-
}
824+
FunctionArgSignature::Single(arg_type) => arg_type.to_string(),
825+
FunctionArgSignature::Union(arg_types) => arg_types
826+
.iter()
827+
.map(ToString::to_string)
828+
.collect::<Vec<_>>()
829+
.join(" | "),
830830
}
831831
}
832832
},
@@ -2723,7 +2723,7 @@ fn make_all_api_reference() -> ReferenceAPIs {
27232723
.filter_map(make_keyword_reference)
27242724
.collect();
27252725

2726-
keywords.sort_by(|x, y| x.name.cmp(y.name));
2726+
keywords.sort_by_key(|x| x.name);
27272727

27282728
ReferenceAPIs {
27292729
functions,

clarity/src/vm/mod.rs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -355,11 +355,8 @@ pub fn eval(
355355
}
356356

357357
pub fn is_reserved(name: &str, version: &ClarityVersion) -> bool {
358-
if let Some(_result) = functions::lookup_reserved_functions(name, version) {
359-
true
360-
} else {
361-
variables::is_reserved_name(name, version)
362-
}
358+
functions::lookup_reserved_functions(name, version).is_some()
359+
|| variables::is_reserved_name(name, version)
363360
}
364361

365362
/// This function evaluates a list of expressions, sharing a global context.

clarity/src/vm/types/signatures.rs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1673,11 +1673,10 @@ impl TypeSignature {
16731673
let fn_args_exprs = args[1]
16741674
.match_list()
16751675
.ok_or(CheckErrors::DefineTraitBadSignature)?;
1676-
let mut fn_args = Vec::with_capacity(fn_args_exprs.len());
1677-
for arg_type in fn_args_exprs.iter() {
1678-
let arg_t = TypeSignature::parse_type_repr(epoch, arg_type, accounting)?;
1679-
fn_args.push(arg_t);
1680-
}
1676+
let fn_args = fn_args_exprs
1677+
.iter()
1678+
.map(|arg_type| TypeSignature::parse_type_repr(epoch, arg_type, accounting))
1679+
.collect::<Result<_>>()?;
16811680

16821681
// Extract function's type return - must be a response
16831682
let fn_return = match TypeSignature::parse_type_repr(epoch, &args[2], accounting) {

0 commit comments

Comments
 (0)