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

Unified Diff: pkg/front_end/lib/src/fasta/modifier.dart

Issue 2876813002: Implement generalized function types. (Closed)
Patch Set: Address comments. Created 3 years, 7 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/modifier.dart
diff --git a/pkg/front_end/lib/src/fasta/modifier.dart b/pkg/front_end/lib/src/fasta/modifier.dart
index ac6fce6f393e7af7b4a926271e46ac10d3c0c3ee..4b2f5c6e18898939581b59165c63dd4138b38931 100644
--- a/pkg/front_end/lib/src/fasta/modifier.dart
+++ b/pkg/front_end/lib/src/fasta/modifier.dart
@@ -9,6 +9,7 @@ import 'errors.dart' show internalError;
enum ModifierEnum {
Abstract,
Const,
+ Covariant,
External,
Final,
Static,
@@ -21,7 +22,9 @@ const int abstractMask = 1;
const int constMask = abstractMask << 1;
-const int externalMask = constMask << 1;
+const int covariantMask = constMask << 1;
+
+const int externalMask = covariantMask << 1;
const int finalMask = externalMask << 1;
@@ -37,6 +40,9 @@ const Modifier Abstract = const Modifier(ModifierEnum.Abstract, abstractMask);
const Modifier Const = const Modifier(ModifierEnum.Const, constMask);
+const Modifier Covariant =
+ const Modifier(ModifierEnum.Covariant, covariantMask);
+
const Modifier External = const Modifier(ModifierEnum.External, externalMask);
const Modifier Final = const Modifier(ModifierEnum.Final, finalMask);
@@ -56,6 +62,7 @@ class Modifier {
factory Modifier.fromString(String string) {
if (identical('abstract', string)) return Abstract;
if (identical('const', string)) return Const;
+ if (identical('covariant', string)) return Covariant;
if (identical('external', string)) return External;
if (identical('final', string)) return Final;
if (identical('static', string)) return Static;
@@ -66,7 +73,8 @@ class Modifier {
toString() => "modifier(${'$kind'.substring('ModifierEnum.'.length)})";
static int validate(List<Modifier> modifiers, {bool isAbstract: false}) {
- // TODO(ahe): Implement modifier validation: ordering and uniqueness.
+ // TODO(ahe): Rename this method, validation is now taken care of by the
+ // parser.
int result = isAbstract ? abstractMask : 0;
if (modifiers == null) return result;
for (Modifier modifier in modifiers) {
« no previous file with comments | « pkg/front_end/lib/src/fasta/kernel/kernel_library_builder.dart ('k') | pkg/front_end/lib/src/fasta/parser.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698