guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

01/118: Provide a more useful error message when a dynamic attr lookup f


From: Ludovic Courtès
Subject: 01/118: Provide a more useful error message when a dynamic attr lookup fails
Date: Tue, 19 May 2015 14:45:05 +0000

civodul pushed a commit to branch nix
in repository guix.

commit eac5841970737b799c55ec78f6ace6d80762ff04
Author: Shea Levy <address@hidden>
Date:   Thu May 15 11:30:46 2014 -0400

    Provide a more useful error message when a dynamic attr lookup fails
---
 src/libexpr/eval.cc |   12 ++++++++++--
 1 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/src/libexpr/eval.cc b/src/libexpr/eval.cc
index 0f7e8e3..81abe5b 100644
--- a/src/libexpr/eval.cc
+++ b/src/libexpr/eval.cc
@@ -757,8 +757,16 @@ void ExprSelect::eval(EvalState & state, Env & env, Value 
& v)
                 }
             } else {
                 state.forceAttrs(*vAttrs, pos);
-                if ((j = vAttrs->attrs->find(name)) == vAttrs->attrs->end())
-                    throwEvalError("attribute `%1%' missing, at %2%", 
showAttrPath(attrPath), pos);
+                if ((j = vAttrs->attrs->find(name)) == vAttrs->attrs->end()) {
+                    AttrPath staticPath;
+                    AttrPath::const_iterator j;
+                    for (j = attrPath.begin(); j != i; ++j)
+                        staticPath.push_back(AttrName(getName(*j, state, 
env)));
+                    staticPath.push_back(AttrName(getName(*j, state, env)));
+                    for (j = j + 1; j != attrPath.end(); ++j)
+                        staticPath.push_back(*j);
+                    throwEvalError("attribute `%1%' missing, at %2%", 
showAttrPath(staticPath), pos);
+                }
             }
             vAttrs = j->value;
             pos2 = j->pos;



reply via email to

[Prev in Thread] Current Thread [Next in Thread]