// Copyright (c) 2019, 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.

/// An enumeration of lint names.
class LintNames {
  static const String always_declare_return_types =
      'always_declare_return_types';
  static const String always_require_non_null_named_parameters =
      'always_require_non_null_named_parameters';
  static const String always_specify_types = 'always_specify_types';
  static const String annotate_overrides = 'annotate_overrides';
  static const String avoid_annotating_with_dynamic =
      'avoid_annotating_with_dynamic';
  static const String avoid_empty_else = 'avoid_empty_else';
  static const String avoid_function_literals_in_foreach_calls =
      'avoid_function_literals_in_foreach_calls';
  static const String avoid_init_to_null = 'avoid_init_to_null';
  static const String avoid_private_typedef_functions =
      'avoid_private_typedef_functions';
  static const String avoid_redundant_argument_values =
      'avoid_redundant_argument_values';
  static const String avoid_relative_lib_imports = 'avoid_relative_lib_imports';
  static const String avoid_return_types_on_setters =
      'avoid_return_types_on_setters';
  static const String avoid_returning_null_for_future =
      'avoid_returning_null_for_future';
  static const String avoid_returning_null_for_void =
      'avoid_returning_null_for_void';
  static const String avoid_single_cascade_in_expression_statements =
      'avoid_single_cascade_in_expression_statements';
  static const String avoid_types_as_parameter_names =
      'avoid_types_as_parameter_names';
  static const String avoid_types_on_closure_parameters =
      'avoid_types_on_closure_parameters';
  static const String avoid_unused_constructor_parameters =
      'avoid_unused_constructor_parameters';
  static const String await_only_futures = 'await_only_futures';
  static const String curly_braces_in_flow_control_structures =
      'curly_braces_in_flow_control_structures';
  static const String diagnostic_describe_all_properties =
      'diagnostic_describe_all_properties';
  static const String directives_ordering = 'directives_ordering';
  static const String empty_catches = 'empty_catches';
  static const String empty_constructor_bodies = 'empty_constructor_bodies';
  static const String empty_statements = 'empty_statements';
  static const String exhaustive_cases = 'exhaustive_cases';
  static const String hash_and_equals = 'hash_and_equals';
  static const String no_duplicate_case_values = 'no_duplicate_case_values';
  static const String non_constant_identifier_names =
      'non_constant_identifier_names';
  static const String null_closures = 'null_closures';
  static const String omit_local_variable_types = 'omit_local_variable_types';
  static const String prefer_adjacent_string_concatenation =
      'prefer_adjacent_string_concatenation';
  static const String prefer_collection_literals = 'prefer_collection_literals';
  static const String prefer_conditional_assignment =
      'prefer_conditional_assignment';
  static const String prefer_const_constructors = 'prefer_const_constructors';
  static const String prefer_const_constructors_in_immutables =
      'prefer_const_constructors_in_immutables';
  static const String prefer_const_declarations = 'prefer_const_declarations';
  static const String prefer_contains = 'prefer_contains';
  static const String prefer_equal_for_default_values =
      'prefer_equal_for_default_values';
  static const String prefer_expression_function_bodies =
      'prefer_expression_function_bodies';
  static const String prefer_final_fields = 'prefer_final_fields';
  static const String prefer_final_in_for_each = 'prefer_final_in_for_each';
  static const String prefer_final_locals = 'prefer_final_locals';
  static const String prefer_for_elements_to_map_fromIterable =
      'prefer_for_elements_to_map_fromIterable';
  static const String prefer_generic_function_type_aliases =
      'prefer_generic_function_type_aliases';
  static const String prefer_if_elements_to_conditional_expressions =
      'prefer_if_elements_to_conditional_expressions';
  static const String prefer_if_null_operators = 'prefer_if_null_operators';
  static const String prefer_inlined_adds = 'prefer_inlined_adds';
  static const String prefer_int_literals = 'prefer_int_literals';
  static const String prefer_interpolation_to_compose_strings =
      'prefer_interpolation_to_compose_strings';
  static const String prefer_is_empty = 'prefer_is_empty';
  static const String prefer_is_not_empty = 'prefer_is_not_empty';
  static const String prefer_is_not_operator = 'prefer_is_not_operator';
  static const String prefer_iterable_whereType = 'prefer_iterable_whereType';
  static const String prefer_null_aware_operators =
      'prefer_null_aware_operators';
  static const String prefer_relative_imports = 'prefer_relative_imports';
  static const String prefer_single_quotes = 'prefer_single_quotes';
  static const String prefer_spread_collections = 'prefer_spread_collections';
  static const String prefer_typing_uninitialized_variables =
      'prefer_typing_uninitialized_variables';
  static const String slash_for_doc_comments = 'slash_for_doc_comments';
  static const String sort_child_properties_last = 'sort_child_properties_last';
  static const String sort_constructors_first = 'sort_constructors_first';
  static const String type_annotate_public_apis = 'type_annotate_public_apis';
  static const String type_init_formals = 'type_init_formals';
  static const String unawaited_futures = 'unawaited_futures';
  static const String unnecessary_brace_in_string_interps =
      'unnecessary_brace_in_string_interps';
  static const String unnecessary_const = 'unnecessary_const';
  static const String unnecessary_final = 'unnecessary_final';
  static const String unnecessary_lambdas = 'unnecessary_lambdas';
  static const String unnecessary_new = 'unnecessary_new';
  static const String unnecessary_null_in_if_null_operators =
      'unnecessary_null_in_if_null_operators';
  static const String unnecessary_nullable_for_final_variable_declarations =
      'unnecessary_nullable_for_final_variable_declarations';
  static const String unnecessary_overrides = 'unnecessary_overrides';
  static const String unnecessary_parenthesis = 'unnecessary_parenthesis';
  static const String unnecessary_string_interpolations =
      'unnecessary_string_interpolations';
  static const String unnecessary_this = 'unnecessary_this';
  static const String use_full_hex_values_for_flutter_colors =
      'use_full_hex_values_for_flutter_colors';
  static const String use_function_type_syntax_for_parameters =
      'use_function_type_syntax_for_parameters';
  static const String use_rethrow_when_possible = 'use_rethrow_when_possible';
}
