diff options
Diffstat (limited to 'tvix/eval/src/errors.rs')
-rw-r--r-- | tvix/eval/src/errors.rs | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/tvix/eval/src/errors.rs b/tvix/eval/src/errors.rs index 822ebdbc8cb4..92ca59f105a4 100644 --- a/tvix/eval/src/errors.rs +++ b/tvix/eval/src/errors.rs @@ -4,6 +4,7 @@ use std::{fmt::Display, num::ParseIntError}; use codemap::{CodeMap, Span}; use codemap_diagnostic::{Diagnostic, Emitter, Level, SpanLabel, SpanStyle}; +use smol_str::SmolStr; use crate::Value; @@ -88,6 +89,12 @@ pub enum ErrorKind { length: i64, }, + // Errors specific to nested attribute sets and merges thereof. + /// Nested attributes can not be merged with an inherited value. + UnmergeableInherit { + name: SmolStr, + }, + /// Tvix internal warning for features triggered by users that are /// not actually implemented yet, and without which eval can not /// proceed. @@ -242,6 +249,13 @@ to a missing value in the attribute set(s) included via `with`."#, ) } + ErrorKind::UnmergeableInherit { name } => { + format!( + "cannot merge a nested attribute set into the inherited entry '{}'", + name + ) + } + ErrorKind::NotImplemented(feature) => { format!("feature not yet implemented in Tvix: {}", feature) } @@ -275,6 +289,7 @@ to a missing value in the attribute set(s) included via `with`."#, ErrorKind::ParseIntError(_) => "E021", ErrorKind::NegativeLength { .. } => "E022", ErrorKind::TailEmptyList { .. } => "E023", + ErrorKind::UnmergeableInherit { .. } => "E024", ErrorKind::NotImplemented(_) => "E999", } } |