Fix SwitchBase class init error: fetch AppSettingsState on-demand#1
Open
Sun-Phil-Kwon-Miro wants to merge 1 commit intoqalisander:masterfrom
Open
Fix SwitchBase class init error: fetch AppSettingsState on-demand#1Sun-Phil-Kwon-Miro wants to merge 1 commit intoqalisander:masterfrom
Sun-Phil-Kwon-Miro wants to merge 1 commit intoqalisander:masterfrom
Conversation
AppSettingsState.getInstance() was called in a static field initializer, which runs during <clinit> before IntelliJ's service container is ready. Replace the static field with an on-demand accessor method so the service is only fetched at action execution time. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Author
Author
|
Any news on this? |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
SwitchBasehad a static field that eagerly calledAppSettingsState.getInstance()during class initialization:This runs inside
<clinit>— when IntelliJ first loads the action class (e.g. on a keymap lookup). At that point the service container is not yet ready, causing:The error surfaced every time a key was pressed, since IntelliJ tries to resolve the action for keymap matching.
Fix
Replace the static field with a private static accessor method that fetches the service on-demand:
The service is now only retrieved when an action is actually executed, at which point the container is fully initialized. All call sites updated from
settings.tosettings().Test plan
<clinit>error appears in the IDE log on startup or key press🤖 Generated with Claude Code