From 8175a1f905d1bf8ffd33c1be48476161d30b885e Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Tue, 9 Jul 2019 15:26:18 +0300 Subject: [PATCH 1/2] clarify that debug_assert does not completely omits the code TIL that debug_assert is implemented using `if cfg!(debug_assertions)` rather than `#[cfg(debug_assertions)]`. This means one can not use API gated with `#[cfg(debug_assertions)]` in `debug_assert` family of macros. --- src/libcore/macros.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/libcore/macros.rs b/src/libcore/macros.rs index 58ea0207c56..da28afd97c3 100644 --- a/src/libcore/macros.rs +++ b/src/libcore/macros.rs @@ -145,11 +145,11 @@ macro_rules! assert_ne { /// # Uses /// /// Unlike [`assert!`], `debug_assert!` statements are only enabled in non -/// optimized builds by default. An optimized build will omit all +/// optimized builds by default. An optimized build will not execute /// `debug_assert!` statements unless `-C debug-assertions` is passed to the /// compiler. This makes `debug_assert!` useful for checks that are too /// expensive to be present in a release build but may be helpful during -/// development. +/// development. `debug_assert!` statements are always type checked. /// /// An unchecked assertion allows a program in an inconsistent state to keep /// running, which might have unexpected consequences but does not introduce @@ -190,11 +190,11 @@ macro_rules! debug_assert { /// debug representations. /// /// Unlike [`assert_eq!`], `debug_assert_eq!` statements are only enabled in non -/// optimized builds by default. An optimized build will omit all +/// optimized builds by default. An optimized build will not execute /// `debug_assert_eq!` statements unless `-C debug-assertions` is passed to the /// compiler. This makes `debug_assert_eq!` useful for checks that are too /// expensive to be present in a release build but may be helpful during -/// development. +/// development. `debug_assert_eq!` statements are always type checked. /// /// [`assert_eq!`]: ../std/macro.assert_eq.html /// @@ -217,11 +217,11 @@ macro_rules! debug_assert_eq { /// debug representations. /// /// Unlike [`assert_ne!`], `debug_assert_ne!` statements are only enabled in non -/// optimized builds by default. An optimized build will omit all +/// optimized builds by default. An optimized build will not execute /// `debug_assert_ne!` statements unless `-C debug-assertions` is passed to the /// compiler. This makes `debug_assert_ne!` useful for checks that are too /// expensive to be present in a release build but may be helpful during -/// development. +/// development. `debug_assert_ne!` statements are always type checked. /// /// [`assert_ne!`]: ../std/macro.assert_ne.html /// From b052fbb54b09f4bf5e428929758671419de87a63 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Tue, 9 Jul 2019 19:10:22 +0300 Subject: [PATCH 2/2] Apply suggestions from code review Co-Authored-By: Mazdak Farrokhzad --- src/libcore/macros.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/libcore/macros.rs b/src/libcore/macros.rs index da28afd97c3..2e999a0682b 100644 --- a/src/libcore/macros.rs +++ b/src/libcore/macros.rs @@ -149,7 +149,7 @@ macro_rules! assert_ne { /// `debug_assert!` statements unless `-C debug-assertions` is passed to the /// compiler. This makes `debug_assert!` useful for checks that are too /// expensive to be present in a release build but may be helpful during -/// development. `debug_assert!` statements are always type checked. +/// development. The result of expanding `debug_assert!` is always type checked. /// /// An unchecked assertion allows a program in an inconsistent state to keep /// running, which might have unexpected consequences but does not introduce @@ -194,7 +194,7 @@ macro_rules! debug_assert { /// `debug_assert_eq!` statements unless `-C debug-assertions` is passed to the /// compiler. This makes `debug_assert_eq!` useful for checks that are too /// expensive to be present in a release build but may be helpful during -/// development. `debug_assert_eq!` statements are always type checked. +/// development. The result of expanding `debug_assert_eq!` is always type checked. /// /// [`assert_eq!`]: ../std/macro.assert_eq.html /// @@ -221,7 +221,7 @@ macro_rules! debug_assert_eq { /// `debug_assert_ne!` statements unless `-C debug-assertions` is passed to the /// compiler. This makes `debug_assert_ne!` useful for checks that are too /// expensive to be present in a release build but may be helpful during -/// development. `debug_assert_ne!` statements are always type checked. +/// development. The result of expanding `debug_assert_ne!` is always type checked. /// /// [`assert_ne!`]: ../std/macro.assert_ne.html ///