diff options
Diffstat (limited to 'src/parse.cff')
| -rw-r--r-- | src/parse.cff | 8 |
1 files changed, 6 insertions, 2 deletions
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 { |