packages feed

hydra-0.14.0: src/gen-main/haskell/Hydra/Show/Error/Core.hs

-- Note: this is an automatically generated file. Do not edit.

-- | String representations of hydra.error.core types

module Hydra.Show.Error.Core where

import qualified Hydra.Core as Core
import qualified Hydra.Error.Core as Core_
import qualified Hydra.Lib.Literals as Literals
import qualified Hydra.Lib.Strings as Strings
import qualified Hydra.Show.Core as Core__
import qualified Hydra.Show.Meta as Meta
import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)
import qualified Data.ByteString as B
import qualified Data.Int as I
import qualified Data.List as L
import qualified Data.Map as M
import qualified Data.Set as S

-- | Show a constant condition error as a string
constantConditionError :: Core_.ConstantConditionError -> String
constantConditionError e =
    Strings.cat [
      "constant condition: ifElse with literal ",
      (Literals.showBoolean (Core_.constantConditionErrorValue e))]

-- | Show a duplicate binding error as a string
duplicateBindingError :: Core_.DuplicateBindingError -> String
duplicateBindingError e =
    Strings.cat [
      "duplicate binding: ",
      (Core.unName (Core_.duplicateBindingErrorName e))]

-- | Show a duplicate field error as a string
duplicateFieldError :: Core_.DuplicateFieldError -> String
duplicateFieldError e =
    Strings.cat [
      "duplicate field: ",
      (Core.unName (Core_.duplicateFieldErrorName e))]

-- | Show a duplicate record type field names error as a string
duplicateRecordTypeFieldNamesError :: Core_.DuplicateRecordTypeFieldNamesError -> String
duplicateRecordTypeFieldNamesError e =
    Strings.cat [
      "duplicate field in record type: ",
      (Core.unName (Core_.duplicateRecordTypeFieldNamesErrorName e))]

-- | Show a duplicate union type field names error as a string
duplicateUnionTypeFieldNamesError :: Core_.DuplicateUnionTypeFieldNamesError -> String
duplicateUnionTypeFieldNamesError e =
    Strings.cat [
      "duplicate field in union type: ",
      (Core.unName (Core_.duplicateUnionTypeFieldNamesErrorName e))]

-- | Show an empty case statement error as a string
emptyCaseStatementError :: Core_.EmptyCaseStatementError -> String
emptyCaseStatementError e =
    Strings.cat [
      "empty case statement for type: ",
      (Core.unName (Core_.emptyCaseStatementErrorTypeName e))]

-- | Show an empty let bindings error as a string
emptyLetBindingsError :: t0 -> String
emptyLetBindingsError e = "let expression with no bindings"

-- | Show an empty record type error as a string
emptyRecordTypeError :: t0 -> String
emptyRecordTypeError e = "record type with no fields (use TypeUnit instead)"

-- | Show an empty term annotation error as a string
emptyTermAnnotationError :: t0 -> String
emptyTermAnnotationError e = "term annotation with empty annotation map"

-- | Show an empty type annotation error as a string
emptyTypeAnnotationError :: t0 -> String
emptyTypeAnnotationError e = "type annotation with empty annotation map"

-- | Show an empty type name in term error as a string
emptyTypeNameInTermError :: t0 -> String
emptyTypeNameInTermError e = "term with empty type name"

-- | Show an empty union type error as a string
emptyUnionTypeError :: t0 -> String
emptyUnionTypeError e = "union type with no alternatives (use TypeVoid instead)"

-- | Show an invalid forall parameter name error as a string
invalidForallParameterNameError :: Core_.InvalidForallParameterNameError -> String
invalidForallParameterNameError e =
    Strings.cat [
      "invalid forall parameter name: ",
      (Core.unName (Core_.invalidForallParameterNameErrorName e))]

-- | Show an invalid lambda parameter name error as a string
invalidLambdaParameterNameError :: Core_.InvalidLambdaParameterNameError -> String
invalidLambdaParameterNameError e =
    Strings.cat [
      "invalid lambda parameter name: ",
      (Core.unName (Core_.invalidLambdaParameterNameErrorName e))]

