tvl-depot/tvix/eval/src
Vincent Ambo 8c13f18d11 feat(tvix/eval): report all known spans on infinite recursion
This reports the span

1. of the code within a thunk,
2. of the place where the thunk was instantiated,
3. of the place where the thunk was first forced,
4. of the place where the thunk was forced again,

when yielding an infinite recursion error, which hopefully makes it
easier to debug them.

The spans are tracked in the ThunkRepr::Blackhole variant when putting
a thunk under evaluation.

Note that we currently have some loss of span precision in the VM loop
when switching between frame types, so spans 3/4 are currently a bit
wonky. Working on it.

Change-Id: Icbd2a9df903d00e8c2545b3fc46dcd2a9e3e3e55
Reviewed-on: https://cl.tvl.fyi/c/depot/+/8270
Reviewed-by: flokli <flokli@flokli.de>
Tested-by: BuildkiteCI
Autosubmit: tazjin <tazjin@tvl.su>
2023-03-17 19:32:38 +00:00
..
builtins fix(tvix/eval): use coerce_to_string in builtins.substring 2023-03-17 19:17:29 +00:00
compiler feat(tvix/eval): add generator "name" to NativeError kind 2023-03-17 19:31:37 +00:00
tests fix(tvix/eval): use coerce_to_string in builtins.substring 2023-03-17 19:17:29 +00:00
value feat(tvix/eval): report all known spans on infinite recursion 2023-03-17 19:32:38 +00:00
vm feat(tvix/eval): track span of first force in a thunk blackhole 2023-03-17 19:31:37 +00:00
chunk.rs feat(tvix/eval): report all known spans on infinite recursion 2023-03-17 19:32:38 +00:00
errors.rs feat(tvix/eval): report all known spans on infinite recursion 2023-03-17 19:32:38 +00:00
io.rs chore(tvix/eval): only use Rc with impure feature 2023-02-03 18:58:17 +00:00
lib.rs refactor(tvix/eval): VM struct no longer needs to be public 2023-03-13 20:30:59 +00:00
nix_search_path.rs fix(tvix/eval): more closely line up path resolution with cppnix 2023-03-13 20:30:59 +00:00
observer.rs chore(tvix): Generator{Request|Response} -> VM{Request|Response} 2023-03-14 09:22:22 +00:00
opcode.rs refactor(tvix/eval): flatten call stack of VM using generators 2023-03-13 20:30:59 +00:00
pretty_ast.rs fix(tvix/eval): fix current clippy warnings 2022-12-25 18:25:06 +00:00
properties.rs refactor(tvix/eval): Don't (ab)use PartialEq for Nix equality 2022-09-18 22:03:41 +00:00
source.rs chore(tvix/eval): implement std::error::Error for tvix_eval::Error 2023-01-02 22:24:43 +00:00
spans.rs refactor(tvix/eval): implement From<Span> for LightSpan 2023-03-04 15:18:37 +00:00
systems.rs fix(tvix/eval): fix current clippy warnings 2022-12-25 18:25:06 +00:00
test_utils.rs test(tvix/eval): Add proof-of-concept test for Chunk 2022-09-18 17:55:06 +00:00
upvalues.rs fix(tvix/eval): remove impl PartialEq for Value 2022-11-04 00:30:13 +00:00
warnings.rs chore(tvix/eval): delete "useless parenthesis" warning/optimisation 2023-01-23 17:59:06 +00:00