@@ -14,19 +14,31 @@ public struct FunctionType: Equatable, Hashable {
14
14
public let results : [ ValueType ]
15
15
}
16
16
17
+ public enum HeapType : Equatable , Hashable {
18
+ /// A reference to any kind of function.
19
+ case funcRef // -> to be renamed func
20
+
21
+ /// An external host data.
22
+ case externRef // -> to be renamed extern
23
+ }
24
+
17
25
/// Reference types
18
- public enum ReferenceType : UInt8 , Equatable , Hashable {
19
- /// A nullable reference type to a function.
20
- case funcRef
26
+ public struct ReferenceType : Equatable , Hashable {
27
+ public var isNullable : Bool
28
+ public var heapType : HeapType
21
29
22
- /// A non-nullable reference type to a function
23
- case funcRefNonNull
30
+ public static var funcRef : ReferenceType {
31
+ ReferenceType ( isNullable: true , heapType: . funcRef)
32
+ }
24
33
25
- /// A nullable external reference type.
26
- case externRef
34
+ public static var externRef : ReferenceType {
35
+ ReferenceType ( isNullable: true , heapType: . externRef)
36
+ }
27
37
28
- /// A non-nullable external reference type.
29
- case externRefNonNull
38
+ public init ( isNullable: Bool , heapType: HeapType ) {
39
+ self . isNullable = isNullable
40
+ self . heapType = heapType
41
+ }
30
42
}
31
43
32
44
public enum ValueType : Equatable , Hashable {
0 commit comments