-- | Show an invalid let binding name error as a string
invalidLetBindingNameError :: Core_.InvalidLetBindingNameError -> String
invalidLetBindingNameError e =
    Strings.cat [
      "invalid let binding name: ",
      (Core.unName (Core_.invalidLetBindingNameErrorName e))]

-- | Show an invalid term error as a string
invalidTermError :: Core_.InvalidTermError -> String
invalidTermError e =
    Strings.cat2 "invalid term: " (case e of
      Core_.InvalidTermErrorConstantCondition v0 -> constantConditionError v0
      Core_.InvalidTermErrorDuplicateBinding v0 -> duplicateBindingError v0
      Core_.InvalidTermErrorDuplicateField v0 -> duplicateFieldError v0
      Core_.InvalidTermErrorEmptyCaseStatement v0 -> emptyCaseStatementError v0
      Core_.InvalidTermErrorEmptyLetBindings v0 -> emptyLetBindingsError v0
      Core_.InvalidTermErrorEmptyTermAnnotation v0 -> emptyTermAnnotationError v0
      Core_.InvalidTermErrorEmptyTypeNameInTerm v0 -> emptyTypeNameInTermError v0
      Core_.InvalidTermErrorInvalidLambdaParameterName v0 -> invalidLambdaParameterNameError v0
      Core_.InvalidTermErrorInvalidLetBindingName v0 -> invalidLetBindingNameError v0
      Core_.InvalidTermErrorInvalidTypeLambdaParameterName v0 -> invalidTypeLambdaParameterNameError v0
      Core_.InvalidTermErrorNestedTermAnnotation v0 -> nestedTermAnnotationError v0
      Core_.InvalidTermErrorRedundantWrapUnwrap v0 -> redundantWrapUnwrapError v0
      Core_.InvalidTermErrorSelfApplication v0 -> selfApplicationError v0
      Core_.InvalidTermErrorTermVariableShadowing v0 -> termVariableShadowingError v0
      Core_.InvalidTermErrorTypeVariableShadowingInTypeLambda v0 -> typeVariableShadowingInTypeLambdaError v0
      Core_.InvalidTermErrorUndefinedTermVariable v0 -> undefinedTermVariableError v0
      Core_.InvalidTermErrorUndefinedTypeVariableInBindingType v0 -> undefinedTypeVariableInBindingTypeError v0
      Core_.InvalidTermErrorUndefinedTypeVariableInLambdaDomain v0 -> undefinedTypeVariableInLambdaDomainError v0
      Core_.InvalidTermErrorUndefinedTypeVariableInTypeApplication v0 -> undefinedTypeVariableInTypeApplicationError v0
      Core_.InvalidTermErrorUnknownPrimitiveName v0 -> unknownPrimitiveNameError v0
      Core_.InvalidTermErrorUnnecessaryIdentityApplication v0 -> unnecessaryIdentityApplicationError v0
      Core_.InvalidTermErrorUntypedTermVariable v0 -> untypedTermVariableError v0)

-- | Show an invalid type error as a string
invalidTypeError :: Core_.InvalidTypeError -> String
invalidTypeError e =
    Strings.cat2 "invalid type: " (case e of
      Core_.InvalidTypeErrorDuplicateRecordTypeFieldNames v0 -> duplicateRecordTypeFieldNamesError v0
      Core_.InvalidTypeErrorDuplicateUnionTypeFieldNames v0 -> duplicateUnionTypeFieldNamesError v0
      Core_.InvalidTypeErrorEmptyRecordType v0 -> emptyRecordTypeError v0
      Core_.InvalidTypeErrorEmptyTypeAnnotation v0 -> emptyTypeAnnotationError v0
      Core_.InvalidTypeErrorEmptyUnionType v0 -> emptyUnionTypeError v0
      Core_.InvalidTypeErrorInvalidForallParameterName v0 -> invalidForallParameterNameError v0
      Core_.InvalidTypeErrorInvalidTypeSchemeVariableName v0 -> invalidTypeSchemeVariableNameError v0
      Core_.InvalidTypeErrorNestedTypeAnnotation v0 -> nestedTypeAnnotationError v0
      Core_.InvalidTypeErrorNonComparableMapKeyType v0 -> nonComparableMapKeyTypeError v0
      Core_.InvalidTypeErrorNonComparableSetElementType v0 -> nonComparableSetElementTypeError v0
      Core_.InvalidTypeErrorSingleVariantUnion v0 -> singleVariantUnionError v0
      Core_.InvalidTypeErrorTypeVariableShadowingInForall v0 -> typeVariableShadowingInForallError v0
      Core_.InvalidTypeErrorUndefinedTypeVariable v0 -> undefinedTypeVariableError v0
      Core_.InvalidTypeErrorVoidInNonBottomPosition v0 -> voidInNonBottomPositionError v0)

