diff options
author | Eelco Dolstra <e.dolstra@tudelft.nl> | 2010-06-21T07·55+0000 |
---|---|---|
committer | Eelco Dolstra <e.dolstra@tudelft.nl> | 2010-06-21T07·55+0000 |
commit | bf87cc44b4484df74388b526c89884fea166ab7f (patch) | |
tree | 18a9a0e77d2e2a027eac094b3cdb43d6dd988cf4 /src/libexpr/eval.cc | |
parent | d1f6c0cbe39b509545f809f08cbd580859f38e34 (diff) | |
parent | b57189174f6e11c3e9e0f7c65c08a72f689fe194 (diff) |
* Sync with the trunk.
Diffstat (limited to 'src/libexpr/eval.cc')
-rw-r--r-- | src/libexpr/eval.cc | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/libexpr/eval.cc b/src/libexpr/eval.cc index 1ee6c5a7f6aa..eb1d8d432c69 100644 --- a/src/libexpr/eval.cc +++ b/src/libexpr/eval.cc @@ -59,6 +59,7 @@ std::ostream & operator << (std::ostream & str, const Value & v) str << "]"; break; case tThunk: + case tApp: case tCopy: str << "<CODE>"; break; @@ -901,12 +902,18 @@ string EvalState::forceString(Value & v) } -string EvalState::forceString(Value & v, PathSet & context) +void copyContext(const Value & v, PathSet & context) { - string s = forceString(v); if (v.string.context) for (const char * * p = v.string.context; *p; ++p) context.insert(*p); +} + + +string EvalState::forceString(Value & v, PathSet & context) +{ + string s = forceString(v); + copyContext(v, context); return s; } @@ -937,9 +944,7 @@ string EvalState::coerceToString(Value & v, PathSet & context, string s; if (v.type == tString) { - if (v.string.context) - for (const char * * p = v.string.context; *p; ++p) - context.insert(*p); + copyContext(v, context); return v.string.s; } |