about summary refs log tree commit diff
diff options
context:
space:
mode:
authorVincent Ambo <mail@tazj.in>2022-08-12T14·13+0300
committertazjin <tazjin@tvl.su>2022-08-26T17·19+0000
commit598c197422481ed31c605d4dc3b7a7e3f043aa85 (patch)
tree0d3788487ab49d18b59887413c52602f941a45b8
parent7e77972d71967c65e5446e55673869ef2a8d27bb (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>
-rw-r--r--tvix/eval/src/compiler.rs14
-rw-r--r--tvix/eval/src/warnings.rs4
2 files changed, 12 insertions, 6 deletions
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 {