diff options
Diffstat (limited to 'tvix/eval')
-rw-r--r-- | tvix/eval/src/compiler/mod.rs | 21 | ||||
-rw-r--r-- | tvix/eval/tests/nix_oracle.rs | 3 |
2 files changed, 13 insertions, 11 deletions
diff --git a/tvix/eval/src/compiler/mod.rs b/tvix/eval/src/compiler/mod.rs index 43dab506c5ed..436e504af2a6 100644 --- a/tvix/eval/src/compiler/mod.rs +++ b/tvix/eval/src/compiler/mod.rs @@ -341,18 +341,17 @@ impl Compiler<'_> { let path = if raw_path.starts_with('/') { Path::new(&raw_path).to_owned() } else if raw_path.starts_with('~') { - return self.thunk(slot, node, move |c, _| { - // We assume that home paths start with ~/ or fail to parse - // TODO: this should be checked using a parse-fail test. - debug_assert!(raw_path.len() > 2 && raw_path.starts_with("~/")); + // We assume that home paths start with ~/ or fail to parse + // TODO: this should be checked using a parse-fail test. + debug_assert!(raw_path.len() > 2 && raw_path.starts_with("~/")); - let home_relative_path = &raw_path[2..(raw_path.len())]; - c.emit_constant( - Value::UnresolvedPath(Box::new(home_relative_path.into())), - node, - ); - c.push_op(OpCode::OpResolveHomePath, node); - }); + let home_relative_path = &raw_path[2..(raw_path.len())]; + self.emit_constant( + Value::UnresolvedPath(Box::new(home_relative_path.into())), + node, + ); + self.push_op(OpCode::OpResolveHomePath, node); + return; } else if raw_path.starts_with('<') { // TODO: decide what to do with findFile if raw_path.len() == 2 { diff --git a/tvix/eval/tests/nix_oracle.rs b/tvix/eval/tests/nix_oracle.rs index 386d49c51ccd..b9531c81ddc0 100644 --- a/tvix/eval/tests/nix_oracle.rs +++ b/tvix/eval/tests/nix_oracle.rs @@ -154,6 +154,9 @@ compare_lazy_eval_tests! { thunked_lambda_in_list("[ (x: x) ]"); thunked_function_application_in_list("[ (builtins.add 1 2) ]"); thunked_legacy_let_in_list("[ (let { foo = 12; body = foo; }) ]"); + unthunked_relative_path("[ ./foo ]"); + unthunked_home_relative_path("[ ~/foo ]"); + unthunked_absolute_path("[ /foo ]"); unthunked_formals_fallback_literal("({ foo ? 12 }: [ foo ]) { }"); unthunked_formals_fallback_string_literal("({ foo ? \"wiggly\" }: [ foo ]) { }"); |