Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 library dart2js.parser; | 5 library dart2js.parser; |
| 6 | 6 |
| 7 import '../common.dart'; | 7 import '../common.dart'; |
| 8 import '../tokens/keyword.dart' show Keyword; | 8 import '../tokens/keyword.dart' show Keyword; |
| 9 import '../tokens/precedence.dart' show PrecedenceInfo; | 9 import '../tokens/precedence.dart' show PrecedenceInfo; |
| 10 import '../tokens/precedence_constants.dart' | 10 import '../tokens/precedence_constants.dart' |
| (...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 355 period = token; | 355 period = token; |
| 356 token = parseIdentifier(token.next); | 356 token = parseIdentifier(token.next); |
| 357 } | 357 } |
| 358 token = parseArgumentsOpt(token); | 358 token = parseArgumentsOpt(token); |
| 359 listener.endMetadata(atToken, period, token); | 359 listener.endMetadata(atToken, period, token); |
| 360 return token; | 360 return token; |
| 361 } | 361 } |
| 362 | 362 |
| 363 Token parseTypedef(Token token) { | 363 Token parseTypedef(Token token) { |
| 364 Token typedefKeyword = token; | 364 Token typedefKeyword = token; |
| 365 listener.beginFunctionTypeAlias(token); | 365 if (optional('=', peekAfterType(token.next))) { |
| 366 token = parseReturnTypeOpt(token.next); | 366 listener.beginNewFunctionTypeAlias(token); |
| 367 token = parseIdentifier(token); | 367 token = parseIdentifier(token.next); |
| 368 token = parseTypeVariablesOpt(token); | 368 token = parseTypeVariablesOpt(token); |
| 369 token = parseFormalParameters(token); | 369 token = expect('=', token); |
| 370 listener.endFunctionTypeAlias(typedefKeyword, token); | 370 token = parseFunctionType(token); |
| 371 listener.endNewFunctionTypeAlias(typedefKeyword, token); | |
| 372 } else { | |
| 373 listener.beginFunctionTypeAlias(token); | |
| 374 token = parseReturnTypeOpt(token.next); | |
| 375 token = parseIdentifier(token); | |
| 376 token = parseTypeVariablesOpt(token); | |
| 377 token = parseFormalParameters(token); | |
| 378 listener.endFunctionTypeAlias(typedefKeyword, token); | |
|
Siggi Cherem (dart-lang)
2016/12/12 23:20:40
a suggestion to make this match closer to what the
floitsch
2016/12/29 19:57:46
Done.
| |
| 379 } | |
| 371 return expect(';', token); | 380 return expect(';', token); |
| 372 } | 381 } |
| 373 | 382 |
| 374 Token parseMixinApplication(Token token) { | 383 Token parseMixinApplication(Token token) { |
| 375 listener.beginMixinApplication(token); | 384 listener.beginMixinApplication(token); |
| 376 token = parseType(token); | 385 token = parseType(token); |
| 377 token = expect('with', token); | 386 token = expect('with', token); |
| 378 token = parseTypeList(token); | 387 token = parseTypeList(token); |
| 379 listener.endMixinApplication(); | 388 listener.endMixinApplication(); |
| 380 return token; | 389 return token; |
| (...skipping 425 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 806 token = parseIdentifier(token); | 815 token = parseIdentifier(token); |
| 807 token = parseQualifiedRestOpt(token); | 816 token = parseQualifiedRestOpt(token); |
| 808 } else { | 817 } else { |
| 809 token = listener.expectedType(token); | 818 token = listener.expectedType(token); |
| 810 } | 819 } |
| 811 token = parseTypeArgumentsOpt(token); | 820 token = parseTypeArgumentsOpt(token); |
| 812 listener.endType(begin, token); | 821 listener.endType(begin, token); |
| 813 return token; | 822 return token; |
| 814 } | 823 } |
| 815 | 824 |
| 825 Token parseFunctionType(Token token) { | |
| 826 Token begin = token; | |
| 827 listener.beginFunctionType(token); | |
| 828 token = parseReturnTypeOpt(token); | |
| 829 // TODO(floitsch): don't use string comparison, but the keyword-state table | |
| 830 // is currently not set up to deal with upper-case characters. | |
|
Siggi Cherem (dart-lang)
2016/12/12 23:20:40
can this count as a reason to switch to `fun` or `
floitsch
2016/12/29 19:57:46
nice try ;)
| |
| 831 if (token.value != "Function") { | |
| 832 return listener.expected("Function", token); | |
| 833 } | |
| 834 token = token.next; | |
| 835 token = parseTypeVariablesOpt(token); | |
| 836 token = parseFormalParameters(token); | |
| 837 listener.endFunctionType(begin, token); | |
| 838 return token; | |
| 839 } | |
| 840 | |
| 816 Token parseTypeArgumentsOpt(Token token) { | 841 Token parseTypeArgumentsOpt(Token token) { |
| 817 return parseStuff( | 842 return parseStuff( |
| 818 token, | 843 token, |
| 819 (t) => listener.beginTypeArguments(t), | 844 (t) => listener.beginTypeArguments(t), |
| 820 (t) => parseType(t), | 845 (t) => parseType(t), |
| 821 (c, bt, et) => listener.endTypeArguments(c, bt, et), | 846 (c, bt, et) => listener.endTypeArguments(c, bt, et), |
| 822 (t) => listener.handleNoTypeArguments(t)); | 847 (t) => listener.handleNoTypeArguments(t)); |
| 823 } | 848 } |
| 824 | 849 |
| 825 Token parseTypeVariablesOpt(Token token) { | 850 Token parseTypeVariablesOpt(Token token) { |
| (...skipping 2143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2969 } | 2994 } |
| 2970 listener.handleContinueStatement(hasTarget, continueKeyword, token); | 2995 listener.handleContinueStatement(hasTarget, continueKeyword, token); |
| 2971 return expectSemicolon(token); | 2996 return expectSemicolon(token); |
| 2972 } | 2997 } |
| 2973 | 2998 |
| 2974 Token parseEmptyStatement(Token token) { | 2999 Token parseEmptyStatement(Token token) { |
| 2975 listener.handleEmptyStatement(token); | 3000 listener.handleEmptyStatement(token); |
| 2976 return expectSemicolon(token); | 3001 return expectSemicolon(token); |
| 2977 } | 3002 } |
| 2978 } | 3003 } |
| OLD | NEW |