What about a different approach? Maybe we can *disable* public vars in MXML, Binding and States?
If someone tries to use public vars in those contexts, they would get a compiler error. Only setters would show up as sett-able attributes in MXML. If we can do that, we can probably get rid of @exports for pubic vars which would probably make apps smaller. Thoughts? Harbs > On Feb 20, 2018, at 8:23 PM, Alex Harui <[email protected]> wrote: > > As a said, it mainly matters for MXML, Binding, and States. > > I believe it will matter in accessing modules and a module accessing the > thing that loaded the module, and any other access by the original > property name. > > I think it will matter in accessing Value Objects that are instantiated in > the code instead of externally if that Value Object is not [Bindable]. > IOW, if you take some JSON and convert it to a plain Objects and tell the > compiler that it is one of your Value Objects, that should work, but if > you then create a new instance of a Value Object and set its properties in > the code, I think that won't always work. > > Maybe we'll end up turning this flag off by default in MXMLC and on by > default for COMPC or something like that. The goal is to catch places in > the framework where it could matter to increase the chances that the > js-release will work on the first try. The sweep definitely caught some > things that needed to be changed. I might have suppressed some warnings > on things that will need to be changed, not sure. > > Of course, I could be wrong... > -Alex > > On 2/20/18, 10:07 AM, "Gabe Harbs" <[email protected] > <mailto:[email protected]>> wrote: > >> I have over 700 public vars in my app and it handles minification just >> fine. >> >> AFAIK, public vars are only a problem for classes and properties used in >> MXML. Am I wrong? >> >>> On Feb 20, 2018, at 7:26 PM, Alex Harui <[email protected]> >>> wrote: >>> >>> Hi, >>> >>> I just pushed compiler changes that will default to reporting a new >>> warning if you have public var in your Royale code. Public methods, >>> getters and setters are fine, but public vars do not handle >>> minification. >>> >>> I also just pushed a sweep of the framework code to eliminate public var >>> usage or add a directive to suppress the warning. At some point in >>> time I >>> will probably sweep the examples, but I'm letting it spit a few warnings >>> for now. I hope to remove the * selector this week and that will >>> require >>> another sweep of the examples. >>> >>> Not using public vars should increase the changes that your minified >>> code >>> will run. I put some information about public var usage in the wiki. >>> I'm >>> not sure if or where it should go in the user doc. Users may be able >>> survive with more public vars since it mainly matters for vars used in >>> MXML, Binding, and States. But we want the framework to be clean, so if >>> you see a warning from your framework code, please clean it up. >>> >>> >>> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.c >>> <https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.c> >>> om%2Fapache%2Froyale-asjs%2Fwiki%2FPublic-Variables&data=02%7C01%7Caharui >>> %40adobe.com >>> <http://40adobe.com/>%7C93e6c53f985c4a6ae7d408d5788cd84a%7Cfa7b1b5a7b34438794aed2c >>> 178decee1%7C0%7C0%7C636547468674049910&sdata=Vxx36hMI3fS1q8PT34WnMWlniF3a >>> LNONqTmEGghTUf0%3D&reserved=0 >>> >>> Thanks, >>> -Alex
