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 {
RED = 1;
BLUE = 2;
};
fidllib.Color writer(String s) {
if (s == 'red') {
return fidllib.Color.red;
} else if (s == 'blue') {
return fidllib.Color.blue;
} else {
return fidllib.Color.$unknown;
}
}
String reader(fidllib.Color color) {
switch (color) {
case fidllib.Color.blue:
return 'blue';
case fidllib.Color.red:
return 'red';
default:
return '<unknown>';
}
}
func writer(s string) lib.Color {
switch s {
case "blue":
return lib.ColorBlue
case "red":
return lib.ColorRed
default:
return lib.Color_Unknown
}
}
func reader(color lib.Color) string {
switch color {
case lib.ColorBlue:
return "blue"
case lib.ColorRed:
return "red"
default:
return "<unknown>"
}
}
fidl_test::Color writer(std::string s) {
if (s == "red") {
return fidl_test::Color::RED;
} else if (s == "blue") {
return fidl_test::Color::BLUE;
} else {
return fidl_test::Color::Unknown();
}
}
std::string reader(fidl_test::Color color) {
switch (color) {
case fidl_test::Color::RED:
return "red";
case fidl_test::Color::BLUE:
return "blue";
default:
return "<unknown>";
}
}
fidl_test::wire::Color writer(std::string s) {
if (s == "red") {
return fidl_test::wire::Color::kRed;
} else if (s == "blue") {
return fidl_test::wire::Color::kBlue;
} else {
return fidl_test::wire::Color::Unknown();
}
}
std::string reader(fidl_test::wire::Color color) {
switch (color) {
case fidl_test::wire::Color::kRed:
return "red";
case fidl_test::wire::Color::kBlue:
return "blue";
default:
return "<unknown>";
}
}
fn writer(s: &str) -> fidl_lib::Color {
match s {
"red" => fidl_lib::Color::Red,
"blue" => fidl_lib::Color::Blue,
_ => fidl_lib::Color::unknown(),
}
}
fn reader(color: fidl_lib::Color) -> &'static str {
match color {
fidl_lib::Color::Red => "red",
fidl_lib::Color::Blue => "blue",
fidl_lib::ColorUnknown!() => "unknown",
}
}
- Replace any unknown match arm macros with a catch-all case to handle the soon-to-be-added variant.
fn writer(s: &str) -> fidl_lib::Color {
match s {
"red" => fidl_lib::Color::Red,
"blue" => fidl_lib::Color::Blue,
_ => fidl_lib::Color::unknown(),
}
}
fn reader(color: fidl_lib::Color) -> &'static str {
match color {
fidl_lib::Color::Red => "red",
fidl_lib::Color::Blue => "blue",
- fidl_lib::ColorUnknown!() => "unknown",
+ _ => "unknown",
}
}
- Add the new member
type Color = flexible enum {
RED = 1;
BLUE = 2;
+ YELLOW = 3;
};
- Writers can now produce instances of the new enum member.
fidllib.Color writer(String s) {
if (s == 'red') {
return fidllib.Color.red;
} else if (s == 'blue') {
return fidllib.Color.blue;
+ } else if (s == 'yellow') {
+ return fidllib.Color.yellow;
} else {
return fidllib.Color.$unknown;
}
}
String reader(fidllib.Color color) {
switch (color) {
case fidllib.Color.blue:
return 'blue';
case fidllib.Color.red:
return 'red';
+ case fidllib.Color.yellow:
+ return 'yellow';
default:
return '<unknown>';
}
}
- Writers can now produce instances of the new enum member.
func writer(s string) lib.Color {
switch s {
case "blue":
return lib.ColorBlue
case "red":
return lib.ColorRed
+ case "yellow":
+ return lib.ColorYellow
default:
return lib.Color_Unknown
}
}
func reader(color lib.Color) string {
switch color {
case lib.ColorBlue:
return "blue"
case lib.ColorRed:
return "red"
+ case lib.ColorYellow:
+ return "yellow"
default:
return "<unknown>"
}
}
- Writers can now produce instances of the new enum member.
fidl_test::Color writer(std::string s) {
if (s == "red") {
return fidl_test::Color::RED;
} else if (s == "blue") {
return fidl_test::Color::BLUE;
+ } else if (s == "yellow") {
+ return fidl_test::Color::YELLOW;
} else {
return fidl_test::Color::Unknown();
}
}
std::string reader(fidl_test::Color color) {
switch (color) {
case fidl_test::Color::RED:
return "red";
case fidl_test::Color::BLUE:
return "blue";
+ case fidl_test::Color::YELLOW:
+ return "yellow";
default:
return "<unknown>";
}
}
- Writers can now produce instances of the new enum member.
fidl_test::wire::Color writer(std::string s) {
if (s == "red") {
return fidl_test::wire::Color::kRed;
} else if (s == "blue") {
return fidl_test::wire::Color::kBlue;
+ } else if (s == "yellow") {
+ return fidl_test::wire::Color::kYellow;
} else {
return fidl_test::wire::Color::Unknown();
}
}
std::string reader(fidl_test::wire::Color color) {
switch (color) {
case fidl_test::wire::Color::kRed:
return "red";
case fidl_test::wire::Color::kBlue:
return "blue";
+ case fidl_test::wire::Color::kYellow:
+ return "yellow";
default:
return "<unknown>";
}
}
- Writers can now produce instances of the new enum member.
- Replace the catch-all case with the unknown macro.
fn writer(s: &str) -> fidl_lib::Color {
match s {
"red" => fidl_lib::Color::Red,
"blue" => fidl_lib::Color::Blue,
+ "yellow" => fidl_lib::Color::Yellow,
_ => fidl_lib::Color::unknown(),
}
}
fn reader(color: fidl_lib::Color) -> &'static str {
match color {
fidl_lib::Color::Red => "red",
fidl_lib::Color::Blue => "blue",
- _ => "unknown",
+ fidl_lib::Color::Yellow => "yellow",
+ fidl_lib::ColorUnknown!() => "unknown",
}
}