Upgrade pdl-compiler to 0.2.2
This project was upgraded with external_updater.
Usage: tools/external_updater/updater.sh update rust/crates/pdl-compiler
For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
Test: TreeHugger
Change-Id: I4151e72a15bcac21c38b734ac3ba71fde1b3d0b3
diff --git a/scripts/generate_cxx_backend_tests.py b/scripts/generate_cxx_backend_tests.py
index 880988e..818d376 100755
--- a/scripts/generate_cxx_backend_tests.py
+++ b/scripts/generate_cxx_backend_tests.py
@@ -62,13 +62,30 @@
sanitized_var = var.replace('[', '_').replace(']', '')
field_var = f'{sanitized_var}_{id}'
- if isinstance(field, ast.ScalarField):
+ if isinstance(field, ast.ScalarField) and field.cond:
+ value = f"std::make_optional({value})" if value is not None else "std::nullopt"
+ checks.append(f"ASSERT_EQ({get_field(decl, var, id)}, {value});")
+
+ elif isinstance(field, ast.ScalarField):
+ checks.append(f"ASSERT_EQ({get_field(decl, var, id)}, {value});")
+
+ elif (isinstance(field, ast.TypedefField) and
+ isinstance(field.type, ast.EnumDeclaration) and
+ field.cond):
+ value = f"std::make_optional({field.type_id}({value}))" if value is not None else "std::nullopt"
checks.append(f"ASSERT_EQ({get_field(decl, var, id)}, {value});")
elif (isinstance(field, ast.TypedefField) and
isinstance(field.type, (ast.EnumDeclaration, ast.CustomFieldDeclaration, ast.ChecksumDeclaration))):
checks.append(f"ASSERT_EQ({get_field(decl, var, id)}, {field.type_id}({value}));")
+ elif isinstance(field, ast.TypedefField) and field.cond and value is None:
+ checks.append(f"ASSERT_TRUE(!{get_field(decl, var, id)}.has_value());")
+
+ elif isinstance(field, ast.TypedefField) and field.cond and value is not None:
+ checks.append(f"{field.type_id} const& {field_var} = {get_field(decl, var, id)}.value();")
+ checks.extend(check_members(field.type, field_var, value))
+
elif isinstance(field, ast.TypedefField):
checks.append(f"{field.type_id} const& {field_var} = {get_field(decl, var, id)};")
checks.extend(check_members(field.type, field_var, value))
@@ -169,9 +186,21 @@
value = initializer['payload'] if isinstance(field, (ast.PayloadField,
ast.BodyField)) else initializer.get(field_id, None)
- if isinstance(field, ast.ScalarField):
+ if field.cond_for:
+ pass
+
+ elif field.cond and value is None:
+ parameters.append("std::nullopt")
+
+ elif isinstance(field, ast.ScalarField) and field.cond:
+ parameters.append(f"std::make_optional({value})")
+
+ elif isinstance(field, ast.ScalarField):
parameters.append(f"{value}")
+ elif isinstance(field, ast.TypedefField) and isinstance(field.type, ast.EnumDeclaration) and field.cond:
+ parameters.append(f"std::make_optional({field.type_id}({value}))")
+
elif isinstance(field, ast.TypedefField) and isinstance(field.type, ast.EnumDeclaration):
parameters.append(f"{field.type_id}({value})")