diff options
author | Vincent Ambo <mail@tazj.in> | 2022-08-12T14·13+0300 |
---|---|---|
committer | tazjin <tazjin@tvl.su> | 2022-08-26T17·19+0000 |
commit | 598c197422481ed31c605d4dc3b7a7e3f043aa85 (patch) | |
tree | 0d3788487ab49d18b59887413c52602f941a45b8 /tvix/eval | |
parent | 7e77972d71967c65e5446e55673869ef2a8d27bb (diff) |
feat(tvix/eval): add warning for deprecated URL literals r/4508
Change-Id: I8a9cfcb5d99680344ee0e3461a4a52526b846c92 Reviewed-on: https://cl.tvl.fyi/c/depot/+/6175 Tested-by: BuildkiteCI Reviewed-by: grfn <grfn@gws.fyi> Reviewed-by: sterni <sternenseemann@systemli.org>
Diffstat (limited to 'tvix/eval')
-rw-r--r-- | tvix/eval/src/compiler.rs | 14 | ||||
-rw-r--r-- | tvix/eval/src/warnings.rs | 4 |
2 files changed, 12 insertions, 6 deletions
diff --git a/tvix/eval/src/compiler.rs b/tvix/eval/src/compiler.rs index 9b0530f0fa82..13d6207a0550 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 4406d0510651..44e47793c5dd 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 { |