#43 *Clarified error of assigning to reserved words.

This commit is contained in:
Wang Renxin 2021-06-28 10:01:47 +08:00
parent 789019fb4a
commit 82a3acfcce
3 changed files with 9 additions and 4 deletions

View File

@ -1,5 +1,8 @@
Jun. 28 2021
Improved error prompting of assigning to reserved word
Apr. 9 2020 Apr. 9 2020
Improved incomplete IF structure error prompting Improved error prompting of incomplete IF structure
Mar. 16 2019 Mar. 16 2019
Fixed a memory leak when reassigning an array element with string, thanks to Jacques Diederik for pointing it out Fixed a memory leak when reassigning an array element with string, thanks to Jacques Diederik for pointing it out

View File

@ -271,6 +271,7 @@ MBCONST static const char* const _ERR_DESC[] = {
"Too many dimensions", "Too many dimensions",
"Rank out of bound", "Rank out of bound",
"Invalid identifier usage", "Invalid identifier usage",
"Cannot assign to reserved word",
"Duplicate identifier", "Duplicate identifier",
"Incomplete structure", "Incomplete structure",
"Label not exists", "Label not exists",
@ -15426,7 +15427,7 @@ static int _core_let(mb_interpreter_t* s, void** l) {
goto _exit; goto _exit;
} else if(obj->type == _DT_VAR) { } else if(obj->type == _DT_VAR) {
if(_IS_ME(obj->data.variable)) { if(_IS_ME(obj->data.variable)) {
_handle_error_on_obj(s, SE_RN_INVALID_ID_USAGE, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); _handle_error_on_obj(s, SE_RN_CANNOT_ASSIGN_TO_RESERVED_WORD, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result);
} else { } else {
evar = obj->data.variable; evar = obj->data.variable;
var = _search_var_in_scope_chain(s, obj->data.variable, 0); var = _search_var_in_scope_chain(s, obj->data.variable, 0);
@ -15435,11 +15436,11 @@ static int _core_let(mb_interpreter_t* s, void** l) {
if(evar && evar->pathing == _PATHING_UPVALUE) evar = 0; if(evar && evar->pathing == _PATHING_UPVALUE) evar = 0;
#endif /* MB_ENABLE_CLASS */ #endif /* MB_ENABLE_CLASS */
if(var == _OBJ_BOOL_TRUE->data.variable || var == _OBJ_BOOL_FALSE->data.variable) { if(var == _OBJ_BOOL_TRUE->data.variable || var == _OBJ_BOOL_FALSE->data.variable) {
_handle_error_on_obj(s, SE_RN_INVALID_ID_USAGE, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); _handle_error_on_obj(s, SE_RN_CANNOT_ASSIGN_TO_RESERVED_WORD, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result);
} }
} }
} else { } else {
_handle_error_on_obj(s, SE_RN_INVALID_ID_USAGE, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); _handle_error_on_obj(s, SE_RN_CANNOT_ASSIGN_TO_RESERVED_WORD, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result);
} }
ast = ast->next; ast = ast->next;

View File

@ -425,6 +425,7 @@ typedef enum mb_error_e {
SE_RN_TOO_MANY_DIMENSIONS, SE_RN_TOO_MANY_DIMENSIONS,
SE_RN_RANK_OUT_OF_BOUND, SE_RN_RANK_OUT_OF_BOUND,
SE_RN_INVALID_ID_USAGE, SE_RN_INVALID_ID_USAGE,
SE_RN_CANNOT_ASSIGN_TO_RESERVED_WORD,
SE_RN_DUPLICATE_ID, SE_RN_DUPLICATE_ID,
SE_RN_INCOMPLETE_STRUCTURE, SE_RN_INCOMPLETE_STRUCTURE,
SE_RN_LABEL_NOT_EXISTS, SE_RN_LABEL_NOT_EXISTS,