mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-04 22:02:52 +01:00
Support for let declarations. (#3257)
A `let` declaration is represented by a `bind_name` node in SemIR: ```carbon-semir %b: i32 = bind_name "b", %a ``` Because `Check` encounters the pattern before it sees the value, we first create the `bind_name` node with an unset value and don't add it to the block. Then, once we've seen and converted the initializer, we update the `bind_name` to have the value and add it to the current block, after the initializer code.
This commit is contained in:
@@ -57,6 +57,10 @@ auto HandleDeclarationScopeLoop(Context& context) -> void {
|
||||
context.PushState(State::VarAsSemicolon);
|
||||
break;
|
||||
}
|
||||
case Lex::TokenKind::Let: {
|
||||
context.PushState(State::Let);
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
HandleUnrecognizedDeclaration(context);
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user