In application development I would normally do this type of thing inside CONFIG::dev blocks, or similar, so having the possibility, as described, to exclude development-only code (extra type checking, null checks etc) would definitely also be helpful PAYG-wise from within the framework.
The general issue here I think is that using this approach for the framework requires a dev build of the framework and a separate produciton-ready build, so the approach of using GCC to avoid this via annotations sounds like a great solution to that. I don't know how we could do this on the swf side though without having two framework builds? btw React/React-Native has something like this as well iirc, including removal of a bunch of runtime type-checking support in the release builds, so having something like this seems like it would be a good thing to for comparison with others. I terms of the 'type check' in this case, personally I think it could be as simple as ba = bytes ? bytes as ArrayBuffer : new ArrayBuffer(0); if (bytes && !ba) throw new Error('unexpected constructor argument type'); I think that could be used for both swf and js. On Wed, Jul 12, 2017 at 8:56 AM, Alex Harui <aha...@adobe.com.invalid> wrote: > I've mentioned the notion of debug-mode beads on the mailing list a couple > of times. It would be great to see this idea explored more. > > By definition, now that you've debugged your code, any type-checking code > path becomes unused in production, which is what we don't want. But > adding code paths that go away in production, or swapping in different > beads during development that have more code paths that check for common > mistakes is certainly within the charter. We want to maximize developer > productivity. > > I think Google Closure Compiler supports a debug flag you can use in > COMPILE::JS blocks that gets dropped in production. If we need to mimic a > similar flag for SWF so code can compile outside of COMPILE::JS blocks > that might be ok. > > -Alex > > On 7/11/17, 1:07 PM, "Harbs" <harbs.li...@gmail.com> wrote: > > >I just wasted over an hour because I was initializing a BinaryData with a > >string instead of an ArrayBuffer. > > > >I would like to add a typecheck to the bytes argument in the BinaryData > >constructor to throw an error if something other than an ArrayBuffer is > >provided. We cannot use strict typing to catch this in the compiler, > >because the argument is different for SWF and JS. Is this a violation of > >PAYG? It’s sort-of just in case code, but not really because it’s > >protecting against errors. > > > >Thoughts? Other solutions? > >Harbs > >