diff options
author | Vincent Ambo <mail@tazj.in> | 2023-01-05T12·11+0300 |
---|---|---|
committer | tazjin <tazjin@tvl.su> | 2023-01-06T12·23+0000 |
commit | 6a8541e35a76b1d0d100c505d395d0e0418377c7 (patch) | |
tree | cd1658f62548197ec6bf4ababd489fbbbeb64079 /tvix/eval/src/warnings.rs | |
parent | 36e5a4cc07c963e89edd409d9050fe67c10e7e8d (diff) |
feat(tvix/eval): implement initial compiler::optimiser module r/5602
This optimiser can rewrite some expressions into more efficient forms, and warn users about those cases. As a proof-of-concept, only some simple boolean comparisons are supported for now. Change-Id: I7df561118cfbad281fc99523e859bc66e7a1adcb Reviewed-on: https://cl.tvl.fyi/c/depot/+/7766 Tested-by: BuildkiteCI Reviewed-by: flokli <flokli@flokli.de>
Diffstat (limited to 'tvix/eval/src/warnings.rs')
-rw-r--r-- | tvix/eval/src/warnings.rs | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/tvix/eval/src/warnings.rs b/tvix/eval/src/warnings.rs index eb821b2b8324..9fb454e8147c 100644 --- a/tvix/eval/src/warnings.rs +++ b/tvix/eval/src/warnings.rs @@ -13,6 +13,8 @@ pub enum WarningKind { ShadowedGlobal(&'static str), DeprecatedLegacyLet, InvalidNixPath(String), + UselessBoolOperation(&'static str), + DeadCode, /// Tvix internal warning for features triggered by users that are /// not actually implemented yet, but do not cause runtime failures. @@ -85,6 +87,14 @@ impl EvalWarning { format!("invalid NIX_PATH resulted in a parse error: {}", err) } + WarningKind::UselessBoolOperation(msg) => { + format!("useless operation on boolean: {}", msg) + } + + WarningKind::DeadCode => { + format!("this code will never be executed") + } + WarningKind::NotImplemented(what) => { format!("feature not yet implemented in tvix: {}", what) } @@ -101,6 +111,9 @@ impl EvalWarning { WarningKind::ShadowedGlobal(_) => "W004", WarningKind::DeprecatedLegacyLet => "W005", WarningKind::InvalidNixPath(_) => "W006", + WarningKind::UselessBoolOperation(_) => "W007", + WarningKind::DeadCode => "W008", + WarningKind::NotImplemented(_) => "W999", } } |