From 04c7892134d49f3b295a51cc741affe9f02e374d Mon Sep 17 00:00:00 2001 From: lemon Date: Tue, 16 Aug 2022 05:42:36 +0200 Subject: nullish coalescing operator ?? --- src/parse.cff | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/parse.cff b/src/parse.cff index c331986..87ca850 100644 --- a/src/parse.cff +++ b/src/parse.cff @@ -414,9 +414,13 @@ fn lex(P *Parser) Tok { } switch c = chr(P) { case '(', ')', '[', ']', '{', - '}', ',', ';', '?', '~'; + '}', ',', ';', '~'; tok.t = c; return tok; + case '?'; + if chrmatch(P, '?') { tok.t = '??'; } + else { tok.t = '?'; } + return tok; case '.'; if chrmatch(P, '.') { if chrmatch(P, '.') { tok.t = '...'; } @@ -541,7 +545,7 @@ fn finddecl(P *Parser, name *const u8) *Decl { putprimtypes(primenv); } let p = envfind(primenv, name); - return p ? p : envfind(P.curenv, name); + return p ?? envfind(P.curenv, name); } fn putdecl(P *Parser, decl Decl) *Decl { -- cgit v1.2.3