diff --git a/cli/src/generate/build_tables/mod.rs b/cli/src/generate/build_tables/mod.rs index 49fc5061..34fa3fa1 100644 --- a/cli/src/generate/build_tables/mod.rs +++ b/cli/src/generate/build_tables/mod.rs @@ -9,6 +9,7 @@ mod token_conflicts; use std::collections::{BTreeSet, HashMap}; use anyhow::Result; +pub use build_lex_table::LARGE_CHARACTER_RANGE_COUNT; use log::info; use self::{ @@ -26,8 +27,6 @@ use crate::generate::{ tables::{LexTable, ParseAction, ParseTable, ParseTableEntry}, }; -pub use build_lex_table::LARGE_CHARACTER_RANGE_COUNT; - pub struct Tables { pub parse_table: ParseTable, pub main_lex_table: LexTable, diff --git a/cli/src/generate/grammar_files.rs b/cli/src/generate/grammar_files.rs index 0ffb7321..fb0c2528 100644 --- a/cli/src/generate/grammar_files.rs +++ b/cli/src/generate/grammar_files.rs @@ -410,7 +410,7 @@ pub fn generate_grammar_files( // Generate Python bindings missing_path(bindings_dir.join("python"), create_dir)?.apply(|path| { let lang_path = path.join(format!("tree_sitter_{}", language_name.to_snake_case())); - missing_path(lang_path.clone(), create_dir)?; + missing_path(&lang_path, create_dir)?; missing_path(lang_path.join("binding.c"), |path| { generate_file(path, PY_BINDING_C_TEMPLATE, language_name) @@ -442,7 +442,7 @@ pub fn generate_grammar_files( // Generate Swift bindings missing_path(bindings_dir.join("swift"), create_dir)?.apply(|path| { let lang_path = path.join(format!("TreeSitter{}", language_name.to_upper_camel_case())); - missing_path(lang_path.clone(), create_dir)?; + missing_path(&lang_path, create_dir)?; missing_path(lang_path.join(format!("{language_name}.h")), |path| { generate_file(path, PARSER_NAME_H_TEMPLATE, language_name) @@ -515,23 +515,29 @@ fn create_dir(path: &Path) -> Result<()> { } #[derive(PartialEq, Eq, Debug)] -enum PathState { - Exists(PathBuf), - Missing(PathBuf), +enum PathState
+where
+ P: AsRef PathState
+where
+ P: AsRef (path: P, mut action: F) -> Result (path: P, mut action: T, mut else_action: F) -> Result