File: pr11569.ml

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 (35 lines) | stat: -rw-r--r-- 1,266 bytes parent folder | download | duplicates (3)
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
26
27
28
29
30
31
32
33
34
35
(* TEST
 expect;
*)

class ['a] c = object constraint 'a = int method m (x: bool #c) = () end;;

[%%expect{|
Line 1, characters 0-72:
1 | class ['a] c = object constraint 'a = int method m (x: bool #c) = () end;;
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Error: The class type "#c" is used with parameter(s) "bool ",
       whereas the class type definition constrains those parameters to be
       "int "
|}]

class ['a, 'b] c = object constraint 'a = int method m (x: (bool, 'b) #c) = () end;;

[%%expect{|
Line 1, characters 0-82:
1 | class ['a, 'b] c = object constraint 'a = int method m (x: (bool, 'b) #c) = () end;;
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Error: The class type "#c" is used with parameter(s) "(bool, 'b) ",
       whereas the class type definition constrains those parameters to be
       "(int, 'b) "
|}]

class c = object method m (x: #c) = int_of_string x#m end;;

[%%expect{|
Line 1, characters 0-57:
1 | class c = object method m (x: #c) = int_of_string x#m end;;
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Error: The abbreviation "#c" expands to type "< m : 'a -> int; .. >"
       but is used with type "< m : string; .. > as 'a"
|}]