Addr Keyword Implementation (#1255)

* Implement addr keyword

* Add files that were deleted during merge

Some files got deleted during merging trunk because of the executable
semantics rename.

* Implement changes from code review.

Major changes:
- Rename AddrBindingPattern to AddrPattern
- Fix AddrPattern related changes in fuzzing

* Update documentation for GetField

* Fix AddPattern according to @zygoloid's suggestions

* Apply @zygoloid's changes to method comment

* Add a multi-component field example

* Incorporate AST changes to fuzzer corpus

* Refactor the deduced_param_list grammar rule

Suggested by @zygoloid
This commit is contained in:
Darshal Shetty
2022-06-01 13:51:37 -04:00
committed by GitHub
parent f0572ee110
commit e4a2d0f047
47 changed files with 610 additions and 99 deletions
+8
View File
@@ -56,6 +56,9 @@ void Pattern::Print(llvm::raw_ostream& out) const {
case PatternKind::VarPattern:
out << "var" << cast<VarPattern>(*this).pattern();
break;
case PatternKind::AddrPattern:
out << "addr" << cast<AddrPattern>(*this).binding();
break;
}
}
@@ -87,6 +90,9 @@ void Pattern::PrintID(llvm::raw_ostream& out) const {
case PatternKind::VarPattern:
out << "var ...";
break;
case PatternKind::AddrPattern:
out << "addr ...";
break;
case PatternKind::ExpressionPattern:
out << "...";
break;
@@ -112,6 +118,8 @@ auto VisitNestedPatterns(const Pattern& pattern,
visitor);
case PatternKind::VarPattern:
return VisitNestedPatterns(cast<VarPattern>(pattern).pattern(), visitor);
case PatternKind::AddrPattern:
return VisitNestedPatterns(cast<AddrPattern>(pattern).binding(), visitor);
case PatternKind::BindingPattern:
case PatternKind::AutoPattern:
case PatternKind::ExpressionPattern: