mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-30 00:58:14 +02:00
mesa: glsl: additional type checking for assignments, inequalities
This commit is contained in:
parent
bf3040d476
commit
6b888a10d3
1 changed files with 16 additions and 0 deletions
|
|
@ -2889,6 +2889,10 @@ _slang_assignment_compatible(slang_assemble_ctx *A,
|
|||
t0.spec._struct->a_name != t1.spec._struct->a_name)
|
||||
return GL_FALSE;
|
||||
|
||||
if (t0.spec.type == SLANG_SPEC_FLOAT &&
|
||||
t1.spec.type == SLANG_SPEC_BOOL)
|
||||
return GL_FALSE;
|
||||
|
||||
#if 0 /* not used just yet - causes problems elsewhere */
|
||||
if (t0.spec.type == SLANG_SPEC_INT &&
|
||||
t1.spec.type == SLANG_SPEC_FLOAT)
|
||||
|
|
@ -3237,6 +3241,18 @@ _slang_gen_compare(slang_assemble_ctx *A, slang_operation *oper,
|
|||
return NULL;
|
||||
}
|
||||
|
||||
if (oper->type != SLANG_OPER_EQUAL &&
|
||||
oper->type != SLANG_OPER_NOTEQUAL) {
|
||||
/* <, <=, >, >= can only be used with scalars */
|
||||
if ((t0.spec.type != SLANG_SPEC_INT &&
|
||||
t0.spec.type != SLANG_SPEC_FLOAT) ||
|
||||
(t1.spec.type != SLANG_SPEC_INT &&
|
||||
t1.spec.type != SLANG_SPEC_FLOAT)) {
|
||||
slang_info_log_error(A->log, "Illegal type(s) for inequality operator");
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
n = new_node2(opcode,
|
||||
_slang_gen_operation(A, &oper->children[0]),
|
||||
_slang_gen_operation(A, &oper->children[1]));
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue