Skip to content

Commit e6aa211

Browse files
jckingcopybara-github
authored andcommitted
Update AST conversion to support iter_var2
PiperOrigin-RevId: 693050279
1 parent a43cbbf commit e6aa211

File tree

3 files changed

+53
-0
lines changed

3 files changed

+53
-0
lines changed

common/expr.h

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -581,6 +581,27 @@ class ComprehensionExpr final {
581581
return release(iter_var_);
582582
}
583583

584+
ABSL_MUST_USE_RESULT const std::string& iter_var2() const
585+
ABSL_ATTRIBUTE_LIFETIME_BOUND {
586+
return iter_var2_;
587+
}
588+
589+
void set_iter_var2(std::string iter_var2) {
590+
iter_var2_ = std::move(iter_var2);
591+
}
592+
593+
void set_iter_var2(absl::string_view iter_var2) {
594+
iter_var2_.assign(iter_var2.data(), iter_var2.size());
595+
}
596+
597+
void set_iter_var2(const char* iter_var2) {
598+
set_iter_var2(absl::NullSafeStringView(iter_var2));
599+
}
600+
601+
ABSL_MUST_USE_RESULT std::string release_iter_var2() {
602+
return release(iter_var2_);
603+
}
604+
584605
ABSL_MUST_USE_RESULT bool has_iter_range() const {
585606
return iter_range_ != nullptr;
586607
}
@@ -685,6 +706,7 @@ class ComprehensionExpr final {
685706
friend void swap(ComprehensionExpr& lhs, ComprehensionExpr& rhs) noexcept {
686707
using std::swap;
687708
swap(lhs.iter_var_, rhs.iter_var_);
709+
swap(lhs.iter_var2_, rhs.iter_var2_);
688710
swap(lhs.iter_range_, rhs.iter_range_);
689711
swap(lhs.accu_var_, rhs.accu_var_);
690712
swap(lhs.accu_init_, rhs.accu_init_);
@@ -711,6 +733,7 @@ class ComprehensionExpr final {
711733
}
712734

713735
std::string iter_var_;
736+
std::string iter_var2_;
714737
std::unique_ptr<Expr> iter_range_;
715738
std::string accu_var_;
716739
std::unique_ptr<Expr> accu_init_;

extensions/protobuf/internal/ast.cc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,7 @@ class ExprToProtoState final {
227227
auto* comprehension_proto = proto->mutable_comprehension_expr();
228228
proto->set_id(expr.id());
229229
comprehension_proto->set_iter_var(comprehension_expr.iter_var());
230+
comprehension_proto->set_iter_var2(comprehension_expr.iter_var2());
230231
if (comprehension_expr.has_iter_range()) {
231232
Push(comprehension_expr.iter_range(),
232233
comprehension_proto->mutable_iter_range());
@@ -457,6 +458,7 @@ class ExprFromProtoState final {
457458
expr.set_id(proto.id());
458459
auto& comprehension_expr = expr.mutable_comprehension_expr();
459460
comprehension_expr.set_iter_var(comprehension_proto.iter_var());
461+
comprehension_expr.set_iter_var2(comprehension_proto.iter_var2());
460462
comprehension_expr.set_accu_var(comprehension_proto.accu_var());
461463
if (comprehension_proto.has_iter_range()) {
462464
Push(comprehension_proto.iter_range(),

extensions/protobuf/internal/ast_test.cc

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,34 @@ INSTANTIATE_TEST_SUITE_P(
220220
}
221221
}
222222
)pb"},
223+
{R"pb(
224+
id: 1
225+
comprehension_expr {
226+
iter_var: "foo"
227+
iter_var2: "baz"
228+
iter_range {
229+
id: 2
230+
list_expr {}
231+
}
232+
accu_var: "bar"
233+
accu_init {
234+
id: 3
235+
list_expr {}
236+
}
237+
loop_condition {
238+
id: 4
239+
const_expr { bool_value: true }
240+
}
241+
loop_step {
242+
id: 4
243+
ident_expr { name: "bar" }
244+
}
245+
result {
246+
id: 5
247+
ident_expr { name: "foo" }
248+
}
249+
}
250+
)pb"},
223251
}));
224252

225253
TEST(ExprFromProto, StructFieldInMap) {

0 commit comments

Comments
 (0)