| 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) {
|
|
|