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

Unified Diff: frog/parser.dart

Issue 8788004: Fixing parsing of factories. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: updated minfrog Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: frog/parser.dart
diff --git a/frog/parser.dart b/frog/parser.dart
index baa5ee7545630f48d708af45626f757f5076e69b..7e7310dadc8a4712c5adf6b767e6800585a2d0c0 100644
--- a/frog/parser.dart
+++ b/frog/parser.dart
@@ -252,7 +252,14 @@ class Parser {
var _factory = null;
if (_maybeEat(TokenKind.FACTORY)) {
- _factory = type();
+ // Note: this can't be type(), because for some strange reason these are
+ // type parameters, not type arguments.
+ _factory = nameTypeReference();
+ if (_peekKind(TokenKind.LT)) {
+ // TODO(jmesserly): not sure what to do with these. They aren't used for
+ // anything as far as I can tell.
jimhug 2011/12/08 16:24:30 Just hold your nose and parse them <smile/frown>
+ typeParameters();
+ }
}
var body = [];
@@ -1530,7 +1537,7 @@ class Parser {
return types;
}
- type([int depth = 0]) {
+ nameTypeReference() {
int start = _peekToken.start;
var name;
var names = null;
@@ -1557,8 +1564,11 @@ class Parser {
names.add(identifier());
}
- var typeRef = new NameTypeReference(isFinal, name, names,
- _makeSpan(start));
+ return new NameTypeReference(isFinal, name, names, _makeSpan(start));
+ }
+
+ type([int depth = 0]) {
+ var typeRef = nameTypeReference();
if (_peekKind(TokenKind.LT)) {
return addTypeArguments(typeRef, depth);
« no previous file with comments | « frog/minfrog ('k') | tests/language/language.status » ('j') | tests/language/language.status » ('J')

Powered by Google App Engine
This is Rietveld 408576698