From 0d6dc4a6ed448dd2cd58e2b3e6939766fa2ee7c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= Date: Mon, 12 Dec 2022 18:43:01 +0100 Subject: [PATCH] Fix CI, again. Make size tests take a range. --- build.rs | 9 --------- src/size_of_tests.rs | 37 ++++++++++++------------------------- 2 files changed, 12 insertions(+), 34 deletions(-) diff --git a/build.rs b/build.rs index 89407f6f..9ecf32b6 100644 --- a/build.rs +++ b/build.rs @@ -37,14 +37,5 @@ mod codegen { } fn main() { - if std::mem::size_of::>() == 1 { - // https://github.com/rust-lang/rust/pull/45225 - println!("cargo:rustc-cfg=rustc_has_pr45225") - } - - if std::mem::size_of::>() == 24 { - println!("cargo:rustc-cfg=rustc_has_better_cow_layout") - } - codegen::main(); } diff --git a/src/size_of_tests.rs b/src/size_of_tests.rs index f5a63673..edd2b439 100644 --- a/src/size_of_tests.rs +++ b/src/size_of_tests.rs @@ -4,62 +4,49 @@ use crate::cow_rc_str::CowRcStr; use crate::tokenizer::Token; -use std::borrow::Cow; macro_rules! size_of_test { - ($testname: ident, $t: ty, $expected_size: expr) => { + ($testname: ident, $t: ty, $expected_min_size: expr, $expected_max_size: expr) => { #[test] fn $testname() { let new = ::std::mem::size_of::<$t>(); - let old = $expected_size; - if new < old { + if new < $expected_min_size { panic!( "Your changes have decreased the stack size of {} from {} to {}. \ Good work! Please update the expected size in {}.", stringify!($t), - old, + $expected_min_size, new, file!() ) - } else if new > old { + } else if new > $expected_max_size { panic!( "Your changes have increased the stack size of {} from {} to {}. \ Please consider choosing a design which avoids this increase. \ If you feel that the increase is necessary, update the size in {}.", stringify!($t), - old, + $expected_max_size, new, file!() ) } } }; + ($testname: ident, $t: ty, $expected_size: expr) => { + size_of_test!($testname, $t, $expected_size, $expected_size); + }; } // Some of these assume 64-bit size_of_test!(token, Token, 32); -size_of_test!(std_cow_str, Cow<'static, str>, if cfg!(rustc_has_better_cow_layout) { 24 } else { 32 }); +size_of_test!(std_cow_str, std::borrow::Cow<'static, str>, 24, 32); size_of_test!(cow_rc_str, CowRcStr, 16); size_of_test!(tokenizer, crate::tokenizer::Tokenizer, 72); -size_of_test!( - parser_input, - crate::parser::ParserInput, - if cfg!(rustc_has_pr45225) { 136 } else { 144 } -); +size_of_test!(parser_input, crate::parser::ParserInput, 136); size_of_test!(parser, crate::parser::Parser, 16); size_of_test!(source_position, crate::SourcePosition, 8); size_of_test!(parser_state, crate::ParserState, 24); -size_of_test!(basic_parse_error, crate::BasicParseError, if cfg!(rustc_has_better_cow_layout) { 40 } else { 48 }); -size_of_test!( - parse_error_lower_bound, - crate::ParseError<()>, - if cfg!(rustc_has_better_cow_layout) { - 40 - } else if cfg!(rustc_has_pr45225) { - 48 - } else { - 56 - } -); +size_of_test!(basic_parse_error, crate::BasicParseError, 40, 48); +size_of_test!(parse_error_lower_bound, crate::ParseError<()>, 40, 48);