about summary refs log tree commit diff
path: root/tvix
diff options
context:
space:
mode:
Diffstat (limited to 'tvix')
-rw-r--r--tvix/eval/src/compiler/bindings.rs5
-rw-r--r--tvix/eval/src/warnings.rs6
2 files changed, 11 insertions, 0 deletions
diff --git a/tvix/eval/src/compiler/bindings.rs b/tvix/eval/src/compiler/bindings.rs
index 9d42690023..93b3dc3cc6 100644
--- a/tvix/eval/src/compiler/bindings.rs
+++ b/tvix/eval/src/compiler/bindings.rs
@@ -321,6 +321,11 @@ impl Compiler<'_> {
         let mut inherit_froms: Vec<(ast::Expr, SmolStr, Span)> = vec![];
 
         for inherit in node.inherits() {
+            if inherit.attrs().peekable().peek().is_none() {
+                self.emit_warning(&inherit, WarningKind::EmptyInherit);
+                continue;
+            }
+
             match inherit.from() {
                 // Within a `let` binding, inheriting from the outer scope is a
                 // no-op *if* there are no dynamic bindings.
diff --git a/tvix/eval/src/warnings.rs b/tvix/eval/src/warnings.rs
index 9fb454e814..9ebf182f97 100644
--- a/tvix/eval/src/warnings.rs
+++ b/tvix/eval/src/warnings.rs
@@ -15,6 +15,7 @@ pub enum WarningKind {
     InvalidNixPath(String),
     UselessBoolOperation(&'static str),
     DeadCode,
+    EmptyInherit,
 
     /// Tvix internal warning for features triggered by users that are
     /// not actually implemented yet, but do not cause runtime failures.
@@ -95,6 +96,10 @@ impl EvalWarning {
                 format!("this code will never be executed")
             }
 
+            WarningKind::EmptyInherit => {
+                format!("this `inherit` statement is empty")
+            }
+
             WarningKind::NotImplemented(what) => {
                 format!("feature not yet implemented in tvix: {}", what)
             }
@@ -113,6 +118,7 @@ impl EvalWarning {
             WarningKind::InvalidNixPath(_) => "W006",
             WarningKind::UselessBoolOperation(_) => "W007",
             WarningKind::DeadCode => "W008",
+            WarningKind::EmptyInherit => "W009",
 
             WarningKind::NotImplemented(_) => "W999",
         }