summaryrefslogtreecommitdiff
path: root/types.c
diff options
context:
space:
mode:
authorLeo Tenenbaum <pommicket@gmail.com>2020-03-11 15:57:42 -0400
committerLeo Tenenbaum <pommicket@gmail.com>2020-03-11 15:57:42 -0400
commit0b16c903741e2f6178c07531ab13026c3de6ce5b (patch)
tree40e8b20204618edc705638cc36620df88a859c7d /types.c
parent4cdee65cadb4f6e714fe30945ed9080e191618f6 (diff)
prevent varargs[i] from being an lvalue
Diffstat (limited to 'types.c')
-rw-r--r--types.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/types.c b/types.c
index e43e6f8..e181476 100644
--- a/types.c
+++ b/types.c
@@ -303,6 +303,10 @@ static Status expr_must_lval(Expression *e) {
case BINARY_AT_INDEX:
if (!expr_must_lval(e->binary.lhs))
return false;
+ if (type_is_builtin(&e->binary.lhs->type, BUILTIN_VARARGS)) {
+ err_print(e->where, "Cannot set or take address of vararg.");
+ return false;
+ }
return true;
case BINARY_DOT: return true;
default: break;