-
Notifications
You must be signed in to change notification settings - Fork 58
/
Copy pathCompletionExpressions.res
110 lines (79 loc) · 2.75 KB
/
CompletionExpressions.res
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
let s = true
let f = Some([false])
// switch (s, f) { | }
// ^com
type otherRecord = {
someField: int,
otherField: string,
}
type rec someRecord = {
age: int,
offline: bool,
online: option<bool>,
variant: someVariant,
polyvariant: somePolyVariant,
nested: option<otherRecord>,
}
and someVariant = One | Two | Three(int, string)
and somePolyVariant = [#one | #two(bool) | #three(someRecord, bool)]
let fnTakingRecord = (r: someRecord) => {
ignore(r)
}
// let _ = fnTakingRecord({})
// ^com
// let _ = fnTakingRecord({n})
// ^com
// let _ = fnTakingRecord({offline: })
// ^com
// let _ = fnTakingRecord({age: 123, })
// ^com
// let _ = fnTakingRecord({age: 123, offline: true})
// ^com
// let _ = fnTakingRecord({age: 123, nested: })
// ^com
// let _ = fnTakingRecord({age: 123, nested: {}})
// ^com
// let _ = fnTakingRecord({age: 123, nested: Some({})})
// ^com
// let _ = fnTakingRecord({age: 123, variant: })
// ^com
// let _ = fnTakingRecord({age: 123, variant: O })
// ^com
// let _ = fnTakingRecord({age: 123, polyvariant: #three() })
// ^com
// let _ = fnTakingRecord({age: 123, polyvariant: #three({}, ) })
// ^com
// let _ = fnTakingRecord({age: 123, polyvariant: #three({}, t) })
// ^com
let fnTakingArray = (arr: array<option<bool>>) => {
ignore(arr)
}
// let _ = fnTakingArray()
// ^com
// let _ = fnTakingArray([])
// ^com
// let _ = fnTakingArray(s)
// ^com
// let _ = fnTakingArray([Some()])
// ^com
// let _ = fnTakingArray([None, ])
// ^com
// let _ = fnTakingArray([None, , None])
// ^com
let someBoolVar = true
// let _ = fnTakingRecord({offline: so })
// ^com
let fnTakingOtherRecord = (r: otherRecord) => {
ignore(r)
}
// let _ = fnTakingOtherRecord({otherField: })
// ^com
type recordWithOptionalField = {
someField: int,
someOptField?: bool,
}
let fnTakingRecordWithOptionalField = (r: recordWithOptionalField) => {
ignore(r)
}
// let _ = fnTakingRecordWithOptionalField({someOptField: })
// ^com