diff options
Diffstat (limited to 'crates')
-rw-r--r-- | crates/ide/src/inlay_hints.rs | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/crates/ide/src/inlay_hints.rs b/crates/ide/src/inlay_hints.rs index a74829cd0..ddab9a168 100644 --- a/crates/ide/src/inlay_hints.rs +++ b/crates/ide/src/inlay_hints.rs | |||
@@ -353,13 +353,18 @@ fn is_argument_similar_to_param_name( | |||
353 | } | 353 | } |
354 | match get_string_representation(argument) { | 354 | match get_string_representation(argument) { |
355 | None => false, | 355 | None => false, |
356 | Some(mut repr) => { | 356 | Some(argument_string) => { |
357 | let param_name = param_name.to_ascii_lowercase(); | 357 | let mut arg_bytes = argument_string.bytes().skip_while(|&c| c == b'_'); |
358 | let argument_string = { | 358 | let starts_with_pattern = param_name.bytes().all( |
359 | repr.make_ascii_lowercase(); | 359 | |expected| matches!(arg_bytes.next(), Some(actual) if expected.eq_ignore_ascii_case(&actual)), |
360 | repr.trim_start_matches('_') | 360 | ); |
361 | }; | 361 | |
362 | argument_string.starts_with(¶m_name) || argument_string.ends_with(¶m_name) | 362 | let mut arg_bytes = argument_string.bytes(); |
363 | let ends_with_pattern = param_name.bytes().rev().all( | ||
364 | |expected| matches!(arg_bytes.next_back(), Some(actual) if expected.eq_ignore_ascii_case(&actual)), | ||
365 | ); | ||
366 | |||
367 | starts_with_pattern || ends_with_pattern | ||
363 | } | 368 | } |
364 | } | 369 | } |
365 | } | 370 | } |