- assigned_to: nobody --> caplet
From
http://www.eros-os.org/pipermail/e-lang/2004-May/009839.html
? pragma.enable("exporter")
? pragma.enable("meta-scope")
? def foos := ["a", "b"]
Problem: a non-idempotent transformation in the E
parser/transformer.
(See
<http://www.eros-os.org/pipermail/e-lang/2004-February/009522.html>)
? e`def [foo_1, foo_2] := foos`
# value: e`def [foo_2, foo_4] := foos`
? e__quasiParser(e`def [foo_1, foo_2] := foos`.asText()) \
> =~ e`def [foo_1, foo_2] := foos`
# value: false
This causes problems even if you don't look at the
expansion:
? def [foo_1, foo_2] := foos; null
? [=> foo_1, => foo_2]
# value: ["foo_2" => "a", "foo_4" => "b"]
? meta.scope()["&foo_1"].getValue()
# problem: <IndexOutOfBoundsException: "&foo_1" not found>
I don't know what the solution for this is, but the
relevant files are
jsrc/org/erights/e/elang/syntax/ENodeBuilder.java
HilbertHotel.java
Followups 2004-Jun-10 20:05 markm
From
http://www.eros-os.org/pipermail/e-lang/2004-June/009858.html
I don't know what the solution is for it either.
In the meantime I've changed the separator for such
"temporary" generated
name to a double underbar, since we've said that names
containing a double
underbar ("__") are "reserved for use by E and
E-related specs" (In the same
sense that XML says that names beginning with "xml" are
reserved for use by
XML and XML-related specifications.) Accordingly,
starting with 0.8.28e,
your bug report will now read:
? def foos := ["a", "b"]
Problem: a non-idempotent transformation in the E
parser/transformer.
(See
<http://www.eros-os.org/pipermail/e-lang/2004-February/009522.html>)
? e`def [foo__1, foo__2] := foos`
# value: e`def [foo__2, foo__4] := foos`
? e__quasiParser(e`def [foo__1, foo__2] :=
foos`.asText()) \
> =~ e`def [foo__1, foo__2] := foos`
# value: false
This causes problems even if you don't look at the
expansion:
? def [foo__1, foo__2] := foos; null
? [=> foo__1, => foo__2]
# value: ["foo__2" => "a", "foo__4" => "b"]
? meta.scope()["&foo__1"].getValue()
# problem: <IndexOutOfBoundsException: "&foo__1" not
found>