From 984fb4e89cec3636967308dff6bc5f2f3cba8165 Mon Sep 17 00:00:00 2001 From: Liam Date: Mon, 4 May 2026 22:22:43 -0400 Subject: [PATCH 1/2] Split binary imports from library --- src/arguments.rs | 6 ++--- src/error.rs | 6 ++--- src/lib.rs | 64 +++++++++++++------------------------------- src/main.rs | 38 +++++++++++++++++++++++--- src/rounding_mode.rs | 6 ++--- 5 files changed, 62 insertions(+), 58 deletions(-) diff --git a/src/arguments.rs b/src/arguments.rs index d1680ed..8f7f261 100644 --- a/src/arguments.rs +++ b/src/arguments.rs @@ -1,6 +1,6 @@ use super::*; -#[derive(Clap, Debug)] +#[derive(Debug, Parser)] #[clap( about, author, @@ -15,7 +15,7 @@ use super::*; {all-args}{after-help} " )] -pub struct Arguments { +pub(crate) struct Arguments { #[clap( short, long, @@ -212,7 +212,7 @@ impl Arguments { } } - pub fn run(self) -> Result { + pub(crate) fn run(self) -> Result { match (&self.filename, &self.expression) { (Some(filename), _) => self.eval(filename), (_, Some(expression)) => self.evaluate_expression(expression.clone()), diff --git a/src/error.rs b/src/error.rs index 203c8e0..13cd125 100644 --- a/src/error.rs +++ b/src/error.rs @@ -14,10 +14,8 @@ impl Error { } } - pub(crate) fn report<'a>( - &self, - id: &'a str, - ) -> Report<'a, (&'a str, Range)> { + #[must_use] + pub fn report<'a>(&self, id: &'a str) -> Report<'a, (&'a str, Range)> { let span_range = self.span.into_range(); let mut report = Report::build( diff --git a/src/lib.rs b/src/lib.rs index f8c7b78..51e67cd 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,39 +1,37 @@ -pub(crate) use { +use { crate::{builtins::BUILTINS, consts::with_consts}, - ariadne::{Color, Label, Report, ReportKind, Source}, + ariadne::{Color, Label, Report, ReportKind}, astro_float::{BigFloat as Float, Consts, Radix, Sign}, chumsky::prelude::*, - clap::Parser as Clap, std::{ cell::RefCell, collections::HashMap, fmt::{self, Display, Formatter}, - fs, ops::Range, - path::PathBuf, process, + str::FromStr, }, }; -#[cfg(not(target_family = "wasm"))] -pub(crate) use { - crate::highlighter::Highlighter, - regex::Regex, - rustyline::{ - Context, Editor, Helper, - completion::{Completer, FilenameCompleter, Pair}, - config::{Builder, ColorMode, CompletionType, EditMode}, - error::ReadlineError, - highlight::{CmdKind, Highlighter as RustylineHighlighter}, - hint::{Hinter, HistoryHinter}, - history::DefaultHistory, - validate::Validator, - }, - std::borrow::Cow::{self, Owned}, +pub use crate::{ + ast::{AssignmentTarget, BinaryOp, Expression, Program, Statement, UnaryOp}, + builtin::{Builtin, BuiltinFunction, BuiltinFunctionPayload}, + completion::Completion, + config::Config, + environment::Environment, + error::Error, + evaluator::Evaluator, + float_ext::FloatExt, + function::Function, + parser::parse, + rounding_mode::RoundingMode, + value::Value, }; +pub type Span = SimpleSpan; +pub type Spanned = (T, Span); + type Result = std::result::Result; -type Spanned = (T, Span); mod ast; mod builtin; @@ -50,27 +48,3 @@ mod function; mod parser; mod rounding_mode; mod value; - -#[doc(hidden)] -pub mod arguments; - -#[cfg(not(target_family = "wasm"))] -mod highlighter; - -pub use crate::{ - arguments::Arguments, - ast::{AssignmentTarget, BinaryOp, Expression, Program, Statement, UnaryOp}, - builtin::{Builtin, BuiltinFunction, BuiltinFunctionPayload}, - completion::Completion, - config::Config, - environment::Environment, - error::Error, - evaluator::Evaluator, - float_ext::FloatExt, - function::Function, - parser::parse, - rounding_mode::RoundingMode, - value::Value, -}; - -pub type Span = SimpleSpan; diff --git a/src/main.rs b/src/main.rs index ca87b33..15664ac 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,10 +1,42 @@ use { + arguments::Arguments, + ariadne::Source, clap::Parser, - rustyline::error::ReadlineError, - std::{backtrace::BacktraceStatus, process, thread}, - val::arguments::Arguments, + highlighter::Highlighter, + regex::Regex, + rounding_mode::RoundingMode, + rustyline::{ + Context, Editor, Helper, + completion::{Completer, FilenameCompleter, Pair}, + config::{Builder, ColorMode, CompletionType, EditMode}, + error::ReadlineError, + highlight::{CmdKind, Highlighter as RustylineHighlighter}, + hint::{Hinter, HistoryHinter}, + history::DefaultHistory, + validate::Validator, + }, + std::{ + backtrace::BacktraceStatus, + borrow::{Cow, Cow::Owned}, + fmt::{self, Display, Formatter}, + fs, + path::PathBuf, + process, + str::FromStr, + thread, + }, + val::{ + AssignmentTarget, Config, Environment, Evaluator, Expression, Program, + Spanned, Statement, Value, parse, + }, }; +mod arguments; +mod highlighter; +mod rounding_mode; + +type Result = std::result::Result; + fn main() { let arguments = Arguments::parse(); diff --git a/src/rounding_mode.rs b/src/rounding_mode.rs index 5e28bee..9001b1f 100644 --- a/src/rounding_mode.rs +++ b/src/rounding_mode.rs @@ -11,8 +11,8 @@ pub enum RoundingMode { Up = 2, } -impl std::fmt::Display for RoundingMode { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { +impl Display for RoundingMode { + fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { let s = match self { RoundingMode::Down => "down", RoundingMode::FromZero => "from-zero", @@ -26,7 +26,7 @@ impl std::fmt::Display for RoundingMode { } } -impl std::str::FromStr for RoundingMode { +impl FromStr for RoundingMode { type Err = String; fn from_str(s: &str) -> Result { From d408efe2c795eb6092b8a13c16ea8bfeecce30cf Mon Sep 17 00:00:00 2001 From: Liam Date: Mon, 4 May 2026 22:26:36 -0400 Subject: [PATCH 2/2] Tweak --- crates/val-wasm/src/lib.rs | 4 ++-- src/lib.rs | 7 ++++--- src/main.rs | 5 +++-- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/crates/val-wasm/src/lib.rs b/crates/val-wasm/src/lib.rs index 0aa4975..54c6866 100644 --- a/crates/val-wasm/src/lib.rs +++ b/crates/val-wasm/src/lib.rs @@ -7,8 +7,8 @@ use { serde::Serialize, serde_wasm_bindgen::to_value, val::{ - AssignmentTarget, Environment, Evaluator, Expression, Program, - RoundingMode, Span, Statement, + Environment, Evaluator, RoundingMode, Span, + ast::{AssignmentTarget, Expression, Program, Statement}, }, wasm_bindgen::prelude::*, }; diff --git a/src/lib.rs b/src/lib.rs index 51e67cd..ff43c7d 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,8 +1,10 @@ use { - crate::{builtins::BUILTINS, consts::with_consts}, ariadne::{Color, Label, Report, ReportKind}, + ast::{AssignmentTarget, BinaryOp, Expression, Program, Statement, UnaryOp}, astro_float::{BigFloat as Float, Consts, Radix, Sign}, + builtins::BUILTINS, chumsky::prelude::*, + consts::with_consts, std::{ cell::RefCell, collections::HashMap, @@ -14,7 +16,6 @@ use { }; pub use crate::{ - ast::{AssignmentTarget, BinaryOp, Expression, Program, Statement, UnaryOp}, builtin::{Builtin, BuiltinFunction, BuiltinFunctionPayload}, completion::Completion, config::Config, @@ -33,7 +34,7 @@ pub type Spanned = (T, Span); type Result = std::result::Result; -mod ast; +pub mod ast; mod builtin; mod builtins; mod completion; diff --git a/src/main.rs b/src/main.rs index 15664ac..86b3a1e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -26,8 +26,9 @@ use { thread, }, val::{ - AssignmentTarget, Config, Environment, Evaluator, Expression, Program, - Spanned, Statement, Value, parse, + Config, Environment, Evaluator, Spanned, Value, + ast::{AssignmentTarget, Expression, Program, Statement}, + parse, }, };