Commit e3076425 authored by Emily Andrews's avatar Emily Andrews Committed by Commit Bot

[mojo] Update mojo .tmpl file to support nesting enums.

Before this change, if the min_version was set on a nested enum
then it would not compile. This change updates that if statement
and adds a new test case to validate the scenario.


Test: Run mojo_unittest.exe
Bug: 896777
Change-Id: I68fe3878d89d114b5601a00770d9653dc764ebd0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2119660
Commit-Queue: Emily Andrews <emiled@microsoft.com>
Reviewed-by: default avatarKen Rockot <rockot@google.com>
Cr-Commit-Position: refs/heads/master@{#754155}
parent 26de9979
......@@ -525,5 +525,22 @@ TEST_F(StructTest, VersionedStructConstructor) {
EXPECT_EQ(1, reordered->c);
}
TEST_F(StructTest, EnumNestedStructTest) {
EnumNestedStructPtr enum_nested_struct =
EnumNestedStruct::New(EnumNestedStruct::StructEnum::FIRST);
EXPECT_EQ(EnumNestedStruct::StructEnum::FIRST,
enum_nested_struct->local_enum_state_);
enum_nested_struct->local_enum_state_ = EnumNestedStruct::StructEnum::SECOND;
EnumNestedStructPtr expected_output(
EnumNestedStruct::New(EnumNestedStruct::StructEnum::SECOND));
EnumNestedStructPtr output = SerializeAndDeserialize<EnumNestedStructPtr>(
std::move(enum_nested_struct));
EXPECT_TRUE(output.Equals(expected_output));
EXPECT_EQ(EnumNestedStruct::StructEnum::SECOND, output->local_enum_state_);
}
} // namespace test
} // namespace mojo
......@@ -414,3 +414,12 @@ struct ContainsHashable {
struct SimpleNestedStruct {
ContainsOther nested;
};
struct EnumNestedStruct {
enum StructEnum {
FIRST,
SECOND
};
[MinVersion=1] StructEnum local_enum_state_;
};
......@@ -64,7 +64,7 @@ class {{struct.name}}DataView {
{{kind|cpp_data_view_type}} {{name}}() const {
{%- if pf.min_version != 0 %}
if (data_->header_.version < {{pf.min_version}})
return {{kind|get_qualified_name_for_kind}}{};
return {{kind|cpp_data_view_type}}{};
{%- endif %}
return static_cast<{{kind|cpp_data_view_type}}>(data_->{{name}});
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment