about summary refs log tree commit diff
path: root/compiler
diff options
context:
space:
mode:
authorpierwill <pierwill@users.noreply.github.com>2021-11-12 13:35:42 -0600
committerpierwill <pierwill@users.noreply.github.com>2021-11-13 18:50:29 -0600
commit845c25d1b445f76cd4a2c69a6ac61b85f0327626 (patch)
treeae28d89bfad0fd492461b17622efa305ae75ed7c /compiler
parentf31622a50b06e4e5775cf71d1dfe3e59ffc21aa5 (diff)
downloadrust-845c25d1b445f76cd4a2c69a6ac61b85f0327626.tar.gz
rust-845c25d1b445f76cd4a2c69a6ac61b85f0327626.zip
Generate documentation in rustc `rustc_index::newtype_index` macro
The macro now documents all generated items. Documentation notes
possible panics and unsafety.
Diffstat (limited to 'compiler')
-rw-r--r--compiler/rustc_index/src/vec.rs24
1 files changed, 23 insertions, 1 deletions
diff --git a/compiler/rustc_index/src/vec.rs b/compiler/rustc_index/src/vec.rs
index 45639bad243..55ccfd0ad23 100644
--- a/compiler/rustc_index/src/vec.rs
+++ b/compiler/rustc_index/src/vec.rs
@@ -118,32 +118,54 @@ macro_rules! newtype_index {
         }
 
         impl $type {
+            /// Maximum value the index can take, as a `u32`.
             $v const MAX_AS_U32: u32 = $max;
 
+            /// Maximum value the index can take.
             $v const MAX: Self = Self::from_u32($max);
 
+            /// Creates a new index from a given `usize`.
+            ///
+            /// # Panics
+            ///
+            /// Will panic if `value` exceeds `MAX`.
             #[inline]
             $v const fn from_usize(value: usize) -> Self {
                 assert!(value <= ($max as usize));
+                // SAFETY: We just checked that `value <= max`.
                 unsafe {
                     Self::from_u32_unchecked(value as u32)
                 }
             }
 
+            /// Creates a new index from a given `u32`.
+            ///
+            /// # Panics
+            ///
+            /// Will panic if `value` exceeds `MAX`.
             #[inline]
             $v const fn from_u32(value: u32) -> Self {
                 assert!(value <= $max);
+                // SAFETY: We just checked that `value <= max`.
                 unsafe {
                     Self::from_u32_unchecked(value)
                 }
             }
 
+            /// Creates a new index from a given `u32`.
+            ///
+            /// # Safety
+            ///
+            /// The provided value must be less than or equal to the maximum value for the newtype.
+            /// Providing a value outside this range is undefined due to layout restrictions.
+            ///
+            /// Prefer using `from_u32`.
             #[inline]
             $v const unsafe fn from_u32_unchecked(value: u32) -> Self {
                 Self { private: value }
             }
 
-            /// Extracts the value of this index as an integer.
+            /// Extracts the value of this index as a `usize`.
             #[inline]
             $v const fn index(self) -> usize {
                 self.as_usize()