Sorry about that, Harbs.

"I’m guessing XML(_children[i]) really was meant to be: (_children[i] as
XML)..."

That was some time ago, but I also think you are correct with the guess.

I probably had a momentary lapse of thought and forgot that
XML(something) ]
does not get ignored by @royaleignorecoercion XML, and that you need
instead to always use
"as XML"
for @royaleignorecoercion to work with XML. I think Array is similar in
this regard, with the native 'class' being a top level function.

In general I have added more of these explicit coercions because the
framework has a lot of compiler switch tweaks which sometimes makes it
unworkable to copy and paste the framework code as a monkey patch alongside
external project code. By adding the explicit coercion and the
"royaleignoring" it, there is no implicit coercion code generated under
default compiler behaviour, for example, so it makes a default compiler
settings build closer to the framework settings build of it.
I find this use of monkey patching to be any easy way to test changes to
many framework classes in the context of their actual usage, as it avoids
recompiling the library first to test small changes each time, before
ultimately bringing the changes back into the library code.








On Mon, Jun 27, 2022 at 3:19 AM Harbs <harbs.li...@gmail.com> wrote:

> I changed the class to allow subclassing.
>
> I don’t think I messed anything up. I’m guessing XML(_children[i]) really
> was meant to be: (_children[i] as XML)...
>
> Harbs
>
> > On Jun 26, 2022, at 6:09 PM, Harbs <harbs.li...@gmail.com> wrote:
> >
> > I just noticed that the changes to XML using XML.conversion broke my app.
> >
> > I have an optimization where I subclass XML and override toString and
> toXMLString so there’s no need to create, parse and convert many parts of
> XML which don’t need that.
> >
> > I call it StringXML.
> >
> > This code:
> >
> strArr.push(XML.conversion(this._children[i])._toXMLString(nextIndentLevel,
> declarations.concat(ancestors)));
> >
> > causes my instance to go through XML.conversion and ends up with this:
> return new XML(xml); where xml is a StringXML.
> >
> > That obviously does not work.
> >
> > What is the purpose of calling conversion on an XML node?
> >
> > That’s caused by
> strArr.push(XML(_children[i])._toXMLString(nextIndentLevel,declarations.concat(ancestors)));
> >
> > The compiler changes XML to XML.conversion.
> >
> > I don’t understand why that change was made.
> >
> > The code originally looked like:
> >
> >
> strArr.push(_children[i].toXMLString(nextIndentLevel,ancestors.concat(declarations)));
> >
> > Greg, any input?
>
>

Reply via email to