See http://www.eros-os.org/pipermail/e-lang/2006-July/011415.html
Logged In: YES user_id=634468
I agree. This would make term trees significantly more useful.
Logged In: YES user_id=54168 Originator: YES
Currently (as of 0.8.37b), Terms do admit non-term children, even though they are *statically* declared to be DeepPassByCopy.
? def fooTerm :DeepPassByCopy := makeTerm(fooTag, 3, null, [[].diverge()]); null ? fooTerm.getArgs() # value: [[].diverge()]
? fooTerm.getArgs()[0].push(3) ? fooTerm.getArgs() # value: [[3].diverge()]
This inconsistency is a security hole, promoting this bug.
Oops. Necessary prefix on prior updoc lines:
? def <qq> := <import:org.quasiliteral.*> ? def makeTerm := <qq:term.makeTerm> ? def makeTag := <qq:astro.makeAstroTag> ? def fooTag := makeTag(-1, "foo", null)
The security issue has been fixed, leaving the original bug. Therefore, this bug has been downgraded to feature request.
? def fooTerm :DeepPassByCopy := makeTerm(fooTag, 3, null, > [[].diverge()]); null # problem: <ClassCastException: FlexListImpl doesn't coerce to a Term>
Oops, meant to downgrade it to feature request but leave it open.
Log in to post a comment.
Logged In: YES
user_id=634468
I agree. This would make term trees significantly more useful.
Logged In: YES
user_id=54168
Originator: YES
Currently (as of 0.8.37b), Terms do admit non-term children, even though they are *statically* declared to be DeepPassByCopy.
? def fooTerm :DeepPassByCopy := makeTerm(fooTag, 3, null, [[].diverge()]); null
? fooTerm.getArgs()
# value: [[].diverge()]
? fooTerm.getArgs()[0].push(3)
? fooTerm.getArgs()
# value: [[3].diverge()]
This inconsistency is a security hole, promoting this bug.
Logged In: YES
user_id=54168
Originator: YES
Oops. Necessary prefix on prior updoc lines:
? def <qq> := <import:org.quasiliteral.*>
? def makeTerm := <qq:term.makeTerm>
? def makeTag := <qq:astro.makeAstroTag>
? def fooTag := makeTag(-1, "foo", null)
Logged In: YES
user_id=54168
Originator: YES
The security issue has been fixed, leaving the original bug. Therefore, this bug has been downgraded to feature request.
? def <qq> := <import:org.quasiliteral.*>
? def makeTerm := <qq:term.makeTerm>
? def makeTag := <qq:astro.makeAstroTag>
? def fooTag := makeTag(-1, "foo", null)
? def fooTerm :DeepPassByCopy := makeTerm(fooTag, 3, null,
> [[].diverge()]); null
# problem: <ClassCastException: FlexListImpl doesn't coerce to a Term>
Logged In: YES
user_id=54168
Originator: YES
Oops, meant to downgrade it to feature request but leave it open.