module Steep::Diagnostic::Ruby

def self.all_error

def self.all_error
  @all_error ||= ALL.each.with_object({}) do |klass, hash| #$ Hash[singleton(Base), LSPFormatter::severity]
    hash[klass] = LSPFormatter::ERROR
  end.freeze
end

def self.default

def self.default
  @default ||= _ = all_error.merge(
    {
      AnnotationSyntaxError => :error,
      ArgumentTypeMismatch => :error,
      BlockBodyTypeMismatch => :warning,
      BlockTypeMismatch => :warning,
      BreakTypeMismatch => :hint,
      DeprecatedReference => :warning,
      DifferentMethodParameterKind => :hint,
      FallbackAny => :hint,
      FalseAssertion => :hint,
      ImplicitBreakValueMismatch => :hint,
      IncompatibleAnnotation => :hint,
      IncompatibleArgumentForwarding => :warning,
      IncompatibleAssignment => :hint,
      InsufficientKeywordArguments => :error,
      InsufficientPositionalArguments => :error,
      InsufficientTypeArgument => :hint,
      InvalidIgnoreComment => :warning,
      RedundantIgnoreComment => :warning,
      MethodArityMismatch => :error,
      MethodBodyTypeMismatch => :error,
      MethodDefinitionInUndeclaredModule => :information,
      MethodDefinitionMissing => nil,
      MethodParameterMismatch => :error,
      MethodReturnTypeAnnotationMismatch => :hint,
      MultipleAssignmentConversionError => :hint,
      LibraryRBSError => :error,
      NoMethod => :error,
      ProcHintIgnored => :hint,
      ProcTypeExpected => :hint,
      RBSError => :information,
      RequiredBlockMissing => :error,
      ReturnTypeMismatch => :error,
      SetterBodyTypeMismatch => :information,
      SetterReturnTypeMismatch => :information,
      ClassModuleMismatch => :error,
      SyntaxError => :information,
      TypeArgumentMismatchError => :hint,
      UnannotatedEmptyCollection => :warning,
      UndeclaredMethodDefinition => :warning,
      UnexpectedBlockGiven => :warning,
      UnexpectedDynamicMethod => :hint,
      UnexpectedError => :hint,
      UnexpectedJump => :hint,
      UnexpectedJumpValue => :hint,
      UnexpectedKeywordArgument => :error,
      UnexpectedPositionalArgument => :error,
      UnexpectedSuper => :information,
      UnexpectedTypeArgument => :hint,
      UnexpectedYield => :warning,
      UnknownConstant => :warning,
      UnknownGlobalVariable => :warning,
      UnknownRecordKey => :information,
      UnknownInstanceVariable => :information,
      UnreachableBranch => :hint,
      UnreachableValueBranch => :hint,
      UnresolvedOverloading => :error,
      UnsatisfiableConstraint => :hint,
      UnsupportedSyntax => :hint,
    }
  ).freeze
end

def self.lenient

