]> git.xonotic.org Git - xonotic/gmqcc.git/blobdiff - ast.c
Don't allow code like: v * '0 1 0' = 3; to actually work...
[xonotic/gmqcc.git] / ast.c
diff --git a/ast.c b/ast.c
index ff105cc0dac2bd25700765f0aea427e67a031292..fb86b85e3e5514afb0ed8c8e9faf0ff3a92b65ba 100644 (file)
--- a/ast.c
+++ b/ast.c
@@ -570,7 +570,8 @@ ast_member* ast_member_new(lex_ctx ctx, ast_expression *owner, unsigned int fiel
         self->expression.next = ast_shallow_type(ctx, TYPE_FLOAT);
     }
 
-    self->owner = owner;
+    self->rvalue = false;
+    self->owner  = owner;
     ast_propagate_effects(self, owner);
 
     self->field = field;
@@ -2082,7 +2083,10 @@ bool ast_member_codegen(ast_member *self, ast_function *func, bool lvalue, ir_va
     ir_value *vec;
 
     /* in QC this is always an lvalue */
-    (void)lvalue;
+    if (lvalue && self->rvalue) {
+        compile_error(ast_ctx(self), "not an l-value (member access)");
+        return false;
+    }
     if (self->expression.outl) {
         *out = self->expression.outl;
         return true;