File: pr4018_bad.compilers.reference

package info (click to toggle)
ocaml 5.3.0-3
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 43,124 kB
  • sloc: ml: 355,439; ansic: 51,636; sh: 25,098; asm: 5,413; makefile: 3,673; python: 919; javascript: 273; awk: 253; perl: 59; fortran: 21; cs: 9
file content (25 lines) | stat: -rw-r--r-- 1,149 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
File "pr4018_bad.ml", line 42, characters 11-17:
42 | let f (x : entity entity_container) = ()
                ^^^^^^
Error: This type "entity" = "< destroy_subject : id subject; entity_id : id >"
       should be an instance of type
         "< destroy_subject : < add_observer : 'a entity_container -> 'b; .. >;
           .. >
         as 'a"
       Type
         "id subject" =
           "< add_observer : (id subject, id) observer -> unit;
             notify_observers : id -> unit >"
       is not compatible with type
         "< add_observer : < destroy_subject : 'c; .. > entity_container -> 'b;
           .. >
         as 'c"
       Type "(id subject, id) observer" = "< notify : id subject -> id -> unit >"
       is not compatible with type
         "(< destroy_subject : < add_observer : 'd -> 'b; .. >; .. > as 'a)
         entity_container as 'd" =
           "< add_entity : 'a -> 'b; notify : 'a -> id -> unit >"
       The method "add_observer" has type "(id subject, id) observer -> unit",
       but the expected method type was
       "< destroy_subject : < add_observer : 'e; .. >; .. > entity_container ->
       'b as 'e"