Mercurial > archived > louis > epitech > mq > rathaxes
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 + {