@@ -6,66 +6,26 @@ import syntax.*
6
6
7
7
8
8
enum Pattern extends Located :
9
-
10
- case Alias (nme : VarSymbol , pattern : Pattern )
11
9
case Lit (literal : Literal )
12
- case Concrete (nme : VarSymbol )
13
10
case Var (nme : BlockLocalSymbol )
14
- /**
15
- * Represents wildcard patterns or missing patterns which match everything.
16
- * Should be transformed from `Var("_")` or unrecognized terms.
17
- */
18
- case Empty (source : Term )
19
11
case Class (nme : ClassSymbol , parameters : Opt [List [BlockLocalSymbol ]], var refined : Bool )(val ident : Tree .Ident )
20
12
case Tuple (fields : List [Pattern ])
21
13
case Record (entries : List [(VarSymbol -> Pattern )])
22
14
23
- def boundSymbols : Ls [Str -> Symbol ] = ???
24
-
25
15
def toLoc : Opt [Loc ] = this match
26
16
case Lit (literal) => literal.toLoc
27
17
case pat @ Class (_, _, _) => pat.ident.toLoc
28
18
29
19
def subTerms : Ls [Term ] = this match
30
- case Alias (nme, pattern) => pattern.subTerms
31
20
case Lit (literal) => Nil
32
- case Concrete (nme) => Nil
33
21
case Var (nme) => Nil
34
- case Empty (source) => source :: Nil
35
22
case Class (_, parameters, _) => Nil
36
23
case Tuple (fields) => fields.flatMap(_.subTerms)
37
24
case Record (entries) => entries.flatMap(_._2.subTerms)
38
-
39
- /*
40
- def toLoc: Opt[Loc] = Loc(children)
41
-
42
- def children: Ls[Located] = this match
43
- case Alias(nme, pattern) =>
44
- nme :: pattern :: Nil
45
- case LitPat(literal) =>
46
- literal :: Nil
47
- case Concrete(nme) =>
48
- nme :: Nil
49
- case Var(nme) =>
50
- nme :: Nil
51
- case Empty(source) =>
52
- source :: Nil
53
- case Class(nme, parameters, refined) =>
54
- // nme :: parameters.getOrElse(Nil)
55
- ???
56
- case Tuple(fields: List[Pattern]) =>
57
- fields
58
- case Record(entries: List[(VarSymbol -> Pattern)]) =>
59
- // entries.iterator.flatMap { case (nme, als) => nme :: als :: Nil }.toList
60
- ???
61
- */
62
-
25
+
63
26
def showDbg : Str = this match
64
- case Alias (nme, pattern) => s " ( $nme as $pattern) "
65
27
case Lit (literal) => literal.idStr
66
- case Concrete (nme) => s " ` ${nme.name}` "
67
28
case Var (nme) => nme.toString
68
- case Empty (_) => " •"
69
29
case Class (sym, ps, rfd) => (if rfd then " refined " else " " ) + (ps match {
70
30
case N => sym.nme
71
31
case S (parameters) => parameters.mkString(s " ${sym.nme}( " , " , " , " )" )
0 commit comments