-- | Show an invalid type lambda parameter name error as a string
invalidTypeLambdaParameterNameError :: Core_.InvalidTypeLambdaParameterNameError -> String
invalidTypeLambdaParameterNameError e =
    Strings.cat [
      "invalid type lambda parameter name: ",
      (Core.unName (Core_.invalidTypeLambdaParameterNameErrorName e))]

-- | Show an invalid type scheme variable name error as a string
invalidTypeSchemeVariableNameError :: Core_.InvalidTypeSchemeVariableNameError -> String
invalidTypeSchemeVariableNameError e =
    Strings.cat [
      "invalid type scheme variable name: ",
      (Core.unName (Core_.invalidTypeSchemeVariableNameErrorName e))]

-- | Show a nested term annotation error as a string
nestedTermAnnotationError :: t0 -> String
nestedTermAnnotationError e = "nested term annotations should be merged"

-- | Show a nested type annotation error as a string
nestedTypeAnnotationError :: t0 -> String
nestedTypeAnnotationError e = "nested type annotations should be merged"

-- | Show a non-comparable map key type error as a string
nonComparableMapKeyTypeError :: Core_.NonComparableMapKeyTypeError -> String
nonComparableMapKeyTypeError e =
    Strings.cat [
      "map key type contains a function type: ",
      (Core__.type_ (Core_.nonComparableMapKeyTypeErrorKeyType e))]

-- | Show a non-comparable set element type error as a string
nonComparableSetElementTypeError :: Core_.NonComparableSetElementTypeError -> String
nonComparableSetElementTypeError e =
    Strings.cat [
      "set element type contains a function type: ",
      (Core__.type_ (Core_.nonComparableSetElementTypeErrorElementType e))]

-- | Show a redundant wrap/unwrap error as a string
redundantWrapUnwrapError :: Core_.RedundantWrapUnwrapError -> String
redundantWrapUnwrapError e =
    Strings.cat [
      "redundant wrap/unwrap for type: ",
      (Core.unName (Core_.redundantWrapUnwrapErrorTypeName e))]

-- | Show a self-application error as a string
selfApplicationError :: Core_.SelfApplicationError -> String
selfApplicationError e =
    Strings.cat [
      "self-application of variable: ",
      (Core.unName (Core_.selfApplicationErrorName e))]

-- | Show a single variant union error as a string
singleVariantUnionError :: Core_.SingleVariantUnionError -> String
singleVariantUnionError e =
    Strings.cat [
      "union type with single variant: ",
      (Core.unName (Core_.singleVariantUnionErrorFieldName e))]

-- | Show a term variable shadowing error as a string
termVariableShadowingError :: Core_.TermVariableShadowingError -> String
termVariableShadowingError e =
    Strings.cat [
      "variable shadowing: ",
      (Core.unName (Core_.termVariableShadowingErrorName e))]

-- | Show a type variable shadowing in forall error as a string
typeVariableShadowingInForallError :: Core_.TypeVariableShadowingInForallError -> String
typeVariableShadowingInForallError e =
    Strings.cat [
      "type variable shadowing in forall: ",
      (Core.unName (Core_.typeVariableShadowingInForallErrorName e))]

-- | Show a type variable shadowing in type lambda error as a string
typeVariableShadowingInTypeLambdaError :: Core_.TypeVariableShadowingInTypeLambdaError -> String
typeVariableShadowingInTypeLambdaError e =
    Strings.cat [
      "type variable shadowing in type lambda: ",
      (Core.unName (Core_.typeVariableShadowingInTypeLambdaErrorName e))]

