diff options
| author | Edvard Thörnros <edvard.thornros@gmail.com> | 2021-03-08 19:15:23 +0100 |
|---|---|---|
| committer | Edvard Thörnros <edvard.thornros@gmail.com> | 2021-03-08 19:15:23 +0100 |
| commit | ea6adb4ca98d5b272db010ca4de87210abf4b49e (patch) | |
| tree | 4b437629f2c28dd42844931d72d754780c7206c9 | |
| parent | e0cde67ed427a46be3adfd0938a4020d494d692f (diff) | |
| download | sylt-ea6adb4ca98d5b272db010ca4de87210abf4b49e.tar.gz | |
parse nullable types
| -rw-r--r-- | src/compiler.rs | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/compiler.rs b/src/compiler.rs index b45d47e..47b8b84 100644 --- a/src/compiler.rs +++ b/src/compiler.rs @@ -1401,8 +1401,17 @@ impl Compiler { } fn parse_type(&mut self) -> Result<Type, ()> { - match self.peek() { + let ty = self.parse_simple_type(); + if self.peek() == Token::Questionmark { + self.eat(); + ty.map(|x| Type::Union(vec![x, Type::Void])) + } else { + ty + } + } + fn parse_simple_type(&mut self) -> Result<Type, ()> { + match self.peek() { Token::Fn => { self.eat(); let mut params = Vec::new(); |
