// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

import 'package:meta/meta.dart';

/// The top-level type inference error.
class TopLevelInferenceError {
  /// The kind of the error.
  final TopLevelInferenceErrorKind kind;

  /// The [kind] specific arguments.
  final List<String> arguments;

  TopLevelInferenceError({
    @required this.kind,
    @required this.arguments,
  });
}

/// Enum used to indicate the kind of the error during top-level inference.
enum TopLevelInferenceErrorKind {
  none,
  assignment,
  instanceGetter,
  dependencyCycle,
  overrideConflictFieldType,
  overrideNoCombinedSuperSignature,
}
