mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-05 22:02:55 +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:
@@ -30,6 +30,10 @@ auto HandleStatement(Context& context) -> void {
|
||||
context.PushState(State::StatementIf);
|
||||
break;
|
||||
}
|
||||
case Lex::TokenKind::Let: {
|
||||
context.PushState(State::Let);
|
||||
break;
|
||||
}
|
||||
case Lex::TokenKind::Return: {
|
||||
context.PushState(State::StatementReturn);
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user