diff options
Diffstat (limited to '')
| -rwxr-xr-x | src/yuescript/yue_compiler.cpp | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/yuescript/yue_compiler.cpp b/src/yuescript/yue_compiler.cpp index cc8bf79..c10c6fd 100755 --- a/src/yuescript/yue_compiler.cpp +++ b/src/yuescript/yue_compiler.cpp | |||
| @@ -1336,9 +1336,11 @@ private: | |||
| 1336 | BREAK_IF(!assign); | 1336 | BREAK_IF(!assign); |
| 1337 | if (assignment->expList->exprs.size() < assign->values.size()) { | 1337 | if (assignment->expList->exprs.size() < assign->values.size()) { |
| 1338 | auto num = assignment->expList->exprs.size(); | 1338 | auto num = assignment->expList->exprs.size(); |
| 1339 | _buf << "no more than "sv << num << " right value"sv; | 1339 | if (num > 1) { |
| 1340 | if (num > 1) _buf << 's'; | 1340 | _buf << "no more than "sv << num << " right values expected, got "sv << assign->values.size(); |
| 1341 | _buf << " required"sv; | 1341 | } else { |
| 1342 | _buf << "only one right value expected, got "sv << assign->values.size(); | ||
| 1343 | } | ||
| 1342 | throw std::logic_error(_info.errorMessage(clearBuf(), assign->values.front())); | 1344 | throw std::logic_error(_info.errorMessage(clearBuf(), assign->values.front())); |
| 1343 | } | 1345 | } |
| 1344 | auto x = assignment; | 1346 | auto x = assignment; |
| @@ -7400,7 +7402,13 @@ private: | |||
| 7400 | void transformLocalAttrib(LocalAttrib_t* localAttrib, str_list& out) { | 7402 | void transformLocalAttrib(LocalAttrib_t* localAttrib, str_list& out) { |
| 7401 | auto x = localAttrib; | 7403 | auto x = localAttrib; |
| 7402 | if (x->leftList.size() < x->assign->values.size()) { | 7404 | if (x->leftList.size() < x->assign->values.size()) { |
| 7403 | throw std::logic_error(_info.errorMessage("number of right values should not be greater than left values"sv, x->assign->values.front())); | 7405 | auto num = x->leftList.size(); |
| 7406 | if (num > 1) { | ||
| 7407 | _buf << "no more than "sv << num << " right values expected, got "sv << x->assign->values.size(); | ||
| 7408 | } else { | ||
| 7409 | _buf << "only one right value expected, got "sv << x->assign->values.size(); | ||
| 7410 | } | ||
| 7411 | throw std::logic_error(_info.errorMessage(clearBuf(), x->assign->values.front())); | ||
| 7404 | } | 7412 | } |
| 7405 | auto listA = x->new_ptr<NameList_t>(); | 7413 | auto listA = x->new_ptr<NameList_t>(); |
| 7406 | auto assignA = x->new_ptr<Assign_t>(); | 7414 | auto assignA = x->new_ptr<Assign_t>(); |
