mirror of
https://github.com/fish-shell/fish-shell.git
synced 2025-01-19 18:35:29 +08:00
[muparser] Convert more exception handling into explicit errors
This commit is contained in:
parent
d3822e4cb3
commit
6f14d55612
|
@ -95,21 +95,18 @@ class ParserTester // final
|
|||
static ValueOrError land(value_type v1, value_type v2) { return (int)v1 & (int)v2; }
|
||||
|
||||
static ValueOrError FirstArg(const value_type* a_afArg, int a_iArgc) {
|
||||
if (!a_iArgc)
|
||||
throw mu::Parser::exception_type(_T("too few arguments for function FirstArg."));
|
||||
|
||||
if (!a_iArgc) return ParserError(_T("too few arguments for function FirstArg."));
|
||||
return a_afArg[0];
|
||||
}
|
||||
|
||||
static ValueOrError LastArg(const value_type* a_afArg, int a_iArgc) {
|
||||
if (!a_iArgc)
|
||||
throw mu::Parser::exception_type(_T("too few arguments for function LastArg."));
|
||||
if (!a_iArgc) return ParserError(_T("too few arguments for function LastArg."));
|
||||
|
||||
return a_afArg[a_iArgc - 1];
|
||||
}
|
||||
|
||||
static ValueOrError Sum(const value_type* a_afArg, int a_iArgc) {
|
||||
if (!a_iArgc) throw mu::Parser::exception_type(_T("too few arguments for function sum."));
|
||||
if (!a_iArgc) return ParserError(_T("too few arguments for function sum."));
|
||||
|
||||
value_type fRes = 0;
|
||||
for (int i = 0; i < a_iArgc; ++i) fRes += a_afArg[i];
|
||||
|
|
|
@ -288,7 +288,7 @@ class ParserToken {
|
|||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
/** \biref Get value of the token.
|
||||
/** \brifef Get value of the token.
|
||||
|
||||
Only applicable to variable and value tokens.
|
||||
*/
|
||||
|
@ -299,7 +299,7 @@ class ParserToken {
|
|||
case cmVAR:
|
||||
return *((TBase *)m_pTok);
|
||||
default:
|
||||
throw ParserError(ecVAL_EXPECTED);
|
||||
return ParserError(ecVAL_EXPECTED);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1250,15 +1250,10 @@ OptionalError ParserBase::CreateRPN() const {
|
|||
uses bytecode instead of string parsing.
|
||||
*/
|
||||
ValueOrError ParserBase::ParseString() const {
|
||||
try {
|
||||
OptionalError oerr = CreateRPN();
|
||||
if (oerr.has_error()) return oerr.error();
|
||||
m_pParseFormula = &ParserBase::ParseCmdCode;
|
||||
return (this->*m_pParseFormula)();
|
||||
} catch (ParserError &exc) {
|
||||
exc.SetFormula(m_pTokenReader->GetExpr());
|
||||
throw;
|
||||
}
|
||||
OptionalError oerr = CreateRPN();
|
||||
if (oerr.has_error()) return oerr.error();
|
||||
m_pParseFormula = &ParserBase::ParseCmdCode;
|
||||
return (this->*m_pParseFormula)();
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
|
|
Loading…
Reference in New Issue
Block a user