Skip to content

Commit

Permalink
Implemented optional pattern bars.
Browse files Browse the repository at this point in the history
Cleaned up do declaration type checking to create unused vars.
  • Loading branch information
kmb3398 committed Mar 19, 2015
1 parent 6cfa1ac commit 394fc6a
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 7 deletions.
4 changes: 1 addition & 3 deletions mlton/elaborate/elaborate-core.fun
Original file line number Diff line number Diff line change
Expand Up @@ -1922,12 +1922,10 @@ fun elaborateDec (d, {env = E, nest}) =
end
val elaboratePat = elaboratePat ()
val pat = Apat.wild
val (pat, bound) =
val (pat, _) =
elaboratePat (pat, E, {bind = false,
isRvb = false}, preError)
val patRegion = Region.bogus
val expRegion = Aexp.region exp
(* val exp' = elab exp *)
val exp' = elabExp (exp, nest, NONE)
val bound = fn () => Vector.new0 ()
val _ =
Expand Down
17 changes: 13 additions & 4 deletions mlton/front-end/ml.grm
Original file line number Diff line number Diff line change
Expand Up @@ -255,6 +255,7 @@ type 'a whereAnd = wherespec list * SourcePos.t * 'a list
| constr of Con.t * Type.t option
| constraint of Type.t option
| constrs of (Con.t * Type.t option) list
| constrsTop of (Con.t * Type.t option) list
| constOrBool of Const.t
| datBind of DatBind.t
| datBindNoWithtype of DatBind.t
Expand Down Expand Up @@ -326,6 +327,7 @@ type 'a whereAnd = wherespec list * SourcePos.t * 'a list
| repl of DatatypeRhs.node
| rule of rule
| rules of rule list
| rulesTop of rule list
| rvalbind of rvb list
| rvalbindRest of rvb list
| sdec of Dec.t
Expand Down Expand Up @@ -781,6 +783,7 @@ funs : clausesTop ([clausesTop])
| clausesTop AND funs (clausesTop :: funs)

clausesTop: clauses (Vector.fromList clauses)
| BAR clauses (Vector.fromList clauses)

clauses : clause ([clause])
| clause BAR clauses (clause :: clauses)
Expand Down Expand Up @@ -828,6 +831,9 @@ tyvarseq: tyvar (Vector.new1 tyvar)
tyvar_pc: tyvar ([tyvar])
| tyvar COMMA tyvar_pc (tyvar :: tyvar_pc)

constrsTop : constrs (constrs)
| BAR constrs (constrs)

constrs : constr ([constr])
| constr BAR constrs (constr :: constrs)

Expand Down Expand Up @@ -936,8 +942,8 @@ dbs'
| db AND dbs'
(db :: dbs')

db : tyvars tycon EQUALOP constrs
({cons = Vector.fromList constrs,
db : tyvars tycon EQUALOP constrsTop
({cons = Vector.fromList constrsTop,
tycon = tycon,
tyvars = tyvars})

Expand All @@ -950,9 +956,12 @@ withtypes
longvidands : longvid ([longvid])
| longvid AND longvidands (longvid :: longvidands)

match : rules (Match.makeRegion' (Match.T (Vector.fromList rules),
rulesleft, rulesright))
match : rulesTop (Match.makeRegion' (Match.T (Vector.fromList rulesTop),
rulesTopleft, rulesTopright))

rulesTop : rules (rules)
| BAR rules (rules)

rules : rule ([rule])
| rule BAR rules (rule :: rules)

Expand Down

0 comments on commit 394fc6a

Please sign in to comment.