debugError()
This commit is contained in:
parent
99d69ac23f
commit
fc66f48812
2 changed files with 21 additions and 24 deletions
|
@ -813,6 +813,13 @@ void EvalState::debugLastTrace(Error & e) const
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void debugError(Error * e, Env & env, Expr & expr)
|
||||||
|
{
|
||||||
|
if (debuggerHook)
|
||||||
|
debuggerHook(e, env, expr);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Every "format" object (even temporary) takes up a few hundred bytes
|
/* Every "format" object (even temporary) takes up a few hundred bytes
|
||||||
of stack space, which is a real killer in the recursive
|
of stack space, which is a real killer in the recursive
|
||||||
evaluator. So here are some helper functions for throwing
|
evaluator. So here are some helper functions for throwing
|
||||||
|
@ -824,8 +831,7 @@ void EvalState::throwEvalError(const PosIdx pos, const char * s, Env & env, Expr
|
||||||
.errPos = positions[pos]
|
.errPos = positions[pos]
|
||||||
});
|
});
|
||||||
|
|
||||||
if (debuggerHook)
|
debugError(&error, env, expr);
|
||||||
debuggerHook(&error, env, expr);
|
|
||||||
|
|
||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
|
@ -860,8 +866,7 @@ void EvalState::throwEvalError(const PosIdx pos, const Suggestions & suggestions
|
||||||
.suggestions = suggestions,
|
.suggestions = suggestions,
|
||||||
});
|
});
|
||||||
|
|
||||||
if (debuggerHook)
|
debugError(&error, env, expr);
|
||||||
debuggerHook(&error, env, expr);
|
|
||||||
|
|
||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
|
@ -885,8 +890,7 @@ void EvalState::throwEvalError(const PosIdx pos, const char * s, const std::stri
|
||||||
.errPos = positions[pos]
|
.errPos = positions[pos]
|
||||||
});
|
});
|
||||||
|
|
||||||
if (debuggerHook)
|
debugError(&error, env, expr);
|
||||||
debuggerHook(&error, env, expr);
|
|
||||||
|
|
||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
|
@ -925,8 +929,7 @@ void EvalState::throwEvalError(const PosIdx pos, const char * s, const std::stri
|
||||||
.errPos = positions[pos]
|
.errPos = positions[pos]
|
||||||
});
|
});
|
||||||
|
|
||||||
if (debuggerHook)
|
debugError(&error, env, expr);
|
||||||
debuggerHook(&error, env, expr);
|
|
||||||
|
|
||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
|
@ -939,8 +942,7 @@ void EvalState::throwEvalError(const PosIdx p1, const char * s, const Symbol sym
|
||||||
.errPos = positions[p1]
|
.errPos = positions[p1]
|
||||||
});
|
});
|
||||||
|
|
||||||
if (debuggerHook)
|
debugError(&error, env, expr);
|
||||||
debuggerHook(&error, env, expr);
|
|
||||||
|
|
||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
|
@ -964,8 +966,7 @@ void EvalState::throwTypeError(const PosIdx pos, const char * s, const Value & v
|
||||||
.errPos = positions[pos]
|
.errPos = positions[pos]
|
||||||
});
|
});
|
||||||
|
|
||||||
if (debuggerHook)
|
debugError(&error, env, expr);
|
||||||
debuggerHook(&error, env, expr);
|
|
||||||
|
|
||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
|
@ -990,8 +991,7 @@ void EvalState::throwTypeError(const PosIdx pos, const char * s, const ExprLambd
|
||||||
.errPos = positions[pos]
|
.errPos = positions[pos]
|
||||||
});
|
});
|
||||||
|
|
||||||
if (debuggerHook)
|
debugError(&error, env, expr);
|
||||||
debuggerHook(&error, env, expr);
|
|
||||||
|
|
||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
|
@ -1005,8 +1005,7 @@ void EvalState::throwTypeError(const PosIdx pos, const Suggestions & suggestions
|
||||||
.suggestions = suggestions,
|
.suggestions = suggestions,
|
||||||
});
|
});
|
||||||
|
|
||||||
if (debuggerHook)
|
debugError(&error, env, expr);
|
||||||
debuggerHook(&error, env, expr);
|
|
||||||
|
|
||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
|
@ -1018,8 +1017,7 @@ void EvalState::throwTypeError(const char * s, const Value & v, Env & env, Expr
|
||||||
.errPos = positions[expr.getPos()],
|
.errPos = positions[expr.getPos()],
|
||||||
});
|
});
|
||||||
|
|
||||||
if (debuggerHook)
|
debugError(&error, env, expr);
|
||||||
debuggerHook(&error, env, expr);
|
|
||||||
|
|
||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
|
@ -1031,8 +1029,7 @@ void EvalState::throwAssertionError(const PosIdx pos, const char * s, const std:
|
||||||
.errPos = positions[pos]
|
.errPos = positions[pos]
|
||||||
});
|
});
|
||||||
|
|
||||||
if (debuggerHook)
|
debugError(&error, env, expr);
|
||||||
debuggerHook(&error, env, expr);
|
|
||||||
|
|
||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
|
@ -1044,8 +1041,7 @@ void EvalState::throwUndefinedVarError(const PosIdx pos, const char * s, const s
|
||||||
.errPos = positions[pos]
|
.errPos = positions[pos]
|
||||||
});
|
});
|
||||||
|
|
||||||
if (debuggerHook)
|
debugError(&error, env, expr);
|
||||||
debuggerHook(&error, env, expr);
|
|
||||||
|
|
||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
|
@ -1057,8 +1053,7 @@ void EvalState::throwMissingArgumentError(const PosIdx pos, const char * s, cons
|
||||||
.errPos = positions[pos]
|
.errPos = positions[pos]
|
||||||
});
|
});
|
||||||
|
|
||||||
if (debuggerHook)
|
debugError(&error, env, expr);
|
||||||
debuggerHook(&error, env, expr);
|
|
||||||
|
|
||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
|
|
|
@ -85,6 +85,8 @@ struct DebugTrace {
|
||||||
bool isError;
|
bool isError;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void debugError(Error * e, Env & env, Expr & expr);
|
||||||
|
|
||||||
class EvalState
|
class EvalState
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
Loading…
Reference in a new issue