WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
176975
WSL should support ++, --, +=, and all of those things
https://bugs.webkit.org/show_bug.cgi?id=176975
Summary
WSL should support ++, --, +=, and all of those things
Filip Pizlo
Reported
2017-09-14 21:21:27 PDT
Patch fhrtchoming.
Attachments
the patch
(23.04 KB, patch)
2017-09-14 21:23 PDT
,
Filip Pizlo
mmaxfield
: review+
Details
Formatted Diff
Diff
View All
Add attachment
proposed patch, testcase, etc.
Filip Pizlo
Comment 1
2017-09-14 21:23:30 PDT
Created
attachment 320866
[details]
the patch
Myles C. Maxfield
Comment 2
2017-09-15 13:28:18 PDT
Comment on
attachment 320866
[details]
the patch View in context:
https://bugs.webkit.org/attachment.cgi?id=320866&action=review
> Tools/WebGPUShadingLanguageRI/Checker.js:182 > + node.type = node.argument.visit(this);
Javascript is awesome. LetExpression dresses up as if it were a VariableDecl and JavaScript just makes it work.
> Tools/WebGPUShadingLanguageRI/EBufferBuilder.js:59 > + node.initializer.visit(this);
lololol. Can we add a test for this?
> Tools/WebGPUShadingLanguageRI/LetExpression.js:42 > + return this.name + "(" + this.argument + ", " + this.body + ")";
|this| doesn't appear to have a "body" value. I know you set it in the parser, but it would aid readability if you put |body| and |argument| in the constructor (and passed undefined to the constructor if necessary).
> Tools/WebGPUShadingLanguageRI/Parse.js:340 > + function doIncrement(token, ptr, extraArg)
"do" is a little misleading. Maybe "emit"?
> Tools/WebGPUShadingLanguageRI/Parse.js:342 > + let args = [new DereferenceExpression(token, VariableRef.wrap(ptr))];
I don't understand why all these Dereference expressions are necessary (lines 342, 352, 362, 413). Why don't we just remove the MakePtrs on lines 359 and 410 and then the Dereferences wouldn't be necessary? Is the reason because, if we did this, it would be impossible to change the value of "b" in the statement "++b"? Because you'd just be changing the LetExpression's ePtr and not the real b?
> Tools/WebGPUShadingLanguageRI/Parse.js:349 > +
Might want to check that |name| is not exactly equal to "operator"
> Tools/WebGPUShadingLanguageRI/Parse.js:361 > + let oldValue = new LetExpression(token);
I think I understand this. Cute.
> Tools/WebGPUShadingLanguageRI/Parse.js:407 > + function finishParsingPreIncrement(token, left, extraArg)
Shouldn't this be called "right"?
> Tools/WebGPUShadingLanguageRI/Parse.js:421 > + let left = parsePossiblePrefix();
Shouldn't this be called "right"?
Filip Pizlo
Comment 3
2017-09-15 13:34:41 PDT
(In reply to Myles C. Maxfield from
comment #2
)
> Comment on
attachment 320866
[details]
> the patch > > View in context: >
https://bugs.webkit.org/attachment.cgi?id=320866&action=review
> > > Tools/WebGPUShadingLanguageRI/Checker.js:182 > > + node.type = node.argument.visit(this); > > Javascript is awesome. LetExpression dresses up as if it were a VariableDecl > and JavaScript just makes it work. > > > Tools/WebGPUShadingLanguageRI/EBufferBuilder.js:59 > > + node.initializer.visit(this); > > lololol. Can we add a test for this?
I'll try!
> > > Tools/WebGPUShadingLanguageRI/LetExpression.js:42 > > + return this.name + "(" + this.argument + ", " + this.body + ")"; > > |this| doesn't appear to have a "body" value. I know you set it in the > parser, but it would aid readability if you put |body| and |argument| in the > constructor (and passed undefined to the constructor if necessary).
Fixed: I initialized them both to null in the constructor.
> > > Tools/WebGPUShadingLanguageRI/Parse.js:340 > > + function doIncrement(token, ptr, extraArg) > > "do" is a little misleading. Maybe "emit"?
Fixed.
> > > Tools/WebGPUShadingLanguageRI/Parse.js:342 > > + let args = [new DereferenceExpression(token, VariableRef.wrap(ptr))]; > > I don't understand why all these Dereference expressions are necessary > (lines 342, 352, 362, 413). Why don't we just remove the MakePtrs on lines > 359 and 410 and then the Dereferences wouldn't be necessary? Is the reason > because, if we did this, it would be impossible to change the value of "b" > in the statement "++b"? Because you'd just be changing the LetExpression's > ePtr and not the real b?
Yeah, then you wouldn't actually be changing the value of the variable.
> > > Tools/WebGPUShadingLanguageRI/Parse.js:349 > > + > > Might want to check that |name| is not exactly equal to "operator"
Fixed.
> > > Tools/WebGPUShadingLanguageRI/Parse.js:361 > > + let oldValue = new LetExpression(token); > > I think I understand this. Cute. > > > Tools/WebGPUShadingLanguageRI/Parse.js:407 > > + function finishParsingPreIncrement(token, left, extraArg) > > Shouldn't this be called "right"?
It's left += extraArg. So, extraArg could be called right, but left is totally left.
> > > Tools/WebGPUShadingLanguageRI/Parse.js:421 > > + let left = parsePossiblePrefix(); > > Shouldn't this be called "right"?
Ditto. Pretty sure it's right.
Filip Pizlo
Comment 4
2017-09-15 13:36:45 PDT
Landed in
https://trac.webkit.org/changeset/222108/webkit
Radar WebKit Bug Importer
Comment 5
2017-09-27 12:27:07 PDT
<
rdar://problem/34693302
>
Myles C. Maxfield
Comment 6
2018-10-13 16:42:07 PDT
Migrated to
https://github.com/gpuweb/WHLSL/issues/135
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug