mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-05 21:21:19 +01:00
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:
@@ -17,9 +17,15 @@ auto SemanticsIR::MakeBuiltinIR() -> SemanticsIR {
|
||||
SemanticsIR semantics(/*builtin_ir=*/nullptr);
|
||||
semantics.nodes_.reserve(SemanticsBuiltinKind::ValidCount);
|
||||
|
||||
#define CARBON_SEMANTICS_BUILTIN_KIND(Name, Type, ...) \
|
||||
semantics.nodes_.push_back(SemanticsNode::Builtin::Make( \
|
||||
SemanticsBuiltinKind::Name, SemanticsNodeId::Builtin##Type));
|
||||
// InvalidType uses a self-referential type so that it's not accidentally
|
||||
// treated as a normal type. Every other builtin is a type, including the
|
||||
// self-referential TypeType.
|
||||
#define CARBON_SEMANTICS_BUILTIN_KIND(Name, ...) \
|
||||
semantics.nodes_.push_back(SemanticsNode::Builtin::Make( \
|
||||
SemanticsBuiltinKind::Name, \
|
||||
SemanticsBuiltinKind::Name == SemanticsBuiltinKind::InvalidType \
|
||||
? SemanticsNodeId::BuiltinInvalidType \
|
||||
: SemanticsNodeId::BuiltinTypeType));
|
||||
#include "toolchain/semantics/semantics_builtin_kind.def"
|
||||
|
||||
CARBON_CHECK(semantics.node_blocks_.size() == 1)
|
||||
|
||||
Reference in New Issue
Block a user