Remove the builtin empty tuple value (not type). (#2850)

We do use the empty tuple type for function returns, so I don't want to get rid of it, but the value is unused. With this change, builtins are all types. Long-term the empty tuple value should have a representation similar to structs; just a tuple value that's empty, not a built-in.
This commit is contained in:
Jon Ross-Perkins
2023-05-26 11:07:35 -07:00
committed by GitHub
parent 76151d1fff
commit 709412ca97
6 changed files with 26 additions and 43 deletions
+2 -8
View File
@@ -271,14 +271,8 @@ auto SemanticsContext::ImplicitAsImpl(SemanticsNodeId value_id,
}
if (as_type_id == SemanticsNodeId::BuiltinTypeType) {
// When converting `()` to a type, the result is `() as Type`.
// TODO: This might switch to be closer to the struct conversion below.
if (value_id == SemanticsNodeId::BuiltinEmptyTuple) {
if (output_value_id != nullptr) {
*output_value_id = SemanticsNodeId::BuiltinEmptyTupleType;
}
return ImplicitAsKind::Compatible;
}
// TODO: When converting `()` to a type, the result is `() as Type`.
// Right now there is no tuple value support.
// When converting `{}` to a type, the result is `{} as Type`.
if (value.kind() == SemanticsNodeKind::StructValue &&