-- | Show an undefined field error as a string
undefinedFieldError :: Core_.UndefinedFieldError -> String
undefinedFieldError e =

      let fname = Core_.undefinedFieldErrorFieldName e
          tname = Core_.undefinedFieldErrorTypeName e
      in (Strings.cat [
        "no such field \"",
        (Core.unName fname),
        "\" in type \"",
        (Core.unName tname),
        "\""])

-- | Show an undefined term variable error as a string
undefinedTermVariableError :: Core_.UndefinedTermVariableError -> String
undefinedTermVariableError e =
    Strings.cat [
      "undefined term variable: ",
      (Core.unName (Core_.undefinedTermVariableErrorName e))]

-- | Show an undefined type variable error as a string
undefinedTypeVariableError :: Core_.UndefinedTypeVariableError -> String
undefinedTypeVariableError e =
    Strings.cat [
      "undefined type variable: ",
      (Core.unName (Core_.undefinedTypeVariableErrorName e))]

-- | Show an undefined type variable in binding type error as a string
undefinedTypeVariableInBindingTypeError :: Core_.UndefinedTypeVariableInBindingTypeError -> String
undefinedTypeVariableInBindingTypeError e =
    Strings.cat [
      "undefined type variable in binding type: ",
      (Core.unName (Core_.undefinedTypeVariableInBindingTypeErrorName e))]

-- | Show an undefined type variable in lambda domain error as a string
undefinedTypeVariableInLambdaDomainError :: Core_.UndefinedTypeVariableInLambdaDomainError -> String
undefinedTypeVariableInLambdaDomainError e =
    Strings.cat [
      "undefined type variable in lambda domain: ",
      (Core.unName (Core_.undefinedTypeVariableInLambdaDomainErrorName e))]

-- | Show an undefined type variable in type application error as a string
undefinedTypeVariableInTypeApplicationError :: Core_.UndefinedTypeVariableInTypeApplicationError -> String
undefinedTypeVariableInTypeApplicationError e =
    Strings.cat [
      "undefined type variable in type application: ",
      (Core.unName (Core_.undefinedTypeVariableInTypeApplicationErrorName e))]

-- | Show an unexpected term variant error as a string
unexpectedTermVariantError :: Core_.UnexpectedTermVariantError -> String
unexpectedTermVariantError e =

      let expected = Core_.unexpectedTermVariantErrorExpectedVariant e
          actual = Core_.unexpectedTermVariantErrorActualTerm e
      in (Strings.cat [
        "expected ",
        (Meta.termVariant expected),
        " term but found ",
        (Core__.term actual)])

-- | Show an unexpected type variant error as a string
unexpectedTypeVariantError :: Core_.UnexpectedTypeVariantError -> String
unexpectedTypeVariantError e =

      let expected = Core_.unexpectedTypeVariantErrorExpectedVariant e
          actual = Core_.unexpectedTypeVariantErrorActualType e
      in (Strings.cat [
        "expected ",
        (Meta.typeVariant expected),
        " type but found ",
        (Core__.type_ actual)])

-- | Show an unknown primitive name error as a string
unknownPrimitiveNameError :: Core_.UnknownPrimitiveNameError -> String
unknownPrimitiveNameError e =
    Strings.cat [
      "unknown primitive: ",
      (Core.unName (Core_.unknownPrimitiveNameErrorName e))]

-- | Show an unnecessary identity application error as a string
unnecessaryIdentityApplicationError :: t0 -> String
unnecessaryIdentityApplicationError e = "unnecessary application of identity lambda"

-- | Show an untyped term variable error as a string
untypedTermVariableError :: Core_.UntypedTermVariableError -> String
untypedTermVariableError e =
    Strings.cat [
      "untyped term variable: ",
      (Core.unName (Core_.untypedTermVariableErrorName e))]

-- | Show a void in non-bottom position error as a string
voidInNonBottomPositionError :: t0 -> String
voidInNonBottomPositionError e = "TypeVoid in a position where no value can be constructed"