feat(tvix/eval): warn about empty inherits

Change-Id: I82bec6fe2210bcb88c46fd2fdf3e26bd613d1c1f
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7768
Reviewed-by: flokli <flokli@flokli.de>
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
Tested-by: BuildkiteCI
This commit is contained in:
Vincent Ambo 2023-01-05 15:32:14 +03:00 committed by tazjin
parent e8dcdceb34
commit 4e98730f38
2 changed files with 11 additions and 0 deletions

View file

@ -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.

View file

@ -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",
}