From 598c197422481ed31c605d4dc3b7a7e3f043aa85 Mon Sep 17 00:00:00 2001 From: Vincent Ambo Date: Fri, 12 Aug 2022 17:13:41 +0300 Subject: feat(tvix/eval): add warning for deprecated URL literals Change-Id: I8a9cfcb5d99680344ee0e3461a4a52526b846c92 Reviewed-on: https://cl.tvl.fyi/c/depot/+/6175 Tested-by: BuildkiteCI Reviewed-by: grfn Reviewed-by: sterni --- tvix/eval/src/compiler.rs | 14 +++++++++----- tvix/eval/src/warnings.rs | 4 +++- 2 files changed, 12 insertions(+), 6 deletions(-) (limited to 'tvix/eval/src') diff --git a/tvix/eval/src/compiler.rs b/tvix/eval/src/compiler.rs index 9b0530f0fa..13d6207a05 100644 --- a/tvix/eval/src/compiler.rs +++ b/tvix/eval/src/compiler.rs @@ -17,7 +17,7 @@ use crate::chunk::Chunk; use crate::errors::EvalResult; use crate::opcode::{CodeIdx, OpCode}; use crate::value::Value; -use crate::warnings::EvalWarning; +use crate::warnings::{EvalWarning, WarningKind}; use rnix; use rnix::types::{BinOpKind, EntryHolder, TokenWrapper, TypedNode, Wrapper}; @@ -46,7 +46,7 @@ impl Compiler { // literal itself. rnix::SyntaxKind::NODE_LITERAL => { let value = rnix::types::Value::cast(node).unwrap(); - self.compile_literal(value.to_value().expect("TODO")) + self.compile_literal(value) } rnix::SyntaxKind::NODE_STRING => { @@ -128,8 +128,8 @@ impl Compiler { self.compile(node) } - fn compile_literal(&mut self, value: rnix::value::Value) -> EvalResult<()> { - match value { + fn compile_literal(&mut self, node: rnix::types::Value) -> EvalResult<()> { + match node.to_value().unwrap() { rnix::NixValue::Float(f) => { let idx = self.chunk.add_constant(Value::Float(f)); self.chunk.add_op(OpCode::OpConstant(idx)); @@ -144,7 +144,11 @@ impl Compiler { // These nodes are yielded by literal URL values. rnix::NixValue::String(s) => { - // TODO(tazjin): emit deprecation warning + self.warnings.push(EvalWarning { + node: node.node().clone(), + kind: WarningKind::DeprecatedLiteralURL, + }); + let idx = self.chunk.add_constant(Value::String(s.into())); self.chunk.add_op(OpCode::OpConstant(idx)); Ok(()) diff --git a/tvix/eval/src/warnings.rs b/tvix/eval/src/warnings.rs index 4406d05106..44e47793c5 100644 --- a/tvix/eval/src/warnings.rs +++ b/tvix/eval/src/warnings.rs @@ -2,7 +2,9 @@ /// problems that the user could address. #[derive(Debug)] -pub enum WarningKind {} +pub enum WarningKind { + DeprecatedLiteralURL, +} #[derive(Debug)] pub struct EvalWarning { -- cgit 1.4.1