@@ -762,7 +762,7 @@ type t : any mod many = { x : t_value }
762
762
Line 1, characters 0-39:
763
763
1 | type t : any mod many = { x : t_value }
764
764
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
765
- Error: The kind of type "t" is value
765
+ Error: The kind of type "t" is immutable_data with t_value
766
766
because it's a boxed record type.
767
767
But the kind of type "t" must be a subkind of any mod many
768
768
because of the annotation on the declaration of the type t.
@@ -773,7 +773,7 @@ type t : any mod contended = { x : t_value }
773
773
Line 1, characters 0-44:
774
774
1 | type t : any mod contended = { x : t_value }
775
775
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
776
- Error: The kind of type "t" is value
776
+ Error: The kind of type "t" is immutable_data with t_value
777
777
because it's a boxed record type.
778
778
But the kind of type "t" must be a subkind of any mod contended
779
779
because of the annotation on the declaration of the type t.
@@ -784,7 +784,7 @@ type t : any mod portable = { x : t_value }
784
784
Line 1, characters 0-43:
785
785
1 | type t : any mod portable = { x : t_value }
786
786
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
787
- Error: The kind of type "t" is value
787
+ Error: The kind of type "t" is immutable_data with t_value
788
788
because it's a boxed record type.
789
789
But the kind of type "t" must be a subkind of any mod portable
790
790
because of the annotation on the declaration of the type t.
@@ -795,7 +795,7 @@ type t : any mod many contended portable global = { x : t_value }
795
795
Line 1, characters 0-65:
796
796
1 | type t : any mod many contended portable global = { x : t_value }
797
797
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
798
- Error: The kind of type "t" is value
798
+ Error: The kind of type "t" is immutable_data with t_value
799
799
because it's a boxed record type.
800
800
But the kind of type "t" must be a subkind of
801
801
any mod global many contended portable
@@ -990,54 +990,69 @@ type ('a : immediate) t : value mod global = { mutable x : 'a }
990
990
Line 1, characters 0-63:
991
991
1 | type ('a : immediate) t : value mod global = { mutable x : 'a }
992
992
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
993
- Error: The kind of type "t" is mutable_data
993
+ Error: The kind of type "t" is mutable_data with 'a @@ many
994
994
because it's a boxed record type.
995
995
But the kind of type "t" must be a subkind of value mod global
996
996
because of the annotation on the declaration of the type t.
997
+
998
+ The first mode-crosses less than the second along:
999
+ locality: mod local ≰ mod global
997
1000
|}]
998
1001
999
1002
type ('a : immediate) t : value mod aliased = { mutable x : 'a }
1000
1003
[%%expect {|
1001
1004
Line 1, characters 0-64:
1002
1005
1 | type ('a : immediate) t : value mod aliased = { mutable x : 'a }
1003
1006
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1004
- Error: The kind of type "t" is mutable_data
1007
+ Error: The kind of type "t" is mutable_data with 'a @@ many
1005
1008
because it's a boxed record type.
1006
1009
But the kind of type "t" must be a subkind of value mod aliased
1007
1010
because of the annotation on the declaration of the type t.
1011
+
1012
+ The first mode-crosses less than the second along:
1013
+ uniqueness: mod unique ≰ mod aliased
1008
1014
|}]
1009
1015
1010
1016
type ('a : immediate) t : value mod contended = { mutable x : 'a }
1011
1017
[%%expect {|
1012
1018
Line 1, characters 0-66:
1013
1019
1 | type ('a : immediate) t : value mod contended = { mutable x : 'a }
1014
1020
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1015
- Error: The kind of type "t" is mutable_data
1021
+ Error: The kind of type "t" is mutable_data with 'a @@ many
1016
1022
because it's a boxed record type.
1017
1023
But the kind of type "t" must be a subkind of value mod contended
1018
1024
because of the annotation on the declaration of the type t.
1025
+
1026
+ The first mode-crosses less than the second along:
1027
+ contention: mod uncontended ≰ mod contended
1019
1028
|}]
1020
1029
1021
1030
type ('a : immediate) t : value mod external_ = { mutable x : 'a }
1022
1031
[%%expect {|
1023
1032
Line 1, characters 0-66:
1024
1033
1 | type ('a : immediate) t : value mod external_ = { mutable x : 'a }
1025
1034
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1026
- Error: The kind of type "t" is mutable_data
1035
+ Error: The kind of type "t" is mutable_data with 'a @@ many
1027
1036
because it's a boxed record type.
1028
1037
But the kind of type "t" must be a subkind of value mod external_
1029
1038
because of the annotation on the declaration of the type t.
1039
+
1040
+ The first mode-crosses less than the second along:
1041
+ externality: mod internal ≰ mod external_
1030
1042
|}]
1031
1043
1032
1044
type ('a : immediate) t : value mod external64 = { mutable x : 'a }
1033
1045
[%%expect {|
1034
1046
Line 1, characters 0-67:
1035
1047
1 | type ('a : immediate) t : value mod external64 = { mutable x : 'a }
1036
1048
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1037
- Error: The kind of type "t" is mutable_data
1049
+ Error: The kind of type "t" is mutable_data with 'a @@ many
1038
1050
because it's a boxed record type.
1039
1051
But the kind of type "t" must be a subkind of value mod external64
1040
1052
because of the annotation on the declaration of the type t.
1053
+
1054
+ The first mode-crosses less than the second along:
1055
+ externality: mod internal ≰ mod external64
1041
1056
|}]
1042
1057
1043
1058
(*************************************)
@@ -1234,7 +1249,7 @@ type 'a t : value mod aliased = { x : 'a @@ aliased }
1234
1249
Line 1, characters 0-53:
1235
1250
1 | type 'a t : value mod aliased = { x : 'a @@ aliased }
1236
1251
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1237
- Error: The kind of type "t" is value
1252
+ Error: The kind of type "t" is immutable_data with 'a
1238
1253
because it's a boxed record type.
1239
1254
But the kind of type "t" must be a subkind of value mod aliased
1240
1255
because of the annotation on the declaration of the type t.
@@ -1245,7 +1260,7 @@ type 'a t : value mod global = { x : 'a @@ global }
1245
1260
Line 1, characters 0-51:
1246
1261
1 | type 'a t : value mod global = { x : 'a @@ global }
1247
1262
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1248
- Error: The kind of type "t" is value
1263
+ Error: The kind of type "t" is immutable_data with 'a
1249
1264
because it's a boxed record type.
1250
1265
But the kind of type "t" must be a subkind of value mod global
1251
1266
because of the annotation on the declaration of the type t.
@@ -1547,7 +1562,7 @@ type 'a t : value mod global = { x : 'a }
1547
1562
Line 1, characters 0-41:
1548
1563
1 | type 'a t : value mod global = { x : 'a }
1549
1564
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1550
- Error: The kind of type "t" is value
1565
+ Error: The kind of type "t" is immutable_data with 'a
1551
1566
because it's a boxed record type.
1552
1567
But the kind of type "t" must be a subkind of value mod global
1553
1568
because of the annotation on the declaration of the type t.
@@ -1558,7 +1573,7 @@ type 'a t : value mod many = { x : 'a }
1558
1573
Line 1, characters 0-39:
1559
1574
1 | type 'a t : value mod many = { x : 'a }
1560
1575
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1561
- Error: The kind of type "t" is value
1576
+ Error: The kind of type "t" is immutable_data with 'a
1562
1577
because it's a boxed record type.
1563
1578
But the kind of type "t" must be a subkind of value mod many
1564
1579
because of the annotation on the declaration of the type t.
@@ -1643,7 +1658,7 @@ Lines 11-12, characters 4-10:
1643
1658
12 | |> id
1644
1659
Error: This expression has type "int t" but an expression was expected of type
1645
1660
"('a : value mod portable)"
1646
- The kind of int t is immutable_data
1661
+ The kind of int t is immutable_data with int
1647
1662
because of the definition of t at line 3, characters 0-21.
1648
1663
But the kind of int t must be a subkind of value mod portable
1649
1664
because of the definition of require_portable at line 2, characters 21-57.
@@ -1698,7 +1713,7 @@ Lines 11-12, characters 4-10:
1698
1713
12 | |> id
1699
1714
Error: This expression has type "int t" but an expression was expected of type
1700
1715
"('a : value mod portable)"
1701
- The kind of int t is immutable_data
1716
+ The kind of int t is immutable_data with int
1702
1717
because of the definition of t at line 3, characters 0-21.
1703
1718
But the kind of int t must be a subkind of value mod portable
1704
1719
because of the definition of require_portable at line 2, characters 21-57.
0 commit comments