[WSL] Rationalize how protocol inheritance deals with type parameters
authorfpizlo@apple.com <fpizlo@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 7 Sep 2017 17:53:50 +0000 (17:53 +0000)
committerfpizlo@apple.com <fpizlo@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 7 Sep 2017 17:53:50 +0000 (17:53 +0000)
commit526d9379327bcdaa1e24dd458fc197406f4a12db
tree60b4b04fa877fce57b887cb179a3c428c4cbcc0d
parent4550b68a50e805c6954467aa295a1bda0cbafdd2
[WSL] Rationalize how protocol inheritance deals with type parameters
https://bugs.webkit.org/show_bug.cgi?id=176334

Reviewed by Mark Lam.

This adds a bunch of tests for structs, protocols, and functions interacting in interesting
ways. The most complex of these tests triggers the case where the protocol contains a function
with one type parameter and the real function has more than one. This should give a WTypeError,
and now it does.

* WebGPUShadingLanguageRI/ProtocolDecl.js:
(ProtocolDecl.prototype.hasHeir): Fix the handling of a mismatch of number of type parameters by actually passing the type parameters and then correctly handling the error.
* WebGPUShadingLanguageRI/Test.js: Add a bunch of tests for this case and a lot of other protocol cases.
(TEST_protocolMonoSigPolyDef):
(TEST_protocolPolySigPolyDef):
(TEST_protocolDoublePolySigDoublePolyDef):
(TEST_protocolDoublePolySigDoublePolyDefExplicit):
(TEST_protocolMonoPolySigDoublePolyDefExplicit):
* WebGPUShadingLanguageRI/TypeVariable.js:
(TypeVariable.prototype.get origin): This wasn't implemented before, which made error reporting harder.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@221740 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Tools/ChangeLog
Tools/WebGPUShadingLanguageRI/ProtocolDecl.js
Tools/WebGPUShadingLanguageRI/Test.js
Tools/WebGPUShadingLanguageRI/TypeVariable.js