Skip to content

Commit e67ed97

Browse files
committed
Complete complex patterns with variants and poly variants.
And add a convoluted example of binding via variants.
1 parent 39fd21a commit e67ed97

File tree

3 files changed

+23
-23
lines changed

3 files changed

+23
-23
lines changed

analysis/src/ProcessCmt.ml

+3-5
Original file line numberDiff line numberDiff line change
@@ -322,16 +322,14 @@ let rec forItem ~env ~(exported : exported) item =
322322
env.stamps.values
323323
in
324324
declareds := {declared with item = MValue declared.item} :: !declareds
325-
| Tpat_tuple pats | Tpat_array pats ->
325+
| Tpat_tuple pats | Tpat_array pats | Tpat_construct (_, _, pats) ->
326326
pats |> List.iter (fun p -> handlePattern [] p)
327327
| Tpat_or (p, _, _) -> handlePattern [] p
328328
| Tpat_record (items, _) ->
329329
items |> List.iter (fun (_, _, p) -> handlePattern [] p)
330330
| Tpat_lazy p -> handlePattern [] p
331-
| Tpat_any | Tpat_constant _
332-
| Tpat_construct (_, _, _)
333-
| Tpat_variant (_, _, _) ->
334-
()
331+
| Tpat_variant (_, Some p, _) -> handlePattern [] p
332+
| Tpat_variant (_, None, _) | Tpat_any | Tpat_constant _ -> ()
335333
in
336334
List.iter
337335
(fun {vb_pat; vb_attributes} -> handlePattern vb_attributes vb_pat)

analysis/tests/src/Patterns.res

+13-11
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,17 @@ module A = {
33

44
let (xxx, yyy) = makeX()
55

6-
type t = {name:string, age:int}
7-
8-
let makeT = () => {name:"", age:0}
6+
type t = {name: string, age: int}
7+
8+
let makeT = () => {name: "", age: 0}
99

1010
let {name, age} = makeT()
1111

1212
let (a | a, b) = makeX()
1313

14-
let [v1,v2,v3] = [1,2,3]
14+
type rec arr = A(array<arr>)
15+
16+
let A([v1, _, _]) | _ as v1 = assert false
1517

1618
let lazy lazyy = lazy 3
1719
}
@@ -21,14 +23,14 @@ let y = A.xxx
2123

2224
let z = A.yyy
2325

24-
let n = A.name
26+
let n1 = A.name
2527
// ^def
2628

27-
let n = A.a
28-
// ^def
29+
let n2 = A.a
30+
// ^def
2931

30-
let n = A.v1
31-
// ^def
32+
let n3 = A.v1
33+
// ^def
3234

33-
let n = A.lazyy
34-
// ^def
35+
let n4 = A.lazyy
36+
// ^def
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
1-
Definition tests/src/Patterns.res 18:10
1+
Definition tests/src/Patterns.res 20:10
22
{"uri": "Patterns.res", "range": {"start": {"line": 3, "character": 7}, "end": {"line": 3, "character": 10}}}
33

4-
Definition tests/src/Patterns.res 23:11
4+
Definition tests/src/Patterns.res 25:11
55
{"uri": "Patterns.res", "range": {"start": {"line": 9, "character": 7}, "end": {"line": 9, "character": 11}}}
66

7-
Definition tests/src/Patterns.res 26:10
7+
Definition tests/src/Patterns.res 28:11
88
{"uri": "Patterns.res", "range": {"start": {"line": 11, "character": 7}, "end": {"line": 11, "character": 8}}}
99

10-
Definition tests/src/Patterns.res 29:10
11-
{"uri": "Patterns.res", "range": {"start": {"line": 13, "character": 7}, "end": {"line": 13, "character": 9}}}
10+
Definition tests/src/Patterns.res 31:11
11+
{"uri": "Patterns.res", "range": {"start": {"line": 15, "character": 9}, "end": {"line": 15, "character": 11}}}
1212

13-
Definition tests/src/Patterns.res 32:10
14-
{"uri": "Patterns.res", "range": {"start": {"line": 15, "character": 11}, "end": {"line": 15, "character": 16}}}
13+
Definition tests/src/Patterns.res 34:11
14+
{"uri": "Patterns.res", "range": {"start": {"line": 17, "character": 11}, "end": {"line": 17, "character": 16}}}
1515

0 commit comments

Comments
 (0)