mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-03 22:02:51 +01:00
Parsing support for if expressions. (#2883)
We model `if a then b else` as a prefix operator for parsing precedence purposes. The rule that a statement starting with `if` is never an `if` expression is handled implicitly because the statement parser never invokes the expression parser for a statement starting with `if`. This exposed a bug in our diagnosis of the whitespace rule for prefix operators, which was incorrectly being applied to non-symbolic operators in some cases, and was producing a bogus second diagnostic in some cases, which is also fixed here.
This commit is contained in:
@@ -178,6 +178,21 @@ auto SemanticsHandleIfConditionStart(SemanticsContext& context,
|
||||
return context.TODO(parse_node, "HandleIfConditionStart");
|
||||
}
|
||||
|
||||
auto SemanticsHandleIfExpression(SemanticsContext& context,
|
||||
ParseTree::Node parse_node) -> bool {
|
||||
return context.TODO(parse_node, "HandleIfExpression");
|
||||
}
|
||||
|
||||
auto SemanticsHandleIfExpressionElse(SemanticsContext& context,
|
||||
ParseTree::Node parse_node) -> bool {
|
||||
return context.TODO(parse_node, "HandleIfExpressionElse");
|
||||
}
|
||||
|
||||
auto SemanticsHandleIfExpressionThen(SemanticsContext& context,
|
||||
ParseTree::Node parse_node) -> bool {
|
||||
return context.TODO(parse_node, "HandleIfExpressionThen");
|
||||
}
|
||||
|
||||
auto SemanticsHandleIfStatement(SemanticsContext& context,
|
||||
ParseTree::Node parse_node) -> bool {
|
||||
return context.TODO(parse_node, "HandleIfStatement");
|
||||
|
||||
Reference in New Issue
Block a user