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

Unified Diff: pkg/front_end/lib/src/fasta/parser/listener.dart

Issue 2567133002: Add support for the new function-type syntax. (Closed)
Patch Set: Fixes after rebase. Created 3 years, 10 months 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: pkg/front_end/lib/src/fasta/parser/listener.dart
diff --git a/pkg/front_end/lib/src/fasta/parser/listener.dart b/pkg/front_end/lib/src/fasta/parser/listener.dart
index 7d5358fbfc1feb79d29b7509eef30e5e459e827e..c819aaace1e332c5b98355abea195e2deb6d2e84 100644
--- a/pkg/front_end/lib/src/fasta/parser/listener.dart
+++ b/pkg/front_end/lib/src/fasta/parser/listener.dart
@@ -244,13 +244,22 @@ class Listener {
void beginFunctionTypeAlias(Token token) {}
- /// Handle the end of a typedef declaration. Substructures:
+ /// Handle the end of a typedef declaration.
+ ///
+ /// If [equals] is null, then we have the following substructures:
/// - Metadata
/// - Return type
/// - Name (identifier)
- /// - Type variables
+ /// - Template variables (type variables to the template)
/// - Formal parameters
- void endFunctionTypeAlias(Token typedefKeyword, Token endToken) {
+ ///
+ /// If [equals] is not null, then the have the following substructures:
+ /// - Metadata
+ /// - Name (identifier)
+ /// - Template variables (type variables to the template)
+ /// - Type (FunctionTypeAnnotation)
+ void endFunctionTypeAlias(
+ Token typedefKeyword, Token equals, Token endToken) {
logEvent("FunctionTypeAlias");
}
@@ -274,7 +283,7 @@ class Listener {
/// - mixin application
/// - implemented types (TypeList)
///
- /// TODO(paulberry,ahe): it seems incosistent that for a named mixin
+ /// TODO(paulberry,ahe): it seems inconsistent that for a named mixin
/// application, the implemented types are a TypeList, whereas for a class
/// declaration, each implemented type is listed separately on the stack, and
/// the number of implemented types is passed as a parameter.
@@ -644,10 +653,18 @@ class Listener {
logEvent("TryStatement");
}
- void endType(Token beginToken, Token endToken) {
+ void handleType(Token beginToken, Token endToken) {
logEvent("Type");
}
+ void handleNoName(Token token) {
+ logEvent("NoName");
+ }
+
+ void handleFunctionType(Token functionToken, Token endToken) {
+ logEvent("FunctionType");
+ }
+
void beginTypeArguments(Token token) {}
void endTypeArguments(int count, Token beginToken, Token endToken) {

Powered by Google App Engine
This is Rietveld 408576698