Semantics for array index. (#3099)

Co-authored-by: Farzana Ahmed Siddique <fasiddique@google.com>
This commit is contained in:
Farzana Ahmed Siddique
2023-08-15 18:17:42 +00:00
committed by GitHub
co-authored by Farzana Ahmed Siddique
parent a692fb89a3
commit a6ba7827cd
14 changed files with 472 additions and 30 deletions
+8
View File
@@ -222,6 +222,7 @@ static auto GetTypePrecedence(SemanticsNodeKind kind) -> int {
return 0;
case SemanticsNodeKind::AddressOf:
case SemanticsNodeKind::ArrayIndex:
case SemanticsNodeKind::ArrayValue:
case SemanticsNodeKind::Assign:
case SemanticsNodeKind::BinaryOperatorAdd:
@@ -376,6 +377,7 @@ auto SemanticsIR::StringifyType(SemanticsTypeId type_id,
break;
}
case SemanticsNodeKind::AddressOf:
case SemanticsNodeKind::ArrayIndex:
case SemanticsNodeKind::ArrayValue:
case SemanticsNodeKind::Assign:
case SemanticsNodeKind::BinaryOperatorAdd:
@@ -479,6 +481,12 @@ auto GetSemanticsExpressionCategory(const SemanticsIR& semantics_ir,
case SemanticsNodeKind::UnaryOperatorNot:
return SemanticsExpressionCategory::Value;
case SemanticsNodeKind::ArrayIndex: {
auto [base_id, index_id] = node.GetAsArrayIndex();
node_id = base_id;
continue;
}
case SemanticsNodeKind::StructAccess: {
auto [base_id, member_index] = node.GetAsStructAccess();
node_id = base_id;