diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2013-05-16T17·08+0200 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2013-05-16T17·08+0200 |
commit | 18a48d80a0686ba81959057e8becc6272acd6c46 (patch) | |
tree | e3f1fabe22a2c2da63c0ea7880cedee6bdb55a87 /src/libexpr/nixexpr.cc | |
parent | 1b3a03f1610b714adca41637ccd85a8157e236ab (diff) |
Show function names in error messages
Functions in Nix are anonymous, but if they're assigned to a variable/attribute, we can use the variable/attribute name in error messages, e.g. while evaluating `concatMapStrings' at `/nix/var/nix/profiles/per-user/root/channels/nixos/nixpkgs/pkgs/lib/strings.nix:18:25': ...
Diffstat (limited to 'src/libexpr/nixexpr.cc')
-rw-r--r-- | src/libexpr/nixexpr.cc | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/libexpr/nixexpr.cc b/src/libexpr/nixexpr.cc index c52a413916a7..9b75bb644844 100644 --- a/src/libexpr/nixexpr.cc +++ b/src/libexpr/nixexpr.cc @@ -324,4 +324,24 @@ void ExprConcatStrings::bindVars(const StaticEnv & env) } +/* Storing function names. */ + +void Expr::setName(Symbol & name) +{ +} + + +void ExprLambda::setName(Symbol & name) +{ + this->name = name; + body->setName(name); +} + + +string ExprLambda::showNamePos() +{ + return (format("%1% at %2%") % (name.set() ? "`" + (string) name + "'" : "an anonymous function") % pos).str(); +} + + } |