All notable changes between releases will be documented in this file.
The format is based on Keep a Changelog.
v0.11.0 - 2022-11-11
-
removes the
types
module and replaces it withast
-
the
ast
modules has better types and sum types -
removes
ParsedType
in favor ofExpr
-
removes the
value
module. methods onValue
go on the individual types. For example, string related methods go onast::Str
-
parse
changed toRoot::parse
-
NODE_OR_DEFAULT
is removed -
NODE_KEY
->NODE_ATTRPATH
,NODE_KEY_VALUE
->NODE_ATTRPATH_VALUE
-
BinOp::IsSet
is removed since it's actually not a normal binary operator. -
NODE_SELECT
is flattened in favor ofNODE_ATTRPATH
which consists of multiple Attrs, includinga.b.c
anda.b.c or expr
-
a or b
is Apply, not "OrDefault", which matches the result of Nix. Fixes #23 -
${
is considered invalid at Expr places now, which matches the result of Nix. -
remove
TOKEN_DYNAMIC_START
andTOKEN_DYNAMIC_END
-
rowan 15.0
-
various other parsing fixes
v0.10.2 - 2022-06-14
v0.10.1 - 2021-12-06
-
Trivia tokens (i.e.
\r
,\n
etc.) are no longer misplaced around path-expressions. This is a regression fromv0.10.0
which would've brokennixpkgs-fmt
.(from @Ma27).
v0.10.0 - 2021-11-30
-
Support for the new path-interpolation syntax from Nix 2.4 was added. The parser now correctly detects
./foo/${bar}
as valid code and parses it down to
NODE_ROOT 0..13 { NODE_PATH_WITH_INTERPOL 0..12 { TOKEN_PATH("./foo/") 0..6 NODE_STRING_INTERPOL 6..12 { TOKEN_INTERPOL_START("${") 6..8 NODE_IDENT 8..11 { TOKEN_IDENT("bar") 8..11 } TOKEN_INTERPOL_END("}") 11..12 } } TOKEN_WHITESPACE("\n") 12..13 }
Paths without interpolation are still within
NODE_LITERAL
for backwards-compatibility.(from @Ma27).
-
rnix::types::ParsedTypeError
now implements theDebug
,Copy
,Clone
,fmt::Display
traits (from @NerdyPepper). -
During development, the parser can be tested like this:
$ cargo run --example from-stdin <<< 'builtins.map (x: x * x) [ 1 2 3 ]'
(from @efx).
-
A few more examples of invalid
inherit
-expressions are correctly marked as such (from @oberblastmeister). -
rnix::types::BinOp::operator()
now returnsOption<BinOpKind>
rather than unwrapping the value (from @NerdyPepper).If your code worked fine before, it will be sufficient to add a
.unwrap()
since this was what happened before within::operator()
. -
Duplicated arguments in the argument-pattern syntax are now marked as parser error. E.g.
{ a, a }: a
now produces an error (from @Ma27).
-
Floats without trailing zeroes (e.g.
.5
) are no longer marked as syntax error (from @Ma27).
v0.9.1 - 2021-09-23
- Fixed a memory leak while parsing
inherit
-expressions with invalid syntax (from @Ma27).