* Allow attribute names to be strings. Based on the

allow-arbitrary-strinsg-in-names patch by Marc Weber.
This commit is contained in:
Eelco Dolstra 2011-07-13 15:53:24 +00:00
parent e649f3168b
commit d5d4dcd4c9
3 changed files with 23 additions and 0 deletions

View file

@ -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

View file

@ -0,0 +1 @@
true

View 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"]