The valid annotations are [Throws], [GetterThrows], and [SetterThrows], which can all either take no value or
be set to MainThread or Workers if the throwing behavior is only happening on main thread or in workers
There are several parts here:
1) Enforce the requirement that dictionary arguments not followed by a required argument are optional.
2) Make dictionaries no longer be distinguishable from nullable types.
3) Disallow dictionaries or unions containing dictionaries inside a nullable type.
4) Force optional dictionaries to have a default value of null so that codegen doesn't have to worry about dealing with
optional arguments that have no default value in the IDL but need to be treated as if they were null.
There are several parts here:
1) Enforce the requirement that dictionary arguments not followed by a required argument are optional.
2) Make dictionaries no longer be distinguishable from nullable types.
3) Disallow dictionaries or unions containing dictionaries inside a nullable type.
4) Force optional dictionaries to have a default value of null so that codegen doesn't have to worry about dealing with
optional arguments that have no default value in the IDL but need to be treated as if they were null.
In this new setup, there are three new extended attributes: Infallible,
GetterInfallible, SetterInfallible. The first one applies to both methods and
attributes, while the last two apply only to attributes. Each one can be
either set with no value specified (in which case it applies both on main
thread and in workers) or can be set to MainThread or Workers to limit where it
applies.
If Infallible is set on an attribute, then GetterInfallible and
SetterInfallible will be ignored. So if you want to specify, for example, an
attribute that's infallible on the main thread and has an infallible getter in
workers, the right way to do that is [GetterInfallible,
SetterInfallible=MainThread].