...
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user