summaryrefslogtreecommitdiff
path: root/pez.c
diff options
context:
space:
mode:
Diffstat (limited to 'pez.c')
-rw-r--r--pez.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/pez.c b/pez.c
index e12ad46..52744ad 100644
--- a/pez.c
+++ b/pez.c
@@ -3039,6 +3039,8 @@ lambdaexpr(Comp *cm, const char *name)
}
}
+ ETRY(expectspchr(cm, '{'));
+
ETRY(block(cm, '}'));
ETRY(compop(cm, Oret));
ETRY(fincompfn(cm));
@@ -3268,7 +3270,7 @@ primaryexpr(Comp *cm)
}
return 1;
- case '{':
+ case '$':
return lambdaexpr(cm, NULL);
case '#':
@@ -4036,7 +4038,7 @@ decl(Comp *cm, struct local **pl, bool nofold)
return comperr(cm, c, "expected ':' or '='"), 0;
}
- if (matchspchr(cm, '{')) {
+ if (matchspchr(cm, '$')) {
// named fn, possibly recursive
TRY(l = addlocal(cm, &idx, name, mutable, cm->has_k && !mutable, cm->k));
TRY(lambdaexpr(cm, name));
@@ -4215,7 +4217,7 @@ stmt(Comp *cm)
TRY(expectspchr(cm, '='));
TRY(box_str(cm->cx, &key, name, strlen(name)));
TRY(compconst(cm, key));
- if (matchspchr(cm, '{')) {
+ if (matchspchr(cm, '$')) {
TRY(lambdaexpr(cm, name)); // named fn
} else {
TRY(expr(cm)); // initializer