From d481643617027c4d738f8613fbe9d9641431597b Mon Sep 17 00:00:00 2001
From: Recolic Keghart <root@recolic.net>
Date: Sat, 6 Apr 2019 21:08:17 -0700
Subject: [PATCH] multi-assign stmt bug fix. silly TA not using reference-type
 for assignment

---
 src/main/java/chocopy/pa2/TypeChecker.java | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

diff --git a/src/main/java/chocopy/pa2/TypeChecker.java b/src/main/java/chocopy/pa2/TypeChecker.java
index 9c86167..6e18fa9 100644
--- a/src/main/java/chocopy/pa2/TypeChecker.java
+++ b/src/main/java/chocopy/pa2/TypeChecker.java
@@ -181,14 +181,20 @@ public class TypeChecker extends AbstractNodeAnalyzer<SymbolType> {
         if(right_type == null)
             right_type = NONE_TYPE;
         for(Expr target : node.targets) {
-            Identifier id = (Identifier) target;
-            if(id == null) {
-                err(node, "assign to non-identifier expr.");
-                return NONE_TYPE;
+            System.out.println("assign: " + target.getClass().getName());
+            if(target instanceof IndexExpr) {
+                IndexExpr indexExpr = (IndexExpr) target;
+                left_type = indexExpr.dispatch(this);
+            }
+            else if(target instanceof Identifier) {
+                Identifier id = (Identifier) target;
+                left_type = id.dispatch(this);
+            }
+            else {
+                err(node, "Not implemented assignStmt");
             }
-            left_type = id.dispatch(this);
             if(left_type == null) {
-                err(node, "Syntax error: assign to non-declared variable: " + id.name);
+                err(node, "Syntax error: assign to non-declared variable");
                 return NONE_TYPE;
             }
             if(!typeConvertible(right_type,  left_type)) {
-- 
GitLab