mirror of
https://github.com/DarkPlacesEngine/gmqcc.git
synced 2024-11-24 04:41:25 +00:00
Starting to add error messages for when using array types in expressions
This commit is contained in:
parent
25ad091866
commit
df77e062dc
1 changed files with 12 additions and 6 deletions
18
parser.c
18
parser.c
|
@ -387,6 +387,9 @@ static bool parser_sy_pop(parser_t *parser, shunt *sy)
|
||||||
size_t i, assignop;
|
size_t i, assignop;
|
||||||
qcint generated_op = 0;
|
qcint generated_op = 0;
|
||||||
|
|
||||||
|
char ty1[1024];
|
||||||
|
char ty2[1024];
|
||||||
|
|
||||||
if (!sy->ops_count) {
|
if (!sy->ops_count) {
|
||||||
parseerror(parser, "internal error: missing operator");
|
parseerror(parser, "internal error: missing operator");
|
||||||
return false;
|
return false;
|
||||||
|
@ -759,8 +762,6 @@ static bool parser_sy_pop(parser_t *parser, shunt *sy)
|
||||||
else
|
else
|
||||||
assignop = type_storep_instr[exprs[0]->expression.vtype];
|
assignop = type_storep_instr[exprs[0]->expression.vtype];
|
||||||
if (!ast_compare_type(field->expression.next, exprs[1])) {
|
if (!ast_compare_type(field->expression.next, exprs[1])) {
|
||||||
char ty1[1024];
|
|
||||||
char ty2[1024];
|
|
||||||
ast_type_to_string(field->expression.next, ty1, sizeof(ty1));
|
ast_type_to_string(field->expression.next, ty1, sizeof(ty1));
|
||||||
ast_type_to_string(exprs[1], ty2, sizeof(ty2));
|
ast_type_to_string(exprs[1], ty2, sizeof(ty2));
|
||||||
if (opts_standard == COMPILER_QCC &&
|
if (opts_standard == COMPILER_QCC &&
|
||||||
|
@ -785,11 +786,16 @@ static bool parser_sy_pop(parser_t *parser, shunt *sy)
|
||||||
{
|
{
|
||||||
assignop = type_store_instr[TYPE_VECTOR];
|
assignop = type_store_instr[TYPE_VECTOR];
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
assignop = type_store_instr[exprs[0]->expression.vtype];
|
assignop = type_store_instr[exprs[0]->expression.vtype];
|
||||||
if (!ast_compare_type(exprs[0], exprs[1])) {
|
}
|
||||||
char ty1[1024];
|
|
||||||
char ty2[1024];
|
if (assignop == AINSTR_END) {
|
||||||
|
ast_type_to_string(exprs[0], ty1, sizeof(ty1));
|
||||||
|
ast_type_to_string(exprs[1], ty2, sizeof(ty2));
|
||||||
|
parseerror(parser, "invalid types in assignment: cannot assign %s to %s", ty2, ty1);
|
||||||
|
}
|
||||||
|
else if (!ast_compare_type(exprs[0], exprs[1])) {
|
||||||
ast_type_to_string(exprs[0], ty1, sizeof(ty1));
|
ast_type_to_string(exprs[0], ty1, sizeof(ty1));
|
||||||
ast_type_to_string(exprs[1], ty2, sizeof(ty2));
|
ast_type_to_string(exprs[1], ty2, sizeof(ty2));
|
||||||
if (opts_standard == COMPILER_QCC &&
|
if (opts_standard == COMPILER_QCC &&
|
||||||
|
|
Loading…
Reference in a new issue