There's some tension between the user-class compiler and 'the old way'. The user-class compiler wants to take attributes that don't have setters and just declare them in the JS2 class. But, as a result, these attributes _don't_ show up in initargs. Which will screw any `construct` method that wants to look at one of these args. ('The old way' would have left these args in init args, so all constructors are used to having to look there, er, except if they were looking for an attribute that was declared in an LFC class, because those would be in the instance already, not in the init args.)

The particular screw with the animation example is that animators shove `ignoreplacement` onto their init args (so they affect their lexical parent), but it gets plucked out into a declaration before LzNode#construct can see it... Oy.

I'm trying to think how to fix this. It's tied up with the fact that the compiler does not know which things have setters, but it is also an inconsistency between LFC classes and user classes that is probably a bad thing. It really sucks that we have this construct method that lets a subclass mess with initargs. <bleah! />

Reply via email to