Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
clean-compiler-and-rts
compiler
Commits
da050a44
Commit
da050a44
authored
Oct 25, 2017
by
John van Groningen
Browse files
report error for deriving a generic instance of an extensible algebraic type
parent
6424da60
Changes
1
Hide whitespace changes
Inline
Side-by-side
frontend/generics1.icl
View file @
da050a44
...
...
@@ -264,11 +264,17 @@ where
build_generic_type_rep
td_rhs
type_def_ident
glob_module
glob_object
td_info
g_ident_name
gc_pos
funs_and_groups
gs
=
case
td_rhs
of
SynType
_
#
gs_error
=
report
E
rror
g_ident_name
gc_pos
(
"cannot derive a generic instance for
a synonym type "
+++
type_def_ident
.
id_name
)
gs
.
gs_error
->
(
funs_and_groups
,
{
gs
&
gs_error
=
gs_error
})
#
gs_error
=
report
_derive_e
rror
g_ident_name
gc_pos
"
a synonym type "
type_def_ident
.
id_name
gs
.
gs_error
->
(
funs_and_groups
,
{
gs
&
gs_error
=
gs_error
})
AbstractType
_
#
gs_error
=
reportError
g_ident_name
gc_pos
(
"cannot derive a generic instance for an abstract type "
+++
type_def_ident
.
id_name
)
gs
.
gs_error
->
(
funs_and_groups
,
{
gs
&
gs_error
=
gs_error
})
#
gs_error
=
report_derive_error
g_ident_name
gc_pos
"an abstract type "
type_def_ident
.
id_name
gs
.
gs_error
->
(
funs_and_groups
,
{
gs
&
gs_error
=
gs_error
})
ExtensibleAlgType
_
#
gs_error
=
report_derive_error
g_ident_name
gc_pos
"an extensible algebraic type "
type_def_ident
.
id_name
gs
.
gs_error
->
(
funs_and_groups
,
{
gs
&
gs_error
=
gs_error
})
AlgConses
_
_
#
gs_error
=
report_derive_error
g_ident_name
gc_pos
"an extensible algebraic type "
type_def_ident
.
id_name
gs
.
gs_error
->
(
funs_and_groups
,
{
gs
&
gs_error
=
gs_error
})
_
->
case
td_info
.
tdi_gen_rep
of
Yes
_
...
...
@@ -281,6 +287,9 @@ where
#
gs
=
{
gs
&
gs_td_infos
.[
glob_module
,
glob_object
]
=
td_info
}
->
(
funs_and_groups
,
gs
)
report_derive_error
g_ident_name
gc_pos
kind_of_type_string
type_def_ident_name
gs_error
=
reportError
g_ident_name
gc_pos
(
"cannot derive a generic instance for "
+++
kind_of_type_string
+++
type_def_ident_name
)
gs_error
::
TypeInfos
=
AlgebraicInfo
!
DefinedSymbol
!
DefinedSymbol
![
DefinedSymbol
]
![
DefinedSymbol
]
|
RecordInfo
!
DefinedSymbol
!
DefinedSymbol
!
DefinedSymbol
![
DefinedSymbol
]
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment