WSL cannot use typedefs of arrays
authorfpizlo@apple.com <fpizlo@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 18 Sep 2017 18:57:29 +0000 (18:57 +0000)
committerfpizlo@apple.com <fpizlo@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 18 Sep 2017 18:57:29 +0000 (18:57 +0000)
https://bugs.webkit.org/show_bug.cgi?id=177061

Reviewed by Saam Barati.

This test case didn't work before because of a missing visit call in Checker.

* WebGPUShadingLanguageRI/Checker.js:
(Checker.prototype.visitTypeRef):
* WebGPUShadingLanguageRI/Test.js:
(TEST_typedefArray):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@222172 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Tools/ChangeLog
Tools/WebGPUShadingLanguageRI/Checker.js
Tools/WebGPUShadingLanguageRI/Test.js

index e77c9cb..b7947ab 100644 (file)
@@ -1,3 +1,17 @@
+2017-09-18  Filip Pizlo  <fpizlo@apple.com>
+
+        WSL cannot use typedefs of arrays
+        https://bugs.webkit.org/show_bug.cgi?id=177061
+
+        Reviewed by Saam Barati.
+        
+        This test case didn't work before because of a missing visit call in Checker.
+
+        * WebGPUShadingLanguageRI/Checker.js:
+        (Checker.prototype.visitTypeRef):
+        * WebGPUShadingLanguageRI/Test.js:
+        (TEST_typedefArray):
+
 2017-09-18  Youenn Fablet  <youenn@apple.com>
 
         Allow WTF::map to use any class that is iterable and has a size getter
index 1a76bc6..d841213 100644 (file)
@@ -99,6 +99,7 @@ class Checker extends Visitor {
     {
         if (!node.type)
             throw new Error("Type reference without a type in checker: " + node + " at " + node.origin);
+        node.type.visit(this);
         this._checkTypeArguments(node.origin, node.type.typeParameters, node.typeArguments);
     }
     
index 1173295..75adf81 100644 (file)
@@ -3635,6 +3635,19 @@ function TEST_booleanMath()
     checkBool(program, callFunction(program, "foo8", [], []), false);
 }
 
+function TEST_typedefArray()
+{
+    let program = doPrep(`
+        typedef ArrayTypedef = int[2];
+        int foo()
+        {
+            ArrayTypedef arrayTypedef;
+            return arrayTypedef[0];
+        }
+    `);
+    checkInt(program, callFunction(program, "foo", [], []), 0);
+}
+
 let filter = /.*/; // run everything by default
 if (this["arguments"]) {
     for (let i = 0; i < arguments.length; i++) {