def self.lenient
  @lenient ||= _ = all_error.merge(
    {
      AnnotationSyntaxError => :error,
      ArgumentTypeMismatch => :information,
      BlockBodyTypeMismatch => :information,
      BlockTypeMismatch => :information,
      BreakTypeMismatch => :hint,
      DeprecatedReference => :warning,
      DifferentMethodParameterKind => nil,
      FallbackAny => nil,
      FalseAssertion => nil,
      ImplicitBreakValueMismatch => nil,
      IncompatibleAnnotation => nil,
      IncompatibleArgumentForwarding => :information,
      IncompatibleAssignment => :hint,
      InsufficientKeywordArguments => :information,
      InsufficientPositionalArguments => :information,
      InsufficientTypeArgument => nil,
      InvalidIgnoreComment => :warning,
      RedundantIgnoreComment => :hint,
      MethodArityMismatch => :information,
      MethodBodyTypeMismatch => :warning,
      MethodDefinitionInUndeclaredModule => :hint,
      MethodDefinitionMissing => nil,
      MethodParameterMismatch => :warning,
      MethodReturnTypeAnnotationMismatch => nil,
      MultipleAssignmentConversionError => nil,
      LibraryRBSError => :error,
      NoMethod => :information,
      ProcHintIgnored => nil,
      ProcTypeExpected => nil,
      RBSError => :information,
      RequiredBlockMissing => :hint,
      ReturnTypeMismatch => :warning,
      SetterBodyTypeMismatch => nil,
      SetterReturnTypeMismatch => nil,
      ClassModuleMismatch => nil,
      SyntaxError => :information,
      TypeArgumentMismatchError => nil,
      UnannotatedEmptyCollection => :hint,
      UndeclaredMethodDefinition => :information,
      UnexpectedBlockGiven => :hint,
      UnexpectedDynamicMethod => nil,
      UnexpectedError => :hint,
      UnexpectedJump => nil,
      UnexpectedJumpValue => nil,
      UnexpectedKeywordArgument => :information,
      UnexpectedPositionalArgument => :information,
      UnexpectedSuper => nil,
      UnexpectedTypeArgument => nil,
      UnexpectedYield => :information,
      UnknownConstant => :hint,
      UnknownGlobalVariable => :hint,
      UnknownRecordKey => :hint,
      UnknownInstanceVariable => :hint,
      UnreachableBranch => :hint,
      UnreachableValueBranch => :hint,
      UnresolvedOverloading => :information,
      UnsatisfiableConstraint => :hint,
      UnsupportedSyntax => :hint,
    }
  ).freeze
end

def self.silent

def self.silent
  @silent ||= ALL.each.with_object({}) do |klass, hash| #$ template
    hash[klass] = nil
  end.freeze
end

def self.strict

def self.strict
  @strict ||= _ = all_error.merge(
    {
      AnnotationSyntaxError => :error,
      ArgumentTypeMismatch => :error,
      BlockBodyTypeMismatch => :error,
      BlockTypeMismatch => :error,
      BreakTypeMismatch => :error,
      DeprecatedReference => :warning,
      DifferentMethodParameterKind => :error,
      FallbackAny => :warning,
      FalseAssertion => :error,
      ImplicitBreakValueMismatch => :information,
      IncompatibleAnnotation => :error,
      IncompatibleArgumentForwarding => :error,
      IncompatibleAssignment => :error,
      InsufficientKeywordArguments => :error,
      InsufficientPositionalArguments => :error,
      InsufficientTypeArgument => :error,
      InvalidIgnoreComment => :warning,
      RedundantIgnoreComment => :warning,
      MethodArityMismatch => :error,
      MethodBodyTypeMismatch => :error,
      MethodDefinitionInUndeclaredModule => :warning,
      MethodDefinitionMissing => :hint,
      MethodParameterMismatch => :error,
      MethodReturnTypeAnnotationMismatch => :error,
      MultipleAssignmentConversionError => :error,
      NoMethod => :error,
      ProcHintIgnored => :information,
      ProcTypeExpected => :error,
      RBSError => :error,
      RequiredBlockMissing => :error,
      ReturnTypeMismatch => :error,
      SetterBodyTypeMismatch => :error,
      SetterReturnTypeMismatch => :error,
      ClassModuleMismatch => :error,
      SyntaxError => :information,
      TypeArgumentMismatchError => :error,
      UnannotatedEmptyCollection => :error,
      UndeclaredMethodDefinition => :warning,
      UnexpectedBlockGiven => :error,
      UnexpectedDynamicMethod => :information,
      UnexpectedError => :information,
      UnexpectedJump => :error,
      UnexpectedJumpValue => :error,
      UnexpectedKeywordArgument => :error,
      UnexpectedPositionalArgument => :error,
      UnexpectedSuper => :error,
      UnexpectedTypeArgument => :error,
      UnexpectedYield => :error,
      UnknownConstant => :error,
      UnknownGlobalVariable => :error,
      UnknownRecordKey => :warning,
      UnknownInstanceVariable => :error,
      UnreachableBranch => :information,
      UnreachableValueBranch => :warning,
      UnresolvedOverloading => :error,
      UnsatisfiableConstraint => :error,
      UnsupportedSyntax => :information,
    }
  ).freeze
end