From 229d7943d8471eb114f961ab419c318736772da4 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Sun, 18 Aug 2019 21:44:24 +0300 Subject: switch to new codegen --- crates/ra_tools/Cargo.toml | 1 + crates/ra_tools/src/codegen.rs | 20 +++++++++++++++++--- crates/ra_tools/src/lib.rs | 13 ++----------- 3 files changed, 20 insertions(+), 14 deletions(-) (limited to 'crates') diff --git a/crates/ra_tools/Cargo.toml b/crates/ra_tools/Cargo.toml index a70079b95..02bab8f52 100644 --- a/crates/ra_tools/Cargo.toml +++ b/crates/ra_tools/Cargo.toml @@ -11,3 +11,4 @@ walkdir = "2.1.3" itertools = "0.8.0" clap = "2.32.0" quote = "1.0.2" +ron = "0.5.1" diff --git a/crates/ra_tools/src/codegen.rs b/crates/ra_tools/src/codegen.rs index edb01aceb..405fb623c 100644 --- a/crates/ra_tools/src/codegen.rs +++ b/crates/ra_tools/src/codegen.rs @@ -1,7 +1,21 @@ -use std::path::Path; +use std::{fs, path::Path}; -use crate::{Mode, Result}; +use ron; -pub fn generate_ast(grammar_src: &Path, dst: &Path, mode: Mode) -> Result<()> { +use crate::{project_root, Mode, Result, AST, GRAMMAR}; + +pub fn generate(mode: Mode) -> Result<()> { + let grammar = project_root().join(GRAMMAR); + // let syntax_kinds = project_root().join(SYNTAX_KINDS); + let ast = project_root().join(AST); + generate_ast(&grammar, &ast, mode) +} + +fn generate_ast(grammar_src: &Path, dst: &Path, mode: Mode) -> Result<()> { + let src: ron::Value = { + let text = fs::read_to_string(grammar_src)?; + ron::de::from_str(&text)? + }; + eprintln!("{:?}", src); Ok(()) } diff --git a/crates/ra_tools/src/lib.rs b/crates/ra_tools/src/lib.rs index 2cbb07ebf..de8c472d1 100644 --- a/crates/ra_tools/src/lib.rs +++ b/crates/ra_tools/src/lib.rs @@ -13,7 +13,7 @@ use itertools::Itertools; pub use teraron::{Mode, Overwrite, Verify}; -pub use self::codegen::generate_ast; +pub use self::codegen::generate; pub type Result = std::result::Result>; @@ -23,7 +23,7 @@ const OK_INLINE_TESTS_DIR: &str = "crates/ra_syntax/test_data/parser/inline/ok"; const ERR_INLINE_TESTS_DIR: &str = "crates/ra_syntax/test_data/parser/inline/err"; pub const SYNTAX_KINDS: &str = "crates/ra_parser/src/syntax_kind/generated.rs.tera"; -pub const AST: &str = "crates/ra_syntax/src/ast/generated.rs.tera"; +pub const AST: &str = "crates/ra_syntax/src/ast/generated.rs"; const TOOLCHAIN: &str = "stable"; #[derive(Debug)] @@ -70,15 +70,6 @@ pub fn collect_tests(s: &str) -> Vec<(usize, Test)> { res } -pub fn generate(mode: Mode) -> Result<()> { - let grammar = project_root().join(GRAMMAR); - let syntax_kinds = project_root().join(SYNTAX_KINDS); - let ast = project_root().join(AST); - teraron::generate(&syntax_kinds, &grammar, mode)?; - teraron::generate(&ast, &grammar, mode)?; - Ok(()) -} - pub fn project_root() -> PathBuf { Path::new(&env!("CARGO_MANIFEST_DIR")).ancestors().nth(2).unwrap().to_path_buf() } -- cgit v1.2.3