- Jan 22, 2010
-
-
Erwan Jahier authored
cf test/should_work/NONREG/fresh_name.lus where the local variable _n1e1_1 was defined twice ! The fix contist the following idea : prefix fresh var name by "_", except if at least one user ident begins by "_". In that case, we try to prefix them by "_1", and then "_2", and so on. We take the first possible one. nb : this won't work if the user defined idents from "_1" to "_1073741823" (on 32-bits machine), but I bet that this compiler would die before anyway...
-
- Jan 20, 2010
-
-
Erwan Jahier authored
E.g., when creating a fresh var using the name of "L1", I was creating a var names "_L11", and then "_L12", and so on. But if a var is named "L11", "_L111" is created. If if "L1" is used to generate 11 frash vart names, the name "_L111" clashes !!! The fix contist in adding an underscore before : "L1" produces "_L1_1", "_L1_2", ..., and "_L1_11". nb : the naming scheme is still wrong for other reasons... Next fix.
-
- Dec 12, 2008
-
-
Erwan Jahier authored
In short, the rationale for this change, is that it is having a recursive node_exp is - useless, - too complicated, - wrong w.r.t. nesting iterator calls In long: - It is useless because, at the Eff level, a node cannot call itself via one of its static arg (which was where the recursivity came from). - and indeed, it is much simpler to consider that a static arg node can only be ident.long that identifies a node alias. This means of course, that nested iterators have been unnested before, inventing alias node names along the way... And polymorphism makes thing difficult once again. - But the *big* problem with a recursive node_exp is that it make things very complicated to (lic)dump nested iterator call because of polymorphism! Actually, it even makes thing complicated when the iterators were themselves not nested in the source code ! Some ugly things were done in LicDump to unnest those calls when printing node_exp. But this uglyness have a price: tricky code, and bugs! Indeed, nested iterators calls were wong for example when using the --inline-iterator mode (but i would not be surprised that is wrong in other cases...). Hence, LicDump is simpler, but of course LazyCompiler is more complicated. But this is reasonable: a pretty-printer is not supposed to be complicated.
-
- Nov 26, 2008
-
-
Erwan Jahier authored
-
- Nov 25, 2008
-
-
Erwan Jahier authored
To do that, we centralized the ident name creation into a new dedicated module Name. + fix should_work/NONREG/param_node.lus, we contained a combinational loop.
-