fix(tvix/eval): emit warnings from builtins.import again
Wires up generator logic to emit warnings that already have spans attached again. Change-Id: I9f878cec3b9d4f6f7819e7c71bab7ae70bd3f08b Reviewed-on: https://cl.tvl.fyi/c/depot/+/8224 Tested-by: BuildkiteCI Reviewed-by: raitobezarius <tvl@lahfa.xyz>
This commit is contained in:
parent
43b0416bd8
commit
5d9bfd7735
3 changed files with 35 additions and 14 deletions
|
|
@ -15,7 +15,7 @@ use std::fmt::Display;
|
|||
use std::future::Future;
|
||||
|
||||
use crate::value::{PointerEquality, SharedThunkSet};
|
||||
use crate::warnings::WarningKind;
|
||||
use crate::warnings::{EvalWarning, WarningKind};
|
||||
use crate::FileType;
|
||||
use crate::NixString;
|
||||
|
||||
|
|
@ -85,8 +85,12 @@ pub enum GeneratorRequest {
|
|||
light_span: LightSpan,
|
||||
},
|
||||
|
||||
/// Emit a runtime warning through the VM. Receives a NoOp-response.
|
||||
EmitWarning(WarningKind),
|
||||
/// Emit a runtime warning (already containing a span) through the VM.
|
||||
EmitWarning(EvalWarning),
|
||||
|
||||
/// Emit a runtime warning through the VM. The span of the current generator
|
||||
/// is used for the final warning.
|
||||
EmitWarningKind(WarningKind),
|
||||
|
||||
/// Request a lookup in the VM's import cache, which tracks the
|
||||
/// thunks yielded by previously imported files.
|
||||
|
|
@ -150,6 +154,7 @@ impl Display for GeneratorRequest {
|
|||
write!(f, "enter_lambda({:p})", *lambda)
|
||||
}
|
||||
GeneratorRequest::EmitWarning(_) => write!(f, "emit_warning"),
|
||||
GeneratorRequest::EmitWarningKind(_) => write!(f, "emit_warning_kind"),
|
||||
GeneratorRequest::ImportCacheLookup(p) => {
|
||||
write!(f, "import_cache_lookup({})", p.to_string_lossy())
|
||||
}
|
||||
|
|
@ -374,7 +379,12 @@ impl<'o> VM<'o> {
|
|||
return Ok(false);
|
||||
}
|
||||
|
||||
GeneratorRequest::EmitWarning(kind) => {
|
||||
GeneratorRequest::EmitWarning(warning) => {
|
||||
self.push_warning(warning);
|
||||
message = GeneratorResponse::Empty;
|
||||
}
|
||||
|
||||
GeneratorRequest::EmitWarningKind(kind) => {
|
||||
self.emit_warning(kind);
|
||||
message = GeneratorResponse::Empty;
|
||||
}
|
||||
|
|
@ -611,9 +621,20 @@ pub(crate) async fn check_equality(
|
|||
}
|
||||
}
|
||||
|
||||
/// Emit a runtime warning.
|
||||
pub(crate) async fn emit_warning(co: &GenCo, kind: WarningKind) {
|
||||
match co.yield_(GeneratorRequest::EmitWarning(kind)).await {
|
||||
/// Emit a fully constructed runtime warning.
|
||||
pub(crate) async fn emit_warning(co: &GenCo, warning: EvalWarning) {
|
||||
match co.yield_(GeneratorRequest::EmitWarning(warning)).await {
|
||||
GeneratorResponse::Empty => {}
|
||||
msg => panic!(
|
||||
"Tvix bug: VM responded with incorrect generator message: {}",
|
||||
msg
|
||||
),
|
||||
}
|
||||
}
|
||||
|
||||
/// Emit a runtime warning with the span of the current generator.
|
||||
pub(crate) async fn emit_warning_kind(co: &GenCo, kind: WarningKind) {
|
||||
match co.yield_(GeneratorRequest::EmitWarningKind(kind)).await {
|
||||
GeneratorResponse::Empty => {}
|
||||
msg => panic!(
|
||||
"Tvix bug: VM responded with incorrect generator message: {}",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue