I have just landed the final CL to eliminate [TypeChecking=Interface] from our IDL by making strict type checking the default. Many thanks to
j...@opera.com and reviewers for the many, many CLs leading up to this.
The old default is now [LegacyInterfaceTypeChecking], which has been sprinkled as necessary to not change the generated code. This old behavior is to simply pass along null to the implementation if the passed value wasn't of the right type, making everything implicitly nullable and silently treating the wrong type as null. As the default, it's been unknowingly used even in new code.
Philip