WIP: dev #1

Draft
nub31 wants to merge 103 commits from dev into master
3 changed files with 10 additions and 6 deletions
Showing only changes of commit 2ab20652f8 - Show all commits

View File

@@ -721,7 +721,7 @@ static inline string *string_from_cstr(char *cstr)
if (value != null)
writer.WriteLine($", .{enumVariantType.Variant} = {value} }};");
else
writer.WriteLine(" }};");
writer.WriteLine(" };");
return name;
}

View File

@@ -672,10 +672,10 @@ public class TypeChecker
throw BasicError($"Enum '{variantType.EnumType}' does not have a variant named '{variantType.Variant}'", expression.Type);
if (expression.Value == null && variant.Type is not null)
throw BasicError($"Enum variant '{variantType.EnumType}' expects a value of type '{variant.Type}'", expression.Type);
throw BasicError($"Enum variant '{variantType}' expects a value of type '{variant.Type}'", expression.Type);
if (expression.Value != null && variant.Type is null)
throw BasicError($"Enum variant '{variantType.EnumType}' does not expect any data", expression.Value);
throw BasicError($"Enum variant '{variantType}' does not expect any data", expression.Value);
var value = expression.Value == null ? null : CheckExpression(expression.Value, variant.Type);

View File

@@ -11,12 +11,16 @@ enum Message {
}
func main(): i32 {
let messages: []Message = [new Message::Say("first"), new Message::Say("second")]
let messages: []Message = [new Message::Say("first"), new Message::Quit]
for message in messages {
match message {
Say msg core::println(msg)
Quit {}
Say msg {
core::println(msg)
}
Quit {
core::println("quit")
}
}
}