Err, so it seems a side-effect of this (which wasn't very obvious to me when this was posted) is that it's now no longer possible to change a .idl file for a JS component in an artifact build and have it "work".

Specifically, I ran into this when changing the return type of an extant idl method for nsBlocklistService.js from `unsigned long` to `jsval` (making the method async). I spent a good few hours being puzzled as to how callsites using `await` were getting 0 when the callee was (asynchronously) returning non-zero things, and why the logs from the caller and callee were out of order. Turns out, xpconnect and friends will happily silently convert things (in this case, a Promise object) to match the declared return type (ending up with NaN/0).

TL;DR: the effect on artifact build users seems pretty unfortunate. Given that we're also not supposed to be making new JS-implemented webidl things, what's the long-term plan for artifact build support for changing JS-implemented interfaces?

~ Gijs

On 04/04/2018 21:10, Andrew McCreight wrote:
I recently landed bug 1438688, which makes it so that we don't ship XPT
files any more, so they don't need to be added to a package-manifest.in
file. (Instead, the XPT information is compiled into the binary.) I think
it'll give you an error if you add it anyways, but I haven't tested it. We
still use XPT files during the build process, so you'll see them appear in
your build log spam as usual.

Andrew


_______________________________________________
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform

Reply via email to