Re: [heycam/webidl] Sort out when dictionaries and records should have default values (#76)

> similarly to how we require dictionaries to always be optional arguments

But we don't. We can write:
```js
dictionary Foo { required long foo1; };
dictionary Bar { required Foo myFoo; }; 

void doFoo(Foo myFoo);
void doStuff(Bar myBar);
```

`doFoo()` throws `TypeError: Not enough arguments to Jib.doFoo`.
`doFoo({})` throws `TypeError: Missing required 'foo1' member of Foo`.
`doStuff()` throws `TypeError: Not enough arguments to Jib.doStuff`.
`doStuff({})` throws `TypeError: Missing required 'myFoo' member of Bar`.
`doStuff({myFoo: {}})` throws `TypeError: Missing required 'foo1' member of Foo`.
`doStuff({myFoo: {foo1: 1}})` succeeds.


> I don't think there's a good reason to make dictionary handling inconsistent between it being an argument and a member of another dictionary.

Function arguments are required by default whereas dictionary members are optional by default, so I don't see what consistency we'd be upholding.

At least two specs interpret:
```js
dictionary Foo { required long foo1; };
dictionary Bar { Foo myFoo; };
```
to mean `doStuff()` should succeed. Exhibit A: [PaymentDetailsModifier](https://w3c.github.io/payment-request/#paymentdetailsmodifier-dictionary), Exhibit B: [MediaConfiguration](https://wicg.github.io/media-capabilities/#dictdef-mediaconfiguration):
```
dictionary MediaConfiguration {
  VideoConfiguration video;
  AudioConfiguration audio;
};
```
[says](https://wicg.github.io/media-capabilities/#dom-mediacapabilities-decodinginfo%E2%91%A0):

*"If configuration.video is [present](https://heycam.github.io/webidl/#present) and is [not a valid video configuration](https://wicg.github.io/media-capabilities/#valid-video-configuration), return a Promise rejected with a TypeError. "*

I.e. they expect `{ audio: {contentType: 'audio/webm; codecs=opus'}}` to not throw TypeError,
and `{ audio: {contentType: 'audio/webm; codecs=opus'}, video: {}}` to throw TypeError.




-- 
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/76#issuecomment-394027017

Received on Friday, 1 June 2018 22:35:52 UTC