forked from lix-project/lix
double addtrace for 'called from'
This commit is contained in:
parent
ddb81ca126
commit
70bcb39d3f
|
@ -597,11 +597,6 @@ LocalNoInline(void addErrorTrace(Error & e, const char * s, const string & s2))
|
||||||
e.addTrace(std::nullopt, s, s2);
|
e.addTrace(std::nullopt, s, s2);
|
||||||
}
|
}
|
||||||
|
|
||||||
LocalNoInline(void addErrorTrace(Error & e, const Pos & pos, const char * s, const ExprLambda & fun))
|
|
||||||
{
|
|
||||||
e.addTrace(pos, s, fun.showNamePos());
|
|
||||||
}
|
|
||||||
|
|
||||||
LocalNoInline(void addErrorTrace(Error & e, const Pos & pos, const char * s, const string & s2))
|
LocalNoInline(void addErrorTrace(Error & e, const Pos & pos, const char * s, const string & s2))
|
||||||
{
|
{
|
||||||
e.addTrace(pos, s, s2);
|
e.addTrace(pos, s, s2);
|
||||||
|
@ -1241,9 +1236,11 @@ void EvalState::callFunction(Value & fun, Value & arg, Value & v, const Pos & po
|
||||||
try {
|
try {
|
||||||
lambda.body->eval(*this, env2, v);
|
lambda.body->eval(*this, env2, v);
|
||||||
} catch (Error & e) {
|
} catch (Error & e) {
|
||||||
// TODO something different for 'called from' than usual addTrace?
|
addErrorTrace(e, lambda.pos, "while evaluating %s",
|
||||||
// addErrorTrace(e, pos, "while evaluating %1%, called from %2%:", lambda);
|
(lambda.name.set()
|
||||||
addErrorTrace(e, pos, "while evaluating %1%:", lambda);
|
? "'" + (string) lambda.name + "'"
|
||||||
|
: "anonymous lambdaction"));
|
||||||
|
addErrorTrace(e, pos, "from call site%s", "");
|
||||||
throw;
|
throw;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -330,7 +330,7 @@ std::ostream& showErrorInfo(std::ostream &out, const ErrorInfo &einfo, bool show
|
||||||
// traces
|
// traces
|
||||||
if (showTrace && !einfo.traces.empty())
|
if (showTrace && !einfo.traces.empty())
|
||||||
{
|
{
|
||||||
const string tracetitle(" show-trace output ");
|
const string tracetitle(" show-trace ");
|
||||||
|
|
||||||
int fill = errwidth - tracetitle.length();
|
int fill = errwidth - tracetitle.length();
|
||||||
int lw = 0;
|
int lw = 0;
|
||||||
|
|
Loading…
Reference in a new issue