Closed (fixed)
Project:
Drupal core
Version:
11.x-dev
Component:
other
Priority:
Normal
Category:
Task
Assigned:
Unassigned
Issue tags:
Reporter:
Created:
29 Nov 2025 at 04:17 UTC
Updated:
6 Jan 2026 at 20:35 UTC
Jump to comment: Most recent
Comments
Comment #2
nicxvan commentedComment #3
nicxvan commentedComment #4
quietone commentedformatting
Comment #5
quietone commentedThis should be cleaned up before the release.
Comment #8
quietone commentedDue to the amount of git research needed on this issue I am removing the Novice tag.
I think this requires a more git research than is suitable for a novice issue, so removing the tag.
I categorized each URL and fixed those where the issue had a change record.
No change record
1, 5, 7, 8, 13, 15, And a new one, \Drupal\language\Config\LanguageConfigFactoryOverride
Further investigation is needed to determine if these need a change record.
404
2, 3, 4, 6, 14
Fixed
9, 12
10, 11 Changed URL and added more detail to the change record.
Comment #9
quietone commentedFixed these 404s by using git blame to find the issue, which then had a CR; 2, 3, 4, 14. That makes 8 fixes and 7 more to figure out.
No change record
1, 5, 7, 8, 13, 15, And a new one, \Drupal\language\Config\LanguageConfigFactoryOverride
404
6
Fixed
2, 3, 4, 9, 12, 14
10, 11 Changed URL and added more detail to the change record.
Comment #10
quietone commentedAnd the last 404, number 6. There is a change record for that, https://www.drupal.org/node/3533315
No change record
1, 5, 7, 8, 13, 15, And a new one, \Drupal\language\Config\LanguageConfigFactoryOverride
Fixed
2, 3, 4, 6, 9, 12, 14
10, 11 Changed URL and added more detail to the change record.
Comment #11
quietone commentedAdd LanguageConfigFactoryOverride to the issue summary
Comment #12
quietone commentedThe remaining error messages are about changes to the arguments in a constructor. Typically, a change record doesn't add much information for that situation. So, having it link to the issue instead is reasonable. That means the changes are as follows,
No change record - Use the link to the issue
1, 5, 7, 8, 13, 15, And a new one, \Drupal\language\Config\LanguageConfigFactoryOverride
Fixed
2, 3, 4, 6, 9, 12, 14
10, 11 Changed URL and added more detail to the change record.
Most importantly is that all the 404s have been fixed. So, time for a review.
Comment #13
quietone commentedThere was a test failure for BackwardsCompatibilityClassLoaderTest. And then I realized that that test should be using a test URL not a real link to an existing issue or change record. I have changed that URL to use example.com.
Comment #14
quietone commentedComment #15
dwwThe MR itself looks good. Some of the linked CRs did not. 😅 I did some edits as I was confirming that each linked CR matched the deprecation message. Sometimes it was cosmetic formatting, but in some cases, the CR didn't mention things like constructor params changing. For the record, here are all the edits I made:
Meanwhile, checking out the issue fork and running the grep from the summary locally, I'm still seeing:
It's a little hard to follow all the #s in the summary and comments. I'll have to figure out if all these remaining hits are expected...
Comment #16
nicxvan commentedOk I also went through this as well.
My approach was a little different, I just went through the edited ones and made sure they linked to the appropriate CR.
I checked @dww's edits and they looked good.
There are 10 changes, but only 9 marked as changed in the list in the issue summary.
I also confirmed each of the ones marked as no CR do not have a CR and reference the right issue.
I think this is ready if we figure out why 9 are listed as changed but 10 are actually changed.
Comment #17
nicxvan commentedIt's core/modules/system/tests/modules/module_autoload_test/module_autoload_test.services.yml
The ones in 15 are accounted for in the IS, there are no CRs for those issues.
I think this is ready, let's get these updated.
Comment #18
quietone commentedWith this applied I ran the script to check URLs that is in the parent issue. That found another 404 related to these changes. It is in the doc block for a deprecation, not in the trigger_error message. The script found others but they are not related to deprecations, so those will be done in sibling issue.
Comment #19
quietone commentedComment #20
dwwMerge conflicts from #3563876: TypeError: trigger_error(): Argument #2 ($error_level) must be of type int, string given in trigger_error(). Resolved locally and pushed.
Also, marked #3563885: Broken link in trigger_error() as duplicate.
This is probably RTBC.
Comment #21
dwwI re-confirmed that everything I listed in #15 is indeed in the IS and that none of those issues have CRs. So that's all cool.
Pushed commit 1f657dc5 to change the deprecation messages in
LanguageConfigFactoryOverrideto say the new constructor params will be required in D12, not removed.The only other minor nit in the messages touched by this issue is here:
I had to open up
AdminNegotiator.phpto see that$deprecated_service_nameis a real variable holding a real class name, so that message should print out something real. 😅 However, we're passing the service to theAdminNegotiatorclass's__construct()method. Generally, we say something like:Should we do the same here?
Comment #22
dwwLatest pipeline hit this random fail: #3551373: [random test failure] ManageDisplayTest testFormatterUI() and testWidgetUI() Re-running that test (and will be opening an MR in that issue to fix the random fail).
Comment #23
quietone commentedI agree the message discussed in #21 isn't following the standard message style. Changing that is out of scope for this issue. But since this didn't get into 11.3.0 let's tidy that up. I have made a change to that one message.
Comment #24
dwwRe: #23 - okay, cool. Glad we can just fix that here as part of cleaning all these up. I pushed another commit to reword the message to be more like the original message, just including the
::_constructor()stuff I was talking about. Hope that's agreeable. 😅Should we move the "11.3.0 release target" tag?
Comment #25
ivnish@dww
https://git.drupalcode.org/project/drupal/-/merge_requests/14066/diffs#d...
I see 'E_USER_DEPRECATED' with quotes again. Should be without
Comment #26
dwwRe: #25: Totally agree. The version of that merge conflict I had pushed to the MR removed the quotes:
550f2970
Apparently, @quietone didn't pull my changes when they worked on #23, re-resolved the conflict themselves, and re-added the quotes:
2249869e
Then they added 179b8f29
They didn't mention any of this in their comments, and I didn't think to re-check the merge conflict I had already resolved, and only noticed some concerns with 179b8f29 and pushed 7605cf7f to address those.
Regardless, thanks for catching the error! It would have been really sad had we committed this and re-broken #3563876: TypeError: trigger_error(): Argument #2 ($error_level) must be of type int, string given in trigger_error().
Generally, I'm glad we no longer require "deprecation tests" that only trigger deprecations, but at this point, I'm sort of wishing we had a test that was calling
getCountNewComments()and expecting a deprecation, not a fatal error. 😅Comment #27
dwwI realized the sequence of events described in #26 means we also lost commit 1f657dc5 from comment #21. Just cherry-picked that and pushed.
I just re-reviewed the current MR changes. I think we're RTBC, but I'm not qualified to formally move the status now that I've been so involved in the code. 😅
Comment #28
dwwNeeded a rebase for #3557585: Update to Composer 2.9.2
Comment #29
dcam commentedI verified the last couple of changes since this issue was set to RTBC. The new changes look appropriate to me, including the ones that are technically out of scope. I agree that we should just fix them here while we're working on these messages.
I'm sorry about the added
CommentManagerone since that was something I should have caught on review of that issue.Comment #31
catchStrange that a couple of these were linking to the right node ID but the wrong URL, maybe some kind of manual copypasta.
So for most constructor deprecations, we don't require a CR at all, because the deprecation message has as much information as it's really possible to write about it, and because constructor deprecations are 'best effort' since they're supposed to be @internal. I think in these cases what's happened is a wider change has a resulted in a change record, and the change also introduced a constructor deprecation, but that's not really the important thing in the CR. It's fine to add the information, but we shouldn't introduce an expectation that it's in there, because there isn't one.
Committed/pushed to 11.x, thanks!
Comment #35
quietone commented