mirror of
https://github.com/privatevoid-net/nix-super.git
synced 2024-11-27 00:06:16 +02:00
* Allow integer bindings in derivations.
This commit is contained in:
parent
d1d87badf6
commit
6e8c19714a
4 changed files with 25 additions and 1 deletions
|
@ -127,6 +127,7 @@ Expr evalExpr2(EvalState & state, Expr e)
|
||||||
if (atMatch(m, e) >> "Str" ||
|
if (atMatch(m, e) >> "Str" ||
|
||||||
atMatch(m, e) >> "Path" ||
|
atMatch(m, e) >> "Path" ||
|
||||||
atMatch(m, e) >> "Uri" ||
|
atMatch(m, e) >> "Uri" ||
|
||||||
|
atMatch(m, e) >> "Int" ||
|
||||||
atMatch(m, e) >> "Bool" ||
|
atMatch(m, e) >> "Bool" ||
|
||||||
atMatch(m, e) >> "Function" ||
|
atMatch(m, e) >> "Function" ||
|
||||||
atMatch(m, e) >> "Attrs" ||
|
atMatch(m, e) >> "Attrs" ||
|
||||||
|
|
|
@ -89,6 +89,13 @@ static string processBinding(EvalState & state, Expr e, StoreExpr & ne)
|
||||||
if (atMatch(m, e) >> "Bool" >> "True") return "1";
|
if (atMatch(m, e) >> "Bool" >> "True") return "1";
|
||||||
if (atMatch(m, e) >> "Bool" >> "False") return "";
|
if (atMatch(m, e) >> "Bool" >> "False") return "";
|
||||||
|
|
||||||
|
int n;
|
||||||
|
if (atMatch(m, e) >> "Int" >> n) {
|
||||||
|
ostringstream st;
|
||||||
|
st << n;
|
||||||
|
return st.str();
|
||||||
|
}
|
||||||
|
|
||||||
if (atMatch(m, e) >> "Attrs" >> es) {
|
if (atMatch(m, e) >> "Attrs" >> es) {
|
||||||
Expr a = queryAttr(e, "type");
|
Expr a = queryAttr(e, "type");
|
||||||
if (a && evalString(state, a) == "derivation") {
|
if (a && evalString(state, a) == "derivation") {
|
||||||
|
|
|
@ -81,6 +81,18 @@ ATMatcher & operator >> (ATMatcher & pos, const string & s)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ATMatcher & operator >> (ATMatcher & pos, int & n)
|
||||||
|
{
|
||||||
|
n = 0;
|
||||||
|
ATerm t;
|
||||||
|
pos = pos >> t;
|
||||||
|
if (failed(pos)) return pos;
|
||||||
|
if (ATgetType(t) != AT_INT) return fail(pos);
|
||||||
|
n = ATgetInt((ATermInt) t);
|
||||||
|
return pos;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
ATMatcher & operator >> (ATMatcher & pos, ATermList & out)
|
ATMatcher & operator >> (ATMatcher & pos, ATermList & out)
|
||||||
{
|
{
|
||||||
out = 0;
|
out = 0;
|
||||||
|
|
|
@ -61,7 +61,7 @@ ATMatcher & atMatch(ATMatcher & pos, ATerm t);
|
||||||
/* Get the next argument of an application. */
|
/* Get the next argument of an application. */
|
||||||
ATMatcher & operator >> (ATMatcher & pos, ATerm & out);
|
ATMatcher & operator >> (ATMatcher & pos, ATerm & out);
|
||||||
|
|
||||||
/* Get the name of the function symbol of an applicatin, or the next
|
/* Get the name of the function symbol of an application, or the next
|
||||||
argument of an application as a string. */
|
argument of an application as a string. */
|
||||||
ATMatcher & operator >> (ATMatcher & pos, string & out);
|
ATMatcher & operator >> (ATMatcher & pos, string & out);
|
||||||
|
|
||||||
|
@ -69,6 +69,10 @@ ATMatcher & operator >> (ATMatcher & pos, string & out);
|
||||||
string. */
|
string. */
|
||||||
ATMatcher & operator >> (ATMatcher & pos, const string & s);
|
ATMatcher & operator >> (ATMatcher & pos, const string & s);
|
||||||
|
|
||||||
|
/* Get the next argument of an application, and verify that it is a
|
||||||
|
integer. */
|
||||||
|
ATMatcher & operator >> (ATMatcher & pos, int & n);
|
||||||
|
|
||||||
/* Get the next argument of an application, and verify that it is a
|
/* Get the next argument of an application, and verify that it is a
|
||||||
list. */
|
list. */
|
||||||
ATMatcher & operator >> (ATMatcher & pos, ATermList & out);
|
ATMatcher & operator >> (ATMatcher & pos, ATermList & out);
|
||||||
|
|
Loading…
Reference in a new issue