Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(379)

Issue 10957060: First stab at parsing redirecting constructors. (Closed)

Created:
8 years, 3 months ago by Lasse Reichstein Nielsen
Modified:
8 years, 2 months ago
Reviewers:
ahe
CC:
reviews_dartlang.org
Visibility:
Public.

Description

First stab at parsing redirecting constructors. Committed: https://code.google.com/p/dart/source/detail?r=13410

Patch Set 1 #

Patch Set 2 : Parsing correct syntax. #

Total comments: 2

Patch Set 3 : Make a single begin/endRedirectingFactoryBody method in listener. #

Total comments: 12

Patch Set 4 : Address review comments. #

Total comments: 8

Patch Set 5 : Address review comments. #

Total comments: 11

Patch Set 6 : unrolled loops. #

Patch Set 7 : Address review comments. Add test exceptions. #

Unified diffs Side-by-side diffs Delta from patch set Stats (+148 lines, -12 lines) Patch
M lib/compiler/implementation/resolver.dart View 1 2 3 4 5 6 1 chunk +3 lines, -0 lines 0 comments Download
M lib/compiler/implementation/scanner/listener.dart View 1 2 3 4 5 3 chunks +39 lines, -6 lines 0 comments Download
M lib/compiler/implementation/scanner/parser.dart View 1 2 3 4 5 6 4 chunks +49 lines, -5 lines 0 comments Download
M lib/compiler/implementation/tree/nodes.dart View 1 2 3 4 5 6 2 chunks +3 lines, -1 line 0 comments Download
M lib/compiler/implementation/tree/unparser.dart View 1 2 3 4 5 6 1 chunk +3 lines, -0 lines 0 comments Download
M lib/compiler/implementation/tree_validator.dart View 1 2 3 4 5 6 1 chunk +8 lines, -0 lines 0 comments Download
M tests/co19/co19-dart2js.status View 1 2 3 4 5 6 1 chunk +4 lines, -0 lines 0 comments Download
M tests/compiler/dart2js/unparser_test.dart View 1 2 3 4 5 2 chunks +36 lines, -0 lines 0 comments Download
M tests/language/language_dart2js.status View 1 2 3 4 5 6 1 chunk +3 lines, -0 lines 0 comments Download

Messages

