[GLib] Let WebCore know of low power situations
[WebKit-https.git] / Tools / ChangeLog
1 2017-10-03  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>
2
3         [GLib] Let WebCore know of low power situations
4         https://bugs.webkit.org/show_bug.cgi?id=177810
5
6         Reviewed by Carlos Garcia Campos.
7
8         * gtk/install-dependencies: add upower-glib dev packages for Debian, Arch and Fedora.
9
10 2017-10-03  Saam Barati  <sbarati@apple.com>
11
12         Implement polymorphic prototypes
13         https://bugs.webkit.org/show_bug.cgi?id=176391
14
15         Reviewed by Filip Pizlo.
16
17         * Scripts/run-jsc-stress-tests:
18
19 2017-10-03  Myles C. Maxfield  <mmaxfield@apple.com> 
20
21         Create a SPIR-V assembler 
22         https://bugs.webkit.org/show_bug.cgi?id=177726 
23
24         Reviewed by Filip Pizlo. 
25
26         Khronos has released a json file containing every SPIR-V opcode and operand at 
27         https://github.com/KhronosGroup/SPIRV-Headers/blob/master/include/spirv/1.2/spirv.core.grammar.json 
28         This patch creates a function which loads this file (via the fetch API), parses it, and creates
29         an object which holds two things: 
30         - For each opcode, a class which accepts the appropriate operands 
31         - For each enum type, an object which holds each enum value 
32         The constructor for each opcode is smart enough to do some basic type-checking of the argument, 
33         according to the types listed in Khronos's json file. 
34
35         This patch also includes an example .html file which outputs a dummy SPIR-V program, 
36         which happens to be compatible with the SPIR-V demo at 
37         https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/blob/master/demos/cube.cpp 
38         If you modify this demo to use the generated SPIR-V program, you can see the result in 
39         action.
40
41         This patch also commits a copy of Khronos's json file mentioned above. This isn't the first 
42         Khronos file we've committed into our repository with this license, so there shouldn't be any 
43         problems there. 
44
45         * WebGPUShadingLanguageRI/SPIR-V.js: Added. 
46         (SPIRV.): 
47         (SPIRVAssembler): 
48         (SPIRVAssembler.prototype.append): 
49         (SPIRVAssembler.prototype.get size): 
50         (SPIRVAssembler.prototype.get storage): 
51         (SPIRVAssembler.prototype.get result): 
52         * WebGPUShadingLanguageRI/SPIRV.html: Added. 
53         * WebGPUShadingLanguageRI/spirv.core.grammar.json: Added. 
54
55 2017-10-03  Chris Dumez  <cdumez@apple.com>
56
57         SharedStringHashStore should support removing hashes
58         https://bugs.webkit.org/show_bug.cgi?id=177770
59
60         Reviewed by Alex Christensen.
61
62         Add API test coverage.
63
64         * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
65         * TestWebKitAPI/Tests/WebKitCocoa/VisitedLinkStore.mm: Added.
66         (TestWebKitAPI::TEST):
67
68 2017-10-03  Dewei Zhu  <dewei_zhu@apple.com>
69
70         Fix missing import for BenchmarkRunner.
71         https://bugs.webkit.org/show_bug.cgi?id=177842
72
73         Reviewed by Ryosuke Niwa.
74
75         'show_results' requires BenchmarkRunner.
76
77         * Scripts/webkitpy/benchmark_runner/run_benchmark.py:
78
79 2017-10-03  Olivier Blin  <olivier.blin@softathome.com>
80
81         [WPE] Bump deps to add support for xdg-shell-unstable-v6 protocol
82         https://bugs.webkit.org/show_bug.cgi?id=177820
83
84         Reviewed by Žan Doberšek.
85
86         gnome-shell does not advertize the xdg-shell protocol anymore, but xdg-shell-unstable-v6 instead.
87         Support has been added in WPEBackend-mesa, we need to update the requirements.
88         wayland-1.10 is needed for wl_proxy_get_version(), used in the generated headers.
89
90         * wpe/jhbuild.modules:
91
92 2017-10-03  Alex Christensen  <achristensen@webkit.org>
93
94         Add ObjC SPI equivalent to WKPageLoaderClient.willGoToBackForwardListItem
95         https://bugs.webkit.org/show_bug.cgi?id=177825
96         <rdar://problem/22387505>
97
98         Reviewed by Tim Horton.
99
100         * TestWebKitAPI/Tests/WebKitCocoa/Navigation.mm:
101         (-[BackForwardDelegate _webView:willGoToBackForwardListItem:inPageCache:]):
102         (-[BackForwardDelegate webView:didFinishNavigation:]):
103         (TEST):
104
105 2017-10-03  Antti Koivisto  <antti@apple.com>
106
107         Allow assigning WeakPtr<Derived> to WeakPtr<Base>
108         https://bugs.webkit.org/show_bug.cgi?id=177817
109
110         Reviewed by Geoff Garen.
111
112         * TestWebKitAPI/Tests/WTF/WeakPtr.cpp:
113         (TestWebKitAPI::Base::weakPtrFactory):
114         (TestWebKitAPI::TEST):
115
116 2017-10-03  Youenn Fablet  <youenn@apple.com>
117
118         Remove no longer needed WebRTC build infrastructure
119         https://bugs.webkit.org/show_bug.cgi?id=177756
120
121         Reviewed by Alejandro G. Castro.
122
123         * Scripts/generate-libwebrtc-cmake: Removed.
124         * Scripts/webkitpy/libwebrtc/__init__.py: Removed.
125         * Scripts/webkitpy/libwebrtc/generate_cmake.py: Removed.
126
127 2017-10-03  Joanmarie Diggs  <jdiggs@igalia.com>
128
129         AX: [ATK] ARIA drag-and-drop attribute values should be exposed via AtkObject attributes
130         https://bugs.webkit.org/show_bug.cgi?id=177763
131
132         Reviewed by Chris Fleizach.
133
134         Implement ariaIsGrabbed() and ariaDropEffects() for ATK.
135
136         * WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
137         (WTR::AccessibilityUIElement::ariaIsGrabbed const):
138         (WTR::AccessibilityUIElement::ariaDropEffects const):
139
140 2017-10-02  Myles C. Maxfield  <mmaxfield@apple.com>
141
142         Make WSL demo compatible with Microsoft Edge
143         https://bugs.webkit.org/show_bug.cgi?id=177643
144
145         Reviewed by Saam Barati.
146
147         This patch does two things. The first is it migrates a loop over ParentNode.children to a legacy style loop
148         because Microsoft Edge throws an exception when trying to use a for...of loop with it. This patch also hides
149         the compilation behind a setTimeout(0) so there is some indication that something is happening during a
150         compile.
151
152
153         * Tools/WebGPUShadingLanguageRI/index.html:
154
155 2017-10-02  Joanmarie Diggs  <jdiggs@igalia.com>
156
157         AX: [ATK] The value of aria-level is not exposed on non-heading roles
158         https://bugs.webkit.org/show_bug.cgi?id=177775
159
160         Reviewed by Chris Fleizach.
161
162         * WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
163         (WTR::AccessibilityUIElement::hierarchicalLevel const):
164
165 2017-10-02  Geoffrey Garen  <ggaren@apple.com>
166
167         WeakPtr should have a move constructor
168         https://bugs.webkit.org/show_bug.cgi?id=177789
169
170         Reviewed by Chris Dumez.
171
172         Chris made me write an API test. It wasn't that painful.
173
174         * TestWebKitAPI/Tests/WTF/WeakPtr.cpp:
175         (TestWebKitAPI::TEST):
176
177 2017-10-02  Filip Pizlo  <fpizlo@apple.com>
178
179         WSL ^ should be *
180         https://bugs.webkit.org/show_bug.cgi?id=177705
181
182         Rubber stamped by Keith Miller.
183         
184         When I first wrote the prototype, I thought it would be cool to use ^ for pointers. Nobody agrees. I've
185         gotten so much feedback to use *. This changes pointers to use *.
186
187         * WebGPUShadingLanguageRI/DereferenceExpression.js:
188         (DereferenceExpression.prototype.toString):
189         (DereferenceExpression):
190         * WebGPUShadingLanguageRI/Intrinsics.js:
191         (Intrinsics):
192         * WebGPUShadingLanguageRI/Parse.js:
193         (parseType):
194         (parsePossiblePrefix):
195         * WebGPUShadingLanguageRI/PtrType.js:
196         (PtrType.prototype.toString):
197         (PtrType):
198         * WebGPUShadingLanguageRI/StandardLibrary.js:
199         * WebGPUShadingLanguageRI/Test.js:
200         (tests.simpleDereference):
201         (tests.dereferenceStore):
202         (tests.simpleMakePtr):
203         (tests.loadNull):
204         (tests.storeNull):
205         (tests.returnNull):
206         (tests.dereferenceDefaultNull):
207         (tests.defaultInitializedNull):
208         (tests.passNullToPtrMonomorphic):
209         (tests.passNullToPtrPolymorphic):
210         (tests.passNullAndNotNull):
211         (tests.passNullAndNotNullFullPoly):
212         (tests.passNullAndNotNullFullPolyReverse):
213         (tests.chainGeneric):
214         (tests.chainStruct):
215         (tests.chainStructNewlyValid):
216         (tests.chainStructDevice):
217         (tests.paramChainStructDevice):
218         (tests.simpleProtocolExtends):
219         (tests.protocolExtendsTwo):
220         (tests.overrideSubscriptStruct):
221         (tests.overrideSubscriptStructAndDoStores):
222         (tests.overrideSubscriptStructAndUsePointers):
223         (tests.overrideSubscriptStructAndUsePointersIncorrectly):
224         (tests.makeArrayRefFromPointer):
225         (tests.nonArrayRefArrayLengthFail):
226         (tests.constexprIsNotLValuePtr):
227         (tests.genericAccessors):
228         (tests.nestedSubscriptLValueEmulationSimple):
229         (tests.nestedSubscriptLValueEmulationGeneric):
230         (tests.shaderTypes):
231         (tests.enumPtrBase):
232         (tests.mutuallyRecursiveStructWithPointersBroken):
233         (tests.mutuallyRecursiveStructWithPointers):
234         (tests.linkedList):
235         (tests.pointerToPointer):
236         (tests.pointerGetter):
237         (tests.operatorCastWithTypeVariableInferredFromReturnType):
238         (tests.loneSetterPointer):
239         (tests.anderWithNothingWrong):
240         (tests.anderWithWrongNumberOfArguments):
241         (tests.anderDoesntReturnPointer):
242         (tests.anderDoesntTakeReference):
243         (tests.anderWithArrayRef):
244         (tests.pointerIndexGetter):
245         (tests.loneIndexSetterPointer):
246         (tests.indexAnderWithNothingWrong):
247         (tests.indexAnderWithWrongNumberOfArguments):
248         (tests.indexAnderDoesntReturnPointer):
249         (tests.indexAnderDoesntTakeReference):
250         (tests.indexAnderWithArrayRef):
251         (tests.devicePtrPtr):
252         (tests.threadgroupPtrPtr):
253         (tests.constantPtrPtr):
254         (tests.pointerIndexGetterInProtocol):
255         (tests.loneIndexSetterPointerInProtocol):
256         (tests.indexAnderWithNothingWrongInProtocol):
257         (tests.indexAnderWithWrongNumberOfArgumentsInProtocol):
258         (tests.indexAnderDoesntReturnPointerInProtocol):
259         (tests.indexAnderDoesntTakeReferenceInProtocol):
260         (tests.indexAnderWithArrayRefInProtocol):
261         (tests.andReturnedArrayRef):
262
263 2017-10-02  Filip Pizlo  <fpizlo@apple.com>
264
265         WSL should be fine with &foo()[i] if foo() returns a []
266         https://bugs.webkit.org/show_bug.cgi?id=177704
267
268         Reviewed by Saam Barati.
269         
270         Previously, we'd determine if a property access expression (base.field or base[index]) was an lvalue by
271         asking if its base was an lvalue. This is right in all cases except if the base is of type []. Then, the
272         property access expression is an lvalue so long as there is a setter or ander.
273         
274         This fixes the issue and adds a test.
275         
276         Also, this makes error messages in the case that something is not an lvalue a lot better. If something
277         is not an lvalue because we could not find anders or setters, then we will tell you why we could not
278         find them.
279
280         * WebGPUShadingLanguageRI/Checker.js:
281         (Checker.prototype.visitAssignment):
282         (Checker.prototype.visitReadModifyWriteExpression):
283         (Checker.prototype.visitMakePtrExpression):
284         (Checker.prototype._finishVisitingPropertyAccess):
285         * WebGPUShadingLanguageRI/DotExpression.js:
286         (DotExpression.prototype.get fieldName):
287         (DotExpression.prototype.get isLValue): Deleted.
288         (DotExpression.prototype.get addressSpace): Deleted.
289         * WebGPUShadingLanguageRI/IndexExpression.js:
290         (IndexExpression.prototype.get index):
291         (IndexExpression.prototype.get isLValue): Deleted.
292         (IndexExpression.prototype.get addressSpace): Deleted.
293         * WebGPUShadingLanguageRI/PropertyAccessExpression.js:
294         (PropertyAccessExpression):
295         (PropertyAccessExpression.prototype.get isLValue):
296         (PropertyAccessExpression.prototype.set isLValue):
297         * WebGPUShadingLanguageRI/PropertyResolver.js:
298         (PropertyResolver.prototype._visitRValuesWithinLValue.RValueFinder.prototype.visitMakeArrayRefExpression):
299         (PropertyResolver.prototype._visitRValuesWithinLValue.RValueFinder):
300         (PropertyResolver.prototype._visitRValuesWithinLValue):
301         * WebGPUShadingLanguageRI/Test.js:
302         (tests.storeNullArrayRef):
303         (tests.andReturnedArrayRef):
304
305 2017-10-02  Wenson Hsieh  <wenson_hsieh@apple.com>
306
307         Guard iOS webkitGetAsEntry API tests on older iOS versions
308
309         Unreviewed test gardening. After r222688, these tests require custom pasteboard data to be enabled by default,
310         so don't run them against shipping iOS.
311
312         * TestWebKitAPI/Tests/ios/DataInteractionTests.mm:
313
314 2017-10-02  Carlos Garcia Campos  <cgarcia@igalia.com>
315
316         [WPE][GTK] Crash in webkit_web_resource_get_data_finish()
317         https://bugs.webkit.org/show_bug.cgi?id=177107
318
319         Reviewed by Michael Catanzaro.
320
321         Add a test case to check we handle errors when webkit_web_resource_get_data() fails.
322
323         * TestWebKitAPI/Tests/WebKitGLib/TestResources.cpp:
324         (webViewloadChanged):
325         (testWebResourceGetDataError):
326         (beforeAll):
327
328 2017-10-02  Alex Christensen  <achristensen@webkit.org>
329
330         Fix build after r222715
331         https://bugs.webkit.org/show_bug.cgi?id=177697
332
333         * TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm:
334         (TEST):
335         Use the public API instead of the removed SPI.
336
337 2017-10-02  Alex Christensen  <achristensen@webkit.org>
338
339         REGRESSION(r214201): WebProcess hangs during policy decisions
340         https://bugs.webkit.org/show_bug.cgi?id=177590
341         <rdar://problem/33362929>
342
343         Reviewed by Andy Estes.
344
345         * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
346         * TestWebKitAPI/Tests/WebKitCocoa/JavaScriptDuringNavigation.mm: Added.
347         (-[JSNavigationDelegate webView:didFinishNavigation:]):
348         (-[JSNavigationDelegate webView:decidePolicyForNavigationAction:decisionHandler:]):
349         (-[JSNavigationDelegate webView:decidePolicyForNavigationResponse:decisionHandler:]):
350         (-[JSNavigationDelegate webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:]):
351         (TEST):
352
353 2017-10-02  Jonathan Bedard  <jbedard@apple.com>
354
355         Log stack-trace for run-webkit-tests when interrupted
356         https://bugs.webkit.org/show_bug.cgi?id=176393
357         <rdar://problem/34262310>
358
359         Reviewed by Darin Adler.
360
361         When run-webkit-tests is stuck, it is difficult to immediately tell
362         why. Saving a stack-trace when run-webkit-tests is terminated
363         or stopped with CNTRL-C will make such issues easier to debug.
364
365         * Scripts/webkitpy/common/interupt_debugging.py: Added.
366         (log_stack_trace): Given a Python frame object, log a stack trace to
367         the provided file.
368         (log_stack_trace_on_term): Attach a listener to SIGTERM so that a
369         stack-trace can be logged when a program is terminated.
370         (log_stack_trace_on_cntrl_c): Attach a listener to SIGINT so that a
371         stack-trace can be logged when a program is CNTRL-Ced. 
372         * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
373         (main): Set handlers to log stack trace on interruption.
374
375 2017-10-02  Michael Catanzaro  <mcatanzaro@igalia.com>
376
377         Remove ENABLE_CSS_REGIONS
378         https://bugs.webkit.org/show_bug.cgi?id=177689
379
380         Reviewed by Darin Adler.
381
382         * Scripts/webkitperl/FeatureList.pm:
383
384 2017-09-30  Carlos Garcia Campos  <cgarcia@igalia.com>
385
386         Unreviewed. Upgrade webkitgtk-test-fonts to version 0.0.7.
387
388         This version upgrades liberation fonts to version 2, that has a wider glyph coverage.
389
390         * gtk/jhbuild.modules:
391
392 2017-09-29  Alex Christensen  <achristensen@webkit.org>
393
394         Expose WebPreferences::webGLEnabled through WKPreferences
395         https://bugs.webkit.org/show_bug.cgi?id=177692
396         <rdar://problem/24110556>
397
398         Reviewed by Andy Estes.
399
400         * TestWebKitAPI/Tests/WebKitCocoa/Preferences.mm:
401         (-[AlertSaver alert]):
402         (-[AlertSaver webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:]):
403         (TEST):
404
405 2017-09-29  Alex Christensen  <achristensen@webkit.org>
406
407         Fix WKWebViewConfigurationPrivate after r222663
408         https://bugs.webkit.org/show_bug.cgi?id=177644
409
410         * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
411         * TestWebKitAPI/Tests/WebKitCocoa/Configuration.mm: Added.
412         (TEST):
413
414 2017-09-28  Ryosuke Niwa  <rniwa@webkit.org>
415
416         Image pasting is not working on tineye.com / gmail.com / GitHub.com due to lack of support for DataTransfer.items
417         https://bugs.webkit.org/show_bug.cgi?id=170449
418         <rdar://problem/31432525>
419
420         Reviewed by Wenson Hsieh.
421
422         Added an API test to paste an image from pasteboard. The test is shared between iOS and macOS.
423
424         The tests to paste image files are only enabled on macOS since putting files into pasteboard isn't a thing on iOS.
425
426         * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
427         * TestWebKitAPI/Tests/WebKitCocoa/PasteImage.mm: Added.
428         (writeImageDataToPasteboard):
429         (writeBundleFileToPasteboard):
430         * TestWebKitAPI/Tests/WebKitCocoa/paste-image.html: Added.
431         * TestWebKitAPI/Tests/WebKitCocoa/sunset-in-cupertino-100px.tiff: Added.
432         * TestWebKitAPI/Tests/WebKitCocoa/sunset-in-cupertino-200px.png: Added.
433         * TestWebKitAPI/Tests/WebKitCocoa/sunset-in-cupertino-400px.gif: Added.
434         * TestWebKitAPI/Tests/WebKitCocoa/sunset-in-cupertino-600px.jpg: Added.
435         * TestWebKitAPI/Tests/ios/DataInteractionTests.mm: Rebaselined the test now that types contain "Files".
436
437 2017-09-29  Wenson Hsieh  <wenson_hsieh@apple.com>
438
439         [iOS WK2] Implement -[WKContentView hasText] for compatibility with the UITextInput protocol
440         https://bugs.webkit.org/show_bug.cgi?id=177662
441         <rdar://problem/33410373>
442
443         Reviewed by Tim Horton.
444
445         Add EditorState API tests to check that the value of -[WKContentView hasText] is correct when editing both plain
446         and rich text areas.
447
448         * TestWebKitAPI/EditingTestHarness.h:
449         * TestWebKitAPI/EditingTestHarness.mm:
450         (-[EditingTestHarness insertParagraph]):
451         (-[EditingTestHarness insertText:]):
452         (-[EditingTestHarness insertHTML:]):
453         (-[EditingTestHarness selectAll]):
454         (-[EditingTestHarness deleteBackwards]):
455         * TestWebKitAPI/Tests/WebKitCocoa/EditorStateTests.mm:
456
457         Add versions of EditingTestHarness helpers that don't require us to expect any editor state after executing the
458         edit command.
459
460         (TestWebKitAPI::checkContentViewHasTextWithFailureDescription):
461         (TestWebKitAPI::TEST):
462         * TestWebKitAPI/cocoa/TestWKWebView.h:
463         * TestWebKitAPI/cocoa/TestWKWebView.mm:
464         (-[TestWKWebView textInputContentView]):
465
466 2017-09-29  Charles Turner  <cturner@igalia.com>
467
468         Update my status.
469
470         Unreviewed.
471
472         * Scripts/webkitpy/common/config/contributors.json:
473
474 2017-09-28  Commit Queue  <commit-queue@webkit.org>
475
476         Unreviewed, rolling out r222639.
477         https://bugs.webkit.org/show_bug.cgi?id=177630
478
479         Breaks AppleWin build (Requested by dolmstead on #webkit).
480
481         Reverted changeset:
482
483         "[WinCairo][MiniBrowser] Add ca-bundle to display secure
484         pages."
485         https://bugs.webkit.org/show_bug.cgi?id=168486
486         http://trac.webkit.org/changeset/222639
487
488 2017-09-28  Joanmarie Diggs  <jdiggs@igalia.com>
489
490         AX: [ATK] object:state-changed notifications missing for multiple ARIA attributes
491         https://bugs.webkit.org/show_bug.cgi?id=177542
492
493         Add platform support for the notifications. Also add support for getting the
494         boolean argument indicating whether the state has been set or unset.
495
496         Reviewed by Chris Fleizach.
497
498         * WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.cpp:
499
500 2017-09-28  Basuke Suzuki  <Basuke.Suzuki@sony.com>
501
502         [WinCairo][MiniBrowser] Add ca-bundle to display secure pages.
503         Copy cacert.pem file into bundle directory.
504         https://bugs.webkit.org/show_bug.cgi?id=168486
505
506         Reviewed by Brent Fulgham.
507
508         * MiniBrowser/win/CMakeLists.txt:
509
510 2017-09-28  Lucas Forschler  <lforschler@apple.com>
511
512         check in AWS Lambda code used for WebKitArchiveSupport
513         https://bugs.webkit.org/show_bug.cgi?id=177614
514         
515         Rubber-stamped by Alexey Proskuryakov.
516
517         * WebKitArchiveSupport/lambda: Added.
518         * WebKitArchiveSupport/lambda/delete-minified-s3-archive-from-dynamodb.py: Added.
519         (lambda_handler):
520         * WebKitArchiveSupport/lambda/delete-s3-archive-from-dynamodb.py: Added.
521         (lambda_handler):
522         * WebKitArchiveSupport/lambda/register-archive-in-dynamodb.py: Added.
523         (lambda_handler):
524         * WebKitArchiveSupport/lambda/register-minified-s3-archive-in-dynamodb.py: Added.
525         (lambda_handler):
526
527 2017-09-28  Jiewen Tan  <jiewen_tan@apple.com>
528
529         WeakPtrFactory should allow downcasting
530         https://bugs.webkit.org/show_bug.cgi?id=177389
531         <rdar://problem/34604174>
532
533         Reviewed by Geoffrey Garen.
534
535         * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
536         * TestWebKitAPI/Tests/WTF/WeakPtr.cpp:
537         (TestWebKitAPI::Base::foo):
538         (TestWebKitAPI::Base::createWeakPtr):
539         (TestWebKitAPI::Derived::foo):
540         (TestWebKitAPI::TEST):
541
542 2017-09-28  Megan Gardner  <megan_gardner@apple.com>
543
544         Add debug flag to WebKitTestRunner to show where touches are being generated
545         https://bugs.webkit.org/show_bug.cgi?id=177583
546
547         Reviewed by Tim Horton and Wenson Hsieh.
548
549         Add a flag, and the ability to paint a dot where the HIDEventGenerator is creating fake touches to
550         send through UIKit. This will help in debugging touch tests, because it will be easier to see if
551         one is actually sending the touches at the locations that they expect. This will help differentiate between
552         problems in the locations of the touches, and other problems that can come up when writing tests.
553
554         * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
555         (parse_args):
556         * Scripts/webkitpy/port/driver.py:
557         (Driver.cmd_line):
558         * WebKitTestRunner/Options.cpp:
559         (WTR::Options::Options):
560         (WTR::handleOptionShowTouches):
561         (WTR::OptionsHandler::OptionsHandler):
562         * WebKitTestRunner/Options.h:
563         * WebKitTestRunner/TestController.cpp:
564         (WTR::TestController::initialize):
565         * WebKitTestRunner/TestController.h:
566         (WTR::TestController::shouldShowTouches const):
567         * WebKitTestRunner/TestOptions.h:
568         * WebKitTestRunner/ios/HIDEventGenerator.h:
569         * WebKitTestRunner/ios/HIDEventGenerator.mm:
570         (-[DebugTouchView pointInside:withEvent:]):
571         (-[HIDEventGenerator setShouldShowTouches:]):
572         (-[HIDEventGenerator initDebugViews]):
573         (-[HIDEventGenerator updateDebugUI:withPoint:isTouching:]):
574         (-[HIDEventGenerator _createIOHIDEventWithInfo:]):
575         (-[HIDEventGenerator _createIOHIDEventType:]):
576         (-[HIDEventGenerator _updateTouchPoints:count:]):
577         (-[HIDEventGenerator touchDownAtPoints:touchCount:]):
578         (-[HIDEventGenerator liftUpAtPoints:touchCount:]):
579         (-[HIDEventGenerator moveToPoints:touchCount:duration:]):
580         (-[HIDEventGenerator markerEventReceived:]):
581         * WebKitTestRunner/ios/TestControllerIOS.mm:
582         (WTR::TestController::updatePlatformSpecificTestOptionsForTest const):
583         * WebKitTestRunner/ios/mainIOS.mm:
584         (-[WebKitTestRunnerApp _runTestController]):
585
586 2017-09-28  Mark Lam  <mark.lam@apple.com>
587
588         [Re-landing] Turn on exception scope verification for JSC tests.
589         https://bugs.webkit.org/show_bug.cgi?id=162351
590         <rdar://problem/29563911>
591
592         Reviewed by Saam Barati.
593
594         Update: I'm re-landing this patch now that test262 exception check validation
595         failures have been fixed in r222617.  testapi still has some validation failures,
596         but this patch does not affect testapi.
597
598         Added the option to --validateExceptionChecks=true option to BASE_OPTIONS in
599         run-jsc-stress-tests.  This turns on exception scope verification on JSC test
600         runs (which currently does not include testapi).
601
602         Some stats on time to run JSC stress and mozilla tests:
603         1. Release build w/o --validateExceptionChecks=true: real 16m22.544s, user 156m24.080s, sys 123m3.649s
604         2. Debug build w/o --validateExceptionChecks=true: real 78m34.206s, user 1661m57.008s, sys 73m21.177s
605         3. Debug build w/ --validateExceptionChecks=true: real 77m41.106s, user 1656m13.924s, sys 73m42.309s
606         4. Debug build w/ --validateExceptionChecks=true --dumpSimulatedThrows=true: real 92m56.918s, user 2012m56.441s, sys 75m14.174s
607
608         The stats shows that (2) and (3) has effectively no time difference.  Hence, the
609         cost of enabling --validateExceptionChecks=true is not significant.
610
611         It would be nice to enable --dumpSimulatedThrows=true as well, but (4) is about
612         21% slower than (3).  To avoid making debug test runs a lot slower, we'll leave
613         --dumpSimulatedThrows=true off.  We can manually add that when we see a regression
614         and need to debug the issue.  Otherwise, we wont pay the price for it.
615
616         * Scripts/run-jsc-stress-tests:
617
618 2017-09-27  Alex Christensen  <achristensen@webkit.org>
619
620         Add WKContentRuleList notify action type
621         https://bugs.webkit.org/show_bug.cgi?id=177013
622         <rdar://problem/31073936>
623
624         Reviewed by Darin Adler.
625
626         * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
627         * TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp:
628         (WebCore::ContentExtensions::operator<<):
629         (TestWebKitAPI::InMemoryCompiledContentExtension::create):
630         (TestWebKitAPI::InMemoryCompiledContentExtension::data):
631         (TestWebKitAPI::InMemoryCompiledContentExtension::InMemoryCompiledContentExtension):
632         (TestWebKitAPI::makeBackend):
633         (TestWebKitAPI::TEST_F):
634         (TestWebKitAPI::actionsEqual):
635         (TestWebKitAPI::sequenceInstances):
636         (TestWebKitAPI::InMemoryCompiledContentExtension::createFromFilter): Deleted.
637         (TestWebKitAPI::InMemoryCompiledContentExtension::~InMemoryCompiledContentExtension): Deleted.
638         * TestWebKitAPI/Tests/WebKitCocoa/ContentRuleListNotification.mm: Added.
639         (-[ContentRuleListNotificationDelegate _webView:URL:contentRuleListIdentifiers:notifications:]):
640         (-[ContentRuleListNotificationDelegate webView:startURLSchemeTask:]):
641         (-[ContentRuleListNotificationDelegate webView:stopURLSchemeTask:]):
642         (-[ContentRuleListNotificationDelegate webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:]):
643         (makeWarnContentRuleList):
644         (TEST):
645
646 2017-09-27  Wenson Hsieh  <wenson_hsieh@apple.com>
647
648         Drag event DataTransfer has unexpected types "dyn.ah62d4..."
649         https://bugs.webkit.org/show_bug.cgi?id=172526
650         <rdar://problem/32396081>
651
652         Reviewed by Ryosuke Niwa.
653
654         Adds new API tests on iOS to cover various cases of using DataTransfer.setData, DataTransfer.getData, and
655         DataTransfer.types, as well as their interaction with platform objects (source NSItemProviders in the case of
656         drag and drop, and the general UIPasteboard for copy and paste).
657
658         * TestWebKitAPI/PlatformUtilities.h:
659         * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
660         * TestWebKitAPI/Tests/WebKitCocoa/dump-datatransfer-types.html: Added.
661
662         Introduce a new API test harness that both drag-and-drop and copy-and-paste tests use to dump DataTransfer's
663         web-exposed types and values.
664
665         * TestWebKitAPI/Tests/ios/DataInteractionTests.mm:
666         (checkFirstTypeIsPresentAndSecondTypeIsMissing):
667         (checkJSONWithLogging):
668         (TestWebKitAPI::TEST):
669         (checkTypeIdentifierAndIsNotOtherTypeIdentifier): Deleted.
670         * TestWebKitAPI/Tests/ios/UIPasteboardTests.mm:
671         (TestWebKitAPI::checkJSONWithLogging):
672         (TestWebKitAPI::setUpWebViewForPasteboardTests):
673         (TestWebKitAPI::TEST):
674         * TestWebKitAPI/cocoa/PlatformUtilitiesCocoa.mm:
675         (TestWebKitAPI::Util::jsonMatchesExpectedValues):
676
677 2017-09-27  Lucas Forschler  <lforschler@apple.com>
678
679         Add macOS High Sierra and iOS Simulator 11 support to bisect-builds.
680         https://bugs.webkit.org/show_bug.cgi?id=177578
681
682         Reviewed by Alexey Proskuryakov.
683
684         * Scripts/bisect-builds:
685         (minified_platforms):
686         (unminified_platforms):
687
688 2017-09-27  Ryan Haddad  <ryanhaddad@apple.com>
689
690         Update TestResultsServer for High Sierra queues.
691         https://bugs.webkit.org/show_bug.cgi?id=177500
692
693         Reviewed by Alexey Proskuryakov.
694
695         * TestResultServer/static-dashboards/builders.jsonp:
696
697 2017-09-27  Lucas Forschler  <lforschler@apple.com>
698
699         bisect-builds:add a README to the archive.
700         https://bugs.webkit.org/show_bug.cgi?id=177376
701
702         Reviewed by Alexey Proskuryakov & Jon Davis.
703
704         * BuildSlaveSupport/built-product-archive:
705         (addFilesToArchive): refactor function (was previously addLauncherToArchive)
706         (createZip): Teach function to add the README
707         (addLauncherToArchive): Deleted. (refactored to addFilesToArchive)
708         * BuildSlaveSupport/run-webkit-archive: Deleted. (Moved to WebKitArchiveSupport)
709         * WebKitArchiveSupport: Added.
710         * WebKitArchiveSupport/README: Added. README which will be packaged up with the archive.
711         * WebKitArchiveSupport/run-webkit-archive: Added. (Moved from BuildSlaveSupport)
712
713 2017-09-26  Tim Horton  <timothy_horton@apple.com>
714
715         Mac CMake bot should provide verbose build output
716         https://bugs.webkit.org/show_bug.cgi?id=177512
717
718         Reviewed by Alexey Proskuryakov.
719
720         * BuildSlaveSupport/build.webkit.org-config/config.json:
721         It's hard to diagnose weird bot-only build problems without the
722         full verbose build output, so turn that on. The Xcode builders
723         do it too, so why not CMake!
724
725 2017-09-26  Tim Horton  <timothy_horton@apple.com>
726
727         Make it possible to easily get verbose ninja output from build-webkit
728         https://bugs.webkit.org/show_bug.cgi?id=177511
729
730         Reviewed by Sam Weinig.
731
732         * Scripts/build-webkit:
733         Add a -v/--verbose argument to build-webkit, which sets the environment
734         variable VERBOSE=1, which buildCMakeGeneratedProject already checks.
735
736         * Scripts/webkitdirs.pm:
737         (buildCMakeGeneratedProject):
738         Add ninja verbosity arguments to @makeArgs, which are appended
739         after the -- and thus handed to ninja; the previous implementation
740         (appending to @args) would only work if @makeArgs was non-empty and thus
741         the -- was included.
742
743 2017-09-26  Said Abou-Hallawa  <sabouhallawa@apple.com>
744
745         Followup (r222427): SynchronizedFixedQueue should not have a public constructor
746         https://bugs.webkit.org/show_bug.cgi?id=177458
747
748         Reviewed by Tim Horton.
749
750         Fix the definition and the creation of SynchronizedFixedQueue.
751
752         * TestWebKitAPI/Tests/WTF/SynchronizedFixedQueue.cpp:
753         (TestWebKitAPI::ToUpperConverter::ToUpperConverter):
754         (TestWebKitAPI::ToUpperConverter::startProducing):
755         (TestWebKitAPI::ToUpperConverter::startConsuming):
756         (TestWebKitAPI::ToUpperConverter::stopProducing):
757         (TestWebKitAPI::ToUpperConverter::stopConsuming):
758         (TestWebKitAPI::ToUpperConverter::enqueueLower):
759
760 2017-09-26  Wenson Hsieh  <wenson_hsieh@apple.com>
761
762         [ios-simulator] API test DataInteractionTests.ExternalSourceDataTransferItemGetFolderAsEntry is failing
763         https://bugs.webkit.org/show_bug.cgi?id=177271
764
765         Reviewed by Tim Horton and Megan Gardner.
766
767         Rebaseline a failing API test.
768
769         * TestWebKitAPI/Tests/ios/DataInteractionTests.mm:
770         (TestWebKitAPI::TEST):
771
772 2017-09-26  Per Arne Vollan  <pvollan@apple.com>
773
774         Set LF eol-style on Windows shell script, because the script failed on one of the EWS
775         bots, when it had the 'native' style.
776
777         Unreviewed Windows EWS fix. 
778
779         * EWSTools/start-queue-win.sh: Modified property svn:eol-style.
780
781 2017-09-26  Jonathan Bedard  <jbedard@apple.com>
782
783         webkitpy: Notify parent process when a worker is spawned
784         https://bugs.webkit.org/show_bug.cgi?id=177467
785         <rdar://problem/34660194>
786
787         Reviewed by Daniel Bates.
788
789         When we fork the parent process, there may be resources in that process
790         which workers will take ownership of. Notify ports when a new worker is created
791         so that these resources can be correctly managed.
792
793         * Scripts/webkitpy/common/message_pool.py:
794         (_MessagePool._start_workers): After all workers are started, notify the caller
795         that a worker has been created, unless we are running inline, in which case the
796         parent process is still the worker.
797         * Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py:
798         (LayoutTestRunner._handle_did_spawn_worker): Notify the port that a worker process
799         has been created.
800         * Scripts/webkitpy/port/base.py:
801         (Port.did_spawn_worker): Add function so that ports may manage any
802         resources created on the parent process but managed by the provided worker.
803         * Scripts/webkitpy/port/device.py:
804         (Device.release_worker_resources): Call release_worker_resources on the
805         platform_device if such a function is defined.
806         * Scripts/webkitpy/port/ios.py:
807         (IOSPort.did_spawn_worker): Release any worker resources on the iOS
808         device object associated with the spawned worker.
809         * Scripts/webkitpy/test/runner.py:
810         (Runner.handle): Ignore the did_spawn_worker message during testing.
811
812 2017-09-26  Jer Noble  <jer.noble@apple.com>
813
814         Thrown ObjC exception when right clicking on <img> containing mp4 link
815         https://bugs.webkit.org/show_bug.cgi?id=177370
816
817         Reviewed by Darin Adler.
818
819         * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
820         * TestWebKitAPI/Tests/WebKit/mac/ContextMenuImgWithVideo.html: Added.
821         * TestWebKitAPI/Tests/WebKit/mac/ContextMenuImgWithVideo.mm: Added.
822         (-[ContextMenuImgWithVideoDelegate _webView:contextMenu:forElement:]):
823         (TestWebKitAPI::TEST):
824
825 2017-09-26  Per Arne Vollan  <pvollan@apple.com>
826
827         [Win] 'webkit-patch clean' is failing on bot.
828         https://bugs.webkit.org/show_bug.cgi?id=177488
829
830         Reviewed by Brent Fulgham.
831
832         If 'os.remove' throws an exception, catch it.
833
834         * Scripts/webkitpy/common/checkout/scm/svn.py:
835         (SVN.discard_working_directory_changes):
836
837 2017-09-25  Frederik Riedel  <riedel@apple.com>
838
839         Expose way to set values of classified form controls as {Legacy WebKit, WebKit} SPI
840         https://bugs.webkit.org/show_bug.cgi?id=174394
841         <rdar://problem/33183504>
842
843         Reviewed by Ryosuke Niwa.
844
845         * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
846         * TestWebKitAPI/Tests/ios/WKWebViewAutofillTests.mm: Added.
847         (-[WKWebView _privateTextInput]): Testing helpers.
848         (TestWebKitAPI::TEST): Added test cases to test AutoFill for web views.
849         * TestWebKitAPI/ios/UIKitSPI.h:
850
851 2017-09-25  Frederic Wang  <fwang@igalia.com>
852
853         Change my status to reviewer and reformat with validate-committer-lists
854
855         Unreviewed.
856
857         * Scripts/webkitpy/common/config/contributors.json:
858
859 2017-09-25  Ryan Haddad  <ryanhaddad@apple.com>
860
861         Add High Sierra bots to buildbot and dashboard.
862         https://bugs.webkit.org/show_bug.cgi?id=177437
863
864         Reviewed by Alexey Proskuryakov.
865
866         * BuildSlaveSupport/build.webkit.org-config/config.json: Add High Sierra queues, move Leaks and JSC queues over from Sierra.
867         * BuildSlaveSupport/build.webkit.org-config/mastercfg_unittest.py: Update expected results.
868         * BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/WebKitBuildbot.js: Add High Sierra.
869         (WebKitBuildbot):
870
871 2017-09-25  Chris Dumez  <cdumez@apple.com>
872
873         [WK2] Add API to query if a download was user-initiated
874         https://bugs.webkit.org/show_bug.cgi?id=177435
875         <rdar://problem/34498422>
876
877         Reviewed by Alex Christensen.
878
879         Add API test coverage.
880
881         * TestWebKitAPI/Tests/WebKit/mac/ContextMenuDownload.mm:
882         (TestWebKitAPI::decideDestinationWithSuggestedFilename):
883         * TestWebKitAPI/Tests/WebKitCocoa/Download.mm:
884         (-[DownloadDelegate _downloadDidStart:]):
885         (-[DownloadDelegate _downloadDidFinish:]):
886         (runTest):
887         (TEST):
888         (-[BlobDownloadDelegate _downloadDidStart:]):
889         (-[BlobDownloadDelegate _downloadDidFinish:]):
890         (-[RedirectedDownloadDelegate _downloadDidStart:]):
891         (-[RedirectedDownloadDelegate _downloadDidFinish:]):
892
893 2017-09-25  Commit Queue  <commit-queue@webkit.org>
894
895         Unreviewed, rolling out r222455.
896         https://bugs.webkit.org/show_bug.cgi?id=177460
897
898         broke iOS build (Requested by alexchristensen on #webkit).
899
900         Reverted changeset:
901
902         "Add WKContentRuleList notify action type"
903         https://bugs.webkit.org/show_bug.cgi?id=177013
904         http://trac.webkit.org/changeset/222455
905
906 2017-09-25  Per Arne Vollan  <pvollan@apple.com>
907
908         [Win] run-api-tests is failing.
909         https://bugs.webkit.org/show_bug.cgi?id=177454
910
911         Reviewed by Brent Fulgham.
912
913         TestWebKit.exe has changed name to TestWebKitLegacy.exe.
914
915         * Scripts/run-api-tests:
916         (testToolPaths):
917
918 2017-09-25  Per Arne Vollan  <pvollan@apple.com>
919
920         [Win] Cygwin 64-bit EWS process cannot find Visual Studio installation.
921         https://bugs.webkit.org/show_bug.cgi?id=177244
922
923         Reviewed by Alex Christensen.
924
925         The 64-bit EWS shell process should try to find Visual Studio in the 32-bit program files folder.
926
927         * EWSTools/start-queue-win.sh:
928
929 2017-09-25  Alex Christensen  <achristensen@webkit.org>
930
931         Add WKContentRuleList notify action type
932         https://bugs.webkit.org/show_bug.cgi?id=177013
933         <rdar://problem/31073936>
934
935         Reviewed by Darin Adler.
936
937         * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
938         * TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp:
939         (WebCore::ContentExtensions::operator<<):
940         (TestWebKitAPI::InMemoryCompiledContentExtension::create):
941         (TestWebKitAPI::InMemoryCompiledContentExtension::data):
942         (TestWebKitAPI::InMemoryCompiledContentExtension::InMemoryCompiledContentExtension):
943         (TestWebKitAPI::makeBackend):
944         (TestWebKitAPI::TEST_F):
945         (TestWebKitAPI::actionsEqual):
946         (TestWebKitAPI::sequenceInstances):
947         (TestWebKitAPI::InMemoryCompiledContentExtension::createFromFilter): Deleted.
948         (TestWebKitAPI::InMemoryCompiledContentExtension::~InMemoryCompiledContentExtension): Deleted.
949         * TestWebKitAPI/Tests/WebKitCocoa/ContentRuleListNotification.mm: Added.
950         (-[ContentRuleListNotificationDelegate _webView:URL:contentRuleListIdentifiers:notifications:]):
951         (-[ContentRuleListNotificationDelegate webView:startURLSchemeTask:]):
952         (-[ContentRuleListNotificationDelegate webView:stopURLSchemeTask:]):
953         (-[ContentRuleListNotificationDelegate webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:]):
954         (makeWarnContentRuleList):
955         (TEST):
956
957 2017-09-25  Carlos Alberto Lopez Perez  <clopez@igalia.com>
958
959         REGRESSION(r222160) [GTK] [Debug] Internal compiler error on the buildbot (huge memory usage by GCC)
960         https://bugs.webkit.org/show_bug.cgi?id=177223
961
962         Reviewed by Carlos Garcia Campos.
963
964         When the user environment sets the variable NUMBER_OF_PROCESSORS
965         this should be passed down to the build system (ninja or make) always.
966
967         Playing with the number of this variable is needed when using icecc
968         (as you usually want to launch more parallel build process than your
969         number of cores), or when you want to limit the number of parallel
970         build process for hardware capacity reasons.
971
972         * Scripts/build-webkit:
973
974 2017-09-24  Fujii Hironori  <Hironori.Fujii@sony.com>
975
976         [GTK] Incremental builds fail every time Web Inspector icons are removed
977         https://bugs.webkit.org/show_bug.cgi?id=177349
978
979         Reviewed by Carlos Garcia Campos.
980
981         Removing GTK WebInspector image files always breaks the GTK and
982         WPE ports incremental builds.
983
984         * Scripts/webkitdirs.pm:
985         (shouldRemoveCMakeCache): Check the timestamp of
986         Source/WebInspectorUI/UserInterface/Images/gtk directory if
987         isGtk() or isWPE().
988
989 2017-09-24  Joanmarie Diggs  <jdiggs@igalia.com>
990
991         [ATK] Object attributes are missing for ARIA live region roles
992         https://bugs.webkit.org/show_bug.cgi?id=171174
993
994         Reviewed by Chris Fleizach.
995
996         Add support for testing property values for AXARIALive, AXARIAAtomic, and
997         AXARIARelevant. Also add handling for testing whether AXElementBusy is
998         "supported" (in ATK, busy is a state and is supported on all elements
999         regardless of whether the state is present or absent from the state set).
1000
1001         * WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
1002         (WTR::AccessibilityUIElement::boolAttributeValue):
1003         (WTR::AccessibilityUIElement::isAttributeSupported):
1004
1005 2017-09-23  Michael Catanzaro  <mcatanzaro@igalia.com>
1006
1007         Unreviewed Mac CMake build fixup after r222194
1008
1009         * DumpRenderTree/PlatformMac.cmake:
1010
1011 2017-09-22  Zalan Bujtas  <zalan@apple.com>
1012
1013         WeakPtrFactory should populate m_ref lazily.
1014         https://bugs.webkit.org/show_bug.cgi?id=177375
1015
1016         Reviewed by Geoffrey Garen.
1017
1018         * TestWebKitAPI/Tests/WTF/WeakPtr.cpp:
1019         (TestWebKitAPI::TEST):
1020
1021 2017-09-22  Filip Pizlo  <fpizlo@apple.com>
1022
1023         WSL should report an error if you try to create an operator overload that will never be called
1024         https://bugs.webkit.org/show_bug.cgi?id=177092
1025
1026         Reviewed by JF Bastien.
1027         
1028         This adds all kinds of checks to ensure that your operator overloads make sense. This adds all
1029         kinds of tests for those checks.
1030         
1031         In the process of writing those tests, I hit an awesome bug: function instantiation was
1032         instantiating all types, which meant that if that instantiated function needed to resolve calls
1033         to protocol functions, we'd fail because we would have cloned top-level struct types. We need
1034         to preserve the uninstantiated argument types, type arguments, and return type (for casts) in
1035         order to be able to resolve protocol calls. But we also need the instantiated version of the
1036         type arguments for execution. So, this adds some more stuff to the CallExpression class.
1037         
1038         * WebGPUShadingLanguageRI/All.js:
1039         * WebGPUShadingLanguageRI/ArrayRefType.js:
1040         (ArrayRefType.prototype.unifyImpl):
1041         * WebGPUShadingLanguageRI/ArrayType.js:
1042         (ArrayType.prototype.get isArray):
1043         * WebGPUShadingLanguageRI/CallExpression.js:
1044         (CallExpression.resolve):
1045         (CallExpression.prototype.resolve):
1046         (CallExpression.prototype.resolveToOverload):
1047         * WebGPUShadingLanguageRI/Checker.js:
1048         (Checker.prototype._checkOperatorOverload):
1049         (Checker.prototype.visitFuncDef):
1050         (Checker.prototype.visitProtocolDecl):
1051         (Checker.prototype.visitMakeArrayRefExpression):
1052         * WebGPUShadingLanguageRI/EBufferBuilder.js:
1053         (EBufferBuilder.prototype._createEPtr):
1054         * WebGPUShadingLanguageRI/EPtr.js:
1055         (EPtr):
1056         * WebGPUShadingLanguageRI/Evaluator.js:
1057         (Evaluator.prototype._snapshot):
1058         (Evaluator.prototype._runBody):
1059         (Evaluator.prototype.visitFunctionLikeBlock):
1060         (Evaluator.prototype.visitCallExpression):
1061         (Evaluator):
1062         (Evaluator.prototype.runFunc): Deleted.
1063         * WebGPUShadingLanguageRI/ExternalOrigin.js: Added.
1064         * WebGPUShadingLanguageRI/Func.js:
1065         (Func.prototype.toDeclString):
1066         * WebGPUShadingLanguageRI/FuncInstantiator.js:
1067         (FuncInstantiator.prototype.getUnique.InstantiationSubstitution.prototype.visitCallExpression):
1068         (FuncInstantiator.prototype.getUnique.InstantiationSubstitution):
1069         (FuncInstantiator.prototype.getUnique.InstantiationInstantiateImmediates.prototype.visitCallExpression):
1070         (FuncInstantiator.prototype.getUnique.InstantiationInstantiateImmediates):
1071         (FuncInstantiator.prototype.getUnique.Instantiate.prototype.visitFuncDef):
1072         * WebGPUShadingLanguageRI/Intrinsics.js:
1073         (Intrinsics):
1074         * WebGPUShadingLanguageRI/LateChecker.js:
1075         (LateChecker.prototype.visitReferenceType):
1076         (LateChecker.prototype._checkShaderType):
1077         * WebGPUShadingLanguageRI/Lexer.js:
1078         (Lexer._textIsIdentifierImpl):
1079         (Lexer.textIsIdentifier):
1080         (Lexer.prototype.next):
1081         (Lexer):
1082         * WebGPUShadingLanguageRI/NameResolver.js:
1083         (NameResolver.prototype.visitProtocolDecl):
1084         * WebGPUShadingLanguageRI/Parse.js:
1085         (parseType.getAddressSpace):
1086         (parseType):
1087         * WebGPUShadingLanguageRI/Prepare.js:
1088         (let.prepare):
1089         * WebGPUShadingLanguageRI/PtrType.js:
1090         (PtrType.prototype.unifyImpl):
1091         * WebGPUShadingLanguageRI/ReferenceType.js:
1092         (ReferenceType):
1093         * WebGPUShadingLanguageRI/Rewriter.js:
1094         (Rewriter.prototype.visitReferenceType):
1095         (Rewriter.prototype.processDerivedCallData):
1096         * WebGPUShadingLanguageRI/StandardLibrary.js:
1097         (intToString):
1098         * WebGPUShadingLanguageRI/StatementCloner.js:
1099         (StatementCloner.prototype.visitFuncDef):
1100         * WebGPUShadingLanguageRI/StructLayoutBuilder.js:
1101         (StructLayoutBuilder.prototype.visitCallExpression):
1102         (StructLayoutBuilder):
1103         * WebGPUShadingLanguageRI/Substitution.js:
1104         (Substitution.prototype.visitTypeRef):
1105         * WebGPUShadingLanguageRI/Test.html:
1106         * WebGPUShadingLanguageRI/Test.js:
1107         (checkNumber):
1108         (set target):
1109         (tests.literalBool):
1110         (tests.identityBool):
1111         (tests.intSimpleMath):
1112         (tests.uintSimpleMath):
1113         (tests.uint8SimpleMath):
1114         (tests.equality):
1115         (tests.logicalNegation):
1116         (tests.notEquality):
1117         (tests.equalityTypeFailure):
1118         (tests.generalNegation):
1119         (tests.add1):
1120         (tests.simpleGeneric):
1121         (tests.nameResolutionFailure):
1122         (tests.simpleVariable):
1123         (tests.simpleAssignment):
1124         (tests.simpleDefault):
1125         (tests.simpleDereference):
1126         (tests.dereferenceStore):
1127         (tests.simpleMakePtr):
1128         (tests.threadArrayLoad):
1129         (tests.threadArrayLoadIntLiteral):
1130         (tests.deviceArrayLoad):
1131         (tests.threadArrayStore):
1132         (tests.deviceArrayStore):
1133         (tests.deviceArrayStoreIntLiteral):
1134         (tests.simpleProtocol):
1135         (tests.typeMismatchReturn):
1136         (tests.typeMismatchVariableDecl):
1137         (tests.typeMismatchAssignment):
1138         (tests.typeMismatchReturnParam):
1139         (tests.badAdd):
1140         (tests.lexerKeyword):
1141         (tests.simpleNoReturn):
1142         (tests.simpleUnreachableCode):
1143         (tests.simpleStruct):
1144         (tests.genericStructInstance):
1145         (tests.doubleGenericCallsDoubleGeneric):
1146         (tests.doubleGenericCallsSingleGeneric):
1147         (tests.loadNull):
1148         (tests.storeNull):
1149         (tests.returnNull):
1150         (tests.dereferenceDefaultNull):
1151         (tests.defaultInitializedNull):
1152         (tests.passNullToPtrMonomorphic):
1153         (tests.passNullToPtrPolymorphic):
1154         (tests.passNullToPolymorphic):
1155         (tests.loadNullArrayRef):
1156         (tests.storeNullArrayRef):
1157         (tests.returnNullArrayRef):
1158         (tests.dereferenceDefaultNullArrayRef):
1159         (tests.defaultInitializedNullArrayRef):
1160         (tests.defaultInitializedNullArrayRefIntLiteral):
1161         (tests.passNullToPtrMonomorphicArrayRef):
1162         (tests.passNullToPtrPolymorphicArrayRef):
1163         (tests.returnIntLiteralUint):
1164         (tests.returnIntLiteralDouble):
1165         (tests.badIntLiteralForInt):
1166         (tests.badIntLiteralForUint):
1167         (tests.badIntLiteralForDouble):
1168         (tests.passNullAndNotNull):
1169         (tests.passNullAndNotNullFullPoly):
1170         (tests.passNullAndNotNullFullPolyReverse):
1171         (tests.nullTypeVariableUnify):
1172         (tests.doubleNot):
1173         (tests.simpleRecursion):
1174         (tests.protocolMonoSigPolyDef):
1175         (tests.protocolPolySigPolyDef):
1176         (tests.protocolDoublePolySigDoublePolyDef):
1177         (tests.protocolDoublePolySigDoublePolyDefExplicit):
1178         (tests.variableShadowing):
1179         (tests.ifStatement):
1180         (tests.ifElseStatement):
1181         (tests.ifElseIfStatement):
1182         (tests.ifElseIfElseStatement):
1183         (tests.returnIf):
1184         (tests.simpleWhile):
1185         (tests.protocolMonoPolySigDoublePolyDefExplicit):
1186         (tests.ambiguousOverloadSimple):
1187         (tests.ambiguousOverloadOverlapping):
1188         (tests.ambiguousOverloadTieBreak):
1189         (tests.intOverloadResolution):
1190         (tests.intOverloadResolutionReverseOrder):
1191         (tests.intOverloadResolutionGeneric):
1192         (tests.intLiteralGeneric):
1193         (tests.intLiteralGenericWithProtocols):
1194         (tests.uintLiteralGeneric):
1195         (tests.uintLiteralGenericWithProtocols):
1196         (tests.intLiteralGenericSpecific):
1197         (tests.simpleConstexpr):
1198         (tests.break):
1199         (tests.continue):
1200         (tests.doWhile):
1201         (tests.forLoop):
1202         (tests.chainConstexpr):
1203         (tests.chainGeneric):
1204         (tests.chainStruct):
1205         (tests.chainStructNewlyValid):
1206         (tests.chainStructDevice):
1207         (tests.paramChainStructDevice):
1208         (tests.simpleProtocolExtends):
1209         (tests.protocolExtendsTwo):
1210         (tests.prefixPlusPlus):
1211         (tests.prefixPlusPlusResult):
1212         (tests.postfixPlusPlus):
1213         (tests.postfixPlusPlusResult):
1214         (tests.prefixMinusMinus):
1215         (tests.prefixMinusMinusResult):
1216         (tests.postfixMinusMinus):
1217         (tests.postfixMinusMinusResult):
1218         (tests.plusEquals):
1219         (tests.plusEqualsResult):
1220         (tests.minusEquals):
1221         (tests.minusEqualsResult):
1222         (tests.timesEquals):
1223         (tests.timesEqualsResult):
1224         (tests.divideEquals):
1225         (tests.divideEqualsResult):
1226         (tests.twoIntLiterals):
1227         (tests.unifyDifferentLiterals):
1228         (tests.unifyDifferentLiteralsBackwards):
1229         (tests.unifyVeryDifferentLiterals):
1230         (tests.unifyVeryDifferentLiteralsBackwards):
1231         (tests.assignUintToInt):
1232         (tests.buildArrayThenSumIt):
1233         (tests.buildArrayThenSumItUsingArrayReference):
1234         (tests.overrideSubscriptStruct):
1235         (tests.overrideSubscriptStructAndDoStores):
1236         (tests.overrideSubscriptStructAndUsePointers):
1237         (tests.overrideSubscriptStructAndUsePointersIncorrectly):
1238         (tests.makeArrayRefFromLocal):
1239         (tests.makeArrayRefFromPointer):
1240         (tests.makeArrayRefFromArrayRef):
1241         (tests.simpleLength):
1242         (tests.nonArrayRefArrayLengthSucceed):
1243         (tests.nonArrayRefArrayLengthFail):
1244         (tests.constexprIsNotLValuePtr):
1245         (tests.constexprIsNotLValueAssign):
1246         (tests.constexprIsNotLValueRMW):
1247         (tests.assignLength):
1248         (tests.assignLengthHelper):
1249         (tests.simpleGetter):
1250         (tests.simpleSetter):
1251         (tests.genericAccessors):
1252         (tests.bitSubscriptAccessor):
1253         (tests.nestedSubscriptLValueEmulationSimple):
1254         (tests.nestedSubscriptLValueEmulationGeneric):
1255         (tests.boolBitAnd):
1256         (tests.boolBitOr):
1257         (tests.boolBitXor):
1258         (tests.boolBitNot):
1259         (tests.intBitAnd):
1260         (tests.intBitOr):
1261         (tests.intBitXor):
1262         (tests.intBitNot):
1263         (tests.intLShift):
1264         (tests.intRShift):
1265         (tests.uintBitAnd):
1266         (tests.uintBitOr):
1267         (tests.uintBitXor):
1268         (tests.uintBitNot):
1269         (tests.uintLShift):
1270         (tests.uintRShift):
1271         (tests.uint8BitAnd):
1272         (tests.uint8BitOr):
1273         (tests.uint8BitXor):
1274         (tests.uint8BitNot):
1275         (tests.uint8LShift):
1276         (tests.uint8RShift):
1277         (tests.floatMath):
1278         (tests.genericCastInfer):
1279         (tests.booleanMath):
1280         (tests.typedefArray):
1281         (tests.shaderTypes):
1282         (tests.builtinVectors):
1283         (tests.instantiateStructInStruct):
1284         (tests.instantiateStructInStructWithInt2):
1285         (tests.simpleEnum):
1286         (tests.enumWithManualValues):
1287         (tests.enumWithoutZero):
1288         (tests.enumDuplicates):
1289         (tests.enumWithSomeManualValues):
1290         (tests.enumConstexprGenericFunction):
1291         (tests.enumConstexprGenericStruct):
1292         (tests.trap):
1293         (tests.swizzle):
1294         (tests.enumWithExplicitIntBase):
1295         (tests.enumWithUintBase):
1296         (tests.enumFloatBase):
1297         (tests.enumPtrBase):
1298         (tests.enumArrayRefBase):
1299         (tests.emptyStruct):
1300         (tests.enumStructBase):
1301         (tests.enumNoMembers):
1302         (tests.simpleSwitch):
1303         (tests.exhaustiveUint8Switch):
1304         (tests.notQuiteExhaustiveUint8Switch):
1305         (tests.notQuiteExhaustiveUint8SwitchWithDefault):
1306         (tests.switchFallThrough):
1307         (tests.switchBreak):
1308         (tests.enumSwitchBreakExhaustive):
1309         (tests.enumSwitchBreakNotQuiteExhaustive):
1310         (tests.enumSwitchBreakNotQuiteExhaustiveWithDefault):
1311         (tests.simpleRecursiveStruct):
1312         (tests.mutuallyRecursiveStruct):
1313         (tests.mutuallyRecursiveStructWithPointersBroken):
1314         (tests.mutuallyRecursiveStructWithPointers):
1315         (tests.linkedList):
1316         (tests.pointerToPointer):
1317         (tests.arrayRefToArrayRef):
1318         (tests.pointerGetter):
1319         (tests.loneSetter):
1320         (tests.setterWithMismatchedType):
1321         (tests.setterWithMatchedType):
1322         (tests.operatorWithUninferrableTypeVariable):
1323         (tests.operatorWithoutUninferrableTypeVariable):
1324         (tests.operatorCastWithUninferrableTypeVariable):
1325         (tests.operatorCastWithTypeVariableInferredFromReturnType):
1326         (tests.incWrongArgumentLength):
1327         (tests.decWrongArgumentLength):
1328         (tests.incWrongTypes):
1329         (tests.decWrongTypes):
1330         (tests.plusWrongArgumentLength):
1331         (tests.minusWrongArgumentLength):
1332         (tests.timesWrongArgumentLength):
1333         (tests.divideWrongArgumentLength):
1334         (tests.moduloWrongArgumentLength):
1335         (tests.bitAndWrongArgumentLength):
1336         (tests.bitOrWrongArgumentLength):
1337         (tests.bitXorWrongArgumentLength):
1338         (tests.lShiftWrongArgumentLength):
1339         (tests.rShiftWrongArgumentLength):
1340         (tests.bitNotWrongArgumentLength):
1341         (tests.equalsWrongArgumentLength):
1342         (tests.lessThanWrongArgumentLength):
1343         (tests.lessEqualWrongArgumentLength):
1344         (tests.greaterWrongArgumentLength):
1345         (tests.greaterEqualWrongArgumentLength):
1346         (tests.equalsWrongReturnType):
1347         (tests.notEqualsOverload):
1348         (tests.lessThanWrongReturnType):
1349         (tests.lessEqualWrongReturnType):
1350         (tests.greaterThanWrongReturnType):
1351         (tests.greaterEqualWrongReturnType):
1352         (tests.dotOperatorWrongArgumentLength):
1353         (tests.dotOperatorSetterWrongArgumentLength):
1354         (tests.loneSetterPointer):
1355         (tests.setterWithNoGetterOverload):
1356         (tests.setterWithNoGetterOverloadFixed):
1357         (tests.anderWithNothingWrong):
1358         (tests.anderWithWrongNumberOfArguments):
1359         (tests.anderDoesntReturnPointer):
1360         (tests.anderDoesntTakeReference):
1361         (tests.anderWithArrayRef):
1362         (tests.pointerIndexGetter):
1363         (tests.loneIndexSetter):
1364         (tests.notLoneIndexSetter):
1365         (tests.indexSetterWithMismatchedType):
1366         (tests.indexOperatorWrongArgumentLength):
1367         (tests.indexOperatorSetterWrongArgumentLength):
1368         (tests.loneIndexSetterPointer):
1369         (tests.indexSetterWithNoGetterOverload):
1370         (tests.indexSetterWithNoGetterOverloadFixed):
1371         (tests.indexAnderWithNothingWrong):
1372         (tests.indexAnderWithWrongNumberOfArguments):
1373         (tests.indexAnderDoesntReturnPointer):
1374         (tests.indexAnderDoesntTakeReference):
1375         (tests.indexAnderWithArrayRef):
1376         (tests.devicePtrPtr):
1377         (tests.threadgroupPtrPtr):
1378         (tests.constantPtrPtr):
1379         (tests.pointerIndexGetterInProtocol):
1380         (tests.loneIndexSetterInProtocol):
1381         (tests.notLoneIndexSetterInProtocol):
1382         (tests.indexSetterWithMismatchedTypeInProtocol):
1383         (tests.indexOperatorWrongArgumentLengthInProtocol):
1384         (tests.indexOperatorSetterWrongArgumentLengthInProtocol):
1385         (tests.loneIndexSetterPointerInProtocol):
1386         (tests.indexSetterWithNoGetterOverloadInProtocol):
1387         (tests.indexSetterWithNoGetterOverloadFixedInProtocol):
1388         (tests.indexAnderWithNothingWrongInProtocol):
1389         (tests.indexAnderWithWrongNumberOfArgumentsInProtocol):
1390         (tests.indexAnderDoesntReturnPointerInProtocol):
1391         (tests.indexAnderDoesntTakeReferenceInProtocol):
1392         (tests.indexAnderWithArrayRefInProtocol):
1393         (doTest):
1394         (this.window.let._.of.doTest):
1395         (TEST_literalBool): Deleted.
1396         (TEST_identityBool): Deleted.
1397         (TEST_intSimpleMath): Deleted.
1398         (TEST_uintSimpleMath): Deleted.
1399         (TEST_uint8SimpleMath): Deleted.
1400         (TEST_equality): Deleted.
1401         (TEST_logicalNegation): Deleted.
1402         (TEST_notEquality): Deleted.
1403         (TEST_equalityTypeFailure): Deleted.
1404         (): Deleted.
1405         (TEST_add1): Deleted.
1406         (TEST_simpleGeneric): Deleted.
1407         (TEST_nameResolutionFailure): Deleted.
1408         (TEST_simpleAssignment): Deleted.
1409         (TEST_simpleDefault): Deleted.
1410         (TEST_simpleDereference): Deleted.
1411         (TEST_dereferenceStore): Deleted.
1412         (TEST_simpleMakePtr): Deleted.
1413         (TEST_threadArrayLoad): Deleted.
1414         (TEST_threadArrayLoadIntLiteral): Deleted.
1415         (TEST_deviceArrayLoad): Deleted.
1416         (TEST_threadArrayStore): Deleted.
1417         (TEST_deviceArrayStore): Deleted.
1418         (TEST_deviceArrayStoreIntLiteral): Deleted.
1419         (TEST_simpleProtocol): Deleted.
1420         (TEST_typeMismatchReturn): Deleted.
1421         (TEST_simpleNoReturn): Deleted.
1422         (TEST_genericStructInstance): Deleted.
1423         (TEST_doubleGenericCallsDoubleGeneric): Deleted.
1424         (TEST_doubleGenericCallsSingleGeneric): Deleted.
1425         (TEST_dereferenceDefaultNull): Deleted.
1426         (TEST_dereferenceDefaultNullArrayRef): Deleted.
1427         (TEST_returnIntLiteralDouble): Deleted.
1428         (TEST_badIntLiteralForInt): Deleted.
1429         (TEST_passNullAndNotNullFullPoly): Deleted.
1430         (TEST_passNullAndNotNullFullPolyReverse): Deleted.
1431         (TEST_nullTypeVariableUnify.recurse): Deleted.
1432         (TEST_nullTypeVariableUnify.everyOrder): Deleted.
1433         (TEST_nullTypeVariableUnify.everyPair): Deleted.
1434         (TEST_nullTypeVariableUnify): Deleted.
1435         (TEST_simpleRecursion): Deleted.
1436         (TEST_protocolPolySigPolyDef): Deleted.
1437         (TEST_protocolDoublePolySigDoublePolyDef): Deleted.
1438         (TEST_protocolDoublePolySigDoublePolyDefExplicit): Deleted.
1439         (TEST_variableShadowing): Deleted.
1440         (TEST_ifStatement): Deleted.
1441         (TEST_ifElseStatement): Deleted.
1442         (TEST_ifElseIfStatement): Deleted.
1443         (TEST_ifElseIfElseStatement): Deleted.
1444         (TEST_returnIf): Deleted.
1445         (TEST_simpleWhile): Deleted.
1446         (TEST_protocolMonoPolySigDoublePolyDefExplicit): Deleted.
1447         (TEST_intOverloadResolution): Deleted.
1448         (TEST_intOverloadResolutionReverseOrder): Deleted.
1449         (TEST_intOverloadResolutionGeneric): Deleted.
1450         (TEST_intLiteralGeneric): Deleted.
1451         (TEST_intLiteralGenericWithProtocols): Deleted.
1452         (TEST_uintLiteralGeneric): Deleted.
1453         (TEST_uintLiteralGenericWithProtocols): Deleted.
1454         (TEST_intLiteralGenericSpecific): Deleted.
1455         (TEST_simpleConstexpr): Deleted.
1456         (TEST_break): Deleted.
1457         (TEST_forLoop): Deleted.
1458         (TEST_chainConstexpr): Deleted.
1459         (TEST_chainGeneric): Deleted.
1460         (TEST_chainStruct): Deleted.
1461         (TEST_chainStructNewlyValid): Deleted.
1462         (TEST_chainStructDevice): Deleted.
1463         (TEST_paramChainStructDevice): Deleted.
1464         (TEST_simpleProtocolExtends): Deleted.
1465         (TEST_protocolExtendsTwo): Deleted.
1466         (TEST_prefixPlusPlus): Deleted.
1467         (TEST_prefixPlusPlusResult): Deleted.
1468         (TEST_postfixPlusPlus): Deleted.
1469         (TEST_postfixPlusPlusResult): Deleted.
1470         (TEST_prefixMinusMinus): Deleted.
1471         (TEST_prefixMinusMinusResult): Deleted.
1472         (TEST_postfixMinusMinus): Deleted.
1473         (TEST_postfixMinusMinusResult): Deleted.
1474         (TEST_plusEquals): Deleted.
1475         (TEST_plusEqualsResult): Deleted.
1476         (TEST_minusEquals): Deleted.
1477         (TEST_minusEqualsResult): Deleted.
1478         (TEST_timesEquals): Deleted.
1479         (TEST_timesEqualsResult): Deleted.
1480         (TEST_divideEquals): Deleted.
1481         (TEST_divideEqualsResult): Deleted.
1482         (TEST_twoIntLiterals): Deleted.
1483         (TEST_unifyDifferentLiterals): Deleted.
1484         (TEST_buildArrayThenSumItUsingArrayReference): Deleted.
1485         (TEST_overrideSubscriptStruct): Deleted.
1486         (TEST_overrideSubscriptStructAndDoStores): Deleted.
1487         (TEST_overrideSubscriptStructAndUsePointers): Deleted.
1488         (TEST_overrideSubscriptStructAndUsePointersIncorrectly): Deleted.
1489         (TEST_makeArrayRefFromPointer): Deleted.
1490         (TEST_makeArrayRefFromArrayRef): Deleted.
1491         (TEST_nonArrayRefArrayLengthSucceed): Deleted.
1492         (TEST_nonArrayRefArrayLengthFail): Deleted.
1493         (TEST_simpleSetter): Deleted.
1494         (TEST_genericAccessors): Deleted.
1495         (TEST_bitSubscriptAccessor): Deleted.
1496         (TEST_nestedSubscriptLValueEmulationSimple): Deleted.
1497         (TEST_nestedSubscriptLValueEmulationGeneric): Deleted.
1498         (TEST_boolBitAnd): Deleted.
1499         (TEST_boolBitOr): Deleted.
1500         (TEST_boolBitXor): Deleted.
1501         (TEST_boolBitNot): Deleted.
1502         (TEST_intBitAnd): Deleted.
1503         (TEST_intBitOr): Deleted.
1504         (TEST_intBitXor): Deleted.
1505         (TEST_intBitNot): Deleted.
1506         (TEST_intLShift): Deleted.
1507         (TEST_intRShift): Deleted.
1508         (TEST_uintBitAnd): Deleted.
1509         (TEST_uintBitOr): Deleted.
1510         (TEST_uintBitXor): Deleted.
1511         (TEST_uintBitNot): Deleted.
1512         (TEST_uintLShift): Deleted.
1513         (TEST_uintRShift): Deleted.
1514         (TEST_uint8BitAnd): Deleted.
1515         (TEST_uint8BitOr): Deleted.
1516         (TEST_uint8BitXor): Deleted.
1517         (TEST_uint8BitNot): Deleted.
1518         (TEST_uint8LShift): Deleted.
1519         (TEST_uint8RShift): Deleted.
1520         (TEST_floatMath): Deleted.
1521         (TEST_booleanMath): Deleted.
1522         (TEST_typedefArray): Deleted.
1523         (TEST_shaderTypes): Deleted.
1524         (TEST_instantiateStructInStruct): Deleted.
1525         (TEST_instantiateStructInStructWithInt2): Deleted.
1526         (TEST_simpleEnum): Deleted.
1527         (TEST_enumWithManualValues): Deleted.
1528         (TEST_enumWithoutZero): Deleted.
1529         (TEST_enumConstexprGenericFunction): Deleted.
1530         (TEST_enumConstexprGenericStruct): Deleted.
1531         (TEST_trap): Deleted.
1532         (TEST_enumWithExplicitIntBase): Deleted.
1533         (TEST_enumWithUintBase): Deleted.
1534         (TEST_enumFloatBase): Deleted.
1535         (TEST_enumStructBase): Deleted.
1536         (TEST_simpleSwitch): Deleted.
1537         (TEST_exhaustiveUint8Switch): Deleted.
1538         (TEST_notQuiteExhaustiveUint8Switch): Deleted.
1539         (TEST_switchFallThrough): Deleted.
1540         (TEST_switchBreak): Deleted.
1541         (TEST_enumSwitchBreakExhaustive): Deleted.
1542         (TEST_enumSwitchBreakNotQuiteExhaustive): Deleted.
1543         (TEST_simpleRecursiveStruct): Deleted.
1544         (TEST_linkedList): Deleted.
1545         * WebGPUShadingLanguageRI/Type.js:
1546         (Type.prototype.get isArray):
1547         * WebGPUShadingLanguageRI/TypeRef.js:
1548         (TypeRef.wrap):
1549         * WebGPUShadingLanguageRI/TypeVariableTracker.js:
1550         (TypeVariableTracker.prototype.set get return):
1551         (TypeVariableTracker.prototype.visitVariableRef):
1552         (TypeVariableTracker):
1553         * WebGPUShadingLanguageRI/Visitor.js:
1554         (Visitor.prototype.visitProtocolDecl):
1555         * WebGPUShadingLanguageRI/index.html:
1556
1557 2017-09-22  Matt Lewis  <jlewis3@apple.com>
1558
1559         Unreviewed, rolling out r222394.
1560
1561         This broke the Windows Debug Build.
1562
1563         Reverted changeset:
1564
1565         "Remove build-webkit's notion of feature flags having a
1566         default value"
1567         https://bugs.webkit.org/show_bug.cgi?id=177338
1568         http://trac.webkit.org/changeset/222394
1569
1570 2017-09-22  Tim Horton <timothy_horton@apple.com> and Michael Catanzaro <mcatanzaro@igalia.com>
1571
1572         Remove build-webkit's notion of feature flags having a default value
1573         https://bugs.webkit.org/show_bug.cgi?id=177338
1574
1575         Reviewed by Alex Christensen.
1576
1577         Delegate feature flag default values to the build system.
1578         (FeatureDefines.xcconfig for Xcode, WebKitFeatures.cmake and Options*.cmake for CMake, and FeatureDefines.h for everyone)
1579
1580         * BuildSlaveSupport/build.webkit.org-config/config.json:
1581         * BuildSlaveSupport/build.webkit.org-config/master.cfg:
1582         (Factory.__init__):
1583         Update GTK and WPE buildbot configuration to use --no-experimental-features on old stable
1584         bots instead of --default-cmake-features.
1585
1586         * Scripts/build-webkit:
1587         (cMakeArgsFromFeatures):
1588         Default feature values to 'undef'.
1589         Remove the --default-cmake-features argument; it is now the default.
1590         Add --no-experimental-features to replace it.
1591         Stop printing the default feature flag value in the help.
1592         Avoid propagating undefined values to the build system;
1593         only mention flags that are overridden on the command line.
1594
1595         This has the nice side effect of using the default CMake features
1596         for CMake builds, but still allowing toggling of them using the
1597         prettier --FEATURE and --no-FEATURE arguments.
1598
1599         * Scripts/webkitdirs.pm:
1600         (generateBuildSystemFromCMakeProject):
1601         No longer need to suppress CMake warnings about unused arguments.
1602
1603         * Scripts/webkitperl/FeatureList.pm:
1604         Remove the default values from the feature list.
1605
1606 2017-09-21  Joseph Pecoraro  <pecoraro@apple.com>
1607
1608         Unreviewed, add the ability to skip a test262 test.
1609
1610         * Scripts/run-jsc-stress-tests:
1611         Other handlers have :skip but a few didn't.
1612
1613 2017-09-21  Ryan Haddad  <ryanhaddad@apple.com>
1614
1615         Change architecture for ios-ews queue to arm64.
1616         https://bugs.webkit.org/show_bug.cgi?id=177332
1617
1618         Reviewed by Alexey Proskuryakov.
1619
1620         * Scripts/webkitpy/common/config/ews.json:
1621
1622 2017-09-21  Tim Horton  <timothy_horton@apple.com>
1623
1624         Use 'ninja' from the SDK if it exists
1625         https://bugs.webkit.org/show_bug.cgi?id=177330
1626
1627         Reviewed by Alex Christensen.
1628
1629         * Scripts/webkitdirs.pm:
1630         (canUseNinja):
1631         Check for ninja with xcrun in addition to commandExists() for Cocoa platforms.
1632
1633         (generateBuildSystemFromCMakeProject):
1634         (canUseNinjaGenerator): Deleted.
1635         Remove canUseNinjaGenerator; as noted in bug 177057, the Ninja generator
1636         is available in all versions of CMake supported by WebKit.
1637
1638 2017-09-21  Chris Dumez  <cdumez@apple.com>
1639
1640         Regression(r222308): new API tests are failing for !NETWORK_SESSION
1641         https://bugs.webkit.org/show_bug.cgi?id=177321
1642
1643         Reviewed by Alex Christensen.
1644
1645         Unskip API tests now that they pass everywhere.
1646
1647         * TestWebKitAPI/Tests/WebKitCocoa/Download.mm:
1648         (TEST):
1649
1650 2017-09-21  Filip Pizlo  <fpizlo@apple.com>
1651
1652         Unreviewed, fix ability to run tests in browser.
1653
1654         * WebGPUShadingLanguageRI/Test.html:
1655         * WebGPUShadingLanguageRI/index.html:
1656
1657 2017-09-21  Jonathan Bedard  <jbedard@apple.com>
1658
1659         webkitpy: Ignore failure to get updated selenium version
1660         https://bugs.webkit.org/show_bug.cgi?id=177205
1661         <rdar://problem/34531669>
1662
1663         Reviewed by Lucas Forschler.
1664
1665         Sometime asking PyPI for the latest version of Selenium fails. We should try and
1666         fallback to, at a minimum, version 3.5.0 or a newer installed version.
1667
1668         * Scripts/webkitpy/thirdparty/__init__.py:
1669         (AutoinstallImportHook.greater_than_equal_to_version): Return true if the second
1670         version string is greater than or equal to the first version string.
1671         (AutoinstallImportHook._install_selenium): If we can't get the latest PyPI url,
1672         fallback to version 3.5.0 or a newer installed version.
1673
1674 2017-09-21  Filip Pizlo  <fpizlo@apple.com>
1675
1676         WSL should have some post-instantiation type checking
1677         https://bugs.webkit.org/show_bug.cgi?id=177303
1678
1679         Reviewed by Keith Miller.
1680         
1681         This patch removes the Primitive protocol! Yay!
1682         
1683         The Primitive protocol was an attempt to handle the fact that Metal wouldn't allow us to point a
1684         non-thread pointer at data structures that have pointers. This type checking rule interacts badly with
1685         generics. I was able to get it to mostly work by making Primitive into a dynamic protocol - a type
1686         belongs to it if it happens to be isPrimitive.
1687         
1688         But that was a mistake, since it makes it hard to create pointers that are generic over address space.
1689         Also, it's not an appropriate rule for targeting SPIR-V logical mode. That rule will be different, and
1690         possibly more complicated.
1691         
1692         All of these kinds of rules are easier to implement of we run them after instantiation, since then they
1693         don't get in the way of generics. That's what this patch does.
1694         
1695         This means that we get all of the same type checking power as before, and we still can catch the errors
1696         that Metal requires us to check for. It's easier to do those checks now.
1697         
1698         Finally, this removes the shader type checker's incomplete reimplementation of isPrimitive (which was
1699         called NonNumericSearcher). The shader type checker calls isPrimitive now.
1700
1701         * WebGPUShadingLanguageRI/AddressSpace.js:
1702         (needsPrimitiveProtocol): Deleted.
1703         (protocolSuffix): Deleted.
1704         * WebGPUShadingLanguageRI/All.js:
1705         * WebGPUShadingLanguageRI/Checker.js:
1706         (Checker.prototype._checkShaderType):
1707         (Checker.prototype._checkShaderType.NonNumericSearcher): Deleted.
1708         (Checker.prototype._checkShaderType.NonNumericSearcher.prototype.visitArrayRefType): Deleted.
1709         (Checker.prototype._checkShaderType.NonNumericSearcher.prototype.visitPtrType): Deleted.
1710         (Checker.prototype.visitReferenceType): Deleted.
1711         * WebGPUShadingLanguageRI/FuncInstantiator.js:
1712         (FuncInstantiator.prototype.getUnique.Instantiate.prototype.visitFuncDef):
1713         * WebGPUShadingLanguageRI/Inline.js:
1714         (_inlineFunction):
1715         * WebGPUShadingLanguageRI/Intrinsics.js:
1716         (Intrinsics):
1717         * WebGPUShadingLanguageRI/LateChecker.js: Added.
1718         (LateChecker):
1719         (LateChecker.prototype.visitReferenceType):
1720         (LateChecker.prototype._checkShaderType):
1721         (LateChecker.prototype.visitFuncDef):
1722         * WebGPUShadingLanguageRI/LexerToken.js:
1723         (LexerToken.prototype.get isInternal): Deleted.
1724         * WebGPUShadingLanguageRI/NativeType.js:
1725         (NativeType):
1726         (NativeType.prototype.get name):
1727         (NativeType.prototype.get isPrimitive):
1728         (NativeType.prototype.set isPrimitive):
1729         (NativeType.prototype.toString):
1730         * WebGPUShadingLanguageRI/Parse.js:
1731         (parseNative):
1732         * WebGPUShadingLanguageRI/ProgramWithUnnecessaryThingsRemoved.js:
1733         (programWithUnnecessaryThingsRemoved):
1734         * WebGPUShadingLanguageRI/ProtocolDecl.js:
1735         * WebGPUShadingLanguageRI/ReferenceType.js:
1736         (ReferenceType.prototype.get elementType):
1737         (ReferenceType.prototype.get isPrimitive): Deleted.
1738         * WebGPUShadingLanguageRI/StandardLibrary.js:
1739         * WebGPUShadingLanguageRI/StatementCloner.js:
1740         (StatementCloner.prototype.visitNativeType):
1741         * WebGPUShadingLanguageRI/SynthesizeStructAccessors.js:
1742         (synthesizeStructAccessors):
1743         * WebGPUShadingLanguageRI/Test.js:
1744         (TEST_passNullAndNotNullFullPoly):
1745         (TEST_passNullAndNotNullFullPolyReverse):
1746         (TEST_nullTypeVariableUnify):
1747         (TEST_chainStructNewlyValid):
1748         (TEST_chainStructDevice):
1749         (TEST_chainStructInvalid): Deleted.
1750         * WebGPUShadingLanguageRI/Type.js:
1751         (Type.prototype.get isPrimitive):
1752
1753 2017-09-21  Chris Dumez  <cdumez@apple.com>
1754
1755         Unreviewed, temporarily disable new API tests introduced in r222308 until they pass on El Capitan
1756
1757         * TestWebKitAPI/Tests/WebKitCocoa/Download.mm:
1758         (TEST):
1759
1760 2017-09-21  Commit Queue  <commit-queue@webkit.org>
1761
1762         Unreviewed, rolling out r222272.
1763         https://bugs.webkit.org/show_bug.cgi?id=177316
1764
1765         This patch broke builds on some Win EWS bots. (Requested by
1766         perarne on #webkit).
1767
1768         Reverted changeset:
1769
1770         "[Win] Cygwin 64-bit EWS process cannot find Visual Studio
1771         installation."
1772         https://bugs.webkit.org/show_bug.cgi?id=177244
1773         http://trac.webkit.org/changeset/222272
1774
1775 2017-09-21  Filip Pizlo  <fpizlo@apple.com>
1776
1777         Unreviewed, fix a bug in the interactive app that was introduced by bad merging.
1778
1779         * WebGPUShadingLanguageRI/FlattenedStructOffsetGatherer.js:
1780         (FlattenedStructOffsetGatherer.prototype.visitTypeRef):
1781         (FlattenedStructOffsetGatherer):
1782         * WebGPUShadingLanguageRI/index.html:
1783
1784 2017-09-20  Filip Pizlo  <fpizlo@apple.com>
1785
1786         WSL should support switch
1787         https://bugs.webkit.org/show_bug.cgi?id=176978
1788
1789         Reviewed by Keith Miller.
1790         
1791         This adds fairly complete support for switch statements. This includes things like verifying
1792         whether or not a default statement is needed. This even works when the programmer lists all of
1793         the values of an integer type.
1794         
1795         To test that last part, this patch adds uint8 support. It's easy add it, but of course it
1796         meant adding a lot of tests.
1797         
1798         This also fixes enum bugs, since switch does things to enums that we previously didn't test.
1799
1800         * WebGPUShadingLanguageRI/All.js:
1801         * WebGPUShadingLanguageRI/Checker.js:
1802         (Checker.prototype.visitSwitchStatement):
1803         * WebGPUShadingLanguageRI/EnumLiteral.js:
1804         (EnumLiteral.prototype.get valueForSelectedType):
1805         * WebGPUShadingLanguageRI/EnumType.js:
1806         (EnumType.prototype.allValues):
1807         (EnumType.prototype.valuesEqual):
1808         * WebGPUShadingLanguageRI/Evaluator.js:
1809         (Evaluator.prototype.visitSwitchStatement):
1810         * WebGPUShadingLanguageRI/Inliner.js:
1811         (Inliner.prototype.visitCallExpression):
1812         (Inliner):
1813         (Inliner.prototype.visitCastExpression): Deleted.
1814         * WebGPUShadingLanguageRI/Intrinsics.js:
1815         (Intrinsics.):
1816         (Intrinsics):
1817         * WebGPUShadingLanguageRI/LoopChecker.js:
1818         (LoopChecker):
1819         (LoopChecker.prototype.visitFuncDef):
1820         (LoopChecker.prototype.visitWhileLoop):
1821         (LoopChecker.prototype.visitDoWhileLoop):
1822         (LoopChecker.prototype.visitForLoop):
1823         (LoopChecker.prototype.visitSwitchStatement):
1824         (LoopChecker.prototype.visitBreak):
1825         (LoopChecker.prototype.visitContinue):
1826         * WebGPUShadingLanguageRI/Node.js:
1827         (Node.prototype.commit):
1828         * WebGPUShadingLanguageRI/Parse.js:
1829         (parseSwitchCase):
1830         (parseSwitchStatement):
1831         (parseStatement):
1832         (parseBlockBody):
1833         (parseBlock):
1834         * WebGPUShadingLanguageRI/Prepare.js:
1835         (let.prepare):
1836         * WebGPUShadingLanguageRI/ReturnChecker.js:
1837         (ReturnChecker.prototype._mergeReturnStyle):
1838         (ReturnChecker.prototype.visitIfStatement):
1839         (ReturnChecker.prototype.visitWhileLoop):
1840         (ReturnChecker.prototype.visitDoWhileLoop):
1841         (ReturnChecker.prototype.visitForLoop):
1842         (ReturnChecker.prototype.visitSwitchStatement):
1843         (ReturnChecker.prototype.visitContinue):
1844         (ReturnChecker):
1845         * WebGPUShadingLanguageRI/Rewriter.js:
1846         (Rewriter.prototype.visitSwitchStatement):
1847         (Rewriter.prototype.visitSwitchCase):
1848         * WebGPUShadingLanguageRI/StandardLibrary.js:
1849         (uint8.operator):
1850         (bool.operator):
1851         (_generateSwizzle):
1852         * WebGPUShadingLanguageRI/SwitchCase.js: Added.
1853         (SwitchCase):
1854         (SwitchCase.prototype.get origin):
1855         (SwitchCase.prototype.get isDefault):
1856         (SwitchCase.prototype.get value):
1857         (SwitchCase.prototype.get body):
1858         (SwitchCase.prototype.toString):
1859         * WebGPUShadingLanguageRI/SwitchStatement.js: Added.
1860         (SwitchStatement):
1861         (SwitchStatement.prototype.get origin):
1862         (SwitchStatement.prototype.get value):
1863         (SwitchStatement.prototype.add):
1864         (SwitchStatement.prototype.get switchCases):
1865         (SwitchStatement.prototype.toString):
1866         * WebGPUShadingLanguageRI/Test.html:
1867         * WebGPUShadingLanguageRI/Test.js:
1868         (makeUint8):
1869         (makeEnum):
1870         (checkUint8):
1871         (TEST_uint8SimpleMath):
1872         (TEST_equality):
1873         (TEST_notEquality):
1874         (TEST_uint8BitAnd):
1875         (TEST_uint8BitOr):
1876         (TEST_uint8BitXor):
1877         (TEST_uint8BitNot):
1878         (TEST_uint8LShift):
1879         (TEST_uint8RShift):
1880         (TEST_enumWithExplicitIntBase):
1881         (TEST_enumWithUintBase):
1882         (TEST_enumFloatBase):
1883         (TEST_enumStructBase):
1884         (TEST_simpleSwitch):
1885         (TEST_exhaustiveUint8Switch):
1886         (TEST_notQuiteExhaustiveUint8Switch):
1887         (TEST_switchFallThrough):
1888         (TEST_switchBreak):
1889         (TEST_enumSwitchBreakExhaustive):
1890         (TEST_enumSwitchBreakNotQuiteExhaustive):
1891         (doTest):
1892         * WebGPUShadingLanguageRI/UnificationContext.js:
1893         (UnificationContext):
1894         (UnificationContext.prototype.addExtraNode):
1895         (UnificationContext.prototype.get nodes):
1896         * WebGPUShadingLanguageRI/Visitor.js:
1897         (Visitor.prototype.visitProtocolDecl):
1898         * WebGPUShadingLanguageRI/index.html:
1899
1900 2017-09-20  Filip Pizlo  <fpizlo@apple.com>
1901
1902         WSL needs a way to verify that structs are not cyclic
1903         https://bugs.webkit.org/show_bug.cgi?id=177044
1904
1905         Reviewed by Myles Maxfield.
1906         
1907         This adds a recursive type checking phase. Even before adding this phase, the compiler would
1908         successfully detect recursive types - but at the cost of also rejecting programs that had
1909         recursive types indirectly through pointers. To make both things work, I had to change Visitor
1910         to no longer visit TypeRef.type by default. This resulted in some other changes in a few other
1911         parts of the code that previously relied on that behavior.
1912
1913         * WebGPUShadingLanguageRI/All.js:
1914         * WebGPUShadingLanguageRI/CheckRecursiveTypes.js: Added.
1915         (checkRecursiveTypes):
1916         * WebGPUShadingLanguageRI/Checker.js:
1917         (Checker.prototype._checkShaderType.NonNumericSearcher.prototype.visitArrayRefType):
1918         (Checker.prototype._checkShaderType.NonNumericSearcher.prototype.visitPtrType):
1919         (Checker.prototype._checkShaderType.NonNumericSearcher.prototype.visitTypeRef):
1920         (Checker.prototype._checkShaderType.NonNumericSearcher):
1921         (Checker.prototype._checkShaderType):
1922         (Checker.prototype.visitTypeRef):
1923         * WebGPUShadingLanguageRI/NameResolver.js:
1924         (NameResolver.prototype.visitProtocolDecl):
1925         * WebGPUShadingLanguageRI/Prepare.js:
1926         (let.prepare):
1927         * WebGPUShadingLanguageRI/RecursiveTypeChecker.js: Added.
1928         (RecursiveTypeChecker):
1929         (RecursiveTypeChecker.prototype.visitFuncDef):
1930         (RecursiveTypeChecker.prototype.visitNativeFunc):
1931         (RecursiveTypeChecker.prototype.visitStructType):
1932         (RecursiveTypeChecker.prototype.visitReferenceType):
1933         (RecursiveTypeChecker.prototype.visitTypeRef):
1934         * WebGPUShadingLanguageRI/StructLayoutBuilder.js:
1935         (StructLayoutBuilder.prototype.visitTypeRef):
1936         (StructLayoutBuilder):
1937         * WebGPUShadingLanguageRI/Test.html:
1938         * WebGPUShadingLanguageRI/Test.js:
1939         (TEST_simpleRecursiveStruct):
1940         * WebGPUShadingLanguageRI/TypeDefResolver.js:
1941         (TypeDefResolver.prototype.visitTypeRef):
1942         (TypeDefResolver):
1943         * WebGPUShadingLanguageRI/Visitor.js:
1944         (Visitor.prototype.visitProtocolDecl):
1945         * WebGPUShadingLanguageRI/index.html:
1946
1947 2017-09-21  Ryan Haddad  <ryanhaddad@apple.com>
1948
1949         Update TestResultsServer for iOS 11 queues.
1950         https://bugs.webkit.org/show_bug.cgi?id=177285
1951
1952         Reviewed by Alexey Proskuryakov.
1953
1954         * TestResultServer/static-dashboards/builders.jsonp:
1955
1956 2017-09-21  Alex Christensen  <achristensen@webkit.org>
1957
1958         REGRESSION(r221465) WKWebViews without WebGL delegate callbacks crash when WebGL contexts are created
1959         https://bugs.webkit.org/show_bug.cgi?id=177306
1960         <rdar://problem/34351988>
1961
1962         Reviewed by Chris Dumez.
1963
1964         * TestWebKitAPI/Tests/WebKitCocoa/WebGLPolicy.mm:
1965         (-[WebGLTestDelegate webView:startURLSchemeTask:]):
1966         (-[DelegateWithoutWebGL webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:]):
1967         (TEST):
1968
1969 2017-09-20  Joseph Pecoraro  <pecoraro@apple.com>
1970
1971         Update test262 tests
1972         https://bugs.webkit.org/show_bug.cgi?id=177220
1973
1974         Reviewed by Saam Barati and Yusuke Suzuki.
1975
1976         * Scripts/import-test262-tests:
1977         - better detect upstream git repository url from import location
1978         - update JSTest test262 resources when importing from repository
1979         - take seconds instead of 20+ minutes to write yaml with --failures
1980         - update "negative" command to only include just the exception type
1981
1982 2017-09-20  Chris Dumez  <cdumez@apple.com>
1983
1984         [WK2] Add API to get the redirect chain of a WKDownload
1985         https://bugs.webkit.org/show_bug.cgi?id=176628
1986         <rdar://problem/34338279>
1987
1988         Reviewed by Alex Christensen.
1989
1990         Add API test coverage for the 2 cases:
1991         1. Download started as a download and is redirected while
1992            downloading.
1993         2. Download started as a load and was redirected during the
1994            initial load.
1995
1996         * TestWebKitAPI/Tests/WebKitCocoa/Download.mm:
1997         (-[RedirectedDownloadDelegate _download:didReceiveServerRedirectToURL:]):
1998         (-[RedirectedDownloadDelegate _downloadDidFinish:]):
1999         (TEST):
2000
2001 2017-09-20  Alex Christensen  <achristensen@webkit.org>
2002
2003         Add infrastructure for adding custom headers to requests per website
2004         https://bugs.webkit.org/show_bug.cgi?id=177255
2005
2006         Reviewed by Geoffrey Garen.
2007
2008         * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
2009         * TestWebKitAPI/Tests/WebCore/HTTPHeaderField.cpp: Added.
2010         (shouldRemainUnchanged):
2011         (shouldBeInvalid):
2012         (shouldBecome):
2013         (TEST):
2014         * TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:
2015         (TEST):
2016
2017 2017-09-20  Daniel Bates  <dabates@apple.com>
2018
2019         Spelling and grammar dots should not overlap
2020         https://bugs.webkit.org/show_bug.cgi?id=177265
2021         <rdar://problem/34556424>
2022
2023         Reviewed by David Hyatt.
2024
2025         Add unit tests for the subdivision algorithm.
2026
2027         * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
2028         * TestWebKitAPI/Tests/WebCore/MarkerSubrange.cpp: Added.
2029         (WebCore::operator<<):
2030         (WebCore::operator==):
2031         (TestWebKitAPI::TEST):
2032
2033 2017-09-20  Filip Pizlo  <fpizlo@apple.com>
2034
2035         WSL should not type-check functions in the standard library that it does not use
2036         https://bugs.webkit.org/show_bug.cgi?id=177269
2037
2038         Reviewed by JS Bastien.
2039         
2040         Once we added all of the swizzling operators, the size of the standard library ballooned to the point
2041         where it's just not practical to compile anything anymore. If you want to compile
2042         "int foo(int x) { return x}" then it will take some ridiculous amount of time (many seconds) because WSL
2043         will have to type check all of those swizzling operators.
2044         
2045         This change makes it so that after parsing the whole program, we remove the things that we aren't using.
2046         We can make a really good estimate of what we need even before doing any name resolution. In practice,
2047         this change removes almost all of the things from Program before we get to the hard work of type
2048         checking. That's true because the standard library contains _many_ things and you'd have to try very
2049         hard to use all of them.
2050         
2051         This is a 13x speed-up for Test.js. It went from 155 seconds to 12 seconds on my machine.
2052
2053         * WebGPUShadingLanguageRI/All.js:
2054         * WebGPUShadingLanguageRI/ConstexprTypeParameter.js:
2055         (ConstexprTypeParameter.prototype.get origin):
2056         * WebGPUShadingLanguageRI/Intrinsics.js:
2057         * WebGPUShadingLanguageRI/Lexer.js:
2058         (Lexer):
2059         (Lexer.prototype.get originKind):
2060         * WebGPUShadingLanguageRI/LexerToken.js:
2061         (LexerToken.prototype.get lexer):
2062         (LexerToken.prototype.get origin):
2063         (LexerToken.prototype.get originKind):
2064         (LexerToken.prototype.get isInternal):
2065         * WebGPUShadingLanguageRI/NameContext.js:
2066         (isWildcardKind):
2067         (NameContext.prototype.add):
2068         (NameContext.prototype.get let):
2069         (NameContext.prototype.mapFor): Deleted.
2070         * WebGPUShadingLanguageRI/NameFinder.js: Added.
2071         (NameFinder):
2072         (NameFinder.get worklist):
2073         * WebGPUShadingLanguageRI/NameResolver.js:
2074         (NameResolver.prototype.visitProtocolDecl):
2075         * WebGPUShadingLanguageRI/OriginKind.js: Added.
2076         (isOriginKind):
2077         * WebGPUShadingLanguageRI/Prepare.js:
2078         (let.prepare):
2079         * WebGPUShadingLanguageRI/ProgramWithUnnecessaryThingsRemoved.js: Added.
2080         (programWithUnnecessaryThingsRemoved):
2081         * WebGPUShadingLanguageRI/Test.html:
2082         * WebGPUShadingLanguageRI/Test.js:
2083         (doTest):
2084         * WebGPUShadingLanguageRI/index.html:
2085
2086 2017-09-20  Alex Christensen  <achristensen@webkit.org>
2087
2088         Remove ActionType::CSSDisplayNoneStyleSheet
2089         https://bugs.webkit.org/show_bug.cgi?id=177275
2090
2091         Reviewed by Andy Estes.
2092
2093         * TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp:
2094         (WebCore::ContentExtensions::operator<<):
2095         (TestWebKitAPI::testRequest):
2096         (TestWebKitAPI::TEST_F):
2097
2098 2017-09-20  Jonathan Bedard  <jbedard@apple.com>
2099
2100         Device iOS 11 builds fail with FileProvider linker errors
2101         https://bugs.webkit.org/show_bug.cgi?id=177272
2102         <rdar://problem/34557680>
2103
2104         Reviewed by David Kilzer.
2105
2106         For iOS device and simulator, the SYSTEM_LIBRARY_DIR should never
2107         be on the framework search path as neither platform should ever link
2108         with Mac frameworks.
2109
2110         * DumpRenderTree/mac/Configurations/Base.xcconfig:
2111         * WebKitTestRunner/Configurations/Base.xcconfig:
2112
2113 2017-09-20  Alex Christensen  <achristensen@webkit.org>
2114
2115         Remove ActionType::InvalidAction
2116         https://bugs.webkit.org/show_bug.cgi?id=177262
2117
2118         Reviewed by Tim Horton.
2119
2120         * TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp:
2121         (WebCore::ContentExtensions::operator<<):
2122
2123 2017-09-20  Myles C. Maxfield  <mmaxfield@apple.com>
2124
2125         Make a playground where people can try WSL
2126         https://bugs.webkit.org/show_bug.cgi?id=177125
2127
2128         Reviewed by Filip Pizlo.
2129
2130         This patch creates a webpage, index.html, which lets users type in a WSL program and
2131         run it, and see the results.
2132
2133         * WebGPUShadingLanguageRI/All.js:
2134         * WebGPUShadingLanguageRI/CallFunction.js:
2135         (callFunction):
2136         * WebGPUShadingLanguageRI/Checker.js:
2137         (Checker):
2138         (Checker.prototype._checkShaderType.NonNumericSearcher):
2139         (Checker.prototype._checkShaderType.NonNumericSearcher.prototype.visitArrayRefType):
2140         (Checker.prototype._checkShaderType.NonNumericSearcher.prototype.visitPtrType):
2141         (Checker.prototype._checkShaderType):
2142         (Checker.prototype.visitFuncDef):
2143         (Checker.prototype._requireBool):
2144         * WebGPUShadingLanguageRI/FlattenedStructOffsetGatherer.js: Copied from Tools/WebGPUShadingLanguageRI/CallFunction.js.
2145         (FlattenedStructOffsetGatherer):
2146         (FlattenedStructOffsetGatherer.prototype.get result):
2147         (FlattenedStructOffsetGatherer.prototype.visitReferenceType):
2148         (FlattenedStructOffsetGatherer.prototype.visitField):
2149         (FlattenedStructOffsetGatherer.prototype.visitNativeType):
2150         * WebGPUShadingLanguageRI/Func.js:
2151         (Func.prototype.toDeclString):
2152         * WebGPUShadingLanguageRI/Inline.js:
2153         (resolveInlinedFunction):
2154         * WebGPUShadingLanguageRI/NameContext.js:
2155         (NameContext.prototype.get let):
2156         * WebGPUShadingLanguageRI/ResolveOverloadImpl.js:
2157         (resolveOverloadImpl):
2158         * WebGPUShadingLanguageRI/StandardLibrary.js:
2159         * WebGPUShadingLanguageRI/Test.html:
2160         * WebGPUShadingLanguageRI/Test.js:
2161         (TEST_shaderTypes):
2162         * WebGPUShadingLanguageRI/index.html: Added.
2163
2164 2017-09-20  Myles C. Maxfield  <mmaxfield@apple.com>
2165
2166         [WSL] Restrict vertex and fragment entry points according to WSL.md
2167         https://bugs.webkit.org/show_bug.cgi?id=177253
2168
2169         Reviewed by Filip Pizlo.
2170
2171         Entry points can't have template arguments, and their argument/return types need to be restricted.
2172
2173         * WebGPUShadingLanguageRI/Checker.js:
2174         (Checker):
2175         (Checker.prototype._checkShaderType.NonNumericSearcher):
2176         (Checker.prototype._checkShaderType.NonNumericSearcher.prototype.visitArrayRefType):
2177         (Checker.prototype._checkShaderType.NonNumericSearcher.prototype.visitPtrType):
2178         (Checker.prototype._checkShaderType):
2179         (Checker.prototype.visitFuncDef):
2180         (Checker.prototype._requireBool):
2181         * WebGPUShadingLanguageRI/Func.js:
2182         (Func.prototype.toDeclString):
2183         * WebGPUShadingLanguageRI/Test.js:
2184         (TEST_shaderTypes):
2185
2186 2017-09-20  Per Arne Vollan  <pvollan@apple.com>
2187
2188         [Win] Cygwin 64-bit EWS process cannot find Visual Studio installation.
2189         https://bugs.webkit.org/show_bug.cgi?id=177244
2190
2191         Reviewed by Alex Christensen.
2192
2193         The 64-bit EWS shell process should try to find Visual Studio in the 32-bit program files folder.
2194
2195         * EWSTools/start-queue-win.sh:
2196
2197 2017-09-20  Myles C. Maxfield  <mmaxfield@apple.com>
2198
2199         Create vector swizzle operators in WSL's standard library
2200         https://bugs.webkit.org/show_bug.cgi?id=177116
2201
2202         Reviewed by Filip Pizlo.
2203
2204         Because there are 481 possible swizzling operators, StandardLibrary.js generates them
2205         instead of including them by hand.
2206
2207         Adding so many functions slows down the compiler quite a bit.
2208
2209         * WebGPUShadingLanguageRI/Prepare.js:
2210         (prepare):
2211         * WebGPUShadingLanguageRI/StandardLibrary.js:
2212         (intToString):
2213         (_generateSwizzle):
2214
2215 2017-09-20  Ms2ger  <Ms2ger@igalia.com>
2216
2217         [WPE] Update fontconfig to 2.12.4.
2218         https://bugs.webkit.org/show_bug.cgi?id=177228
2219
2220         Reviewed by Carlos Garcia Campos.
2221
2222         * wpe/jhbuild.modules:
2223         * wpe/patches/fontconfig-avoid-conflicts-with-integer-width-macros-from-TS-18.patch: Removed.
2224
2225 2017-09-19  Myles C. Maxfield  <mmaxfield@apple.com>
2226
2227         WSL should be able to trap when something fatal happens
2228         https://bugs.webkit.org/show_bug.cgi?id=177110
2229
2230         Reviewed by Filip Pizlo.
2231
2232         WSL programs can include a statement "trap;" which causes the entry
2233         point to immediately return the default value of its return type.
2234         This is implemented by throw/catch and populateDefaultValue().
2235
2236         * WebGPUShadingLanguageRI/All.js:
2237         * WebGPUShadingLanguageRI/EvaluationCommon.js:
2238         * WebGPUShadingLanguageRI/Evaluator.js:
2239         (Evaluator.prototype.visitTrapStatement):
2240         * WebGPUShadingLanguageRI/Parse.js:
2241         (parseStatement):
2242         * WebGPUShadingLanguageRI/ReturnChecker.js:
2243         (ReturnChecker.prototype.visitTrapStatement):
2244         * WebGPUShadingLanguageRI/Rewriter.js:
2245         (Rewriter.prototype.visitTrapStatement):
2246         * WebGPUShadingLanguageRI/StandardLibrary.js:
2247         * WebGPUShadingLanguageRI/Test.html:
2248         * WebGPUShadingLanguageRI/Test.js:
2249         * WebGPUShadingLanguageRI/TrapStatement.js: Copied from Tools/WebGPUShadingLanguageRI/EvaluationCommon.js.
2250         (TrapStatement):
2251         (TrapStatement.prototype.get origin):
2252         (TrapStatement.prototype.toString):
2253         * WebGPUShadingLanguageRI/Visitor.js:
2254         (Visitor.prototype.visitProtocolDecl):
2255
2256 2017-09-19  Ryan Haddad  <ryanhaddad@apple.com>
2257
2258         Unreviewed follow-up to r222229, remove invalid triggers.
2259
2260         * BuildSlaveSupport/build.webkit.org-config/config.json:
2261
2262 2017-09-19  Simon Fraser  <simon.fraser@apple.com>
2263
2264         tiled-drawing/tiled-backing-in-window.html fails on Retina displays
2265         https://bugs.webkit.org/show_bug.cgi?id=177113
2266
2267         Reviewed by Tim Horton.
2268
2269         This test removes the view from the window, and then dumps the layer tree, at which point
2270         some layers would report a contentsScale of 2 on Retina displays.
2271
2272         This occurs because WebKitTestRunner overrides the default device scale factor on NSWindow,
2273         but windowless views fall back to [NSScreen mainScreen].backingScaleFactor (in WebViewImpl::intrinsicDeviceScaleFactor()).
2274
2275         Fix by having PlatformWebView::changeWindowScaleIfNeeded() call -_setOverrideDeviceScaleFactor: on the view.
2276
2277         * WebKitTestRunner/mac/PlatformWebViewMac.mm:
2278         (WTR::PlatformWebView::changeWindowScaleIfNeeded):
2279
2280 2017-09-19  Wenson Hsieh  <wenson_hsieh@apple.com>
2281
2282         REGRESSION (r215613): Incorrect corners clipping with border-radius
2283         https://bugs.webkit.org/show_bug.cgi?id=176498
2284         <rdar://problem/34112607>
2285
2286         Reviewed by Tim Horton.
2287
2288         Add WebCore API tests for RoundedRect::contains().
2289
2290         * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
2291         * TestWebKitAPI/Tests/WebCore/RoundedRectTests.cpp: Added.
2292         (TestWebKitAPI::layoutRect):
2293         (TestWebKitAPI::TEST):
2294
2295 2017-09-19  Youenn Fablet  <youenn@apple.com>
2296
2297         Allow WTF::map to use any class that is iterable and has a size getter
2298         https://bugs.webkit.org/show_bug.cgi?id=177026
2299
2300         Reviewed by Darin Adler.
2301
2302         * TestWebKitAPI/Tests/WTF/Vector.cpp:
2303         (TestWebKitAPI::TEST):
2304
2305 2017-09-19  Ryan Haddad  <ryanhaddad@apple.com>
2306
2307         Update bot configuration for iOS 11.
2308         https://bugs.webkit.org/show_bug.cgi?id=177165
2309
2310         Reviewed by Alexey Proskuryakov.
2311
2312         * BuildSlaveSupport/build.webkit.org-config/config.json:
2313         * BuildSlaveSupport/build.webkit.org-config/mastercfg_unittest.py:
2314         * BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BubbleQueueServer.js:
2315         (BubbleQueueServer):
2316         * BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/Dashboard.js:
2317         * BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/WebKitBuildbot.js:
2318         (WebKitBuildbot):
2319         * BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Styles/Main.css:
2320         (table.queue-grid tr.platform.ios-simulator-10 img.logo): Deleted.
2321         (table.queue-grid tr.platform.ios-10 img.logo): Deleted.
2322         * BuildSlaveSupport/build.webkit.org-config/wkbuild.py:
2323         (_should_file_trigger_build):
2324         * BuildSlaveSupport/build.webkit.org-config/wkbuild_unittest.py:
2325         (ShouldBuildTest):
2326         (ShouldBuildTest.test_should_build):
2327
2328 2017-09-19  Filip Pizlo  <fpizlo@apple.com>
2329
2330         Primitive protocol should have capital name
2331         https://bugs.webkit.org/show_bug.cgi?id=177097
2332
2333         Reviewed by JF Bastien.
2334         
2335         As soon as I started programming in WSL, I found that I preferred to capitalize protocol names. So, my
2336         early decision to call the primitive protocol "primitive" instead of "Primitive" seems absurd now. This
2337         change reverses that decision.
2338         
2339         Aesthetically, this is a slight improvement. For example:
2340         
2341             struct Bar<T:Primitive> {
2342                 Foo<device T^> f;
2343             }
2344
2345         This makes more sense since all of the non-keyword type identifiers are capital.
2346         
2347         The one place where this is an aesthetic regression is native primitive typedefs, which now look like:
2348         
2349             native Primitive typedef bool;
2350         
2351         I'm happy with that tradeoff, since native typedefs are only in the standard library. Users don't see
2352         this.
2353
2354         * WebGPUShadingLanguageRI/AddressSpace.js:
2355         (protocolSuffix):
2356         * WebGPUShadingLanguageRI/Intrinsics.js:
2357         (Intrinsics):
2358         * WebGPUShadingLanguageRI/NativeType.js:
2359         (NativeType.prototype.toString):
2360         (NativeType):
2361         * WebGPUShadingLanguageRI/Parse.js:
2362         (parseNative):
2363         * WebGPUShadingLanguageRI/StandardLibrary.js:
2364         * WebGPUShadingLanguageRI/Test.js:
2365         (TEST_passNullAndNotNullFullPoly):
2366         (TEST_passNullAndNotNullFullPolyReverse):
2367
2368 2017-09-18  Filip Pizlo  <fpizlo@apple.com>
2369
2370         Cannot put typedefs of templated structs inside structs
2371         https://bugs.webkit.org/show_bug.cgi?id=177123
2372
2373         Reviewed by Michael Saboff.
2374         
2375         Ever since I wrote the generic type instantiation code in WSL, it had a bizarre stink to it. I
2376         did not know what it was, until I met this test case:
2377         
2378             struct Foo { int2 x; }
2379         
2380         The problem was that Type has a getter called instantiatedType, which invoked
2381         InstantiateImmediates. That's great. Where we went wrong was that TypeRef overrode
2382         instantiatedType, and then InstantiateImmediates called TypeRef.instantiatedType from its
2383         visitTypeRef. What a mess. None of that was necessary for anything, and it was just wrong. This
2384         patch fixes it so that:
2385         
2386         - Type has an instantiatedType getter, which does InstantiateImmediates. I didn't change this.
2387           This was the only part of the status quo that really made sense.
2388         
2389         - TypeRef no longer overrides instantiatedType.
2390         
2391         - InstantianteImmediates.prototype.visitTypeRef now does what TypeRef's instantiatedType would
2392           have done.
2393         
2394         And voila! This test case passes and so do all of the other test cases.
2395         
2396         The reason why that specific test case did not work was that the use of a TypeDef (int2) for
2397         a generic type instantiation (vec2<int>) caused there to be two TypeRef's in a row, sorta like
2398         this, if we could use wrap() to denote a TypeRef that just wrapped another type:
2399         
2400             wrap(vec2<int>)
2401         
2402         We would call instantiatedType on this monstrosity. Since TypeRef overrode instantiatedType,
2403         we would stop there because that TypeRef has no type arguments - it's just a wrapper. Well,
2404         actually, we'd do something a bit stranger than stopping there - there's more to the story -
2405         but the effect was the same. Now we do InstantiateImmediates, which recursively builds a new
2406         type. This chews through the wrapper and then instantiates the wrapped type, as we want it to.
2407         Also, this approach no longer has the stink. instantiatedType isn't overriden by anyone
2408         anymore!
2409
2410         * WebGPUShadingLanguageRI/Checker.js:
2411         * WebGPUShadingLanguageRI/InstantiateImmediates.js:
2412         (InstantiateImmediates.prototype.visitTypeRef):
2413         (InstantiateImmediates.prototype.visitReferenceType): Deleted.
2414         * WebGPUShadingLanguageRI/Test.js:
2415         (TEST_instantiateStructInStructWithInt2):
2416         * WebGPUShadingLanguageRI/TypeRef.js:
2417         (TypeRef.wrap):
2418         (TypeRef.prototype.setTypeAndArguments):
2419         (TypeRef.prototype.toString):
2420         (TypeRef):
2421         (TypeRef.prototype.get instantiatedType): Deleted.
2422
2423 2017-09-19  Per Arne Vollan  <pvollan@apple.com>
2424
2425         [Win] WebKit fails to build with 64-bit Perl.
2426         https://bugs.webkit.org/show_bug.cgi?id=177106
2427
2428         Reviewed by Brent Fulgham.
2429
2430         Visual Studio is installed in the 32-bit program files folder.
2431  
2432         * Scripts/webkitdirs.pm:
2433         (programFilesPathX86):
2434         (visualStudioInstallDir):
2435         (msBuildInstallDir):
2436
2437 2017-09-18  Filip Pizlo  <fpizlo@apple.com>
2438
2439         [WSL] Cannot put templated structs inside structs
2440         https://bugs.webkit.org/show_bug.cgi?id=177120
2441
2442         Reviewed by Myles Maxfield.
2443         
2444         It turns out that we still need to instantiate structs even if not passing type arguments,
2445         since its fields may need to be instantiated.
2446         
2447         This makes Myles's test case pass. When writing the test case, I encountered parser bugs, and
2448         I fixed them.
2449
2450         * WebGPUShadingLanguageRI/CallFunction.js:
2451         (callFunction):
2452         * WebGPUShadingLanguageRI/Checker.js:
2453         (Checker.prototype.visitReferenceType):
2454         * WebGPUShadingLanguageRI/FuncInstantiator.js:
2455         (FuncInstantiator.prototype.getUnique):
2456         (FuncInstantiator):
2457         * WebGPUShadingLanguageRI/Parse.js:
2458         (parseSuffixOperator):
2459         (parsePossibleSuffix):
2460         (parsePostIncrement):
2461         * WebGPUShadingLanguageRI/StructType.js:
2462         (StructType.prototype.instantiate):
2463         * WebGPUShadingLanguageRI/Test.js:
2464         (checkNumber):
2465         (checkEnum):
2466         (TEST_instantiateStructInStruct):
2467         * WebGPUShadingLanguageRI/TypeRef.js:
2468         (TypeRef.prototype.get instantiatedType):
2469         (TypeRef.prototype.get isPrimitive):
2470
2471 2017-09-18  Filip Pizlo  <fpizlo@apple.com>
2472
2473         WSL should support enum
2474         https://bugs.webkit.org/show_bug.cgi?id=176977
2475
2476         Reviewed by Myles Maxfield.
2477         
2478         This implements enum. Enums members are referenced Java-style. For example, if we have an enum like:
2479         
2480             enum Bank {
2481                 GP,
2482                 FP
2483             }
2484         
2485         Then you refer to the members by saying Bank.GP and Bank.FP.
2486         
2487         Also adds a hack that makes operator- on a literal fold the literal. This fixes two issues:
2488         
2489         - Lets you use negative literals in constexprs.
2490         - Means that negative literals also get literal type unification.
2491         
2492         WSL's constexpr support is really thin, but I think it's all we really need for now.
2493         
2494         * WebGPUShadingLanguageRI/All.js:
2495         * WebGPUShadingLanguageRI/Checker.js:
2496         (Checker.prototype.visitEnumType):
2497         (Checker.prototype.visitEnumLiteral):
2498         * WebGPUShadingLanguageRI/ConstexprFolder.js: Added.
2499         (ConstexprFolder.prototype.visitCallExpression):
2500         (ConstexprFolder.prototype.visitTypeOrVariableRef):
2501         (ConstexprFolder):
2502         * WebGPUShadingLanguageRI/CreateLiteral.js:
2503         (createLiteral.GenericLiteral.prototype.get valueForSelectedType):
2504         (createLiteral.GenericLiteral.prototype.get negConstexpr):
2505         * WebGPUShadingLanguageRI/DoubleLiteral.js:
2506         (let.DoubleLiteral.createLiteral.negConstexpr):
2507         * WebGPUShadingLanguageRI/EBufferBuilder.js:
2508         (EBufferBuilder.prototype.visitEnumLiteral):
2509         * WebGPUShadingLanguageRI/EnumLiteral.js: Added.
2510         (EnumLiteral):
2511         (EnumLiteral.prototype.get member):
2512         (EnumLiteral.prototype.get type):
2513         (EnumLiteral.prototype.get isConstexpr):
2514         (EnumLiteral.prototype.unifyImpl):
2515         (EnumLiteral.prototype.toString):
2516         * WebGPUShadingLanguageRI/EnumMember.js: Added.
2517         (EnumMember):
2518         (EnumMember.prototype.get origin):
2519         (EnumMember.prototype.get name):
2520         (EnumMember.prototype.toString):
2521         * WebGPUShadingLanguageRI/EnumType.js: Added.
2522         (EnumType):
2523         (EnumType.prototype.add):
2524         (EnumType.prototype.get origin):
2525         (EnumType.prototype.get name):
2526         (EnumType.prototype.get baseType):
2527         (EnumType.prototype.get memberNames):
2528         (EnumType.prototype.memberByName):
2529         (EnumType.prototype.get members):
2530         (EnumType.prototype.get memberMap):
2531         (EnumType.prototype.get isPrimitive):
2532         (EnumType.prototype.populateDefaultValue):
2533         (EnumType.prototype.get size):
2534         (EnumType.prototype.toString):
2535         * WebGPUShadingLanguageRI/Evaluator.js:
2536         (Evaluator.prototype.visitGenericLiteral):
2537         (Evaluator.prototype.visitEnumLiteral):
2538         * WebGPUShadingLanguageRI/FloatLiteral.js:
2539         (let.FloatLiteral.createLiteral.negConstexpr):
2540         * WebGPUShadingLanguageRI/FoldConstexprs.js: Added.
2541         (foldConstexprs):
2542         * WebGPUShadingLanguageRI/IntLiteral.js:
2543         (let.IntLiteral.createLiteral.negConstexpr):
2544         * WebGPUShadingLanguageRI/Intrinsics.js:
2545         (Intrinsics):
2546         * WebGPUShadingLanguageRI/NameResolver.js:
2547         (NameResolver.prototype.visitProtocolDecl):
2548         * WebGPUShadingLanguageRI/Parse.js:
2549         (parseConstexpr):
2550         (parsePossibleSuffix):
2551         (parseEnumMember):
2552         (parseEnumType):
2553         (parse):
2554         * WebGPUShadingLanguageRI/Prepare.js:
2555         (prepare):
2556         * WebGPUShadingLanguageRI/Rewriter.js:
2557         (Rewriter.prototype.visitEnumType):
2558         (Rewriter.prototype.visitEnumMember):
2559         (Rewriter.prototype.visitEnumLiteral):
2560         * WebGPUShadingLanguageRI/StructType.js:
2561         (StructType.prototype.get origin):
2562         (StructType.prototype.instantiate):
2563         * WebGPUShadingLanguageRI/SynthesizeEnumFunctions.js: Added.
2564         (synthesizeEnumFunctions):
2565         * WebGPUShadingLanguageRI/Test.html:
2566         * WebGPUShadingLanguageRI/Test.js:
2567         (checkEnum):
2568         (TEST_simpleEnum):
2569         (TEST_enumWithManualValues):
2570         (TEST_enumWithoutZero):
2571         (TEST_enumConstexprGenericFunction):
2572         (TEST_enumConstexprGenericStruct):
2573         * WebGPUShadingLanguageRI/UintLiteral.js:
2574         (let.UintLiteral.createLiteral.negConstexpr):
2575         * WebGPUShadingLanguageRI/Visitor.js:
2576         (Visitor.prototype.visitProtocolDecl):
2577
2578 2017-09-18  Filip Pizlo  <fpizlo@apple.com>
2579
2580         WSL prepare() should cache the parsed standard library
2581         https://bugs.webkit.org/show_bug.cgi?id=177118
2582
2583         Reviewed by Myles Maxfield.
2584         
2585         The execution time of Test.js is too damn high!
2586         
2587         So I made it 2x faster by caching the parsed standard library.
2588
2589         * WebGPUShadingLanguageRI/All.js:
2590         * WebGPUShadingLanguageRI/CloneProgram.js: Added.
2591         (cloneProgram):
2592         * WebGPUShadingLanguageRI/Prepare.js:
2593         (let.prepare):
2594         (prepare): Deleted.
2595         * WebGPUShadingLanguageRI/StatementCloner.js: Added.
2596         (StatementCloner.prototype.visitFuncDef):
2597         (StatementCloner.prototype.visitNativeFunc):
2598         (StatementCloner.prototype.visitNativeType):
2599         (StatementCloner.prototype.visitTypeDef):
2600         (StatementCloner.prototype.visitStructType):
2601         (StatementCloner.prototype.visitConstexprTypeParameter):
2602         (StatementCloner.prototype.visitProtocolDecl):
2603         * WebGPUShadingLanguageRI/Test.html:
2604         * WebGPUShadingLanguageRI/Test.js:
2605         (doTest):
2606
2607 2017-09-18  Michael Catanzaro  <mcatanzaro@igalia.com>
2608
2609         [CMake] Rename WebKit target to WebKitLegacy and rename WebKit2 target to WebKit
2610         https://bugs.webkit.org/show_bug.cgi?id=174558
2611
2612         Reviewed by Alex Christensen.
2613
2614         With help from Stephan Szabo, thanks!
2615
2616         * DumpRenderTree/PlatformMac.cmake:
2617         * DumpRenderTree/PlatformWin.cmake:
2618         * DumpRenderTree/win/AccessibilityControllerWin.cpp:
2619         * DumpRenderTree/win/DRTDesktopNotificationPresenter.h:
2620         * DumpRenderTree/win/DumpRenderTree.cpp:
2621         * DumpRenderTree/win/EditingDelegate.h:
2622         * DumpRenderTree/win/EventSender.cpp:
2623         * DumpRenderTree/win/FrameLoadDelegate.cpp:
2624         * DumpRenderTree/win/FrameLoadDelegate.h:
2625         * DumpRenderTree/win/GCControllerWin.cpp:
2626         * DumpRenderTree/win/HistoryDelegate.cpp:
2627         * DumpRenderTree/win/HistoryDelegate.h:
2628         * DumpRenderTree/win/PolicyDelegate.h:
2629         * DumpRenderTree/win/ResourceLoadDelegate.cpp:
2630         * DumpRenderTree/win/ResourceLoadDelegate.h:
2631         * DumpRenderTree/win/TestRunnerWin.cpp:
2632         * DumpRenderTree/win/TextInputControllerWin.cpp:
2633         * DumpRenderTree/win/UIDelegate.cpp:
2634         * DumpRenderTree/win/UIDelegate.h:
2635         * DumpRenderTree/win/WorkQueueItemWin.cpp:
2636         * MiniBrowser/gtk/CMakeLists.txt:
2637         * MiniBrowser/mac/CMakeLists.txt:
2638         * MiniBrowser/win/AccessibilityDelegate.cpp:
2639         * MiniBrowser/win/AccessibilityDelegate.h:
2640         * MiniBrowser/win/CMakeLists.txt:
2641         * MiniBrowser/win/Common.cpp:
2642         * MiniBrowser/win/DOMDefaultImpl.h:
2643         * MiniBrowser/win/MiniBrowser.cpp:
2644         * MiniBrowser/win/MiniBrowser.h:
2645         * MiniBrowser/win/MiniBrowserWebHost.cpp:
2646         * MiniBrowser/win/MiniBrowserWebHost.h:
2647         * MiniBrowser/win/PageLoadTestClient.h:
2648         * MiniBrowser/win/PrintWebUIDelegate.cpp:
2649         * MiniBrowser/win/PrintWebUIDelegate.h:
2650         * MiniBrowser/win/ResourceLoadDelegate.cpp:
2651         * MiniBrowser/win/ResourceLoadDelegate.h:
2652         * MiniBrowser/win/WebDownloadDelegate.h:
2653         * TestWebKitAPI/CMakeLists.txt:
2654         * TestWebKitAPI/PlatformGTK.cmake:
2655         * TestWebKitAPI/PlatformWPE.cmake:
2656         * TestWebKitAPI/PlatformWin.cmake:
2657         * TestWebKitAPI/Tests/WebKitLegacy/win/ScaleWebView.cpp:
2658         * TestWebKitAPI/Tests/WebKitLegacy/win/WebViewDestruction.cpp:
2659         * TestWebKitAPI/glib/CMakeLists.txt:
2660         * WebKitTestRunner/CMakeLists.txt:
2661         * WebKitTestRunner/PlatformGTK.cmake:
2662         * WebKitTestRunner/PlatformWPE.cmake:
2663
2664 2017-09-18  Myles C. Maxfield  <mmaxfield@apple.com>
2665
2666         Fill out vector types in WSL's standard library
2667         https://bugs.webkit.org/show_bug.cgi?id=177063
2668
2669         Reviewed by Filip Pizlo.
2670
2671         Now that we have struct types, operator&[], and operator==, fill out a few of the builtin vector types in the
2672         standard library. This patch creates three new types: vec2, vec3, and vec4, each of which takes a type
2673         argument, so you can say vec4<float>. This patch also adds typedefs of int4, uint4, float4, and double4 (along
2674         with their 2- and 3- length siblings).
2675
2676         This patch does not include the swizzling operators, so you can't say float4.yzw.
2677
2678         * WebGPUShadingLanguageRI/StandardLibrary.js:
2679         (operator.T.vec2.T):
2680         (bool.operator.T.Equatable):
2681         (thread.T.operator.T):
2682         (operator.T.vec3.T):
2683         (operator.T.vec4.T):
2684         * WebGPUShadingLanguageRI/Test.js:
2685         (TEST_builtinVectors):
2686
2687 2017-09-18  Myles C. Maxfield  <mmaxfield@apple.com>
2688
2689         WSL needs to annotate vertex shaders and fragment shaders
2690         https://bugs.webkit.org/show_bug.cgi?id=177066
2691
2692         Reviewed by Filip Pizlo.
2693
2694         Metal Shading Language requires annotating vertex and fragment shaders, so this information needs to be in
2695         the source WSL file.
2696
2697         * WebGPUShadingLanguageRI/Func.js:
2698         (Func):
2699         (Func.prototype.get shaderType):
2700         * WebGPUShadingLanguageRI/FuncDef.js:
2701         (FuncDef):
2702         * WebGPUShadingLanguageRI/NativeFunc.js:
2703         (NativeFunc):
2704         * WebGPUShadingLanguageRI/Parse.js:
2705         (parseFuncDecl):
2706         (parseProtocolFuncDecl):
2707         (parseFuncDef):
2708         (parseNativeFunc):
2709         * WebGPUShadingLanguageRI/ResolveOverloadImpl.js:
2710         (resolveOverloadImpl):
2711         * WebGPUShadingLanguageRI/Test.js:
2712
2713 2017-09-18  Filip Pizlo  <fpizlo@apple.com>
2714
2715         WSL should know that constexpr parameters are not lvalues
2716         https://bugs.webkit.org/show_bug.cgi?id=177104
2717
2718         Reviewed by Saam Barati.
2719         
2720         This should be an error:
2721         
2722             void foo<int x>()
2723             {
2724                 x = 42;
2725             }
2726         
2727         Previously, it wasn't, because VariableRef always thought that it was an LValue. This patch
2728         teaches the type checker that not all VariableRefs are LValues.
2729
2730         * WebGPUShadingLanguageRI/ConstexprTypeParameter.js:
2731         (ConstexprTypeParameter.prototype.get varIsLValue):
2732         * WebGPUShadingLanguageRI/FuncParameter.js:
2733         (FuncParameter.prototype.get varIsLValue):
2734         * WebGPUShadingLanguageRI/Test.js:
2735         (TEST_nonArrayRefArrayLengthSucceed):
2736         (TEST_nonArrayRefArrayLengthFail):
2737         (TEST_nonArrayRefArrayLength): Deleted.
2738         (TEST_assignLength): Deleted.
2739         * WebGPUShadingLanguageRI/VariableDecl.js:
2740         (VariableDecl.prototype.get varIsLValue):
2741         * WebGPUShadingLanguageRI/VariableRef.js:
2742         (VariableRef.prototype.get isLValue):
2743
2744 2017-09-18  Ryan Haddad  <ryanhaddad@apple.com>
2745
2746         Unreviewed, rolling out r222170.
2747
2748         The API test added with this change is failing.
2749
2750         Reverted changeset:
2751
2752         "Allow WTF::map to use any class that is iterable and has a
2753         size getter"
2754         https://bugs.webkit.org/show_bug.cgi?id=177026
2755         http://trac.webkit.org/changeset/222170
2756
2757 2017-09-18  Myles C. Maxfield  <mmaxfield@apple.com>
2758
2759         Add a section in WSL's documentation about how API objects and WSL interact
2760         https://bugs.webkit.org/show_bug.cgi?id=177089
2761
2762         Reviewed by Filip Pizlo.
2763
2764         No global variables; entry points accept arguments. Buffers are array references ([]),
2765         and texture and sampler opaque types exist. Data is passed between stages in return
2766         values.
2767
2768         * WebGPUShadingLanguageRI/WSL.md:
2769
2770 2017-09-18  Filip Pizlo  <fpizlo@apple.com>
2771
2772         Unreviewed, fix typo.
2773
2774         * WebGPUShadingLanguageRI/WSL.md:
2775
2776 2017-09-18  Filip Pizlo  <fpizlo@apple.com>
2777
2778         WSL cannot use typedefs of arrays
2779         https://bugs.webkit.org/show_bug.cgi?id=177061
2780
2781         Reviewed by Saam Barati.
2782         
2783         This test case didn't work before because of a missing visit call in Checker.
2784
2785         * WebGPUShadingLanguageRI/Checker.js:
2786         (Checker.prototype.visitTypeRef):
2787         * WebGPUShadingLanguageRI/Test.js:
2788         (TEST_typedefArray):
2789
2790 2017-09-18  Youenn Fablet  <youenn@apple.com>
2791
2792         Allow WTF::map to use any class that is iterable and has a size getter
2793         https://bugs.webkit.org/show_bug.cgi?id=177026
2794
2795         Reviewed by Darin Adler.
2796
2797         * TestWebKitAPI/Tests/WTF/Vector.cpp:
2798         (TestWebKitAPI::TEST):
2799
2800 2017-09-16  Filip Pizlo  <fpizlo@apple.com>
2801
2802         Figure out how WSL will support field overloads like float4.xz and friends
2803         https://bugs.webkit.org/show_bug.cgi?id=177031
2804
2805         Reviewed by JF Bastien.
2806         
2807         WSL needs to support getters and setters, so that we can do things like:
2808         
2809             float4 vec;
2810             vec.zx = float2(1, 2);
2811             // z = 1, x = 2
2812         
2813         There's no way to express this float4.zx returning a pointer to something, since it's doing swizzling.
2814         It could return a crazy smart pointer, but that sounds like a lot of work. So, I decided to go for
2815         lvalue emulation instead.
2816         
2817         The idea of lvalue emulation is that when we try to make an lvalue work for an assignment or RMW
2818         operation (like += and friends), we consider the possibility that we have to first load the value using
2819         a getter and then store it with a setter. This patch makes this work recursively, so that this will
2820         work:
2821         
2822             float4 vec;
2823             vec.zwx.y = 42;
2824             // now w is 42
2825         
2826         This works because we decompose it automatically:
2827         
2828             float4 vec;
2829             float3 tmp = vec.zwx;
2830             tmp.y = 42;
2831             vec.zwx = tmp;
2832         
2833         This'll work to any depth.
2834         
2835         To check if this works, this patch adds two substantial new tests called TEST_genericAccessors() and
2836         TEST_bitSubscriptAccessor(). This tests that this stuff works with a lot of generic types, and that it's
2837         possible to turn integers into bitvectors using subscript overloading. This patch also adds smaller unit
2838         tests also.
2839         
2840         Oh, and it's now possible to get an array's length.
2841
2842         * WebGPUShadingLanguageRI/AddressSpace.js:
2843         (needsPrimitiveProtocol):
2844         (protocolSuffix):
2845         * WebGPUShadingLanguageRI/All.js:
2846         * WebGPUShadingLanguageRI/AnonymousVariable.js: Added.
2847         (AnonymousVariable):
2848         (AnonymousVariable.prototype.get origin):
2849         (AnonymousVariable.prototype.get name):
2850         (AnonymousVariable.prototype.toString):
2851         * WebGPUShadingLanguageRI/ArrayRefType.js:
2852         (ArrayRefType.prototype.argumentForAndOverload):
2853         (ArrayRefType.prototype.argumentTypeForAndOverload):
2854         * WebGPUShadingLanguageRI/ArrayType.js:
2855         (ArrayType.prototype.argumentForAndOverload):
2856         (ArrayType.prototype.argumentTypeForAndOverload):
2857         (ArrayType):
2858         * WebGPUShadingLanguageRI/Assignment.js:
2859         (Assignment):
2860         * WebGPUShadingLanguageRI/CallAssignment.js: Removed.
2861         * WebGPUShadingLanguageRI/CallExpression.js:
2862         (CallExpression.resolve):
2863         (CallExpression.prototype.resolve):
2864         (CallExpression.prototype.resolveToOverload):
2865         * WebGPUShadingLanguageRI/Checker.js:
2866         (Checker.prototype.visitProgram):
2867         (Checker.prototype.visitFuncDef):
2868         (Checker.prototype.visitNativeFunc):
2869         (Checker.prototype.visitProtocolDecl):
2870         (Checker.prototype.visitIdentityExpression):
2871         (Checker.prototype.visitReadModifyWriteExpression):
2872         (Checker.prototype.visitAnonymousVariable):
2873         (Checker.prototype.visitMakeArrayRefExpression):
2874         (Checker.prototype._finishVisitingPropertyAccess):
2875         (Checker.prototype.visitDotExpression):
2876         (Checker.prototype.visitIndexExpression):
2877         (Checker.prototype.visitCallExpression):
2878         (Checker):
2879         (Checker.prototype.visitProtocolDecl.NoticeTypeVariable.prototype.visitTypeRef): Deleted.
2880         (Checker.prototype.visitProtocolDecl.NoticeTypeVariable.prototype.visitVariableRef): Deleted.
2881         (Checker.prototype.visitProtocolDecl.NoticeTypeVariable): Deleted.
2882         (Checker.prototype.visitProtocolDecl.set throw): Deleted.
2883         * WebGPUShadingLanguageRI/CommaExpression.js:
2884         * WebGPUShadingLanguageRI/DotExpression.js:
2885         (DotExpression):
2886         (DotExpression.prototype.get struct):
2887         (DotExpression.prototype.get getFuncName):
2888         (DotExpression.prototype.get andFuncName):
2889         (DotExpression.prototype.get setFuncName):
2890         * WebGPUShadingLanguageRI/EBuffer.js:
2891         * WebGPUShadingLanguageRI/EBufferBuilder.js:
2892         (EBufferBuilder.prototype.visitAnonymousVariable):
2893         (EBufferBuilder.prototype.visitLetExpression): Deleted.
2894         * WebGPUShadingLanguageRI/Evaluator.js:
2895         (Evaluator.prototype.visitIdentityExpression):
2896         (Evaluator.prototype.visitMakePtrExpression):
2897         (Evaluator.prototype.visitAnonymousVariable):
2898         (Evaluator.prototype.visitDotExpression): Deleted.
2899         (Evaluator.prototype.visitLetExpression): Deleted.
2900         * WebGPUShadingLanguageRI/ExpressionFinder.js:
2901         (ExpressionFinder.prototype.visitReadModifyWriteExpression):
2902         (ExpressionFinder.prototype.visitIdentityExpression):
2903         * WebGPUShadingLanguageRI/ForLoop.js:
2904         (ForLoop.prototype.toString):
2905         (ForLoop):
2906         * WebGPUShadingLanguageRI/Func.js:
2907         (Func):
2908         * WebGPUShadingLanguageRI/FuncInstantiator.js:
2909         (FuncInstantiator.prototype.getUnique.InstantiationSubstitution.prototype.visitCallExpression):
2910         (FuncInstantiator.prototype.getUnique.InstantiationSubstitution):
2911         (FuncInstantiator.prototype.getUnique.Instantiate.prototype.visitFuncDef):
2912         (FuncInstantiator.prototype.getUnique.Instantiate.prototype.visitNativeFunc):
2913         (FuncInstantiator.prototype.getUnique.Instantiate):
2914         (FuncInstantiator.prototype.getUnique):
2915         (FuncInstantiator):
2916         * WebGPUShadingLanguageRI/IdentityExpression.js: Added.
2917         (IdentityExpression):
2918         (IdentityExpression.prototype.get target):
2919         (IdentityExpression.prototype.get unifyNode):
2920         (IdentityExpression.prototype.get isConstexpr):
2921         (IdentityExpression.prototype.get isLValue):
2922         (IdentityExpression.prototype.get addressSpace):
2923         (IdentityExpression.prototype.toString):
2924         * WebGPUShadingLanguageRI/IndexExpression.js: Added.
2925         (IndexExpression):
2926         (IndexExpression.prototype.get array):
2927         (IndexExpression.prototype.get index):
2928         (IndexExpression.prototype.get isLValue):
2929         (IndexExpression.prototype.get addressSpace):
2930         (IndexExpression.prototype.get getFuncName):
2931         (IndexExpression.prototype.get andFuncName):
2932         (IndexExpression.prototype.get setFuncName):
2933         (IndexExpression.prototype.toString):
2934         * WebGPUShadingLanguageRI/InferTypesForCall.js:
2935         (inferTypesForCall):
2936         * WebGPUShadingLanguageRI/Inline.js:
2937         (_inlineFunction):
2938         * WebGPUShadingLanguageRI/Inliner.js:
2939         (Inliner.prototype.visitCallExpression):
2940         (Inliner.prototype.visitDotExpression): Deleted.
2941         * WebGPUShadingLanguageRI/Intrinsics.js:
2942         (Intrinsics):
2943         * WebGPUShadingLanguageRI/LetExpression.js: Removed.
2944         * WebGPUShadingLanguageRI/MakeArrayRefExpression.js:
2945         (MakeArrayRefExpression.prototype.becomeConvertPtrToArrayRefExpression): Deleted.
2946         * WebGPUShadingLanguageRI/NameContext.js:
2947         (NameContext):
2948         (NameContext.prototype.add):
2949         (NameContext.prototype.doStatement):
2950         (NameContext.prototype.handleDefining): Deleted.
2951         (NameContext.prototype.isDefined): Deleted.
2952         (NameContext.prototype.define): Deleted.
2953         (NameContext.prototype.defineAll): Deleted.
2954         * WebGPUShadingLanguageRI/NameResolver.js:
2955         (NameResolver.prototype.doStatement):
2956         (NameResolver.prototype.visitProtocolDecl):
2957         (NameResolver.prototype.visitProgram): Deleted.
2958         * WebGPUShadingLanguageRI/NativeFunc.js:
2959         (NativeFunc):
2960         * WebGPUShadingLanguageRI/NativeFuncInstance.js:
2961         (NativeFuncInstance):
2962         (NativeFuncInstance.prototype.get implementationData):
2963         * WebGPUShadingLanguageRI/Node.js:
2964         (Node.prototype.visit):
2965         (Node.visit):
2966         (Node.unify): Deleted.
2967         * WebGPUShadingLanguageRI/NormalUsePropertyResolver.js: Added.
2968         (NormalUsePropertyResolver.prototype.visitDotExpression):
2969         (NormalUsePropertyResolver.prototype.visitIndexExpression):
2970         (NormalUsePropertyResolver):
2971         * WebGPUShadingLanguageRI/Parse.js:
2972         (finishParsingPostIncrement):
2973         (parsePossibleSuffix):
2974         (finishParsingPreIncrement):
2975         (genericParseCommaExpression):
2976         (parseFuncName):
2977         * WebGPUShadingLanguageRI/Prepare.js:
2978         (prepare):
2979         * WebGPUShadingLanguageRI/Program.js:
2980         (Program):
2981         (Program.prototype.get globalNameContext):
2982         (Program.prototype.add):
2983         * WebGPUShadingLanguageRI/PropertyAccessExpression.js: Added.
2984         (PropertyAccessExpression):
2985         (PropertyAccessExpression.prototype.get resultType):
2986         (PropertyAccessExpression.prototype.rewriteAfterCloning):
2987         (PropertyAccessExpression.prototype.updateCallsAfterChangingBase):
2988         (PropertyAccessExpression.prototype.emitGet):
2989         (PropertyAccessExpression.prototype.emitSet):
2990         * WebGPUShadingLanguageRI/PropertyResolver.js: Added.
2991         (PropertyResolver.prototype._visitPropertyAccess):
2992         (PropertyResolver.prototype.visitDotExpression):
2993         (PropertyResolver.prototype.visitIndexExpression):
2994         (PropertyResolver.prototype._handleReadModifyWrite):
2995         (PropertyResolver.prototype.visitReadModifyWriteExpression):
2996         (PropertyResolver.prototype.visitAssignment):
2997         (PropertyResolver.visitMakePtrExpression):
2998         (PropertyResolver.prototype.visitMakeArrayRefExpression):
2999         (PropertyResolver):
3000         * WebGPUShadingLanguageRI/PtrType.js:
3001         (PtrType.prototype.argumentForAndOverload):
3002         (PtrType.prototype.argumentTypeForAndOverload):
3003         (PtrType.prototype.returnTypeFromAndOverload):
3004         * WebGPUShadingLanguageRI/ReadModifyWriteExpression.js: Added.
3005         (ReadModifyWriteExpression):
3006         (ReadModifyWriteExpression.prototype.get lValue):
3007         (ReadModifyWriteExpression.prototype.oldValueRef):
3008         (ReadModifyWriteExpression.prototype.newValueRef):
3009         (ReadModifyWriteExpression.prototype.toString):
3010         * WebGPUShadingLanguageRI/ResolveNames.js:
3011         (createNameResolver):
3012         (resolveNamesInTypes):
3013         (resolveNamesInProtocols):
3014         (resolveNamesInFunctions):
3015         (resolveNames): Deleted.
3016         * WebGPUShadingLanguageRI/ResolveOverloadImpl.js:
3017         (resolveOverloadImpl):
3018         * WebGPUShadingLanguageRI/ResolveProperties.js: Added.
3019         (resolveProperties):
3020         * WebGPUShadingLanguageRI/ResolveTypeDefs.js:
3021         (resolveTypeDefsInTypes):
3022         (resolveTypeDefsInProtocols):
3023         (resolveTypeDefsInFunctions):
3024         (resolveTypeDefs): Deleted.
3025         * WebGPUShadingLanguageRI/ReturnChecker.js:
3026         (ReturnChecker.prototype._isBoolCastFromLiteralTrue):
3027         * WebGPUShadingLanguageRI/Rewriter.js:
3028         (Rewriter):
3029         (Rewriter.prototype.visitVariableDecl):
3030         (Rewriter.prototype.visitTypeRef):
3031         (Rewriter.prototype.visitAssignment):
3032         (Rewriter.prototype.visitReadModifyWriteExpression):
3033         (Rewriter.prototype.visitDereferenceExpression):
3034         (Rewriter.prototype._handlePropertyAccessExpression):
3035         (Rewriter.prototype.visitDotExpression):
3036         (Rewriter.prototype.visitIndexExpression):
3037         (Rewriter.prototype.visitReturn):
3038         (Rewriter.prototype.visitGenericLiteralType):
3039         (Rewriter.prototype.visitNullType):
3040         (Rewriter.prototype.processDerivedCallData):
3041         (Rewriter.prototype.visitCallExpression):
3042         (Rewriter.prototype.visitFunctionLikeBlock):
3043         (Rewriter.prototype.visitIfStatement):
3044         (Rewriter.prototype.visitForLoop):
3045         (Rewriter.prototype.visitAnonymousVariable):
3046         (Rewriter.prototype.visitIdentityExpression):
3047         (Rewriter.prototype.visitLetExpression): Deleted.
3048         * WebGPUShadingLanguageRI/StandardLibrary.js:
3049         * WebGPUShadingLanguageRI/StructLayoutBuilder.js:
3050         (StructLayoutBuilder.prototype.visitNativeFuncInstance):
3051         (StructLayoutBuilder):
3052         * WebGPUShadingLanguageRI/StructType.js:
3053         (StructType.prototype.instantiate):
3054         * WebGPUShadingLanguageRI/Substitution.js:
3055         (Substitution.prototype.get map):
3056         * WebGPUShadingLanguageRI/SuffixCallAssignment.js: Removed.
3057         * WebGPUShadingLanguageRI/SynthesizeStructAccessors.js: Added.
3058         (synthesizeStructAccessors.createTypeParameters):
3059         (synthesizeStructAccessors.):
3060         (synthesizeStructAccessors.createFieldType):
3061         (synthesizeStructAccessors.createTypeRef):
3062         (synthesizeStructAccessors.setupAnder):
3063         (synthesizeStructAccessors):
3064         * WebGPUShadingLanguageRI/Test.html:
3065         * WebGPUShadingLanguageRI/Test.js:
3066         (checkNumber):
3067         (TEST_simpleProtocol):
3068         (TEST_assignLength):
3069         (TEST_simpleSetter):
3070         (TEST_genericAccessors):
3071         * WebGPUShadingLanguageRI/Type.js:
3072         (Type.prototype.get isRef):
3073         (Type.prototype.argumentForAndOverload):
3074         (Type.prototype.argumentTypeForAndOverload):
3075         (Type.prototype.returnTypeFromAndOverload):
3076         (Type):
3077         * WebGPUShadingLanguageRI/TypeParameterRewriter.js: Added.
3078         (TypeParameterRewriter.prototype.visitConstexprTypeParameter):
3079         (TypeParameterRewriter.prototype.visitTypeVariable):
3080         (TypeParameterRewriter):
3081         * WebGPUShadingLanguageRI/TypeVariableTracker.js: Added.
3082         (TypeVariableTracker):
3083         * WebGPUShadingLanguageRI/Value.js:
3084         (Value.prototype.become):
3085         (Value):
3086         * WebGPUShadingLanguageRI/VariableRef.js:
3087         (VariableRef.prototype.get unifyNode):
3088         (VariableRef.prototype.get addressSpace):
3089         * WebGPUShadingLanguageRI/Visitor.js:
3090         (Visitor.prototype.visitNativeFuncInstance):
3091         (Visitor.prototype.visitProtocolDecl):
3092         (Visitor): Deleted.
3093         * WebGPUShadingLanguageRI/VisitorBase.js: Removed.
3094
3095 2017-09-18  Andy Estes  <aestes@apple.com>
3096
3097         [Cocoa] Upstream WKSetCrashReportApplicationSpecificInformation() from WebKitSystemInterface
3098         https://bugs.webkit.org/show_bug.cgi?id=177048
3099
3100         Reviewed by Alex Christensen.
3101
3102         * DumpRenderTree/mac/DumpRenderTree.mm:
3103         (runTest):
3104         * WebKitTestRunner/cocoa/CrashReporterInfo.mm:
3105         (WTR::setCrashReportApplicationSpecificInformationToURL):
3106
3107 2017-09-18  Tim Horton  <timothy_horton@apple.com>
3108
3109         build-webkit spawns fewer subprocesses than ninja uses by default
3110         https://bugs.webkit.org/show_bug.cgi?id=177057
3111
3112         Reviewed by Alex Christensen.
3113
3114         * Scripts/build-webkit:
3115         By default, ninja will parallelize over (cores + 2) jobs. build-webkit
3116         specifies -j(cores), which overrides this. Remove our override if building
3117         with ninja; just let it do its own thing. In my testing, this minor
3118         change is the difference between ~10% idle CPU time and 0.
3119
3120 2017-09-18  Lucas Forschler  <lforschler@apple.com>
3121
3122         Land a patch to verify svn->git update is working.
3123
3124 2017-09-18  Ms2ger  <Ms2ger@igalia.com>
3125
3126         Update my status.
3127
3128         Unreviewed.
3129
3130         * Scripts/webkitpy/common/config/contributors.json:
3131
3132 2017-09-17  Filip Pizlo  <fpizlo@apple.com>
3133
3134         Start working on WSL documentation
3135         https://bugs.webkit.org/show_bug.cgi?id=177064
3136
3137         Reviewed by Mylex Maxfield.
3138         
3139         This is a work in progress. I'd like to check it in and then keep adding to it.
3140
3141         * WebGPUShadingLanguageRI/WSL.md: Added.
3142
3143 2017-09-17  Myles C. Maxfield  <mmaxfield@apple.com>
3144
3145         WSL needs to understand && and ||
3146         https://bugs.webkit.org/show_bug.cgi?id=177062
3147
3148         Reviewed by Filip Pizlo.
3149
3150         Very similar to LogicalNot.
3151
3152         * WebGPUShadingLanguageRI/All.js:
3153         * WebGPUShadingLanguageRI/Checker.js:
3154         * WebGPUShadingLanguageRI/EBufferBuilder.js:
3155         (EBufferBuilder.prototype.visitLogicalExpression):
3156         * WebGPUShadingLanguageRI/Evaluator.js:
3157         (Evaluator.prototype.visitLogicalExpression):
3158         * WebGPUShadingLanguageRI/Lexer.js:
3159         (Lexer.prototype.next):
3160         (Lexer):
3161         * WebGPUShadingLanguageRI/LogicalExpression.js: Added.
3162         (LogicalExpression):
3163         (LogicalExpression.prototype.get text):
3164         (LogicalExpression.prototype.get left):
3165         (LogicalExpression.prototype.get right):
3166         (LogicalExpression.prototype.toString):
3167         * WebGPUShadingLanguageRI/Parse.js:
3168         (parseLeftLogicalExpression):
3169         * WebGPUShadingLanguageRI/Rewriter.js:
3170         (Rewriter.prototype.visitLogicalExpression):
3171         * WebGPUShadingLanguageRI/Test.html:
3172         * WebGPUShadingLanguageRI/Test.js:
3173         * WebGPUShadingLanguageRI/Visitor.js:
3174         (Visitor.prototype.visitProtocolDecl):
3175
3176 2017-09-18  Ms2ger  <Ms2ger@igalia.com>
3177
3178         Update my status.
3179
3180         Unreviewed.
3181
3182         * Scripts/webkitpy/common/config/contributors.json:
3183
3184 2017-09-17  Filip Pizlo  <fpizlo@apple.com>
3185
3186         Start working on WSL documentation
3187         https://bugs.webkit.org/show_bug.cgi?id=177064
3188
3189         Reviewed by Mylex Maxfield.
3190         
3191         This is a work in progress. I'd like to check it in and then keep adding to it.
3192
3193         * WebGPUShadingLanguageRI/WSL.md: Added.
3194
3195 2017-09-17  Myles C. Maxfield  <mmaxfield@apple.com>
3196
3197         WSL needs to understand && and ||
3198         https://bugs.webkit.org/show_bug.cgi?id=177062
3199
3200         Reviewed by Filip Pizlo.
3201
3202         Very similar to LogicalNot.
3203
3204         * WebGPUShadingLanguageRI/All.js:
3205         * WebGPUShadingLanguageRI/Checker.js:
3206         * WebGPUShadingLanguageRI/EBufferBuilder.js:
3207         (EBufferBuilder.prototype.visitLogicalExpression):
3208         * WebGPUShadingLanguageRI/Evaluator.js:
3209         (Evaluator.prototype.visitLogicalExpression):
3210         * WebGPUShadingLanguageRI/Lexer.js:
3211         (Lexer.prototype.next):
3212         (Lexer):
3213         * WebGPUShadingLanguageRI/LogicalExpression.js: Added.
3214         (LogicalExpression):
3215         (LogicalExpression.prototype.get text):
3216         (LogicalExpression.prototype.get left):
3217         (LogicalExpression.prototype.get right):
3218         (LogicalExpression.prototype.toString):
3219         * WebGPUShadingLanguageRI/Parse.js:
3220         (parseLeftLogicalExpression):
3221         * WebGPUShadingLanguageRI/Rewriter.js:
3222         (Rewriter.prototype.visitLogicalExpression):
3223         * WebGPUShadingLanguageRI/Test.html:
3224         * WebGPUShadingLanguageRI/Test.js:
3225         * WebGPUShadingLanguageRI/Visitor.js:
3226         (Visitor.prototype.visitProtocolDecl):
3227
3228 2017-09-17  Myles C. Maxfield  <mmaxfield@apple.com>
3229
3230         WSL needs float and double support
3231         https://bugs.webkit.org/show_bug.cgi?id=177058
3232
3233         Reviewed by Filip Pizlo.
3234
3235         Use the existing int and uint types as a model. The types themselves are straighforward. Just like int and uint,
3236         you can't pass a float as a double argument and vice-versa. This patch adds operator+, -, *, and / for floats
3237         and doubles.
3238
3239         Float literals are more complicated. If your number has a "." character in it, it is treated as a float literal.
3240         You can add a suffix of "f" or "d" to force the literal to pretend to be a float or a double. These literals are
3241         able to masquerade as either floats or doubles (unlike an explicit type). However, these literals are not able
3242         to masquerade as ints or uints. There's also a nice check that your float literal can actually fit in a float.
3243
3244         * WebGPUShadingLanguageRI/All.js:
3245         * WebGPUShadingLanguageRI/DoubleLiteral.js: Copied from Tools/WebGPUShadingLanguageRI/Type.js.
3246         (let.DoubleLiteral.createLiteral.createType):
3247         * WebGPUShadingLanguageRI/DoubleLiteralType.js: Copied from Tools/WebGPUShadingLanguageRI/Type.js.
3248         (let.DoubleLiteralType.createLiteralType.verifyAsArgument):
3249         * WebGPUShadingLanguageRI/FloatLiteral.js: Copied from Tools/WebGPUShadingLanguageRI/Type.js.
3250         (let.FloatLiteral.createLiteral.createType):
3251         * WebGPUShadingLanguageRI/FloatLiteralType.js: Copied from Tools/WebGPUShadingLanguageRI/Type.js.
3252         (let.FloatLiteralType.createLiteralType.verifyAsArgument):
3253         * WebGPUShadingLanguageRI/Intrinsics.js:
3254         (Intrinsics):
3255         * WebGPUShadingLanguageRI/Lexer.js:
3256         (Lexer.prototype.next):
3257         (Lexer):
3258         * WebGPUShadingLanguageRI/NativeType.js:
3259         (NativeType):
3260         (NativeType.prototype.get isFloating):
3261         (NativeType.prototype.set isFloating):
3262         (NativeType.prototype.get isFloat): Deleted.
3263         (NativeType.prototype.set isFloat): Deleted.
3264         * WebGPUShadingLanguageRI/Parse.js:
3265         (parseTerm):
3266         * WebGPUShadingLanguageRI/Rewriter.js:
3267         (Rewriter.prototype.visitGenericLiteral):
3268         * WebGPUShadingLanguageRI/StandardLibrary.js:
3269         (uint.operator):
3270         (int.operator):
3271         * WebGPUShadingLanguageRI/Test.html:
3272         * WebGPUShadingLanguageRI/Test.js:
3273         (makeFloat):
3274         (makeDouble):
3275         (checkNumber):
3276         (checkFloat):
3277         (checkDouble):
3278         * WebGPUShadingLanguageRI/Type.js:
3279         (Type.prototype.get isFloating):
3280         (Type.prototype.get isFloat): Deleted.
3281
3282 2017-09-17  Michael Saboff  <msaboff@apple.com>
3283
3284         https://bugs.webkit.org/show_bug.cgi?id=177038
3285         Add an option to run-jsc-stress-tests to limit tests variations to a basic set
3286
3287         Reviewed by JF Bastien.
3288
3289         Added the --basic option that runs defaults tests with the following modes, default, no-llint,
3290         no-cjit-validate-phases, no-cjit-collect-continuously, dfg-eager and for FTL platforms: no-ftl,
3291         ftl-eager-no-cjit and ftl-no-cjit-small-pool.  This takes about half the time as running all
3292         16 modes of a full run.
3293
3294         * Scripts/run-jsc-stress-tests:
3295
3296 2017-09-16  Tim Horton  <timothy_horton@apple.com>
3297
3298         Fix the Tools build with CMake on macOS
3299         https://bugs.webkit.org/show_bug.cgi?id=177030
3300
3301         Reviewed by Geoffrey Garen.
3302
3303         * TestWebKitAPI/CMakeLists.txt:
3304         Add a workaround identical to what the gtest CMakeLists has.
3305
3306 2017-09-16  Carlos Garcia Campos  <cgarcia@igalia.com>
3307
3308         [GTK] Bump fontconfig version to 2.12.4
3309         https://bugs.webkit.org/show_bug.cgi?id=176997
3310
3311         Reviewed by Michael Catanzaro.
3312
3313         It's the latest stable version and we can get rid of the patches we have.
3314
3315         * WebKitTestRunner/gtk/fonts/fonts.conf: Remove hinting config we no longer need with newer FreeType and
3316         deprecated <blank> that current fontconfig just ignores.
3317         * gtk/jhbuild.modules:
3318         * gtk/patches/fontconfig-2.11.1-add-autogen.patch: Removed.
3319         * gtk/patches/fontconfig-Avoid-conflicts-with-integer-width-macros-from-TS-18661-1-2014.patch: Removed.
3320         * gtk/patches/fontconfig-Fix-the-build-issue-with-gperf-3.1.patch: Removed.
3321         * gtk/patches/fontconfig-fix-osx-cache.diff: Removed.
3322
3323 2017-09-15  Lucas Forschler  <lforschler@apple.com>
3324
3325         Move run-webkit-archive from Tools/Scripts to Tools/BuildSlaveSupport
3326         
3327         Reviewed by Alexey Proskuryakov.
3328
3329         * Scripts/run-webkit-archive: Removed.
3330
3331 2017-09-15  Lucas Forschler  <lforschler@apple.com>
3332
3333         teach build.webkit.org to include run-webkit-archive in the root folder of uploaded macOS archives.
3334         https://bugs.webkit.org/show_bug.cgi?id=176965
3335
3336         Reviewed by Alexey Proskuryakov.
3337
3338         * BuildSlaveSupport/built-product-archive:
3339         (addLauncherToArchive): Helper function to add the launcher script
3340         (createZip): teach function about addLauncherToArchive
3341         * BuildSlaveSupport/run-webkit-archive: Added.
3342         (check_for_valid_platform): Add logic to ensure platform is Darwin
3343         (find_dyld_framework_path): Find the dyld framework path
3344         (run_safari_for_webkit_development): launch SafariForWebKitDevelopment
3345         (set_dyld_framework_path): export the environment for dydl framework path
3346
3347 2017-09-15  Myles C. Maxfield  <mmaxfield@apple.com>
3348
3349         [WSL] Small cleanup in Evaluator
3350         https://bugs.webkit.org/show_bug.cgi?id=176971
3351
3352         Reviewed by Filip Pizlo.
3353
3354         Use the symbols for break and continue instead of the objects themselves.
3355
3356         No tests because there is no behavior change.
3357
3358         * WebGPUShadingLanguageRI/Evaluator.js:
3359         (Evaluator.prototype.visitWhileLoop):
3360         (Evaluator.prototype.visitDoWhileLoop):
3361         (Evaluator.prototype.visitForLoop):
3362         (Evaluator.prototype.visitBreak):
3363         (Evaluator.prototype.visitContinue):
3364
3365 2017-09-15  Filip Pizlo  <fpizlo@apple.com>
3366
3367         WSL Evaluator should only allocate EBuffers when dealing with intrinsics
3368         https://bugs.webkit.org/show_bug.cgi?id=176973
3369
3370         Reviewed by Myles Maxfield.
3371         
3372         Whether or not two temporary values share the same EBuffer is ultimately observable in WSL,
3373         because you can do this:
3374         
3375             thread int^ operator&[](thread int^ ptr, uint index)
3376             {
3377                 g_ptr = ptr;
3378                 return ptr;
3379             }
3380         
3381         And then this is a thing:
3382         
3383             42[0];
3384             // g_ptr now points to 42's location
3385         
3386         Normally this would have a lot of bad implications. But in WSL, if you did choose to do this,
3387         you'd get a pointer to something well-defined: the EBuffer of 42's GenericLiteral. Each static
3388         occurrence of a literal gets its own location, and the semantics of the language call for
3389         42 to be stored into this location when `42` "executes". So, while the programmer could do all
3390         kinds of strange things, at least the strangeness they would see is something we can spec.
3391         
3392         But to do this, the interpreter needs to allocate EBuffers in the same way a compiler would.
3393         It cannot allocate them during execution, except when interacting with intrinsics, which won't
3394         know the difference.
3395         
3396         In the process, I found places that needed to use AutoWrapper instead of TypeRef.wrap.
3397
3398         * WebGPUShadingLanguageRI/AutoWrapper.js:
3399         (AutoWrapper.prototype.visitGenericLiteralType):
3400         (AutoWrapper.prototype.visitNullType):
3401         (AutoWrapper):
3402         * WebGPUShadingLanguageRI/CallExpression.js:
3403         (CallExpression.prototype.resolve):
3404         * WebGPUShadingLanguageRI/CallFunction.js:
3405         (callFunction):
3406         * WebGPUShadingLanguageRI/Checker.js:
3407         * WebGPUShadingLanguageRI/CreateLiteralType.js:
3408         (createLiteralType.GenericLiteralType.prototype.commitUnification):
3409         * WebGPUShadingLanguageRI/EBuffer.js:
3410         (EBuffer):
3411         (EBuffer.setCanAllocateEBuffers):
3412         (EBuffer.disallowAllocation):
3413         (EBuffer.allowAllocation):
3414         * WebGPUShadingLanguageRI/EBufferBuilder.js:
3415         (EBufferBuilder.prototype.visitVariableDecl):
3416         (EBufferBuilder.prototype.visitFuncDef):
3417         (EBufferBuilder.prototype.visitFunctionLikeBlock):
3418         (EBufferBuilder.prototype.visitCallExpression):
3419         (EBufferBuilder.prototype.visitMakePtrExpression):
3420         (EBufferBuilder.prototype.visitGenericLiteral):
3421         (EBufferBuilder.prototype.visitNullLiteral):
3422         (EBufferBuilder.prototype.visitBoolLiteral):
3423         (EBufferBuilder.prototype.visitLogicalNot):
3424         (EBufferBuilder):
3425         * WebGPUShadingLanguageRI/EPtr.js:
3426         (EPtr.box):
3427         (EPtr.prototype.box):
3428         * WebGPUShadingLanguageRI/Evaluator.js:
3429         (Evaluator.prototype._snapshot):
3430         (Evaluator.prototype.runFunc):
3431         (Evaluator.prototype._runBody):
3432         (Evaluator.prototype.visitFunctionLikeBlock):
3433         (Evaluator.prototype.visitMakePtrExpression):
3434         (Evaluator.prototype.visitGenericLiteral):
3435         (Evaluator.prototype.visitNullLiteral):
3436         (Evaluator.prototype.visitBoolLiteral):
3437         (Evaluator.prototype.visitLogicalNot):
3438         (Evaluator.prototype.visitCallExpression):
3439         (Evaluator):
3440         (Evaluator.prototype.runBody): Deleted.
3441         * WebGPUShadingLanguageRI/Inliner.js:
3442         (Inliner.prototype.visitCallExpression):
3443         * WebGPUShadingLanguageRI/InstantiateImmediates.js:
3444         (InstantiateImmediates.prototype.visitTypeRef):
3445         * WebGPUShadingLanguageRI/Rewriter.js:
3446         (Rewriter.prototype.visitMakePtrExpression):
3447         (Rewriter.prototype.visitGenericLiteral):
3448         (Rewriter.prototype.visitNullLiteral):
3449         (Rewriter.prototype.processDerivedCallData):
3450         (Rewriter.prototype.visitFunctionLikeBlock):
3451         (Rewriter.prototype.visitLogicalNot):
3452         * WebGPUShadingLanguageRI/TypeRef.js:
3453         (TypeRef.prototype.toString):
3454         (TypeRef):
3455         * WebGPUShadingLanguageRI/Visitor.js:
3456         (Visitor.prototype.visitProtocolDecl):
3457
3458 2017-09-14  Filip Pizlo  <fpizlo@apple.com>
3459
3460         Rationalize how WSL's operator&[] works
3461         https://bugs.webkit.org/show_bug.cgi?id=176958
3462
3463         Reviewed by Myles Maxfield.
3464         
3465         This makes operator&[] work with non-array-ref types. The way this works is that if you do base[index]
3466         then we pattern match base's type and proceed accordingly:
3467         
3468             If base's type is T^:
3469                 => Reject
3470             
3471             If base's type is T[]:
3472                 => Accept
3473             
3474             If base's type is T[c]:
3475                 => Wrap it with a MakeArrayRefExpression and accept.
3476             
3477             All other cases:
3478                 => Wrap it with a MakePtrExpression and accept.
3479         
3480         This makes it possible for operator&[] to work with lvalues. It also means that operator&[] gets to
3481         "see" the temporary values we create via snapshot() in the interpreter. We'll have to fix that, and I've
3482         filed bug 176973 for that. Once that's fixed, this will have well-defined behavior, though with the very
3483         peculiar caveat that an expression like this:
3484         
3485              totallyNotAnLValue()[42]
3486         
3487         Could be used to get a pointer to a non-lvalue. But we can be extremely precise about what that means
3488         and prohibit dangling pointers, which is kinda crazy.
3489         
3490         In order to do this, I had to make MakeArrayRefExpression work, so I did that and added tests for it.
3491
3492         * WebGPUShadingLanguageRI/All.js:
3493         * WebGPUShadingLanguageRI/ArrayRefType.js:
3494         (ArrayRefType.prototype.unifyImpl):
3495         (ArrayRefType.prototype.toString):
3496         (ArrayRefType):
3497         * WebGPUShadingLanguageRI/ArrayType.js:
3498         (ArrayType):
3499         (ArrayType.prototype.get numElementsValue):
3500         (ArrayType.prototype.get size):
3501         (ArrayType.prototype.populateDefaultValue):
3502         (ArrayType.prototype.unifyImpl):
3503         * WebGPUShadingLanguageRI/Checker.js:
3504         * WebGPUShadingLanguageRI/ConvertPtrToArrayRefExpression.js: Added.
3505         (ConvertPtrToArrayRefExpression):
3506         (ConvertPtrToArrayRefExpression.prototype.get lValue):
3507         (ConvertPtrToArrayRefExpression.prototype.toString):
3508         * WebGPUShadingLanguageRI/CreateLiteral.js:
3509         (createLiteral.GenericLiteral.withType):
3510         (createLiteral.GenericLiteral.prototype.get isLiteral):
3511         (createLiteral.GenericLiteral.prototype.unifyImpl):
3512         * WebGPUShadingLanguageRI/DotExpression.js:
3513         (DotExpression.prototype.get addressSpace):
3514         * WebGPUShadingLanguageRI/Evaluator.js:
3515         (Evaluator.prototype.visitMakeArrayRefExpression):
3516         (Evaluator.prototype.visitConvertPtrToArrayRefExpression):
3517         * WebGPUShadingLanguageRI/Intrinsics.js:
3518         (Intrinsics):
3519         * WebGPUShadingLanguageRI/MakeArrayRefExpression.js: Added.
3520         (MakeArrayRefExpression):
3521         (MakeArrayRefExpression.prototype.get lValue):
3522         (MakeArrayRefExpression.prototype.becomeConvertPtrToArrayRefExpression):
3523         (MakeArrayRefExpression.prototype.toString):
3524         * WebGPUShadingLanguageRI/MakePtrExpression.js:
3525         (MakePtrExpression.prototype.toString):
3526         (MakePtrExpression):
3527         * WebGPUShadingLanguageRI/PtrType.js:
3528         (PtrType.prototype.toString):
3529         (PtrType):
3530         * WebGPUShadingLanguageRI/ReferenceType.js:
3531         (ReferenceType):
3532         * WebGPUShadingLanguageRI/Rewriter.js:
3533         (Rewriter.prototype.visitArrayType):
3534         (Rewriter.prototype.visitMakeArrayRefExpression):
3535         (Rewriter.prototype.visitConvertPtrToArrayRefExpression):
3536         * WebGPUShadingLanguageRI/StandardLibrary.js:
3537         * WebGPUShadingLanguageRI/Test.html:
3538         * WebGPUShadingLanguageRI/Test.js:
3539         (TEST_buildArrayThenSumItUsingArrayReference):
3540         (TEST_overrideSubscriptStruct):
3541         (TEST_overrideSubscriptStructAndUsePointers):
3542         (TEST_overrideSubscriptStructAndUsePointersIncorrectly):
3543         (TEST_makeArrayRefFromPointer):
3544         (TEST_makeArrayRefFromArrayRef):
3545         * WebGPUShadingLanguageRI/Visitor.js:
3546         (Visitor.prototype.visitProtocolDecl):
3547
3548 2017-09-14  Filip Pizlo  <fpizlo@apple.com>
3549
3550         WSL should support ++, --, +=, and all of those things
3551         https://bugs.webkit.org/show_bug.cgi?id=176975
3552
3553         Reviewed by Myles Maxfield.
3554         
3555         This adds an internal AST construct called LetExpression, that allows us to anonymously capture
3556         a value. This change uses LetExpression to implement prefix and suffix ++/-- and all of the
3557         +=/-=/etc.
3558
3559         * WebGPUShadingLanguageRI/All.js:
3560         * WebGPUShadingLanguageRI/Checker.js:
3561         * WebGPUShadingLanguageRI/EBufferBuilder.js:
3562         (EBufferBuilder.prototype.visitVariableDecl):
3563         (EBufferBuilder.prototype.visitLetExpression):
3564         (EBufferBuilder):
3565         * WebGPUShadingLanguageRI/Evaluator.js:
3566         (Evaluator.prototype.visitLetExpression):
3567         * WebGPUShadingLanguageRI/LetExpression.js: Added.
3568         (LetExpression):
3569         (LetExpression.prototype.get origin):
3570         (LetExpression.prototype.get name):
3571         (LetExpression.prototype.toString):
3572         * WebGPUShadingLanguageRI/Lexer.js:
3573         (Lexer.prototype.next):
3574         (Lexer):
3575         * WebGPUShadingLanguageRI/NameResolver.js:
3576         (NameResolver.prototype.visitProtocolDecl):
3577         * WebGPUShadingLanguageRI/Parse.js:
3578         (isCallExpression):
3579         (finishParsingPostIncrement):
3580         (parsePossibleSuffix):
3581         (finishParsingPreIncrement):
3582         (parsePreIncrement):
3583         (parsePossiblePrefix):
3584         (parsePossibleAssignment):
3585         (parsePostIncrement):
3586         (parseEffectfulExpression):
3587         * WebGPUShadingLanguageRI/Rewriter.js:
3588         (Rewriter.prototype.visitFunctionLikeBlock):
3589         (Rewriter.prototype.visitLetExpression):
3590         (Rewriter):
3591         * WebGPUShadingLanguageRI/StandardLibrary.js:
3592         (int.operator):
3593         (uint.operator):
3594         * WebGPUShadingLanguageRI/Test.html:
3595         * WebGPUShadingLanguageRI/Test.js: