feat(tvix/eval): warn about empty inherit
s
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:
parent
e8dcdceb34
commit
4e98730f38
2 changed files with 11 additions and 0 deletions
|
@ -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.
|
||||
|
|
|
@ -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",
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue