* Make printing an expression as XML interruptible.
This commit is contained in:
parent
11158028be
commit
792878af91
|
@ -684,6 +684,9 @@ Expr strictEvalExpr(EvalState & state, Expr e, bool canonicalise)
|
||||||
if (!matchBind(*i, name, e, pos)) abort(); /* can't happen */
|
if (!matchBind(*i, name, e, pos)) abort(); /* can't happen */
|
||||||
as2 = ATinsert(as2, makeBind(name, strictEvalExpr(state, e, canonicalise),
|
as2 = ATinsert(as2, makeBind(name, strictEvalExpr(state, e, canonicalise),
|
||||||
canonicalise ? makeNoPos() : pos));
|
canonicalise ? makeNoPos() : pos));
|
||||||
|
}
|
||||||
|
if (canonicalise) {
|
||||||
|
|
||||||
}
|
}
|
||||||
/* !!! sort attributes if canonicalise == true */
|
/* !!! sort attributes if canonicalise == true */
|
||||||
return makeAttrs(ATreverse(as2));
|
return makeAttrs(ATreverse(as2));
|
||||||
|
@ -716,6 +719,7 @@ Expr strictEvalExpr(EvalState & state, Expr e, bool canonicalise)
|
||||||
|
|
||||||
formals2 = ATinsert(formals2, makeFormal(name, valids, dummy));
|
formals2 = ATinsert(formals2, makeFormal(name, valids, dummy));
|
||||||
}
|
}
|
||||||
|
|
||||||
return makeFunction(ATreverse(formals2), body,
|
return makeFunction(ATreverse(formals2), body,
|
||||||
canonicalise ? makeNoPos() : pos);
|
canonicalise ? makeNoPos() : pos);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
#include "xml-writer.hh"
|
#include "xml-writer.hh"
|
||||||
#include "nixexpr-ast.hh"
|
#include "nixexpr-ast.hh"
|
||||||
#include "aterm.hh"
|
#include "aterm.hh"
|
||||||
|
#include "util.hh"
|
||||||
|
|
||||||
|
|
||||||
namespace nix {
|
namespace nix {
|
||||||
|
@ -24,6 +25,8 @@ static void printTermAsXML(Expr e, XMLWriter & doc, PathSet & context)
|
||||||
ATermList as, es, formals;
|
ATermList as, es, formals;
|
||||||
ATerm body, pos;
|
ATerm body, pos;
|
||||||
|
|
||||||
|
checkInterrupt();
|
||||||
|
|
||||||
if (matchStr(e, s, context)) /* !!! show the context? */
|
if (matchStr(e, s, context)) /* !!! show the context? */
|
||||||
doc.writeEmptyElement("string", singletonAttrs("value", s));
|
doc.writeEmptyElement("string", singletonAttrs("value", s));
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue