diff --git a/kclvm/Cargo.toml b/kclvm/Cargo.toml index 250fc348d..2b8344112 100644 --- a/kclvm/Cargo.toml +++ b/kclvm/Cargo.toml @@ -63,4 +63,4 @@ members = [ ] [features] -llvm = ["kclvm-compiler/llvm", "kclvm-runner/llvm"] +llvm = ["kclvm-compiler/llvm", "kclvm-runner/llvm", "kclvm-tools/llvm"] diff --git a/kclvm/api/src/service/service_impl.rs b/kclvm/api/src/service/service_impl.rs index a7046e969..a4a9311f4 100644 --- a/kclvm/api/src/service/service_impl.rs +++ b/kclvm/api/src/service/service_impl.rs @@ -176,9 +176,9 @@ impl KclvmServiceImpl { /// assert_eq!(result.type_errors.len(), 0); /// assert_eq!(result.symbols.len(), 12); /// assert_eq!(result.scopes.len(), 3); - /// assert_eq!(result.node_symbol_map.len(), 175); - /// assert_eq!(result.symbol_node_map.len(), 175); - /// assert_eq!(result.fully_qualified_name_map.len(), 184); + /// assert_eq!(result.node_symbol_map.len(), 174); + /// assert_eq!(result.symbol_node_map.len(), 174); + /// assert_eq!(result.fully_qualified_name_map.len(), 183); /// assert_eq!(result.pkg_scope_map.len(), 3); /// ``` #[inline] diff --git a/kclvm/loader/src/snapshots/kclvm_loader__tests__assign_stmt_0.snap b/kclvm/loader/src/snapshots/kclvm_loader__tests__assign_stmt_0.snap index e8347b05b..fd292807b 100644 --- a/kclvm/loader/src/snapshots/kclvm_loader__tests__assign_stmt_0.snap +++ b/kclvm/loader/src/snapshots/kclvm_loader__tests__assign_stmt_0.snap @@ -38,7 +38,7 @@ expression: "format!(\"{:#?}\", p.symbols.values())" def: Some( SymbolRef { id: Index { - index: 163, + index: 162, generation: 0, }, kind: Value, diff --git a/kclvm/loader/src/snapshots/kclvm_loader__tests__assign_stmt_1.snap b/kclvm/loader/src/snapshots/kclvm_loader__tests__assign_stmt_1.snap index d3fa1f723..6b37caeed 100644 --- a/kclvm/loader/src/snapshots/kclvm_loader__tests__assign_stmt_1.snap +++ b/kclvm/loader/src/snapshots/kclvm_loader__tests__assign_stmt_1.snap @@ -38,7 +38,7 @@ expression: "format!(\"{:#?}\", p.symbols.values())" def: Some( SymbolRef { id: Index { - index: 163, + index: 162, generation: 0, }, kind: Value, diff --git a/kclvm/loader/src/snapshots/kclvm_loader__tests__assign_stmt_2.snap b/kclvm/loader/src/snapshots/kclvm_loader__tests__assign_stmt_2.snap index 3d512da1c..132750733 100644 --- a/kclvm/loader/src/snapshots/kclvm_loader__tests__assign_stmt_2.snap +++ b/kclvm/loader/src/snapshots/kclvm_loader__tests__assign_stmt_2.snap @@ -38,7 +38,7 @@ expression: "format!(\"{:#?}\", p.symbols.values())" def: Some( SymbolRef { id: Index { - index: 163, + index: 162, generation: 0, }, kind: Value, diff --git a/kclvm/loader/src/snapshots/kclvm_loader__tests__builtin_call_0.snap b/kclvm/loader/src/snapshots/kclvm_loader__tests__builtin_call_0.snap index 96db0f3f7..01761ec4b 100644 --- a/kclvm/loader/src/snapshots/kclvm_loader__tests__builtin_call_0.snap +++ b/kclvm/loader/src/snapshots/kclvm_loader__tests__builtin_call_0.snap @@ -88,6 +88,13 @@ expression: "format!(\"{:#?}\", p.symbols.values())" }, ), attrs: [ + SymbolRef { + id: Index { + index: 133, + generation: 0, + }, + kind: Value, + }, SymbolRef { id: Index { index: 134, @@ -284,13 +291,6 @@ expression: "format!(\"{:#?}\", p.symbols.values())" }, kind: Value, }, - SymbolRef { - id: Index { - index: 162, - generation: 0, - }, - kind: Value, - }, ], is_global: false, }, @@ -330,4 +330,4 @@ expression: "format!(\"{:#?}\", p.symbols.values())" attrs: [], is_global: false, }, -] \ No newline at end of file +] diff --git a/kclvm/loader/src/snapshots/kclvm_loader__tests__builtin_call_1.snap b/kclvm/loader/src/snapshots/kclvm_loader__tests__builtin_call_1.snap index df6cfe8ec..609f6b562 100644 --- a/kclvm/loader/src/snapshots/kclvm_loader__tests__builtin_call_1.snap +++ b/kclvm/loader/src/snapshots/kclvm_loader__tests__builtin_call_1.snap @@ -38,7 +38,7 @@ expression: "format!(\"{:#?}\", p.symbols.values())" def: Some( SymbolRef { id: Index { - index: 163, + index: 162, generation: 0, }, kind: Value, @@ -180,6 +180,13 @@ expression: "format!(\"{:#?}\", p.symbols.values())" }, ), attrs: [ + SymbolRef { + id: Index { + index: 133, + generation: 0, + }, + kind: Value, + }, SymbolRef { id: Index { index: 134, @@ -376,13 +383,6 @@ expression: "format!(\"{:#?}\", p.symbols.values())" }, kind: Value, }, - SymbolRef { - id: Index { - index: 162, - generation: 0, - }, - kind: Value, - }, ], is_global: false, }, @@ -415,13 +415,20 @@ expression: "format!(\"{:#?}\", p.symbols.values())" def: Some( SymbolRef { id: Index { - index: 164, + index: 163, generation: 0, }, kind: Value, }, ), attrs: [ + SymbolRef { + id: Index { + index: 133, + generation: 0, + }, + kind: Value, + }, SymbolRef { id: Index { index: 134, @@ -618,13 +625,6 @@ expression: "format!(\"{:#?}\", p.symbols.values())" }, kind: Value, }, - SymbolRef { - id: Index { - index: 162, - generation: 0, - }, - kind: Value, - }, ], is_global: false, }, @@ -664,6 +664,13 @@ expression: "format!(\"{:#?}\", p.symbols.values())" }, ), attrs: [ + SymbolRef { + id: Index { + index: 133, + generation: 0, + }, + kind: Value, + }, SymbolRef { id: Index { index: 134, @@ -860,13 +867,6 @@ expression: "format!(\"{:#?}\", p.symbols.values())" }, kind: Value, }, - SymbolRef { - id: Index { - index: 162, - generation: 0, - }, - kind: Value, - }, ], is_global: false, }, @@ -899,7 +899,7 @@ expression: "format!(\"{:#?}\", p.symbols.values())" def: Some( SymbolRef { id: Index { - index: 165, + index: 164, generation: 0, }, kind: Value, @@ -982,4 +982,4 @@ expression: "format!(\"{:#?}\", p.symbols.values())" attrs: [], is_global: false, }, -] \ No newline at end of file +] diff --git a/kclvm/loader/src/snapshots/kclvm_loader__tests__builtin_call_2.snap b/kclvm/loader/src/snapshots/kclvm_loader__tests__builtin_call_2.snap index 773616084..11618498a 100644 --- a/kclvm/loader/src/snapshots/kclvm_loader__tests__builtin_call_2.snap +++ b/kclvm/loader/src/snapshots/kclvm_loader__tests__builtin_call_2.snap @@ -99,7 +99,7 @@ expression: "format!(\"{:#?}\", p.symbols.values())" def: Some( SymbolRef { id: Index { - index: 163, + index: 162, generation: 0, }, kind: Value, @@ -240,7 +240,7 @@ expression: "format!(\"{:#?}\", p.symbols.values())" def: Some( SymbolRef { id: Index { - index: 164, + index: 163, generation: 0, }, kind: Value, @@ -337,7 +337,7 @@ expression: "format!(\"{:#?}\", p.symbols.values())" def: Some( SymbolRef { id: Index { - index: 163, + index: 162, generation: 0, }, kind: Value, @@ -382,6 +382,13 @@ expression: "format!(\"{:#?}\", p.symbols.values())" }, ), attrs: [ + SymbolRef { + id: Index { + index: 133, + generation: 0, + }, + kind: Value, + }, SymbolRef { id: Index { index: 134, @@ -578,13 +585,6 @@ expression: "format!(\"{:#?}\", p.symbols.values())" }, kind: Value, }, - SymbolRef { - id: Index { - index: 162, - generation: 0, - }, - kind: Value, - }, ], is_global: false, }, @@ -617,13 +617,20 @@ expression: "format!(\"{:#?}\", p.symbols.values())" def: Some( SymbolRef { id: Index { - index: 165, + index: 164, generation: 0, }, kind: Value, }, ), attrs: [ + SymbolRef { + id: Index { + index: 133, + generation: 0, + }, + kind: Value, + }, SymbolRef { id: Index { index: 134, @@ -820,13 +827,6 @@ expression: "format!(\"{:#?}\", p.symbols.values())" }, kind: Value, }, - SymbolRef { - id: Index { - index: 162, - generation: 0, - }, - kind: Value, - }, ], is_global: false, }, @@ -866,6 +866,13 @@ expression: "format!(\"{:#?}\", p.symbols.values())" }, ), attrs: [ + SymbolRef { + id: Index { + index: 133, + generation: 0, + }, + kind: Value, + }, SymbolRef { id: Index { index: 134, @@ -1062,13 +1069,6 @@ expression: "format!(\"{:#?}\", p.symbols.values())" }, kind: Value, }, - SymbolRef { - id: Index { - index: 162, - generation: 0, - }, - kind: Value, - }, ], is_global: false, }, @@ -1101,7 +1101,7 @@ expression: "format!(\"{:#?}\", p.symbols.values())" def: Some( SymbolRef { id: Index { - index: 166, + index: 165, generation: 0, }, kind: Value, @@ -1184,4 +1184,4 @@ expression: "format!(\"{:#?}\", p.symbols.values())" attrs: [], is_global: false, }, -] \ No newline at end of file +] diff --git a/kclvm/loader/src/snapshots/kclvm_loader__tests__import_stmt_0.snap b/kclvm/loader/src/snapshots/kclvm_loader__tests__import_stmt_0.snap index 34d7145b8..a5d7e0a2e 100644 --- a/kclvm/loader/src/snapshots/kclvm_loader__tests__import_stmt_0.snap +++ b/kclvm/loader/src/snapshots/kclvm_loader__tests__import_stmt_0.snap @@ -195,7 +195,7 @@ expression: "format!(\"{:#?}\", p.symbols.values())" def: Some( SymbolRef { id: Index { - index: 163, + index: 162, generation: 0, }, kind: Value, diff --git a/kclvm/loader/src/snapshots/kclvm_loader__tests__import_stmt_1.snap b/kclvm/loader/src/snapshots/kclvm_loader__tests__import_stmt_1.snap index 2a8b9e551..3a348c147 100644 --- a/kclvm/loader/src/snapshots/kclvm_loader__tests__import_stmt_1.snap +++ b/kclvm/loader/src/snapshots/kclvm_loader__tests__import_stmt_1.snap @@ -38,7 +38,7 @@ expression: "format!(\"{:#?}\", p.symbols.values())" def: Some( SymbolRef { id: Index { - index: 163, + index: 162, generation: 0, }, kind: Value, diff --git a/kclvm/runtime/src/_kclvm.bc b/kclvm/runtime/src/_kclvm.bc index 03d4498b5..066143924 100644 Binary files a/kclvm/runtime/src/_kclvm.bc and b/kclvm/runtime/src/_kclvm.bc differ diff --git a/kclvm/tools/Cargo.toml b/kclvm/tools/Cargo.toml index 4764d3b62..ffcf51e88 100644 --- a/kclvm/tools/Cargo.toml +++ b/kclvm/tools/Cargo.toml @@ -42,4 +42,5 @@ insta = "1.8.0" name = "benchmark" harness = false - +[features] +llvm = ["kclvm-runner/llvm"] diff --git a/kclvm/tools/src/testing/suite.rs b/kclvm/tools/src/testing/suite.rs index c03058ff6..87f743b6c 100644 --- a/kclvm/tools/src/testing/suite.rs +++ b/kclvm/tools/src/testing/suite.rs @@ -5,10 +5,12 @@ use anyhow::{anyhow, Result}; use indexmap::IndexMap; use kclvm_ast::ast; use kclvm_driver::{get_kcl_files, get_pkg_list}; -use kclvm_parser::{parse_file_force_errors, ParseSession}; +use kclvm_parser::{parse_file_force_errors, ParseSessionRef}; +#[cfg(feature = "llvm")] +use kclvm_runner::build_program; +#[cfg(feature = "llvm")] use kclvm_runner::runner::ProgramRunner; -use kclvm_runner::{build_program, ExecProgramArgs}; -use std::sync::Arc; +use kclvm_runner::{exec_program, ExecProgramArgs}; use std::time::Instant; /// File suffix for test files. @@ -59,7 +61,8 @@ impl TestRun for TestSuite { ..opts.exec_args.clone() }; // Build the program. - let artifact = build_program::(Arc::new(ParseSession::default()), &args, None)?; + #[cfg(feature = "llvm")] + let artifact = build_program::(ParseSessionRef::default(), &args, None)?; // Test every case in the suite. for (name, _) in &self.cases { args.args = vec![ast::CmdArgSpec { @@ -67,7 +70,10 @@ impl TestRun for TestSuite { value: format!("{:?}", name), }]; let start = Instant::now(); + #[cfg(feature = "llvm")] let exec_result = artifact.run(&args)?; + #[cfg(not(feature = "llvm"))] + let exec_result = exec_program(ParseSessionRef::default(), &args)?; // Check if there was an error. let error = if exec_result.err_message.is_empty() { None diff --git a/test/grammar/builtins/file/size/stdout.golden b/test/grammar/builtins/file/size/stdout.golden deleted file mode 100644 index b39356075..000000000 --- a/test/grammar/builtins/file/size/stdout.golden +++ /dev/null @@ -1 +0,0 @@ -23 \ No newline at end of file