diff options
author | Eelco Dolstra <edolstra@gmail.com> | 2021-09-01 12:55:04 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-01 12:55:04 +0200 |
commit | 7ee639f9db987a442fdf3820d3681a77b2ee1688 (patch) | |
tree | b695e169dee1cffcb968cae0ce433eb73679309a /src/libexpr/eval.cc | |
parent | 5045f2b792df7d2e78136dff60485a1dc9597ef7 (diff) | |
parent | 1ffb9f197075975a00cd95cddcb39a29b15aed86 (diff) |
Merge pull request #5066 from Radvendii/master
add antiquotations to paths
Diffstat (limited to 'src/libexpr/eval.cc')
-rw-r--r-- | src/libexpr/eval.cc | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/libexpr/eval.cc b/src/libexpr/eval.cc index 361c52151..76541da8b 100644 --- a/src/libexpr/eval.cc +++ b/src/libexpr/eval.cc @@ -1576,7 +1576,6 @@ void ExprConcatStrings::eval(EvalState & state, Env & env, Value & v) and none of the strings are allowed to have contexts. */ if (first) { firstType = vTmp.type(); - first = false; } if (firstType == nInt) { @@ -1597,7 +1596,12 @@ void ExprConcatStrings::eval(EvalState & state, Env & env, Value & v) } else throwEvalError(pos, "cannot add %1% to a float", showType(vTmp)); } else - s << state.coerceToString(pos, vTmp, context, false, firstType == nString); + /* skip canonization of first path, which would only be not + canonized in the first place if it's coming from a ./${foo} type + path */ + s << state.coerceToString(pos, vTmp, context, false, firstType == nString, !first); + + first = false; } if (firstType == nInt) @@ -1786,7 +1790,7 @@ std::optional<string> EvalState::tryAttrsToString(const Pos & pos, Value & v, } string EvalState::coerceToString(const Pos & pos, Value & v, PathSet & context, - bool coerceMore, bool copyToStore) + bool coerceMore, bool copyToStore, bool canonicalizePath) { forceValue(v, pos); @@ -1798,7 +1802,7 @@ string EvalState::coerceToString(const Pos & pos, Value & v, PathSet & context, } if (v.type() == nPath) { - Path path(canonPath(v.path)); + Path path(canonicalizePath ? canonPath(v.path) : v.path); return copyToStore ? copyPathToStore(context, path) : path; } |