Extract column names from the deprecated `$dates` property array. Before `$casts`, Laravel used `protected $dates = [...]` to mark columns as Carbon instances. Each column listed here should be typed as `\Carbon\Carbon` by the virtual member provider.
(
members: impl Iterator<Item = &'a ClassLikeMember<'a>>,
content: &str,
)
| 721 | /// columns as Carbon instances. Each column listed here should be |
| 722 | /// typed as `\Carbon\Carbon` by the virtual member provider. |
| 723 | fn extract_dates_definitions<'a>( |
| 724 | members: impl Iterator<Item = &'a ClassLikeMember<'a>>, |
| 725 | content: &str, |
| 726 | ) -> Vec<String> { |
| 727 | let mut names = Vec::new(); |
| 728 | |
| 729 | for member in members { |
| 730 | if let ClassLikeMember::Property(Property::Plain(plain)) = member { |
| 731 | for item in plain.items.iter() { |
| 732 | let var_name = item.variable().name.to_string(); |
| 733 | let stripped = var_name.strip_prefix('$').unwrap_or(&var_name); |
| 734 | if stripped != "dates" { |
| 735 | continue; |
| 736 | } |
| 737 | if let PropertyItem::Concrete(concrete) = item { |
| 738 | let span = concrete.value.span(); |
| 739 | let start = span.start.offset as usize; |
| 740 | let end = span.end.offset as usize; |
| 741 | if let Some(text) = content.get(start..end) { |
| 742 | for name in parse_string_list(text) { |
| 743 | if !names.contains(&name) { |
| 744 | names.push(name); |
| 745 | } |
| 746 | } |
| 747 | } |
| 748 | } |
| 749 | } |
| 750 | } |
| 751 | } |
| 752 | |
| 753 | names |
| 754 | } |
| 755 | |
| 756 | /// Parse a PHP array literal containing only string values. |
| 757 | /// |
no test coverage detected