| Index: pkg/analyzer/lib/error/error.dart
 | 
| diff --git a/pkg/analyzer/lib/error/error.dart b/pkg/analyzer/lib/error/error.dart
 | 
| index 622fe9e3db37b0fd1a22903a4e027f8a8f394357..53a656523dd5f71da7baf05787952e1b1e3d99fc 100644
 | 
| --- a/pkg/analyzer/lib/error/error.dart
 | 
| +++ b/pkg/analyzer/lib/error/error.dart
 | 
| @@ -892,7 +892,7 @@ abstract class ErrorCode {
 | 
|  /**
 | 
|   * The properties that can be associated with an [AnalysisError].
 | 
|   */
 | 
| -class ErrorProperty<V> extends Enum<ErrorProperty> {
 | 
| +class ErrorProperty<V> implements Comparable<ErrorProperty> {
 | 
|    /**
 | 
|     * A property whose value is a list of [FieldElement]s that are final, but
 | 
|     * not initialized by a constructor.
 | 
| @@ -921,13 +921,32 @@ class ErrorProperty<V> extends Enum<ErrorProperty> {
 | 
|      UNIMPLEMENTED_METHODS
 | 
|    ];
 | 
|  
 | 
| -  const ErrorProperty(String name, int ordinal) : super(name, ordinal);
 | 
| +  /**
 | 
| +   * The name of this property.
 | 
| +   */
 | 
| +  final String name;
 | 
| +
 | 
| +  /**
 | 
| +   * The ordinal value of the property.
 | 
| +   */
 | 
| +  final int ordinal;
 | 
| +
 | 
| +  const ErrorProperty(this.name, this.ordinal);
 | 
| +
 | 
| +  @override
 | 
| +  int get hashCode => ordinal;
 | 
| +
 | 
| +  @override
 | 
| +  int compareTo(ErrorProperty other) => ordinal - other.ordinal;
 | 
| +
 | 
| +  @override
 | 
| +  String toString() => name;
 | 
|  }
 | 
|  
 | 
|  /**
 | 
|   * The severity of an [ErrorCode].
 | 
|   */
 | 
| -class ErrorSeverity extends Enum<ErrorSeverity> {
 | 
| +class ErrorSeverity implements Comparable<ErrorSeverity> {
 | 
|    /**
 | 
|     * The severity representing a non-error. This is never used for any error
 | 
|     * code, but is useful for clients.
 | 
| @@ -955,6 +974,16 @@ class ErrorSeverity extends Enum<ErrorSeverity> {
 | 
|    static const List<ErrorSeverity> values = const [NONE, INFO, WARNING, ERROR];
 | 
|  
 | 
|    /**
 | 
| +   * The name of this error code.
 | 
| +   */
 | 
| +  final String name;
 | 
| +
 | 
| +  /**
 | 
| +   * The ordinal value of the error code.
 | 
| +   */
 | 
| +  final int ordinal;
 | 
| +
 | 
| +  /**
 | 
|     * The name of the severity used when producing machine output.
 | 
|     */
 | 
|    final String machineCode;
 | 
| @@ -966,26 +995,30 @@ class ErrorSeverity extends Enum<ErrorSeverity> {
 | 
|  
 | 
|    /**
 | 
|     * Initialize a newly created severity with the given names.
 | 
| -   *
 | 
| -   * Parameters:
 | 
| -   * 0: the name of the severity used when producing machine output
 | 
| -   * 1: the name of the severity used when producing readable output
 | 
|     */
 | 
|    const ErrorSeverity(
 | 
| -      String name, int ordinal, this.machineCode, this.displayName)
 | 
| -      : super(name, ordinal);
 | 
| +      this.name, this.ordinal, this.machineCode, this.displayName);
 | 
| +
 | 
| +  @override
 | 
| +  int get hashCode => ordinal;
 | 
| +
 | 
| +  @override
 | 
| +  int compareTo(ErrorSeverity other) => ordinal - other.ordinal;
 | 
|  
 | 
|    /**
 | 
|     * Return the severity constant that represents the greatest severity.
 | 
|     */
 | 
|    ErrorSeverity max(ErrorSeverity severity) =>
 | 
|        this.ordinal >= severity.ordinal ? this : severity;
 | 
| +
 | 
| +  @override
 | 
| +  String toString() => name;
 | 
|  }
 | 
|  
 | 
|  /**
 | 
|   * The type of an [ErrorCode].
 | 
|   */
 | 
| -class ErrorType extends Enum<ErrorType> {
 | 
| +class ErrorType implements Comparable<ErrorType> {
 | 
|    /**
 | 
|     * Task (todo) comments in user code.
 | 
|     */
 | 
| @@ -1052,6 +1085,16 @@ class ErrorType extends Enum<ErrorType> {
 | 
|    ];
 | 
|  
 | 
|    /**
 | 
| +   * The name of this error type.
 | 
| +   */
 | 
| +  final String name;
 | 
| +
 | 
| +  /**
 | 
| +   * The ordinal value of the error type.
 | 
| +   */
 | 
| +  final int ordinal;
 | 
| +
 | 
| +  /**
 | 
|     * The severity of this type of error.
 | 
|     */
 | 
|    final ErrorSeverity severity;
 | 
| @@ -1060,8 +1103,16 @@ class ErrorType extends Enum<ErrorType> {
 | 
|     * Initialize a newly created error type to have the given [name] and
 | 
|     * [severity].
 | 
|     */
 | 
| -  const ErrorType(String name, int ordinal, this.severity)
 | 
| -      : super(name, ordinal);
 | 
| +  const ErrorType(this.name, this.ordinal, this.severity);
 | 
|  
 | 
|    String get displayName => name.toLowerCase().replaceAll('_', ' ');
 | 
| +
 | 
| +  @override
 | 
| +  int get hashCode => ordinal;
 | 
| +
 | 
| +  @override
 | 
| +  int compareTo(ErrorType other) => ordinal - other.ordinal;
 | 
| +
 | 
| +  @override
 | 
| +  String toString() => name;
 | 
|  }
 | 
| 
 |