annotate rathaxes_compiler_passes_fix_reference_reuse.patch @ 142:cbff597d307e default tip

Wip doc
author Louis Opter <louis@lse.epita.fr>
date Sun, 09 Feb 2014 15:48:57 -0800
parents ecba077e0f73
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
124
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
1 # HG changeset patch
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
2 # User David Pineau <dav.pineau@gmail.com>, Louis Opter <louis@lse.epita.fr>
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
3 # Parent 732233e9a7ba6638d5c75ed277fce8d6de626601
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
4 rathaxes: fix an issue raised by re-using a reference to the ResVals
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
5
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
6 Fixes incorrectly generated rathaxes variable expansion.
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
7
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
8 diff --git a/rathaxes/compiler/passes/common/rtxResolve.inc.cws b/rathaxes/compiler/passes/common/rtxResolve.inc.cws
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
9 --- a/rathaxes/compiler/passes/common/rtxResolve.inc.cws
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
10 +++ b/rathaxes/compiler/passes/common/rtxResolve.inc.cws
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
11 @@ -340,6 +340,7 @@
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
12 if (existVariable(dst_p.identifiers))
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
13 ref param_name = dst_p.identifiers#front.name;
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
14 local param_type;
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
15 + local param_src_value;
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
16 local param_value;
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
17 local src_arg;
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
18
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
19 @@ -375,9 +376,10 @@
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
20 if (rtxNodeArg_getRType(src_arg, param_type) == false)
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
21 return false;
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
22 setall resolver_type = param_type;
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
23 - if (rtxNodeArg_getValue(src_arg, param_value) == false)
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
24 + if (rtxNodeArg_getValue(src_arg, param_src_value) == false)
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
25 return false;
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
26
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
27 + setall param_value = param_src_value;
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
28 // In case a recursive resolution is necessary, we need to setup a "self"
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
29 rtxNodeArgs_AppendArg(subResVal, "self", resolver_type, param_value);
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
30 }
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
31 @@ -443,6 +445,7 @@
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
32 local src_arg;
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
33 local src_name = param_value.id;
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
34 if (rtxNodeArgs_GetArgByName(src_resVals, src_name, src_arg))
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
35 + return false;
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
36 if (rtxNodeArg_getRType(src_arg, param_type) == false)
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
37 return false;
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
38 if (rtxNodeArg_getValue(src_arg, param_value) == false)