'Rupert Smith' via Elm Discuss
2017-09-08 08:35:13 UTC
When I try to compile this:
module Model exposing (..)
type Account
= Account
{ uuid : String
, username : Maybe String
, password : Maybe String
, root : Maybe Bool
, id : Maybe String
}
accountEncoder : Account -> Encode.Value
accountEncoder (Account model) =
[ Just ( "uuid", Encode.string model.uuid )
, Maybe.map (\username -> ( "username", Encode.string username )) model.
username
, Maybe.map (\password -> ( "password", Encode.string password )) model.
password
, Maybe.map (\root -> ( "root", Encode.bool root )) model.root
, Maybe.map (\id -> ( "id", Encode.string id )) model.id
]
|> catMaybes
|> Encode.object
The compiler is somehow blind to the 'uuid' field being there:
-- TYPE MISMATCH --------------------------------- src/auth-client/elm/Model
.elm
`model` does not have a field named `uuid`.
176| [ Just ( "uuid", Encode.string model.uuid )
^^^^^^^^^^
The type of `model` is:
{ id : Maybe String
, password : Maybe String
, roles : Maybe (List Role)
, root : Maybe Bool
, salt : Maybe String
, username : Maybe String
}
Which does not contain a field named `uuid`.
Erm.. what?
Interestingly, if I clear out 'elm-stuff' and try again, it fails but with
different errors relating to other modules, some of which depend on this
one. I don't get this error, but I do get an error in the Account.Service
module which depends on this Model module saying that some of its code
tries to create Accounts without uuids.
I just added the 'uuid' field, and the modules that consume this one do not
yet have it in their code. My hypothesis is that the later modules are
compiling some of the way, some information from that is being written to
disk, and on the next compilation run that information is found to conflict
with the Account type and the compiler comes out with this confusing error
message. I see .elmi and .elmi files under 'elm-stuff' for the
Account.Service module which depends on this one.
Perhaps if the compiler fails to compile a module it should do so more
atomically, and not output a .elmi and .elmo files?
Also, getting different errors on two consecutive compiler runs is not
idempotent behaviour.
Has anyone seen an error like this before? I don't see it in the github
elm-compiler issues, so I though I might try and put together an SSCCE for
it. Which I may manage to do, if my hypothese
module Model exposing (..)
type Account
= Account
{ uuid : String
, username : Maybe String
, password : Maybe String
, root : Maybe Bool
, id : Maybe String
}
accountEncoder : Account -> Encode.Value
accountEncoder (Account model) =
[ Just ( "uuid", Encode.string model.uuid )
, Maybe.map (\username -> ( "username", Encode.string username )) model.
username
, Maybe.map (\password -> ( "password", Encode.string password )) model.
password
, Maybe.map (\root -> ( "root", Encode.bool root )) model.root
, Maybe.map (\id -> ( "id", Encode.string id )) model.id
]
|> catMaybes
|> Encode.object
The compiler is somehow blind to the 'uuid' field being there:
-- TYPE MISMATCH --------------------------------- src/auth-client/elm/Model
.elm
`model` does not have a field named `uuid`.
176| [ Just ( "uuid", Encode.string model.uuid )
^^^^^^^^^^
The type of `model` is:
{ id : Maybe String
, password : Maybe String
, roles : Maybe (List Role)
, root : Maybe Bool
, salt : Maybe String
, username : Maybe String
}
Which does not contain a field named `uuid`.
Erm.. what?
Interestingly, if I clear out 'elm-stuff' and try again, it fails but with
different errors relating to other modules, some of which depend on this
one. I don't get this error, but I do get an error in the Account.Service
module which depends on this Model module saying that some of its code
tries to create Accounts without uuids.
I just added the 'uuid' field, and the modules that consume this one do not
yet have it in their code. My hypothesis is that the later modules are
compiling some of the way, some information from that is being written to
disk, and on the next compilation run that information is found to conflict
with the Account type and the compiler comes out with this confusing error
message. I see .elmi and .elmi files under 'elm-stuff' for the
Account.Service module which depends on this one.
Perhaps if the compiler fails to compile a module it should do so more
atomically, and not output a .elmi and .elmo files?
Also, getting different errors on two consecutive compiler runs is not
idempotent behaviour.
Has anyone seen an error like this before? I don't see it in the github
elm-compiler issues, so I though I might try and put together an SSCCE for
it. Which I may manage to do, if my hypothese
--
You received this message because you are subscribed to the Google Groups "Elm Discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elm-discuss+***@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
You received this message because you are subscribed to the Google Groups "Elm Discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elm-discuss+***@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.