Commit 33784871ec

Josh Wolfe <thejoshwolfe@gmail.com>
2017-09-21 07:14:39
assign
1 parent f7cb77a
Changed files (2)
src/parsec.cpp
@@ -995,9 +995,11 @@ static AstNode *trans_binary_operator(Context *c, bool result_used, AstNode *blo
             // TODO: int vs bool
             return trans_create_bin_op(c, block, stmt->getLHS(), BinOpTypeBoolOr, stmt->getRHS());
         case BO_Assign:
-            (void)result_used;
-            emit_warning(c, stmt->getLocStart(), "TODO handle more C binary operators: BO_Assign");
-            return nullptr;
+            if (result_used) {
+                emit_warning(c, stmt->getLocStart(), "TODO handle more C binary operators: BO_Assign with result_used");
+                return nullptr;
+            }
+            return trans_create_bin_op(c, block, stmt->getLHS(), BinOpTypeAssign, stmt->getRHS());
         case BO_MulAssign:
             emit_warning(c, stmt->getLocStart(), "TODO handle more C binary operators: BO_MulAssign");
             return nullptr;
test/parsec.zig
@@ -415,6 +415,18 @@ pub fn addCases(cases: &tests.ParseCContext) {
         \\}
     );
 
+    cases.add("assign",
+        \\int max(int a) {
+        \\    int tmp;
+        \\    tmp = a;
+        \\}
+    ,
+        \\export fn max(a: c_int) -> c_int {
+        \\    var tmp: c_int;
+        \\    tmp = a;
+        \\}
+    );
+
     cases.add("shift right assign with a fixed size type",
         \\#include <stdint.h>
         \\int log2(uint32_t a) {