about summary refs log tree commit diff
path: root/compiler/rustc_errors/src
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2023-08-25 07:02:01 +0000
committerbors <bors@rust-lang.org>2023-08-25 07:02:01 +0000
commit4535d33e337104e7961ca7f2086627cbb07919dd (patch)
tree9f14e509b5c90ab2617c11b372d7014f73c9a07d /compiler/rustc_errors/src
parentc9228aeaba61f57d425593f4cbbc26e4a6750a9d (diff)
parent021e882c34e29a977e079f6be918fdc8d4e6f61f (diff)
downloadrust-4535d33e337104e7961ca7f2086627cbb07919dd.tar.gz
rust-4535d33e337104e7961ca7f2086627cbb07919dd.zip
Auto merge of #115204 - matthiaskrgr:rollup-avsp3t3, r=matthiaskrgr
Rollup of 5 pull requests

Successful merges:

 - #114754 (Name what ln_gamma does)
 - #115081 (Allow overwriting ExpnId for concurrent decoding)
 - #115151 (Fix CFI: f32 and f64 are encoded incorrectly for cross-language CFI)
 - #115169 (remove some unnecessary ignore-debug clauses)
 - #115190 (Add comment to the push_trailing function)

r? `@ghost`
`@rustbot` modify labels: rollup
Diffstat (limited to 'compiler/rustc_errors/src')
-rw-r--r--compiler/rustc_errors/src/lib.rs18
1 files changed, 16 insertions, 2 deletions
diff --git a/compiler/rustc_errors/src/lib.rs b/compiler/rustc_errors/src/lib.rs
index db5df554d23..b7e1b0c8ad1 100644
--- a/compiler/rustc_errors/src/lib.rs
+++ b/compiler/rustc_errors/src/lib.rs
@@ -197,8 +197,14 @@ impl CodeSuggestion {
 
         use rustc_span::{CharPos, Pos};
 
-        /// Append to a buffer the remainder of the line of existing source code, and return the
-        /// count of lines that have been added for accurate highlighting.
+        /// Extracts a substring from the provided `line_opt` based on the specified low and high indices,
+        /// appends it to the given buffer `buf`, and returns the count of newline characters in the substring
+        /// for accurate highlighting.
+        /// If `line_opt` is `None`, a newline character is appended to the buffer, and 0 is returned.
+        ///
+        /// ## Returns
+        ///
+        /// The count of newline characters in the extracted substring.
         fn push_trailing(
             buf: &mut String,
             line_opt: Option<&Cow<'_, str>>,
@@ -206,22 +212,30 @@ impl CodeSuggestion {
             hi_opt: Option<&Loc>,
         ) -> usize {
             let mut line_count = 0;
+            // Convert CharPos to Usize, as CharPose is character offset
+            // Extract low index and high index
             let (lo, hi_opt) = (lo.col.to_usize(), hi_opt.map(|hi| hi.col.to_usize()));
             if let Some(line) = line_opt {
                 if let Some(lo) = line.char_indices().map(|(i, _)| i).nth(lo) {
+                    // Get high index while account for rare unicode and emoji with char_indices
                     let hi_opt = hi_opt.and_then(|hi| line.char_indices().map(|(i, _)| i).nth(hi));
                     match hi_opt {
+                        // If high index exist, take string from low to high index
                         Some(hi) if hi > lo => {
+                            // count how many '\n' exist
                             line_count = line[lo..hi].matches('\n').count();
                             buf.push_str(&line[lo..hi])
                         }
                         Some(_) => (),
+                        // If high index absence, take string from low index till end string.len
                         None => {
+                            // count how many '\n' exist
                             line_count = line[lo..].matches('\n').count();
                             buf.push_str(&line[lo..])
                         }
                     }
                 }
+                // If high index is None
                 if hi_opt.is_none() {
                     buf.push('\n');
                 }