feat: generalize error InvalidFunction -> UnrecognizedName

This commit is contained in:
electria 2026-07-15 23:49:57 -07:00
commit 7f733c1053
Signed by: electria
SSH key fingerprint: SHA256:8LlB3ucPbBHqozqkhsNbaV5oG3SlzzqUj8FZDL6IPQs

View file

@ -6,8 +6,8 @@ use crate::nodes::{Node, Nodes, PREC};
#[derive(Clone, Debug, thiserror::Error)] #[derive(Clone, Debug, thiserror::Error)]
pub enum Error { pub enum Error {
#[error("invalid function: {0}")] #[error("unrecognized function/constant: {0}")]
InvalidFunction(String), UnrecognizedName(String),
#[error("invalid operator: {0}")] #[error("invalid operator: {0}")]
InvalidOperator(char), InvalidOperator(char),
#[error("failed to parse number '{0}': {1}")] #[error("failed to parse number '{0}': {1}")]
@ -66,7 +66,9 @@ impl FromStr for Nodes {
ParsingState::ReadingFunctionName(start_index) => { ParsingState::ReadingFunctionName(start_index) => {
if !c.is_alphabetic() { if !c.is_alphabetic() {
nodes.push(Node::from_name(&filtered_string[start_index..i]).map_err( nodes.push(Node::from_name(&filtered_string[start_index..i]).map_err(
|()| Error::InvalidFunction(filtered_string[start_index..i].to_owned()), |()| {
Error::UnrecognizedName(filtered_string[start_index..i].to_owned())
},
)?); )?);
state = ParsingState::Start; state = ParsingState::Start;
@ -117,7 +119,7 @@ impl FromStr for Nodes {
ParsingState::ReadingFunctionName(start_index) => { ParsingState::ReadingFunctionName(start_index) => {
nodes.push( nodes.push(
Node::from_name(&filtered_string[start_index..i]).map_err(|()| { Node::from_name(&filtered_string[start_index..i]).map_err(|()| {
Error::InvalidFunction(filtered_string[start_index..i].to_owned()) Error::UnrecognizedName(filtered_string[start_index..i].to_owned())
})?, })?,
); );
} }