forked from lix-project/lix
* Allow attribute names to be strings. Based on the
allow-arbitrary-strinsg-in-names patch by Marc Weber.
This commit is contained in:
parent
e649f3168b
commit
d5d4dcd4c9
|
@ -411,6 +411,8 @@ attrpath
|
||||||
attr
|
attr
|
||||||
: ID { $$ = $1; }
|
: ID { $$ = $1; }
|
||||||
| OR_KW { $$ = "or"; }
|
| OR_KW { $$ = "or"; }
|
||||||
|
| '"' STR '"'
|
||||||
|
{ $$ = strdup(((string) ((ExprString *) $2)->s).c_str()); delete $2; }
|
||||||
;
|
;
|
||||||
|
|
||||||
expr_list
|
expr_list
|
||||||
|
|
1
tests/lang/eval-okay-strings-as-attrs-names.exp
Normal file
1
tests/lang/eval-okay-strings-as-attrs-names.exp
Normal file
|
@ -0,0 +1 @@
|
||||||
|
true
|
20
tests/lang/eval-okay-strings-as-attrs-names.nix
Normal file
20
tests/lang/eval-okay-strings-as-attrs-names.nix
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
let
|
||||||
|
|
||||||
|
attr = {
|
||||||
|
"key 1" = "test";
|
||||||
|
"key 2" = "caseok";
|
||||||
|
};
|
||||||
|
|
||||||
|
t1 = builtins.getAttr "key 1" attr;
|
||||||
|
t2 = attr."key 2";
|
||||||
|
t3 = attr ? "key 1";
|
||||||
|
t4 = builtins.attrNames { inherit (attr) "key 1"; };
|
||||||
|
|
||||||
|
# This is permitted, but there is currently no way to reference this
|
||||||
|
# variable.
|
||||||
|
"foo bar" = 1;
|
||||||
|
|
||||||
|
in t1 == "test"
|
||||||
|
&& t2 == "caseok"
|
||||||
|
&& t3 == true
|
||||||
|
&& t4 == ["key 1"]
|
Loading…
Reference in a new issue