Note: This document covers API impact only. For more details, see the ABI compatibility page
- | init | step 1 | step 2 | step 3 |
---|---|---|---|---|
fidl | link | link | ||
dart | link | link | ||
go | link | link | ||
hlcpp | link | link | ||
llcpp | link | link | ||
rust | link | link | link |
type Color = flexible enum : int32 {
RED = 1;
BLUE = 2;
};
fidllib.Color complement(fidllib.Color color) {
if (color.isUnknown()) {
return color;
}
switch (color) {
case fidllib.Color.blue:
return fidllib.Color.red;
case fidllib.Color.red:
return fidllib.Color.blue;
default:
return null;
}
}
func complement(color lib.Color) lib.Color {
if color.IsUnknown() {
return color
}
switch color {
case lib.ColorBlue:
return lib.ColorRed
case lib.ColorRed:
return lib.ColorBlue
default:
return color
}
}
fidl_test::Color complement(fidl_test::Color color) {
if (color.IsUnknown()) {
return color;
}
switch (color) {
case fidl_test::Color::RED:
return fidl_test::Color::BLUE;
case fidl_test::Color::BLUE:
return fidl_test::Color::RED;
default:
return color;
}
}
fidl_test::wire::Color complement(fidl_test::wire::Color color) {
if (color.IsUnknown()) {
return color;
}
switch (color) {
case fidl_test::wire::Color::kRed:
return fidl_test::wire::Color::kBlue;
case fidl_test::wire::Color::kBlue:
return fidl_test::wire::Color::kRed;
default:
return color;
}
}
fn complement(color: &fidl_lib::Color) -> Option<fidl_lib::Color> {
match color.validate() {
Ok(fidl_lib::Color::Red) => Some(fidl_lib::Color::Blue),
Ok(fidl_lib::Color::Blue) => Some(fidl_lib::Color::Red),
_ => None,
}
}
fidllib.Color complement(fidllib.Color color) {
- if (color.isUnknown()) {
- return color;
- }
+ assert(color.isUnknown() == false);
switch (color) {
case fidllib.Color.blue:
return fidllib.Color.red;
case fidllib.Color.red:
return fidllib.Color.blue;
default:
return null;
}
}
- Remove usages of any flexible specific APIs
func complement(color lib.Color) lib.Color {
- if color.IsUnknown() {
- return color
- }
switch color {
case lib.ColorBlue:
return lib.ColorRed
case lib.ColorRed:
return lib.ColorBlue
default:
return color
}
}
- Remove usages of any flexible specific APIs
fidl_test::Color complement(fidl_test::Color color) {
- if (color.IsUnknown()) {
- return color;
- }
switch (color) {
case fidl_test::Color::RED:
return fidl_test::Color::BLUE;
case fidl_test::Color::BLUE:
return fidl_test::Color::RED;
default:
return color;
}
}
- Remove usages of any flexible specific APIs
fidl_test::wire::Color complement(fidl_test::wire::Color color) {
- if (color.IsUnknown()) {
- return color;
- }
switch (color) {
case fidl_test::wire::Color::kRed:
return fidl_test::wire::Color::kBlue;
case fidl_test::wire::Color::kBlue:
return fidl_test::wire::Color::kRed;
default:
return color;
}
}
- Remove usages of any flexible specific APIs
- Allow unreachable patterns and add an underscore arm to any
match
statements on the enum.
fn complement(color: &fidl_lib::Color) -> Option<fidl_lib::Color> {
- match color.validate() {
- Ok(fidl_lib::Color::Red) => Some(fidl_lib::Color::Blue),
- Ok(fidl_lib::Color::Blue) => Some(fidl_lib::Color::Red),
+ #[allow(unreachable_patterns)]
+ match color {
+ fidl_lib::Color::Red => Some(fidl_lib::Color::Blue),
+ fidl_lib::Color::Blue => Some(fidl_lib::Color::Red),
_ => None,
}
}
- Change from
flexible
tostrict
- type Color = flexible enum : int32 {
+ type Color = strict enum : int32 {
RED = 1;
BLUE = 2;
};
- Remove the unreachable patterns attribute and underscore arm.
- fn complement(color: &fidl_lib::Color) -> Option<fidl_lib::Color> {
- #[allow(unreachable_patterns)]
+ fn complement(color: &fidl_lib::Color) -> fidl_lib::Color {
match color {
- fidl_lib::Color::Red => Some(fidl_lib::Color::Blue),
- fidl_lib::Color::Blue => Some(fidl_lib::Color::Red),
- _ => None,
+ fidl_lib::Color::Red => fidl_lib::Color::Blue,
+ fidl_lib::Color::Blue => fidl_lib::Color::Red,
}
}