Skip to content

Commit 9eda9c5

Browse files
committed
added CostErrors::ExecutionTimeExpired
1 parent 613583d commit 9eda9c5

File tree

6 files changed

+12
-6
lines changed

6 files changed

+12
-6
lines changed

clarity/src/vm/analysis/errors.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,7 @@ impl From<CostErrors> for CheckErrors {
280280
CheckErrors::Expects("Unexpected interpreter failure in cost computation".into())
281281
}
282282
CostErrors::Expect(s) => CheckErrors::Expects(s),
283+
CostErrors::ExecutionTimeExpired => CheckErrors::ExecutionTimeExpired,
283284
}
284285
}
285286
}

clarity/src/vm/ast/errors.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,8 @@ pub enum ParseErrors {
9292
UnexpectedParserFailure,
9393
/// Should be an unreachable failure which invalidates the transaction
9494
InterpreterFailure,
95+
96+
ExecutionTimeExpired,
9597
}
9698

9799
#[derive(Debug, PartialEq)]
@@ -173,6 +175,7 @@ impl From<CostErrors> for ParseError {
173175
CostErrors::InterpreterFailure | CostErrors::Expect(_) => {
174176
ParseError::new(ParseErrors::InterpreterFailure)
175177
}
178+
CostErrors::ExecutionTimeExpired => ParseError::new(ParseErrors::ExecutionTimeExpired),
176179
}
177180
}
178181
}
@@ -299,6 +302,7 @@ impl DiagnosableError for ParseErrors {
299302
ParseErrors::NoteToMatchThis(token) => format!("to match this '{}'", token),
300303
ParseErrors::UnexpectedParserFailure => "unexpected failure while parsing".to_string(),
301304
ParseErrors::InterpreterFailure => "unexpected failure while parsing".to_string(),
305+
ParseErrors::ExecutionTimeExpired => "max execution time expired".to_string(),
302306
}
303307
}
304308

clarity/src/vm/contexts.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
use std::collections::BTreeMap;
1818
use std::fmt;
1919
use std::mem::replace;
20-
use std::time::Instant;
20+
use std::time::{Duration, Instant};
2121

2222
use hashbrown::{HashMap, HashSet};
2323
use serde::Serialize;
@@ -48,8 +48,6 @@ use crate::vm::types::{
4848
use crate::vm::version::ClarityVersion;
4949
use crate::vm::{ast, eval, is_reserved, stx_transfer_consolidated};
5050

51-
use std::time::Duration;
52-
5351
pub const MAX_CONTEXT_DEPTH: u16 = 256;
5452

5553
// TODO:

clarity/src/vm/costs/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -414,6 +414,7 @@ pub enum CostErrors {
414414
CostContractLoadFailure,
415415
InterpreterFailure,
416416
Expect(String),
417+
ExecutionTimeExpired,
417418
}
418419

419420
impl CostErrors {

clarity/src/vm/mod.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ pub mod clarity;
5555

5656
use std::collections::BTreeMap;
5757

58+
use costs::CostErrors;
5859
use serde_json;
5960
use stacks_common::types::StacksEpochId;
6061

@@ -325,7 +326,7 @@ pub fn eval(
325326
exp,
326327
env.global_context.execution_time_tracker.elapsed()
327328
);
328-
return Err(CheckErrors::ExecutionTimeExpired.into());
329+
return Err(CostErrors::ExecutionTimeExpired.into());
329330
}
330331

331332
if let Some(mut eval_hooks) = env.global_context.eval_hooks.take() {

clarity/src/vm/tests/simple_apply_eval.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@ use crate::vm::types::{
4141
use crate::vm::{
4242
eval, execute as vm_execute, execute_v2 as vm_execute_v2,
4343
execute_with_max_execution_time as vm_execute_with_max_execution_time, execute_with_parameters,
44-
CallStack, ClarityVersion, ContractContext, Environment, GlobalContext, LocalContext, Value,
44+
CallStack, ClarityVersion, ContractContext, CostErrors, Environment, GlobalContext,
45+
LocalContext, Value,
4546
};
4647

4748
#[test]
@@ -1773,6 +1774,6 @@ fn test_execution_time_expiration() {
17731774
vm_execute_with_max_execution_time("(+ 1 1)", Duration::from_secs(0))
17741775
.err()
17751776
.unwrap(),
1776-
CheckErrors::ExecutionTimeExpired.into()
1777+
CostErrors::ExecutionTimeExpired.into()
17771778
);
17781779
}

0 commit comments

Comments
 (0)