- From: Boris Zbarsky <notifications@github.com>
- Date: Thu, 05 Sep 2019 06:59:29 -0700
- To: heycam/webidl <webidl@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
Received on Thursday, 5 September 2019 13:59:51 UTC
Consider this IDL: ``` dictionary X { required boolean myVal; }; interface Foo { void bar(optional X arg); }; ``` This is currently allowed by the spec. But in terms of behavior, what does the implementation of `bar` do if the dictionary is _not_ passed? Specifically, what does it use in the place where it was going to use `myVal`? I can see a few options: 1) It treats it effectively as a tristate, with no value if the dictionary was not passed. But then it could just make it optional in the dictionary too. 2) It assumes a value for `myVal` (`true` or `false`). Then it could just make it optional in the dictionary and give it a default value. Either way, it doesn't make sense to have this dictionary member be required in this situation. Hence I would propose that we disallow optional arguments whose type is a dictionary with required members. It might still make sense to have optional dictionary members whose type is a dictionary that has required members, I guess... @domenic @annevk @saschanaz @Ms2ger thoughts? -- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/heycam/webidl/issues/793
Received on Thursday, 5 September 2019 13:59:51 UTC