diff wip_debug.patch @ 128:0fdaa93ed62b

Start to clean up new compiler patch
author Louis Opter <louis@lse.epita.fr>
date Mon, 26 Aug 2013 22:53:34 -0700
parents 72b5b4a62cc5
children
line wrap: on
line diff
--- a/wip_debug.patch	Sun Aug 18 15:33:24 2013 -0700
+++ b/wip_debug.patch	Mon Aug 26 22:53:34 2013 -0700
@@ -1,49 +1,37 @@
 # HG changeset patch
 # Parent ea807d6831821c5fb094e7ae9258f5a282ec15e6
+
 diff --git a/rathaxes/compiler/passes/common/rtxResolve.inc.cws b/rathaxes/compiler/passes/common/rtxResolve.inc.cws
 --- a/rathaxes/compiler/passes/common/rtxResolve.inc.cws
 +++ b/rathaxes/compiler/passes/common/rtxResolve.inc.cws
-@@ -782,6 +782,11 @@
-                 return false;
-             }
- 
-+            if (coreString(local_node#parent.location,0,2) == "/home/kal/projs/rathaxes/rathaxes/samples/e1000/e1000.blt:971:")
-+            {
-+                traceLine(BLUE + toString(mapping,true) + DEFAULT_COLOR);
-+            }
-+
-             if (isString(mapping))
+@@ -729,9 +729,17 @@
+             // First, try to retrieve value from previous resVals, otherwise build it from chunk
+             if (varName != "self")
              {
-                 local_node#parent.ref_placeholder.id = mapping;
-@@ -812,9 +817,18 @@
++                //
++                // XXX Note: Here, we may encounter some issues if the chunk's type_map isnt properly filled
++                // (encountered once, the type was scalar instead of ref)
++                //
++                local self_reftype = "scalar";
++                local self_rtype;
+                 if (rtxNodeArgs_GetArgByName(resolverValues, varName, self) == true)
+                 {
+                     rtxNodeArg_getValue(self, self_value);
++                    rtxNodeArg_getRType(self, self_rtype);
++                    self_reftype = self_rtype.qualifier;
                  }
-                 local in_type = source_type.qualifier;
-                 local out_type = local_node#parent.ph_type;
-+                traceLine("paf: " + local_node#parent.location);
-+                if (local_node#parent.location == "/home/kal/projs/rathaxes/rathaxes/samples/e1000/ethernet.blt:124:40")
-+                {
-+                    traceLine(YELLOW + "in_type = " + in_type+ DEFAULT_COLOR);
-+                    traceLine(YELLOW + "out_type = " + out_type+ DEFAULT_COLOR);
-+                    traceLine(CYAN + toString(resolverValues,true) + DEFAULT_COLOR);
-+                }
-                 if (rtxResolve_RefScalarTranscribe(mapping, in_type, out_type) == false)
-                 { error(RED + "[Error] Cannot transcribe an expression from " + in_type + " to " + out_type + DEFAULT_COLOR); }
-                 setall local_node#parent.ref_placeholder = mapping;
-+                if (coreString(local_node#parent.location,0,2) == "/home/kal/projs/rathaxes/rathaxes/samples/e1000/e1000.blt:971:")
-+                    exit(1);
+                 else
+                 {
+@@ -740,8 +748,10 @@
+                     clearVariable(self_value);
+                     cnormNode_TerminalId(self_value, varName);
+                 }
+-                rtxNodeArgs_AppendArg(resVal, "self", theChunk.type_map[varName], self_value);
+-                setall self_type = theChunk.type_map[varName];
++                setall self_rtype = theChunk.type_map[varName];
++                self_rtype.qualifier = self_reftype;
++                rtxNodeArgs_AppendArg(resVal, "self", self_rtype, self_value);
++                setall self_type = self_rtype;
              }
-         }
-         else if (isBuiltinVariable(varName)) // Mapping for a  builtin type
-@@ -1445,6 +1459,12 @@
-         }
-         rtxNodeArg_getValue(self, val);
-         setall out_node = val;
-+        if (placeHolder#parent.location == "/home/kal/projs/rathaxes/rathaxes/samples/e1000/ethernet.blt:124:40")
-+        {
-+            traceLine(PURPLE + toString(val,true)+ DEFAULT_COLOR);
-+            //error("toto");
-+            //exit(1);
-+        }
-     }
- 
-     return true;
+             else
+             {