diff --git a/semver_tests/src/test_cases/enum_repr_int_changed.rs b/semver_tests/src/test_cases/enum_repr_int_changed.rs index 9bc8d9dc..e377fb0e 100644 --- a/semver_tests/src/test_cases/enum_repr_int_changed.rs +++ b/semver_tests/src/test_cases/enum_repr_int_changed.rs @@ -40,6 +40,20 @@ pub enum I32ToU32Enum { Baz, } +#[cfg(not(feature = "enum_repr_int_changed"))] +#[repr(isize)] +pub enum IsizeToUsizeEnum { + Bar, + Baz, +} + +#[cfg(feature = "enum_repr_int_changed")] +#[repr(usize)] +pub enum IsizeToUsizeEnum { + Bar, + Baz, +} + // The following enums have *removals* of repr(i*) and repr(u*), // not changes to another repr(i*) or repr(u*). // They should not be reported by this rule, because they have their own rule. @@ -69,3 +83,29 @@ pub enum I32Enum { Bar, Baz, } + +#[cfg(not(feature = "enum_repr_int_changed"))] +#[repr(isize)] +pub enum IsizeEnum { + Bar, + Baz, +} + +#[cfg(feature = "enum_repr_int_changed")] +pub enum IsizeEnum { + Bar, + Baz, +} + +#[cfg(not(feature = "enum_repr_int_changed"))] +#[repr(usize)] +pub enum UsizeEnum { + Bar, + Baz, +} + +#[cfg(feature = "enum_repr_int_changed")] +pub enum UsizeEnum { + Bar, + Baz, +} diff --git a/semver_tests/src/test_cases/enum_repr_int_removed.rs b/semver_tests/src/test_cases/enum_repr_int_removed.rs index 6cb0585d..d2297f0d 100644 --- a/semver_tests/src/test_cases/enum_repr_int_removed.rs +++ b/semver_tests/src/test_cases/enum_repr_int_removed.rs @@ -23,3 +23,29 @@ pub enum I32Enum { Bar, Baz, } + +#[cfg(not(feature = "enum_repr_int_removed"))] +#[repr(isize)] +pub enum IsizeEnum { + Bar, + Baz, +} + +#[cfg(feature = "enum_repr_int_removed")] +pub enum IsizeEnum { + Bar, + Baz, +} + +#[cfg(not(feature = "enum_repr_int_removed"))] +#[repr(usize)] +pub enum UsizeEnum { + Bar, + Baz, +} + +#[cfg(feature = "enum_repr_int_removed")] +pub enum UsizeEnum { + Bar, + Baz, +} diff --git a/src/queries/enum_repr_int_changed.ron b/src/queries/enum_repr_int_changed.ron index a940002e..fe242fe3 100644 --- a/src/queries/enum_repr_int_changed.ron +++ b/src/queries/enum_repr_int_changed.ron @@ -58,7 +58,7 @@ SemverQuery( }"#, arguments: { "public": "public", - "repr_regex": "#\\[repr\\([ui]\\d+\\)\\]", + "repr_regex": "#\\[repr\\([ui]\\d+|size\\)\\]", "zero": 0, }, error_message: "The repr(u*) or repr(i*) attribute on an enum was changed to another integer type. This can cause its memory representation to change, breaking FFI use cases.", diff --git a/src/queries/enum_repr_int_removed.ron b/src/queries/enum_repr_int_removed.ron index 5a3c658f..c9fc037f 100644 --- a/src/queries/enum_repr_int_removed.ron +++ b/src/queries/enum_repr_int_removed.ron @@ -51,7 +51,7 @@ SemverQuery( }"#, arguments: { "public": "public", - "repr_regex": "#\\[repr\\([ui]\\d+\\)\\]", + "repr_regex": "#\\[repr\\([ui]\\d+|size\\)\\]", "zero": 0, }, error_message: "repr(u*) or repr(i*) was removed from an enum. This can cause its memory representation to change, breaking FFI use cases.", diff --git a/src/test_data/enum_repr_int_changed.output.ron b/src/test_data/enum_repr_int_changed.output.ron index c8a8909c..78dee462 100644 --- a/src/test_data/enum_repr_int_changed.output.ron +++ b/src/test_data/enum_repr_int_changed.output.ron @@ -46,5 +46,21 @@ String("#[repr(u32)]"), ]), "visibility_limit": String("public"), + }, + { + "name": String("IsizeToUsizeEnum"), + "path": List([ + String("semver_tests"), + String("test_cases"), + String("enum_repr_int_changed"), + String("IsizeToUsizeEnum"), + ]), + "span_filename": String("src/test_cases/enum_repr_int_changed.rs"), + "span_begin_line": Uint64(52), + "old_attr": String("#[repr(isize)]"), + "new_attr": List([ + String("#[repr(usize)]"), + ]), + "visibility_limit": String("public"), } ] diff --git a/src/test_data/enum_repr_int_removed.output.ron b/src/test_data/enum_repr_int_removed.output.ron index 53cf128e..f1d6d762 100644 --- a/src/test_data/enum_repr_int_removed.output.ron +++ b/src/test_data/enum_repr_int_removed.output.ron @@ -22,5 +22,29 @@ "span_filename": String("src/test_cases/enum_repr_int_removed.rs"), "span_begin_line": Uint64(22), "visibility_limit": String("public"), + }, + { + "name": String("IsizeEnum"), + "path": List([ + String("semver_tests"), + String("test_cases"), + String("enum_repr_int_removed"), + String("IsizeEnum"), + ]), + "span_filename": String("src/test_cases/enum_repr_int_removed.rs"), + "span_begin_line": Uint64(35), + "visibility_limit": String("public"), + }, + { + "name": String("UsizeEnum"), + "path": List([ + String("semver_tests"), + String("test_cases"), + String("enum_repr_int_removed"), + String("UsizeEnum"), + ]), + "span_filename": String("src/test_cases/enum_repr_int_removed.rs"), + "span_begin_line": Uint64(48), + "visibility_limit": String("public"), } ]