Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion clarity/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ rstest_reuse = { version = "0.5.0" }
serde_stacker = "0.1"

[features]
default = ["rusqlite"]
default = ["devtools"]
developer-mode = ["stacks_common/developer-mode", "clarity-types/developer-mode"]
slog_json = ["stacks_common/slog_json"]
rusqlite = ["stacks_common/rusqlite", "clarity-types/rusqlite", "dep:rusqlite"]
Expand Down
30 changes: 26 additions & 4 deletions clarity/src/vm/ast/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ use stacks_common::types::StacksEpochId;
use self::definition_sorter::DefinitionSorter;
use self::errors::ParseResult;
use self::expression_identifier::ExpressionIdentifier;
#[cfg(not(feature = "devtools"))]
use self::parser::v1::parse as parse_v1;
use self::parser::v2::parse as parse_v2;
use self::stack_depth_checker::{StackDepthChecker, VaryStackDepthChecker};
Expand Down Expand Up @@ -58,12 +59,22 @@ pub fn parse(
/// Parse a program based on which epoch is active
fn parse_in_epoch(
source_code: &str,
#[cfg(feature = "devtools")]
#[allow(unused_variables)]
epoch_id: StacksEpochId,
) -> ParseResult<Vec<PreSymbolicExpression>> {
if epoch_id >= StacksEpochId::Epoch21 {
#[cfg(feature = "devtools")]
{
parse_v2(source_code)
} else {
parse_v1(source_code)
}

#[cfg(not(feature = "devtools"))]
{
if epoch_id >= StacksEpochId::Epoch21 {
parse_v2(source_code)
} else {
parse_v1(source_code)
}
}
}

Expand Down Expand Up @@ -111,6 +122,8 @@ fn inner_build_ast<T: CostTracker>(
source_code: &str,
cost_track: &mut T,
clarity_version: ClarityVersion,
#[cfg(feature = "devtools")]
#[allow(unused_variables)]
epoch: StacksEpochId,
error_early: bool,
) -> ParseResult<(ContractAST, Vec<Diagnostic>, bool)> {
Expand All @@ -124,9 +137,18 @@ fn inner_build_ast<T: CostTracker>(
_ => None,
};

#[cfg(feature = "devtools")]
let (pre_expressions, mut diagnostics, mut success) = if error_early {
let exprs = parse_v2(source_code)?;
(exprs, Vec::new(), true)
} else {
parser::v2::parse_collect_diagnostics(source_code)
};

#[cfg(not(feature = "devtools"))]
let (pre_expressions, mut diagnostics, mut success) = if epoch >= StacksEpochId::Epoch21 {
if error_early {
let exprs = parser::v2::parse(source_code)?;
let exprs = parse_v2(source_code)?;
(exprs, Vec::new(), true)
} else {
parser::v2::parse_collect_diagnostics(source_code)
Expand Down