ref: e73472e0a7547ca2d9204f6019d9068fec4bd5b8
parent: e91825e9e811a55a5d7fb72505f56cd0f32b4b4f
author: Ori Bernstein <[email protected]>
date: Mon Jun 25 16:31:07 EDT 2012
Allow nullary union constructors.
--- a/parse/gram.y
+++ b/parse/gram.y
@@ -327,8 +327,10 @@
;
unionelt
- : Tident type Tendln
- {$$ = mkdecl($1->line, mkname($1->line, $1->str), $2);}
+ : Ttick Tident type Tendln
+ {$$ = mkdecl($2->line, mkname($2->line, $2->str), $3);}
+ | Ttick Tident Tendln
+ {$$ = mkdecl($2->line, mkname($2->line, $2->str), NULL);}
| visdef Tendln
{$$ = NULL;}
| Tendln
@@ -402,6 +404,8 @@
unioncons
: Ttick Tident addexpr
{$$ = mkexpr($1->line, Ocons, $2, $3, NULL);}
+ | Ttick Tident
+ {$$ = mkexpr($1->line, Ocons, $2, NULL);}
| addexpr
;
--- /dev/null
+++ b/test/union.myr
@@ -1,0 +1,10 @@
+type u = union
+ `Some int
+ `None
+;;
+
+const main = {
+ var v : u
+
+ v = `None
+}