Remove check for duplicated discriminants
C++ enum and enum class are allowed to contain multiple enumerator
definitions with the same value. Our enum representation in Rust is
compatible with this too, so there is no need to error on such enums.
enum class Enum {
A = 5,
B = 4,
C = 4, // dup
D, // = 5 dup
};
diff --git a/syntax/discriminant.rs b/syntax/discriminant.rs
index 6a04d88..5e39f63 100644
--- a/syntax/discriminant.rs
+++ b/syntax/discriminant.rs
@@ -133,13 +133,9 @@
}
}
}
- if set.values.insert(discriminant) {
- set.previous = Some(discriminant);
- Ok(discriminant)
- } else {
- let msg = format!("discriminant value `{}` already exists", discriminant);
- Err(Error::new(Span::call_site(), msg))
- }
+ set.values.insert(discriminant);
+ set.previous = Some(discriminant);
+ Ok(discriminant)
}
impl Discriminant {
diff --git a/tests/ui/duplicate_enum_discriminants.rs b/tests/ui/duplicate_enum_discriminants.rs
deleted file mode 100644
index ec3d61a..0000000
--- a/tests/ui/duplicate_enum_discriminants.rs
+++ /dev/null
@@ -1,15 +0,0 @@
-#[cxx::bridge]
-mod ffi {
- enum A {
- V1 = 10,
- V2 = 10,
- }
-
- enum B {
- V1 = 10,
- V2,
- V3 = 11,
- }
-}
-
-fn main() {}
diff --git a/tests/ui/duplicate_enum_discriminants.stderr b/tests/ui/duplicate_enum_discriminants.stderr
deleted file mode 100644
index 14505e3..0000000
--- a/tests/ui/duplicate_enum_discriminants.stderr
+++ /dev/null
@@ -1,11 +0,0 @@
-error: discriminant value `10` already exists
- --> $DIR/duplicate_enum_discriminants.rs:5:9
- |
-5 | V2 = 10,
- | ^^^^^^^
-
-error: discriminant value `11` already exists
- --> $DIR/duplicate_enum_discriminants.rs:11:9
- |
-11 | V3 = 11,
- | ^^^^^^^