Resolve modifiers for a class reference (e.g. deprecated).
(
&self,
name: &str,
is_fqn: bool,
ctx: &crate::types::FileContext,
offset: u32,
)
| 414 | |
| 415 | /// Resolve modifiers for a class reference (e.g. deprecated). |
| 416 | fn resolve_class_modifiers( |
| 417 | &self, |
| 418 | name: &str, |
| 419 | is_fqn: bool, |
| 420 | ctx: &crate::types::FileContext, |
| 421 | offset: u32, |
| 422 | ) -> u32 { |
| 423 | let fqn = if is_fqn { |
| 424 | name.to_string() |
| 425 | } else { |
| 426 | ctx.resolve_name_at(name, offset) |
| 427 | }; |
| 428 | |
| 429 | // Check in-file classes. |
| 430 | for class in &ctx.classes { |
| 431 | let class_fqn = match &class.file_namespace { |
| 432 | Some(ns) => format!("{}\\{}", ns, class.name), |
| 433 | None => class.name.to_string(), |
| 434 | }; |
| 435 | if class_fqn == fqn || class.name == fqn { |
| 436 | if class.deprecation_message.is_some() { |
| 437 | return TM_DEPRECATED; |
| 438 | } |
| 439 | return 0; |
| 440 | } |
| 441 | } |
| 442 | |
| 443 | if let Some(class_info) = self.find_or_load_class(&fqn) |
| 444 | && class_info.deprecation_message.is_some() |
| 445 | { |
| 446 | return TM_DEPRECATED; |
| 447 | } |
| 448 | |
| 449 | 0 |
| 450 | } |
| 451 | |
| 452 | /// Resolve the token type for a class declaration by looking up |
| 453 | /// the class in the file's AST. |
no test coverage detected