diff options
author | Eelco Dolstra <e.dolstra@tudelft.nl> | 2011-07-13T15·53+0000 |
---|---|---|
committer | Eelco Dolstra <e.dolstra@tudelft.nl> | 2011-07-13T15·53+0000 |
commit | d5d4dcd4c988363beb2bb408ac31750e4c027176 (patch) | |
tree | f178a6260ba4eb62f158b97f09e0615e547b67d8 | |
parent | e649f3168bb03053c8201489ca52f9077c0d8b17 (diff) |
* Allow attribute names to be strings. Based on the
allow-arbitrary-strinsg-in-names patch by Marc Weber.
-rw-r--r-- | src/libexpr/parser.y | 2 | ||||
-rw-r--r-- | tests/lang/eval-okay-strings-as-attrs-names.exp | 1 | ||||
-rw-r--r-- | tests/lang/eval-okay-strings-as-attrs-names.nix | 20 |
3 files changed, 23 insertions, 0 deletions
diff --git a/src/libexpr/parser.y b/src/libexpr/parser.y index ec194a516adb..e5c586266f78 100644 --- a/src/libexpr/parser.y +++ b/src/libexpr/parser.y @@ -411,6 +411,8 @@ attrpath attr : ID { $$ = $1; } | OR_KW { $$ = "or"; } + | '"' STR '"' + { $$ = strdup(((string) ((ExprString *) $2)->s).c_str()); delete $2; } ; expr_list diff --git a/tests/lang/eval-okay-strings-as-attrs-names.exp b/tests/lang/eval-okay-strings-as-attrs-names.exp new file mode 100644 index 000000000000..27ba77ddaf61 --- /dev/null +++ b/tests/lang/eval-okay-strings-as-attrs-names.exp @@ -0,0 +1 @@ +true diff --git a/tests/lang/eval-okay-strings-as-attrs-names.nix b/tests/lang/eval-okay-strings-as-attrs-names.nix new file mode 100644 index 000000000000..5e40928dbe31 --- /dev/null +++ b/tests/lang/eval-okay-strings-as-attrs-names.nix @@ -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"] |