refactor(tvix/eval): move spans module to crate root

This is also useful for error-handling related logic, outside of just
the compiler module.

Change-Id: I5c386e2b4c31cda0a0209b31136ca07f00e39e45
Reviewed-on: https://cl.tvl.fyi/c/depot/+/6869
Tested-by: BuildkiteCI
Reviewed-by: grfn <grfn@gws.fyi>
This commit is contained in:
Vincent Ambo 2022-10-06 14:33:09 +03:00 committed by tazjin
parent f3c089ae3e
commit 50baf0bcfc
3 changed files with 12 additions and 11 deletions

View file

@ -15,7 +15,6 @@
mod bindings;
mod scope;
mod spans;
use codemap::Span;
use path_clean::PathClean;
@ -31,11 +30,11 @@ use crate::chunk::Chunk;
use crate::errors::{Error, ErrorKind, EvalResult};
use crate::observer::CompilerObserver;
use crate::opcode::{CodeIdx, Count, JumpOffset, OpCode, UpvalueIdx};
use crate::spans::ToSpan;
use crate::value::{Closure, Lambda, Thunk, Value};
use crate::warnings::{EvalWarning, WarningKind};
use self::scope::{LocalIdx, LocalPosition, Scope, Upvalue, UpvalueKind};
use self::spans::ToSpan;
/// Represents the result of compiling a piece of Nix code. If
/// compilation was successful, the resulting bytecode can be passed
@ -99,6 +98,12 @@ struct Compiler<'observer> {
observer: &'observer mut dyn CompilerObserver,
}
impl Compiler<'_> {
pub(super) fn span_for<S: ToSpan>(&self, to_span: &S) -> Span {
to_span.span_for(&self.file)
}
}
/// Compiler construction
impl<'observer> Compiler<'observer> {
pub(crate) fn new(

View file

@ -6,6 +6,7 @@ mod eval;
pub mod observer;
mod opcode;
mod source;
mod spans;
mod upvalues;
mod value;
mod vm;

View file

@ -1,11 +1,12 @@
//! Utilities for dealing with span tracking in the compiler.
//! Utilities for dealing with span tracking in the compiler and in
//! error reporting.
use super::*;
use codemap::{File, Span};
use rnix::ast;
use rowan::ast::AstNode;
/// Trait implemented by all types from which we can retrieve a span.
pub(super) trait ToSpan {
pub trait ToSpan {
fn span_for(&self, file: &File) -> Span;
}
@ -76,9 +77,3 @@ expr_to_span!(ast::Select);
expr_to_span!(ast::Str);
expr_to_span!(ast::UnaryOp);
expr_to_span!(ast::With);
impl Compiler<'_> {
pub(super) fn span_for<S: ToSpan>(&self, to_span: &S) -> Span {
to_span.span_for(&self.file)
}
}