File: pr4018_bad.compilers.reference

package info (click to toggle)
ocaml 5.4.0-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 44,372 kB
  • sloc: ml: 370,196; ansic: 52,820; sh: 27,396; asm: 5,462; makefile: 3,679; python: 974; awk: 278; javascript: 273; perl: 59; fortran: 21; cs: 9
file content (25 lines) | stat: -rw-r--r-- 1,123 bytes parent folder | download | duplicates (2)
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