lue-bird/elm-review-record-alias-constructor/1.1.1

NOTE: the latest version is 1.1.3

NoRecordAliasWithConstructor

rule : Rule

🔧NoRecordAliasWithConstructor forbids directly aliasing a record type. As a consequence, its constructor function becomes unavailable.

Read more about the why in no-record-type-alias-constructor-function.

Use RecordWithoutConstructorFunction when directly aliasing a record type to avoid its constructor function becoming unavailable.

example

type alias User =
    { name : String, age : Int }

will be marked as error and automatically fixed:

import RecordWithoutConstructorFunction exposing (RecordWithoutConstructorFunction)


type alias User =
    RecordWithoutConstructorFunction
        { name : String, age : Int }

configuration

import NoRecordAliasWithConstructor


config : List Rule
config =
    [ NoRecordAliasWithConstructor.rule
    ]

Defaults can be altered by using ruleWith Config.

ruleWith : Config -> Rule

🔧NoRecordAliasWithConstructor forbids directly aliasing a record type. As a consequence, its constructor function becomes unavailable.

Read more about the why in no-record-type-alias-constructor-function.

You can use RecordWithoutConstructorFunction when directly aliasing a record type to avoid its constructor function becoming unavailable.

example

type alias User =
    { name : String, age : Int }

will be marked as error and automatically fixed:

import Util exposing (WithoutConstructorFunction)


type alias User =
    WithoutConstructorFunction
        { name : String, age : Int }

configuration

import NoRecordAliasWithConstructor exposing (importRecordWithoutConstructorFunctionTypeAlias)


config : List Rule
config =
    [ NoRecordAliasWithConstructor.ruleWith
        (NoRecordAliasWithConstructor.configDefault
            |> importRecordWithoutConstructorFunctionTypeAlias
                { moduleName = "Util"
                , typeAliasName = "WithoutConstructorFunction"
                }
        )
    ]

rule simply uses the default Config.

configure

type Config

Configuration where you can specify

The standard Config used for rules without further configuration:

rule =
    NoRecordAliasWithConstructor.ruleWith
        NoRecordAliasWithConstructor.configDefault
{ moduleName : String
, typeAliasName : String
}
-> Config
-> Config

Configure what

module Your.Module exposing (YourRecordWithoutConstructorFunction)


type alias YourRecordWithoutConstructorFunction record =
    record

to import:

import NoRecordAliasWithConstructor exposing (importRecordWithoutConstructorFunctionTypeAlias)


NoRecordAliasWithConstructor.configDefault
    |> importRecordWithoutConstructorFunctionTypeAlias
        { moduleName = "Your.Module"
        , typeAliasName = "YourRecordWithoutConstructorFunction"
        }

configDefault imports RecordWithoutConstructorFunction from lue-bird/elm-no-record-type-alias-constructor-function:

importRecordWithoutConstructorFunctionTypeAlias
    { moduleName = "RecordWithoutConstructorFunction"
    , typeAliasName = "RecordWithoutConstructorFunction"
    }