Total messages: 14 (0 generated)
Lasse Reichstein Nielsen
Is it something like this we need?
8 years, 3 months ago (2012-09-24 13:06:41 UTC) #1
Lasse Reichstein Nielsen
Nope, not good enough - doesn't handle factory C() => foo.Bar<T,int>.baz; It must parse not ...
8 years, 3 months ago (2012-09-24 13:48:37 UTC) #2
Lasse Reichstein Nielsen
That should ofcourse be: factory C() = foo.Bar<T,int>.baz;
8 years, 3 months ago (2012-09-24 13:49:15 UTC) #3
Lasse Reichstein Nielsen
Please take a look. This should parse the correct syntax (and then bail-out in the ...
8 years, 2 months ago (2012-09-26 07:45:12 UTC) #4
ahe
http://codereview.chromium.org/10957060/diff/5001/lib/compiler/implementation/scanner/parser.dart File lib/compiler/implementation/scanner/parser.dart (right): http://codereview.chromium.org/10957060/diff/5001/lib/compiler/implementation/scanner/parser.dart#newcode998 lib/compiler/implementation/scanner/parser.dart:998: Token parseRedirectingFactoryBody(Token token) { listener.beginFoo http://codereview.chromium.org/10957060/diff/5001/lib/compiler/implementation/scanner/parser.dart#newcode1013 lib/compiler/implementation/scanner/parser.dart:1013: listener.endReturnStatement(true, equals, ...
8 years, 2 months ago (2012-09-26 10:42:55 UTC) #5
Lasse Reichstein Nielsen
PTAL
8 years, 2 months ago (2012-09-26 14:36:05 UTC) #6
ahe
Much better. But I got more ideas :-) http://codereview.chromium.org/10957060/diff/10001/lib/compiler/implementation/resolver.dart File lib/compiler/implementation/resolver.dart (right): http://codereview.chromium.org/10957060/diff/10001/lib/compiler/implementation/resolver.dart#newcode1630 lib/compiler/implementation/resolver.dart:1630: if ...
8 years, 2 months ago (2012-09-26 14:51:09 UTC) #7
Lasse Reichstein Nielsen
PTAL http://codereview.chromium.org/10957060/diff/10001/lib/compiler/implementation/resolver.dart File lib/compiler/implementation/resolver.dart (right): http://codereview.chromium.org/10957060/diff/10001/lib/compiler/implementation/resolver.dart#newcode1630 lib/compiler/implementation/resolver.dart:1630: if (node.beginToken.stringValue === '=') { On 2012/09/26 14:51:09, ...
8 years, 2 months ago (2012-09-27 11:50:59 UTC) #8
Lasse Reichstein Nielsen
Ping too.
8 years, 2 months ago (2012-10-05 08:10:30 UTC) #9
ahe
https://codereview.chromium.org/10957060/diff/11005/lib/compiler/implementation/scanner/listener.dart File lib/compiler/implementation/scanner/listener.dart (right): https://codereview.chromium.org/10957060/diff/11005/lib/compiler/implementation/scanner/listener.dart#newcode1183 lib/compiler/implementation/scanner/listener.dart:1183: new NewExpression(start, new Send(null, target, noArguments)); We can't have ...
8 years, 2 months ago (2012-10-05 08:23:19 UTC) #10
Lasse Reichstein Nielsen
https://codereview.chromium.org/10957060/diff/11005/lib/compiler/implementation/scanner/listener.dart File lib/compiler/implementation/scanner/listener.dart (right): https://codereview.chromium.org/10957060/diff/11005/lib/compiler/implementation/scanner/listener.dart#newcode1183 lib/compiler/implementation/scanner/listener.dart:1183: new NewExpression(start, new Send(null, target, noArguments)); On 2012/10/05 08:23:20, ...
8 years, 2 months ago (2012-10-09 09:46:54 UTC) #11
ahe
LGTM https://codereview.chromium.org/10957060/diff/23001/lib/compiler/implementation/scanner/listener.dart File lib/compiler/implementation/scanner/listener.dart (right): https://codereview.chromium.org/10957060/diff/23001/lib/compiler/implementation/scanner/listener.dart#newcode1661 lib/compiler/implementation/scanner/listener.dart:1661: for (;;) { Could you unfold this loop ...
8 years, 2 months ago (2012-10-09 10:51:37 UTC) #12
Lasse Reichstein Nielsen
https://codereview.chromium.org/10957060/diff/23001/lib/compiler/implementation/scanner/listener.dart File lib/compiler/implementation/scanner/listener.dart (right): https://codereview.chromium.org/10957060/diff/23001/lib/compiler/implementation/scanner/listener.dart#newcode1661 lib/compiler/implementation/scanner/listener.dart:1661: for (;;) { On 2012/10/09 10:51:37, ahe wrote: > ...
8 years, 2 months ago (2012-10-09 11:51:26 UTC) #13
ahe
8 years, 2 months ago (2012-10-09 12:16:51 UTC) #14
https://codereview.chromium.org/10957060/diff/23001/lib/compiler/implementati...
File lib/compiler/implementation/scanner/parser.dart (right):

https://codereview.chromium.org/10957060/diff/23001/lib/compiler/implementati...
lib/compiler/implementation/scanner/parser.dart:1054: Token
parseQualifiedPart(Token token) {
On 2012/10/09 11:51:26, Lasse Reichstein Nielsen wrote:
> because I didn't want to duplicate the code, but it has no obvious use outside
> this function.

There is no reason to create extra overhead by creating a closure each time.
Please don't do it in the parser.

Also, there is always a use for the function outside this method. It is not like
we have tried keeping the number of parseFoo methods small.

> If I had a better loop construct, I wouldn't need it.

Powered by Google App Engine
This is Rietveld 408576698