diff --git a/kclvm/runner/src/lib.rs b/kclvm/runner/src/lib.rs index 394c606f3..d39e567de 100644 --- a/kclvm/runner/src/lib.rs +++ b/kclvm/runner/src/lib.rs @@ -104,7 +104,13 @@ pub fn exec_program( }; // Exec result is a JSON or YAML string. let exec_result = match exec_result { - Ok(res) => res, + Ok(res) => { + if res.is_empty() { + return Ok(result); + } else { + res + } + } Err(res) => { if res.is_empty() { return Ok(result); diff --git a/kclvm/runner/src/runner.rs b/kclvm/runner/src/runner.rs index 67334f77d..16b9d6099 100644 --- a/kclvm/runner/src/runner.rs +++ b/kclvm/runner/src/runner.rs @@ -288,7 +288,9 @@ impl KclvmRunner { warn_buffer, ); - if n > 0 { + if n == 0 { + Ok("".to_string()) + } else if n > 0 { let return_len = n; let s = std::str::from_utf8(&result[0..return_len as usize]).unwrap(); wrap_msg_in_result(s) diff --git a/test/grammar/misc/empty_plan/main.k b/test/grammar/misc/empty_plan/main.k new file mode 100644 index 000000000..1a3e4dbcc --- /dev/null +++ b/test/grammar/misc/empty_plan/main.k @@ -0,0 +1,2 @@ +# _a is a hidden attribute. +_a = 1 diff --git a/test/grammar/misc/empty_plan/stdout.golden b/test/grammar/misc/empty_plan/stdout.golden new file mode 100644 index 000000000..e69de29bb