Distinguish between name IDs and string IDs in the type system. (#3341)

Add a `NameId` that is effectively just a wrapper around a `StringId`,
with
some additional predefined values for names that don't correspond to
strings, such as the name of `self` or the function's return slot.
This commit is contained in:
Richard Smith
2023-11-09 16:51:36 +00:00
committed by GitHub
parent 84bc8cc4bf
commit 71aa4a45be
206 changed files with 1050 additions and 921 deletions
@@ -10,7 +10,7 @@
let n: i32 = *undeclared;
// CHECK:STDOUT: file "fail_dereference_error.carbon" {
// CHECK:STDOUT: %undeclared.ref: <error> = name_reference "undeclared", <error>
// CHECK:STDOUT: %undeclared.ref: <error> = name_reference undeclared, <error>
// CHECK:STDOUT: %.loc10: ref <error> = dereference <error>
// CHECK:STDOUT: %n: i32 = bind_name "n", <error>
// CHECK:STDOUT: %n: i32 = bind_name n, <error>
// CHECK:STDOUT: }