annotate rathaxes_compiler_passes_correctly_resolve_chunk_args_subidentifiers.patch @ 142:cbff597d307e default tip

Wip doc
author Louis Opter <louis@lse.epita.fr>
date Sun, 09 Feb 2014 15:48:57 -0800
parents 3816844250ff
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
123
3816844250ff WIP, one more fix from David
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
1 # HG changeset patch
3816844250ff WIP, one more fix from David
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
2 # User David Pineau <dav.pineau@gmail.com>, Louis Opter <louis@lse.epita.fr>
3816844250ff WIP, one more fix from David
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
3 # Parent 924908351b124b3fd1180f27880d36ea64e7c01c
3816844250ff WIP, one more fix from David
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
4 rathaxes: correctly resolve the type of chunk arguments subidentifiers
3816844250ff WIP, one more fix from David
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
5
3816844250ff WIP, one more fix from David
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
6 diff --git a/rathaxes/compiler/passes/back/rtxIntrospect.inc.cws b/rathaxes/compiler/passes/back/rtxIntrospect.inc.cws
3816844250ff WIP, one more fix from David
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
7 --- a/rathaxes/compiler/passes/back/rtxIntrospect.inc.cws
3816844250ff WIP, one more fix from David
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
8 +++ b/rathaxes/compiler/passes/back/rtxIntrospect.inc.cws
3816844250ff WIP, one more fix from David
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
9 @@ -744,17 +744,18 @@
3816844250ff WIP, one more fix from David
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
10 if (!existVariable(param.rtype))
3816844250ff WIP, one more fix from David
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
11 {
3816844250ff WIP, one more fix from David
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
12 localref theVar = param.identifiers#[0];
3816844250ff WIP, one more fix from David
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
13 + local theType;
3816844250ff WIP, one more fix from David
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
14 if (theVar.name == "local")
3816844250ff WIP, one more fix from David
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
15 {
3816844250ff WIP, one more fix from David
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
16 ref theVar = param.identifiers#[1];
3816844250ff WIP, one more fix from David
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
17 }
3816844250ff WIP, one more fix from David
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
18 - local theType;
3816844250ff WIP, one more fix from David
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
19 if (findElement(theVar.name, theChunk.type_map))
3816844250ff WIP, one more fix from David
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
20 ref theType = theChunk.type_map[theVar.name];
3816844250ff WIP, one more fix from David
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
21 else if (findElement(theVar.name, theChunk.variables))
3816844250ff WIP, one more fix from David
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
22 ref theType = theChunk.variables[theVar.name].type_node;
3816844250ff WIP, one more fix from David
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
23 insert param.rtype;
3816844250ff WIP, one more fix from David
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
24 - if (getArraySize(param.identifiers) > 2)
3816844250ff WIP, one more fix from David
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
25 + if ((param.identifiers#[0].name != "local" && getArraySize(param.identifiers) > 1)
3816844250ff WIP, one more fix from David
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
26 + || getArraySize(param.identifiers) > 2)
3816844250ff WIP, one more fix from David
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
27 {
3816844250ff WIP, one more fix from David
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
28 local subType;
3816844250ff WIP, one more fix from David
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
29 local fieldList;
3816844250ff WIP, one more fix from David
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
30 @@ -763,7 +764,8 @@
3816844250ff WIP, one more fix from David
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
31 pushItem fieldList;
3816844250ff WIP, one more fix from David
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
32 fieldList#back = field.name;
3816844250ff WIP, one more fix from David
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
33 }
3816844250ff WIP, one more fix from David
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
34 - removeFirstElement(fieldList);
3816844250ff WIP, one more fix from David
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
35 + if (param.identifiers#[0].name == "local")
3816844250ff WIP, one more fix from David
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
36 + removeFirstElement(fieldList);
3816844250ff WIP, one more fix from David
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
37 removeFirstElement(fieldList);
3816844250ff WIP, one more fix from David
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
38 if (rtxTypingLookup_ResolveTypeFields(theType, fieldList, theChunk, theChunk#root /* XXX dummy */, subType) == false)
3816844250ff WIP, one more fix from David
Louis Opter <louis@lse.epita.fr>
parents:
diff changeset
39 {