From 62d1456d870ba5af91476cbc73b7af955a69b1f8 Mon Sep 17 00:00:00 2001 From: VISTALL Date: Tue, 16 Jun 2020 09:15:10 +0300 Subject: [PATCH 001/150] browser debug stub --- debugger/browser-debugger-impl/pom.xml | 57 ++++++++++++ .../JavaScriptBrowserConfiguration.java | 88 +++++++++++++++++++ .../JavaScriptBrowserConfigurationEditor.java | 37 ++++++++ .../JavaScriptBrowserConfigurationType.java | 39 ++++++++ .../browser/JavaScriptBrowserDebugRunner.java | 27 ++++++ .../transport/ExtensionWebSocketAccepter.java | 25 ++++++ .../JavaScriptLineBreakpointType.java | 7 +- plugin/pom.xml | 6 ++ plugin/src/main/resources/META-INF/plugin.xml | 12 ++- pom.xml | 1 + 10 files changed, 292 insertions(+), 7 deletions(-) create mode 100644 debugger/browser-debugger-impl/pom.xml create mode 100644 debugger/browser-debugger-impl/src/main/java/consulo/javascript/debugger/browser/JavaScriptBrowserConfiguration.java create mode 100644 debugger/browser-debugger-impl/src/main/java/consulo/javascript/debugger/browser/JavaScriptBrowserConfigurationEditor.java create mode 100644 debugger/browser-debugger-impl/src/main/java/consulo/javascript/debugger/browser/JavaScriptBrowserConfigurationType.java create mode 100644 debugger/browser-debugger-impl/src/main/java/consulo/javascript/debugger/browser/JavaScriptBrowserDebugRunner.java create mode 100644 debugger/browser-debugger-impl/src/main/java/consulo/javascript/debugger/browser/transport/ExtensionWebSocketAccepter.java diff --git a/debugger/browser-debugger-impl/pom.xml b/debugger/browser-debugger-impl/pom.xml new file mode 100644 index 00000000..e036b09c --- /dev/null +++ b/debugger/browser-debugger-impl/pom.xml @@ -0,0 +1,57 @@ + + + + 4.0.0 + + consulo + arch.ide-provided + 2-SNAPSHOT + + + + consulo.plugin + consulo.javascript-browser.debugger.impl + 2-SNAPSHOT + jar + + + + consulo + https://maven.consulo.io/repository/snapshots/ + + true + interval:60 + + + + + + + ${project.groupId} + consulo.javascript-base.impl + ${project.version} + + + + ${project.groupId} + com.intellij.xml + ${project.version} + provided + + + \ No newline at end of file diff --git a/debugger/browser-debugger-impl/src/main/java/consulo/javascript/debugger/browser/JavaScriptBrowserConfiguration.java b/debugger/browser-debugger-impl/src/main/java/consulo/javascript/debugger/browser/JavaScriptBrowserConfiguration.java new file mode 100644 index 00000000..d6259d8c --- /dev/null +++ b/debugger/browser-debugger-impl/src/main/java/consulo/javascript/debugger/browser/JavaScriptBrowserConfiguration.java @@ -0,0 +1,88 @@ +package consulo.javascript.debugger.browser; + +import com.intellij.compiler.options.CompileStepBeforeRun; +import com.intellij.execution.DefaultExecutionResult; +import com.intellij.execution.ExecutionException; +import com.intellij.execution.ExecutionResult; +import com.intellij.execution.Executor; +import com.intellij.execution.configurations.*; +import com.intellij.execution.filters.TextConsoleBuilder; +import com.intellij.execution.filters.TextConsoleBuilderFactory; +import com.intellij.execution.runners.ExecutionEnvironment; +import com.intellij.execution.runners.ProgramRunner; +import com.intellij.execution.runners.RunConfigurationWithSuppressedDefaultRunAction; +import com.intellij.execution.ui.ConsoleView; +import com.intellij.ide.browsers.BrowserFamily; +import com.intellij.ide.browsers.BrowserLauncher; +import com.intellij.ide.browsers.WebBrowser; +import com.intellij.ide.browsers.WebBrowserManager; +import com.intellij.openapi.module.Module; +import com.intellij.openapi.module.ModuleManager; +import com.intellij.openapi.options.SettingsEditor; +import com.intellij.xdebugger.DefaultDebugProcessHandler; +import consulo.annotation.access.RequiredReadAction; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import java.util.Arrays; +import java.util.Collection; + +/** + * @author VISTALL + * @since 2020-06-15 + */ +public class JavaScriptBrowserConfiguration extends ModuleBasedConfiguration implements RunConfigurationWithSuppressedDefaultRunAction, CompileStepBeforeRun.Suppressor +{ + public JavaScriptBrowserConfiguration(String name, RunConfigurationModule configurationModule, ConfigurationFactory factory) + { + super(name, configurationModule, factory); + } + + public JavaScriptBrowserConfiguration(RunConfigurationModule configurationModule, ConfigurationFactory factory) + { + super(configurationModule, factory); + } + + @Override + @RequiredReadAction + public Collection getValidModules() + { + ModuleManager manager = ModuleManager.getInstance(getProject()); + return Arrays.asList(manager.getModules()); + } + + @Nonnull + @Override + public SettingsEditor getConfigurationEditor() + { + return new JavaScriptBrowserConfigurationEditor(); + } + + @Nullable + @Override + public RunProfileState getState(@Nonnull Executor executor, @Nonnull ExecutionEnvironment environment) throws ExecutionException + { + return new RunProfileState() + { + @Nullable + @Override + public ExecutionResult execute(Executor executor, @Nonnull ProgramRunner programRunner) throws ExecutionException + { + TextConsoleBuilder builder = TextConsoleBuilderFactory.getInstance().createBuilder(environment.getProject()); + + ConsoleView console = builder.getConsole(); + + WebBrowser browser = WebBrowserManager.getInstance().getFirstBrowserOrNull(BrowserFamily.CHROME); + + if(browser == null) + { + throw new ExecutionException("Can't find Chrome browser"); + } + + BrowserLauncher.getInstance().browse("http://localhost", browser, environment.getProject()); + + return new DefaultExecutionResult(console, new DefaultDebugProcessHandler()); + } + }; + } +} diff --git a/debugger/browser-debugger-impl/src/main/java/consulo/javascript/debugger/browser/JavaScriptBrowserConfigurationEditor.java b/debugger/browser-debugger-impl/src/main/java/consulo/javascript/debugger/browser/JavaScriptBrowserConfigurationEditor.java new file mode 100644 index 00000000..6128fc69 --- /dev/null +++ b/debugger/browser-debugger-impl/src/main/java/consulo/javascript/debugger/browser/JavaScriptBrowserConfigurationEditor.java @@ -0,0 +1,37 @@ +package consulo.javascript.debugger.browser; + +import com.intellij.openapi.options.ConfigurationException; +import com.intellij.openapi.options.SettingsEditor; +import consulo.ui.Component; +import consulo.ui.Label; +import consulo.ui.annotation.RequiredUIAccess; +import consulo.ui.layout.VerticalLayout; + +import javax.annotation.Nullable; + +/** + * @author VISTALL + * @since 2020-06-15 + */ +public class JavaScriptBrowserConfigurationEditor extends SettingsEditor +{ + @Nullable + @Override + @RequiredUIAccess + protected Component createUIComponent() + { + return VerticalLayout.create().add(Label.create("test")); + } + + @Override + protected void resetEditorFrom(JavaScriptBrowserConfiguration javaScriptBrowserConfiguration) + { + + } + + @Override + protected void applyEditorTo(JavaScriptBrowserConfiguration javaScriptBrowserConfiguration) throws ConfigurationException + { + + } +} diff --git a/debugger/browser-debugger-impl/src/main/java/consulo/javascript/debugger/browser/JavaScriptBrowserConfigurationType.java b/debugger/browser-debugger-impl/src/main/java/consulo/javascript/debugger/browser/JavaScriptBrowserConfigurationType.java new file mode 100644 index 00000000..33d66b6b --- /dev/null +++ b/debugger/browser-debugger-impl/src/main/java/consulo/javascript/debugger/browser/JavaScriptBrowserConfigurationType.java @@ -0,0 +1,39 @@ +package consulo.javascript.debugger.browser; + +import com.intellij.execution.configurations.ConfigurationFactory; +import com.intellij.execution.configurations.ConfigurationTypeBase; +import com.intellij.execution.configurations.RunConfiguration; +import com.intellij.execution.configurations.RunConfigurationModule; +import com.intellij.icons.AllIcons; +import com.intellij.openapi.project.Project; +import consulo.javascript.module.extension.JavaScriptModuleExtension; +import consulo.module.extension.ModuleExtensionHelper; + +import javax.annotation.Nonnull; + +/** + * @author VISTALL + * @since 2020-06-15 + */ +public class JavaScriptBrowserConfigurationType extends ConfigurationTypeBase +{ + public JavaScriptBrowserConfigurationType() + { + super("JavaScriptBrowserConfigurationType", "JavaScript Debug", "", AllIcons.RunConfigurations.Web_app); + + addFactory(new ConfigurationFactory(this) + { + @Override + public RunConfiguration createTemplateConfiguration(Project project) + { + return new JavaScriptBrowserConfiguration(new RunConfigurationModule(project), this); + } + + @Override + public boolean isApplicable(@Nonnull Project project) + { + return ModuleExtensionHelper.getInstance(project).hasModuleExtension(JavaScriptModuleExtension.class); + } + }); + } +} diff --git a/debugger/browser-debugger-impl/src/main/java/consulo/javascript/debugger/browser/JavaScriptBrowserDebugRunner.java b/debugger/browser-debugger-impl/src/main/java/consulo/javascript/debugger/browser/JavaScriptBrowserDebugRunner.java new file mode 100644 index 00000000..6f51fcfc --- /dev/null +++ b/debugger/browser-debugger-impl/src/main/java/consulo/javascript/debugger/browser/JavaScriptBrowserDebugRunner.java @@ -0,0 +1,27 @@ +package consulo.javascript.debugger.browser; + +import com.intellij.execution.configurations.RunProfile; +import com.intellij.execution.executors.DefaultDebugExecutor; +import com.intellij.execution.runners.DefaultProgramRunner; + +import javax.annotation.Nonnull; + +/** + * @author VISTALL + * @since 2020-06-15 + */ +public class JavaScriptBrowserDebugRunner extends DefaultProgramRunner +{ + @Nonnull + @Override + public String getRunnerId() + { + return "browser-javascript-debug"; + } + + @Override + public boolean canRun(@Nonnull String executorId, @Nonnull RunProfile runProfile) + { + return executorId.equals(DefaultDebugExecutor.EXECUTOR_ID) && runProfile instanceof JavaScriptBrowserConfiguration; + } +} diff --git a/debugger/browser-debugger-impl/src/main/java/consulo/javascript/debugger/browser/transport/ExtensionWebSocketAccepter.java b/debugger/browser-debugger-impl/src/main/java/consulo/javascript/debugger/browser/transport/ExtensionWebSocketAccepter.java new file mode 100644 index 00000000..efa9b8b7 --- /dev/null +++ b/debugger/browser-debugger-impl/src/main/java/consulo/javascript/debugger/browser/transport/ExtensionWebSocketAccepter.java @@ -0,0 +1,25 @@ +package consulo.javascript.debugger.browser.transport; + +import consulo.builtInServer.websocket.WebSocketAccepter; +import consulo.builtInServer.websocket.WebSocketConnection; + +import javax.annotation.Nonnull; + +/** + * @author VISTALL + * @since 2020-06-15 + */ +public class ExtensionWebSocketAccepter implements WebSocketAccepter +{ + @Override + public void accept(@Nonnull WebSocketConnection webSocketConnection, @Nonnull byte[] bytes) + { + System.out.println(bytes.toString()); + } + + @Override + public void accept(@Nonnull WebSocketConnection webSocketConnection, @Nonnull String text) + { + System.out.println(text); + } +} diff --git a/debugger/debugger-impl/src/main/java/consulo/javascript/debugger/JavaScriptLineBreakpointType.java b/debugger/debugger-impl/src/main/java/consulo/javascript/debugger/JavaScriptLineBreakpointType.java index 892f32ac..791f3471 100644 --- a/debugger/debugger-impl/src/main/java/consulo/javascript/debugger/JavaScriptLineBreakpointType.java +++ b/debugger/debugger-impl/src/main/java/consulo/javascript/debugger/JavaScriptLineBreakpointType.java @@ -16,8 +16,6 @@ package consulo.javascript.debugger; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import com.intellij.javascript.JSDebuggerSupportUtils; import com.intellij.lang.javascript.JavaScriptFileType; import com.intellij.openapi.editor.Document; @@ -28,6 +26,9 @@ import com.intellij.xdebugger.evaluation.EvaluationMode; import com.intellij.xdebugger.evaluation.XDebuggerEditorsProvider; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + /** * @author VISTALL * @since 20.03.14 @@ -37,7 +38,7 @@ public class JavaScriptLineBreakpointType extends XLineBreakpointTypeBase @Nonnull public static JavaScriptLineBreakpointType getInstance() { - return EXTENSION_POINT_NAME.findExtension(JavaScriptLineBreakpointType.class); + return EXTENSION_POINT_NAME.findExtensionOrFail(JavaScriptLineBreakpointType.class); } public JavaScriptLineBreakpointType() diff --git a/plugin/pom.xml b/plugin/pom.xml index 030f83aa..7d0b6b09 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -167,6 +167,12 @@ ${project.version} + + ${project.groupId} + consulo.javascript-browser.debugger.impl + ${project.version} + + consulo.internal lib.org.chromium.sdk diff --git a/plugin/src/main/resources/META-INF/plugin.xml b/plugin/src/main/resources/META-INF/plugin.xml index 6d4f3dc9..ba6f51c7 100644 --- a/plugin/src/main/resources/META-INF/plugin.xml +++ b/plugin/src/main/resources/META-INF/plugin.xml @@ -135,7 +135,7 @@ - + @@ -147,9 +147,9 @@ - + - + @@ -166,12 +166,16 @@ + + + + - + diff --git a/pom.xml b/pom.xml index cdd5757e..0f1d8be8 100644 --- a/pom.xml +++ b/pom.xml @@ -49,6 +49,7 @@ web-browser-impl debugger/debugger-impl + debugger/browser-debugger-impl debugger/v8-debugger-impl lang-version-impl/javascript16-impl lang-version-impl/javascript17-impl From 4f2fa8301dffbee5a2fed217ca750bd3df40e9bd Mon Sep 17 00:00:00 2001 From: Valery Semenchuk Date: Mon, 27 Feb 2023 21:59:04 +0400 Subject: [PATCH 002/150] add forms rt dependency --- plugin/pom.xml | 6 ++++++ plugin/src/main/java/module-info.java | 1 + 2 files changed, 7 insertions(+) diff --git a/plugin/pom.xml b/plugin/pom.xml index 49ca2107..47b49906 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -178,6 +178,12 @@ 1.0-SNAPSHOT + + consulo.internal + forms_rt + true + + ${project.groupId} diff --git a/plugin/src/main/java/module-info.java b/plugin/src/main/java/module-info.java index 7fe58218..1c88e8d9 100644 --- a/plugin/src/main/java/module-info.java +++ b/plugin/src/main/java/module-info.java @@ -13,6 +13,7 @@ // TODO remove in future requires java.desktop; + requires forms.rt; exports com.intellij.javascript; exports com.intellij.javascript.manipulators; From 67d3ed612710c0d194012e4239883be715115479 Mon Sep 17 00:00:00 2001 From: Valery Semenchuk Date: Sun, 19 Mar 2023 14:49:15 +0400 Subject: [PATCH 003/150] inspections state moved to new api --- inspections/pom.xml | 18 + .../com/sixrr/inspectjs/BaseInspection.java | 36 +- .../inspectjs/BaseInspectionVisitor.java | 292 ++++---- .../sixrr/inspectjs/JavaScriptInspection.java | 14 - .../AssignmentResultUsedJSInspection.java | 6 +- ...ignmentToForLoopParameterJSInspection.java | 6 +- ...gnmentToFunctionParameterJSInspection.java | 6 +- .../NestedAssignmentJSInspection.java | 6 +- ...entWithOperatorAssignmentJSInspection.java | 8 +- .../SillyAssignmentJSInspection.java | 6 +- .../bitwise/IncompatibleMaskJSInspection.java | 6 +- ...ointlessBitwiseExpressionJSInspection.java | 450 ++++++------ ...essBitwiseExpressionJSInspectionState.java | 41 ++ .../bitwise/ShiftOutOfRangeJSInspection.java | 6 +- .../bugs/DivideByZeroJSInspection.java | 6 +- ...ityComparisonWithCoercionJSInspection.java | 8 +- .../bugs/InfiniteLoopJSInspection.java | 6 +- .../bugs/InfiniteRecursionJSInspection.java | 6 +- ...tCircuitBooleanExpressionJSInspection.java | 8 +- .../ObjectAllocationIgnoredJSInspection.java | 6 +- ...extLabelInSwitchStatementJSInspection.java | 6 +- .../AnonymousFunctionJSInspection.java | 6 +- .../confusing/BlockStatementJSInspection.java | 6 +- .../confusing/CallerJSInspection.java | 6 +- .../CommaExpressionJSInspection.java | 6 +- .../ConditionalExpressionJSInspection.java | 6 +- ...usingFloatingPointLiteralJSInspection.java | 8 +- .../ConfusingPlusesOrMinusesJSInspection.java | 6 +- .../DynamicallyGeneratedCodeJSInspection.java | 6 +- .../EmptyStatementBodyJSInspection.java | 294 ++++---- .../EmptyStatementBodyJSInspectionState.java | 41 ++ ...rementDecrementResultUsedJSInspection.java | 6 +- .../confusing/MagicNumberJSInspection.java | 6 +- ...atedConditionalExpressionJSInspection.java | 8 +- .../NegatedIfStatementJSInspection.java | 8 +- ...stedConditionalExpressionJSInspection.java | 6 +- .../confusing/NestedFunctionJSInspection.java | 116 +-- .../NestedFunctionJSInspectionState.java | 41 ++ .../confusing/OctalIntegerJSInspection.java | 6 +- ...mplexArithmeticExpressionJSInspection.java | 402 ++++++----- ...ArithmeticExpressionJSInspectionState.java | 43 ++ ...yComplexBooleanExpressionJSInspection.java | 280 ++++---- ...lexBooleanExpressionJSInspectionState.java | 43 ++ ...tlessArithmeticExpressionJSInspection.java | 8 +- ...ointlessBooleanExpressionJSInspection.java | 8 +- .../confusing/VoidExpressionJSInspection.java | 6 +- .../confusing/WithStatementJSInspection.java | 6 +- .../control/BreakStatementJSInspection.java | 6 +- .../BreakStatementWithLabelJSInspection.java | 6 +- ...sionWithIdenticalBranchesJSInspection.java | 8 +- ...tantConditionalExpressionJSInspection.java | 8 +- .../ConstantIfStatementJSInspection.java | 8 +- .../ContinueStatementJSInspection.java | 6 +- ...ontinueStatementWithLabelJSInspection.java | 6 +- ...efaultNotLastCaseInSwitchJSInspection.java | 6 +- .../DuplicateConditionJSInspection.java | 6 +- ...lthroughInSwitchStatementJSInspection.java | 6 +- ...ForLoopReplaceableByWhileJSInspection.java | 244 ++++--- ...opReplaceableByWhileJSInspectionState.java | 41 ++ ...ThatDoesntUseLoopVariableJSInspection.java | 6 +- ...mentWithIdenticalBranchesJSInspection.java | 8 +- ...tementWithTooManyBranchesJSInspection.java | 141 ++-- ...tWithTooManyBranchesJSInspectionState.java | 44 ++ .../control/LabeledStatementJSInspection.java | 6 +- ...opStatementThatDoesntLoopJSInspection.java | 6 +- .../NestedSwitchStatementJSInspection.java | 6 +- ...tementWithNoDefaultBranchJSInspection.java | 6 +- .../control/TailRecursionJSInspection.java | 6 +- .../TrivialConditionalJSInspection.java | 8 +- .../control/TrivialIfJSInspection.java | 8 +- .../UnnecessaryContinueJSInspection.java | 8 +- .../control/UnnecessaryLabelJSInspection.java | 8 +- ...saryLabelOnBreakStatementJSInspection.java | 8 +- ...yLabelOnContinueStatementJSInspection.java | 8 +- .../UnnecessaryReturnJSInspection.java | 8 +- .../ReuseOfLocalVariableJSInspection.java | 4 +- .../UnnecessaryLocalVariableJSInspection.java | 676 ++++++++++-------- ...cessaryLocalVariableJSInspectionState.java | 41 ++ .../dom/DocumentWriteJSInspection.java | 6 +- .../inspectjs/dom/InnerHTMLJSInspection.java | 6 +- .../dom/PlatformDetectionJSInspection.java | 6 +- .../XHTMLIncompatabilitiesJSInspection.java | 6 +- ...ueOrBreakFromFinallyBlockJSInspection.java | 6 +- .../EmptyCatchBlockJSInspection.java | 6 +- .../EmptyFinallyBlockJSInspection.java | 6 +- .../exception/EmptyTryBlockJSInspection.java | 6 +- .../ExceptionCaughtLocallyJSInspection.java | 6 +- .../ReturnFromFinallyBlockJSInspection.java | 6 +- .../ThrowFromFinallyBlockJSInspection.java | 6 +- .../UnusedCatchParameterJSInspection.java | 156 ++-- ...UnusedCatchParameterJSInspectionState.java | 41 ++ .../CyclomaticComplexityJSInspection.java | 23 +- ...CyclomaticComplexityJSInspectionState.java | 16 + .../FunctionMetricsInspection.java | 25 - .../FunctionMetricsInspectionState.java | 52 ++ ...FunctionWithMultipleLoopsJSInspection.java | 6 +- ...nWithMultipleReturnPointsJSInspection.java | 6 +- .../NestingDepthJSInspection.java | 120 ++-- .../NestingDepthJSInspectionState.java | 16 + .../ParametersPerFunctionJSInspection.java | 128 ++-- ...arametersPerFunctionJSInspectionState.java | 16 + .../StatementsPerFunctionJSInspection.java | 128 ++-- ...tatementsPerFunctionJSInspectionState.java | 17 + ...ThreeNegationsPerFunctionJSInspection.java | 6 +- .../naming/ConventionInspection.java | 313 ++++---- .../naming/ConventionInspectionState.java | 104 +++ .../FunctionNamingConventionJSInspection.java | 146 ++-- ...tionNamingConventionJSInspectionState.java | 18 + ...lVariableNamingConventionJSInspection.java | 143 ++-- ...ableNamingConventionJSInspectionState.java | 15 + ...ParameterNamingConventionJSInspection.java | 152 ++-- ...eterNamingConventionJSInspectionState.java | 15 + .../style/ChainedEqualityJSInspection.java | 6 +- .../ChainedFunctionCallJSInspection.java | 6 +- ...ConstantOnLHSOfComparisonJSInspection.java | 8 +- ...ConstantOnRHSOfComparisonJSInspection.java | 8 +- .../style/NestedFunctionCallJSInspection.java | 6 +- .../NonBlockStatementBodyJSInspection.java | 8 +- .../UnterminatedStatementJSInspection.java | 6 +- .../BadExpressionStatementJSInspection.java | 3 +- .../DebuggerStatementJSInspection.java | 6 +- .../DuplicateCaseLabelJSInspection.java | 6 +- ...DuplicatePropertyOnObjectJSInspection.java | 6 +- ...onWithInconsistentReturnsJSInspection.java | 4 +- .../StringLiteralBreaksHTMLJSInspection.java | 6 +- ...ionReferencesGlobalObjectJSInspection.java | 6 +- .../validity/UnreachableCodeJSInspection.java | 6 +- ....sixrr.inspectjs.InspectionJSLocalize.yaml | 556 ++++++++++++++ plugin/pom.xml | 3 +- 129 files changed, 3851 insertions(+), 2209 deletions(-) create mode 100644 inspections/src/main/java/com/sixrr/inspectjs/bitwise/PointlessBitwiseExpressionJSInspectionState.java create mode 100644 inspections/src/main/java/com/sixrr/inspectjs/confusing/EmptyStatementBodyJSInspectionState.java create mode 100644 inspections/src/main/java/com/sixrr/inspectjs/confusing/NestedFunctionJSInspectionState.java create mode 100644 inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexArithmeticExpressionJSInspectionState.java create mode 100644 inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexBooleanExpressionJSInspectionState.java create mode 100644 inspections/src/main/java/com/sixrr/inspectjs/control/ForLoopReplaceableByWhileJSInspectionState.java create mode 100644 inspections/src/main/java/com/sixrr/inspectjs/control/IfStatementWithTooManyBranchesJSInspectionState.java create mode 100644 inspections/src/main/java/com/sixrr/inspectjs/dataflow/UnnecessaryLocalVariableJSInspectionState.java create mode 100644 inspections/src/main/java/com/sixrr/inspectjs/exception/UnusedCatchParameterJSInspectionState.java create mode 100644 inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/CyclomaticComplexityJSInspectionState.java delete mode 100644 inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionMetricsInspection.java create mode 100644 inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionMetricsInspectionState.java create mode 100644 inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/NestingDepthJSInspectionState.java create mode 100644 inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/ParametersPerFunctionJSInspectionState.java create mode 100644 inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/StatementsPerFunctionJSInspectionState.java create mode 100644 inspections/src/main/java/com/sixrr/inspectjs/naming/ConventionInspectionState.java create mode 100644 inspections/src/main/java/com/sixrr/inspectjs/naming/FunctionNamingConventionJSInspectionState.java create mode 100644 inspections/src/main/java/com/sixrr/inspectjs/naming/LocalVariableNamingConventionJSInspectionState.java create mode 100644 inspections/src/main/java/com/sixrr/inspectjs/naming/ParameterNamingConventionJSInspectionState.java create mode 100644 inspections/src/main/resources/LOCALIZE-LIB/en_US/com.sixrr.inspectjs.InspectionJSLocalize.yaml diff --git a/inspections/pom.xml b/inspections/pom.xml index 1942ec4b..69216c1d 100644 --- a/inspections/pom.xml +++ b/inspections/pom.xml @@ -40,6 +40,24 @@ + + + + consulo.maven + maven-consulo-plugin + true + + + generate-sources + + generate-localize + + + + + + + ${project.groupId} diff --git a/inspections/src/main/java/com/sixrr/inspectjs/BaseInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/BaseInspection.java index 9aa9c82a..3ffed716 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/BaseInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/BaseInspection.java @@ -2,12 +2,10 @@ import com.intellij.lang.javascript.psi.JSFunction; import com.intellij.lang.javascript.psi.JSSuppressionHolder; +import consulo.annotation.access.RequiredReadAction; import consulo.javascript.language.JavaScriptLanguage; import consulo.language.Language; -import consulo.language.editor.inspection.CustomSuppressableInspectionTool; -import consulo.language.editor.inspection.LocalInspectionTool; -import consulo.language.editor.inspection.ProblemsHolder; -import consulo.language.editor.inspection.SuppressionUtil; +import consulo.language.editor.inspection.*; import consulo.language.editor.intention.SuppressIntentionAction; import consulo.language.editor.rawHighlight.HighlightDisplayLevel; import consulo.language.psi.PsiElement; @@ -15,28 +13,27 @@ import consulo.language.psi.PsiFile; import consulo.language.psi.PsiNamedElement; import consulo.language.psi.util.PsiTreeUtil; -import org.jetbrains.annotations.NonNls; import javax.annotation.Nonnull; import javax.annotation.Nullable; -import java.lang.reflect.Method; public abstract class BaseInspection extends LocalInspectionTool implements CustomSuppressableInspectionTool { @Override @Nonnull - public PsiElementVisitor buildVisitor(@Nonnull ProblemsHolder problemsHolder, boolean onTheFly) + @SuppressWarnings("unchecked") + public PsiElementVisitor buildVisitor(@Nonnull ProblemsHolder problemsHolder, boolean onTheFly, LocalInspectionToolSession session, Object state) { if(!canBuildVisitor(problemsHolder.getFile())) { - return new PsiElementVisitor() - { - }; + return PsiElementVisitor.EMPTY_VISITOR; } + final BaseInspectionVisitor visitor = buildVisitor(); visitor.setProblemsHolder(problemsHolder); visitor.setOnTheFly(onTheFly); visitor.setInspection(this); + visitor.setState(state); return visitor; } @@ -60,7 +57,8 @@ public boolean canBuildVisitor(@Nonnull PsiFile psiFile) } @Nullable - protected String buildErrorString(Object... args) + @RequiredReadAction + protected String buildErrorString(Object state, Object... args) { return null; } @@ -71,7 +69,7 @@ protected boolean buildQuickFixesOnlyForOnTheFlyErrors() } @Nullable - protected InspectionJSFix buildFix(PsiElement location) + protected InspectionJSFix buildFix(PsiElement location, Object state) { return null; } @@ -82,20 +80,6 @@ protected InspectionJSFix[] buildFixes(PsiElement location) return null; } - public boolean hasQuickFix() - { - final Method[] methods = getClass().getDeclaredMethods(); - for(final Method method : methods) - { - @NonNls final String methodName = method.getName(); - if("buildFix".equals(methodName)) - { - return true; - } - } - return false; - } - public abstract BaseInspectionVisitor buildVisitor(); protected boolean functionHasIdentifier(JSFunction function) diff --git a/inspections/src/main/java/com/sixrr/inspectjs/BaseInspectionVisitor.java b/inspections/src/main/java/com/sixrr/inspectjs/BaseInspectionVisitor.java index a0b60a2b..c51f127d 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/BaseInspectionVisitor.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/BaseInspectionVisitor.java @@ -1,136 +1,170 @@ package com.sixrr.inspectjs; -import java.util.List; +import com.intellij.lang.javascript.psi.*; +import consulo.annotation.access.RequiredReadAction; +import consulo.language.editor.inspection.*; +import consulo.language.psi.PsiElement; +import consulo.language.psi.PsiWhiteSpace; +import consulo.language.psi.util.PsiTreeUtil; import javax.annotation.Nonnull; import javax.annotation.Nullable; -import consulo.language.editor.inspection.LocalQuickFix; -import consulo.language.editor.inspection.ProblemDescriptor; -import com.intellij.lang.javascript.psi.JSCallExpression; -import com.intellij.lang.javascript.psi.JSElementVisitor; -import com.intellij.lang.javascript.psi.JSExpression; -import com.intellij.lang.javascript.psi.JSFunction; -import com.intellij.lang.javascript.psi.JSReferenceExpression; -import com.intellij.lang.javascript.psi.JSStatement; -import com.intellij.lang.javascript.psi.JSVariable; -import consulo.language.psi.PsiElement; -import consulo.language.psi.util.PsiTreeUtil; -import consulo.language.editor.inspection.ProblemHighlightType; -import consulo.language.editor.inspection.ProblemsHolder; -import consulo.language.psi.PsiWhiteSpace; +import java.util.List; -public abstract class BaseInspectionVisitor extends JSElementVisitor{ - private BaseInspection inspection = null; - private ProblemsHolder problemsHolder = null; - private boolean onTheFly = false; - private List errors = null; - - public void setInspection(BaseInspection inspection){ - this.inspection = inspection; - } - - public void setProblemsHolder(ProblemsHolder problemsHolder){ - this.problemsHolder = problemsHolder; - } - - public void setOnTheFly(boolean onTheFly){ - this.onTheFly = onTheFly; - } - - protected void registerFunctionCallError(JSCallExpression expression){ - final JSExpression methodExpression = expression.getMethodExpression(); - PsiElement errorLocation = null; - - if (methodExpression instanceof JSReferenceExpression) { - errorLocation = ((JSReferenceExpression)methodExpression).getReferenceNameElement(); - } else if (methodExpression instanceof JSFunction) { - final PsiElement node = ((JSFunction)methodExpression).getNameIdentifier(); - if (node != null) errorLocation = node; - else errorLocation = methodExpression; - } - - registerError(errorLocation); - } - - protected void registerStatementError(JSStatement statement, Object... args){ - final PsiElement statementToken = statement.getFirstChild(); - registerError(statementToken, args); - } - - protected void registerFunctionError(JSFunction function){ - final PsiElement identifier = function.getNameIdentifier(); - if(identifier == null || - !PsiTreeUtil.isAncestor(function, identifier, true)){ - registerError(function.getFirstChild()); - } else{ - registerError(identifier); - } - } - - protected void registerVariableError(JSVariable variable){ - final PsiElement nameIdentifier = variable.getFirstChild(); - registerError(nameIdentifier); - } - - protected void registerError(PsiElement location){ - if(location == null){ - return; - } - final LocalQuickFix[] fix = createFixes(location); - final String description = inspection.buildErrorString(location); - registerError(location, description, fix); - } - - private void registerError(PsiElement location, String description, - LocalQuickFix[] fixes){ - problemsHolder.registerProblem(getEditorErrorLocation(location), - description, - getProblemHighlightType(location), fixes); - } - - protected ProblemHighlightType getProblemHighlightType(PsiElement location) { - return ProblemHighlightType.GENERIC_ERROR_OR_WARNING; - } - - protected PsiElement getEditorErrorLocation(final @Nonnull PsiElement location) { - return location; - } - - protected void registerError(PsiElement location, Object... args){ - final LocalQuickFix[] fix = createFixes(location); - final String description = inspection.buildErrorString(args); - registerError(location, description, fix); - } - - @Nullable - private LocalQuickFix[] createFixes(PsiElement location){ - if(!onTheFly && - inspection.buildQuickFixesOnlyForOnTheFlyErrors()){ - return null; - } - final InspectionJSFix[] fixes = inspection.buildFixes(location); - if(fixes != null){ - return fixes; - } - final InspectionJSFix fix = inspection.buildFix(location); - if(fix == null){ - return null; - } - return new InspectionJSFix[]{fix}; - } - - @Nullable - public ProblemDescriptor[] getErrors(){ - if(errors == null){ - return null; - } else{ - final int numErrors = errors.size(); - return errors.toArray(new ProblemDescriptor[numErrors]); - } - } - - @Override public void visitWhiteSpace(PsiWhiteSpace space){ - // none of our inspections need to do anything with white space, - // so this is a performance optimization - } +public abstract class BaseInspectionVisitor extends JSElementVisitor +{ + private BaseInspection inspection = null; + private ProblemsHolder problemsHolder = null; + private boolean onTheFly = false; + private List errors = null; + protected T myState; + + public void setState(T state) + { + myState = state; + } + + public void setInspection(BaseInspection inspection) + { + this.inspection = inspection; + } + + public void setProblemsHolder(ProblemsHolder problemsHolder) + { + this.problemsHolder = problemsHolder; + } + + public void setOnTheFly(boolean onTheFly) + { + this.onTheFly = onTheFly; + } + + @RequiredReadAction + protected void registerFunctionCallError(JSCallExpression expression) + { + final JSExpression methodExpression = expression.getMethodExpression(); + PsiElement errorLocation = null; + + if(methodExpression instanceof JSReferenceExpression) + { + errorLocation = ((JSReferenceExpression) methodExpression).getReferenceNameElement(); + } + else if(methodExpression instanceof JSFunction) + { + final PsiElement node = ((JSFunction) methodExpression).getNameIdentifier(); + if(node != null) + { + errorLocation = node; + } + else + { + errorLocation = methodExpression; + } + } + + registerError(errorLocation); + } + + protected void registerStatementError(JSStatement statement, Object... args) + { + final PsiElement statementToken = statement.getFirstChild(); + registerError(statementToken, args); + } + + protected void registerFunctionError(JSFunction function) + { + final PsiElement identifier = function.getNameIdentifier(); + if(identifier == null || + !PsiTreeUtil.isAncestor(function, identifier, true)) + { + registerError(function.getFirstChild()); + } + else + { + registerError(identifier); + } + } + + protected void registerVariableError(JSVariable variable) + { + final PsiElement nameIdentifier = variable.getFirstChild(); + registerError(nameIdentifier); + } + + protected void registerError(PsiElement location) + { + if(location == null) + { + return; + } + final LocalQuickFix[] fix = createFixes(location, myState); + final String description = inspection.buildErrorString(myState, location); + registerError(location, description, fix); + } + + private void registerError(PsiElement location, String description, + LocalQuickFix[] fixes) + { + problemsHolder.registerProblem(getEditorErrorLocation(location), + description, + getProblemHighlightType(location), fixes); + } + + protected ProblemHighlightType getProblemHighlightType(PsiElement location) + { + return ProblemHighlightType.GENERIC_ERROR_OR_WARNING; + } + + protected PsiElement getEditorErrorLocation(final @Nonnull PsiElement location) + { + return location; + } + + protected void registerError(PsiElement location, Object... args) + { + final LocalQuickFix[] fix = createFixes(location, myState); + final String description = inspection.buildErrorString(myState, args); + registerError(location, description, fix); + } + + @Nullable + private LocalQuickFix[] createFixes(PsiElement location, Object state) + { + if(!onTheFly && inspection.buildQuickFixesOnlyForOnTheFlyErrors()) + { + return null; + } + final InspectionJSFix[] fixes = inspection.buildFixes(location); + if(fixes != null) + { + return fixes; + } + final InspectionJSFix fix = inspection.buildFix(location, state); + if(fix == null) + { + return null; + } + return new InspectionJSFix[]{fix}; + } + + @Nullable + public ProblemDescriptor[] getErrors() + { + if(errors == null) + { + return null; + } + else + { + final int numErrors = errors.size(); + return errors.toArray(new ProblemDescriptor[numErrors]); + } + } + + @Override + public void visitWhiteSpace(PsiWhiteSpace space) + { + // none of our inspections need to do anything with white space, + // so this is a performance optimization + } } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/JavaScriptInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/JavaScriptInspection.java index 0e07aec1..12654d84 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/JavaScriptInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/JavaScriptInspection.java @@ -1,19 +1,5 @@ package com.sixrr.inspectjs; public abstract class JavaScriptInspection extends BaseInspection { - /* - public ProblemDescriptor[] checkFile(PsiFile file, InspectionManager manager, boolean isOnTheFly) { - if (!file.isPhysical()) { - return super.checkFile(file, manager, isOnTheFly); - } - if(file instanceof PsiJavaFile) - { - return super.checkFile(file, manager, isOnTheFly); - } - final BaseInspectionVisitor visitor = (BaseInspectionVisitor) buildVisitor(manager, isOnTheFly); - file.accept(visitor); - return visitor.getErrors(); - } - */ } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentResultUsedJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentResultUsedJSInspection.java index 92e645bc..f5b1db7d 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentResultUsedJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentResultUsedJSInspection.java @@ -5,6 +5,7 @@ import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; @@ -26,9 +27,10 @@ public String getGroupDisplayName() { return JSGroupNames.ASSIGNMENT_GROUP_NAME; } - @Override + @RequiredReadAction + @Override @Nullable - protected String buildErrorString(Object... args) { + protected String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("result.of.assignment.expression.used.error.string"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentToForLoopParameterJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentToForLoopParameterJSInspection.java index 6670f10e..be0a5787 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentToForLoopParameterJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentToForLoopParameterJSInspection.java @@ -6,6 +6,7 @@ import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; import consulo.language.psi.PsiElement; @@ -28,8 +29,9 @@ public String getGroupDisplayName() { return JSGroupNames.ASSIGNMENT_GROUP_NAME; } - @Override - public String buildErrorString(Object... args) { + @RequiredReadAction + @Override + public String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("assignment.to.for.loop.parameter.error.string"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentToFunctionParameterJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentToFunctionParameterJSInspection.java index fe7fffd3..111b413e 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentToFunctionParameterJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentToFunctionParameterJSInspection.java @@ -2,6 +2,7 @@ import com.intellij.lang.javascript.JSTokenTypes; import com.intellij.lang.javascript.psi.*; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; import consulo.language.psi.PsiElement; @@ -29,9 +30,10 @@ public String getGroupDisplayName() { return JSGroupNames.ASSIGNMENT_GROUP_NAME; } - @Override + @RequiredReadAction + @Override @Nullable - protected String buildErrorString(Object... args) { + protected String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("assignment.to.function.parameter.error.string"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/assignment/NestedAssignmentJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/assignment/NestedAssignmentJSInspection.java index 99831821..3043ab6b 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/assignment/NestedAssignmentJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/assignment/NestedAssignmentJSInspection.java @@ -5,6 +5,7 @@ import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; @@ -25,9 +26,10 @@ public String getGroupDisplayName() { return JSGroupNames.ASSIGNMENT_GROUP_NAME; } - @Override + @RequiredReadAction + @Override @Nonnull - public String buildErrorString(Object... args) { + public String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("nested.assignment.error.string"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/assignment/ReplaceAssignmentWithOperatorAssignmentJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/assignment/ReplaceAssignmentWithOperatorAssignmentJSInspection.java index 0dd30118..792d2e8a 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/assignment/ReplaceAssignmentWithOperatorAssignmentJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/assignment/ReplaceAssignmentWithOperatorAssignmentJSInspection.java @@ -8,6 +8,7 @@ import com.sixrr.inspectjs.*; import com.sixrr.inspectjs.utils.EquivalenceChecker; import com.sixrr.inspectjs.utils.SideEffectChecker; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; import consulo.language.editor.inspection.ProblemDescriptor; @@ -39,8 +40,9 @@ public String getGroupDisplayName() { return JSGroupNames.ASSIGNMENT_GROUP_NAME; } - @Override - public String buildErrorString(Object... args) { + @RequiredReadAction + @Override + public String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message( "assignment.replaceable.with.operator.assignment.error.string", calculateReplacementExpression((JSAssignmentExpression) args[0])); @@ -65,7 +67,7 @@ public BaseInspectionVisitor buildVisitor() { } @Override - public InspectionJSFix buildFix(PsiElement location) { + public InspectionJSFix buildFix(PsiElement location, Object state) { return new ReplaceAssignmentWithOperatorAssignmentFix( (JSAssignmentExpression) location); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/assignment/SillyAssignmentJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/assignment/SillyAssignmentJSInspection.java index 74ab8c09..a14d8221 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/assignment/SillyAssignmentJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/assignment/SillyAssignmentJSInspection.java @@ -10,6 +10,7 @@ import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; import com.sixrr.inspectjs.utils.EquivalenceChecker; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; import consulo.language.psi.PsiElement; @@ -33,8 +34,9 @@ public String getGroupDisplayName() { return JSGroupNames.ASSIGNMENT_GROUP_NAME; } - @Override - public String buildErrorString(Object... args) { + @RequiredReadAction + @Override + public String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("silly.assignment.error.string"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bitwise/IncompatibleMaskJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bitwise/IncompatibleMaskJSInspection.java index 2934146c..2683b65f 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bitwise/IncompatibleMaskJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bitwise/IncompatibleMaskJSInspection.java @@ -10,6 +10,7 @@ import com.sixrr.inspectjs.utils.ComparisonUtils; import com.sixrr.inspectjs.utils.ExpressionUtil; import com.sixrr.inspectjs.utils.ParenthesesUtils; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; @@ -37,9 +38,10 @@ public String getGroupDisplayName() { return JSGroupNames.BITWISE_GROUP_NAME; } - @Override + @RequiredReadAction + @Override @Nonnull - public String buildErrorString(Object... args) { + public String buildErrorString(Object state, Object... args) { final JSBinaryExpression binaryExpression = (JSBinaryExpression) args[0]; final IElementType tokenType = diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bitwise/PointlessBitwiseExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bitwise/PointlessBitwiseExpressionJSInspection.java index 265112ac..ace5540c 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bitwise/PointlessBitwiseExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bitwise/PointlessBitwiseExpressionJSInspection.java @@ -4,222 +4,272 @@ import com.intellij.lang.javascript.psi.JSBinaryExpression; import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.lang.javascript.psi.JSLiteralExpression; -import consulo.annotation.component.ExtensionImpl; -import consulo.language.util.IncorrectOperationException; import com.sixrr.inspectjs.*; -import com.sixrr.inspectjs.ui.SingleCheckboxOptionsPanel; import com.sixrr.inspectjs.utils.ExpressionUtil; +import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; +import consulo.language.editor.inspection.InspectionToolState; import consulo.language.editor.inspection.ProblemDescriptor; import consulo.language.psi.PsiElement; +import consulo.language.util.IncorrectOperationException; import consulo.project.Project; import javax.annotation.Nonnull; - -import javax.swing.*; import java.util.HashSet; import java.util.Set; @ExtensionImpl -public class PointlessBitwiseExpressionJSInspection extends JavaScriptInspection { - - /** - * @noinspection PublicField - */ - public boolean m_ignoreExpressionsContainingConstants = false; - - static final Set bitwiseTokens = - new HashSet(6); - - static { - bitwiseTokens.add(JSTokenTypes.AND); - bitwiseTokens.add(JSTokenTypes.OR); - bitwiseTokens.add(JSTokenTypes.XOR); - bitwiseTokens.add(JSTokenTypes.LTLT); - bitwiseTokens.add(JSTokenTypes.GTGT); - bitwiseTokens.add(JSTokenTypes.GTGTGT); - } - - @Override +public class PointlessBitwiseExpressionJSInspection extends JavaScriptInspection +{ + static final Set bitwiseTokens = new HashSet(6); + + static + { + bitwiseTokens.add(JSTokenTypes.AND); + bitwiseTokens.add(JSTokenTypes.OR); + bitwiseTokens.add(JSTokenTypes.XOR); + bitwiseTokens.add(JSTokenTypes.LTLT); + bitwiseTokens.add(JSTokenTypes.GTGT); + bitwiseTokens.add(JSTokenTypes.GTGTGT); + } + + @Override @Nonnull - public String getDisplayName() { - return InspectionJSBundle.message( - "pointless.bitwise.expression.display.name"); - } + public String getDisplayName() + { + return InspectionJSBundle.message( + "pointless.bitwise.expression.display.name"); + } - @Override + @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.BITWISE_GROUP_NAME; - } + public String getGroupDisplayName() + { + return JSGroupNames.BITWISE_GROUP_NAME; + } - @Override + @RequiredReadAction + @Override @Nonnull - public String buildErrorString(Object... args) { - final String replacementExpression = - calculateReplacementExpression((JSExpression) args[0]); - return InspectionJSBundle.message( - "pointless.bitwise.expression.problem.descriptor", - replacementExpression); - } - - @Override - public boolean isEnabledByDefault() { - return true; - } - - @Override - public JComponent createOptionsPanel() { - return new SingleCheckboxOptionsPanel( - InspectionJSBundle.message( - "pointless.bitwise.expression.ignore.option"), - this, "m_ignoreExpressionsContainingConstants"); - } - - String calculateReplacementExpression(JSExpression expression) { - final JSBinaryExpression exp = (JSBinaryExpression) expression; - final JSExpression lhs = exp.getLOperand(); - final JSExpression rhs = exp.getROperand(); - final IElementType tokenType = exp.getOperationSign(); - assert rhs != null; - if (tokenType.equals(JSTokenTypes.AND)) { - if (isZero(lhs) || isAllOnes(rhs)) { - return lhs.getText(); - } else { - return rhs.getText(); - } - } else if (tokenType.equals(JSTokenTypes.OR)) { - if (isZero(lhs) || isAllOnes(rhs)) { - return rhs.getText(); - } else { - return lhs.getText(); - } - } else if (tokenType.equals(JSTokenTypes.XOR)) { - if (isAllOnes(lhs)) { - return '~' + rhs.getText(); - } else if (isAllOnes(rhs)) { - return '~' + lhs.getText(); - } else if (isZero(rhs)) { - return lhs.getText(); - } else { - return rhs.getText(); - } - } else if (tokenType.equals(JSTokenTypes.LTLT) || - tokenType.equals(JSTokenTypes.GTGT) || - tokenType.equals(JSTokenTypes.GTGTGT)) { - return lhs.getText(); - } else { - return ""; - } - } - - @Override - public BaseInspectionVisitor buildVisitor() { - return new PointlessBitwiseVisitor(); - } - - @Override - public InspectionJSFix buildFix(PsiElement location) { - return new PointlessBitwiseFix(); - } - - private class PointlessBitwiseFix extends InspectionJSFix { - - @Override + public String buildErrorString(Object state, Object... args) + { + final String replacementExpression = calculateReplacementExpression((JSExpression) args[0], (PointlessBitwiseExpressionJSInspectionState) state); + return InspectionJSBundle.message( + "pointless.bitwise.expression.problem.descriptor", + replacementExpression); + } + + @Override + public boolean isEnabledByDefault() + { + return true; + } + + @Nonnull + @Override + public InspectionToolState createStateProvider() + { + return new PointlessBitwiseExpressionJSInspectionState(); + } + + @RequiredReadAction + String calculateReplacementExpression(JSExpression expression, PointlessBitwiseExpressionJSInspectionState state) + { + final JSBinaryExpression exp = (JSBinaryExpression) expression; + final JSExpression lhs = exp.getLOperand(); + final JSExpression rhs = exp.getROperand(); + final IElementType tokenType = exp.getOperationSign(); + assert rhs != null; + if(tokenType.equals(JSTokenTypes.AND)) + { + if(isZero(lhs, state) || isAllOnes(rhs, state)) + { + return lhs.getText(); + } + else + { + return rhs.getText(); + } + } + else if(tokenType.equals(JSTokenTypes.OR)) + { + if(isZero(lhs, state) || isAllOnes(rhs, state)) + { + return rhs.getText(); + } + else + { + return lhs.getText(); + } + } + else if(tokenType.equals(JSTokenTypes.XOR)) + { + if(isAllOnes(lhs, state)) + { + return '~' + rhs.getText(); + } + else if(isAllOnes(rhs, state)) + { + return '~' + lhs.getText(); + } + else if(isZero(rhs, state)) + { + return lhs.getText(); + } + else + { + return rhs.getText(); + } + } + else if(tokenType.equals(JSTokenTypes.LTLT) || + tokenType.equals(JSTokenTypes.GTGT) || + tokenType.equals(JSTokenTypes.GTGTGT)) + { + return lhs.getText(); + } + else + { + return ""; + } + } + + @Override + public BaseInspectionVisitor buildVisitor() + { + return new PointlessBitwiseVisitor(); + } + + @Override + public InspectionJSFix buildFix(PsiElement location, Object state) + { + return new PointlessBitwiseFix(state); + } + + private class PointlessBitwiseFix extends InspectionJSFix + { + private final PointlessBitwiseExpressionJSInspectionState myState; + + public PointlessBitwiseFix(Object state) + { + myState = (PointlessBitwiseExpressionJSInspectionState) state; + } + + @Override @Nonnull - public String getName() { - return InspectionJSBundle.message( - "pointless.bitwise.expression.simplify.quickfix"); - } - - @Override - public void doFix(Project project, ProblemDescriptor descriptor) - throws IncorrectOperationException { - final JSExpression expression = (JSExpression) descriptor - .getPsiElement(); - final String newExpression = - calculateReplacementExpression(expression); - replaceExpression(expression, newExpression); - } - } - - private class PointlessBitwiseVisitor extends BaseInspectionVisitor { - - @Override public void visitJSBinaryExpression( - @Nonnull JSBinaryExpression expression) { - super.visitJSBinaryExpression(expression); - final IElementType sign = expression.getOperationSign(); - if (!bitwiseTokens.contains(sign)) { - return; - } - - final JSExpression rhs = expression.getROperand(); - if (rhs == null) { - return; - } - - final JSExpression lhs = expression.getLOperand(); - - final boolean isPointless; - if (JSTokenTypes.AND.equals(sign)) { - isPointless = andExpressionIsPointless(lhs, rhs); - } else if (JSTokenTypes.OR.equals(sign)) { - isPointless = orExpressionIsPointless(lhs, rhs); - } else if (JSTokenTypes.XOR.equals(sign)) { - isPointless = xorExpressionIsPointless(lhs, rhs ); - } else if (JSTokenTypes.LTLT.equals(sign) || - JSTokenTypes.GTGT.equals(sign) || - JSTokenTypes.GTGTGT.equals(sign)) { - isPointless = shiftExpressionIsPointless(rhs); - } else { - isPointless = false; - } - if (isPointless) { - registerError(expression, expression); - } - } - - private boolean andExpressionIsPointless(JSExpression lhs, - JSExpression rhs) { - return isZero(lhs) || isZero(rhs) - || isAllOnes(lhs) || isAllOnes(rhs); - } - - private boolean orExpressionIsPointless(JSExpression lhs, - JSExpression rhs ) { - return isZero(lhs) || isZero(rhs) - || isAllOnes(lhs) || isAllOnes(rhs ); - } - - private boolean xorExpressionIsPointless(JSExpression lhs, - JSExpression rhs ) { - return isZero(lhs) || isZero(rhs) - || isAllOnes(lhs) || isAllOnes(rhs); - } - - private boolean shiftExpressionIsPointless(JSExpression rhs - ) { - return isZero(rhs); - } - } - - private boolean isZero(JSExpression expression) { - if (m_ignoreExpressionsContainingConstants - && !(expression instanceof JSLiteralExpression)) { - return false; - } - final Object value = - ExpressionUtil.computeConstantExpression(expression); - return value instanceof Integer && (Integer) value == 0; - } - - private boolean isAllOnes(JSExpression expression) { - if (m_ignoreExpressionsContainingConstants - && !(expression instanceof JSLiteralExpression)) { - return false; - } - final Object value = - ExpressionUtil.computeConstantExpression(expression); - return value != null && value instanceof Integer && (Integer) value == 0xffffffff; - } + public String getName() + { + return InspectionJSBundle.message( + "pointless.bitwise.expression.simplify.quickfix"); + } + + @Override + @RequiredReadAction + public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException + { + final JSExpression expression = (JSExpression) descriptor.getPsiElement(); + final String newExpression = calculateReplacementExpression(expression, myState); + replaceExpression(expression, newExpression); + } + } + + private class PointlessBitwiseVisitor extends BaseInspectionVisitor + { + @Override + @RequiredReadAction + public void visitJSBinaryExpression(@Nonnull JSBinaryExpression expression) + { + super.visitJSBinaryExpression(expression); + final IElementType sign = expression.getOperationSign(); + if(!bitwiseTokens.contains(sign)) + { + return; + } + + final JSExpression rhs = expression.getROperand(); + if(rhs == null) + { + return; + } + + final JSExpression lhs = expression.getLOperand(); + + final boolean isPointless; + if(JSTokenTypes.AND.equals(sign)) + { + isPointless = andExpressionIsPointless(lhs, rhs); + } + else if(JSTokenTypes.OR.equals(sign)) + { + isPointless = orExpressionIsPointless(lhs, rhs); + } + else if(JSTokenTypes.XOR.equals(sign)) + { + isPointless = xorExpressionIsPointless(lhs, rhs); + } + else if(JSTokenTypes.LTLT.equals(sign) || + JSTokenTypes.GTGT.equals(sign) || + JSTokenTypes.GTGTGT.equals(sign)) + { + isPointless = shiftExpressionIsPointless(rhs); + } + else + { + isPointless = false; + } + if(isPointless) + { + registerError(expression, expression); + } + } + + private boolean andExpressionIsPointless(JSExpression lhs, + JSExpression rhs) + { + return isZero(lhs, myState) || isZero(rhs, myState) + || isAllOnes(lhs, myState) || isAllOnes(rhs, myState); + } + + private boolean orExpressionIsPointless(JSExpression lhs, + JSExpression rhs) + { + return isZero(lhs, myState) || isZero(rhs, myState) + || isAllOnes(lhs, myState) || isAllOnes(rhs, myState); + } + + private boolean xorExpressionIsPointless(JSExpression lhs, + JSExpression rhs) + { + return isZero(lhs, myState) || isZero(rhs, myState) + || isAllOnes(lhs, myState) || isAllOnes(rhs, myState); + } + + private boolean shiftExpressionIsPointless(JSExpression rhs + ) + { + return isZero(rhs, myState); + } + } + + private boolean isZero(JSExpression expression, PointlessBitwiseExpressionJSInspectionState state) + { + if(state.m_ignoreExpressionsContainingConstants && !(expression instanceof JSLiteralExpression)) + { + return false; + } + final Object value = + ExpressionUtil.computeConstantExpression(expression); + return value instanceof Integer && (Integer) value == 0; + } + + private boolean isAllOnes(JSExpression expression, PointlessBitwiseExpressionJSInspectionState state) + { + if(state.m_ignoreExpressionsContainingConstants && !(expression instanceof JSLiteralExpression)) + { + return false; + } + final Object value = + ExpressionUtil.computeConstantExpression(expression); + return value != null && value instanceof Integer && (Integer) value == 0xffffffff; + } } \ No newline at end of file diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bitwise/PointlessBitwiseExpressionJSInspectionState.java b/inspections/src/main/java/com/sixrr/inspectjs/bitwise/PointlessBitwiseExpressionJSInspectionState.java new file mode 100644 index 00000000..9947a019 --- /dev/null +++ b/inspections/src/main/java/com/sixrr/inspectjs/bitwise/PointlessBitwiseExpressionJSInspectionState.java @@ -0,0 +1,41 @@ +package com.sixrr.inspectjs.bitwise; + +import com.sixrr.inspectjs.localize.InspectionJSLocalize; +import consulo.configurable.ConfigurableBuilder; +import consulo.configurable.ConfigurableBuilderState; +import consulo.configurable.UnnamedConfigurable; +import consulo.language.editor.inspection.InspectionToolState; +import consulo.util.xml.serializer.XmlSerializerUtil; + +import javax.annotation.Nullable; + +/** + * @author VISTALL + * @since 13/03/2023 + */ +public class PointlessBitwiseExpressionJSInspectionState implements InspectionToolState +{ + public boolean m_ignoreExpressionsContainingConstants = false; + + @Nullable + @Override + public UnnamedConfigurable createConfigurable() + { + ConfigurableBuilder builder = ConfigurableBuilder.newBuilder(); + builder.checkBox(InspectionJSLocalize.pointlessBitwiseExpressionIgnoreOption(), () -> m_ignoreExpressionsContainingConstants, b -> m_ignoreExpressionsContainingConstants = b); + return builder.buildUnnamed(); + } + + @Nullable + @Override + public PointlessBitwiseExpressionJSInspectionState getState() + { + return this; + } + + @Override + public void loadState(PointlessBitwiseExpressionJSInspectionState state) + { + XmlSerializerUtil.copyBean(state, this); + } +} diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bitwise/ShiftOutOfRangeJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bitwise/ShiftOutOfRangeJSInspection.java index f1e130df..d90feebd 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bitwise/ShiftOutOfRangeJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bitwise/ShiftOutOfRangeJSInspection.java @@ -3,6 +3,7 @@ import com.intellij.lang.javascript.JSTokenTypes; import com.intellij.lang.javascript.psi.JSBinaryExpression; import com.intellij.lang.javascript.psi.JSExpression; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; import com.sixrr.inspectjs.BaseInspectionVisitor; @@ -28,9 +29,10 @@ public String getGroupDisplayName() { return JSGroupNames.BITWISE_GROUP_NAME; } - @Override + @RequiredReadAction + @Override @Nonnull - public String buildErrorString(Object... args) { + public String buildErrorString(Object state, Object... args) { final Integer value = (Integer) args[0]; if (value > 0) { return InspectionJSBundle.message( diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bugs/DivideByZeroJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bugs/DivideByZeroJSInspection.java index 70db974e..6a46cb73 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bugs/DivideByZeroJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bugs/DivideByZeroJSInspection.java @@ -8,6 +8,7 @@ import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; import org.jetbrains.annotations.NonNls; @@ -35,9 +36,10 @@ public String getGroupDisplayName() { return JSGroupNames.BUGS_GROUP_NAME; } - @Override + @RequiredReadAction + @Override @Nonnull - protected String buildErrorString(Object... args) { + protected String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("division.by.zero.error.string"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bugs/EqualityComparisonWithCoercionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bugs/EqualityComparisonWithCoercionJSInspection.java index 2a5c3574..a0062a6c 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bugs/EqualityComparisonWithCoercionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bugs/EqualityComparisonWithCoercionJSInspection.java @@ -4,6 +4,7 @@ import com.intellij.lang.javascript.psi.JSBinaryExpression; import com.intellij.lang.javascript.psi.JSExpression; import com.sixrr.inspectjs.*; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; import consulo.language.editor.inspection.ProblemDescriptor; @@ -35,14 +36,15 @@ public String getGroupDisplayName() { return JSGroupNames.BUGS_GROUP_NAME; } - @Override + @RequiredReadAction + @Override @Nonnull - protected String buildErrorString(Object... args) { + protected String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("equality.comparison.with.coercion.error.string"); } @Override - protected InspectionJSFix buildFix(PsiElement location) { + protected InspectionJSFix buildFix(PsiElement location, Object state) { final JSBinaryExpression expression = (JSBinaryExpression) location; final IElementType sign = expression.getOperationSign(); if (JSTokenTypes.EQEQ == sign) { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bugs/InfiniteLoopJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bugs/InfiniteLoopJSInspection.java index 02e26b78..edbb9a0f 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bugs/InfiniteLoopJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bugs/InfiniteLoopJSInspection.java @@ -8,6 +8,7 @@ import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; import com.sixrr.inspectjs.utils.ControlFlowUtils; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import javax.annotation.Nonnull; @@ -32,8 +33,9 @@ public boolean isEnabledByDefault() { return true; } - @Override - public String buildErrorString(Object... args) { + @RequiredReadAction + @Override + public String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("infinite.loop.error.string"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bugs/InfiniteRecursionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bugs/InfiniteRecursionJSInspection.java index bed744a7..adfe9cb2 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bugs/InfiniteRecursionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bugs/InfiniteRecursionJSInspection.java @@ -5,6 +5,7 @@ import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.logging.Logger; @@ -27,9 +28,10 @@ public String getGroupDisplayName() { return JSGroupNames.BUGS_GROUP_NAME; } - @Override + @RequiredReadAction + @Override @Nonnull - public String buildErrorString(Object... args) { + public String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message( "infinite.recursion.problem.descriptor"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bugs/NonShortCircuitBooleanExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bugs/NonShortCircuitBooleanExpressionJSInspection.java index 34174019..bc45fc73 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bugs/NonShortCircuitBooleanExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bugs/NonShortCircuitBooleanExpressionJSInspection.java @@ -4,6 +4,7 @@ import com.intellij.lang.javascript.psi.JSBinaryExpression; import com.intellij.lang.javascript.psi.JSExpression; import com.sixrr.inspectjs.*; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; import consulo.language.editor.inspection.ProblemDescriptor; @@ -29,14 +30,15 @@ public String getGroupDisplayName() { return JSGroupNames.BUGS_GROUP_NAME; } - @Override + @RequiredReadAction + @Override @Nullable - protected String buildErrorString(Object... args) { + protected String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("non.short.circuit.boolean.expression.error.string"); } @Override - public InspectionJSFix buildFix(PsiElement location) { + public InspectionJSFix buildFix(PsiElement location, Object state) { return new NonShortCircuitBooleanFix(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bugs/ObjectAllocationIgnoredJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bugs/ObjectAllocationIgnoredJSInspection.java index 035d6f86..f04231a4 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bugs/ObjectAllocationIgnoredJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bugs/ObjectAllocationIgnoredJSInspection.java @@ -7,6 +7,7 @@ import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import javax.annotation.Nonnull; @@ -32,9 +33,10 @@ public String getGroupDisplayName() { return JSGroupNames.BUGS_GROUP_NAME; } - @Override + @RequiredReadAction + @Override @Nonnull - protected String buildErrorString(Object... args) { + protected String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("result.of.object.allocation.ignored.error.string"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bugs/TextLabelInSwitchStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bugs/TextLabelInSwitchStatementJSInspection.java index b0fe3527..a2e9eef2 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bugs/TextLabelInSwitchStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bugs/TextLabelInSwitchStatementJSInspection.java @@ -4,6 +4,7 @@ import com.intellij.lang.javascript.psi.JSLabeledStatement; import com.intellij.lang.javascript.psi.JSStatement; import com.intellij.lang.javascript.psi.JSSwitchStatement; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; import com.sixrr.inspectjs.BaseInspectionVisitor; @@ -27,9 +28,10 @@ public String getGroupDisplayName() { return JSGroupNames.BUGS_GROUP_NAME; } - @Override + @RequiredReadAction + @Override @Nonnull - public String buildErrorString(Object... args) { + public String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("text.label.in.switch.statement.error.string"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/AnonymousFunctionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/AnonymousFunctionJSInspection.java index f6cb132f..7a08f741 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/AnonymousFunctionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/AnonymousFunctionJSInspection.java @@ -6,6 +6,7 @@ import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; import consulo.language.psi.util.PsiTreeUtil; @@ -28,9 +29,10 @@ public String getGroupDisplayName(){ return JSGroupNames.CONFUSING_GROUP_NAME; } - @Override + @RequiredReadAction + @Override @Nullable - protected String buildErrorString(Object... args){ + protected String buildErrorString(Object state, Object... args){ return InspectionJSBundle.message("anonymous.function.error.string"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/BlockStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/BlockStatementJSInspection.java index c1a407ae..89433927 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/BlockStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/BlockStatementJSInspection.java @@ -5,6 +5,7 @@ import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; @@ -26,9 +27,10 @@ public String getGroupDisplayName() { return JSGroupNames.CONFUSING_GROUP_NAME; } - @Override + @RequiredReadAction + @Override @Nullable - protected String buildErrorString(Object... args) { + protected String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("unnecessary.block.statement.error.string"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/CallerJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/CallerJSInspection.java index e1301ea8..3217ac6c 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/CallerJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/CallerJSInspection.java @@ -5,6 +5,7 @@ import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import javax.annotation.Nonnull; @@ -25,9 +26,10 @@ public String getGroupDisplayName() { return JSGroupNames.CONFUSING_GROUP_NAME; } - @Override + @RequiredReadAction + @Override @Nullable - protected String buildErrorString(Object... args) { + protected String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("caller.error.string"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/CommaExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/CommaExpressionJSInspection.java index 9acaff54..c71bfaf5 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/CommaExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/CommaExpressionJSInspection.java @@ -6,6 +6,7 @@ import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import javax.annotation.Nonnull; @@ -26,9 +27,10 @@ public String getGroupDisplayName() { return JSGroupNames.CONFUSING_GROUP_NAME; } - @Override + @RequiredReadAction + @Override @Nullable - protected String buildErrorString(Object... args) { + protected String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("comma.expression.error.string"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConditionalExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConditionalExpressionJSInspection.java index 2fbc1c81..e3d9faf9 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConditionalExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConditionalExpressionJSInspection.java @@ -5,6 +5,7 @@ import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import javax.annotation.Nonnull; @@ -25,9 +26,10 @@ public String getGroupDisplayName() { return JSGroupNames.CONFUSING_GROUP_NAME; } - @Override + @RequiredReadAction + @Override @Nullable - protected String buildErrorString(Object... args) { + protected String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("conditional.expression.error.string"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConfusingFloatingPointLiteralJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConfusingFloatingPointLiteralJSInspection.java index 6a95751e..36fad493 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConfusingFloatingPointLiteralJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConfusingFloatingPointLiteralJSInspection.java @@ -1,5 +1,6 @@ package com.sixrr.inspectjs.confusing; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.inspection.ProblemDescriptor; import com.intellij.lang.javascript.psi.JSExpression; @@ -34,15 +35,16 @@ public String getDisplayName() { "confusing.floating.point.literal.display.name"); } - @Override + @RequiredReadAction + @Override @Nonnull - protected String buildErrorString(Object... args) { + protected String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message( "confusing.floating.point.literal.problem.descriptor"); } @Override - public InspectionJSFix buildFix(PsiElement location) { + public InspectionJSFix buildFix(PsiElement location, Object state) { return new ConfusingFloatingPointLiteralFix(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConfusingPlusesOrMinusesJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConfusingPlusesOrMinusesJSInspection.java index f9e62e3d..2456a559 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConfusingPlusesOrMinusesJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConfusingPlusesOrMinusesJSInspection.java @@ -5,6 +5,7 @@ import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.lang.javascript.psi.JSPostfixExpression; import com.intellij.lang.javascript.psi.JSPrefixExpression; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; import com.sixrr.inspectjs.BaseInspectionVisitor; @@ -29,9 +30,10 @@ public String getGroupDisplayName() { return JSGroupNames.CONFUSING_GROUP_NAME; } - @Override + @RequiredReadAction + @Override @Nullable - protected String buildErrorString(Object... args) { + protected String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("confusing.pluses.or.minuses.error.string"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/DynamicallyGeneratedCodeJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/DynamicallyGeneratedCodeJSInspection.java index 9d61212f..29f3dc31 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/DynamicallyGeneratedCodeJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/DynamicallyGeneratedCodeJSInspection.java @@ -8,6 +8,7 @@ import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import org.jetbrains.annotations.NonNls; @@ -29,9 +30,10 @@ public String getGroupDisplayName() { return JSGroupNames.CONFUSING_GROUP_NAME; } - @Override + @RequiredReadAction + @Override @Nullable - protected String buildErrorString(Object... args) { + protected String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("dynamically.generated.code.error.string"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/EmptyStatementBodyJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/EmptyStatementBodyJSInspection.java index 6599f5bb..0f4c56c6 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/EmptyStatementBodyJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/EmptyStatementBodyJSInspection.java @@ -5,147 +5,179 @@ import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; -import com.sixrr.inspectjs.ui.SingleCheckboxOptionsPanel; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.language.editor.inspection.InspectionToolState; import javax.annotation.Nonnull; -import javax.swing.*; - @ExtensionImpl -public class EmptyStatementBodyJSInspection extends JavaScriptInspection { - /** - * @noinspection PublicField - */ - public boolean m_reportEmptyBlocks = false; +public class EmptyStatementBodyJSInspection extends JavaScriptInspection +{ + @Override + @Nonnull + public String getID() + { + return "StatementWithEmptyBodyJS"; + } - @Override + @Override @Nonnull - public String getID() { - return "StatementWithEmptyBodyJS"; - } + public String getDisplayName() + { + return InspectionJSBundle.message("statement.with.empty.body.display.name"); + } - @Override + @Override @Nonnull - public String getDisplayName() { - return InspectionJSBundle.message("statement.with.empty.body.display.name"); - } + public String getGroupDisplayName() + { + return JSGroupNames.CONFUSING_GROUP_NAME; + } + + @Override + public boolean isEnabledByDefault() + { + return true; + } + + @RequiredReadAction + @Override + public String buildErrorString(Object state, Object... args) + { + if(args[0] instanceof JSIfStatement) + { + return InspectionJSBundle.message("statement.has.empty.branch.error.string"); + } + else + { + return InspectionJSBundle.message("statement.has.empty.body.error.string"); + } + } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.CONFUSING_GROUP_NAME; - } - - @Override - public boolean isEnabledByDefault() { - return true; - } - - @Override - public String buildErrorString(Object... args) { - if (args[0] instanceof JSIfStatement) { - return InspectionJSBundle.message("statement.has.empty.branch.error.string"); - } else { - return InspectionJSBundle.message("statement.has.empty.body.error.string"); - } - } - - @Override - public JComponent createOptionsPanel() { - return new SingleCheckboxOptionsPanel(InspectionJSBundle.message("include.statement.bodies.that.are.empty.code.blocks.parameter"), - this, "m_reportEmptyBlocks"); - } - - @Override - public BaseInspectionVisitor buildVisitor() { - return new EmptyStatementVisitor(); - } - - private class EmptyStatementVisitor extends BaseInspectionVisitor { - - @Override public void visitJSDoWhileStatement(@Nonnull JSDoWhileStatement statement) { - super.visitJSDoWhileStatement(statement); - - final JSStatement body = statement.getBody(); - if (body == null) { - return; - } - if (!isEmpty(body)) { - return; - } - registerStatementError(statement, statement); - } - - @Override public void visitJSWhileStatement(@Nonnull JSWhileStatement statement) { - super.visitJSWhileStatement(statement); - - final JSStatement body = statement.getBody(); - if (body == null) { - return; - } - if (!isEmpty(body)) { - return; - } - registerStatementError(statement, statement); - } - - @Override public void visitJSForStatement(@Nonnull JSForStatement statement) { - super.visitJSForStatement(statement); - - final JSStatement body = statement.getBody(); - if (body == null) { - return; - } - if (!isEmpty(body)) { - return; - } - registerStatementError(statement, statement); - } - - @Override - public void visitJSForInStatement(@Nonnull JSForInStatement statement) { - super.visitJSForInStatement(statement); - - final JSStatement body = statement.getBody(); - if (body == null) { - return; - } - if (!isEmpty(body)) { - return; - } - registerStatementError(statement, statement); - } - - @Override public void visitJSIfStatement(@Nonnull JSIfStatement statement) { - super.visitJSIfStatement(statement); - - final JSStatement thenBranch = statement.getThen(); - if (thenBranch != null) { - if (isEmpty(thenBranch)) { - registerStatementError(statement, statement); - return; - } - } - final JSStatement elseBranch = statement.getElse(); - - if (elseBranch != null) { - if (isEmpty(elseBranch)) { - registerStatementError(statement, statement); - } - } - } - - private boolean isEmpty(JSElement body) { - if (body instanceof JSEmptyStatement) { - return true; - } else if (m_reportEmptyBlocks && body instanceof JSBlockStatement) { - final JSBlockStatement block = (JSBlockStatement) body; - final JSStatement[] statements = block.getStatements(); - return statements.length == 0; - } - return false; - } - } + @Override + public InspectionToolState createStateProvider() + { + return new EmptyStatementBodyJSInspectionState(); + } + + @Override + public BaseInspectionVisitor buildVisitor() + { + return new EmptyStatementVisitor(); + } + + private class EmptyStatementVisitor extends BaseInspectionVisitor + { + + @Override + public void visitJSDoWhileStatement(@Nonnull JSDoWhileStatement statement) + { + super.visitJSDoWhileStatement(statement); + + final JSStatement body = statement.getBody(); + if(body == null) + { + return; + } + if(!isEmpty(body)) + { + return; + } + registerStatementError(statement, statement); + } + + @Override + public void visitJSWhileStatement(@Nonnull JSWhileStatement statement) + { + super.visitJSWhileStatement(statement); + + final JSStatement body = statement.getBody(); + if(body == null) + { + return; + } + if(!isEmpty(body)) + { + return; + } + registerStatementError(statement, statement); + } + + @Override + public void visitJSForStatement(@Nonnull JSForStatement statement) + { + super.visitJSForStatement(statement); + + final JSStatement body = statement.getBody(); + if(body == null) + { + return; + } + if(!isEmpty(body)) + { + return; + } + registerStatementError(statement, statement); + } + + @Override + public void visitJSForInStatement(@Nonnull JSForInStatement statement) + { + super.visitJSForInStatement(statement); + + final JSStatement body = statement.getBody(); + if(body == null) + { + return; + } + if(!isEmpty(body)) + { + return; + } + registerStatementError(statement, statement); + } + + @Override + public void visitJSIfStatement(@Nonnull JSIfStatement statement) + { + super.visitJSIfStatement(statement); + + final JSStatement thenBranch = statement.getThen(); + if(thenBranch != null) + { + if(isEmpty(thenBranch)) + { + registerStatementError(statement, statement); + return; + } + } + final JSStatement elseBranch = statement.getElse(); + + if(elseBranch != null) + { + if(isEmpty(elseBranch)) + { + registerStatementError(statement, statement); + } + } + } + + private boolean isEmpty(JSElement body) + { + if(body instanceof JSEmptyStatement) + { + return true; + } + else if(myState.m_reportEmptyBlocks && body instanceof JSBlockStatement) + { + final JSBlockStatement block = (JSBlockStatement) body; + final JSStatement[] statements = block.getStatements(); + return statements.length == 0; + } + return false; + } + } } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/EmptyStatementBodyJSInspectionState.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/EmptyStatementBodyJSInspectionState.java new file mode 100644 index 00000000..fb4e601a --- /dev/null +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/EmptyStatementBodyJSInspectionState.java @@ -0,0 +1,41 @@ +package com.sixrr.inspectjs.confusing; + +import com.sixrr.inspectjs.localize.InspectionJSLocalize; +import consulo.configurable.ConfigurableBuilder; +import consulo.configurable.ConfigurableBuilderState; +import consulo.configurable.UnnamedConfigurable; +import consulo.language.editor.inspection.InspectionToolState; +import consulo.util.xml.serializer.XmlSerializerUtil; + +import javax.annotation.Nullable; + +/** + * @author VISTALL + * @since 13/03/2023 + */ +public class EmptyStatementBodyJSInspectionState implements InspectionToolState +{ + public boolean m_reportEmptyBlocks = false; + + @Nullable + @Override + public UnnamedConfigurable createConfigurable() + { + ConfigurableBuilder builder = ConfigurableBuilder.newBuilder(); + builder.checkBox(InspectionJSLocalize.includeStatementBodiesThatAreEmptyCodeBlocksParameter(), () -> m_reportEmptyBlocks, b -> m_reportEmptyBlocks = b); + return builder.buildUnnamed(); + } + + @Nullable + @Override + public EmptyStatementBodyJSInspectionState getState() + { + return this; + } + + @Override + public void loadState(EmptyStatementBodyJSInspectionState state) + { + XmlSerializerUtil.copyBean(state, this); + } +} diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/IncrementDecrementResultUsedJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/IncrementDecrementResultUsedJSInspection.java index ed8f0f78..eca9abd9 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/IncrementDecrementResultUsedJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/IncrementDecrementResultUsedJSInspection.java @@ -2,6 +2,7 @@ import com.intellij.lang.javascript.JSTokenTypes; import com.intellij.lang.javascript.psi.*; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; import consulo.language.ast.IElementType; @@ -27,9 +28,10 @@ public String getGroupDisplayName() { return JSGroupNames.CONFUSING_GROUP_NAME; } - @Override + @RequiredReadAction + @Override @Nullable - protected String buildErrorString(Object... args) { + protected String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("result.of.increment.or.decrement.expression.used.error.string"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/MagicNumberJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/MagicNumberJSInspection.java index 3e48bed7..2a3221fe 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/MagicNumberJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/MagicNumberJSInspection.java @@ -1,6 +1,7 @@ package com.sixrr.inspectjs.confusing; import com.intellij.lang.javascript.psi.*; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.util.PsiTreeUtil; import com.sixrr.inspectjs.BaseInspectionVisitor; @@ -51,9 +52,10 @@ public String getGroupDisplayName() { return JSGroupNames.CONFUSING_GROUP_NAME; } - @Override + @RequiredReadAction + @Override @Nonnull - public String buildErrorString(Object... args) { + public String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message( "magic.number.problem.descriptor"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/NegatedConditionalExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/NegatedConditionalExpressionJSInspection.java index 5c10e649..d77a5509 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/NegatedConditionalExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/NegatedConditionalExpressionJSInspection.java @@ -7,6 +7,7 @@ import com.sixrr.inspectjs.*; import com.sixrr.inspectjs.utils.BoolUtils; import com.sixrr.inspectjs.utils.ParenthesesUtils; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; import consulo.language.editor.inspection.ProblemDescriptor; @@ -33,14 +34,15 @@ public String getGroupDisplayName() { return JSGroupNames.CONFUSING_GROUP_NAME; } - @Override + @RequiredReadAction + @Override @Nullable - protected String buildErrorString(Object... args) { + protected String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("negated.conditional.expression.error.string"); } @Override - protected InspectionJSFix buildFix(PsiElement location) { + protected InspectionJSFix buildFix(PsiElement location, Object state) { return fix; } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/NegatedIfStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/NegatedIfStatementJSInspection.java index 6deefe4c..ecd1afcb 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/NegatedIfStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/NegatedIfStatementJSInspection.java @@ -8,6 +8,7 @@ import com.sixrr.inspectjs.*; import com.sixrr.inspectjs.utils.BoolUtils; import com.sixrr.inspectjs.utils.ParenthesesUtils; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; import consulo.language.editor.inspection.ProblemDescriptor; @@ -36,9 +37,10 @@ public String getGroupDisplayName() { return JSGroupNames.CONFUSING_GROUP_NAME; } - @Override + @RequiredReadAction + @Override @Nullable - protected String buildErrorString(Object... args) { + protected String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("negated.ref.statement.error.string"); } @@ -48,7 +50,7 @@ public BaseInspectionVisitor buildVisitor() { } @Override - protected InspectionJSFix buildFix(PsiElement location) { + protected InspectionJSFix buildFix(PsiElement location, Object state) { return fix; } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/NestedConditionalExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/NestedConditionalExpressionJSInspection.java index 0f42abfa..f65d4630 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/NestedConditionalExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/NestedConditionalExpressionJSInspection.java @@ -5,6 +5,7 @@ import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.util.PsiTreeUtil; @@ -26,9 +27,10 @@ public String getGroupDisplayName() { return JSGroupNames.CONFUSING_GROUP_NAME; } - @Override + @RequiredReadAction + @Override @Nullable - protected String buildErrorString(Object... args) { + protected String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("nested.conditional.expression.error.string"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/NestedFunctionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/NestedFunctionJSInspection.java index 91c19ee7..8daba3f8 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/NestedFunctionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/NestedFunctionJSInspection.java @@ -2,79 +2,85 @@ import com.intellij.lang.javascript.psi.JSFunction; import com.intellij.lang.javascript.psi.JSFunctionExpression; -import consulo.annotation.component.ExtensionImpl; -import consulo.language.psi.PsiElement; import com.sixrr.inspectjs.BaseInspectionVisitor; import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; -import com.sixrr.inspectjs.ui.SingleCheckboxOptionsPanel; +import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.component.ExtensionImpl; +import consulo.language.editor.inspection.InspectionToolState; +import consulo.language.psi.PsiElement; import consulo.language.psi.util.PsiTreeUtil; import javax.annotation.Nonnull; - import javax.annotation.Nullable; -import javax.swing.*; @ExtensionImpl -public class NestedFunctionJSInspection extends JavaScriptInspection { - - @SuppressWarnings({"PublicField"}) - public boolean m_includeAnonymousFunctions = false; - - @Override +public class NestedFunctionJSInspection extends JavaScriptInspection +{ + @Override @Nonnull - public String getDisplayName() { - return InspectionJSBundle.message("nested.function.display.name"); - } + public String getDisplayName() + { + return InspectionJSBundle.message("nested.function.display.name"); + } - @Override + @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.CONFUSING_GROUP_NAME; - } + public String getGroupDisplayName() + { + return JSGroupNames.CONFUSING_GROUP_NAME; + } - @Override + @RequiredReadAction + @Override @Nullable - protected String buildErrorString(Object... args) { - final JSFunction function = (JSFunction) ((PsiElement) args[0]).getParent(); - if(functionHasIdentifier(function)) - { - return InspectionJSBundle.message("nested.function.error.string"); - } - return InspectionJSBundle.message("nested.anonymous.function.error.string"); - } + protected String buildErrorString(Object state, Object... args) + { + final JSFunction function = (JSFunction) ((PsiElement) args[0]).getParent(); + if(functionHasIdentifier(function)) + { + return InspectionJSBundle.message("nested.function.error.string"); + } + return InspectionJSBundle.message("nested.anonymous.function.error.string"); + } - @Override - public JComponent createOptionsPanel() { - return new SingleCheckboxOptionsPanel(InspectionJSBundle.message("include.anonymous.functions.parameter"), - this, "m_includeAnonymousFunctions"); - } + @Nonnull + @Override + public InspectionToolState createStateProvider() + { + return new NestedFunctionJSInspectionState(); + } - @Override - public BaseInspectionVisitor buildVisitor() { - return new Visitor(); - } + @Override + public BaseInspectionVisitor buildVisitor() + { + return new Visitor(); + } - private class Visitor extends BaseInspectionVisitor { - @Override public void visitJSFunctionDeclaration(JSFunction function) { - super.visitJSFunctionDeclaration(function); - if(!m_includeAnonymousFunctions &&function.getName() == null ) - { - return; - } - final JSFunction containingFunction = PsiTreeUtil.getParentOfType(function, JSFunction.class, true); - if(containingFunction == null) - { - return; - } - registerFunctionError(function); - } + private class Visitor extends BaseInspectionVisitor + { + @Override + public void visitJSFunctionDeclaration(JSFunction function) + { + super.visitJSFunctionDeclaration(function); + if(!myState.m_includeAnonymousFunctions && function.getName() == null) + { + return; + } + final JSFunction containingFunction = PsiTreeUtil.getParentOfType(function, JSFunction.class, true); + if(containingFunction == null) + { + return; + } + registerFunctionError(function); + } - @Override - public void visitJSFunctionExpression(final JSFunctionExpression node) { - visitJSFunctionDeclaration(node.getFunction()); - } - } + @Override + public void visitJSFunctionExpression(final JSFunctionExpression node) + { + visitJSFunctionDeclaration(node.getFunction()); + } + } } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/NestedFunctionJSInspectionState.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/NestedFunctionJSInspectionState.java new file mode 100644 index 00000000..84f1ab28 --- /dev/null +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/NestedFunctionJSInspectionState.java @@ -0,0 +1,41 @@ +package com.sixrr.inspectjs.confusing; + +import com.sixrr.inspectjs.localize.InspectionJSLocalize; +import consulo.configurable.ConfigurableBuilder; +import consulo.configurable.ConfigurableBuilderState; +import consulo.configurable.UnnamedConfigurable; +import consulo.language.editor.inspection.InspectionToolState; +import consulo.util.xml.serializer.XmlSerializerUtil; + +import javax.annotation.Nullable; + +/** + * @author VISTALL + * @since 13/03/2023 + */ +public class NestedFunctionJSInspectionState implements InspectionToolState +{ + public boolean m_includeAnonymousFunctions = false; + + @Nullable + @Override + public UnnamedConfigurable createConfigurable() + { + ConfigurableBuilder builder = ConfigurableBuilder.newBuilder(); + builder.checkBox(InspectionJSLocalize.includeAnonymousFunctionsParameter(), () -> m_includeAnonymousFunctions, b -> m_includeAnonymousFunctions = b); + return builder.buildUnnamed(); + } + + @Nullable + @Override + public NestedFunctionJSInspectionState getState() + { + return this; + } + + @Override + public void loadState(NestedFunctionJSInspectionState state) + { + XmlSerializerUtil.copyBean(state, this); + } +} diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/OctalIntegerJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/OctalIntegerJSInspection.java index e835a1be..633cafea 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/OctalIntegerJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/OctalIntegerJSInspection.java @@ -1,5 +1,6 @@ package com.sixrr.inspectjs.confusing; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.javascript.psi.JSSimpleLiteralExpression; import com.sixrr.inspectjs.BaseInspectionVisitor; @@ -25,9 +26,10 @@ public String getGroupDisplayName() { return JSGroupNames.CONFUSING_GROUP_NAME; } - @Override + @RequiredReadAction + @Override @Nullable - protected String buildErrorString(Object... args) { + protected String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("octal.integer.error.string"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexArithmeticExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexArithmeticExpressionJSInspection.java index 45dca314..576eaf48 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexArithmeticExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexArithmeticExpressionJSInspection.java @@ -2,200 +2,240 @@ import com.intellij.lang.javascript.JSTokenTypes; import com.intellij.lang.javascript.psi.*; -import consulo.annotation.component.ExtensionImpl; -import consulo.language.ast.IElementType; import com.sixrr.inspectjs.BaseInspectionVisitor; import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; -import com.sixrr.inspectjs.ui.SingleIntegerFieldOptionsPanel; +import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.component.ExtensionImpl; +import consulo.language.ast.IElementType; +import consulo.language.editor.inspection.InspectionToolState; import consulo.language.psi.PsiElement; import javax.annotation.Nonnull; - -import javax.swing.*; import java.util.HashSet; import java.util.Set; @ExtensionImpl -public class OverlyComplexArithmeticExpressionJSInspection extends JavaScriptInspection { - private static final int TERM_LIMIT = 6; - - @SuppressWarnings({"PublicField"}) - public int m_limit = TERM_LIMIT; +public class OverlyComplexArithmeticExpressionJSInspection extends JavaScriptInspection +{ + @Override + @Nonnull + public String getDisplayName() + { + return InspectionJSBundle.message("overly.complex.arithmetic.expression.display.name"); + } - @Override + @Override @Nonnull - public String getDisplayName() { - return InspectionJSBundle.message("overly.complex.arithmetic.expression.display.name"); - } + public String getGroupDisplayName() + { + return JSGroupNames.CONFUSING_GROUP_NAME; + } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.CONFUSING_GROUP_NAME; - } - - private int getLimit() { - return m_limit; - } - - @Override - public JComponent createOptionsPanel() { - return new SingleIntegerFieldOptionsPanel(InspectionJSBundle.message("maximum.number.of.terms.parameter"), - this, "m_limit"); - } - - @Override - protected String buildErrorString(Object... args) { - return InspectionJSBundle.message("overly.complex.arithmetic.expression.error.string"); - } - - @Override - public BaseInspectionVisitor buildVisitor() { - return new Visitor(); - } - - private class Visitor extends BaseInspectionVisitor { - private final Set arithmeticTokens = new HashSet(5); - - { - arithmeticTokens.add(JSTokenTypes.PLUS); - arithmeticTokens.add(JSTokenTypes.MINUS); - arithmeticTokens.add(JSTokenTypes.MULT); - arithmeticTokens.add(JSTokenTypes.DIV); - arithmeticTokens.add(JSTokenTypes.PERC); - } - - @Override public void visitJSBinaryExpression(@Nonnull JSBinaryExpression expression) { - super.visitJSBinaryExpression(expression); - checkExpression(expression); - } - - @Override public void visitJSPrefixExpression(@Nonnull JSPrefixExpression expression) { - super.visitJSPrefixExpression(expression); - checkExpression(expression); - } - - @Override public void visitJSParenthesizedExpression(JSParenthesizedExpression expression) { - super.visitJSParenthesizedExpression(expression); - checkExpression(expression); - } - - private void checkExpression(JSExpression expression) { - if (isParentArithmetic(expression)) { - return; - } - if (!isArithmetic(expression)) { - return; - } - if (containsStringConcatenation(expression)) { - return; - } - final int numTerms = countTerms(expression); - if (numTerms <= getLimit()) { - return; - } - registerError(expression); - } - - private int countTerms(JSExpression expression) { - if (expression == null) { - return 0; - } - if (!isArithmetic(expression)) { - return 1; - } - if (expression instanceof JSBinaryExpression) { - final JSBinaryExpression binaryExpression = (JSBinaryExpression) expression; - final JSExpression lhs = binaryExpression.getLOperand(); - final JSExpression rhs = binaryExpression.getROperand(); - return countTerms(lhs) + countTerms(rhs); - } else if (expression instanceof JSPrefixExpression) { - final JSPrefixExpression prefixExpression = (JSPrefixExpression) expression; - final JSExpression operand = prefixExpression.getExpression(); - return countTerms(operand); - } else if (expression instanceof JSParenthesizedExpression) { - final JSParenthesizedExpression parenthesizedExpression = (JSParenthesizedExpression) expression; - final JSExpression contents = parenthesizedExpression.getInnerExpression(); - return countTerms(contents); - } - return 1; - } - - private boolean isParentArithmetic(JSExpression expression) { - final PsiElement parent = expression.getParent(); - if (!(parent instanceof JSExpression)) { - return false; - } - return isArithmetic((JSExpression) parent); - } - - private boolean isArithmetic(JSExpression expression) { - if (expression instanceof JSBinaryExpression) { - - final JSBinaryExpression binaryExpression = (JSBinaryExpression) expression; - final IElementType sign = binaryExpression.getOperationSign(); - return arithmeticTokens.contains(sign); - } else if (expression instanceof JSPrefixExpression) { - final JSPrefixExpression prefixExpression = (JSPrefixExpression) expression; - final IElementType sign = prefixExpression.getOperationSign(); - return arithmeticTokens.contains(sign); - } else if (expression instanceof JSParenthesizedExpression) { - final JSParenthesizedExpression parenthesizedExpression = (JSParenthesizedExpression) expression; - final JSExpression contents = parenthesizedExpression.getInnerExpression(); - return isArithmetic(contents); - } - return false; - } - - private boolean containsStringConcatenation(JSExpression expression) { - if (isStringLiteral(expression)) { - return true; - } - if (expression instanceof JSBinaryExpression) { - - final JSBinaryExpression binaryExpression = (JSBinaryExpression) expression; - final JSExpression lhs = binaryExpression.getLOperand(); - - if (containsStringConcatenation(lhs)) { - return true; - } - final JSExpression rhs = binaryExpression.getROperand(); - return containsStringConcatenation(rhs); - } else if (expression instanceof JSPrefixExpression) { - final JSPrefixExpression prefixExpression = (JSPrefixExpression) expression; - final IElementType sign = prefixExpression.getOperationSign(); - return arithmeticTokens.contains(sign); - } else if (expression instanceof JSParenthesizedExpression) { - final JSParenthesizedExpression parenthesizedExpression = (JSParenthesizedExpression) expression; - final JSExpression contents = parenthesizedExpression.getInnerExpression(); - return containsStringConcatenation(contents); - } - return false; - } - - private boolean isStringLiteral(JSExpression expression) { - if (expression instanceof JSLiteralExpression) { - final JSLiteralExpression literal = (JSLiteralExpression) expression; - final String text = literal.getText(); - return text.startsWith("'") || text.startsWith("\""); - } - if (expression instanceof JSReferenceExpression) { - final JSReferenceExpression reference = (JSReferenceExpression) expression; - final PsiElement referent = reference.resolve(); - if (referent instanceof JSVariable) { - final JSVariable variable = (JSVariable) referent; - if (variable.isConst()) { - final JSExpression initializer = variable.getInitializer(); - if (initializer != null) { - final String text = initializer.getText(); - return text.startsWith("'") || text.startsWith("\""); - } - } - } - } - return false; - } - } + @Override + public InspectionToolState createStateProvider() + { + return new OverlyComplexArithmeticExpressionJSInspectionState(); + } + + @RequiredReadAction + @Override + protected String buildErrorString(Object state, Object... args) + { + return InspectionJSBundle.message("overly.complex.arithmetic.expression.error.string"); + } + + @Override + public BaseInspectionVisitor buildVisitor() + { + return new Visitor(); + } + + private class Visitor extends BaseInspectionVisitor + { + private final Set arithmeticTokens = new HashSet<>(5); + + public Visitor() + { + arithmeticTokens.add(JSTokenTypes.PLUS); + arithmeticTokens.add(JSTokenTypes.MINUS); + arithmeticTokens.add(JSTokenTypes.MULT); + arithmeticTokens.add(JSTokenTypes.DIV); + arithmeticTokens.add(JSTokenTypes.PERC); + } + + @Override + public void visitJSBinaryExpression(@Nonnull JSBinaryExpression expression) + { + super.visitJSBinaryExpression(expression); + checkExpression(expression); + } + + @Override + public void visitJSPrefixExpression(@Nonnull JSPrefixExpression expression) + { + super.visitJSPrefixExpression(expression); + checkExpression(expression); + } + + @Override + public void visitJSParenthesizedExpression(JSParenthesizedExpression expression) + { + super.visitJSParenthesizedExpression(expression); + checkExpression(expression); + } + + private void checkExpression(JSExpression expression) + { + if(isParentArithmetic(expression)) + { + return; + } + if(!isArithmetic(expression)) + { + return; + } + if(containsStringConcatenation(expression)) + { + return; + } + final int numTerms = countTerms(expression); + if(numTerms <= myState.m_limit) + { + return; + } + registerError(expression); + } + + private int countTerms(JSExpression expression) + { + if(expression == null) + { + return 0; + } + if(!isArithmetic(expression)) + { + return 1; + } + if(expression instanceof JSBinaryExpression) + { + final JSBinaryExpression binaryExpression = (JSBinaryExpression) expression; + final JSExpression lhs = binaryExpression.getLOperand(); + final JSExpression rhs = binaryExpression.getROperand(); + return countTerms(lhs) + countTerms(rhs); + } + else if(expression instanceof JSPrefixExpression) + { + final JSPrefixExpression prefixExpression = (JSPrefixExpression) expression; + final JSExpression operand = prefixExpression.getExpression(); + return countTerms(operand); + } + else if(expression instanceof JSParenthesizedExpression) + { + final JSParenthesizedExpression parenthesizedExpression = (JSParenthesizedExpression) expression; + final JSExpression contents = parenthesizedExpression.getInnerExpression(); + return countTerms(contents); + } + return 1; + } + + private boolean isParentArithmetic(JSExpression expression) + { + final PsiElement parent = expression.getParent(); + if(!(parent instanceof JSExpression)) + { + return false; + } + return isArithmetic((JSExpression) parent); + } + + private boolean isArithmetic(JSExpression expression) + { + if(expression instanceof JSBinaryExpression) + { + + final JSBinaryExpression binaryExpression = (JSBinaryExpression) expression; + final IElementType sign = binaryExpression.getOperationSign(); + return arithmeticTokens.contains(sign); + } + else if(expression instanceof JSPrefixExpression) + { + final JSPrefixExpression prefixExpression = (JSPrefixExpression) expression; + final IElementType sign = prefixExpression.getOperationSign(); + return arithmeticTokens.contains(sign); + } + else if(expression instanceof JSParenthesizedExpression) + { + final JSParenthesizedExpression parenthesizedExpression = (JSParenthesizedExpression) expression; + final JSExpression contents = parenthesizedExpression.getInnerExpression(); + return isArithmetic(contents); + } + return false; + } + + private boolean containsStringConcatenation(JSExpression expression) + { + if(isStringLiteral(expression)) + { + return true; + } + if(expression instanceof JSBinaryExpression) + { + + final JSBinaryExpression binaryExpression = (JSBinaryExpression) expression; + final JSExpression lhs = binaryExpression.getLOperand(); + + if(containsStringConcatenation(lhs)) + { + return true; + } + final JSExpression rhs = binaryExpression.getROperand(); + return containsStringConcatenation(rhs); + } + else if(expression instanceof JSPrefixExpression) + { + final JSPrefixExpression prefixExpression = (JSPrefixExpression) expression; + final IElementType sign = prefixExpression.getOperationSign(); + return arithmeticTokens.contains(sign); + } + else if(expression instanceof JSParenthesizedExpression) + { + final JSParenthesizedExpression parenthesizedExpression = (JSParenthesizedExpression) expression; + final JSExpression contents = parenthesizedExpression.getInnerExpression(); + return containsStringConcatenation(contents); + } + return false; + } + + private boolean isStringLiteral(JSExpression expression) + { + if(expression instanceof JSLiteralExpression) + { + final JSLiteralExpression literal = (JSLiteralExpression) expression; + final String text = literal.getText(); + return text.startsWith("'") || text.startsWith("\""); + } + if(expression instanceof JSReferenceExpression) + { + final JSReferenceExpression reference = (JSReferenceExpression) expression; + final PsiElement referent = reference.resolve(); + if(referent instanceof JSVariable) + { + final JSVariable variable = (JSVariable) referent; + if(variable.isConst()) + { + final JSExpression initializer = variable.getInitializer(); + if(initializer != null) + { + final String text = initializer.getText(); + return text.startsWith("'") || text.startsWith("\""); + } + } + } + } + return false; + } + } } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexArithmeticExpressionJSInspectionState.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexArithmeticExpressionJSInspectionState.java new file mode 100644 index 00000000..f7ed289d --- /dev/null +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexArithmeticExpressionJSInspectionState.java @@ -0,0 +1,43 @@ +package com.sixrr.inspectjs.confusing; + +import com.sixrr.inspectjs.localize.InspectionJSLocalize; +import consulo.configurable.ConfigurableBuilder; +import consulo.configurable.ConfigurableBuilderState; +import consulo.configurable.UnnamedConfigurable; +import consulo.language.editor.inspection.InspectionToolState; +import consulo.ui.Label; +import consulo.util.xml.serializer.XmlSerializerUtil; + +import javax.annotation.Nullable; + +/** + * @author VISTALL + * @since 18/03/2023 + */ +public class OverlyComplexArithmeticExpressionJSInspectionState implements InspectionToolState +{ + public int m_limit = 6; + + @Nullable + @Override + public UnnamedConfigurable createConfigurable() + { + ConfigurableBuilder builder = ConfigurableBuilder.newBuilder(); + builder.component(() -> Label.create(InspectionJSLocalize.maximumNumberOfTermsParameter())); + builder.intBox(() -> m_limit, value -> m_limit = value); + return builder.buildUnnamed(); + } + + @Nullable + @Override + public OverlyComplexArithmeticExpressionJSInspectionState getState() + { + return this; + } + + @Override + public void loadState(OverlyComplexArithmeticExpressionJSInspectionState state) + { + XmlSerializerUtil.copyBean(state, this); + } +} diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexBooleanExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexBooleanExpressionJSInspection.java index 3ab9f7ac..83ceeec9 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexBooleanExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexBooleanExpressionJSInspection.java @@ -5,143 +5,167 @@ import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.lang.javascript.psi.JSParenthesizedExpression; import com.intellij.lang.javascript.psi.JSPrefixExpression; -import consulo.annotation.component.ExtensionImpl; -import consulo.language.psi.PsiElement; -import consulo.language.ast.IElementType; import com.sixrr.inspectjs.BaseInspectionVisitor; import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; -import com.sixrr.inspectjs.ui.SingleIntegerFieldOptionsPanel; -import javax.annotation.Nonnull; +import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.component.ExtensionImpl; +import consulo.language.ast.IElementType; +import consulo.language.editor.inspection.InspectionToolState; +import consulo.language.psi.PsiElement; -import javax.swing.*; +import javax.annotation.Nonnull; @ExtensionImpl -public class OverlyComplexBooleanExpressionJSInspection extends JavaScriptInspection { - private static final int TERM_LIMIT = 3; - - /** - * @noinspection PublicField - */ - public int m_limit = TERM_LIMIT; +public class OverlyComplexBooleanExpressionJSInspection extends JavaScriptInspection +{ + @Override + @Nonnull + public String getDisplayName() + { + return InspectionJSBundle.message("overly.complex.boolean.expression.display.name"); + } - @Override + @Override @Nonnull - public String getDisplayName() { - return InspectionJSBundle.message("overly.complex.boolean.expression.display.name"); - } + public String getGroupDisplayName() + { + return JSGroupNames.CONFUSING_GROUP_NAME; + } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.CONFUSING_GROUP_NAME; - } - - private int getLimit() { - return m_limit; - } - - @Override - public JComponent createOptionsPanel() { - return new SingleIntegerFieldOptionsPanel(InspectionJSBundle.message("maximum.number.of.terms.parameter"), - this, "m_limit"); - } - - @Override - protected boolean buildQuickFixesOnlyForOnTheFlyErrors() { - return true; - } - - @Override - protected String buildErrorString(Object... args) { - return InspectionJSBundle.message("overly.complex.boolean.expression.error.string"); - } - - @Override - public BaseInspectionVisitor buildVisitor() { - return new Visitor(); - } - - private class Visitor extends BaseInspectionVisitor { - - @Override public void visitJSBinaryExpression(@Nonnull JSBinaryExpression expression) { - super.visitJSBinaryExpression(expression); - checkExpression(expression); - } - - @Override public void visitJSPrefixExpression(@Nonnull JSPrefixExpression expression) { - super.visitJSPrefixExpression(expression); - checkExpression(expression); - } - - @Override public void visitJSParenthesizedExpression(JSParenthesizedExpression expression) { - super.visitJSParenthesizedExpression(expression); - checkExpression(expression); - } - - private void checkExpression(JSExpression expression) { - if (!isBoolean(expression)) { - return; - } - if (isParentBoolean(expression)) { - return; - } - final int numTerms = countTerms(expression); - if (numTerms <= getLimit()) { - return; - } - registerError(expression); - } - - private int countTerms(JSExpression expression) { - if (expression == null) { - return 0; - } - if (!isBoolean(expression)) { - return 1; - } - if (expression instanceof JSBinaryExpression) { - final JSBinaryExpression binaryExpression = (JSBinaryExpression) expression; - final JSExpression lhs = binaryExpression.getLOperand(); - final JSExpression rhs = binaryExpression.getROperand(); - return countTerms(lhs) + countTerms(rhs); - } else if (expression instanceof JSPrefixExpression) { - final JSPrefixExpression prefixExpression = (JSPrefixExpression) expression; - final JSExpression operand = prefixExpression.getExpression(); - return countTerms(operand); - } else if (expression instanceof JSParenthesizedExpression) { - final JSParenthesizedExpression parenthesizedExpression = (JSParenthesizedExpression) expression; - final JSExpression contents = parenthesizedExpression.getInnerExpression(); - return countTerms(contents); - } - return 1; - } - - private boolean isParentBoolean(JSExpression expression) { - final PsiElement parent = expression.getParent(); - if (!(parent instanceof JSExpression)) { - return false; - } - return isBoolean((JSExpression) parent); - } - - private boolean isBoolean(JSExpression expression) { - if (expression instanceof JSBinaryExpression) { - final JSBinaryExpression binaryExpression = (JSBinaryExpression) expression; - final IElementType sign = binaryExpression.getOperationSign(); - return JSTokenTypes.ANDAND.equals(sign) || - JSTokenTypes.OROR.equals(sign); - } else if (expression instanceof JSPrefixExpression) { - final JSPrefixExpression prefixExpression = (JSPrefixExpression) expression; - final IElementType sign = prefixExpression.getOperationSign(); - return JSTokenTypes.EXCL.equals(sign); - } else if (expression instanceof JSParenthesizedExpression) { - final JSParenthesizedExpression parenthesizedExpression = (JSParenthesizedExpression) expression; - final JSExpression contents = parenthesizedExpression.getInnerExpression(); - return isBoolean(contents); - } - return false; - } - } + @Override + public InspectionToolState createStateProvider() + { + return new OverlyComplexBooleanExpressionJSInspectionState(); + } + + @Override + protected boolean buildQuickFixesOnlyForOnTheFlyErrors() + { + return true; + } + + @RequiredReadAction + @Override + protected String buildErrorString(Object state, Object... args) + { + return InspectionJSBundle.message("overly.complex.boolean.expression.error.string"); + } + + @Override + public BaseInspectionVisitor buildVisitor() + { + return new Visitor(); + } + + private class Visitor extends BaseInspectionVisitor + { + + @Override + public void visitJSBinaryExpression(@Nonnull JSBinaryExpression expression) + { + super.visitJSBinaryExpression(expression); + checkExpression(expression); + } + + @Override + public void visitJSPrefixExpression(@Nonnull JSPrefixExpression expression) + { + super.visitJSPrefixExpression(expression); + checkExpression(expression); + } + + @Override + public void visitJSParenthesizedExpression(JSParenthesizedExpression expression) + { + super.visitJSParenthesizedExpression(expression); + checkExpression(expression); + } + + private void checkExpression(JSExpression expression) + { + if(!isBoolean(expression)) + { + return; + } + if(isParentBoolean(expression)) + { + return; + } + final int numTerms = countTerms(expression); + if(numTerms <= myState.m_limit) + { + return; + } + registerError(expression); + } + + private int countTerms(JSExpression expression) + { + if(expression == null) + { + return 0; + } + if(!isBoolean(expression)) + { + return 1; + } + if(expression instanceof JSBinaryExpression) + { + final JSBinaryExpression binaryExpression = (JSBinaryExpression) expression; + final JSExpression lhs = binaryExpression.getLOperand(); + final JSExpression rhs = binaryExpression.getROperand(); + return countTerms(lhs) + countTerms(rhs); + } + else if(expression instanceof JSPrefixExpression) + { + final JSPrefixExpression prefixExpression = (JSPrefixExpression) expression; + final JSExpression operand = prefixExpression.getExpression(); + return countTerms(operand); + } + else if(expression instanceof JSParenthesizedExpression) + { + final JSParenthesizedExpression parenthesizedExpression = (JSParenthesizedExpression) expression; + final JSExpression contents = parenthesizedExpression.getInnerExpression(); + return countTerms(contents); + } + return 1; + } + + private boolean isParentBoolean(JSExpression expression) + { + final PsiElement parent = expression.getParent(); + if(!(parent instanceof JSExpression)) + { + return false; + } + return isBoolean((JSExpression) parent); + } + + private boolean isBoolean(JSExpression expression) + { + if(expression instanceof JSBinaryExpression) + { + final JSBinaryExpression binaryExpression = (JSBinaryExpression) expression; + final IElementType sign = binaryExpression.getOperationSign(); + return JSTokenTypes.ANDAND.equals(sign) || + JSTokenTypes.OROR.equals(sign); + } + else if(expression instanceof JSPrefixExpression) + { + final JSPrefixExpression prefixExpression = (JSPrefixExpression) expression; + final IElementType sign = prefixExpression.getOperationSign(); + return JSTokenTypes.EXCL.equals(sign); + } + else if(expression instanceof JSParenthesizedExpression) + { + final JSParenthesizedExpression parenthesizedExpression = (JSParenthesizedExpression) expression; + final JSExpression contents = parenthesizedExpression.getInnerExpression(); + return isBoolean(contents); + } + return false; + } + } } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexBooleanExpressionJSInspectionState.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexBooleanExpressionJSInspectionState.java new file mode 100644 index 00000000..ab2a197e --- /dev/null +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexBooleanExpressionJSInspectionState.java @@ -0,0 +1,43 @@ +package com.sixrr.inspectjs.confusing; + +import com.sixrr.inspectjs.localize.InspectionJSLocalize; +import consulo.configurable.ConfigurableBuilder; +import consulo.configurable.ConfigurableBuilderState; +import consulo.configurable.UnnamedConfigurable; +import consulo.language.editor.inspection.InspectionToolState; +import consulo.ui.Label; +import consulo.util.xml.serializer.XmlSerializerUtil; + +import javax.annotation.Nullable; + +/** + * @author VISTALL + * @since 18/03/2023 + */ +public class OverlyComplexBooleanExpressionJSInspectionState implements InspectionToolState +{ + public int m_limit = 3; + + @Nullable + @Override + public UnnamedConfigurable createConfigurable() + { + ConfigurableBuilder builder = ConfigurableBuilder.newBuilder(); + builder.component(() -> Label.create(InspectionJSLocalize.maximumNumberOfTermsParameter())); + builder.intBox(() -> m_limit, value -> m_limit = value); + return builder.buildUnnamed(); + } + + @Nullable + @Override + public OverlyComplexBooleanExpressionJSInspectionState getState() + { + return this; + } + + @Override + public void loadState(OverlyComplexBooleanExpressionJSInspectionState state) + { + XmlSerializerUtil.copyBean(state, this); + } +} diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/PointlessArithmeticExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/PointlessArithmeticExpressionJSInspection.java index d2034aed..17e964b9 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/PointlessArithmeticExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/PointlessArithmeticExpressionJSInspection.java @@ -1,5 +1,6 @@ package com.sixrr.inspectjs.confusing; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.inspection.ProblemDescriptor; import com.intellij.lang.javascript.JSTokenTypes; @@ -41,8 +42,9 @@ public boolean isEnabledByDefault() { return true; } - @Override - public String buildErrorString(Object... args) { + @RequiredReadAction + @Override + public String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("pointless.arithmetic.error.message", calculateReplacementExpression((JSExpression)args[0])); } @@ -82,7 +84,7 @@ public BaseInspectionVisitor buildVisitor() { } @Override - public InspectionJSFix buildFix(PsiElement location) { + public InspectionJSFix buildFix(PsiElement location, Object state) { return fix; } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/PointlessBooleanExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/PointlessBooleanExpressionJSInspection.java index ad5077f8..0f42899d 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/PointlessBooleanExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/PointlessBooleanExpressionJSInspection.java @@ -1,5 +1,6 @@ package com.sixrr.inspectjs.confusing; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.inspection.ProblemDescriptor; import com.intellij.lang.javascript.JSTokenTypes; @@ -49,8 +50,9 @@ public BaseInspectionVisitor buildVisitor() { return new PointlessBooleanExpressionVisitor(); } - @Override - public String buildErrorString(Object... args) { + @RequiredReadAction + @Override + public String buildErrorString(Object state, Object... args) { if ( args[0]instanceof JSBinaryExpression) { return InspectionJSBundle.message("pointless.boolean.error.string", calculateSimplifiedBinaryExpression((JSBinaryExpression) args[0])); } else { @@ -143,7 +145,7 @@ private static String calculateSimplifiedPrefixExpression(JSPrefixExpression exp } @Override - public InspectionJSFix buildFix(PsiElement location) { + public InspectionJSFix buildFix(PsiElement location, Object state) { return fix; } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/VoidExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/VoidExpressionJSInspection.java index 1e068049..e3e20e0d 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/VoidExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/VoidExpressionJSInspection.java @@ -5,6 +5,7 @@ import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; import org.jetbrains.annotations.NonNls; @@ -27,9 +28,10 @@ public String getGroupDisplayName() { return JSGroupNames.CONFUSING_GROUP_NAME; } - @Override + @RequiredReadAction + @Override @Nullable - protected String buildErrorString(Object... args) { + protected String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("void.expression.error.string"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/WithStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/WithStatementJSInspection.java index 231db01f..82c1fb3a 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/WithStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/WithStatementJSInspection.java @@ -5,6 +5,7 @@ import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import javax.annotation.Nonnull; @@ -25,9 +26,10 @@ public String getGroupDisplayName() { return JSGroupNames.CONFUSING_GROUP_NAME; } - @Override + @RequiredReadAction + @Override @Nullable - protected String buildErrorString(Object... args) { + protected String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("with.expression.error.string"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/BreakStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/BreakStatementJSInspection.java index 009b0e4b..f204aa0b 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/BreakStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/BreakStatementJSInspection.java @@ -6,6 +6,7 @@ import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import javax.annotation.Nonnull; @@ -26,9 +27,10 @@ public String getGroupDisplayName() { return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } - @Override + @RequiredReadAction + @Override @Nullable - protected String buildErrorString(Object... args) { + protected String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("break.statement.error.string"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/BreakStatementWithLabelJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/BreakStatementWithLabelJSInspection.java index 3eceb281..2372b456 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/BreakStatementWithLabelJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/BreakStatementWithLabelJSInspection.java @@ -5,6 +5,7 @@ import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import javax.annotation.Nonnull; @@ -25,9 +26,10 @@ public String getGroupDisplayName() { return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } - @Override + @RequiredReadAction + @Override @Nullable - protected String buildErrorString(Object... args) { + protected String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("break.statement.with.label.error.string"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/ConditionalExpressionWithIdenticalBranchesJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/ConditionalExpressionWithIdenticalBranchesJSInspection.java index c1ef37d5..c282ed2f 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/ConditionalExpressionWithIdenticalBranchesJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/ConditionalExpressionWithIdenticalBranchesJSInspection.java @@ -4,6 +4,7 @@ import com.intellij.lang.javascript.psi.JSExpression; import com.sixrr.inspectjs.*; import com.sixrr.inspectjs.utils.EquivalenceChecker; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.inspection.ProblemDescriptor; import consulo.language.psi.PsiElement; @@ -28,13 +29,14 @@ public String getGroupDisplayName() { return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } - @Override - public String buildErrorString(Object... args) { + @RequiredReadAction + @Override + public String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("conditional.expression.with.identical.branches.error.string"); } @Override - public InspectionJSFix buildFix(PsiElement location) { + public InspectionJSFix buildFix(PsiElement location, Object state) { return fix; } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/ConstantConditionalExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/ConstantConditionalExpressionJSInspection.java index c65e021b..a5e039f8 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/ConstantConditionalExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/ConstantConditionalExpressionJSInspection.java @@ -2,6 +2,7 @@ import com.intellij.lang.javascript.psi.JSConditionalExpression; import com.intellij.lang.javascript.psi.JSExpression; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.project.Project; import consulo.language.psi.PsiElement; @@ -38,9 +39,10 @@ public BaseInspectionVisitor buildVisitor() { return new ConstantConditionalExpressionVisitor(); } - @Override + @RequiredReadAction + @Override @Nonnull - public String buildErrorString(Object... args) { + public String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("constant.conditional.expression.error.string"); } @@ -59,7 +61,7 @@ static String calculateReplacementExpression( } @Override - public InspectionJSFix buildFix(PsiElement location) { + public InspectionJSFix buildFix(PsiElement location, Object state) { return new ConstantConditionalFix(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/ConstantIfStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/ConstantIfStatementJSInspection.java index 3a36452c..8ebd7a76 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/ConstantIfStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/ConstantIfStatementJSInspection.java @@ -5,6 +5,7 @@ import com.intellij.lang.javascript.psi.JSStatement; import com.sixrr.inspectjs.*; import com.sixrr.inspectjs.utils.BoolUtils; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.inspection.ProblemDescriptor; import consulo.language.psi.PsiElement; @@ -34,9 +35,10 @@ public boolean isEnabledByDefault() { return true; } - @Override + @RequiredReadAction + @Override @Nonnull - protected String buildErrorString(Object... args) { + protected String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message( "constant.if.statement.problem.descriptor"); } @@ -47,7 +49,7 @@ public BaseInspectionVisitor buildVisitor() { } @Override - public InspectionJSFix buildFix(PsiElement location) { + public InspectionJSFix buildFix(PsiElement location, Object state) { return new ConstantIfStatementFix(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/ContinueStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/ContinueStatementJSInspection.java index a1c81f27..af7fa0b3 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/ContinueStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/ContinueStatementJSInspection.java @@ -5,6 +5,7 @@ import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import javax.annotation.Nonnull; @@ -25,9 +26,10 @@ public String getGroupDisplayName() { return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } - @Override + @RequiredReadAction + @Override @Nullable - protected String buildErrorString(Object... args) { + protected String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("continue.statement.error.string"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/ContinueStatementWithLabelJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/ContinueStatementWithLabelJSInspection.java index 042d1af0..2d464232 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/ContinueStatementWithLabelJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/ContinueStatementWithLabelJSInspection.java @@ -5,6 +5,7 @@ import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import javax.annotation.Nonnull; @@ -25,9 +26,10 @@ public String getGroupDisplayName() { return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } - @Override + @RequiredReadAction + @Override @Nullable - protected String buildErrorString(Object... args) { + protected String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("continue.statement.with.label.error.string"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/DefaultNotLastCaseInSwitchJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/DefaultNotLastCaseInSwitchJSInspection.java index eb14af76..58786983 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/DefaultNotLastCaseInSwitchJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/DefaultNotLastCaseInSwitchJSInspection.java @@ -6,6 +6,7 @@ import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import javax.annotation.Nonnull; @@ -25,9 +26,10 @@ public String getDisplayName() { return InspectionJSBundle.message("default.not.last.case.in.switch.display.name"); } - @Override + @RequiredReadAction + @Override @Nonnull - protected String buildErrorString(Object... args) { + protected String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("default.branch.not.last.case.in.switch.error.string"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/DuplicateConditionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/DuplicateConditionJSInspection.java index 075a8cb3..fd4bced6 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/DuplicateConditionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/DuplicateConditionJSInspection.java @@ -7,6 +7,7 @@ import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; import com.sixrr.inspectjs.utils.EquivalenceChecker; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; import consulo.language.psi.PsiElement; @@ -31,8 +32,9 @@ public String getGroupDisplayName() { return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } - @Override - public String buildErrorString(Object... args) { + @RequiredReadAction + @Override + public String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("duplicate.condition.error.string"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/FallthroughInSwitchStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/FallthroughInSwitchStatementJSInspection.java index 9948f154..eb486af4 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/FallthroughInSwitchStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/FallthroughInSwitchStatementJSInspection.java @@ -8,6 +8,7 @@ import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; import com.sixrr.inspectjs.utils.ControlFlowUtils; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; @@ -34,9 +35,10 @@ public boolean isEnabledByDefault() { return true; } - @Override + @RequiredReadAction + @Override @Nullable - protected String buildErrorString(Object... args) { + protected String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("fall.through.in.switch.statement.error.string"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/ForLoopReplaceableByWhileJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/ForLoopReplaceableByWhileJSInspection.java index a2c9c624..8b3eaf5f 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/ForLoopReplaceableByWhileJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/ForLoopReplaceableByWhileJSInspection.java @@ -1,136 +1,152 @@ package com.sixrr.inspectjs.control; -import consulo.annotation.component.ExtensionImpl; -import consulo.language.editor.inspection.ProblemDescriptor; import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.lang.javascript.psi.JSForStatement; import com.intellij.lang.javascript.psi.JSStatement; import com.intellij.lang.javascript.psi.JSVarStatement; -import consulo.project.Project; +import com.sixrr.inspectjs.*; +import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.component.ExtensionImpl; +import consulo.language.editor.inspection.InspectionToolState; +import consulo.language.editor.inspection.ProblemDescriptor; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; -import com.sixrr.inspectjs.*; -import com.sixrr.inspectjs.ui.SingleCheckboxOptionsPanel; +import consulo.project.Project; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; -import javax.swing.*; +import javax.annotation.Nonnull; @ExtensionImpl -public class ForLoopReplaceableByWhileJSInspection extends JavaScriptInspection { - - /** - * @noinspection PublicField - */ - public boolean m_ignoreLoopsWithoutConditions = false; - - @Override +public class ForLoopReplaceableByWhileJSInspection extends JavaScriptInspection +{ + @Override @Nonnull - public String getDisplayName() { - return InspectionJSBundle.message("for.loop.replaceable.by.while.display.name"); + public String getDisplayName() + { + return InspectionJSBundle.message("for.loop.replaceable.by.while.display.name"); + } - } - @Override + @Override @Nonnull - public String getID() { - return "ForLoopReplaceableByWhile"; - } + public String getID() + { + return "ForLoopReplaceableByWhile"; + } - @Override + @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME; - } + public String getGroupDisplayName() + { + return JSGroupNames.CONTROL_FLOW_GROUP_NAME; + } - @Override + @RequiredReadAction + @Override @Nonnull - protected String buildErrorString(Object... args) { - return InspectionJSBundle.message( - "for.loop.replaceable.by.while.problem.descriptor"); - } - - @Override - public JComponent createOptionsPanel() { - return new SingleCheckboxOptionsPanel(InspectionJSBundle.message( - "for.loop.replaceable.by.while.ignore.option"), - this, "m_ignoreLoopsWithoutConditions"); - } - - @Override - public InspectionJSFix buildFix(PsiElement location) { - return new ReplaceForByWhileFix(); - } - - private static class ReplaceForByWhileFix extends InspectionJSFix { + protected String buildErrorString(Object state, Object... args) + { + return InspectionJSBundle.message( + "for.loop.replaceable.by.while.problem.descriptor"); + } - @Override + @Nonnull + @Override + public InspectionToolState createStateProvider() + { + return new ForLoopReplaceableByWhileJSInspectionState(); + } + + @Override + public InspectionJSFix buildFix(PsiElement location, Object state) + { + return new ReplaceForByWhileFix(); + } + + private static class ReplaceForByWhileFix extends InspectionJSFix + { + + @Override @Nonnull - public String getName() { - return InspectionJSBundle.message( - "for.loop.replaceable.by.while.replace.quickfix"); - } - - @Override - public void doFix(Project project, ProblemDescriptor descriptor) - throws IncorrectOperationException { - final PsiElement forKeywordElement = descriptor.getPsiElement(); - final JSForStatement forStatement = - (JSForStatement)forKeywordElement.getParent(); - assert forStatement != null; - final JSExpression condition = forStatement.getCondition(); - final JSStatement body = forStatement.getBody(); - final String bodyText; - if (body == null) { - bodyText = ""; - } else { - bodyText = body.getText(); - } - @NonNls final String whileStatement; - if (condition == null) { - whileStatement = "while(true)" + bodyText; - } - else { - whileStatement = "while(" + condition.getText() + ')' + - bodyText; - } - replaceStatement(forStatement, whileStatement); - } - } - - @Override - public BaseInspectionVisitor buildVisitor() { - return new ForLoopReplaceableByWhileVisitor(); - } - - private class ForLoopReplaceableByWhileVisitor - extends BaseInspectionVisitor { - - @Override public void visitJSForStatement(@Nonnull JSForStatement statement) { - super.visitJSForStatement(statement); - final JSVarStatement varStatement = statement.getVarDeclaration(); - if(varStatement!=null) - { - return; - } - final JSExpression initialization = statement.getInitialization(); - if (initialization != null ) { - return; - } - final JSExpression update = statement.getUpdate(); - if (update != null ) { - return; - } - if (m_ignoreLoopsWithoutConditions) { - final JSExpression condition = statement.getCondition(); - if (condition == null) { - return; - } - final String conditionText = condition.getText(); - if ("true".equals(conditionText)) { - return; - } - } - registerStatementError(statement); - } - } + public String getName() + { + return InspectionJSBundle.message( + "for.loop.replaceable.by.while.replace.quickfix"); + } + + @Override + public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException + { + final PsiElement forKeywordElement = descriptor.getPsiElement(); + final JSForStatement forStatement = + (JSForStatement) forKeywordElement.getParent(); + assert forStatement != null; + final JSExpression condition = forStatement.getCondition(); + final JSStatement body = forStatement.getBody(); + final String bodyText; + if(body == null) + { + bodyText = ""; + } + else + { + bodyText = body.getText(); + } + @NonNls final String whileStatement; + if(condition == null) + { + whileStatement = "while(true)" + bodyText; + } + else + { + whileStatement = "while(" + condition.getText() + ')' + + bodyText; + } + replaceStatement(forStatement, whileStatement); + } + } + + @Override + public BaseInspectionVisitor buildVisitor() + { + return new ForLoopReplaceableByWhileVisitor(); + } + + private class ForLoopReplaceableByWhileVisitor extends BaseInspectionVisitor + { + + @Override + public void visitJSForStatement(@Nonnull JSForStatement statement) + { + super.visitJSForStatement(statement); + final JSVarStatement varStatement = statement.getVarDeclaration(); + if(varStatement != null) + { + return; + } + final JSExpression initialization = statement.getInitialization(); + if(initialization != null) + { + return; + } + final JSExpression update = statement.getUpdate(); + if(update != null) + { + return; + } + if(myState.m_ignoreLoopsWithoutConditions) + { + final JSExpression condition = statement.getCondition(); + if(condition == null) + { + return; + } + final String conditionText = condition.getText(); + if("true".equals(conditionText)) + { + return; + } + } + registerStatementError(statement); + } + } } \ No newline at end of file diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/ForLoopReplaceableByWhileJSInspectionState.java b/inspections/src/main/java/com/sixrr/inspectjs/control/ForLoopReplaceableByWhileJSInspectionState.java new file mode 100644 index 00000000..97b399c2 --- /dev/null +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/ForLoopReplaceableByWhileJSInspectionState.java @@ -0,0 +1,41 @@ +package com.sixrr.inspectjs.control; + +import com.sixrr.inspectjs.localize.InspectionJSLocalize; +import consulo.configurable.ConfigurableBuilder; +import consulo.configurable.ConfigurableBuilderState; +import consulo.configurable.UnnamedConfigurable; +import consulo.language.editor.inspection.InspectionToolState; +import consulo.util.xml.serializer.XmlSerializerUtil; + +import javax.annotation.Nullable; + +/** + * @author VISTALL + * @since 13/03/2023 + */ +public class ForLoopReplaceableByWhileJSInspectionState implements InspectionToolState +{ + public boolean m_ignoreLoopsWithoutConditions = false; + + @Nullable + @Override + public UnnamedConfigurable createConfigurable() + { + ConfigurableBuilder builder = ConfigurableBuilder.newBuilder(); + builder.checkBox(InspectionJSLocalize.forLoopReplaceableByWhileIgnoreOption(), () -> m_ignoreLoopsWithoutConditions, b -> m_ignoreLoopsWithoutConditions = b); + return builder.buildUnnamed(); + } + + @Nullable + @Override + public ForLoopReplaceableByWhileJSInspectionState getState() + { + return this; + } + + @Override + public void loadState(ForLoopReplaceableByWhileJSInspectionState state) + { + XmlSerializerUtil.copyBean(state, this); + } +} diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/ForLoopThatDoesntUseLoopVariableJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/ForLoopThatDoesntUseLoopVariableJSInspection.java index 968c3c55..da35a04f 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/ForLoopThatDoesntUseLoopVariableJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/ForLoopThatDoesntUseLoopVariableJSInspection.java @@ -2,6 +2,7 @@ import com.intellij.lang.javascript.psi.*; import com.sixrr.inspectjs.*; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; @@ -24,9 +25,10 @@ public String getGroupDisplayName() { return JSGroupNames.BUGS_GROUP_NAME; } - @Override + @RequiredReadAction + @Override @Nonnull - public String buildErrorString(Object... args) { + public String buildErrorString(Object state, Object... args) { final boolean condition = (Boolean) args[0]; final boolean update = (Boolean) args[1]; if (condition && update) { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/IfStatementWithIdenticalBranchesJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/IfStatementWithIdenticalBranchesJSInspection.java index 0cd4b55d..367f8e91 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/IfStatementWithIdenticalBranchesJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/IfStatementWithIdenticalBranchesJSInspection.java @@ -4,6 +4,7 @@ import com.intellij.lang.javascript.psi.JSStatement; import com.sixrr.inspectjs.*; import com.sixrr.inspectjs.utils.EquivalenceChecker; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.inspection.ProblemDescriptor; import consulo.language.psi.PsiElement; @@ -28,13 +29,14 @@ public String getGroupDisplayName() { return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } - @Override - public String buildErrorString(Object... args) { + @RequiredReadAction + @Override + public String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("ref.statement.with.identical.branches.error.string"); } @Override - public InspectionJSFix buildFix(PsiElement location) { + public InspectionJSFix buildFix(PsiElement location, Object state) { return fix; } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/IfStatementWithTooManyBranchesJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/IfStatementWithTooManyBranchesJSInspection.java index 4d909806..9fded7b8 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/IfStatementWithTooManyBranchesJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/IfStatementWithTooManyBranchesJSInspection.java @@ -2,88 +2,93 @@ import com.intellij.lang.javascript.psi.JSIfStatement; import com.intellij.lang.javascript.psi.JSStatement; -import consulo.annotation.component.ExtensionImpl; -import consulo.language.psi.PsiElement; import com.sixrr.inspectjs.BaseInspectionVisitor; import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; -import com.sixrr.inspectjs.ui.SingleIntegerFieldOptionsPanel; -import javax.annotation.Nonnull; +import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.component.ExtensionImpl; +import consulo.language.editor.inspection.InspectionToolState; +import consulo.language.psi.PsiElement; -import javax.swing.*; +import javax.annotation.Nonnull; @ExtensionImpl -public class IfStatementWithTooManyBranchesJSInspection extends JavaScriptInspection { - private static final int DEFAULT_BRANCH_LIMIT = 3; - - /** - * @noinspection PublicField - */ - public int m_limit = DEFAULT_BRANCH_LIMIT; //this is public for the DefaultJDOMExternalizer thingy - - @Override +public class IfStatementWithTooManyBranchesJSInspection extends JavaScriptInspection +{ + @Override @Nonnull - public String getDisplayName() { - return InspectionJSBundle.message("if.statement.with.too.many.branches.display.name"); - } + public String getDisplayName() + { + return InspectionJSBundle.message("if.statement.with.too.many.branches.display.name"); + } - @Override + @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME; - } + public String getGroupDisplayName() + { + return JSGroupNames.CONTROL_FLOW_GROUP_NAME; + } - private int getLimit() { - return m_limit; - } - - @Override - public JComponent createOptionsPanel() { - return new SingleIntegerFieldOptionsPanel(InspectionJSBundle.message("maximum.number.of.branches.parameter"), - this, "m_limit"); - } + @Nonnull + @Override + public InspectionToolState createStateProvider() + { + return new IfStatementWithTooManyBranchesJSInspectionState(); + } - @Override - protected String buildErrorString(Object... args) { - final JSIfStatement statement = (JSIfStatement) args[0]; - final int branches = calculateNumBranches(statement); - return InspectionJSBundle.message("if.statement.with.too.many.branches.error.string", branches); - } + @RequiredReadAction + @Override + protected String buildErrorString(Object state, Object... args) + { + final JSIfStatement statement = (JSIfStatement) args[0]; + final int branches = calculateNumBranches(statement); + return InspectionJSBundle.message("if.statement.with.too.many.branches.error.string", branches); + } - private static int calculateNumBranches(JSIfStatement statement) { - final JSStatement branch = statement.getElse(); - if (branch == null) { - return 1; - } - if (!(branch instanceof JSIfStatement)) { - return 2; - } - return 1 + calculateNumBranches((JSIfStatement) branch); - } + private static int calculateNumBranches(JSIfStatement statement) + { + final JSStatement branch = statement.getElse(); + if(branch == null) + { + return 1; + } + if(!(branch instanceof JSIfStatement)) + { + return 2; + } + return 1 + calculateNumBranches((JSIfStatement) branch); + } - @Override - public BaseInspectionVisitor buildVisitor() { - return new Visitor(); - } + @Override + public BaseInspectionVisitor buildVisitor() + { + return new Visitor(); + } - private class Visitor extends BaseInspectionVisitor { + private class Visitor extends BaseInspectionVisitor + { - @Override public void visitJSIfStatement(@Nonnull JSIfStatement statement) { - super.visitJSIfStatement(statement); - final PsiElement parent = statement.getParent(); - if (parent instanceof JSIfStatement) { - final JSIfStatement parentStatement = (JSIfStatement) parent; - final JSStatement elseBranch = parentStatement.getElse(); - if (statement.equals(elseBranch)) { - return; - } - } - final int branches = calculateNumBranches(statement); - if (branches <= getLimit()) { - return; - } - registerStatementError(statement, statement); - } - } + @Override + public void visitJSIfStatement(@Nonnull JSIfStatement statement) + { + super.visitJSIfStatement(statement); + final PsiElement parent = statement.getParent(); + if(parent instanceof JSIfStatement) + { + final JSIfStatement parentStatement = (JSIfStatement) parent; + final JSStatement elseBranch = parentStatement.getElse(); + if(statement.equals(elseBranch)) + { + return; + } + } + final int branches = calculateNumBranches(statement); + if(branches <= myState.m_limit) + { + return; + } + registerStatementError(statement, statement); + } + } } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/IfStatementWithTooManyBranchesJSInspectionState.java b/inspections/src/main/java/com/sixrr/inspectjs/control/IfStatementWithTooManyBranchesJSInspectionState.java new file mode 100644 index 00000000..fa1a5c11 --- /dev/null +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/IfStatementWithTooManyBranchesJSInspectionState.java @@ -0,0 +1,44 @@ +package com.sixrr.inspectjs.control; + +import com.sixrr.inspectjs.localize.InspectionJSLocalize; +import consulo.configurable.ConfigurableBuilder; +import consulo.configurable.ConfigurableBuilderState; +import consulo.configurable.UnnamedConfigurable; +import consulo.language.editor.inspection.InspectionToolState; +import consulo.ui.IntBox; +import consulo.ui.Label; +import consulo.util.xml.serializer.XmlSerializerUtil; + +import javax.annotation.Nullable; + +/** + * @author VISTALL + * @since 13/03/2023 + */ +public class IfStatementWithTooManyBranchesJSInspectionState implements InspectionToolState +{ + public int m_limit = 3; + + @Nullable + @Override + public UnnamedConfigurable createConfigurable() + { + ConfigurableBuilder builder = ConfigurableBuilder.newBuilder(); + builder.component(() -> Label.create(InspectionJSLocalize.maximumNumberOfBranchesParameter())); + builder.valueComponent(IntBox::create, () -> m_limit, it -> m_limit = it); + return builder.buildUnnamed(); + } + + @Nullable + @Override + public IfStatementWithTooManyBranchesJSInspectionState getState() + { + return this; + } + + @Override + public void loadState(IfStatementWithTooManyBranchesJSInspectionState state) + { + XmlSerializerUtil.copyBean(state, this); + } +} diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/LabeledStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/LabeledStatementJSInspection.java index b90f18a0..daffe18e 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/LabeledStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/LabeledStatementJSInspection.java @@ -5,6 +5,7 @@ import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import org.jetbrains.annotations.NonNls; import javax.annotation.Nonnull; @@ -25,9 +26,10 @@ public String getGroupDisplayName() { return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } - @Override + @RequiredReadAction + @Override @Nullable - protected String buildErrorString(Object... args) { + protected String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("statement.label.error.string"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/LoopStatementThatDoesntLoopJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/LoopStatementThatDoesntLoopJSInspection.java index a7196334..5f3f4aad 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/LoopStatementThatDoesntLoopJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/LoopStatementThatDoesntLoopJSInspection.java @@ -6,6 +6,7 @@ import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; import com.sixrr.inspectjs.utils.ControlFlowUtils; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import javax.annotation.Nonnull; @@ -31,8 +32,9 @@ public boolean isEnabledByDefault() { return true; } - @Override - public String buildErrorString(Object... args) { + @RequiredReadAction + @Override + public String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("loop.statement.that.doesnt.loop.error.string"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/NestedSwitchStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/NestedSwitchStatementJSInspection.java index 57f0d47d..e5987017 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/NestedSwitchStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/NestedSwitchStatementJSInspection.java @@ -5,6 +5,7 @@ import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.util.PsiTreeUtil; @@ -26,9 +27,10 @@ public String getGroupDisplayName() { return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } - @Override + @RequiredReadAction + @Override @Nullable - protected String buildErrorString(Object... args) { + protected String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("nested.switch.statement.error.string"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/SwitchStatementWithNoDefaultBranchJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/SwitchStatementWithNoDefaultBranchJSInspection.java index 20383a89..f6adddc7 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/SwitchStatementWithNoDefaultBranchJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/SwitchStatementWithNoDefaultBranchJSInspection.java @@ -6,6 +6,7 @@ import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import javax.annotation.Nonnull; @@ -26,9 +27,10 @@ public String getGroupDisplayName() { return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } - @Override + @RequiredReadAction + @Override @Nullable - protected String buildErrorString(Object... args) { + protected String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("switch.statement.with.no.default.branch.error.string"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/TailRecursionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/TailRecursionJSInspection.java index aa902a93..453fd25a 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/TailRecursionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/TailRecursionJSInspection.java @@ -5,6 +5,7 @@ import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; import consulo.language.psi.util.PsiTreeUtil; @@ -27,9 +28,10 @@ public String getDisplayName() { "tail.recursion.display.name"); } - @Override + @RequiredReadAction + @Override @Nonnull - protected String buildErrorString(Object... args) { + protected String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message( "tail.recursion.problem.descriptor"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/TrivialConditionalJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/TrivialConditionalJSInspection.java index 8a572a5f..048a447e 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/TrivialConditionalJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/TrivialConditionalJSInspection.java @@ -5,6 +5,7 @@ import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; import com.sixrr.inspectjs.*; import com.sixrr.inspectjs.utils.BoolUtils; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.inspection.ProblemDescriptor; import consulo.language.psi.PsiElement; @@ -47,8 +48,9 @@ public BaseInspectionVisitor buildVisitor() { return new UnnecessaryConditionalExpressionVisitor(); } - @Override - public String buildErrorString(Object... args) { + @RequiredReadAction + @Override + public String buildErrorString(Object state, Object... args) { final JSConditionalExpression exp = (JSConditionalExpression) args[0]; return InspectionJSBundle.message("trivial.conditional.error.string", exp.getText(), calculateReplacementExpression(exp)); } @@ -66,7 +68,7 @@ private static String calculateReplacementExpression(JSConditionalExpression exp } @Override - public InspectionJSFix buildFix(PsiElement location) { + public InspectionJSFix buildFix(PsiElement location, Object state) { return fix; } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/TrivialIfJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/TrivialIfJSInspection.java index e55ce9e5..b22e97bf 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/TrivialIfJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/TrivialIfJSInspection.java @@ -6,6 +6,7 @@ import com.sixrr.inspectjs.utils.BoolUtils; import com.sixrr.inspectjs.utils.ConditionalUtils; import com.sixrr.inspectjs.utils.EquivalenceChecker; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; import consulo.language.editor.inspection.ProblemDescriptor; @@ -51,13 +52,14 @@ public boolean isEnabledByDefault() { return true; } - @Override - public String buildErrorString(Object... args) { + @RequiredReadAction + @Override + public String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("trivial.if.error.string"); } @Override - public InspectionJSFix buildFix(PsiElement location) { + public InspectionJSFix buildFix(PsiElement location, Object state) { return fix; } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryContinueJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryContinueJSInspection.java index b8c385c0..9596cd6b 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryContinueJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryContinueJSInspection.java @@ -3,6 +3,7 @@ import com.intellij.lang.javascript.psi.*; import com.sixrr.inspectjs.*; import com.sixrr.inspectjs.utils.ControlFlowUtils; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.inspection.ProblemDescriptor; import consulo.language.psi.PsiElement; @@ -32,8 +33,9 @@ public boolean isEnabledByDefault() { return true; } - @Override - public String buildErrorString(Object... args) { + @RequiredReadAction + @Override + public String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("unnecessary.continue.error.string"); } @@ -43,7 +45,7 @@ public BaseInspectionVisitor buildVisitor() { } @Override - public InspectionJSFix buildFix(PsiElement location) { + public InspectionJSFix buildFix(PsiElement location, Object state) { return fix; } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelJSInspection.java index fe4e5de4..b378d41d 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelJSInspection.java @@ -1,5 +1,6 @@ package com.sixrr.inspectjs.control; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.inspection.ProblemDescriptor; import com.intellij.lang.javascript.psi.JSBreakStatement; @@ -38,15 +39,16 @@ public BaseInspectionVisitor buildVisitor() { return new UnusedLabelVisitor(); } - @Override + @RequiredReadAction + @Override @Nonnull - protected String buildErrorString(Object... args) { + protected String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("unnecessary.label.error.string"); } @Override - public InspectionJSFix buildFix(PsiElement location) { + public InspectionJSFix buildFix(PsiElement location, Object state) { return new UnusedLabelFix(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelOnBreakStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelOnBreakStatementJSInspection.java index e8aa60c4..78d60c38 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelOnBreakStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelOnBreakStatementJSInspection.java @@ -5,6 +5,7 @@ import com.intellij.lang.javascript.psi.JSStatement; import com.intellij.lang.javascript.psi.JSSwitchStatement; import com.sixrr.inspectjs.*; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.inspection.ProblemDescriptor; import consulo.language.psi.PsiElement; @@ -38,7 +39,7 @@ public boolean isEnabledByDefault() { } @Override - public InspectionJSFix buildFix(PsiElement location) { + public InspectionJSFix buildFix(PsiElement location, Object state) { return fix; } @@ -58,9 +59,10 @@ public void doFix(Project project, ProblemDescriptor descriptor) replaceStatement(breakStatement, "break;"); } } - @Override + @RequiredReadAction + @Override @Nullable - protected String buildErrorString(Object... args) { + protected String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("unnecessary.label.on.break.error.string"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelOnContinueStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelOnContinueStatementJSInspection.java index f00bc386..1f4e8db8 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelOnContinueStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelOnContinueStatementJSInspection.java @@ -4,6 +4,7 @@ import com.intellij.lang.javascript.psi.JSLoopStatement; import com.intellij.lang.javascript.psi.JSStatement; import com.sixrr.inspectjs.*; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.inspection.ProblemDescriptor; import consulo.language.psi.PsiElement; @@ -36,9 +37,10 @@ public boolean isEnabledByDefault() { return true; } - @Override + @RequiredReadAction + @Override @Nullable - protected String buildErrorString(Object... args) { + protected String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("unnecessary.label.on.continue.error.string"); } @@ -48,7 +50,7 @@ public BaseInspectionVisitor buildVisitor() { } @Override - public InspectionJSFix buildFix(PsiElement location) { + public InspectionJSFix buildFix(PsiElement location, Object state) { return fix; } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryReturnJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryReturnJSInspection.java index 8e9fc6bb..e2587272 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryReturnJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryReturnJSInspection.java @@ -3,6 +3,7 @@ import com.intellij.lang.javascript.psi.*; import com.sixrr.inspectjs.*; import com.sixrr.inspectjs.utils.ControlFlowUtils; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.inspection.ProblemDescriptor; import consulo.language.psi.PsiElement; @@ -39,8 +40,9 @@ public boolean isEnabledByDefault() { return true; } - @Override - public String buildErrorString(Object... args) { + @RequiredReadAction + @Override + public String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("unnecessary.return.error.string"); } @@ -50,7 +52,7 @@ public BaseInspectionVisitor buildVisitor() { } @Override - public InspectionJSFix buildFix(PsiElement location) { + public InspectionJSFix buildFix(PsiElement location, Object state) { return fix; } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/dataflow/ReuseOfLocalVariableJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/dataflow/ReuseOfLocalVariableJSInspection.java index cc5f069b..5fe42579 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/dataflow/ReuseOfLocalVariableJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/dataflow/ReuseOfLocalVariableJSInspection.java @@ -6,6 +6,7 @@ import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; import consulo.language.psi.PsiElement; @@ -34,9 +35,10 @@ public String getGroupDisplayName() return JSGroupNames.DATA_FLOW_ISSUES; } + @RequiredReadAction @Override @Nonnull - public String buildErrorString(Object... args) + public String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message( "reuse.of.local.variable.problem.descriptor"); diff --git a/inspections/src/main/java/com/sixrr/inspectjs/dataflow/UnnecessaryLocalVariableJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/dataflow/UnnecessaryLocalVariableJSInspection.java index 54129c1c..daae2e19 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/dataflow/UnnecessaryLocalVariableJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/dataflow/UnnecessaryLocalVariableJSInspection.java @@ -1,339 +1,401 @@ package com.sixrr.inspectjs.dataflow; import com.intellij.lang.javascript.psi.*; -import consulo.annotation.component.ExtensionImpl; -import consulo.language.psi.PsiElement; -import consulo.language.psi.PsiReference; import com.sixrr.inspectjs.BaseInspectionVisitor; import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; -import com.sixrr.inspectjs.ui.SingleCheckboxOptionsPanel; +import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.component.ExtensionImpl; +import consulo.language.editor.inspection.InspectionToolState; +import consulo.language.psi.PsiElement; +import consulo.language.psi.PsiReference; import consulo.language.psi.util.PsiTreeUtil; import javax.annotation.Nonnull; -import javax.swing.*; - @ExtensionImpl -public class UnnecessaryLocalVariableJSInspection extends JavaScriptInspection { - - /** - * @noinspection PublicField - */ - public boolean m_ignoreImmediatelyReturnedVariables = false; - - /** - * @noinspection PublicField - */ - public boolean m_ignoreAnnotatedVariables = false; - - @Override +public class UnnecessaryLocalVariableJSInspection extends JavaScriptInspection +{ + @Override @Nonnull - public String getDisplayName() { - return InspectionJSBundle.message( - "redundant.local.variable.display.name"); - } + public String getDisplayName() + { + return InspectionJSBundle.message( + "redundant.local.variable.display.name"); + } - @Override + @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.DATA_FLOW_ISSUES; - } + public String getGroupDisplayName() + { + return JSGroupNames.DATA_FLOW_ISSUES; + } - @Override - public JComponent createOptionsPanel() { - - return new SingleCheckboxOptionsPanel(InspectionJSBundle.message( - "redundant.local.variable.ignore.option"), this, "m_ignoreImmediatelyReturnedVariables"); - } + @Nonnull + @Override + public InspectionToolState createStateProvider() + { + return new UnnecessaryLocalVariableJSInspectionState(); + } - @Override - public boolean isEnabledByDefault() { - return true; - } + @Override + public boolean isEnabledByDefault() + { + return true; + } - @Override + @RequiredReadAction + @Override @Nonnull - public String buildErrorString(Object... args) { - return InspectionJSBundle.message( - "unnecessary.local.variable.problem.descriptor"); - } - - @Override - public BaseInspectionVisitor buildVisitor() { - return new UnnecessaryLocalVariableVisitor(); - } + public String buildErrorString(Object state, Object... args) + { + return InspectionJSBundle.message( + "unnecessary.local.variable.problem.descriptor"); + } - @Override - protected boolean buildQuickFixesOnlyForOnTheFlyErrors() { - return true; - } + @Override + public BaseInspectionVisitor buildVisitor() + { + return new UnnecessaryLocalVariableVisitor(); + } - private class UnnecessaryLocalVariableVisitor - extends BaseInspectionVisitor { + @Override + protected boolean buildQuickFixesOnlyForOnTheFlyErrors() + { + return true; + } - @Override public void visitJSVarStatement(@Nonnull JSVarStatement varStatement) { - super.visitJSVarStatement(varStatement); - final JSVariable[] variables = varStatement.getVariables(); - for (JSVariable variable : variables) { + private class UnnecessaryLocalVariableVisitor extends BaseInspectionVisitor + { + @Override + public void visitJSVarStatement(@Nonnull JSVarStatement varStatement) + { + super.visitJSVarStatement(varStatement); + final JSVariable[] variables = varStatement.getVariables(); + for(JSVariable variable : variables) + { - if (isCopyVariable(variable)) { - registerVariableError(variable); - } else if (!m_ignoreImmediatelyReturnedVariables && - isImmediatelyReturned(variable)) { - registerVariableError(variable); - } else if (!m_ignoreImmediatelyReturnedVariables && - isImmediatelyThrown(variable)) { - registerVariableError(variable); - } else if (isImmediatelyAssigned(variable)) { - registerVariableError(variable); - } else if (isImmediatelyAssignedAsDeclaration(variable)) { - registerVariableError(variable); - } - } - } + if(isCopyVariable(variable)) + { + registerVariableError(variable); + } + else if(!myState.m_ignoreImmediatelyReturnedVariables && isImmediatelyReturned(variable)) + { + registerVariableError(variable); + } + else if(!myState.m_ignoreImmediatelyReturnedVariables && isImmediatelyThrown(variable)) + { + registerVariableError(variable); + } + else if(isImmediatelyAssigned(variable)) + { + registerVariableError(variable); + } + else if(isImmediatelyAssignedAsDeclaration(variable)) + { + registerVariableError(variable); + } + } + } - private boolean isCopyVariable(JSVariable variable) { - final JSExpression initializer = variable.getInitializer(); - if (initializer == null) { - return false; - } - if (!(initializer instanceof JSReferenceExpression)) { - return false; - } - final JSReferenceExpression reference = - (JSReferenceExpression) initializer; - final PsiElement referent = reference.resolve(); - if (referent == null) { - return false; - } - if (!(referent instanceof JSVariable)) { - return false; - } - final JSBlockStatement containingScope = - PsiTreeUtil.getParentOfType(variable, JSBlockStatement.class); - if (containingScope == null || isClassMember(referent)) { - return false; - } - final VariableAssignedVisitor visitor = - new VariableAssignedVisitor(variable); - containingScope.accept(visitor); - if (visitor.isAssigned()) { - return false; - } - final JSVariable initialization = (JSVariable) referent; - final VariableAssignedVisitor visitor2 = - new VariableAssignedVisitor(initialization); - containingScope.accept(visitor2); - if (visitor2.isAssigned()) return false; + private boolean isCopyVariable(JSVariable variable) + { + final JSExpression initializer = variable.getInitializer(); + if(initializer == null) + { + return false; + } + if(!(initializer instanceof JSReferenceExpression)) + { + return false; + } + final JSReferenceExpression reference = + (JSReferenceExpression) initializer; + final PsiElement referent = reference.resolve(); + if(referent == null) + { + return false; + } + if(!(referent instanceof JSVariable)) + { + return false; + } + final JSBlockStatement containingScope = + PsiTreeUtil.getParentOfType(variable, JSBlockStatement.class); + if(containingScope == null || isClassMember(referent)) + { + return false; + } + final VariableAssignedVisitor visitor = + new VariableAssignedVisitor(variable); + containingScope.accept(visitor); + if(visitor.isAssigned()) + { + return false; + } + final JSVariable initialization = (JSVariable) referent; + final VariableAssignedVisitor visitor2 = + new VariableAssignedVisitor(initialization); + containingScope.accept(visitor2); + if(visitor2.isAssigned()) + { + return false; + } - return !variableIsUsedInInnerFunction(containingScope, variable); - } + return !variableIsUsedInInnerFunction(containingScope, variable); + } - private boolean isClassMember(final PsiElement referent) { - final PsiElement grandParent = referent.getParent().getParent(); - return grandParent instanceof JSClass || (grandParent instanceof JSFile && grandParent.getContext() != null); - } + private boolean isClassMember(final PsiElement referent) + { + final PsiElement grandParent = referent.getParent().getParent(); + return grandParent instanceof JSClass || (grandParent instanceof JSFile && grandParent.getContext() != null); + } - private boolean isImmediatelyReturned(JSVariable variable) { - final JSBlockStatement containingScope = - PsiTreeUtil.getParentOfType(variable, JSBlockStatement.class); - if (containingScope == null) { - return false; - } - final JSVarStatement declarationStatement = - PsiTreeUtil.getParentOfType(variable, - JSVarStatement.class); - if (declarationStatement == null) { - return false; - } - JSStatement nextStatement = null; - final JSStatement[] statements = containingScope.getStatements(); - for (int i = 0; i < statements.length - 1; i++) { - if (statements[i].equals(declarationStatement)) { - nextStatement = statements[i + 1]; - } - } - if (nextStatement == null) { - return false; - } - if (!(nextStatement instanceof JSReturnStatement)) { - return false; - } - final JSReturnStatement returnStatement = - (JSReturnStatement) nextStatement; - final JSExpression returnValue = returnStatement.getExpression(); - if (returnValue == null) { - return false; - } - if (!(returnValue instanceof JSReferenceExpression)) { - return false; - } - final PsiElement referent = ((PsiReference) returnValue).resolve(); - return !(referent == null || !referent.equals(variable)); - } + private boolean isImmediatelyReturned(JSVariable variable) + { + final JSBlockStatement containingScope = + PsiTreeUtil.getParentOfType(variable, JSBlockStatement.class); + if(containingScope == null) + { + return false; + } + final JSVarStatement declarationStatement = + PsiTreeUtil.getParentOfType(variable, + JSVarStatement.class); + if(declarationStatement == null) + { + return false; + } + JSStatement nextStatement = null; + final JSStatement[] statements = containingScope.getStatements(); + for(int i = 0; i < statements.length - 1; i++) + { + if(statements[i].equals(declarationStatement)) + { + nextStatement = statements[i + 1]; + } + } + if(nextStatement == null) + { + return false; + } + if(!(nextStatement instanceof JSReturnStatement)) + { + return false; + } + final JSReturnStatement returnStatement = + (JSReturnStatement) nextStatement; + final JSExpression returnValue = returnStatement.getExpression(); + if(returnValue == null) + { + return false; + } + if(!(returnValue instanceof JSReferenceExpression)) + { + return false; + } + final PsiElement referent = ((PsiReference) returnValue).resolve(); + return !(referent == null || !referent.equals(variable)); + } - private boolean isImmediatelyThrown(JSVariable variable) { - final JSBlockStatement containingScope = - PsiTreeUtil.getParentOfType(variable, JSBlockStatement.class); - if (containingScope == null) { - return false; - } - final JSVarStatement declarationStatement = - PsiTreeUtil.getParentOfType(variable, - JSVarStatement.class); - if (declarationStatement == null) { - return false; - } - JSStatement nextStatement = null; - final JSStatement[] statements = containingScope.getStatements(); - for (int i = 0; i < statements.length - 1; i++) { - if (statements[i].equals(declarationStatement)) { - nextStatement = statements[i + 1]; - } - } - if (nextStatement == null) { - return false; - } - if (!(nextStatement instanceof JSThrowStatement)) { - return false; - } - final JSThrowStatement throwStatement = - (JSThrowStatement) nextStatement; - final JSExpression returnValue = throwStatement.getExpression(); - if (returnValue == null) { - return false; - } - if (!(returnValue instanceof JSReferenceExpression)) { - return false; - } - final PsiElement referent = ((PsiReference) returnValue).resolve(); - return !(referent == null || !referent.equals(variable)); - } + private boolean isImmediatelyThrown(JSVariable variable) + { + final JSBlockStatement containingScope = + PsiTreeUtil.getParentOfType(variable, JSBlockStatement.class); + if(containingScope == null) + { + return false; + } + final JSVarStatement declarationStatement = + PsiTreeUtil.getParentOfType(variable, + JSVarStatement.class); + if(declarationStatement == null) + { + return false; + } + JSStatement nextStatement = null; + final JSStatement[] statements = containingScope.getStatements(); + for(int i = 0; i < statements.length - 1; i++) + { + if(statements[i].equals(declarationStatement)) + { + nextStatement = statements[i + 1]; + } + } + if(nextStatement == null) + { + return false; + } + if(!(nextStatement instanceof JSThrowStatement)) + { + return false; + } + final JSThrowStatement throwStatement = + (JSThrowStatement) nextStatement; + final JSExpression returnValue = throwStatement.getExpression(); + if(returnValue == null) + { + return false; + } + if(!(returnValue instanceof JSReferenceExpression)) + { + return false; + } + final PsiElement referent = ((PsiReference) returnValue).resolve(); + return !(referent == null || !referent.equals(variable)); + } - private boolean isImmediatelyAssigned(JSVariable variable) { - final JSBlockStatement containingScope = - PsiTreeUtil.getParentOfType(variable, JSBlockStatement.class); - if (containingScope == null) { - return false; - } - final JSVarStatement declarationStatement = - PsiTreeUtil.getParentOfType(variable, - JSVarStatement.class); - if (declarationStatement == null) { - return false; - } - JSStatement nextStatement = null; - int followingStatementNumber = 0; - final JSStatement[] statements = containingScope.getStatements(); - for (int i = 0; i < statements.length - 1; i++) { - if (statements[i].equals(declarationStatement)) { - nextStatement = statements[i + 1]; - followingStatementNumber = i + 2; - } - } - if (nextStatement == null) { - return false; - } - if (!(nextStatement instanceof JSExpressionStatement)) { - return false; - } - final JSExpressionStatement expressionStatement = - (JSExpressionStatement) nextStatement; - final JSExpression expression = - expressionStatement.getExpression(); - if (!(expression instanceof JSAssignmentExpression)) { - return false; - } - final JSAssignmentExpression assignmentExpression = - (JSAssignmentExpression) expression; - final JSExpression rhs = assignmentExpression.getROperand(); - if (rhs == null) { - return false; - } - if (!(rhs instanceof JSReferenceExpression)) { - return false; - } - final JSReferenceExpression reference = - (JSReferenceExpression) rhs; - final PsiElement referent = reference.resolve(); - if (referent == null || !referent.equals(variable)) { - return false; - } - final JSExpression lhs = assignmentExpression.getLOperand(); - if (VariableAccessUtils.variableIsUsed(variable, lhs)) { - return false; - } - for (int i = followingStatementNumber; i < statements.length; i++) { - if (VariableAccessUtils.variableIsUsed(variable, - statements[i])) { - return false; - } - } - return true; - } + private boolean isImmediatelyAssigned(JSVariable variable) + { + final JSBlockStatement containingScope = + PsiTreeUtil.getParentOfType(variable, JSBlockStatement.class); + if(containingScope == null) + { + return false; + } + final JSVarStatement declarationStatement = + PsiTreeUtil.getParentOfType(variable, + JSVarStatement.class); + if(declarationStatement == null) + { + return false; + } + JSStatement nextStatement = null; + int followingStatementNumber = 0; + final JSStatement[] statements = containingScope.getStatements(); + for(int i = 0; i < statements.length - 1; i++) + { + if(statements[i].equals(declarationStatement)) + { + nextStatement = statements[i + 1]; + followingStatementNumber = i + 2; + } + } + if(nextStatement == null) + { + return false; + } + if(!(nextStatement instanceof JSExpressionStatement)) + { + return false; + } + final JSExpressionStatement expressionStatement = + (JSExpressionStatement) nextStatement; + final JSExpression expression = + expressionStatement.getExpression(); + if(!(expression instanceof JSAssignmentExpression)) + { + return false; + } + final JSAssignmentExpression assignmentExpression = + (JSAssignmentExpression) expression; + final JSExpression rhs = assignmentExpression.getROperand(); + if(rhs == null) + { + return false; + } + if(!(rhs instanceof JSReferenceExpression)) + { + return false; + } + final JSReferenceExpression reference = + (JSReferenceExpression) rhs; + final PsiElement referent = reference.resolve(); + if(referent == null || !referent.equals(variable)) + { + return false; + } + final JSExpression lhs = assignmentExpression.getLOperand(); + if(VariableAccessUtils.variableIsUsed(variable, lhs)) + { + return false; + } + for(int i = followingStatementNumber; i < statements.length; i++) + { + if(VariableAccessUtils.variableIsUsed(variable, + statements[i])) + { + return false; + } + } + return true; + } - private boolean isImmediatelyAssignedAsDeclaration( - JSVariable variable) { - final JSBlockStatement containingScope = - PsiTreeUtil.getParentOfType(variable, JSBlockStatement.class); - if (containingScope == null) { - return false; - } - final JSVarStatement declarationStatement = - PsiTreeUtil.getParentOfType(variable, - JSVarStatement.class); - if (declarationStatement == null) { - return false; - } - JSStatement nextStatement = null; - int followingStatementNumber = 0; - final JSStatement[] statements = containingScope.getStatements(); - for (int i = 0; i < statements.length - 1; i++) { - if (statements[i].equals(declarationStatement)) { - nextStatement = statements[i + 1]; - followingStatementNumber = i + 2; - } - } - if (nextStatement == null) { - return false; - } - if (!(nextStatement instanceof JSVarStatement)) { - return false; - } - final JSVarStatement declaration = - (JSVarStatement) nextStatement; - final JSVariable[] declarations = declaration.getVariables(); - if (declarations.length != 1) { - return false; - } - final JSExpression rhs = - declarations[0].getInitializer(); - if (rhs == null) { - return false; - } - if (!(rhs instanceof JSReferenceExpression)) { - return false; - } - final PsiElement referent = ((PsiReference) rhs).resolve(); - if (referent == null || !referent.equals(variable)) { - return false; - } - for (int i = followingStatementNumber; i < statements.length; i++) { - if (VariableAccessUtils.variableIsUsed(variable, - statements[i])) { - return false; - } - } - return true; - } + private boolean isImmediatelyAssignedAsDeclaration( + JSVariable variable) + { + final JSBlockStatement containingScope = + PsiTreeUtil.getParentOfType(variable, JSBlockStatement.class); + if(containingScope == null) + { + return false; + } + final JSVarStatement declarationStatement = + PsiTreeUtil.getParentOfType(variable, + JSVarStatement.class); + if(declarationStatement == null) + { + return false; + } + JSStatement nextStatement = null; + int followingStatementNumber = 0; + final JSStatement[] statements = containingScope.getStatements(); + for(int i = 0; i < statements.length - 1; i++) + { + if(statements[i].equals(declarationStatement)) + { + nextStatement = statements[i + 1]; + followingStatementNumber = i + 2; + } + } + if(nextStatement == null) + { + return false; + } + if(!(nextStatement instanceof JSVarStatement)) + { + return false; + } + final JSVarStatement declaration = + (JSVarStatement) nextStatement; + final JSVariable[] declarations = declaration.getVariables(); + if(declarations.length != 1) + { + return false; + } + final JSExpression rhs = + declarations[0].getInitializer(); + if(rhs == null) + { + return false; + } + if(!(rhs instanceof JSReferenceExpression)) + { + return false; + } + final PsiElement referent = ((PsiReference) rhs).resolve(); + if(referent == null || !referent.equals(variable)) + { + return false; + } + for(int i = followingStatementNumber; i < statements.length; i++) + { + if(VariableAccessUtils.variableIsUsed(variable, + statements[i])) + { + return false; + } + } + return true; + } - private boolean variableIsUsedInInnerFunction(JSBlockStatement block, - JSVariable variable) { - final VariableUsedInInnerFunctionVisitor visitor = new VariableUsedInInnerFunctionVisitor(variable); - block.accept(visitor); - return visitor.isUsedInInnerFunction(); - } - } + private boolean variableIsUsedInInnerFunction(JSBlockStatement block, + JSVariable variable) + { + final VariableUsedInInnerFunctionVisitor visitor = new VariableUsedInInnerFunctionVisitor(variable); + block.accept(visitor); + return visitor.isUsedInInnerFunction(); + } + } } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/dataflow/UnnecessaryLocalVariableJSInspectionState.java b/inspections/src/main/java/com/sixrr/inspectjs/dataflow/UnnecessaryLocalVariableJSInspectionState.java new file mode 100644 index 00000000..4cae1dac --- /dev/null +++ b/inspections/src/main/java/com/sixrr/inspectjs/dataflow/UnnecessaryLocalVariableJSInspectionState.java @@ -0,0 +1,41 @@ +package com.sixrr.inspectjs.dataflow; + +import com.sixrr.inspectjs.localize.InspectionJSLocalize; +import consulo.configurable.ConfigurableBuilder; +import consulo.configurable.ConfigurableBuilderState; +import consulo.configurable.UnnamedConfigurable; +import consulo.language.editor.inspection.InspectionToolState; +import consulo.util.xml.serializer.XmlSerializerUtil; + +import javax.annotation.Nullable; + +/** + * @author VISTALL + * @since 13/03/2023 + */ +public class UnnecessaryLocalVariableJSInspectionState implements InspectionToolState +{ + public boolean m_ignoreImmediatelyReturnedVariables = false; + + @Nullable + @Override + public UnnamedConfigurable createConfigurable() + { + ConfigurableBuilder builder = ConfigurableBuilder.newBuilder(); + builder.checkBox(InspectionJSLocalize.redundantLocalVariableIgnoreOption(), () -> m_ignoreImmediatelyReturnedVariables, b -> m_ignoreImmediatelyReturnedVariables = b); + return builder.buildUnnamed(); + } + + @Nullable + @Override + public UnnecessaryLocalVariableJSInspectionState getState() + { + return this; + } + + @Override + public void loadState(UnnecessaryLocalVariableJSInspectionState state) + { + XmlSerializerUtil.copyBean(state, this); + } +} diff --git a/inspections/src/main/java/com/sixrr/inspectjs/dom/DocumentWriteJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/dom/DocumentWriteJSInspection.java index 02797f91..cc8d1b8b 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/dom/DocumentWriteJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/dom/DocumentWriteJSInspection.java @@ -7,6 +7,7 @@ import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import org.jetbrains.annotations.NonNls; @@ -28,9 +29,10 @@ public String getGroupDisplayName() { return JSGroupNames.DOM_GROUP_NAME; } - @Override + @RequiredReadAction + @Override @Nullable - protected String buildErrorString(Object... args) { + protected String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("document.write.error.string"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/dom/InnerHTMLJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/dom/InnerHTMLJSInspection.java index 93a8791f..48c91a4f 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/dom/InnerHTMLJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/dom/InnerHTMLJSInspection.java @@ -5,6 +5,7 @@ import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import javax.annotation.Nonnull; @@ -25,9 +26,10 @@ public String getGroupDisplayName() { return JSGroupNames.DOM_GROUP_NAME; } - @Override + @RequiredReadAction + @Override @Nullable - protected String buildErrorString(Object... args) { + protected String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("inner.html.error.string"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/dom/PlatformDetectionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/dom/PlatformDetectionJSInspection.java index 46208253..51426728 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/dom/PlatformDetectionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/dom/PlatformDetectionJSInspection.java @@ -6,6 +6,7 @@ import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import javax.annotation.Nonnull; @@ -26,9 +27,10 @@ public String getGroupDisplayName() { return JSGroupNames.DOM_GROUP_NAME; } - @Override + @RequiredReadAction + @Override @Nullable - protected String buildErrorString(Object... args) { + protected String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("platform.detection.error.string"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/dom/XHTMLIncompatabilitiesJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/dom/XHTMLIncompatabilitiesJSInspection.java index e12dcd88..9edfe6cf 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/dom/XHTMLIncompatabilitiesJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/dom/XHTMLIncompatabilitiesJSInspection.java @@ -6,6 +6,7 @@ import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import javax.annotation.Nonnull; @@ -26,9 +27,10 @@ public String getGroupDisplayName() { return JSGroupNames.DOM_GROUP_NAME; } - @Override + @RequiredReadAction + @Override @Nullable - protected String buildErrorString(Object... args) { + protected String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("xhtml.incompatabilities.error.string"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/exception/ContinueOrBreakFromFinallyBlockJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/exception/ContinueOrBreakFromFinallyBlockJSInspection.java index c6343b00..44e07ffe 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/exception/ContinueOrBreakFromFinallyBlockJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/exception/ContinueOrBreakFromFinallyBlockJSInspection.java @@ -8,6 +8,7 @@ import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; import com.sixrr.inspectjs.utils.ControlFlowUtils; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import javax.annotation.Nonnull; @@ -32,8 +33,9 @@ public boolean isEnabledByDefault() { return true; } - @Override - public String buildErrorString(Object... args) { + @RequiredReadAction + @Override + public String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("continue.or.break.inside.finally.block.error.string"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyCatchBlockJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyCatchBlockJSInspection.java index 17899e4a..bd1c0d37 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyCatchBlockJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyCatchBlockJSInspection.java @@ -8,6 +8,7 @@ import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; import com.sixrr.inspectjs.utils.StatementUtils; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; @@ -29,9 +30,10 @@ public String getGroupDisplayName() { return JSGroupNames.ERRORHANDLING_GROUP_NAME; } - @Override + @RequiredReadAction + @Override @Nullable - protected String buildErrorString(Object... args) { + protected String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("empty.catch.block.error.string"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyFinallyBlockJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyFinallyBlockJSInspection.java index 4c58779b..51817209 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyFinallyBlockJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyFinallyBlockJSInspection.java @@ -7,6 +7,7 @@ import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; import com.sixrr.inspectjs.utils.StatementUtils; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import javax.annotation.Nonnull; @@ -27,9 +28,10 @@ public String getGroupDisplayName() { return JSGroupNames.ERRORHANDLING_GROUP_NAME; } - @Override + @RequiredReadAction + @Override @Nullable - protected String buildErrorString(Object... args) { + protected String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("empty.finally.block.error.string"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyTryBlockJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyTryBlockJSInspection.java index d26741bd..fb93f69f 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyTryBlockJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyTryBlockJSInspection.java @@ -7,6 +7,7 @@ import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; import com.sixrr.inspectjs.utils.StatementUtils; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import javax.annotation.Nonnull; @@ -27,9 +28,10 @@ public String getGroupDisplayName() { return JSGroupNames.ERRORHANDLING_GROUP_NAME; } - @Override + @RequiredReadAction + @Override @Nullable - protected String buildErrorString(Object... args) { + protected String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("empty.try.block.error.string"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/exception/ExceptionCaughtLocallyJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/exception/ExceptionCaughtLocallyJSInspection.java index af089953..e8ea66a2 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/exception/ExceptionCaughtLocallyJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/exception/ExceptionCaughtLocallyJSInspection.java @@ -8,6 +8,7 @@ import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.util.PsiTreeUtil; @@ -33,8 +34,9 @@ public boolean isEnabledByDefault() { return true; } - @Override - public String buildErrorString(Object... args) { + @RequiredReadAction + @Override + public String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("exception.caught.locally.error.string"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/exception/ReturnFromFinallyBlockJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/exception/ReturnFromFinallyBlockJSInspection.java index 691aa522..a04ca1f1 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/exception/ReturnFromFinallyBlockJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/exception/ReturnFromFinallyBlockJSInspection.java @@ -6,6 +6,7 @@ import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; import com.sixrr.inspectjs.utils.ControlFlowUtils; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import javax.annotation.Nonnull; @@ -35,8 +36,9 @@ public boolean isEnabledByDefault() { return true; } - @Override - public String buildErrorString(Object... args) { + @RequiredReadAction + @Override + public String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("return.inside.finally.block.error.string"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/exception/ThrowFromFinallyBlockJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/exception/ThrowFromFinallyBlockJSInspection.java index 6480ad37..ebcadcd2 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/exception/ThrowFromFinallyBlockJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/exception/ThrowFromFinallyBlockJSInspection.java @@ -8,6 +8,7 @@ import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; import com.sixrr.inspectjs.utils.ControlFlowUtils; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; @ExtensionImpl @@ -35,8 +36,9 @@ public boolean isEnabledByDefault() { return true; } - @Override - public String buildErrorString(Object... args) { + @RequiredReadAction + @Override + public String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("throw.inside.finally.block.error.string"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/exception/UnusedCatchParameterJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/exception/UnusedCatchParameterJSInspection.java index 2a905bc5..c57f938c 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/exception/UnusedCatchParameterJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/exception/UnusedCatchParameterJSInspection.java @@ -4,96 +4,104 @@ import com.intellij.lang.javascript.psi.JSParameter; import com.intellij.lang.javascript.psi.JSStatement; import com.intellij.lang.javascript.psi.JSTryStatement; -import consulo.annotation.component.ExtensionImpl; -import consulo.language.psi.PsiComment; import com.sixrr.inspectjs.BaseInspectionVisitor; import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; -import com.sixrr.inspectjs.ui.SingleCheckboxOptionsPanel; +import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.component.ExtensionImpl; +import consulo.language.editor.inspection.InspectionToolState; +import consulo.language.psi.PsiComment; import consulo.language.psi.PsiElement; -import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; -import javax.swing.*; +import javax.annotation.Nonnull; @ExtensionImpl -public class UnusedCatchParameterJSInspection extends JavaScriptInspection { - - /** - * @noinspection PublicField - */ - public boolean m_ignoreCatchBlocksWithComments = false; - - @Override +public class UnusedCatchParameterJSInspection extends JavaScriptInspection +{ + @Override @Nonnull - public String getDisplayName() { - return InspectionJSBundle.message( - "unused.catch.parameter.display.name"); - } + public String getDisplayName() + { + return InspectionJSBundle.message( + "unused.catch.parameter.display.name"); + } - @Override + @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.ERRORHANDLING_GROUP_NAME; - } + public String getGroupDisplayName() + { + return JSGroupNames.ERRORHANDLING_GROUP_NAME; + } - @Override - public JComponent createOptionsPanel() { - - return new SingleCheckboxOptionsPanel(InspectionJSBundle.message( - "unused.catch.parameter.ignore.catch.option"), this, - "m_ignoreCatchBlocksWithComments"); - } + @Nonnull + @Override + public InspectionToolState createStateProvider() + { + return new UnusedCatchParameterJSInspectionState(); + } - @Override + @RequiredReadAction + @Override @Nonnull - protected String buildErrorString(Object... args) { - return InspectionJSBundle.message( - "unused.catch.parameter.problem.descriptor"); - } + protected String buildErrorString(Object state, Object... args) + { + return InspectionJSBundle.message( + "unused.catch.parameter.problem.descriptor"); + } - @Override - public BaseInspectionVisitor buildVisitor() { - return new EmptyCatchBlockVisitor(); - } + @Override + public BaseInspectionVisitor buildVisitor() + { + return new EmptyCatchBlockVisitor(); + } - private class EmptyCatchBlockVisitor extends BaseInspectionVisitor { + private class EmptyCatchBlockVisitor extends BaseInspectionVisitor + { - @Override public void visitJSTryStatement(@Nonnull JSTryStatement statement) { - super.visitJSTryStatement(statement); - final JSCatchBlock jsCatchBlock = statement.getCatchBlock(); - if(jsCatchBlock == null) - { - return; - } - checkCatchSection(jsCatchBlock); - } + @Override + public void visitJSTryStatement(@Nonnull JSTryStatement statement) + { + super.visitJSTryStatement(statement); + final JSCatchBlock jsCatchBlock = statement.getCatchBlock(); + if(jsCatchBlock == null) + { + return; + } + checkCatchSection(jsCatchBlock); + } - private void checkCatchSection(JSCatchBlock section) { - final JSParameter param = section.getParameter(); - final JSStatement block = section.getStatement(); - if (param == null || block == null) { - return; - } - @NonNls final String paramName = param.getName(); - if ("ignore".equals(paramName) || "ignored".equals(paramName)) { - return; - } - if (m_ignoreCatchBlocksWithComments) { - final PsiElement[] children = block.getChildren(); - for (final PsiElement child : children) { - if (child instanceof PsiComment) { - return; - } - } - } - final CatchParameterUsedVisitor visitor = - new CatchParameterUsedVisitor(param); - block.accept(visitor); - if (!visitor.isUsed()) { - registerVariableError(param); - } - } - } + private void checkCatchSection(JSCatchBlock section) + { + final JSParameter param = section.getParameter(); + final JSStatement block = section.getStatement(); + if(param == null || block == null) + { + return; + } + final String paramName = param.getName(); + if("ignore".equals(paramName) || "ignored".equals(paramName)) + { + return; + } + if(myState.m_ignoreCatchBlocksWithComments) + { + final PsiElement[] children = block.getChildren(); + for(final PsiElement child : children) + { + if(child instanceof PsiComment) + { + return; + } + } + } + final CatchParameterUsedVisitor visitor = + new CatchParameterUsedVisitor(param); + block.accept(visitor); + if(!visitor.isUsed()) + { + registerVariableError(param); + } + } + } } \ No newline at end of file diff --git a/inspections/src/main/java/com/sixrr/inspectjs/exception/UnusedCatchParameterJSInspectionState.java b/inspections/src/main/java/com/sixrr/inspectjs/exception/UnusedCatchParameterJSInspectionState.java new file mode 100644 index 00000000..45c18657 --- /dev/null +++ b/inspections/src/main/java/com/sixrr/inspectjs/exception/UnusedCatchParameterJSInspectionState.java @@ -0,0 +1,41 @@ +package com.sixrr.inspectjs.exception; + +import com.sixrr.inspectjs.localize.InspectionJSLocalize; +import consulo.configurable.ConfigurableBuilder; +import consulo.configurable.ConfigurableBuilderState; +import consulo.configurable.UnnamedConfigurable; +import consulo.language.editor.inspection.InspectionToolState; +import consulo.util.xml.serializer.XmlSerializerUtil; + +import javax.annotation.Nullable; + +/** + * @author VISTALL + * @since 13/03/2023 + */ +public class UnusedCatchParameterJSInspectionState implements InspectionToolState +{ + public boolean m_ignoreCatchBlocksWithComments = false; + + @Nullable + @Override + public UnnamedConfigurable createConfigurable() + { + ConfigurableBuilder builder = ConfigurableBuilder.newBuilder(); + builder.checkBox(InspectionJSLocalize.unusedCatchParameterIgnoreCatchOption(), () -> m_ignoreCatchBlocksWithComments, b -> m_ignoreCatchBlocksWithComments = b); + return builder.buildUnnamed(); + } + + @Nullable + @Override + public UnusedCatchParameterJSInspectionState getState() + { + return this; + } + + @Override + public void loadState(UnusedCatchParameterJSInspectionState state) + { + XmlSerializerUtil.copyBean(state, this); + } +} diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/CyclomaticComplexityJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/CyclomaticComplexityJSInspection.java index 42696b8f..edd04b06 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/CyclomaticComplexityJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/CyclomaticComplexityJSInspection.java @@ -5,13 +5,16 @@ import com.sixrr.inspectjs.BaseInspectionVisitor; import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; +import com.sixrr.inspectjs.JavaScriptInspection; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.language.editor.inspection.InspectionToolState; import consulo.language.psi.PsiElement; import javax.annotation.Nonnull; @ExtensionImpl -public class CyclomaticComplexityJSInspection extends FunctionMetricsInspection +public class CyclomaticComplexityJSInspection extends JavaScriptInspection { @Override @Nonnull @@ -34,20 +37,16 @@ public String getGroupDisplayName() return JSGroupNames.FUNCTIONMETRICS_GROUP_NAME; } + @Nonnull @Override - protected int getDefaultLimit() - { - return 10; - } - - @Override - protected String getConfigurationLabel() + public InspectionToolState createStateProvider() { - return InspectionJSBundle.message("function.complexity.limit.parameter"); + return new CyclomaticComplexityJSInspectionState(); } + @RequiredReadAction @Override - public String buildErrorString(Object... args) + public String buildErrorString(Object state, Object... args) { final JSFunction function = (JSFunction) ((PsiElement) args[0]).getParent(); assert function != null; @@ -72,7 +71,7 @@ public BaseInspectionVisitor buildVisitor() return new Visitor(); } - private class Visitor extends BaseInspectionVisitor + private class Visitor extends BaseInspectionVisitor { @Override @@ -87,7 +86,7 @@ public void visitJSFunctionDeclaration(@Nonnull JSFunction function) lastChild.accept(visitor); final int complexity = visitor.getComplexity(); - if(complexity <= getLimit()) + if(complexity <= myState.getLimit()) { return; } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/CyclomaticComplexityJSInspectionState.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/CyclomaticComplexityJSInspectionState.java new file mode 100644 index 00000000..285b0b20 --- /dev/null +++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/CyclomaticComplexityJSInspectionState.java @@ -0,0 +1,16 @@ +package com.sixrr.inspectjs.functionmetrics; + +import com.sixrr.inspectjs.localize.InspectionJSLocalize; +import consulo.language.editor.inspection.InspectionToolState; + +/** + * @author VISTALL + * @since 13/03/2023 + */ +public class CyclomaticComplexityJSInspectionState extends FunctionMetricsInspectionState implements InspectionToolState +{ + public CyclomaticComplexityJSInspectionState() + { + super(10, InspectionJSLocalize.overlyComplexFunctionDisplayName()); + } +} diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionMetricsInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionMetricsInspection.java deleted file mode 100644 index 64e7c827..00000000 --- a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionMetricsInspection.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.sixrr.inspectjs.functionmetrics; - -import com.sixrr.inspectjs.JavaScriptInspection; -import com.sixrr.inspectjs.ui.SingleIntegerFieldOptionsPanel; - -import javax.swing.*; - -public abstract class FunctionMetricsInspection extends JavaScriptInspection { - @SuppressWarnings({"PublicField"}) - public int m_limit = getDefaultLimit(); - - protected abstract int getDefaultLimit(); - - protected abstract String getConfigurationLabel(); - - protected int getLimit() { - return m_limit; - } - - @Override - public JComponent createOptionsPanel() { - final String configurationLabel = getConfigurationLabel(); - return new SingleIntegerFieldOptionsPanel(configurationLabel, this, "m_limit"); - } -} diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionMetricsInspectionState.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionMetricsInspectionState.java new file mode 100644 index 00000000..9863a898 --- /dev/null +++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionMetricsInspectionState.java @@ -0,0 +1,52 @@ +package com.sixrr.inspectjs.functionmetrics; + +import consulo.configurable.ConfigurableBuilder; +import consulo.configurable.ConfigurableBuilderState; +import consulo.configurable.UnnamedConfigurable; +import consulo.localize.LocalizeValue; +import consulo.ui.IntBox; +import consulo.ui.Label; +import consulo.util.xml.serializer.XmlSerializerUtil; +import consulo.util.xml.serializer.annotation.Transient; + +/** + * @author VISTALL + * @since 13/03/2023 + */ +public class FunctionMetricsInspectionState> +{ + @Transient + private final LocalizeValue myLabelText; + + public int m_limit; + + public FunctionMetricsInspectionState(int m_limit, LocalizeValue labelText) + { + this.m_limit = m_limit; + myLabelText = labelText; + } + + public int getLimit() + { + return m_limit; + } + + public UnnamedConfigurable createConfigurable() + { + ConfigurableBuilder builder = ConfigurableBuilder.newBuilder(); + builder.component(() -> Label.create(myLabelText)); + builder.valueComponent(IntBox::create, () -> m_limit, it -> m_limit = it); + return builder.buildUnnamed(); + } + + @SuppressWarnings("unchecked") + public T getState() + { + return (T) this; + } + + public void loadState(T state) + { + XmlSerializerUtil.copyBean(state, this); + } +} diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleLoopsJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleLoopsJSInspection.java index ecebfcac..bbc1870d 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleLoopsJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleLoopsJSInspection.java @@ -2,6 +2,7 @@ import com.intellij.lang.javascript.psi.JSBlockStatement; import com.intellij.lang.javascript.psi.JSFunction; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; import com.sixrr.inspectjs.BaseInspectionVisitor; @@ -25,8 +26,9 @@ public String getGroupDisplayName() { return JSGroupNames.FUNCTIONMETRICS_GROUP_NAME; } - @Override - public String buildErrorString(Object... args) { + @RequiredReadAction + @Override + public String buildErrorString(Object state, Object... args) { final JSFunction function = (JSFunction) ((PsiElement) args[0]).getParent(); assert function != null; final LoopCountVisitor visitor = new LoopCountVisitor(); diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleReturnPointsJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleReturnPointsJSInspection.java index 0e2766b3..ba86e358 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleReturnPointsJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleReturnPointsJSInspection.java @@ -3,6 +3,7 @@ import com.intellij.lang.javascript.psi.*; import com.sixrr.inspectjs.*; import com.sixrr.inspectjs.utils.ControlFlowUtils; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; @@ -23,8 +24,9 @@ public String getGroupDisplayName() { return JSGroupNames.FUNCTIONMETRICS_GROUP_NAME; } - @Override - public String buildErrorString(Object... args) { + @RequiredReadAction + @Override + public String buildErrorString(Object state, Object... args) { final JSFunction function = (JSFunction) ((PsiElement) args[0]).getParent(); assert function != null; final int returnPointCount = countReturnPoints(function); diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/NestingDepthJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/NestingDepthJSInspection.java index 858b12f8..4487fa90 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/NestingDepthJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/NestingDepthJSInspection.java @@ -1,74 +1,88 @@ package com.sixrr.inspectjs.functionmetrics; import com.intellij.lang.javascript.psi.JSFunction; -import consulo.annotation.component.ExtensionImpl; -import consulo.language.psi.PsiElement; import com.sixrr.inspectjs.BaseInspectionVisitor; import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; +import com.sixrr.inspectjs.JavaScriptInspection; +import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.component.ExtensionImpl; +import consulo.language.editor.inspection.InspectionToolState; +import consulo.language.psi.PsiElement; + import javax.annotation.Nonnull; @ExtensionImpl -public class NestingDepthJSInspection extends FunctionMetricsInspection { - @Override +public class NestingDepthJSInspection extends JavaScriptInspection +{ + @Override @Nonnull - public String getID() { - return "OverlyNestedFunctionJS"; - } + public String getID() + { + return "OverlyNestedFunctionJS"; + } - @Override + @Override @Nonnull - public String getDisplayName() { - return InspectionJSBundle.message("overly.nested.function.display.name"); - } + public String getDisplayName() + { + return InspectionJSBundle.message("overly.nested.function.display.name"); + } - @Override + @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.FUNCTIONMETRICS_GROUP_NAME; - } - - @Override - protected int getDefaultLimit() { - return 5; - } + public String getGroupDisplayName() + { + return JSGroupNames.FUNCTIONMETRICS_GROUP_NAME; + } - @Override - protected String getConfigurationLabel() { - return InspectionJSBundle.message("nesting.depth.limit"); - } + @Nonnull + @Override + public InspectionToolState createStateProvider() + { + return new NestingDepthJSInspectionState(); + } - @Override - public String buildErrorString(Object... args) { - final JSFunction function = (JSFunction) ((PsiElement) args[0]).getParent(); - assert function != null; - final NestingDepthVisitor visitor = new NestingDepthVisitor(); - function.accept(visitor); - final int nestingDepth = visitor.getMaximumDepth(); - if (functionHasIdentifier(function)) { - return InspectionJSBundle.message("function.is.overly.nested.error.string", nestingDepth); - } - else { - return InspectionJSBundle.message("anonymous.function.is.overly.nested.error.string", nestingDepth); - } - } + @RequiredReadAction + @Override + public String buildErrorString(Object state, Object... args) + { + final JSFunction function = (JSFunction) ((PsiElement) args[0]).getParent(); + assert function != null; + final NestingDepthVisitor visitor = new NestingDepthVisitor(); + function.accept(visitor); + final int nestingDepth = visitor.getMaximumDepth(); + if(functionHasIdentifier(function)) + { + return InspectionJSBundle.message("function.is.overly.nested.error.string", nestingDepth); + } + else + { + return InspectionJSBundle.message("anonymous.function.is.overly.nested.error.string", nestingDepth); + } + } - @Override - public BaseInspectionVisitor buildVisitor() { - return new Visitor(); - } + @Override + public BaseInspectionVisitor buildVisitor() + { + return new Visitor(); + } - private class Visitor extends BaseInspectionVisitor { + private class Visitor extends BaseInspectionVisitor + { - @Override public void visitJSFunctionDeclaration(@Nonnull JSFunction function) { - final NestingDepthVisitor visitor = new NestingDepthVisitor(); - function.accept(visitor); - final int count = visitor.getMaximumDepth(); + @Override + public void visitJSFunctionDeclaration(@Nonnull JSFunction function) + { + final NestingDepthVisitor visitor = new NestingDepthVisitor(); + function.accept(visitor); + final int count = visitor.getMaximumDepth(); - if (count <= getLimit()) { - return; - } - registerFunctionError(function); - } - } + if(count <= myState.getLimit()) + { + return; + } + registerFunctionError(function); + } + } } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/NestingDepthJSInspectionState.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/NestingDepthJSInspectionState.java new file mode 100644 index 00000000..d181bc3f --- /dev/null +++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/NestingDepthJSInspectionState.java @@ -0,0 +1,16 @@ +package com.sixrr.inspectjs.functionmetrics; + +import com.sixrr.inspectjs.localize.InspectionJSLocalize; +import consulo.language.editor.inspection.InspectionToolState; + +/** + * @author VISTALL + * @since 13/03/2023 + */ +public class NestingDepthJSInspectionState extends FunctionMetricsInspectionState implements InspectionToolState +{ + public NestingDepthJSInspectionState() + { + super(5, InspectionJSLocalize.nestingDepthLimit()); + } +} diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/ParametersPerFunctionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/ParametersPerFunctionJSInspection.java index 910ed6c2..8e3c2b11 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/ParametersPerFunctionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/ParametersPerFunctionJSInspection.java @@ -6,77 +6,93 @@ import com.sixrr.inspectjs.BaseInspectionVisitor; import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; +import com.sixrr.inspectjs.JavaScriptInspection; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.language.editor.inspection.InspectionToolState; import consulo.language.psi.PsiElement; import javax.annotation.Nonnull; @ExtensionImpl -public class ParametersPerFunctionJSInspection extends FunctionMetricsInspection { - @Override +public class ParametersPerFunctionJSInspection extends JavaScriptInspection +{ + @Override @Nonnull - public String getID() { - return "OverlyComplexFunctionJS"; - } + public String getID() + { + return "OverlyComplexFunctionJS"; + } - @Override + @Override @Nonnull - public String getDisplayName() { - return InspectionJSBundle.message("function.with.too.many.parameters.display.name"); - } + public String getDisplayName() + { + return InspectionJSBundle.message("function.with.too.many.parameters.display.name"); + } - @Override + @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.FUNCTIONMETRICS_GROUP_NAME; - } + public String getGroupDisplayName() + { + return JSGroupNames.FUNCTIONMETRICS_GROUP_NAME; + } - @Override - protected int getDefaultLimit() { - return 5; - } - - @Override - protected String getConfigurationLabel() { - return InspectionJSBundle.message("function.parameter.limit"); - } + @Nonnull + @Override + public InspectionToolState createStateProvider() + { + return new ParametersPerFunctionJSInspectionState(); + } - @Override - public String buildErrorString(Object... args) { - final JSFunction function = (JSFunction) ((PsiElement) args[0]).getParent(); - assert function != null; - final JSParameterList parameterList = function.getParameterList(); - final JSParameter[] parameters = parameterList.getParameters(); - final int numParameters = parameters.length; - if (functionHasIdentifier(function)) { - return InspectionJSBundle.message("function.has.too.many.parameters.error.string", numParameters); - } else { - return InspectionJSBundle.message("anonymous.function.has.too.many.parameters.error.string", numParameters); - } - } + @RequiredReadAction + @Override + public String buildErrorString(Object state, Object... args) + { + final JSFunction function = (JSFunction) ((PsiElement) args[0]).getParent(); + assert function != null; + final JSParameterList parameterList = function.getParameterList(); + final JSParameter[] parameters = parameterList.getParameters(); + final int numParameters = parameters.length; + if(functionHasIdentifier(function)) + { + return InspectionJSBundle.message("function.has.too.many.parameters.error.string", numParameters); + } + else + { + return InspectionJSBundle.message("anonymous.function.has.too.many.parameters.error.string", numParameters); + } + } - @Override - public BaseInspectionVisitor buildVisitor() { - return new Visitor(); - } + @Override + public BaseInspectionVisitor buildVisitor() + { + return new Visitor(); + } - private class Visitor extends BaseInspectionVisitor { + private class Visitor extends BaseInspectionVisitor + { - @Override public void visitJSFunctionDeclaration(@Nonnull JSFunction function) { - final JSParameterList parameterList = function.getParameterList(); - if (parameterList == null) { - return; - } - final JSParameter[] parameters = parameterList.getParameters(); - if (parameters == null) { - return; - } - final int numParameters = parameters.length; - if (numParameters <= getLimit()) { - return; - } - registerFunctionError(function); - } - } + @Override + public void visitJSFunctionDeclaration(@Nonnull JSFunction function) + { + final JSParameterList parameterList = function.getParameterList(); + if(parameterList == null) + { + return; + } + final JSParameter[] parameters = parameterList.getParameters(); + if(parameters == null) + { + return; + } + final int numParameters = parameters.length; + if(numParameters <= myState.getLimit()) + { + return; + } + registerFunctionError(function); + } + } } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/ParametersPerFunctionJSInspectionState.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/ParametersPerFunctionJSInspectionState.java new file mode 100644 index 00000000..461520e1 --- /dev/null +++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/ParametersPerFunctionJSInspectionState.java @@ -0,0 +1,16 @@ +package com.sixrr.inspectjs.functionmetrics; + +import com.sixrr.inspectjs.localize.InspectionJSLocalize; +import consulo.language.editor.inspection.InspectionToolState; + +/** + * @author VISTALL + * @since 13/03/2023 + */ +public class ParametersPerFunctionJSInspectionState extends FunctionMetricsInspectionState implements InspectionToolState +{ + public ParametersPerFunctionJSInspectionState() + { + super(5, InspectionJSLocalize.functionParameterLimit()); + } +} diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/StatementsPerFunctionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/StatementsPerFunctionJSInspection.java index 31a3a98e..b8092e85 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/StatementsPerFunctionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/StatementsPerFunctionJSInspection.java @@ -5,80 +5,94 @@ import com.sixrr.inspectjs.BaseInspectionVisitor; import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; +import com.sixrr.inspectjs.JavaScriptInspection; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.language.editor.inspection.InspectionToolState; import consulo.language.psi.PsiElement; import javax.annotation.Nonnull; @ExtensionImpl -public class StatementsPerFunctionJSInspection extends FunctionMetricsInspection { - @Override +public class StatementsPerFunctionJSInspection extends JavaScriptInspection +{ + @Override @Nonnull - public String getID() { - return "FunctionTooLongJS"; - } + public String getID() + { + return "FunctionTooLongJS"; + } - @Override + @Override @Nonnull - public String getDisplayName() { - return InspectionJSBundle.message("overly.long.function.display.name"); - } + public String getDisplayName() + { + return InspectionJSBundle.message("overly.long.function.display.name"); + } - @Override + @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.FUNCTIONMETRICS_GROUP_NAME; - } + public String getGroupDisplayName() + { + return JSGroupNames.FUNCTIONMETRICS_GROUP_NAME; + } - @Override - protected int getDefaultLimit() { - return 30; - } - - @Override - protected String getConfigurationLabel() { - return InspectionJSBundle.message("maximum.statements.per.function"); - } + @Nonnull + @Override + public InspectionToolState createStateProvider() + { + return new StatementsPerFunctionJSInspectionState(); + } - @Override - public String buildErrorString(Object... args) { - final JSFunction function = (JSFunction) ((PsiElement) args[0]).getParent(); - assert function != null; - final PsiElement lastChild = function.getLastChild(); - final StatementCountVisitor visitor = new StatementCountVisitor(); - assert lastChild != null; - lastChild.accept(visitor); - final int coupling = visitor.getStatementCount(); - if (functionHasIdentifier(function)) { - return InspectionJSBundle.message("function.is.overly.long.statement.error.string", coupling); - } else { - return InspectionJSBundle.message("anonymous.function.is.overly.long.statement.error.string", coupling); - } - } + @RequiredReadAction + @Override + public String buildErrorString(Object state, Object... args) + { + final JSFunction function = (JSFunction) ((PsiElement) args[0]).getParent(); + assert function != null; + final PsiElement lastChild = function.getLastChild(); + final StatementCountVisitor visitor = new StatementCountVisitor(); + assert lastChild != null; + lastChild.accept(visitor); + final int coupling = visitor.getStatementCount(); + if(functionHasIdentifier(function)) + { + return InspectionJSBundle.message("function.is.overly.long.statement.error.string", coupling); + } + else + { + return InspectionJSBundle.message("anonymous.function.is.overly.long.statement.error.string", coupling); + } + } - @Override - public BaseInspectionVisitor buildVisitor() { - return new Visitor(); - } + @Override + public BaseInspectionVisitor buildVisitor() + { + return new Visitor(); + } - private class Visitor extends BaseInspectionVisitor { + private class Visitor extends BaseInspectionVisitor + { - @Override public void visitJSFunctionDeclaration(@Nonnull JSFunction function) { + @Override + public void visitJSFunctionDeclaration(@Nonnull JSFunction function) + { - final PsiElement lastChild = function.getLastChild(); - if(!(lastChild instanceof JSBlockStatement)) - { - return; - } - final StatementCountVisitor visitor = new StatementCountVisitor(); - lastChild.accept(visitor); - final int statementCount = visitor.getStatementCount(); + final PsiElement lastChild = function.getLastChild(); + if(!(lastChild instanceof JSBlockStatement)) + { + return; + } + final StatementCountVisitor visitor = new StatementCountVisitor(); + lastChild.accept(visitor); + final int statementCount = visitor.getStatementCount(); - if (statementCount <= getLimit()) { - return; - } - registerFunctionError(function); - } - } + if(statementCount <= myState.getLimit()) + { + return; + } + registerFunctionError(function); + } + } } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/StatementsPerFunctionJSInspectionState.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/StatementsPerFunctionJSInspectionState.java new file mode 100644 index 00000000..fe0130ee --- /dev/null +++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/StatementsPerFunctionJSInspectionState.java @@ -0,0 +1,17 @@ +package com.sixrr.inspectjs.functionmetrics; + +import com.sixrr.inspectjs.localize.InspectionJSLocalize; +import consulo.language.editor.inspection.InspectionToolState; +import consulo.localize.LocalizeValue; + +/** + * @author VISTALL + * @since 13/03/2023 + */ +public class StatementsPerFunctionJSInspectionState extends FunctionMetricsInspectionState implements InspectionToolState +{ + public StatementsPerFunctionJSInspectionState() + { + super(30, InspectionJSLocalize.maximumStatementsPerFunction()); + } +} diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/ThreeNegationsPerFunctionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/ThreeNegationsPerFunctionJSInspection.java index 0997029f..7886e5e2 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/ThreeNegationsPerFunctionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/ThreeNegationsPerFunctionJSInspection.java @@ -6,6 +6,7 @@ import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; @@ -32,8 +33,9 @@ public String getGroupDisplayName() { return JSGroupNames.FUNCTIONMETRICS_GROUP_NAME; } - @Override - public String buildErrorString(Object... args) { + @RequiredReadAction + @Override + public String buildErrorString(Object state, Object... args) { final JSFunction function = (JSFunction) ((PsiElement) args[0]).getParent(); assert function != null; final PsiElement lastChild = function.getLastChild(); diff --git a/inspections/src/main/java/com/sixrr/inspectjs/naming/ConventionInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/naming/ConventionInspection.java index 56dc5a25..dc7eb94d 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/naming/ConventionInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/naming/ConventionInspection.java @@ -1,186 +1,143 @@ package com.sixrr.inspectjs.naming; import com.sixrr.inspectjs.JavaScriptInspection; -import com.sixrr.inspectjs.InspectionJSBundle; -import com.sixrr.inspectjs.ui.FormattedTextFieldMacFix; -import com.sixrr.inspectjs.ui.RegExFormatter; -import com.sixrr.inspectjs.ui.RegExInputVerifier; -import consulo.util.xml.serializer.InvalidDataException; -import org.jdom.Element; -import org.jetbrains.annotations.NonNls; -import javax.swing.*; -import javax.swing.event.DocumentEvent; -import javax.swing.event.DocumentListener; -import javax.swing.text.Document; -import javax.swing.text.InternationalFormatter; -import java.awt.*; -import java.text.NumberFormat; import java.util.regex.Matcher; -import java.util.regex.Pattern; -public abstract class ConventionInspection extends JavaScriptInspection { - /** - * @noinspection PublicField - */ - public String m_regex = getDefaultRegex(); // this is public for the DefaultJDomExternalizer - /** - * @noinspection PublicField - */ - public int m_minLength = getDefaultMinLength(); // this is public for the DefaultJDomExternalizer - /** - * @noinspection PublicField - */ - public int m_maxLength = getDefaultMaxLength(); // this is public for the DefaultJDomExternalizer - protected Pattern m_regexPattern = Pattern.compile(m_regex); - - protected abstract String getDefaultRegex(); - - protected abstract int getDefaultMinLength(); - - protected abstract int getDefaultMaxLength(); - - String getRegex() { - return m_regex; - } - - int getMinLength() { - return m_minLength; - } - - int getMaxLength() { - return m_maxLength; - } - - boolean isValid(@NonNls String name) { - final int length = name.length(); - if (length < m_minLength) { - return false; - } - if (length > m_maxLength) { - return false; - } - if ("serialVersionUID".equals(name)) { - return true; - } - final Matcher matcher = m_regexPattern.matcher(name); - return matcher.matches(); - } - - @Override - public void readSettings(Element element) throws InvalidDataException +public abstract class ConventionInspection extends JavaScriptInspection +{ + boolean isValid(String name, ConventionInspectionState state) { - super.readSettings(element); - m_regexPattern = Pattern.compile(m_regex); - } - - private static final int REGEX_COLUMN_COUNT = 25; - - @Override - public JComponent createOptionsPanel() { - final GridBagLayout layout = new GridBagLayout(); - final JPanel panel = new JPanel(layout); - - final JLabel patternLabel = new JLabel(InspectionJSBundle.message("pattern.parameter")); - patternLabel.setHorizontalAlignment(SwingConstants.TRAILING); - final JLabel minLengthLabel = new JLabel(InspectionJSBundle.message("min.length.parameter")); - minLengthLabel.setHorizontalAlignment(SwingConstants.TRAILING); - final JLabel maxLengthLabel = new JLabel(InspectionJSBundle.message("max.length.parameter")); - maxLengthLabel.setHorizontalAlignment(SwingConstants.TRAILING); - - final NumberFormat numberFormat = NumberFormat.getIntegerInstance(); - numberFormat.setParseIntegerOnly(true); - numberFormat.setMinimumIntegerDigits(1); - numberFormat.setMaximumIntegerDigits(2); - final InternationalFormatter formatter = new InternationalFormatter(numberFormat); - formatter.setAllowsInvalid(false); - formatter.setCommitsOnValidEdit(true); - - final JFormattedTextField minLengthField = new JFormattedTextField(formatter); - final Font panelFont = panel.getFont(); - minLengthField.setFont(panelFont); - minLengthField.setValue(m_minLength); - minLengthField.setColumns(2); - FormattedTextFieldMacFix.apply(minLengthField); - - final JFormattedTextField maxLengthField = new JFormattedTextField(formatter); - maxLengthField.setFont(panelFont); - maxLengthField.setValue(m_maxLength); - maxLengthField.setColumns(2); - FormattedTextFieldMacFix.apply(maxLengthField); - - final JFormattedTextField regexField = new JFormattedTextField(new RegExFormatter()); - regexField.setFont(panelFont); - regexField.setValue(m_regexPattern); - regexField.setColumns(REGEX_COLUMN_COUNT); - regexField.setInputVerifier(new RegExInputVerifier()); - regexField.setFocusLostBehavior(JFormattedTextField.COMMIT); - FormattedTextFieldMacFix.apply(regexField); - final DocumentListener listener = new DocumentListener() { - @Override - public void changedUpdate(DocumentEvent e) { - textChanged(); - } - - @Override - public void insertUpdate(DocumentEvent e) { - textChanged(); - } - - @Override - public void removeUpdate(DocumentEvent e) { - textChanged(); - } - - private void textChanged() { - m_regexPattern = (Pattern) regexField.getValue(); - m_regex = m_regexPattern.pattern(); - m_minLength = ((Number) minLengthField.getValue()).intValue(); - m_maxLength = ((Number) maxLengthField.getValue()).intValue(); - } - }; - final Document regexDocument = regexField.getDocument(); - regexDocument.addDocumentListener(listener); - final Document minLengthDocument = minLengthField.getDocument(); - minLengthDocument.addDocumentListener(listener); - final Document maxLengthDocument = maxLengthField.getDocument(); - maxLengthDocument.addDocumentListener(listener); - - final GridBagConstraints constraints = new GridBagConstraints(); - constraints.gridx = 0; - constraints.gridy = 0; - constraints.weightx = 1.0; - constraints.anchor = GridBagConstraints.EAST; - constraints.fill = GridBagConstraints.HORIZONTAL; - panel.add(patternLabel, constraints); - - constraints.gridx = 1; - constraints.gridy = 0; - constraints.gridwidth = 3; - constraints.anchor = GridBagConstraints.WEST; - panel.add(regexField, constraints); - - constraints.gridx = 0; - constraints.gridy = 1; - constraints.gridwidth = 1; - constraints.anchor = GridBagConstraints.EAST; - panel.add(minLengthLabel, constraints); - - constraints.gridx = 1; - constraints.gridy = 1; - constraints.anchor = GridBagConstraints.WEST; - panel.add(minLengthField, constraints); - - constraints.gridx = 2; - constraints.gridy = 1; - constraints.anchor = GridBagConstraints.EAST; - panel.add(maxLengthLabel, constraints); - - constraints.gridx = 3; - constraints.gridy = 1; - constraints.anchor = GridBagConstraints.WEST; - panel.add(maxLengthField, constraints); - - return panel; - } + final int length = name.length(); + if(length < state.m_minLength) + { + return false; + } + if(length > state.m_maxLength) + { + return false; + } + if("serialVersionUID".equals(name)) + { + return true; + } + final Matcher matcher = state.getPattern().matcher(name); + return matcher.matches(); + } + + private static final int REGEX_COLUMN_COUNT = 25; + +// @Override +// public JComponent createOptionsPanel() +// { +// final GridBagLayout layout = new GridBagLayout(); +// final JPanel panel = new JPanel(layout); +// +// final JLabel patternLabel = new JLabel(InspectionJSBundle.message("pattern.parameter")); +// patternLabel.setHorizontalAlignment(SwingConstants.TRAILING); +// final JLabel minLengthLabel = new JLabel(InspectionJSBundle.message("min.length.parameter")); +// minLengthLabel.setHorizontalAlignment(SwingConstants.TRAILING); +// final JLabel maxLengthLabel = new JLabel(InspectionJSBundle.message("max.length.parameter")); +// maxLengthLabel.setHorizontalAlignment(SwingConstants.TRAILING); +// +// final NumberFormat numberFormat = NumberFormat.getIntegerInstance(); +// numberFormat.setParseIntegerOnly(true); +// numberFormat.setMinimumIntegerDigits(1); +// numberFormat.setMaximumIntegerDigits(2); +// final InternationalFormatter formatter = new InternationalFormatter(numberFormat); +// formatter.setAllowsInvalid(false); +// formatter.setCommitsOnValidEdit(true); +// +// final JFormattedTextField minLengthField = new JFormattedTextField(formatter); +// final Font panelFont = panel.getFont(); +// minLengthField.setFont(panelFont); +// minLengthField.setValue(m_minLength); +// minLengthField.setColumns(2); +// FormattedTextFieldMacFix.apply(minLengthField); +// +// final JFormattedTextField maxLengthField = new JFormattedTextField(formatter); +// maxLengthField.setFont(panelFont); +// maxLengthField.setValue(m_maxLength); +// maxLengthField.setColumns(2); +// FormattedTextFieldMacFix.apply(maxLengthField); +// +// final JFormattedTextField regexField = new JFormattedTextField(new RegExFormatter()); +// regexField.setFont(panelFont); +// regexField.setValue(m_regexPattern); +// regexField.setColumns(REGEX_COLUMN_COUNT); +// regexField.setInputVerifier(new RegExInputVerifier()); +// regexField.setFocusLostBehavior(JFormattedTextField.COMMIT); +// FormattedTextFieldMacFix.apply(regexField); +// final DocumentListener listener = new DocumentListener() +// { +// @Override +// public void changedUpdate(DocumentEvent e) +// { +// textChanged(); +// } +// +// @Override +// public void insertUpdate(DocumentEvent e) +// { +// textChanged(); +// } +// +// @Override +// public void removeUpdate(DocumentEvent e) +// { +// textChanged(); +// } +// +// private void textChanged() +// { +// m_regexPattern = (Pattern) regexField.getValue(); +// m_regex = m_regexPattern.pattern(); +// m_minLength = ((Number) minLengthField.getValue()).intValue(); +// m_maxLength = ((Number) maxLengthField.getValue()).intValue(); +// } +// }; +// final Document regexDocument = regexField.getDocument(); +// regexDocument.addDocumentListener(listener); +// final Document minLengthDocument = minLengthField.getDocument(); +// minLengthDocument.addDocumentListener(listener); +// final Document maxLengthDocument = maxLengthField.getDocument(); +// maxLengthDocument.addDocumentListener(listener); +// +// final GridBagConstraints constraints = new GridBagConstraints(); +// constraints.gridx = 0; +// constraints.gridy = 0; +// constraints.weightx = 1.0; +// constraints.anchor = GridBagConstraints.EAST; +// constraints.fill = GridBagConstraints.HORIZONTAL; +// panel.add(patternLabel, constraints); +// +// constraints.gridx = 1; +// constraints.gridy = 0; +// constraints.gridwidth = 3; +// constraints.anchor = GridBagConstraints.WEST; +// panel.add(regexField, constraints); +// +// constraints.gridx = 0; +// constraints.gridy = 1; +// constraints.gridwidth = 1; +// constraints.anchor = GridBagConstraints.EAST; +// panel.add(minLengthLabel, constraints); +// +// constraints.gridx = 1; +// constraints.gridy = 1; +// constraints.anchor = GridBagConstraints.WEST; +// panel.add(minLengthField, constraints); +// +// constraints.gridx = 2; +// constraints.gridy = 1; +// constraints.anchor = GridBagConstraints.EAST; +// panel.add(maxLengthLabel, constraints); +// +// constraints.gridx = 3; +// constraints.gridy = 1; +// constraints.anchor = GridBagConstraints.WEST; +// panel.add(maxLengthField, constraints); +// +// return panel; +// } } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/naming/ConventionInspectionState.java b/inspections/src/main/java/com/sixrr/inspectjs/naming/ConventionInspectionState.java new file mode 100644 index 00000000..fb23cc08 --- /dev/null +++ b/inspections/src/main/java/com/sixrr/inspectjs/naming/ConventionInspectionState.java @@ -0,0 +1,104 @@ +package com.sixrr.inspectjs.naming; + +import com.sixrr.inspectjs.localize.InspectionJSLocalize; +import consulo.configurable.ConfigurableBuilder; +import consulo.configurable.ConfigurableBuilderState; +import consulo.configurable.UnnamedConfigurable; +import consulo.ui.Label; +import consulo.util.xml.serializer.XmlSerializerUtil; +import consulo.util.xml.serializer.annotation.Transient; + +import javax.annotation.Nullable; +import java.util.regex.Pattern; + +/** + * @author VISTALL + * @since 18/03/2023 + */ +public class ConventionInspectionState> +{ + public String m_regex; + + public int m_minLength; + + public int m_maxLength; + + @Transient + private Pattern m_regexPattern; + + public ConventionInspectionState() + { + } + + public ConventionInspectionState(String regex, int minLength, int maxLength) + { + this.m_regex = regex; + this.m_minLength = minLength; + this.m_maxLength = maxLength; + } + + public String getRegex() + { + return m_regex; + } + + public void setRegex(String m_regex) + { + this.m_regex = m_regex; + } + + public int getMinLength() + { + return m_minLength; + } + + public void setMinLength(int m_minLength) + { + this.m_minLength = m_minLength; + } + + public int getMaxLength() + { + return m_maxLength; + } + + public void setMaxLength(int m_maxLength) + { + this.m_maxLength = m_maxLength; + } + + public Pattern getPattern() + { + if(m_regexPattern == null) + { + m_regexPattern = Pattern.compile(m_regex); + } + return m_regexPattern; + } + + @SuppressWarnings("unchecked") + public T getState() + { + return (T) this; + } + + public void loadState(T state) + { + XmlSerializerUtil.copyBean(state, this); + + m_regexPattern = null; + } + + @Nullable + public UnnamedConfigurable createConfigurable() + { + ConfigurableBuilder builder = ConfigurableBuilder.newBuilder(); + builder.component(() -> Label.create(InspectionJSLocalize.patternParameter())); + builder.textBox(() -> m_regex, s -> m_regex = s); + builder.component(() -> Label.create(InspectionJSLocalize.minLengthParameter())); + builder.intBox(() -> m_minLength, value -> m_minLength = value); + builder.component(() -> Label.create(InspectionJSLocalize.maxLengthParameter())); + builder.intBox(() -> m_maxLength, value -> m_maxLength = value); + return builder.buildUnnamed(); + } +} diff --git a/inspections/src/main/java/com/sixrr/inspectjs/naming/FunctionNamingConventionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/naming/FunctionNamingConventionJSInspection.java index ecb88486..0eb6fa2f 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/naming/FunctionNamingConventionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/naming/FunctionNamingConventionJSInspection.java @@ -6,92 +6,100 @@ import com.sixrr.inspectjs.InspectionJSFix; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.fix.RenameFix; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.language.editor.inspection.InspectionToolState; import consulo.language.psi.PsiElement; import consulo.language.psi.util.PsiTreeUtil; -import org.jetbrains.annotations.NonNls; import javax.annotation.Nonnull; @ExtensionImpl -public class FunctionNamingConventionJSInspection extends ConventionInspection { - private static final int DEFAULT_MIN_LENGTH = 4; - private static final int DEFAULT_MAX_LENGTH = 32; - private final RenameFix fix = new RenameFix(); +public class FunctionNamingConventionJSInspection extends ConventionInspection +{ + private final RenameFix fix = new RenameFix(); - @Override @Nonnull - public String getDisplayName() { - return InspectionJSBundle.message("function.naming.convention.display.name"); - } + @Override + public InspectionToolState createStateProvider() + { + return new FunctionNamingConventionJSInspectionState(); + } - @Override + @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.NAMING_CONVENTIONS_GROUP_NAME; - } + public String getDisplayName() + { + return InspectionJSBundle.message("function.naming.convention.display.name"); + } - @Override - protected InspectionJSFix buildFix(PsiElement location) { - return fix; - } - - @Override - protected boolean buildQuickFixesOnlyForOnTheFlyErrors() { - return true; - } - - @Override - public String buildErrorString(Object... args) { - final String functionName = ((PsiElement) args[0]).getText(); + @Override + @Nonnull + public String getGroupDisplayName() + { + return JSGroupNames.NAMING_CONVENTIONS_GROUP_NAME; + } - assert functionName != null; - if (functionName.length() < getMinLength()) { - return InspectionJSBundle.message("function.name.is.too.short.error.string", functionName); - } else if (functionName.length() > getMaxLength()) { - return InspectionJSBundle.message("function.name.is.too.long.error.string", functionName); - } - return InspectionJSBundle.message("function.name.doesnt.match.regex.error.string", functionName, getRegex()); - } + @Override + protected InspectionJSFix buildFix(PsiElement location, Object state) + { + return fix; + } - @Override - @NonNls - protected String getDefaultRegex() { - return "[a-z][A-Za-z]*"; - } + @Override + protected boolean buildQuickFixesOnlyForOnTheFlyErrors() + { + return true; + } - @Override - protected int getDefaultMinLength() { - return DEFAULT_MIN_LENGTH; - } + @RequiredReadAction + @Override + public String buildErrorString(Object state, Object... args) + { + ConventionInspectionState inspectionState = (ConventionInspectionState) state; + final String functionName = ((PsiElement) args[0]).getText(); - @Override - protected int getDefaultMaxLength() { - return DEFAULT_MAX_LENGTH; - } + assert functionName != null; + if(functionName.length() < inspectionState.m_minLength) + { + return InspectionJSBundle.message("function.name.is.too.short.error.string", functionName); + } + else if(functionName.length() > inspectionState.m_maxLength) + { + return InspectionJSBundle.message("function.name.is.too.long.error.string", functionName); + } + return InspectionJSBundle.message("function.name.doesnt.match.regex.error.string", functionName, inspectionState.m_regex); + } - @Override - public BaseInspectionVisitor buildVisitor() { - return new Visitor(); - } + @Override + public BaseInspectionVisitor buildVisitor() + { + return new Visitor(); + } - private class Visitor extends BaseInspectionVisitor { - @Override public void visitJSFunctionDeclaration(JSFunction function) { - super.visitJSFunctionDeclaration(function); + private class Visitor extends BaseInspectionVisitor + { + @Override + public void visitJSFunctionDeclaration(JSFunction function) + { + super.visitJSFunctionDeclaration(function); - final String name = function.getName(); - if (name == null) { - return; - } - if (isValid(name)) { - return; - } - final PsiElement identifier = function.getNameIdentifier(); - if (identifier == null || - !PsiTreeUtil.isAncestor(function, identifier, true)) { - return; - } - registerFunctionError(function); - } - } + final String name = function.getName(); + if(name == null) + { + return; + } + if(isValid(name, myState)) + { + return; + } + final PsiElement identifier = function.getNameIdentifier(); + if(identifier == null || + !PsiTreeUtil.isAncestor(function, identifier, true)) + { + return; + } + registerFunctionError(function); + } + } } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/naming/FunctionNamingConventionJSInspectionState.java b/inspections/src/main/java/com/sixrr/inspectjs/naming/FunctionNamingConventionJSInspectionState.java new file mode 100644 index 00000000..dfd5e765 --- /dev/null +++ b/inspections/src/main/java/com/sixrr/inspectjs/naming/FunctionNamingConventionJSInspectionState.java @@ -0,0 +1,18 @@ +package com.sixrr.inspectjs.naming; + +import consulo.configurable.UnnamedConfigurable; +import consulo.language.editor.inspection.InspectionToolState; + +import javax.annotation.Nullable; + +/** + * @author VISTALL + * @since 18/03/2023 + */ +public class FunctionNamingConventionJSInspectionState extends ConventionInspectionState implements InspectionToolState +{ + public FunctionNamingConventionJSInspectionState() + { + super("[a-z][A-Za-z]*", 4, 32); + } +} diff --git a/inspections/src/main/java/com/sixrr/inspectjs/naming/LocalVariableNamingConventionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/naming/LocalVariableNamingConventionJSInspection.java index 69e4e774..f251b25d 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/naming/LocalVariableNamingConventionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/naming/LocalVariableNamingConventionJSInspection.java @@ -7,89 +7,98 @@ import com.sixrr.inspectjs.InspectionJSFix; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.fix.RenameFix; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.language.editor.inspection.InspectionToolState; import consulo.language.psi.PsiElement; -import org.jetbrains.annotations.NonNls; import javax.annotation.Nonnull; @ExtensionImpl -public class LocalVariableNamingConventionJSInspection extends ConventionInspection { - private static final int DEFAULT_MIN_LENGTH = 1; - private static final int DEFAULT_MAX_LENGTH = 32; - private final RenameFix fix = new RenameFix(); +public class LocalVariableNamingConventionJSInspection extends ConventionInspection +{ + private final RenameFix fix = new RenameFix(); - @Override + @Override @Nonnull - public String getDisplayName() { - return InspectionJSBundle.message("local.variable.naming.convention.display.name"); - } + public String getDisplayName() + { + return InspectionJSBundle.message("local.variable.naming.convention.display.name"); + } - @Override + @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.NAMING_CONVENTIONS_GROUP_NAME; - } + public String getGroupDisplayName() + { + return JSGroupNames.NAMING_CONVENTIONS_GROUP_NAME; + } - @Override - protected InspectionJSFix buildFix(PsiElement location) { - return fix; - } + @Override + protected InspectionJSFix buildFix(PsiElement location, Object state) + { + return fix; + } - @Override - protected boolean buildQuickFixesOnlyForOnTheFlyErrors() { - return true; - } + @Override + protected boolean buildQuickFixesOnlyForOnTheFlyErrors() + { + return true; + } - @Override - public String buildErrorString(Object... args) { - final JSVariable variable = (JSVariable) ((PsiElement)args[0]).getParent(); - assert variable != null; - final String variableName = variable.getName(); - if (variableName.length() < getMinLength()) { - return InspectionJSBundle.message("variable.name.is.too.short.error.string"); - } else if (variableName.length() > getMaxLength()) { - return InspectionJSBundle.message("variable.name.is.too.long.error.string"); - } - return InspectionJSBundle.message("variable.name.doesnt.match.regex.error.string", getRegex()); - } + @RequiredReadAction + @Override + public String buildErrorString(Object state, Object... args) + { + LocalVariableNamingConventionJSInspectionState inspectionState = (LocalVariableNamingConventionJSInspectionState) state; - @Override - @NonNls - protected String getDefaultRegex() { - return "[a-z][A-Za-z]*"; - } + final JSVariable variable = (JSVariable) ((PsiElement) args[0]).getParent(); + assert variable != null; + final String variableName = variable.getName(); + if(variableName.length() < inspectionState.m_minLength) + { + return InspectionJSBundle.message("variable.name.is.too.short.error.string"); + } + else if(variableName.length() > inspectionState.m_maxLength) + { + return InspectionJSBundle.message("variable.name.is.too.long.error.string"); + } + return InspectionJSBundle.message("variable.name.doesnt.match.regex.error.string", inspectionState.m_regex); + } - @Override - protected int getDefaultMinLength() { - return DEFAULT_MIN_LENGTH; - } - - @Override - protected int getDefaultMaxLength() { - return DEFAULT_MAX_LENGTH; - } + @Nonnull + @Override + public InspectionToolState createStateProvider() + { + return new LocalVariableNamingConventionJSInspectionState(); + } - @Override - public BaseInspectionVisitor buildVisitor() { - return new Visitor(); - } + @Override + public BaseInspectionVisitor buildVisitor() + { + return new Visitor(); + } - private class Visitor extends BaseInspectionVisitor { - @Override public void visitJSVarStatement(JSVarStatement jsVarStatement) { - super.visitJSVarStatement(jsVarStatement); - final JSVariable[] variables = jsVarStatement.getVariables(); - for (JSVariable variable : variables) { - final String name = variable.getName(); - if (name == null) { - continue; - } - if (isValid(name)) { - continue; - } - registerVariableError(variable); - } - } + private class Visitor extends BaseInspectionVisitor + { + @Override + public void visitJSVarStatement(JSVarStatement jsVarStatement) + { + super.visitJSVarStatement(jsVarStatement); + final JSVariable[] variables = jsVarStatement.getVariables(); + for(JSVariable variable : variables) + { + final String name = variable.getName(); + if(name == null) + { + continue; + } + if(isValid(name, myState)) + { + continue; + } + registerVariableError(variable); + } + } - } + } } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/naming/LocalVariableNamingConventionJSInspectionState.java b/inspections/src/main/java/com/sixrr/inspectjs/naming/LocalVariableNamingConventionJSInspectionState.java new file mode 100644 index 00000000..5ecc0c09 --- /dev/null +++ b/inspections/src/main/java/com/sixrr/inspectjs/naming/LocalVariableNamingConventionJSInspectionState.java @@ -0,0 +1,15 @@ +package com.sixrr.inspectjs.naming; + +import consulo.language.editor.inspection.InspectionToolState; + +/** + * @author VISTALL + * @since 18/03/2023 + */ +public class LocalVariableNamingConventionJSInspectionState extends ConventionInspectionState implements InspectionToolState +{ + public LocalVariableNamingConventionJSInspectionState() + { + super("[a-z][A-Za-z]*", 1, 32); + } +} diff --git a/inspections/src/main/java/com/sixrr/inspectjs/naming/ParameterNamingConventionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/naming/ParameterNamingConventionJSInspection.java index 43e8f075..b1da91ed 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/naming/ParameterNamingConventionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/naming/ParameterNamingConventionJSInspection.java @@ -9,92 +9,102 @@ import com.sixrr.inspectjs.InspectionJSFix; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.fix.RenameFix; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.language.editor.inspection.InspectionToolState; import consulo.language.psi.PsiElement; -import org.jetbrains.annotations.NonNls; import javax.annotation.Nonnull; @ExtensionImpl -public class ParameterNamingConventionJSInspection extends ConventionInspection { - private static final int DEFAULT_MIN_LENGTH = 1; - private static final int DEFAULT_MAX_LENGTH = 32; - private final RenameFix fix = new RenameFix(); +public class ParameterNamingConventionJSInspection extends ConventionInspection +{ + private final RenameFix fix = new RenameFix(); - @Override + @Override @Nonnull - public String getDisplayName() { - return InspectionJSBundle.message("function.parameter.naming.convention.display.name"); - } + public String getDisplayName() + { + return InspectionJSBundle.message("function.parameter.naming.convention.display.name"); + } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.NAMING_CONVENTIONS_GROUP_NAME; - } + @Override + public InspectionToolState createStateProvider() + { + return new ParameterNamingConventionJSInspectionState(); + } - @Override - protected InspectionJSFix buildFix(PsiElement location) { - return fix; - } - - @Override - protected boolean buildQuickFixesOnlyForOnTheFlyErrors() { - return true; - } + @Override + @Nonnull + public String getGroupDisplayName() + { + return JSGroupNames.NAMING_CONVENTIONS_GROUP_NAME; + } - @Override - public String buildErrorString(Object... args) { - final JSParameter parameter = (JSParameter) ((PsiElement) args[0]).getParent(); - assert parameter != null; - final String parameterName = parameter.getName(); - if (parameterName.length() < getMinLength()) { - return InspectionJSBundle.message("parameter.name.is.too.short.error.string"); - } else if (parameterName.length() > getMaxLength()) { - return InspectionJSBundle.message("parameter.name.is.too.long.error.string"); - } - return InspectionJSBundle.message("parameter.name.doesnt.match.regex.error.string", getRegex()); - } + @Override + protected InspectionJSFix buildFix(PsiElement location, Object state) + { + return fix; + } - @Override - @NonNls - protected String getDefaultRegex() { - return "[a-z][A-Za-z]*"; - } + @Override + protected boolean buildQuickFixesOnlyForOnTheFlyErrors() + { + return true; + } - @Override - protected int getDefaultMinLength() { - return DEFAULT_MIN_LENGTH; - } + @RequiredReadAction + @Override + public String buildErrorString(Object state, Object... args) + { + ParameterNamingConventionJSInspectionState inspectionState = (ParameterNamingConventionJSInspectionState) state; - @Override - protected int getDefaultMaxLength() { - return DEFAULT_MAX_LENGTH; - } + final JSParameter parameter = (JSParameter) ((PsiElement) args[0]).getParent(); + assert parameter != null; + final String parameterName = parameter.getName(); + if(parameterName.length() < inspectionState.m_minLength) + { + return InspectionJSBundle.message("parameter.name.is.too.short.error.string"); + } + else if(parameterName.length() > inspectionState.m_maxLength) + { + return InspectionJSBundle.message("parameter.name.is.too.long.error.string"); + } + return InspectionJSBundle.message("parameter.name.doesnt.match.regex.error.string", inspectionState.m_regex); + } - @Override - public BaseInspectionVisitor buildVisitor() { - return new Visitor(); - } + @Override + public BaseInspectionVisitor buildVisitor() + { + return new Visitor(); + } - private class Visitor extends BaseInspectionVisitor { - @Override public void visitJSFunctionDeclaration(JSFunction function) { - super.visitJSFunctionDeclaration(function); - final JSParameterList parameterList = function.getParameterList(); - if (parameterList == null) { - return; - } - final JSParameter[] parameters = parameterList.getParameters(); - for (JSVariable variable : parameters) { - final String name = variable.getName(); - if (name == null) { - continue; - } - if (isValid(name)) { - continue; - } - registerVariableError(variable); - } - } - } + private class Visitor extends BaseInspectionVisitor + { + @Override + public void visitJSFunctionDeclaration(JSFunction function) + { + super.visitJSFunctionDeclaration(function); + final JSParameterList parameterList = function.getParameterList(); + if(parameterList == null) + { + return; + } + final JSParameter[] parameters = parameterList.getParameters(); + for(JSVariable variable : parameters) + { + final String name = variable.getName(); + if(name == null) + { + continue; + } + if(isValid(name, myState)) + { + continue; + } + registerVariableError(variable); + } + } + } } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/naming/ParameterNamingConventionJSInspectionState.java b/inspections/src/main/java/com/sixrr/inspectjs/naming/ParameterNamingConventionJSInspectionState.java new file mode 100644 index 00000000..ae5151c0 --- /dev/null +++ b/inspections/src/main/java/com/sixrr/inspectjs/naming/ParameterNamingConventionJSInspectionState.java @@ -0,0 +1,15 @@ +package com.sixrr.inspectjs.naming; + +import consulo.language.editor.inspection.InspectionToolState; + +/** + * @author VISTALL + * @since 18/03/2023 + */ +public class ParameterNamingConventionJSInspectionState extends ConventionInspectionState implements InspectionToolState +{ + public ParameterNamingConventionJSInspectionState() + { + super("[a-z][A-Za-z]*", 1, 32); + } +} diff --git a/inspections/src/main/java/com/sixrr/inspectjs/style/ChainedEqualityJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/style/ChainedEqualityJSInspection.java index 158514b3..a9a4aeae 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/style/ChainedEqualityJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/style/ChainedEqualityJSInspection.java @@ -7,6 +7,7 @@ import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; @@ -33,9 +34,10 @@ public String getGroupDisplayName() { return JSGroupNames.STYLE_GROUP_NAME; } - @Override + @RequiredReadAction + @Override @Nonnull - public String buildErrorString(Object... args) { + public String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("chained.equality.error.string"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/style/ChainedFunctionCallJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/style/ChainedFunctionCallJSInspection.java index 1fb37eaa..00a8f99f 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/style/ChainedFunctionCallJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/style/ChainedFunctionCallJSInspection.java @@ -8,6 +8,7 @@ import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import javax.annotation.Nonnull; @@ -30,9 +31,10 @@ public String getDisplayName() { "chained.function.call.display.name"); } - @Override + @RequiredReadAction + @Override @Nonnull - protected String buildErrorString(Object... args) { + protected String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message( "chained.function.call.problem.descriptor"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/style/ConstantOnLHSOfComparisonJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/style/ConstantOnLHSOfComparisonJSInspection.java index 2d9cbda9..f656258a 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/style/ConstantOnLHSOfComparisonJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/style/ConstantOnLHSOfComparisonJSInspection.java @@ -5,6 +5,7 @@ import com.intellij.lang.javascript.psi.JSLiteralExpression; import com.sixrr.inspectjs.*; import com.sixrr.inspectjs.utils.ComparisonUtils; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; import consulo.language.editor.inspection.ProblemDescriptor; @@ -36,8 +37,9 @@ public String getGroupDisplayName() { return JSGroupNames.STYLE_GROUP_NAME; } - @Override - public String buildErrorString(Object... args) { + @RequiredReadAction + @Override + public String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("constant.on.left.side.of.comparison.error.string"); } @@ -47,7 +49,7 @@ public BaseInspectionVisitor buildVisitor() { } @Override - public InspectionJSFix buildFix(PsiElement location) { + public InspectionJSFix buildFix(PsiElement location, Object state) { return fix; } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/style/ConstantOnRHSOfComparisonJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/style/ConstantOnRHSOfComparisonJSInspection.java index cf075a8c..6d4d8da3 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/style/ConstantOnRHSOfComparisonJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/style/ConstantOnRHSOfComparisonJSInspection.java @@ -5,6 +5,7 @@ import com.intellij.lang.javascript.psi.JSLiteralExpression; import com.sixrr.inspectjs.*; import com.sixrr.inspectjs.utils.ComparisonUtils; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; import consulo.language.editor.inspection.ProblemDescriptor; @@ -36,8 +37,9 @@ public String getGroupDisplayName() { return JSGroupNames.STYLE_GROUP_NAME; } - @Override - public String buildErrorString(Object... args) { + @RequiredReadAction + @Override + public String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("constant.on.right.side.of.comparison.error.string"); } @@ -47,7 +49,7 @@ public BaseInspectionVisitor buildVisitor() { } @Override - public InspectionJSFix buildFix(PsiElement location) { + public InspectionJSFix buildFix(PsiElement location, Object state) { return fix; } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/style/NestedFunctionCallJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/style/NestedFunctionCallJSInspection.java index 95083709..13b8773c 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/style/NestedFunctionCallJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/style/NestedFunctionCallJSInspection.java @@ -7,6 +7,7 @@ import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; @@ -32,9 +33,10 @@ public String getDisplayName() { "nested.function.call.display.name"); } - @Override + @RequiredReadAction + @Override @Nonnull - protected String buildErrorString(Object... args) { + protected String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message( "nested.function.call.problem.descriptor"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/style/NonBlockStatementBodyJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/style/NonBlockStatementBodyJSInspection.java index a1bf8b65..1ad6f4d1 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/style/NonBlockStatementBodyJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/style/NonBlockStatementBodyJSInspection.java @@ -2,6 +2,7 @@ import com.intellij.lang.javascript.psi.*; import com.sixrr.inspectjs.*; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.inspection.ProblemDescriptor; import consulo.language.psi.PsiElement; @@ -31,8 +32,9 @@ public boolean isEnabledByDefault() { return false; } - @Override - public String buildErrorString(Object... args) { + @RequiredReadAction + @Override + public String buildErrorString(Object state, Object... args) { if (args[0] instanceof JSIfStatement) { return InspectionJSBundle.message("non.block.branch.error.string"); } else { @@ -41,7 +43,7 @@ public String buildErrorString(Object... args) { } @Override - public InspectionJSFix buildFix(PsiElement location) { + public InspectionJSFix buildFix(PsiElement location, Object state) { return fix; } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/style/UnterminatedStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/style/UnterminatedStatementJSInspection.java index 4c74a87a..e85f14ff 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/style/UnterminatedStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/style/UnterminatedStatementJSInspection.java @@ -2,6 +2,7 @@ import com.intellij.lang.javascript.psi.*; import com.sixrr.inspectjs.*; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.inspection.ProblemDescriptor; import consulo.language.psi.PsiElement; @@ -40,9 +41,10 @@ public String getGroupDisplayName() return JSGroupNames.STYLE_GROUP_NAME; } + @RequiredReadAction @Override @Nullable - protected String buildErrorString(Object... args) + protected String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("unterminated.statement.error.string"); } @@ -54,7 +56,7 @@ public BaseInspectionVisitor buildVisitor() } @Override - public InspectionJSFix buildFix(PsiElement location) + public InspectionJSFix buildFix(PsiElement location, Object state) { return fix; } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/validity/BadExpressionStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/validity/BadExpressionStatementJSInspection.java index 0413f83c..c3381bb7 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/validity/BadExpressionStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/validity/BadExpressionStatementJSInspection.java @@ -44,9 +44,10 @@ public boolean isEnabledByDefault() return true; } + @RequiredReadAction @Override @Nullable - protected String buildErrorString(Object... args) + protected String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("expression.statement.is.not.assignment.or.call.error.string"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/validity/DebuggerStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/validity/DebuggerStatementJSInspection.java index 4f8a32a8..797eef67 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/validity/DebuggerStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/validity/DebuggerStatementJSInspection.java @@ -7,6 +7,7 @@ import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import org.jetbrains.annotations.NonNls; @@ -33,9 +34,10 @@ public boolean isEnabledByDefault() { return false; } - @Override + @RequiredReadAction + @Override @Nullable - protected String buildErrorString(Object... args) { + protected String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("debugger.statement.error.string"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/validity/DuplicateCaseLabelJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/validity/DuplicateCaseLabelJSInspection.java index ec62aa00..b227509b 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/validity/DuplicateCaseLabelJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/validity/DuplicateCaseLabelJSInspection.java @@ -8,6 +8,7 @@ import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; import com.sixrr.inspectjs.utils.EquivalenceChecker; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import javax.annotation.Nonnull; @@ -30,8 +31,9 @@ public String getGroupDisplayName() { return JSGroupNames.VALIDITY_GROUP_NAME; } - @Override - public String buildErrorString(Object... args) { + @RequiredReadAction + @Override + public String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("duplicate.case.label.error.string"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/validity/DuplicatePropertyOnObjectJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/validity/DuplicatePropertyOnObjectJSInspection.java index 916f5904..f8c4fbca 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/validity/DuplicatePropertyOnObjectJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/validity/DuplicatePropertyOnObjectJSInspection.java @@ -6,6 +6,7 @@ import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import javax.annotation.Nonnull; @@ -26,8 +27,9 @@ public String getGroupDisplayName() { return JSGroupNames.VALIDITY_GROUP_NAME; } - @Override - public String buildErrorString(Object... args) { + @RequiredReadAction + @Override + public String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("duplicate.object.property.error.string"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/validity/FunctionWithInconsistentReturnsJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/validity/FunctionWithInconsistentReturnsJSInspection.java index 05c56fad..93b88e91 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/validity/FunctionWithInconsistentReturnsJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/validity/FunctionWithInconsistentReturnsJSInspection.java @@ -2,6 +2,7 @@ import com.intellij.lang.javascript.JavaScriptSupportLoader; import com.intellij.lang.javascript.psi.*; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; import consulo.language.psi.util.PsiTreeUtil; @@ -36,9 +37,10 @@ public boolean isEnabledByDefault() return true; } + @RequiredReadAction @Override @Nullable - protected String buildErrorString(Object... args) + protected String buildErrorString(Object state, Object... args) { final JSFunction function = (JSFunction) ((PsiElement) args[0]).getParent(); assert function != null; diff --git a/inspections/src/main/java/com/sixrr/inspectjs/validity/StringLiteralBreaksHTMLJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/validity/StringLiteralBreaksHTMLJSInspection.java index b5ad0083..d375c9a2 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/validity/StringLiteralBreaksHTMLJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/validity/StringLiteralBreaksHTMLJSInspection.java @@ -1,5 +1,6 @@ package com.sixrr.inspectjs.validity; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.javascript.psi.JSSimpleLiteralExpression; import com.sixrr.inspectjs.BaseInspectionVisitor; @@ -29,9 +30,10 @@ public boolean isEnabledByDefault() { return false; } - @Override + @RequiredReadAction + @Override @Nullable - protected String buildErrorString(Object... args) { + protected String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("string.literal.breaks.html.error.string"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/validity/ThisExpressionReferencesGlobalObjectJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/validity/ThisExpressionReferencesGlobalObjectJSInspection.java index b9c00b07..1f5d901c 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/validity/ThisExpressionReferencesGlobalObjectJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/validity/ThisExpressionReferencesGlobalObjectJSInspection.java @@ -8,6 +8,7 @@ import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiFile; import consulo.language.psi.util.PsiTreeUtil; @@ -36,9 +37,10 @@ public boolean isEnabledByDefault() { return true; } - @Override + @RequiredReadAction + @Override @Nullable - protected String buildErrorString(Object... args) { + protected String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("this.expression.references.global.object.error.string"); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/validity/UnreachableCodeJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/validity/UnreachableCodeJSInspection.java index 6559c907..d019f90c 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/validity/UnreachableCodeJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/validity/UnreachableCodeJSInspection.java @@ -7,6 +7,7 @@ import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; import com.sixrr.inspectjs.utils.ControlFlowUtils; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import javax.annotation.Nonnull; @@ -32,9 +33,10 @@ public boolean isEnabledByDefault() { return true; } - @Override + @RequiredReadAction + @Override @Nullable - protected String buildErrorString(Object... args) { + protected String buildErrorString(Object state, Object... args) { return InspectionJSBundle.message("unreachable.code.error.string"); } diff --git a/inspections/src/main/resources/LOCALIZE-LIB/en_US/com.sixrr.inspectjs.InspectionJSLocalize.yaml b/inspections/src/main/resources/LOCALIZE-LIB/en_US/com.sixrr.inspectjs.InspectionJSLocalize.yaml new file mode 100644 index 00000000..83469320 --- /dev/null +++ b/inspections/src/main/resources/LOCALIZE-LIB/en_US/com.sixrr.inspectjs.InspectionJSLocalize.yaml @@ -0,0 +1,556 @@ +result.of.assignment.used.displayName: + text: Result of assignment used +result.of.assignment.expression.used.error.string: + text: 'Result of assignment expression used #loc' +assignment.to.for.loop.parameter.display.name: + text: Assignment to 'for' loop parameter +assignment.to.for.loop.parameter.error.string: + text: 'Assignment to for-loop parameter #ref #loc' +assignment.to.function.parameter.display.name: + text: Assignment to function parameter +assignment.to.function.parameter.error.string: + text: 'Assignment to function parameter ''#ref'' #loc' +nested.assignment.display.name: + text: Nested assignment +nested.assignment.error.string: + text: 'Nested assignment #ref #loc' +assignment.replaceable.with.operator.assignment.display.name: + text: Assignment replaceable with operator assignment +assignment.replaceable.with.operator.assignment.error.string: + text: '#ref could be simplified to {0} #loc' +silly.assignment.display.name: + text: Variable is assigned to itself +silly.assignment.error.string: + text: 'Variable is assigned to itself #loc' +divide.by.zero.display.name: + text: Divide by zero +division.by.zero.error.string: + text: 'Division by zero #loc' +equality.comparison.with.coercion.display.name: + text: Equality comparison which may cause unexpected coercion +equality.comparison.with.coercion.error.string: + text: 'Comparison #ref may cause unexpected type coercion #loc' +equality.comparison.with.coercion.fix: + text: Replace with ''{0}'' +non.short.circuit.boolean.expression.display.name: + text: Non short-circuit boolean expression +non.short.circuit.boolean.expression.error.string: + text: 'Non short-circuit boolean expression #loc' +replace.with.short.circuit.expression.fix.string: + text: Replace with short circuit expression +result.of.object.allocation.ignored.display.name: + text: Result of object allocation ignored +result.of.object.allocation.ignored.error.string: + text: 'Result of new #ref() is ignored #loc' +text.label.in.switch.statement.display.name: + text: Text label in 'switch' statement +text.label.in.switch.statement.error.string: + text: 'Text label #ref: in ''switch'' statement #loc' +anonymous.function.display.name: + text: Anonymous function +anonymous.function.error.string: + text: 'Anonymous #ref #loc' +unnecessary.block.statement.display.name: + text: Unnecessary 'block' statement +comma.expression.display.name: + text: Comma expression +conditional.expression.display.name: + text: Conditional expression +statement.with.empty.body.display.name: + text: Statement with empty body +result.of.increment.or.decrement.used.display.name: + text: Result of increment or decrement used +negated.conditional.expression.display.name: + text: Negated conditional expression +negated.if.statement.display.name: + text: Negated 'if' statement +nested.conditional.expression.display.name: + text: Nested conditional expression +nested.function.display.name: + text: Nested function +octal.integer.display.name: + text: Octal Integer +overly.complex.arithmetic.expression.display.name: + text: Overly complex arithmetic expression +overly.complex.boolean.expression.display.name: + text: Overly complex boolean expression +pointless.arithmetic.expression.display.name: + text: Pointless arithmetic expression +pointless.boolean.expression.display.name: + text: Pointless boolean expression +void.expression.display.name: + text: '''void'' expression' +with.statement.display.name: + text: '''with'' statement' +break.statement.display.name: + text: '''break'' statement' +break.statement.with.label.display.name: + text: '''break'' statement with label' +conditional.expression.with.identical.branches.display.name: + text: Conditional expression with identical branches +constant.conditional.expression.display.name: + text: Constant conditional expression +continue.statement.display.name: + text: '''continue'' statement' +continue.statement.with.label.display.name: + text: '''continue'' statement with label' +default.not.last.case.in.switch.display.name: + text: '''default'' not last case in ''switch''' +duplicate.condition.in.if.statement.display.name: + text: Duplicate condition in 'if' statement +fall.through.in.switch.statement.display.name: + text: Fall-through in 'switch' statement +if.statement.with.identical.branches.display.name: + text: '''if'' statement with identical branches' +if.statement.with.too.many.branches.display.name: + text: '''if'' statement with too many branches' +infinite.loop.statement.display.name: + text: Infinite loop statement +labeled.statement.display.name: + text: Labeled statement +loop.statement.that.doesn.t.loop.display.name: + text: Loop statement that doesn't loop +nested.switch.statement.display.name: + text: Nested 'switch' statement +switch.statement.with.no.default.branch.display.name: + text: '''switch'' statement with no default branch' +redundant.conditional.expression.display.name: + text: Redundant conditional expression +redundant.if.statement.display.name: + text: Redundant 'if' statement +unnecessary.continue.statement.display.name: + text: Unnecessary 'continue' statement +unnecessary.label.display.name: + text: Unnecessary label +unnecessary.label.on.break.statement.display.name: + text: Unnecessary label on 'break' statement +unnecessary.label.on.continue.statement.display.name: + text: Unnecessary label on 'continue' statement +unnecessary.return.statement.display.name: + text: Unnecessary 'return' statement +call.to.document.write.display.name: + text: Call to 'document.write()' +use.of.innerhtml.property.display.name: + text: Use of 'innerHTML' property +platform.detection.display.name: + text: Platform detection +xhtml.incompatibilities.display.name: + text: XHTML incompatibilities +continue.or.break.inside.finally.block.display.name: + text: '''continue'' or ''break'' inside ''finally'' block' +empty.catch.block.display.name: + text: Empty 'catch' block +empty.finally.block.display.name: + text: Empty 'finally' block +empty.try.block.display.name: + text: Empty 'try' block +exception.used.for.local.control.flow.display.name: + text: Exception used for local control-flow +return.inside.finally.block.display.name: + text: '''return'' inside ''finally'' block' +throw.inside.finally.block.display.name: + text: '''throw'' inside ''finally'' block' +overly.complex.function.display.name: + text: Overly complex function +function.with.multiple.loops.display.name: + text: Function with multiple loops +function.with.multiple.return.points.display.name: + text: Function with multiple return points +overly.nested.function.display.name: + text: Overly nested function +nesting.depth.limit: + text: 'Nesting depth limit:' +function.with.too.many.parameters.display.name: + text: Function with too many parameters +function.parameter.limit: + text: 'Function parameter limit:' +overly.long.function.display.name: + text: Overly long function +maximum.statements.per.function: + text: 'Maximum statements per function:' +function.with.more.than.three.negations.display.name: + text: Function with more than three negations +function.naming.convention.display.name: + text: Function naming convention +local.variable.naming.convention.display.name: + text: Local variable naming convention +function.parameter.naming.convention.display.name: + text: Function parameter naming convention +expression.statement.which.is.not.assignment.or.call.display.name: + text: Expression statement which is not assignment or call +debugger.statement.display.name: + text: '''debugger'' statement' +duplicate.case.label.display.name: + text: Duplicate case label +duplicate.property.on.object.literal.display.name: + text: Duplicate property on object literal +function.with.inconsistent.returns.display.name: + text: Function with inconsistent returns +reserved.word.used.as.name.display.name: + text: Reserved word used as name +this.expression.which.references.the.global.object.display.name: + text: '''this'' expression which references the global object' +unreachable.code.display.name: + text: Unreachable code +chained.equality.display.name: + text: Chained equality +constant.on.right.side.of.comparison.display.name: + text: Constant on right side of comparison +constant.on.left.side.of.comparison.display.name: + text: Constant on left side of comparison +non.block.statement.body.display.name: + text: Non-block statement body +unterminated.statement.display.name: + text: Unterminated statement +terminate.statement.fix: + text: Terminate statement +unnecessary.block.statement.error.string: + text: 'Unnecessary block statement #loc' +comma.expression.error.string: + text: 'Comma expression #loc' +conditional.expression.error.string: + text: 'Conditional expression #loc' +statement.has.empty.branch.error.string: + text: '#ref statement has empty branch #loc' +statement.has.empty.body.error.string: + text: '#ref statement has empty body #loc' +include.statement.bodies.that.are.empty.code.blocks.parameter: + text: Include statement bodies that are empty code blocks +result.of.increment.or.decrement.expression.used.error.string: + text: 'Result of increment or decrement expression used #loc' +negated.conditional.expression.error.string: + text: 'Negated conditional expression #loc' +invert.condition.fix: + text: Invert condition +negated.ref.statement.error.string: + text: 'Negated ''#ref'' statement #loc' +invert.if.condition.fix: + text: Invert If Condition +nested.conditional.expression.error.string: + text: 'Nested conditional expression #loc' +nested.function.error.string: + text: 'Nested function ''#ref'' #loc' +nested.anonymous.function.error.string: + text: 'Nested #ref #loc' +include.anonymous.functions.parameter: + text: Include anonymous functions +octal.integer.error.string: + text: 'Octal integer ''#ref'' #loc' +maximum.number.of.terms.parameter: + text: 'Maximum number of terms:' +overly.complex.arithmetic.expression.error.string: + text: 'Overly complex arithmetic expression #loc' +pointless.arithmetic.error.message: + text: '#ref can be replaced with {0} #loc' +simplify.fix: + text: Simplify +pointless.boolean.error.string: + text: '#ref can be simplified to {0} #loc' +void.expression.error.string: + text: '''#ref'' expression #loc' +with.expression.error.string: + text: '''#ref'' statement #loc' +break.statement.error.string: + text: '''#ref'' statement #loc' +break.statement.with.label.error.string: + text: '''#ref'' statement with label #loc' +conditional.expression.with.identical.branches.error.string: + text: 'Conditional expression #ref with identical branches #loc' +constant.conditional.expression.error.string: + text: '#ref can be simplified #loc' +continue.statement.error.string: + text: '''#ref'' statement #loc' +continue.statement.with.label.error.string: + text: '''#ref'' statement with label #loc' +default.branch.not.last.case.in.switch.error.string: + text: '#ref branch not last case in ''switch'' #loc' +duplicate.condition.error.string: + text: 'Duplicate condition #ref #loc' +fall.through.in.switch.statement.error.string: + text: 'Fall-through in ''switch'' statement #loc' +ref.statement.with.identical.branches.error.string: + text: '#ref statement with identical branches #loc' +collapse.if.statement.fix: + text: Collapse 'if' statement +maximum.number.of.branches.parameter: + text: 'Maximum number of branches:' +if.statement.with.too.many.branches.error.string: + text: '''''#ref'''' has too many branches ({0}) #loc' +infinite.loop.error.string: + text: '#ref statement cannot complete without throwing an exception #loc' +statement.label.error.string: + text: 'Statement label ''#ref'' #loc' +loop.statement.that.doesnt.loop.error.string: + text: '#ref statement doesn''t loop #loc' +nested.switch.statement.error.string: + text: 'Nested ''#ref'' statement #loc' +switch.statement.with.no.default.branch.error.string: + text: '''#ref'' statement with no default branch #loc' +trivial.conditional.error.string: + text: '''''{0}'''' can be simplified to ''''{1}'''' #loc' +trivial.if.error.string: + text: '#ref statement can be simplified #loc' +unnecessary.continue.error.string: + text: '#ref is unnecessary as the last statement in a loop #loc' +unnecessary.label.error.string: + text: 'Unnecessary label #ref #loc' +remove.label.fix: + text: Remove label +unnecessary.label.on.break.error.string: + text: '''#ref'' statement with unnecessary label #loc' +unnecessary.label.on.continue.error.string: + text: '''#ref'' statement with unnecessary label #loc' +unnecessary.return.error.string: + text: '#ref is unnecessary as the last statement in a function with no return value #loc' +document.write.error.string: + text: 'Call to ''#ref()'' #loc' +inner.html.error.string: + text: 'use of ''#ref'' property #loc' +platform.detection.error.string: + text: '''#ref'' probably used for platform detection #loc' +xhtml.incompatabilities.error.string: + text: '''#ref'' may produce inconsistent results for XHTML documents #loc' +continue.or.break.inside.finally.block.error.string: + text: '''#ref'' inside ''finally'' block #loc' +empty.catch.block.error.string: + text: 'Empty ''#ref'' block #loc' +empty.finally.block.error.string: + text: 'Empty ''finally'' block #loc' +empty.try.block.error.string: + text: 'Empty ''#ref'' block #loc' +exception.caught.locally.error.string: + text: '''#ref'' of exception caught locally #loc' +return.inside.finally.block.error.string: + text: '''#ref'' inside ''finally'' block #loc' +throw.inside.finally.block.error.string: + text: '''#ref'' inside ''finally'' block #loc' +rename.fix: + text: Rename +rename.to.fix: + text: Rename to ''{0}'' +function.complexity.limit.parameter: + text: 'Function complexity limit:' +function.ref.is.overly.complex.cyclomatic.complexity.error.string: + text: 'function ''''#ref'''' is overly complex (cyclomatic complexity = {0}) #loc' +anonymous.function.is.overly.complex.cyclomatic.complexity.error.string: + text: '#ref is overly complex (cyclomatic complexity = {0}) #loc' +function.contains.multiple.loops.error.string: + text: 'function ''''#ref'''' contains {0} loops #loc' +anonymous.function.contains.multiple.loops.error.string: + text: '#ref contains {0} loops #loc' +function.contains.multiple.return.points.error.string: + text: 'function ''''#ref'''' has {0} return points #loc' +anonymous.function.contains.multiple.return.points.error.string: + text: '#ref has {0} return points #loc' +function.is.overly.nested.error.string: + text: 'function ''''#ref'''' is overly nested (maximum nesting depth = {0}) #loc' +anonymous.function.is.overly.nested.error.string: + text: '#ref is overly nested (maximum nesting depth = {0}) #loc' +function.has.too.many.parameters.error.string: + text: 'function ''''#ref'''' has too many parameters (parameter count = {0}) #loc' +anonymous.function.has.too.many.parameters.error.string: + text: '#ref has too many parameters (parameter count = {0}) #loc' +function.is.overly.long.statement.error.string: + text: 'function ''''#ref'''' is overly long (statement count = {0}) #loc' +anonymous.function.is.overly.long.statement.error.string: + text: '#ref is overly long (statement count = {0}) #loc' +function.contains.too.many.negation.error.string: + text: 'function ''''#ref'''' contains {0} negations #loc' +anonymous.function.contains.too.many.negation.error.string: + text: '#ref contains {0} negations #loc' +function.name.is.too.short.error.string: + text: 'Function name ''''{0}'''' is too short #loc' +function.name.is.too.long.error.string: + text: 'Function name ''''{0}''''is too long #loc' +function.name.doesnt.match.regex.error.string: + text: 'Function name ''''{0}'''' doesn''''t match regex ''''{1}'''' #loc' +variable.name.is.too.short.error.string: + text: 'Variable name ''#ref'' is too short #loc' +variable.name.is.too.long.error.string: + text: 'Variable name ''#ref'' is too long #loc' +variable.name.doesnt.match.regex.error.string: + text: 'Variable name ''''#ref'''' doesn''''t match regex ''''{0}'''' #loc' +parameter.name.is.too.short.error.string: + text: 'Parameter name ''#ref'' is too short #loc' +parameter.name.is.too.long.error.string: + text: 'Parameter name ''#ref'' is too long #loc' +parameter.name.doesnt.match.regex.error.string: + text: 'Parameter name ''''#ref'''' doesn''''t match regex ''''{0}'''' #loc' +chained.equality.error.string: + text: 'Chained equality comparison #ref #loc' +constant.on.left.side.of.comparison.error.string: + text: '#ref: constant on left side of comparison #loc' +constant.on.right.side.of.comparison.error.string: + text: '#ref: constant on right side of comparison #loc' +flip.comparison.fix: + text: Flip comparison +non.block.branch.error.string: + text: '#ref statement has non-block branch #loc' +non.block.body.error.string: + text: '#ref statement has non-block body #loc' +unterminated.statement.error.string: + text: 'Unterminated statement #loc' +expression.statement.is.not.assignment.or.call.error.string: + text: 'Expression statement is not assignment or call #loc' +debugger.statement.error.string: + text: '''#ref'' statement #loc' +duplicate.case.label.error.string: + text: 'Duplicate case label #ref #loc' +duplicate.object.property.error.string: + text: 'Duplicate object property #ref #loc' +function.has.inconsistent.return.points.error.string: + text: 'function ''#ref'' has inconsistent return points #loc' +anonymous.function.has.inconsistent.return.points.error.string: + text: '#ref has inconsistent return points #loc' +reserved.word.used.as.name.error.string: + text: Reserved word '#ref' used as name +this.expression.references.global.object.error.string: + text: 'Top-level ''#ref'' expression #loc' +unreachable.code.error.string: + text: 'Unreachable code #loc' +malformed.naming.pattern.alert: + text: Malformed Naming Pattern +replace.with.operator.assign.fix: + text: Replace = with {0}= +overly.complex.boolean.expression.error.string: + text: 'Overly complex boolean expression #loc' +collapse.conditional.expression.fix: + text: Collapse conditional expression +remove.unnecessary.continue.fix: + text: Remove unnecessary continue +remove.unnecessary.return.fix: + text: Remove unnecessary return +pattern.parameter: + text: 'Pattern:' +min.length.parameter: + text: 'Min Length:' +max.length.parameter: + text: 'Max Length:' +wrap.statement.body.fix: + text: Wrap statement body +error.handling.javascript.group.name: + text: Error handling +control.flow.issues.javascript.group.name: + text: Control flow issues +javascript.validity.issues.group.name: + text: JavaScript validity issues +potentially.confusing.code.constructs.javascript.group.name: + text: Potentially confusing code constructs +javascript.function.metrics.group.name: + text: JavaScript function metrics +assignment.issues.javascript.group.name: + text: Assignment issues +naming.conventions.javascript.group.name: + text: Naming conventions +code.style.issues.javascript.group.name: + text: Code style issues +javascript.dom.issues.group.name: + text: JavaScript DOM issues +probable.bugs.javascript.group.name: + text: Probable Bugs +code.maturity.javascript.group.name: + text: Code Maturity +confusing.floating.point.literal.display.name: + text: Confusing floating point literal +confusing.floating.point.literal.problem.descriptor: + text: 'Confusing floating point literal #ref #loc' +confusing.pluses.or.minuses.display.name: + text: Confusing sequence of '+' or '-' +confusing.pluses.or.minuses.error.string: + text: 'Sequence of ''+'' or ''-'' may change meaning if whitespace removed #loc' +confusing.floating.point.literal.change.quickfix: + text: Change To canonical form +string.literal.breaks.html.display.name: + text: String literal which breaks HTML parsing +string.literal.breaks.html.error.string: + text: 'String literal #ref may break HTML parsers' +for.loop.not.use.loop.variable.display.name: + text: '''for'' loop where update or condition does not use loop variable' +for.loop.not.use.loop.variable.problem.descriptor.condition: + text: '#ref statement has condition which does not use the for loop variable #loc' +for.loop.not.use.loop.variable.problem.descriptor.update: + text: '#ref statement has update which does not use the for loop variable #loc' +for.loop.not.use.loop.variable.problem.descriptor.both.condition.and.update: + text: '#ref statement has condition and update which do not use the for loop variable #loc' +unused.catch.parameter.display.name: + text: Unused 'catch' parameter +unused.catch.parameter.problem.descriptor: + text: 'Unused catch parameter #ref #loc' +unused.catch.parameter.ignore.catch.option: + text: Ignore catch blocks containing comments +tail.recursion.display.name: + text: Tail recursion +tail.recursion.problem.descriptor: + text: 'Tail recursion #loc' +redundant.local.variable.display.name: + text: Redundant local variable +data.flow.issues.javascript.group.name: + text: Data flow issues +bitwise.issues.javascript.group.name: + text: Bitwise operation issues +redundant.local.variable.ignore.option: + text: Ignore immediately returned or thrown variables +unnecessary.local.variable.problem.descriptor: + text: Unnecessary local variable +reuse.of.local.variable.display.name: + text: Reuse of local variable +reuse.of.local.variable.problem.descriptor: + text: 'Reuse of local variable #ref #loc' +infinite.recursion.display.name: + text: Infinite recursion +infinite.recursion.problem.descriptor: + text: 'Function #ref recurses infinitely, and can only end by throwing an exception #loc' +constant.if.statement.problem.descriptor: + text: '#ref statement can be simplified #loc' +constant.if.statement.display.name: + text: Constant if statement +constant.conditional.expression.simplify.quickfix: + text: Simplify +caller.error.string: + text: 'Use of ''#ref'' property #loc' +caller.display.name: + text: Use of 'caller' property +dynamically.generated.code.error.string: + text: 'Function ''#ref'' indicative of dynamically generated code #loc' +dynamically.generated.code.display.name: + text: Execution of dynamically generated JavaScript +for.loop.replaceable.by.while.problem.descriptor: + text: '#ref loop may be replaced by ''while'' loop #loc' +for.loop.replaceable.by.while.display.name: + text: '''for'' loop may be replaced by ''while'' loop' +for.loop.replaceable.by.while.replace.quickfix: + text: Replace with 'while' +for.loop.replaceable.by.while.ignore.option: + text: Ignore 'infinite' for loops without conditions +nested.function.call.display.name: + text: Nested function call +nested.function.call.problem.descriptor: + text: 'Nested call to function ''#ref'' #loc' +chained.function.call.display.name: + text: Chained function call +chained.function.call.problem.descriptor: + text: 'Chained call to function ''#ref'' #loc' +magic.number.display.name: + text: Magic number +magic.number.problem.descriptor: + text: 'Magic number ''#ref'' #loc' +incompatible.mask.operation.display.name: + text: Incompatible bitwise mask operation +incompatible.mask.operation.problem.descriptor.always.false: + text: '#ref is always false #loc' +incompatible.mask.operation.problem.descriptor.always.true: + text: '#ref is always true #loc' +pointless.bitwise.expression.display.name: + text: Pointless bitwise expression +pointless.bitwise.expression.ignore.option: + text: Ignore named constant in determinining pointless expressions +pointless.bitwise.expression.problem.descriptor: + text: '#ref can be replaced with ''''{0}'''' #loc' +pointless.bitwise.expression.simplify.quickfix: + text: Simplify +shift.operation.by.inappropriate.constant.display.name: + text: Shift operation by inappropriate constant +shift.operation.by.inappropriate.constant.problem.descriptor.too.large: + text: 'Shift operation #ref by overly large constant value #loc' +shift.operation.by.inappropriate.constant.problem.descriptor.negative: + text: 'Shift operation #ref by negative constant value #loc' diff --git a/plugin/pom.xml b/plugin/pom.xml index 47b49906..d749a997 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -47,7 +47,7 @@ maven-consulo-plugin true - valhalla + nightly com.intellij.xml com.intellij.regexp @@ -181,6 +181,7 @@ consulo.internal forms_rt + provided true From 01aaec3db725ab91bcb146e65451e825db10ff03 Mon Sep 17 00:00:00 2001 From: Valery Semenchuk Date: Sat, 25 Mar 2023 23:37:13 +0400 Subject: [PATCH 004/150] migrate to new HighlightVisitor api --- .../JavaScriptHighlightVisitor.java | 37 ++++++------------- .../JavaScriptHighlightVisitorFactory.java | 30 +++++++++++++++ 2 files changed, 41 insertions(+), 26 deletions(-) create mode 100644 plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptHighlightVisitorFactory.java diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptHighlightVisitor.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptHighlightVisitor.java index 5f633b66..51dfc950 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptHighlightVisitor.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptHighlightVisitor.java @@ -16,42 +16,34 @@ package com.intellij.lang.javascript.impl.highlighting; -import consulo.annotation.component.ExtensionImpl; -import consulo.codeEditor.DefaultLanguageHighlighterColors; -import consulo.language.editor.rawHighlight.HighlightInfo; -import consulo.language.editor.rawHighlight.HighlightInfoType; -import consulo.language.editor.rawHighlight.HighlightVisitor; -import consulo.language.editor.rawHighlight.HighlightInfoHolder; import com.intellij.lang.javascript.JSTokenTypes; -import consulo.javascript.language.JavaScriptBundle; import com.intellij.lang.javascript.psi.*; -import consulo.colorScheme.TextAttributesKey; -import consulo.language.psi.*; -import consulo.language.ast.IElementType; -import consulo.language.psi.util.PsiTreeUtil; import consulo.annotation.access.RequiredReadAction; +import consulo.codeEditor.DefaultLanguageHighlighterColors; +import consulo.colorScheme.TextAttributesKey; import consulo.javascript.ide.hightlight.JavaScriptSyntaxHighlightKeys; import consulo.javascript.lang.JavaScriptContextKeywordElementType; -import consulo.javascript.language.JavaScriptFeature; import consulo.javascript.lang.JavaScriptTokenSets; +import consulo.javascript.language.JavaScriptBundle; +import consulo.javascript.language.JavaScriptFeature; import consulo.javascript.language.JavaScriptVersionUtil; import consulo.javascript.psi.JSSimpleLiteralExpression; +import consulo.language.ast.IElementType; +import consulo.language.editor.rawHighlight.HighlightInfo; +import consulo.language.editor.rawHighlight.HighlightInfoHolder; +import consulo.language.editor.rawHighlight.HighlightInfoType; +import consulo.language.editor.rawHighlight.HighlightVisitor; +import consulo.language.psi.*; +import consulo.language.psi.util.PsiTreeUtil; import consulo.util.lang.StringUtil; import javax.annotation.Nonnull; import javax.annotation.Nullable; -@ExtensionImpl public class JavaScriptHighlightVisitor extends JSElementVisitor implements HighlightVisitor { private HighlightInfoHolder myHighlightInfoHolder; - @Override - public boolean suitableForFile(@Nonnull PsiFile psiFile) - { - return psiFile instanceof JSFile; - } - @Override @RequiredReadAction public void visitJSBinaryExpression(JSBinaryExpression node) @@ -388,13 +380,6 @@ public boolean analyze(@Nonnull PsiFile psiFile, boolean b, @Nonnull HighlightIn return true; } - @Nonnull - @Override - public HighlightVisitor clone() - { - return new JavaScriptHighlightVisitor(); - } - private static boolean isClass(final PsiElement element) { return element instanceof JSClass || element instanceof JSFile && element.getContext() != null; diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptHighlightVisitorFactory.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptHighlightVisitorFactory.java new file mode 100644 index 00000000..600a9b3f --- /dev/null +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptHighlightVisitorFactory.java @@ -0,0 +1,30 @@ +package com.intellij.lang.javascript.impl.highlighting; + +import com.intellij.lang.javascript.psi.JSFile; +import consulo.annotation.component.ExtensionImpl; +import consulo.language.editor.rawHighlight.HighlightVisitor; +import consulo.language.editor.rawHighlight.HighlightVisitorFactory; +import consulo.language.psi.PsiFile; + +import javax.annotation.Nonnull; + +/** + * @author VISTALL + * @since 25/03/2023 + */ +@ExtensionImpl +public class JavaScriptHighlightVisitorFactory implements HighlightVisitorFactory +{ + @Override + public boolean suitableForFile(@Nonnull PsiFile psiFile) + { + return psiFile instanceof JSFile; + } + + @Nonnull + @Override + public HighlightVisitor createVisitor() + { + return new JavaScriptHighlightVisitor(); + } +} From 687b91d04d4b16097e703c1760caf6d79648321d Mon Sep 17 00:00:00 2001 From: Valery Semenchuk Date: Sun, 18 Jun 2023 14:12:33 +0400 Subject: [PATCH 005/150] fix 53 --- .../ConditionalExpressionJSInspection.java | 63 +++--- ...nWithMultipleReturnPointsJSInspection.java | 193 ++++++++++-------- .../ChainedFunctionCallJSInspection.java | 124 ++++++----- .../style/NestedFunctionCallJSInspection.java | 104 ++++++---- 4 files changed, 279 insertions(+), 205 deletions(-) diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConditionalExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConditionalExpressionJSInspection.java index e3d9faf9..39461311 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConditionalExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConditionalExpressionJSInspection.java @@ -12,36 +12,49 @@ import javax.annotation.Nullable; @ExtensionImpl -public class ConditionalExpressionJSInspection extends JavaScriptInspection { +public class ConditionalExpressionJSInspection extends JavaScriptInspection +{ + @Override + public boolean isEnabledByDefault() + { + return false; + } - @Override + @Override @Nonnull - public String getDisplayName() { - return InspectionJSBundle.message("conditional.expression.display.name"); - } + public String getDisplayName() + { + return InspectionJSBundle.message("conditional.expression.display.name"); + } - @Override + @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.CONFUSING_GROUP_NAME; - } + public String getGroupDisplayName() + { + return JSGroupNames.CONFUSING_GROUP_NAME; + } - @RequiredReadAction + @RequiredReadAction @Override @Nullable - protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("conditional.expression.error.string"); - } - - @Override - public BaseInspectionVisitor buildVisitor() { - return new Visitor(); - } - - private static class Visitor extends BaseInspectionVisitor { - @Override public void visitJSConditionalExpression(JSConditionalExpression jsConditionalExpression) { - super.visitJSConditionalExpression(jsConditionalExpression); - registerError(jsConditionalExpression); - } - } + protected String buildErrorString(Object state, Object... args) + { + return InspectionJSBundle.message("conditional.expression.error.string"); + } + + @Override + public BaseInspectionVisitor buildVisitor() + { + return new Visitor(); + } + + private static class Visitor extends BaseInspectionVisitor + { + @Override + public void visitJSConditionalExpression(JSConditionalExpression jsConditionalExpression) + { + super.visitJSConditionalExpression(jsConditionalExpression); + registerError(jsConditionalExpression); + } + } } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleReturnPointsJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleReturnPointsJSInspection.java index ba86e358..169304e1 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleReturnPointsJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleReturnPointsJSInspection.java @@ -10,92 +10,123 @@ import javax.annotation.Nonnull; @ExtensionImpl -public class FunctionWithMultipleReturnPointsJSInspection extends JavaScriptInspection { +public class FunctionWithMultipleReturnPointsJSInspection extends JavaScriptInspection +{ + @Override + public boolean isEnabledByDefault() + { + return false; + } - @Override + @Override @Nonnull - public String getDisplayName() { - return InspectionJSBundle.message("function.with.multiple.return.points.display.name"); - } + public String getDisplayName() + { + return InspectionJSBundle.message("function.with.multiple.return.points.display.name"); + } - @Override + @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.FUNCTIONMETRICS_GROUP_NAME; - } + public String getGroupDisplayName() + { + return JSGroupNames.FUNCTIONMETRICS_GROUP_NAME; + } + + @RequiredReadAction + @Override + public String buildErrorString(Object state, Object... args) + { + final JSFunction function = (JSFunction) ((PsiElement) args[0]).getParent(); + assert function != null; + final int returnPointCount = countReturnPoints(function); + if(functionHasIdentifier(function)) + { + return InspectionJSBundle.message("function.contains.multiple.return.points.error.string", returnPointCount); + } + else + { + return InspectionJSBundle.message("anonymous.function.contains.multiple.return.points.error.string", returnPointCount); + } + } + + private static int countReturnPoints(JSFunction function) + { + final PsiElement lastChild = function.getLastChild(); + if(!(lastChild instanceof JSBlockStatement)) + { + return 0; + } + boolean hasFallthroughReturn = false; + if(ControlFlowUtils.statementMayCompleteNormally((JSStatement) lastChild)) + { + hasFallthroughReturn = true; + } + final ReturnCountVisitor visitor = new ReturnCountVisitor(); + lastChild.accept(visitor); + + final int returnCount = visitor.getReturnCount(); + if(hasFallthroughReturn) + { + return returnCount + 1; + } + else + { + return returnCount; + } + } - @RequiredReadAction @Override - public String buildErrorString(Object state, Object... args) { - final JSFunction function = (JSFunction) ((PsiElement) args[0]).getParent(); - assert function != null; - final int returnPointCount = countReturnPoints(function); - if (functionHasIdentifier(function)) { - return InspectionJSBundle.message("function.contains.multiple.return.points.error.string", returnPointCount); - } else { - return InspectionJSBundle.message("anonymous.function.contains.multiple.return.points.error.string", returnPointCount); - } - } - - private static int countReturnPoints(JSFunction function) { - final PsiElement lastChild = function.getLastChild(); - if (!(lastChild instanceof JSBlockStatement)) { - return 0; - } - boolean hasFallthroughReturn = false; - if (ControlFlowUtils.statementMayCompleteNormally((JSStatement) lastChild)) { - hasFallthroughReturn = true; - } - final ReturnCountVisitor visitor = new ReturnCountVisitor(); - lastChild.accept(visitor); - - final int returnCount = visitor.getReturnCount(); - if (hasFallthroughReturn) { - return returnCount + 1; - } else { - return returnCount; - } - } - - @Override - public BaseInspectionVisitor buildVisitor() { - return new Visitor(); - } - - private static class Visitor extends BaseInspectionVisitor { - - @Override public void visitJSFunctionDeclaration(@Nonnull JSFunction function) { - final int returnPointCount = countReturnPoints(function); - if (returnPointCount <= 1) { - return; - } - registerFunctionError(function); - } - } - - private static class ReturnCountVisitor extends JSRecursiveElementVisitor { - private int returnCount = 0; - - @Override public void visitJSElement(JSElement jsElement) { - int oldCount = 0; - if (jsElement instanceof JSFunction) { - oldCount = returnCount; - } - super.visitJSElement(jsElement); - - if (jsElement instanceof JSFunction) { - returnCount = oldCount; - } - } - - @Override public void visitJSReturnStatement(JSReturnStatement statement) { - super.visitJSReturnStatement(statement); - returnCount++; - } - - public int getReturnCount() { - return returnCount; - } - } + public BaseInspectionVisitor buildVisitor() + { + return new Visitor(); + } + + private static class Visitor extends BaseInspectionVisitor + { + + @Override + public void visitJSFunctionDeclaration(@Nonnull JSFunction function) + { + final int returnPointCount = countReturnPoints(function); + if(returnPointCount <= 1) + { + return; + } + registerFunctionError(function); + } + } + + private static class ReturnCountVisitor extends JSRecursiveElementVisitor + { + private int returnCount = 0; + + @Override + public void visitJSElement(JSElement jsElement) + { + int oldCount = 0; + if(jsElement instanceof JSFunction) + { + oldCount = returnCount; + } + super.visitJSElement(jsElement); + + if(jsElement instanceof JSFunction) + { + returnCount = oldCount; + } + } + + @Override + public void visitJSReturnStatement(JSReturnStatement statement) + { + super.visitJSReturnStatement(statement); + returnCount++; + } + + public int getReturnCount() + { + return returnCount; + } + } } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/style/ChainedFunctionCallJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/style/ChainedFunctionCallJSInspection.java index 00a8f99f..bf7d95d1 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/style/ChainedFunctionCallJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/style/ChainedFunctionCallJSInspection.java @@ -14,71 +14,87 @@ import javax.annotation.Nonnull; @ExtensionImpl -public class ChainedFunctionCallJSInspection extends JavaScriptInspection { - - +public class ChainedFunctionCallJSInspection extends JavaScriptInspection +{ + @Override + public boolean isEnabledByDefault() + { + return true; + } - @Override + @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.STYLE_GROUP_NAME; - } + public String getGroupDisplayName() + { + return JSGroupNames.STYLE_GROUP_NAME; + } - @Override + @Override @Nonnull - public String getDisplayName() { - return InspectionJSBundle.message( - "chained.function.call.display.name"); - } + public String getDisplayName() + { + return InspectionJSBundle.message( + "chained.function.call.display.name"); + } - @RequiredReadAction + @RequiredReadAction @Override @Nonnull - protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message( - "chained.function.call.problem.descriptor"); - } + protected String buildErrorString(Object state, Object... args) + { + return InspectionJSBundle.message( + "chained.function.call.problem.descriptor"); + } - @Override - public BaseInspectionVisitor buildVisitor() { - return new NestedMethodCallVisitor(); - } + @Override + public BaseInspectionVisitor buildVisitor() + { + return new NestedMethodCallVisitor(); + } - private static class NestedMethodCallVisitor extends BaseInspectionVisitor { + private static class NestedMethodCallVisitor extends BaseInspectionVisitor + { - @Override public void visitJSCallExpression( - @Nonnull JSCallExpression expression) { - super.visitJSCallExpression(expression); - final JSExpression reference = - expression.getMethodExpression(); - if(!(reference instanceof JSReferenceExpression)) - { - return; - } - final JSExpression qualifier = ((JSReferenceExpression)reference).getQualifier(); - if (qualifier == null) { - return; - } - if (!isCallExpression(qualifier)) { - return; - } - registerFunctionCallError(expression); - } + @Override + public void visitJSCallExpression( + @Nonnull JSCallExpression expression) + { + super.visitJSCallExpression(expression); + final JSExpression reference = + expression.getMethodExpression(); + if(!(reference instanceof JSReferenceExpression)) + { + return; + } + final JSExpression qualifier = ((JSReferenceExpression) reference).getQualifier(); + if(qualifier == null) + { + return; + } + if(!isCallExpression(qualifier)) + { + return; + } + registerFunctionCallError(expression); + } - private static boolean isCallExpression(JSExpression expression) { - if (expression instanceof JSCallExpression ) { - return true; - } - if (expression instanceof JSParenthesizedExpression) { - final JSParenthesizedExpression parenthesizedExpression = - (JSParenthesizedExpression) expression; - final JSExpression containedExpression = - parenthesizedExpression.getInnerExpression(); - return isCallExpression(containedExpression); - } - return false; - } - } + private static boolean isCallExpression(JSExpression expression) + { + if(expression instanceof JSCallExpression) + { + return true; + } + if(expression instanceof JSParenthesizedExpression) + { + final JSParenthesizedExpression parenthesizedExpression = + (JSParenthesizedExpression) expression; + final JSExpression containedExpression = + parenthesizedExpression.getInnerExpression(); + return isCallExpression(containedExpression); + } + return false; + } + } } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/style/NestedFunctionCallJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/style/NestedFunctionCallJSInspection.java index 13b8773c..d0473e37 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/style/NestedFunctionCallJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/style/NestedFunctionCallJSInspection.java @@ -14,60 +14,74 @@ import javax.annotation.Nonnull; - @ExtensionImpl -public class NestedFunctionCallJSInspection extends JavaScriptInspection { - - +public class NestedFunctionCallJSInspection extends JavaScriptInspection +{ + @Override + public boolean isEnabledByDefault() + { + return false; + } - @Override + @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.STYLE_GROUP_NAME; - } + public String getGroupDisplayName() + { + return JSGroupNames.STYLE_GROUP_NAME; + } - @Override + @Override @Nonnull - public String getDisplayName() { - return InspectionJSBundle.message( - "nested.function.call.display.name"); - } + public String getDisplayName() + { + return InspectionJSBundle.message( + "nested.function.call.display.name"); + } - @RequiredReadAction + @RequiredReadAction @Override @Nonnull - protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message( - "nested.function.call.problem.descriptor"); - } + protected String buildErrorString(Object state, Object... args) + { + return InspectionJSBundle.message( + "nested.function.call.problem.descriptor"); + } - @Override - public BaseInspectionVisitor buildVisitor() { - return new NestedMethodCallVisitor(); - } + @Override + public BaseInspectionVisitor buildVisitor() + { + return new NestedMethodCallVisitor(); + } - private static class NestedMethodCallVisitor extends BaseInspectionVisitor { + private static class NestedMethodCallVisitor extends BaseInspectionVisitor + { - @Override public void visitJSCallExpression( - @Nonnull JSCallExpression expression) { - super.visitJSCallExpression(expression); - JSExpression outerExpression = expression; - while (outerExpression != null && - outerExpression.getParent()instanceof JSExpression) { - outerExpression = (JSExpression) outerExpression.getParent(); - } - if (outerExpression == null) { - return; - } - final PsiElement parent = outerExpression.getParent(); - if (!(parent instanceof JSArgumentList)) { - return; - } - final PsiElement grandParent = parent.getParent(); - if (!(grandParent instanceof JSCallExpression)) { - return; - } - registerFunctionCallError(expression); - } - } + @Override + public void visitJSCallExpression( + @Nonnull JSCallExpression expression) + { + super.visitJSCallExpression(expression); + JSExpression outerExpression = expression; + while(outerExpression != null && + outerExpression.getParent() instanceof JSExpression) + { + outerExpression = (JSExpression) outerExpression.getParent(); + } + if(outerExpression == null) + { + return; + } + final PsiElement parent = outerExpression.getParent(); + if(!(parent instanceof JSArgumentList)) + { + return; + } + final PsiElement grandParent = parent.getParent(); + if(!(grandParent instanceof JSCallExpression)) + { + return; + } + registerFunctionCallError(expression); + } + } } \ No newline at end of file From 94654edd6bcfbc1b8113c72cfd46566d6561f4b4 Mon Sep 17 00:00:00 2001 From: Valery Semenchuk Date: Sun, 18 Jun 2023 14:13:42 +0400 Subject: [PATCH 006/150] disable by default --- .../naming/FunctionNamingConventionJSInspection.java | 6 ++++++ .../naming/LocalVariableNamingConventionJSInspection.java | 6 ++++++ .../naming/ParameterNamingConventionJSInspection.java | 6 ++++++ 3 files changed, 18 insertions(+) diff --git a/inspections/src/main/java/com/sixrr/inspectjs/naming/FunctionNamingConventionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/naming/FunctionNamingConventionJSInspection.java index 0eb6fa2f..98157ebe 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/naming/FunctionNamingConventionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/naming/FunctionNamingConventionJSInspection.java @@ -19,6 +19,12 @@ public class FunctionNamingConventionJSInspection extends ConventionInspection { private final RenameFix fix = new RenameFix(); + @Override + public boolean isEnabledByDefault() + { + return false; + } + @Nonnull @Override public InspectionToolState createStateProvider() diff --git a/inspections/src/main/java/com/sixrr/inspectjs/naming/LocalVariableNamingConventionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/naming/LocalVariableNamingConventionJSInspection.java index f251b25d..22966df2 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/naming/LocalVariableNamingConventionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/naming/LocalVariableNamingConventionJSInspection.java @@ -19,6 +19,12 @@ public class LocalVariableNamingConventionJSInspection extends ConventionInspect { private final RenameFix fix = new RenameFix(); + @Override + public boolean isEnabledByDefault() + { + return false; + } + @Override @Nonnull public String getDisplayName() diff --git a/inspections/src/main/java/com/sixrr/inspectjs/naming/ParameterNamingConventionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/naming/ParameterNamingConventionJSInspection.java index b1da91ed..732295b9 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/naming/ParameterNamingConventionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/naming/ParameterNamingConventionJSInspection.java @@ -21,6 +21,12 @@ public class ParameterNamingConventionJSInspection extends ConventionInspection { private final RenameFix fix = new RenameFix(); + @Override + public boolean isEnabledByDefault() + { + return false; + } + @Override @Nonnull public String getDisplayName() From eee1a01f7509a16423b278aefdd2a70e377a1b13 Mon Sep 17 00:00:00 2001 From: Valery Semenchuk Date: Sun, 18 Jun 2023 15:46:11 +0400 Subject: [PATCH 007/150] correct parsing for extends/implements --- .../lang/javascript/types/JSFileElementType.java | 9 +++------ .../javascript/lang/parsing/ExpressionParsing.java | 4 +++- .../lang/parsing/EcmaScriptStatementParsing.java | 4 ++-- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/types/JSFileElementType.java b/base-impl/src/main/java/com/intellij/lang/javascript/types/JSFileElementType.java index a213b251..69e65082 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/types/JSFileElementType.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/types/JSFileElementType.java @@ -89,11 +89,8 @@ public String getExternalId() @Override public int getStubVersion() { - int version = 45; - for(JavaScriptIndexer javaScriptIndexer : JavaScriptIndexer.EP_NAME.getExtensionList()) - { - version += javaScriptIndexer.getVersion(); - } - return version; + int[] version = new int[]{47}; + JavaScriptIndexer.EP_NAME.forEachExtensionSafe(javaScriptIndexer -> version[0] ++); + return version[0]; } } diff --git a/base-impl/src/main/java/consulo/javascript/lang/parsing/ExpressionParsing.java b/base-impl/src/main/java/consulo/javascript/lang/parsing/ExpressionParsing.java index b7a18f0b..7962317f 100644 --- a/base-impl/src/main/java/consulo/javascript/lang/parsing/ExpressionParsing.java +++ b/base-impl/src/main/java/consulo/javascript/lang/parsing/ExpressionParsing.java @@ -1028,11 +1028,13 @@ else if(!parseQualifiedTypeName(builder)) return true; } - public void parseSimpleExpression(final PsiBuilder builder) + public boolean parseSimpleExpression(final PsiBuilder builder) { if(!parseUnaryExpression(builder)) { builder.error(JavaScriptBundle.message("javascript.parser.message.expected.expression")); + return false; } + return true; } } diff --git a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptStatementParsing.java b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptStatementParsing.java index 7c2c3f32..2af0968a 100644 --- a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptStatementParsing.java +++ b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptStatementParsing.java @@ -495,12 +495,12 @@ private void parseReferenceList(final PsiBuilder builder) final PsiBuilder.Marker referenceList = builder.mark(); builder.advanceLexer(); - if(getExpressionParsing().parseQualifiedTypeName(builder)) + if(getExpressionParsing().parseSimpleExpression(builder)) { while(builder.getTokenType() == JSTokenTypes.COMMA) { builder.advanceLexer(); - if(!getExpressionParsing().parseQualifiedTypeName(builder)) + if(!getExpressionParsing().parseSimpleExpression(builder)) { break; } From fe271dc393d16b3f20c269104dddc6c26314aac2 Mon Sep 17 00:00:00 2001 From: Valery Semenchuk Date: Tue, 8 Aug 2023 22:40:40 +0400 Subject: [PATCH 008/150] fix exception while opening code style settings --- .../formatter/JavaScriptLanguageCodeStyleSettingsProvider.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin/src/main/java/consulo/javascript/impl/formatter/JavaScriptLanguageCodeStyleSettingsProvider.java b/plugin/src/main/java/consulo/javascript/impl/formatter/JavaScriptLanguageCodeStyleSettingsProvider.java index b404c3b1..220bf5ea 100644 --- a/plugin/src/main/java/consulo/javascript/impl/formatter/JavaScriptLanguageCodeStyleSettingsProvider.java +++ b/plugin/src/main/java/consulo/javascript/impl/formatter/JavaScriptLanguageCodeStyleSettingsProvider.java @@ -90,7 +90,7 @@ private static String loadPreview(String file) { try { - return FileUtil.loadTextAndClose(JavaScriptLanguageCodeStyleSettingsProvider.class.getResourceAsStream("/codeStyle" + file)); + return FileUtil.loadTextAndClose(JavaScriptLanguageCodeStyleSettingsProvider.class.getResourceAsStream("/codeStyle/" + file)); } catch(IOException e) { From 1048fddc5c2b2e52591a88a67ed4530f8943a11a Mon Sep 17 00:00:00 2001 From: Valery Semenchuk Date: Thu, 31 Aug 2023 11:46:42 +0400 Subject: [PATCH 009/150] rename marker interface --- .../language/StandardJavaScriptVersion.java | 16 ++++++++++++++++ .../language/StandardJavaScriptVersions.java | 8 -------- .../lang/JavaScript15LanguageVersion.java | 4 ++-- .../lang/StandardJavaScriptVersionsImpl.java | 5 +++-- .../lang/BaseEcmaScriptJavaScriptVersion.java | 4 ++-- .../lang/EcmaScript6JavaScriptVersion.java | 4 ++-- .../lang/JavaScript16LanguageVersion.java | 4 ++-- .../lang/JavaScript17LanguageVersion.java | 4 ++-- .../lang/JavaScript185LanguageVersion.java | 4 ++-- .../lang/JavaScript18LanguageVersion.java | 4 ++-- 10 files changed, 33 insertions(+), 24 deletions(-) create mode 100644 base-api/src/main/java/consulo/javascript/language/StandardJavaScriptVersion.java diff --git a/base-api/src/main/java/consulo/javascript/language/StandardJavaScriptVersion.java b/base-api/src/main/java/consulo/javascript/language/StandardJavaScriptVersion.java new file mode 100644 index 00000000..4ddfe95a --- /dev/null +++ b/base-api/src/main/java/consulo/javascript/language/StandardJavaScriptVersion.java @@ -0,0 +1,16 @@ +package consulo.javascript.language; + +/** + * Marker for javascript version which can be selected inside combobox for module + * +* @author VISTALL +* @since 31/08/2023 +*/ +public interface StandardJavaScriptVersion +{ + @Deprecated + default int getWeight() + { + return 0; + } +} diff --git a/base-api/src/main/java/consulo/javascript/language/StandardJavaScriptVersions.java b/base-api/src/main/java/consulo/javascript/language/StandardJavaScriptVersions.java index 14efc045..1c89344b 100644 --- a/base-api/src/main/java/consulo/javascript/language/StandardJavaScriptVersions.java +++ b/base-api/src/main/java/consulo/javascript/language/StandardJavaScriptVersions.java @@ -31,14 +31,6 @@ @ServiceAPI(ComponentScope.APPLICATION) public abstract class StandardJavaScriptVersions { - public static interface Marker - { - @Deprecated - default int getWeight() - { - return 0; - } - } @Nonnull public static StandardJavaScriptVersions getInstance() diff --git a/base-impl/src/main/java/consulo/javascript/lang/JavaScript15LanguageVersion.java b/base-impl/src/main/java/consulo/javascript/lang/JavaScript15LanguageVersion.java index a525c6f5..fc5f0901 100644 --- a/base-impl/src/main/java/consulo/javascript/lang/JavaScript15LanguageVersion.java +++ b/base-impl/src/main/java/consulo/javascript/lang/JavaScript15LanguageVersion.java @@ -4,7 +4,7 @@ import consulo.javascript.ide.hightlight.JavaScriptHighlighter; import consulo.javascript.lang.lexer.JavaScript15Lexer; import consulo.javascript.language.JavaScriptLanguage; -import consulo.javascript.language.StandardJavaScriptVersions; +import consulo.javascript.language.StandardJavaScriptVersion; import consulo.language.editor.highlight.SyntaxHighlighter; import consulo.language.lexer.Lexer; @@ -16,7 +16,7 @@ * @since 05.03.2015 */ @ExtensionImpl -public class JavaScript15LanguageVersion extends BaseJavaScriptLanguageVersion implements StandardJavaScriptVersions.Marker +public class JavaScript15LanguageVersion extends BaseJavaScriptLanguageVersion implements StandardJavaScriptVersion { private static final Supplier ourLexerFactory = () -> new JavaScript15Lexer(); diff --git a/base-impl/src/main/java/consulo/javascript/lang/StandardJavaScriptVersionsImpl.java b/base-impl/src/main/java/consulo/javascript/lang/StandardJavaScriptVersionsImpl.java index 124aaa3a..1096566c 100644 --- a/base-impl/src/main/java/consulo/javascript/lang/StandardJavaScriptVersionsImpl.java +++ b/base-impl/src/main/java/consulo/javascript/lang/StandardJavaScriptVersionsImpl.java @@ -3,6 +3,7 @@ import consulo.annotation.component.ServiceImpl; import consulo.javascript.language.JavaScriptLanguage; import consulo.javascript.language.JavaScriptLanguageVersion; +import consulo.javascript.language.StandardJavaScriptVersion; import consulo.javascript.language.StandardJavaScriptVersions; import consulo.language.version.LanguageVersion; import consulo.util.lang.StringUtil; @@ -34,7 +35,7 @@ public List getValidLanguageVersions() LanguageVersion[] versions = JavaScriptLanguage.INSTANCE.getVersions(); for(LanguageVersion version : versions) { - if(version instanceof StandardJavaScriptVersions.Marker) + if(version instanceof StandardJavaScriptVersion) { list.add((BaseJavaScriptLanguageVersion) version); } @@ -55,7 +56,7 @@ public BaseJavaScriptLanguageVersion findVersionById(@Nullable String id) LanguageVersion[] versions = JavaScriptLanguage.INSTANCE.getVersions(); for(LanguageVersion version : versions) { - if(version instanceof StandardJavaScriptVersions.Marker && id.equals(version.getId())) + if(version instanceof StandardJavaScriptVersion && id.equals(version.getId())) { return (BaseJavaScriptLanguageVersion) version; } diff --git a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/BaseEcmaScriptJavaScriptVersion.java b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/BaseEcmaScriptJavaScriptVersion.java index 7cb98e99..9c765d12 100644 --- a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/BaseEcmaScriptJavaScriptVersion.java +++ b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/BaseEcmaScriptJavaScriptVersion.java @@ -9,7 +9,7 @@ import consulo.javascript.lang.lexer.JavaScriptFlexAdapter; import consulo.javascript.lang.psi.impl.resolve.JavaScriptVersionWithHelper; import consulo.javascript.lang.psi.impl.resolve.ResolveHelper; -import consulo.javascript.language.StandardJavaScriptVersions; +import consulo.javascript.language.StandardJavaScriptVersion; import consulo.language.ast.TokenSet; import consulo.language.editor.highlight.SyntaxHighlighter; import consulo.language.lexer.Lexer; @@ -22,7 +22,7 @@ * @author VISTALL * @since 06/12/2021 */ -public abstract class BaseEcmaScriptJavaScriptVersion extends BaseJavaScriptLanguageVersion implements StandardJavaScriptVersions.Marker, JavaScriptVersionWithHelper +public abstract class BaseEcmaScriptJavaScriptVersion extends BaseJavaScriptLanguageVersion implements StandardJavaScriptVersion, JavaScriptVersionWithHelper { protected BaseEcmaScriptJavaScriptVersion(@Nonnull String id) { diff --git a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/EcmaScript6JavaScriptVersion.java b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/EcmaScript6JavaScriptVersion.java index 844dc01b..8db98a4f 100644 --- a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/EcmaScript6JavaScriptVersion.java +++ b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/EcmaScript6JavaScriptVersion.java @@ -20,7 +20,7 @@ import consulo.javascript.lang.psi.impl.resolve.JavaScriptVersionWithHelper; import consulo.javascript.language.JavaScriptFeature; import consulo.javascript.language.JavaScriptLanguage; -import consulo.javascript.language.StandardJavaScriptVersions; +import consulo.javascript.language.StandardJavaScriptVersion; import jakarta.inject.Inject; import javax.annotation.Nonnull; @@ -30,7 +30,7 @@ * @since 12.12.2015 */ @ExtensionImpl -public class EcmaScript6JavaScriptVersion extends BaseEcmaScriptJavaScriptVersion implements StandardJavaScriptVersions.Marker, JavaScriptVersionWithHelper +public class EcmaScript6JavaScriptVersion extends BaseEcmaScriptJavaScriptVersion implements StandardJavaScriptVersion, JavaScriptVersionWithHelper { @Nonnull public static EcmaScript6JavaScriptVersion getInstance() diff --git a/lang-version-impl/javascript16-impl/src/main/java/consulo/javascript/javascript16/lang/JavaScript16LanguageVersion.java b/lang-version-impl/javascript16-impl/src/main/java/consulo/javascript/javascript16/lang/JavaScript16LanguageVersion.java index a73956c6..9b7a9adb 100644 --- a/lang-version-impl/javascript16-impl/src/main/java/consulo/javascript/javascript16/lang/JavaScript16LanguageVersion.java +++ b/lang-version-impl/javascript16-impl/src/main/java/consulo/javascript/javascript16/lang/JavaScript16LanguageVersion.java @@ -21,7 +21,7 @@ import consulo.javascript.javascript16.lang.lexer.JavaScript16Lexer; import consulo.javascript.lang.BaseJavaScriptLanguageVersion; import consulo.javascript.language.JavaScriptLanguage; -import consulo.javascript.language.StandardJavaScriptVersions; +import consulo.javascript.language.StandardJavaScriptVersion; import consulo.language.editor.highlight.SyntaxHighlighter; import consulo.language.lexer.Lexer; @@ -33,7 +33,7 @@ * @since 11.12.2015 */ @ExtensionImpl -public class JavaScript16LanguageVersion extends BaseJavaScriptLanguageVersion implements StandardJavaScriptVersions.Marker +public class JavaScript16LanguageVersion extends BaseJavaScriptLanguageVersion implements StandardJavaScriptVersion { private static final Supplier ourLexerFactory = () -> new JavaScript16Lexer(); diff --git a/lang-version-impl/javascript17-impl/src/main/java/consulo/javascript/javascript17/lang/JavaScript17LanguageVersion.java b/lang-version-impl/javascript17-impl/src/main/java/consulo/javascript/javascript17/lang/JavaScript17LanguageVersion.java index 349dbc1e..af42dc90 100644 --- a/lang-version-impl/javascript17-impl/src/main/java/consulo/javascript/javascript17/lang/JavaScript17LanguageVersion.java +++ b/lang-version-impl/javascript17-impl/src/main/java/consulo/javascript/javascript17/lang/JavaScript17LanguageVersion.java @@ -21,7 +21,7 @@ import consulo.javascript.javascript17.lang.lexer.JavaScript17Lexer; import consulo.javascript.lang.BaseJavaScriptLanguageVersion; import consulo.javascript.language.JavaScriptLanguage; -import consulo.javascript.language.StandardJavaScriptVersions; +import consulo.javascript.language.StandardJavaScriptVersion; import consulo.language.editor.highlight.SyntaxHighlighter; import consulo.language.lexer.Lexer; @@ -33,7 +33,7 @@ * @since 11.12.2015 */ @ExtensionImpl -public class JavaScript17LanguageVersion extends BaseJavaScriptLanguageVersion implements StandardJavaScriptVersions.Marker +public class JavaScript17LanguageVersion extends BaseJavaScriptLanguageVersion implements StandardJavaScriptVersion { private static final Supplier ourLexerFactory = JavaScript17Lexer::new; diff --git a/lang-version-impl/javascript18-impl/src/main/java/consulo/javascript/javascript18/lang/JavaScript185LanguageVersion.java b/lang-version-impl/javascript18-impl/src/main/java/consulo/javascript/javascript18/lang/JavaScript185LanguageVersion.java index dd9a0fba..db36cd1e 100644 --- a/lang-version-impl/javascript18-impl/src/main/java/consulo/javascript/javascript18/lang/JavaScript185LanguageVersion.java +++ b/lang-version-impl/javascript18-impl/src/main/java/consulo/javascript/javascript18/lang/JavaScript185LanguageVersion.java @@ -21,7 +21,7 @@ import consulo.javascript.javascript17.lang.lexer.JavaScript17Lexer; import consulo.javascript.lang.BaseJavaScriptLanguageVersion; import consulo.javascript.language.JavaScriptLanguage; -import consulo.javascript.language.StandardJavaScriptVersions; +import consulo.javascript.language.StandardJavaScriptVersion; import consulo.language.editor.highlight.SyntaxHighlighter; import consulo.language.lexer.Lexer; @@ -33,7 +33,7 @@ * @since 11.12.2015 */ @ExtensionImpl -public class JavaScript185LanguageVersion extends BaseJavaScriptLanguageVersion implements StandardJavaScriptVersions.Marker +public class JavaScript185LanguageVersion extends BaseJavaScriptLanguageVersion implements StandardJavaScriptVersion { private static final Supplier ourLexerFactory = JavaScript17Lexer::new; diff --git a/lang-version-impl/javascript18-impl/src/main/java/consulo/javascript/javascript18/lang/JavaScript18LanguageVersion.java b/lang-version-impl/javascript18-impl/src/main/java/consulo/javascript/javascript18/lang/JavaScript18LanguageVersion.java index d43a56e2..7e1e3b00 100644 --- a/lang-version-impl/javascript18-impl/src/main/java/consulo/javascript/javascript18/lang/JavaScript18LanguageVersion.java +++ b/lang-version-impl/javascript18-impl/src/main/java/consulo/javascript/javascript18/lang/JavaScript18LanguageVersion.java @@ -21,7 +21,7 @@ import consulo.javascript.javascript17.lang.lexer.JavaScript17Lexer; import consulo.javascript.lang.BaseJavaScriptLanguageVersion; import consulo.javascript.language.JavaScriptLanguage; -import consulo.javascript.language.StandardJavaScriptVersions; +import consulo.javascript.language.StandardJavaScriptVersion; import consulo.language.editor.highlight.SyntaxHighlighter; import consulo.language.lexer.Lexer; @@ -33,7 +33,7 @@ * @since 11.12.2015 */ @ExtensionImpl -public class JavaScript18LanguageVersion extends BaseJavaScriptLanguageVersion implements StandardJavaScriptVersions.Marker +public class JavaScript18LanguageVersion extends BaseJavaScriptLanguageVersion implements StandardJavaScriptVersion { private static final Supplier ourLexerFactory = JavaScript17Lexer::new; From ba80e59413ad9951cfc7ab4ef0b896cc27b93c75 Mon Sep 17 00:00:00 2001 From: Valery Semenchuk Date: Thu, 31 Aug 2023 12:01:11 +0400 Subject: [PATCH 010/150] use last version for js files without module --- .../internal/DefaultJavaScriptVersion.java | 11 +++++++++++ base-api/src/main/java/module-info.java | 2 ++ .../lang/StandardJavaScriptVersionsImpl.java | 13 +++++++++++-- .../lang/EcmaScript12JavaScriptVersion.java | 3 ++- .../lang/JavaScriptLanguageVersionResolver.java | 2 +- 5 files changed, 27 insertions(+), 4 deletions(-) create mode 100644 base-api/src/main/java/consulo/javascript/internal/DefaultJavaScriptVersion.java diff --git a/base-api/src/main/java/consulo/javascript/internal/DefaultJavaScriptVersion.java b/base-api/src/main/java/consulo/javascript/internal/DefaultJavaScriptVersion.java new file mode 100644 index 00000000..bcd97441 --- /dev/null +++ b/base-api/src/main/java/consulo/javascript/internal/DefaultJavaScriptVersion.java @@ -0,0 +1,11 @@ +package consulo.javascript.internal; + +/** + * Marker for default javascript file version if not selected + * + * @author VISTALL + * @since 31/08/2023 + */ +public interface DefaultJavaScriptVersion +{ +} diff --git a/base-api/src/main/java/module-info.java b/base-api/src/main/java/module-info.java index 8b6845e9..824b484d 100644 --- a/base-api/src/main/java/module-info.java +++ b/base-api/src/main/java/module-info.java @@ -21,4 +21,6 @@ exports consulo.javascript.psi.impl.reference; exports consulo.javascript.language.psi.stub; exports consulo.javascript.psi.stubs; + + exports consulo.javascript.internal to consulo.javascript.ecmascript.impl, consulo.javascript.base.impl; } \ No newline at end of file diff --git a/base-impl/src/main/java/consulo/javascript/lang/StandardJavaScriptVersionsImpl.java b/base-impl/src/main/java/consulo/javascript/lang/StandardJavaScriptVersionsImpl.java index 1096566c..bfe3287d 100644 --- a/base-impl/src/main/java/consulo/javascript/lang/StandardJavaScriptVersionsImpl.java +++ b/base-impl/src/main/java/consulo/javascript/lang/StandardJavaScriptVersionsImpl.java @@ -1,6 +1,7 @@ package consulo.javascript.lang; import consulo.annotation.component.ServiceImpl; +import consulo.javascript.internal.DefaultJavaScriptVersion; import consulo.javascript.language.JavaScriptLanguage; import consulo.javascript.language.JavaScriptLanguageVersion; import consulo.javascript.language.StandardJavaScriptVersion; @@ -23,8 +24,16 @@ public class StandardJavaScriptVersionsImpl extends StandardJavaScriptVersions { @Nonnull - public BaseJavaScriptLanguageVersion getDefaultVersion() + public JavaScriptLanguageVersion getDefaultVersion() { + LanguageVersion[] versions = JavaScriptLanguage.INSTANCE.getVersions(); + for(LanguageVersion version : versions) + { + if(version instanceof DefaultJavaScriptVersion) + { + return (JavaScriptLanguageVersion) version; + } + } return JavaScript15LanguageVersion.getInstance(); } @@ -46,7 +55,7 @@ public List getValidLanguageVersions() } @Nonnull - public BaseJavaScriptLanguageVersion findVersionById(@Nullable String id) + public JavaScriptLanguageVersion findVersionById(@Nullable String id) { if(StringUtil.isEmpty(id)) { diff --git a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/EcmaScript12JavaScriptVersion.java b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/EcmaScript12JavaScriptVersion.java index 76cdf9bc..a6ca7876 100644 --- a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/EcmaScript12JavaScriptVersion.java +++ b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/EcmaScript12JavaScriptVersion.java @@ -1,6 +1,7 @@ package consulo.javascript.ecmascript.lang; import consulo.annotation.component.ExtensionImpl; +import consulo.javascript.internal.DefaultJavaScriptVersion; import consulo.javascript.language.JavaScriptLanguage; import jakarta.inject.Inject; @@ -11,7 +12,7 @@ * @since 06/12/2021 */ @ExtensionImpl -public class EcmaScript12JavaScriptVersion extends EcmaScript6JavaScriptVersion +public class EcmaScript12JavaScriptVersion extends EcmaScript6JavaScriptVersion implements DefaultJavaScriptVersion { @Nonnull public static EcmaScript12JavaScriptVersion getInstance() diff --git a/plugin/src/main/java/consulo/javascript/impl/lang/JavaScriptLanguageVersionResolver.java b/plugin/src/main/java/consulo/javascript/impl/lang/JavaScriptLanguageVersionResolver.java index 664aaa9c..15a96023 100644 --- a/plugin/src/main/java/consulo/javascript/impl/lang/JavaScriptLanguageVersionResolver.java +++ b/plugin/src/main/java/consulo/javascript/impl/lang/JavaScriptLanguageVersionResolver.java @@ -55,7 +55,7 @@ public LanguageVersion getLanguageVersion(@Nonnull Language language, @Nullable FileType fileType = containingFile.getFileType(); if(fileType instanceof JavaScriptFileTypeWithVersion) { - Module module = ModuleUtilCore.findModuleForPsiElement(element); + Module module = element.getModule(); return ((JavaScriptFileTypeWithVersion) fileType).getLanguageVersion(module, element.getContainingFile().getVirtualFile()); } From 10c5a679ffb3bdc218ca9eb74a85ec3261e87270 Mon Sep 17 00:00:00 2001 From: Valery Semenchuk Date: Thu, 31 Aug 2023 17:50:40 +0400 Subject: [PATCH 011/150] return textoffset zero - fix error of getting value range --- .../javascript/psi/impl/JSXmlLiteralExpressionImpl.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSXmlLiteralExpressionImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSXmlLiteralExpressionImpl.java index 6bb28569..648ad825 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSXmlLiteralExpressionImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSXmlLiteralExpressionImpl.java @@ -313,6 +313,13 @@ public Map getLocalNamespaceDeclarations() return Collections.emptyMap(); } + @RequiredReadAction + @Override + public int getTextOffset() + { + return 0; + } + @Nonnull @Override public XmlTagValue getValue() From d23b14e889d9ace58bcf4aad50fd3699a3858d37 Mon Sep 17 00:00:00 2001 From: Valery Semenchuk Date: Fri, 1 Sep 2023 17:45:48 +0400 Subject: [PATCH 012/150] drop method override which is not need --- .../lang/javascript/JSElementTypes.java | 22 ++++++------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/JSElementTypes.java b/base-impl/src/main/java/com/intellij/lang/javascript/JSElementTypes.java index 5878b135..431a2e59 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/JSElementTypes.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/JSElementTypes.java @@ -19,21 +19,21 @@ import com.intellij.lang.javascript.psi.*; import com.intellij.lang.javascript.psi.impl.*; import com.intellij.lang.javascript.psi.stubs.*; -import com.intellij.lang.javascript.types.*; +import com.intellij.lang.javascript.types.JSFileElementType; +import com.intellij.lang.javascript.types.JSFunctionElementType; import consulo.annotation.DeprecationInfo; import consulo.javascript.ecmascript4.psi.impl.EcmaScript4ElementTypes; +import consulo.javascript.impl.language.psi.JSComputedNameImpl; import consulo.javascript.impl.language.psi.JSStubElementType; -import consulo.javascript.language.JavaScriptLanguage; +import consulo.javascript.impl.language.psi.JavaScriptLambdaExpressionImpl; +import consulo.javascript.impl.language.psi.JavaScriptSpreadExpressionImpl; import consulo.javascript.lang.parsing.impl.JavaSciptDestructuringElementImpl; import consulo.javascript.lang.parsing.impl.JavaSciptDestructuringObjectImpl; import consulo.javascript.lang.parsing.impl.JavaScriptDestructuringParameterImpl; import consulo.javascript.lang.parsing.impl.JavaScriptDestructuringShorthandedPropertyImpl; import consulo.javascript.lang.psi.impl.JSRegExpLiteralExpressionImpl; -import consulo.javascript.impl.language.psi.JSComputedNameImpl; -import consulo.javascript.impl.language.psi.JavaScriptLambdaExpressionImpl; -import consulo.javascript.impl.language.psi.JavaScriptSpreadExpressionImpl; +import consulo.javascript.language.JavaScriptLanguage; import consulo.javascript.psi.stubs.JSFileStub; -import consulo.language.Language; import consulo.language.ast.*; import consulo.language.psi.PsiElement; import consulo.language.psi.stub.IStubFileElementType; @@ -49,15 +49,7 @@ public interface JSElementTypes { IStubFileElementType FILE = new JSFileElementType(JavaScriptLanguage.INSTANCE); - IElementType EMBEDDED_CONTENT = new ILazyParseableElementType("EMBEDDED_CONTENT", JavaScriptLanguage.INSTANCE) - { - @Nonnull - @Override - public Language getLanguage() - { - return JavaScriptLanguage.INSTANCE; - } - }; + IElementType EMBEDDED_CONTENT = new ILazyParseableElementType("EMBEDDED_CONTENT", JavaScriptLanguage.INSTANCE); IElementType EMBEDDED_EXPRESSION = new ElementTypeAsPsiFactory("EMBEDDED_EXPRESSION", JavaScriptLanguage.INSTANCE, JSEmbeddedContentImpl::new); JSStubElementType FUNCTION_DECLARATION = JSStubElementTypes.FUNCTION_DECLARATION; From 57571f5a8839f4d4cfb0153741a47653b805793a Mon Sep 17 00:00:00 2001 From: Valery Semenchuk Date: Wed, 14 Feb 2024 22:16:33 +0400 Subject: [PATCH 013/150] impl SyntheticIntentionAction - fix assertion --- .gitignore | 3 ++- .../lang/javascript/impl/validation/JSAnnotatingVisitor.java | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index d26fae78..9cdefba6 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ !/.consulo/codeStyleSettings.xml /out /target -target/ \ No newline at end of file +target/ +plugin/sandbox/ \ No newline at end of file diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatingVisitor.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatingVisitor.java index e4315a64..c89f6362 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatingVisitor.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatingVisitor.java @@ -1101,7 +1101,7 @@ public boolean startInWriteAction() { checkFileUnderSourceRoot(packageStatement, new SimpleErrorReportingClient()); } - public static class RemoveASTNodeFix implements IntentionAction, LocalQuickFix { + public static class RemoveASTNodeFix implements SyntheticIntentionAction, LocalQuickFix { private final ASTNode[] myAstNodes; private final String myPropKey; From beba880170a9a4e5da3d6032c2aec48a2af0793d Mon Sep 17 00:00:00 2001 From: Valery Semenchuk Date: Fri, 19 Apr 2024 14:22:41 +0400 Subject: [PATCH 014/150] enable js parsing inside html --- .../lang/javascript/JSElementTypes.java | 28 ++++- .../ide/hightlight/JavaScriptHighlighter.java | 111 ++++++++---------- .../JavaScriptEmbeddedTokenHighlighter.java | 27 +++++ .../JavaScriptHtmlScriptContentProvider.java | 41 +++++++ 4 files changed, 146 insertions(+), 61 deletions(-) create mode 100644 plugin/src/main/java/consulo/javascript/impl/html/JavaScriptEmbeddedTokenHighlighter.java create mode 100644 plugin/src/main/java/consulo/javascript/impl/html/JavaScriptHtmlScriptContentProvider.java diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/JSElementTypes.java b/base-impl/src/main/java/com/intellij/lang/javascript/JSElementTypes.java index 431a2e59..35f62174 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/JSElementTypes.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/JSElementTypes.java @@ -22,6 +22,7 @@ import com.intellij.lang.javascript.types.JSFileElementType; import com.intellij.lang.javascript.types.JSFunctionElementType; import consulo.annotation.DeprecationInfo; +import consulo.annotation.access.RequiredReadAction; import consulo.javascript.ecmascript4.psi.impl.EcmaScript4ElementTypes; import consulo.javascript.impl.language.psi.JSComputedNameImpl; import consulo.javascript.impl.language.psi.JSStubElementType; @@ -34,9 +35,17 @@ import consulo.javascript.lang.psi.impl.JSRegExpLiteralExpressionImpl; import consulo.javascript.language.JavaScriptLanguage; import consulo.javascript.psi.stubs.JSFileStub; +import consulo.language.Language; import consulo.language.ast.*; +import consulo.language.parser.ParserDefinition; +import consulo.language.parser.PsiBuilder; +import consulo.language.parser.PsiBuilderFactory; +import consulo.language.parser.PsiParser; import consulo.language.psi.PsiElement; import consulo.language.psi.stub.IStubFileElementType; +import consulo.language.version.LanguageVersion; +import consulo.language.version.LanguageVersionUtil; +import consulo.project.Project; import javax.annotation.Nonnull; @@ -49,7 +58,21 @@ public interface JSElementTypes { IStubFileElementType FILE = new JSFileElementType(JavaScriptLanguage.INSTANCE); - IElementType EMBEDDED_CONTENT = new ILazyParseableElementType("EMBEDDED_CONTENT", JavaScriptLanguage.INSTANCE); + IElementType EMBEDDED_CONTENT = new ILazyParseableElementType("EMBEDDED_CONTENT", JavaScriptLanguage.INSTANCE) + { + @Override + @RequiredReadAction + protected ASTNode doParseContents(@Nonnull final ASTNode chameleon, @Nonnull final PsiElement psi) + { + LanguageVersion languageVersion = LanguageVersionUtil.findLanguageVersion(getLanguage(), psi); + Project project = psi.getProject(); + Language languageForParser = getLanguageForParser(psi); + PsiBuilder builder = PsiBuilderFactory.getInstance().createBuilder(project, chameleon, null, languageForParser, languageVersion, chameleon.getChars()); + PsiParser parser = ParserDefinition.forLanguage(languageForParser).createParser(languageVersion); + return parser.parse(this, builder, languageVersion).getFirstChildNode(); + } + }; + IElementType EMBEDDED_EXPRESSION = new ElementTypeAsPsiFactory("EMBEDDED_EXPRESSION", JavaScriptLanguage.INSTANCE, JSEmbeddedContentImpl::new); JSStubElementType FUNCTION_DECLARATION = JSStubElementTypes.FUNCTION_DECLARATION; @@ -93,7 +116,8 @@ public interface JSElementTypes IElementType DESTRUCTURING_ELEMENT = new ElementTypeAsPsiFactory("DESTRUCTURING_ELEMENT", JavaScriptLanguage.INSTANCE, JavaSciptDestructuringElementImpl::new); IElementType DESTRUCTURING_PARAMETER = new ElementTypeAsPsiFactory("DESTRUCTURING_PARAMETER", JavaScriptLanguage.INSTANCE, JavaScriptDestructuringParameterImpl::new); IElementType DESTRUCTURING_OBJECT = new ElementTypeAsPsiFactory("DESTRUCTURING_OBJECT", JavaScriptLanguage.INSTANCE, JavaSciptDestructuringObjectImpl::new); - IElementType DESTRUCTURING_SHORTHANDED_PROPERTY = new ElementTypeAsPsiFactory("DESTRUCTURING_SHORTHANDED_PROPERTY", JavaScriptLanguage.INSTANCE, JavaScriptDestructuringShorthandedPropertyImpl::new); + IElementType DESTRUCTURING_SHORTHANDED_PROPERTY = new ElementTypeAsPsiFactory("DESTRUCTURING_SHORTHANDED_PROPERTY", JavaScriptLanguage.INSTANCE, + JavaScriptDestructuringShorthandedPropertyImpl::new); IElementType WITH_STATEMENT = new ElementTypeAsPsiFactory("WITH_STATEMENT", JavaScriptLanguage.INSTANCE, JSWithStatementImpl::new); IElementType RETURN_STATEMENT = new ElementTypeAsPsiFactory("RETURN_STATEMENT", JavaScriptLanguage.INSTANCE, JSReturnStatementImpl::new); IElementType THROW_STATEMENT = new ElementTypeAsPsiFactory("THROW_STATEMENT", JavaScriptLanguage.INSTANCE, JSThrowStatementImpl::new); diff --git a/base-impl/src/main/java/consulo/javascript/ide/hightlight/JavaScriptHighlighter.java b/base-impl/src/main/java/consulo/javascript/ide/hightlight/JavaScriptHighlighter.java index 5670f88c..5569c308 100644 --- a/base-impl/src/main/java/consulo/javascript/ide/hightlight/JavaScriptHighlighter.java +++ b/base-impl/src/main/java/consulo/javascript/ide/hightlight/JavaScriptHighlighter.java @@ -20,19 +20,16 @@ import com.intellij.lang.javascript.JSDocTokenTypes; import com.intellij.lang.javascript.JSTokenTypes; import com.intellij.lang.javascript.highlighting.JavaScriptHighlightingLexer; -import consulo.application.util.function.Processor; import consulo.colorScheme.TextAttributesKey; import consulo.language.ast.IElementType; import consulo.language.ast.StringEscapesTokenTypes; import consulo.language.ast.TokenSet; import consulo.language.editor.highlight.SyntaxHighlighterBase; -import consulo.language.impl.ast.Factory; import consulo.language.lexer.Lexer; +import consulo.util.collection.MultiMap; import consulo.xml.editor.XmlHighlighterColors; import javax.annotation.Nonnull; -import java.util.HashMap; -import java.util.Map; import java.util.function.Supplier; /** @@ -41,90 +38,86 @@ */ public class JavaScriptHighlighter extends SyntaxHighlighterBase { - private static Map keys1; - private static Map keys2; - - static + public static void storeDefaults(MultiMap keys) { - keys1 = new HashMap(); - keys2 = new HashMap(); - TokenSet operations = TokenSet.andNot(JSTokenTypes.OPERATIONS, TokenSet.create(JSTokenTypes.AS_KEYWORD, JSTokenTypes.IS_KEYWORD)); - SyntaxHighlighterBase.safeMap(keys1, operations, JavaScriptSyntaxHighlightKeys.JS_OPERATION_SIGN); + for(IElementType type : operations.getTypes()) + { + keys.putValue(type, JavaScriptSyntaxHighlightKeys.JS_OPERATION_SIGN); + } - safeMap(keys1, JSTokenTypes.KEYWORDS, JavaScriptSyntaxHighlightKeys.JS_KEYWORD); + for(IElementType type : JSTokenTypes.KEYWORDS.getTypes()) + { + keys.putValue(type, JavaScriptSyntaxHighlightKeys.JS_KEYWORD); + } - keys1.put(StringEscapesTokenTypes.VALID_STRING_ESCAPE_TOKEN, JavaScriptSyntaxHighlightKeys.JS_VALID_STRING_ESCAPE); - keys1.put(StringEscapesTokenTypes.INVALID_CHARACTER_ESCAPE_TOKEN, JavaScriptSyntaxHighlightKeys.JS_INVALID_STRING_ESCAPE); - keys1.put(StringEscapesTokenTypes.INVALID_UNICODE_ESCAPE_TOKEN, JavaScriptSyntaxHighlightKeys.JS_INVALID_STRING_ESCAPE); + keys.putValue(StringEscapesTokenTypes.VALID_STRING_ESCAPE_TOKEN, JavaScriptSyntaxHighlightKeys.JS_VALID_STRING_ESCAPE); + keys.putValue(StringEscapesTokenTypes.INVALID_CHARACTER_ESCAPE_TOKEN, JavaScriptSyntaxHighlightKeys.JS_INVALID_STRING_ESCAPE); + keys.putValue(StringEscapesTokenTypes.INVALID_UNICODE_ESCAPE_TOKEN, JavaScriptSyntaxHighlightKeys.JS_INVALID_STRING_ESCAPE); - keys1.put(JSTokenTypes.NUMERIC_LITERAL, JavaScriptSyntaxHighlightKeys.JS_NUMBER); - keys1.put(JSTokenTypes.STRING_LITERAL, JavaScriptSyntaxHighlightKeys.JS_STRING); - keys1.put(JSTokenTypes.SINGLE_QUOTE_STRING_LITERAL, JavaScriptSyntaxHighlightKeys.JS_STRING); - keys1.put(JSTokenTypes.INTERPOLATION_STRING_LITERAL, JavaScriptSyntaxHighlightKeys.JS_STRING); - keys1.put(JSTokenTypes.REGEXP_LITERAL, JavaScriptSyntaxHighlightKeys.JS_REGEXP); + keys.putValue(JSTokenTypes.NUMERIC_LITERAL, JavaScriptSyntaxHighlightKeys.JS_NUMBER); + keys.putValue(JSTokenTypes.STRING_LITERAL, JavaScriptSyntaxHighlightKeys.JS_STRING); + keys.putValue(JSTokenTypes.SINGLE_QUOTE_STRING_LITERAL, JavaScriptSyntaxHighlightKeys.JS_STRING); + keys.putValue(JSTokenTypes.INTERPOLATION_STRING_LITERAL, JavaScriptSyntaxHighlightKeys.JS_STRING); + keys.putValue(JSTokenTypes.REGEXP_LITERAL, JavaScriptSyntaxHighlightKeys.JS_REGEXP); - keys1.put(JSTokenTypes.LPAR, JavaScriptSyntaxHighlightKeys.JS_PARENTHS); - keys1.put(JSTokenTypes.RPAR, JavaScriptSyntaxHighlightKeys.JS_PARENTHS); + keys.putValue(JSTokenTypes.LPAR, JavaScriptSyntaxHighlightKeys.JS_PARENTHS); + keys.putValue(JSTokenTypes.RPAR, JavaScriptSyntaxHighlightKeys.JS_PARENTHS); - keys1.put(JSTokenTypes.LBRACE, JavaScriptSyntaxHighlightKeys.JS_BRACES); - keys1.put(JSTokenTypes.RBRACE, JavaScriptSyntaxHighlightKeys.JS_BRACES); + keys.putValue(JSTokenTypes.LBRACE, JavaScriptSyntaxHighlightKeys.JS_BRACES); + keys.putValue(JSTokenTypes.RBRACE, JavaScriptSyntaxHighlightKeys.JS_BRACES); - keys1.put(JSTokenTypes.LBRACKET, JavaScriptSyntaxHighlightKeys.JS_BRACKETS); - keys1.put(JSTokenTypes.RBRACKET, JavaScriptSyntaxHighlightKeys.JS_BRACKETS); + keys.putValue(JSTokenTypes.LBRACKET, JavaScriptSyntaxHighlightKeys.JS_BRACKETS); + keys.putValue(JSTokenTypes.RBRACKET, JavaScriptSyntaxHighlightKeys.JS_BRACKETS); - keys1.put(JSTokenTypes.COMMA, JavaScriptSyntaxHighlightKeys.JS_COMMA); - keys1.put(JSTokenTypes.DOT, JavaScriptSyntaxHighlightKeys.JS_DOT); - keys1.put(JSTokenTypes.SEMICOLON, JavaScriptSyntaxHighlightKeys.JS_SEMICOLON); + keys.putValue(JSTokenTypes.COMMA, JavaScriptSyntaxHighlightKeys.JS_COMMA); + keys.putValue(JSTokenTypes.DOT, JavaScriptSyntaxHighlightKeys.JS_DOT); + keys.putValue(JSTokenTypes.SEMICOLON, JavaScriptSyntaxHighlightKeys.JS_SEMICOLON); - keys1.put(JSTokenTypes.C_STYLE_COMMENT, JavaScriptSyntaxHighlightKeys.JS_BLOCK_COMMENT); - keys1.put(JSTokenTypes.XML_STYLE_COMMENT, JavaScriptSyntaxHighlightKeys.JS_BLOCK_COMMENT); - keys1.put(JSTokenTypes.DOC_COMMENT, JavaScriptSyntaxHighlightKeys.JS_DOC_COMMENT); - keys1.put(JSTokenTypes.END_OF_LINE_COMMENT, JavaScriptSyntaxHighlightKeys.JS_LINE_COMMENT); - keys1.put(JSTokenTypes.BAD_CHARACTER, JavaScriptSyntaxHighlightKeys.JS_BAD_CHARACTER); + keys.putValue(JSTokenTypes.C_STYLE_COMMENT, JavaScriptSyntaxHighlightKeys.JS_BLOCK_COMMENT); + keys.putValue(JSTokenTypes.XML_STYLE_COMMENT, JavaScriptSyntaxHighlightKeys.JS_BLOCK_COMMENT); + keys.putValue(JSTokenTypes.DOC_COMMENT, JavaScriptSyntaxHighlightKeys.JS_DOC_COMMENT); + keys.putValue(JSTokenTypes.END_OF_LINE_COMMENT, JavaScriptSyntaxHighlightKeys.JS_LINE_COMMENT); + keys.putValue(JSTokenTypes.BAD_CHARACTER, JavaScriptSyntaxHighlightKeys.JS_BAD_CHARACTER); - keys1.put(JSDocTokenTypes.DOC_TAG_NAME, JavaScriptSyntaxHighlightKeys.JS_DOC_COMMENT); - keys2.put(JSDocTokenTypes.DOC_TAG_NAME, JavaScriptSyntaxHighlightKeys.JS_DOC_TAG); + keys.putValue(JSDocTokenTypes.DOC_TAG_NAME, JavaScriptSyntaxHighlightKeys.JS_DOC_COMMENT); + keys.putValue(JSDocTokenTypes.DOC_TAG_NAME, JavaScriptSyntaxHighlightKeys.JS_DOC_TAG); - IElementType[] javadoc = IElementType.enumerate(new Processor() - { - @Override - public boolean process(IElementType type) - { - return type instanceof JSDocElementType; - } - }); + IElementType[] javadoc = IElementType.enumerate(type -> type instanceof JSDocElementType); for(IElementType type : javadoc) { - keys1.put(type, JavaScriptSyntaxHighlightKeys.JS_DOC_COMMENT); + keys.putValue(type, JavaScriptSyntaxHighlightKeys.JS_DOC_COMMENT); } - keys1.put(JSTokenTypes.JSDOC_TAG_DATA, JavaScriptSyntaxHighlightKeys.JS_DOC_COMMENT); + keys.putValue(JSTokenTypes.JSDOC_TAG_DATA, JavaScriptSyntaxHighlightKeys.JS_DOC_COMMENT); for(IElementType type : JSTokenTypes.XML_TOKENS.getTypes()) { - keys1.put(type, XmlHighlighterColors.XML_TAG); + keys.putValue(type, XmlHighlighterColors.XML_TAG); } - keys2.put(JSTokenTypes.XML_TAG_NAME, XmlHighlighterColors.XML_TAG_NAME); - keys2.put(JSTokenTypes.XML_NAME, XmlHighlighterColors.XML_ATTRIBUTE_NAME); - keys2.put(JSTokenTypes.XML_ATTR_VALUE, XmlHighlighterColors.XML_ATTRIBUTE_VALUE); - keys2.put(JSTokenTypes.XML_ATTR_VALUE_END, XmlHighlighterColors.XML_ATTRIBUTE_VALUE); - keys2.put(JSTokenTypes.XML_ATTR_VALUE_START, XmlHighlighterColors.XML_ATTRIBUTE_VALUE); - keys2.put(JSTokenTypes.XML_ATTR_EQUAL, XmlHighlighterColors.XML_ATTRIBUTE_VALUE); - keys2.put(JSTokenTypes.XML_ENTITY_REF, XmlHighlighterColors.XML_ENTITY_REFERENCE); + keys.putValue(JSTokenTypes.XML_TAG_NAME, XmlHighlighterColors.XML_TAG_NAME); + keys.putValue(JSTokenTypes.XML_NAME, XmlHighlighterColors.XML_ATTRIBUTE_NAME); + keys.putValue(JSTokenTypes.XML_ATTR_VALUE, XmlHighlighterColors.XML_ATTRIBUTE_VALUE); + keys.putValue(JSTokenTypes.XML_ATTR_VALUE_END, XmlHighlighterColors.XML_ATTRIBUTE_VALUE); + keys.putValue(JSTokenTypes.XML_ATTR_VALUE_START, XmlHighlighterColors.XML_ATTRIBUTE_VALUE); + keys.putValue(JSTokenTypes.XML_ATTR_EQUAL, XmlHighlighterColors.XML_ATTRIBUTE_VALUE); + keys.putValue(JSTokenTypes.XML_ENTITY_REF, XmlHighlighterColors.XML_ENTITY_REFERENCE); - keys1.put(JSTokenTypes.XML_STYLE_COMMENT, XmlHighlighterColors.XML_COMMENT); - keys1.put(JSTokenTypes.XML_TAG_CONTENT, XmlHighlighterColors.XML_TAG_DATA); + keys.putValue(JSTokenTypes.XML_STYLE_COMMENT, XmlHighlighterColors.XML_COMMENT); + keys.putValue(JSTokenTypes.XML_TAG_CONTENT, XmlHighlighterColors.XML_TAG_DATA); } - private Supplier myFactory; + private final Supplier myFactory; + private final MultiMap keys = MultiMap.createLinked(); public JavaScriptHighlighter(@Nonnull Supplier factory) { myFactory = factory; + + storeDefaults(keys); } @Nonnull @@ -138,6 +131,6 @@ public Lexer getHighlightingLexer() @Nonnull public TextAttributesKey[] getTokenHighlights(IElementType tokenType) { - return pack(keys1.get(tokenType), keys2.get(tokenType)); + return keys.get(tokenType).toArray(new TextAttributesKey[0]); } } diff --git a/plugin/src/main/java/consulo/javascript/impl/html/JavaScriptEmbeddedTokenHighlighter.java b/plugin/src/main/java/consulo/javascript/impl/html/JavaScriptEmbeddedTokenHighlighter.java new file mode 100644 index 00000000..8eea8195 --- /dev/null +++ b/plugin/src/main/java/consulo/javascript/impl/html/JavaScriptEmbeddedTokenHighlighter.java @@ -0,0 +1,27 @@ +package consulo.javascript.impl.html; + +import com.intellij.xml.highlighter.EmbeddedTokenHighlighter; +import consulo.annotation.component.ExtensionImpl; +import consulo.colorScheme.TextAttributesKey; +import consulo.javascript.ide.hightlight.JavaScriptHighlighter; +import consulo.language.ast.IElementType; +import consulo.util.collection.MultiMap; +import consulo.xml.lang.xml.XMLLanguage; +import jakarta.annotation.Nonnull; + +/** + * @author VISTALL + * @since 2024-04-19 + */ +@ExtensionImpl +public class JavaScriptEmbeddedTokenHighlighter implements EmbeddedTokenHighlighter +{ + @Nonnull + @Override + public MultiMap getEmbeddedTokenAttributes(@Nonnull XMLLanguage language) + { + MultiMap keys = MultiMap.createLinked(); + JavaScriptHighlighter.storeDefaults(keys); + return keys; + } +} diff --git a/plugin/src/main/java/consulo/javascript/impl/html/JavaScriptHtmlScriptContentProvider.java b/plugin/src/main/java/consulo/javascript/impl/html/JavaScriptHtmlScriptContentProvider.java new file mode 100644 index 00000000..174a10de --- /dev/null +++ b/plugin/src/main/java/consulo/javascript/impl/html/JavaScriptHtmlScriptContentProvider.java @@ -0,0 +1,41 @@ +package consulo.javascript.impl.html; + +import com.intellij.lang.javascript.JSElementTypes; +import consulo.annotation.component.ExtensionImpl; +import consulo.javascript.lang.lexer.JavaScript15Lexer; +import consulo.javascript.language.JavaScriptLanguage; +import consulo.language.Language; +import consulo.language.ast.IElementType; +import consulo.language.lexer.Lexer; +import consulo.xml.lang.HtmlScriptContentProvider; +import jakarta.annotation.Nonnull; + +import javax.annotation.Nullable; + +/** + * @author VISTALL + * @since 2024-04-19 + */ +@ExtensionImpl +public class JavaScriptHtmlScriptContentProvider implements HtmlScriptContentProvider +{ + @Override + public IElementType getScriptElementType() + { + return JSElementTypes.EMBEDDED_CONTENT; + } + + @Nullable + @Override + public Lexer getHighlightingLexer() + { + return new JavaScript15Lexer(); + } + + @Nonnull + @Override + public Language getLanguage() + { + return JavaScriptLanguage.INSTANCE; + } +} From d78f3fc36b9b3934b72a2442675778595c9d8d40 Mon Sep 17 00:00:00 2001 From: Valery Semenchuk Date: Sun, 19 May 2024 15:57:55 +0400 Subject: [PATCH 015/150] drop usage dead icon --- .../java/consulo/javascript/run/debug/v8/V8StackFrame.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8StackFrame.java b/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8StackFrame.java index 22ef8552..0f62be4d 100644 --- a/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8StackFrame.java +++ b/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8StackFrame.java @@ -16,13 +16,13 @@ package consulo.javascript.run.debug.v8; -import consulo.application.AllIcons; import consulo.execution.debug.XDebuggerUtil; import consulo.execution.debug.XSourcePosition; import consulo.execution.debug.evaluation.XDebuggerEvaluator; import consulo.execution.debug.frame.XCompositeNode; import consulo.execution.debug.frame.XStackFrame; import consulo.execution.debug.frame.XValueChildrenList; +import consulo.platform.base.icon.PlatformIconGroup; import consulo.ui.ex.ColoredTextContainer; import consulo.ui.ex.SimpleTextAttributes; import org.chromium.sdk.*; @@ -131,7 +131,7 @@ public void customizePresentation(ColoredTextContainer component) } component.append(":" + (statementStartPosition.getLine() + 1), SimpleTextAttributes.REGULAR_ATTRIBUTES); - component.setIcon(AllIcons.Debugger.StackFrame); + component.setIcon(PlatformIconGroup.debuggerFrame()); } @Override From a55b4b04b6dc1a046c741645edd91e2d0e65da03 Mon Sep 17 00:00:00 2001 From: Valery Semenchuk Date: Thu, 30 May 2024 14:11:59 +0400 Subject: [PATCH 016/150] drop flex icon and add another javascriptmodule icon --- .../flex.png | Bin 677 -> 0 bytes .../javaScriptModule.svg | 7 +++++++ .../ClientJavaScriptModuleExtensionProvider.java | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) delete mode 100644 base-api/src/main/resources/ICON-LIB/light/consulo.javascript.JavaScriptIconGroup/flex.png create mode 100644 base-api/src/main/resources/ICON-LIB/light/consulo.javascript.JavaScriptIconGroup/javaScriptModule.svg diff --git a/base-api/src/main/resources/ICON-LIB/light/consulo.javascript.JavaScriptIconGroup/flex.png b/base-api/src/main/resources/ICON-LIB/light/consulo.javascript.JavaScriptIconGroup/flex.png deleted file mode 100644 index cf39e7dd234e4c57a6ebe097ae0c6904c213e26d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 677 zcmV;W0$TlvP)9spBFwpedw{NU)zl4Q_ zUjX^_&!0a){1@!+IdkTM>6b5G{*Q`^xd(KSB8Ud@L15Ob*+1Y0I66A-TfctepDkOq z{{Q&#BUnLFQu2S8Vi4Wd*6|ma4|K_4)F@$KNG&g~{PFwuZ?H>(gG25{N5{N_X@UU| zKQS@sCQv;GiUA%Tp8Fp?dIDB-?AY=Dva<4pKt<+dW#zw-4FK^$;_!sz=jXqtwYBZt z2cKzzHSqb&gBJzzTc%f-d@d;R+Lr?+q4=87#HFjAVG0RjvF{yXBrY*xH300000 LNkvXXu0mjf&(1xy diff --git a/base-api/src/main/resources/ICON-LIB/light/consulo.javascript.JavaScriptIconGroup/javaScriptModule.svg b/base-api/src/main/resources/ICON-LIB/light/consulo.javascript.JavaScriptIconGroup/javaScriptModule.svg new file mode 100644 index 00000000..fc6ba53d --- /dev/null +++ b/base-api/src/main/resources/ICON-LIB/light/consulo.javascript.JavaScriptIconGroup/javaScriptModule.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptModuleExtensionProvider.java b/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptModuleExtensionProvider.java index a288b88d..b0a3cc4d 100644 --- a/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptModuleExtensionProvider.java +++ b/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptModuleExtensionProvider.java @@ -42,7 +42,7 @@ public LocalizeValue getName() @Override public Image getIcon() { - return JavaScriptIconGroup.javascript(); + return JavaScriptIconGroup.javascriptmodule(); } @Nonnull From 3d6eefb1f7097b2e5261be01c56613f38c8483f7 Mon Sep 17 00:00:00 2001 From: Valery Semenchuk Date: Sun, 16 Jun 2024 15:48:02 +0400 Subject: [PATCH 017/150] use JS icon for SDK not js file icon --- .../javascript/client/module/sdk/ClientJavaScriptSdkType.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/web-browser-impl/src/main/java/consulo/javascript/client/module/sdk/ClientJavaScriptSdkType.java b/web-browser-impl/src/main/java/consulo/javascript/client/module/sdk/ClientJavaScriptSdkType.java index 96a286b9..c23416e2 100644 --- a/web-browser-impl/src/main/java/consulo/javascript/client/module/sdk/ClientJavaScriptSdkType.java +++ b/web-browser-impl/src/main/java/consulo/javascript/client/module/sdk/ClientJavaScriptSdkType.java @@ -41,11 +41,11 @@ public boolean isRootTypeApplicable(OrderRootType type) return type == BinariesOrderRootType.getInstance() || type == SourcesOrderRootType.getInstance(); } - @Nullable + @Nonnull @Override public Image getIcon() { - return JavaScriptIconGroup.javascript(); + return JavaScriptIconGroup.javascriptmodule(); } @Override From 99ec26f419a731e82a257ea649ba39806473713f Mon Sep 17 00:00:00 2001 From: UNV Date: Fri, 5 Jul 2024 20:40:52 +0300 Subject: [PATCH 018/150] Run configuration added. --- .../consulo_run_desktop_awt.xml | 45 +++++++++++++++++++ .gitignore | 1 + 2 files changed, 46 insertions(+) create mode 100644 .consulo/runConfigurations/consulo_run_desktop_awt.xml diff --git a/.consulo/runConfigurations/consulo_run_desktop_awt.xml b/.consulo/runConfigurations/consulo_run_desktop_awt.xml new file mode 100644 index 00000000..9e5dd1e0 --- /dev/null +++ b/.consulo/runConfigurations/consulo_run_desktop_awt.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.gitignore b/.gitignore index 9cdefba6..d7c94e2a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ /.consulo !/.consulo/codeStyleSettings.xml +!/.consulo/runConfigurations /out /target target/ From cc8297daabf6cb1b097c70d2c8d2de5cf6c0dab4 Mon Sep 17 00:00:00 2001 From: Valery Semenchuk Date: Fri, 5 Jul 2024 21:43:30 +0400 Subject: [PATCH 019/150] Create maven.yml --- .github/workflows/maven.yml | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 .github/workflows/maven.yml diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml new file mode 100644 index 00000000..b2e62c5b --- /dev/null +++ b/.github/workflows/maven.yml @@ -0,0 +1,25 @@ +# This workflow will build a Java project with Maven +# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven + +name: jdk21 + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Set up JDK 21 + uses: actions/setup-java@v1 + with: + distribution: 'temurin' + java-version: 21 + - name: Build with Maven + run: mvn -U -T 1C -Dmaven.javadoc.skip=true -B -V clean package From 1e2db0af0b77ed2bc1440fca988fd7c0f19b41ac Mon Sep 17 00:00:00 2001 From: UNV Date: Sat, 6 Jul 2024 17:15:12 +0300 Subject: [PATCH 020/150] Replacing JavaScriptBundle with JavaScriptLocalize refactoring. --- .../javascript/language/JavaScriptBundle.java | 6 + ...consulo.javascript.JavaScriptLocalize.yaml | 2 +- .../messages/JavaScriptBundle.properties | 2 +- .../lang/javascript/JSTokenTypes.java | 8 +- .../CreateJSFunctionOrMethodFix.java | 7 +- .../lang/javascript/parsing/JSDocParsing.java | 10 +- .../javascript/psi/impl/JSDocTagImpl.java | 9 +- .../javascript/psi/impl/JSReferenceSet.java | 4 +- .../qucikFixes/CreateJSFunctionFixBase.java | 26 +- .../lang/parsing/ExpressionParsing.java | 90 +-- .../lang/parsing/FunctionParsing.java | 10 +- .../lang/parsing/StatementParsing.java | 78 +-- .../parsing/EcmaScriptExpressionParsing.java | 9 +- .../parsing/EcmaScriptStatementParsing.java | 17 +- .../parsing/EcmaScript4ExpressionParsing.java | 10 +- .../parsing/EcmaScript4FunctionParsing.java | 26 +- .../parsing/EcmaScript4StatementParsing.java | 38 +- .../json/lang/JsonJavaScriptParser.java | 30 +- .../intellij/javascript/JSClassNameMacro.java | 4 +- .../javascript/JSMethodNameMacro.java | 4 +- .../impl/JSSmartEnterProcessor.java | 10 +- .../impl/JavaScriptCodeContextType.java | 6 +- .../JavaScriptFindUsagesProvider.java | 48 +- ...ImportECMAScriptClassOrFunctionAction.java | 130 ++-- .../generation/BaseJSGenerateHandler.java | 7 +- .../JavaScriptGenerateAccessorHandler.java | 23 +- .../JavaScriptImplementMethodsHandler.java | 16 +- .../JavaScriptOverrideMethodsHandler.java | 14 +- .../JavaScriptColorsAndFontsPage.java | 58 +- .../JavaScriptHighlightVisitor.java | 5 +- .../impl/inspections/CreateClassDialog.java | 17 +- .../CreateClassOrInterfaceAction.java | 30 +- .../JSDeprecatedSymbolsInspection.java | 11 +- .../JSDuplicatedDeclarationInspection.java | 14 +- .../JSUndeclaredVariableInspection.java | 16 +- .../JSUnresolvedFunctionInspection.java | 215 ++++-- .../JSUnresolvedVariableInspection.java | 56 +- .../JSUntypedDeclarationInspection.java | 18 +- .../JSUnusedLocalSymbolsInspection.java | 69 +- .../JSBaseClassBasedIntroduceDialog.java | 10 +- .../refactoring/JSBaseIntroduceDialog.java | 29 +- .../refactoring/JSBaseIntroduceHandler.java | 79 ++- .../JSExtractFunctionDialog.java | 10 +- .../JSExtractFunctionHandler.java | 38 +- .../JSIntroduceConstantDialog.java | 13 +- .../JSIntroduceConstantHandler.java | 33 +- .../JSIntroduceFieldDialog.java | 5 +- .../JSIntroduceFieldHandler.java | 21 +- .../JSIntroduceVariableDialog.java | 14 +- .../JSIntroduceVariableHandler.java | 12 +- .../search/JSDefinitionsSearchExecutor.java | 81 +-- .../JSStructureItemPresentation.java | 44 +- .../structureView/JSStructureViewModel.java | 12 +- .../surroundWith/JSWithDoWhileSurrounder.java | 6 +- .../surroundWith/JSWithForSurrounder.java | 10 +- .../JSWithFunctionExpressionSurrounder.java | 6 +- .../JSWithFunctionSurrounder.java | 8 +- .../surroundWith/JSWithIfElseSurrounder.java | 4 +- .../impl/surroundWith/JSWithIfSurrounder.java | 10 +- .../JSWithParenthesesSurrounder.java | 16 +- .../JSWithTryCatchFinallySurrounder.java | 14 +- .../JSWithTryCatchSurrounder.java | 4 +- .../JSWithTryFinallySurrounder.java | 4 +- .../surroundWith/JSWithWhileSurrounder.java | 4 +- .../surroundWith/JSWithWithSurrounder.java | 8 +- .../impl/validation/ImplementMethodsFix.java | 4 +- .../impl/validation/JSAnnotatingVisitor.java | 614 ++++++++++-------- 67 files changed, 1230 insertions(+), 1036 deletions(-) diff --git a/base-api/src/main/java/consulo/javascript/language/JavaScriptBundle.java b/base-api/src/main/java/consulo/javascript/language/JavaScriptBundle.java index f2196d68..e99945a8 100644 --- a/base-api/src/main/java/consulo/javascript/language/JavaScriptBundle.java +++ b/base-api/src/main/java/consulo/javascript/language/JavaScriptBundle.java @@ -16,10 +16,16 @@ package consulo.javascript.language; +import consulo.annotation.DeprecationInfo; +import consulo.annotation.internal.MigratedExtensionsTo; +import consulo.javascript.localize.JavaScriptLocalize; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.PropertyKey; import consulo.component.util.localize.AbstractBundle; +@Deprecated(forRemoval = true) +@DeprecationInfo("Use JavaScriptLocalize") +@MigratedExtensionsTo(JavaScriptLocalize.class) public class JavaScriptBundle extends AbstractBundle { @NonNls diff --git a/base-api/src/main/resources/LOCALIZE-LIB/en_US/consulo.javascript.JavaScriptLocalize.yaml b/base-api/src/main/resources/LOCALIZE-LIB/en_US/consulo.javascript.JavaScriptLocalize.yaml index 5fb96c45..4a232a38 100644 --- a/base-api/src/main/resources/LOCALIZE-LIB/en_US/consulo.javascript.JavaScriptLocalize.yaml +++ b/base-api/src/main/resources/LOCALIZE-LIB/en_US/consulo.javascript.JavaScriptLocalize.yaml @@ -508,7 +508,7 @@ javascript.fix.remove.access.modifier: text: Remove access modifier javascript.fix.remove.namespace.reference: text: Remove namespace reference -javascript.incorrect.array.type.in.for.in: +javascript.incorrect.array.type.in.forin: text: Array key type should be String javascript.validation.message.unexpected.type.for.rest.parameter: text: Rest parameter should have no type diff --git a/base-api/src/main/resources/messages/JavaScriptBundle.properties b/base-api/src/main/resources/messages/JavaScriptBundle.properties index 7d5c67d4..e16ad614 100644 --- a/base-api/src/main/resources/messages/JavaScriptBundle.properties +++ b/base-api/src/main/resources/messages/JavaScriptBundle.properties @@ -266,7 +266,7 @@ javascript.validation.message.access.modifier.allowed.only.for.package.members=O javascript.validation.message.use.namespace.reference.or.access.modifier=Use namespace OR access modifier javascript.fix.remove.access.modifier=Remove access modifier javascript.fix.remove.namespace.reference=Remove namespace reference -javascript.incorrect.array.type.in.for-in=Array key type should be String +javascript.incorrect.array.type.in.forin=Array key type should be String javascript.validation.message.unexpected.type.for.rest.parameter=Rest parameter should have no type javascript.fix.remove.type.reference=Remove type reference javascript.validation.message.parameter.is.not.allowed.after.rest.parameter=No parameter is allowed after rest parameter diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/JSTokenTypes.java b/base-impl/src/main/java/com/intellij/lang/javascript/JSTokenTypes.java index afe4b19a..039ad4ea 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/JSTokenTypes.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/JSTokenTypes.java @@ -21,11 +21,11 @@ import consulo.annotation.DeprecationInfo; import consulo.annotation.access.RequiredReadAction; import consulo.javascript.lang.JavaScriptContextKeywordElementType; -import consulo.javascript.language.JavaScriptLanguage; import consulo.javascript.lang.parsing.JavaScriptParser; import consulo.javascript.lang.parsing.JavaScriptParsingContext; import consulo.javascript.lang.parsing.Parsing; -import consulo.javascript.language.JavaScriptBundle; +import consulo.javascript.language.JavaScriptLanguage; +import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.Language; import consulo.language.ast.*; import consulo.language.lexer.FlexAdapter; @@ -167,12 +167,12 @@ protected void doParse(JavaScriptParsingContext context, PsiBuilder builder) public void parseScriptExpression(JavaScriptParsingContext context, final PsiBuilder builder) { PsiBuilder.Marker root = builder.mark(); - Parsing.checkMatches(builder, JSTokenTypes.LBRACE, JavaScriptBundle.message("javascript.parser.message.expected.lbrace")); + Parsing.checkMatches(builder, JSTokenTypes.LBRACE, JavaScriptLocalize.javascriptParserMessageExpectedLbrace().get()); if(builder.getTokenType() != JSTokenTypes.RBRACE) { context.getExpressionParsing().parseExpression(builder); } - Parsing.checkMatches(builder, JSTokenTypes.RBRACE, JavaScriptBundle.message("javascript.parser.message.expected.rbrace")); + Parsing.checkMatches(builder, JSTokenTypes.RBRACE, JavaScriptLocalize.javascriptParserMessageExpectedRbrace().get()); while(!builder.eof()) { diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/inspections/qucikFixes/CreateJSFunctionOrMethodFix.java b/base-impl/src/main/java/com/intellij/lang/javascript/inspections/qucikFixes/CreateJSFunctionOrMethodFix.java index 4a307112..3e17cb49 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/inspections/qucikFixes/CreateJSFunctionOrMethodFix.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/inspections/qucikFixes/CreateJSFunctionOrMethodFix.java @@ -24,6 +24,7 @@ import consulo.annotation.access.RequiredReadAction; import consulo.javascript.inspections.qucikFixes.CreateJSFunctionFixBase; import consulo.javascript.language.JavaScriptFeature; +import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.editor.template.Expression; import consulo.language.editor.template.Template; import consulo.language.psi.PsiElement; @@ -37,7 +38,11 @@ public class CreateJSFunctionOrMethodFix extends CreateJSFunctionFixBase public CreateJSFunctionOrMethodFix(String name, boolean isMethod) { - super(name, isMethod ? "javascript.create.method.intention.name" : "javascript.create.function.intention.name"); + super( + isMethod + ? JavaScriptLocalize.javascriptCreateMethodIntentionName(name) + : JavaScriptLocalize.javascriptCreateFunctionIntentionName(name) + ); myIsMethod = isMethod; } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/parsing/JSDocParsing.java b/base-impl/src/main/java/com/intellij/lang/javascript/parsing/JSDocParsing.java index 6d661592..04ba5023 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/parsing/JSDocParsing.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/parsing/JSDocParsing.java @@ -16,12 +16,12 @@ package com.intellij.lang.javascript.parsing; -import org.jetbrains.annotations.NonNls; -import consulo.language.parser.PsiBuilder; -import consulo.javascript.language.JavaScriptBundle; import com.intellij.lang.javascript.JSDocTokenTypes; import com.intellij.lang.javascript.JSTokenTypes; +import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.ast.IElementType; +import consulo.language.parser.PsiBuilder; +import org.jetbrains.annotations.NonNls; /** * @author Maxim.Mossienko @@ -67,7 +67,7 @@ private static boolean parseDocTag(final PsiBuilder builder) if(isInvalidTokenType(builder)) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.doc.tag.name")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedDocTagName().get()); return false; } @@ -106,7 +106,7 @@ else if(!currentText.startsWith("{")) if(isInvalidTokenType(builder)) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.doc.tag.value")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedDocTagValue().get()); return false; } } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDocTagImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDocTagImpl.java index 9315b9a8..40457c25 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDocTagImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDocTagImpl.java @@ -17,15 +17,15 @@ package com.intellij.lang.javascript.psi.impl; import com.intellij.lang.javascript.JSDocTokenTypes; -import consulo.javascript.language.JavaScriptBundle; import com.intellij.lang.javascript.psi.*; import com.intellij.lang.javascript.psi.util.JSLookupUtil; import consulo.document.util.TextRange; +import consulo.javascript.localize.JavaScriptLocalize; +import consulo.language.ast.ASTNode; import consulo.language.editor.util.PsiUtilBase; import consulo.language.psi.*; -import consulo.language.util.IncorrectOperationException; -import consulo.language.ast.ASTNode; import consulo.language.psi.util.PsiTreeUtil; +import consulo.language.util.IncorrectOperationException; import consulo.util.collection.ArrayUtil; import org.jetbrains.annotations.NonNls; @@ -334,8 +334,7 @@ public boolean isSoft() @Override public String getUnresolvedMessagePattern() { - return JavaScriptBundle.message("javascript.validation.message.incorrect.parameter.name"); + return JavaScriptLocalize.javascriptValidationMessageIncorrectParameterName().get(); } } - } \ No newline at end of file diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSReferenceSet.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSReferenceSet.java index 96541daa..35709537 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSReferenceSet.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSReferenceSet.java @@ -16,13 +16,13 @@ package com.intellij.lang.javascript.psi.impl; -import consulo.javascript.language.JavaScriptBundle; import com.intellij.lang.javascript.JavaScriptSupportLoader; import com.intellij.lang.javascript.flex.XmlBackedJSClassImpl; import com.intellij.lang.javascript.psi.*; import com.intellij.lang.javascript.psi.resolve.*; import consulo.annotation.access.RequiredReadAction; import consulo.document.util.TextRange; +import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.ast.ASTNode; import consulo.language.psi.*; import consulo.language.psi.resolve.ResolveCache; @@ -553,7 +553,7 @@ public String getUnresolvedMessagePattern() { String text = getCanonicalText(); text = "'" + text.replace("'", "''") + "'"; - return JavaScriptBundle.message("javascript.unresolved.variable.or.type.name.message2", text); + return JavaScriptLocalize.javascriptUnresolvedVariableOrTypeNameMessage2(text).get(); } } diff --git a/base-impl/src/main/java/consulo/javascript/inspections/qucikFixes/CreateJSFunctionFixBase.java b/base-impl/src/main/java/consulo/javascript/inspections/qucikFixes/CreateJSFunctionFixBase.java index 30741b9d..07652605 100644 --- a/base-impl/src/main/java/consulo/javascript/inspections/qucikFixes/CreateJSFunctionFixBase.java +++ b/base-impl/src/main/java/consulo/javascript/inspections/qucikFixes/CreateJSFunctionFixBase.java @@ -17,16 +17,16 @@ package consulo.javascript.inspections.qucikFixes; -import consulo.javascript.language.JavaScriptBundle; import com.intellij.lang.javascript.inspections.qucikFixes.BaseCreateFix; import com.intellij.lang.javascript.psi.JSClass; import com.intellij.lang.javascript.psi.JSReferenceExpression; import consulo.annotation.access.RequiredReadAction; import consulo.javascript.language.JavaScriptFeature; +import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.editor.template.Template; import consulo.language.psi.PsiElement; import consulo.language.psi.PsiFile; -import org.jetbrains.annotations.PropertyKey; +import consulo.localize.LocalizeValue; import javax.annotation.Nonnull; import java.util.Set; @@ -37,33 +37,37 @@ */ public abstract class CreateJSFunctionFixBase extends BaseCreateFix { - private final String myName; - private final String myIntentionNameKey; + private final LocalizeValue myMessage; - public CreateJSFunctionFixBase(String name, @PropertyKey(resourceBundle = JavaScriptBundle.BUNDLE) String nameKey) + public CreateJSFunctionFixBase(LocalizeValue message) { - myName = name; - myIntentionNameKey = nameKey; + myMessage = message; } @Override @Nonnull public String getName() { - return JavaScriptBundle.message(myIntentionNameKey, myName); + return myMessage.get(); } @Override @Nonnull public String getFamilyName() { - return JavaScriptBundle.message("javascript.create.function.intention.family"); + return JavaScriptLocalize.javascriptCreateFunctionIntentionFamily().get(); } @RequiredReadAction @Override - protected void buildTemplate(Template template, JSReferenceExpression referenceExpression, Set features, boolean staticContext, PsiFile file, - PsiElement anchorParent) + protected void buildTemplate( + Template template, + JSReferenceExpression referenceExpression, + Set features, + boolean staticContext, + PsiFile file, + PsiElement anchorParent + ) { boolean classFeature = features.contains(JavaScriptFeature.CLASS); String referencedName = classFeature ? referenceExpression.getReferencedName() : referenceExpression.getText(); diff --git a/base-impl/src/main/java/consulo/javascript/lang/parsing/ExpressionParsing.java b/base-impl/src/main/java/consulo/javascript/lang/parsing/ExpressionParsing.java index 7962317f..bdaf5b00 100644 --- a/base-impl/src/main/java/consulo/javascript/lang/parsing/ExpressionParsing.java +++ b/base-impl/src/main/java/consulo/javascript/lang/parsing/ExpressionParsing.java @@ -19,8 +19,8 @@ import com.intellij.javascript.documentation.JSDocumentationUtils; import com.intellij.lang.javascript.JSElementTypes; import com.intellij.lang.javascript.JSTokenTypes; -import consulo.javascript.language.JavaScriptBundle; import consulo.javascript.lang.JavaScriptTokenSets; +import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.ast.IElementType; import consulo.language.ast.TokenSet; import consulo.language.parser.PsiBuilder; @@ -143,11 +143,11 @@ else if(tokenType == JSTokenTypes.LBRACKET) { builder.advanceLexer(); parseExpression(builder); - Parsing.checkMatches(builder, JSTokenTypes.RBRACKET, JavaScriptBundle.message("javascript.parser.message.expected.rbracket")); + Parsing.checkMatches(builder, JSTokenTypes.RBRACKET, JavaScriptLocalize.javascriptParserMessageExpectedRbracket().get()); } else { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.identifier")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedIdentifier().get()); } } @@ -188,7 +188,7 @@ public static String validateLiteral(final PsiBuilder builder) ttext.startsWith("\"") && (!ttext.endsWith("\"") || ttext.length() == 1) || ttext.startsWith("\'") && (!ttext.endsWith("\'") || ttext.length() == 1)) { - return JavaScriptBundle.message("javascript.parser.message.unclosed.string.literal"); + return JavaScriptLocalize.javascriptParserMessageUnclosedStringLiteral().get(); } } @@ -245,13 +245,13 @@ else if(elementType == JSTokenTypes.COMMA) } else { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.comma")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedComma().get()); } elementType = builder.getTokenType(); if(elementType == JSTokenTypes.RBRACE) { - builder.error(JavaScriptBundle.message("javascript.parser.property.expected")); + builder.error(JavaScriptLocalize.javascriptParserPropertyExpected().get()); } else if(isNotPropertyStart(builder, elementType)) { @@ -259,7 +259,7 @@ else if(isNotPropertyStart(builder, elementType)) } } - Parsing.checkMatches(builder, JSTokenTypes.RBRACE, JavaScriptBundle.message("javascript.parser.message.expected.rbrace")); + Parsing.checkMatches(builder, JSTokenTypes.RBRACE, JavaScriptLocalize.javascriptParserMessageExpectedRbrace().get()); expr.done(JSElementTypes.OBJECT_LITERAL_EXPRESSION); } @@ -275,16 +275,16 @@ protected void parseProperty(final PsiBuilder builder) if(isNotPropertyStart(builder, nameToken)) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.identifier.string.literal.or.numeric.literal")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedIdentifierStringLiteralOrNumericLiteral().get()); } builder.advanceLexer(); - Parsing.checkMatches(builder, JSTokenTypes.COLON, JavaScriptBundle.message("javascript.parser.message.expected.colon")); + Parsing.checkMatches(builder, JSTokenTypes.COLON, JavaScriptLocalize.javascriptParserMessageExpectedColon().get()); builder.putUserData(WITHIN_OBJECT_LITERAL_EXPRESSION, Boolean.TRUE); if(!parseAssignmentExpression(builder)) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.expression")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); } builder.putUserData(WITHIN_OBJECT_LITERAL_EXPRESSION, null); @@ -309,7 +309,11 @@ public void parseArrayLiteralExpression(final PsiBuilder builder) { if(commaExpected) { - final boolean b = Parsing.checkMatches(builder, JSTokenTypes.COMMA, JavaScriptBundle.message("javascript.parser.message.expected.comma")); + final boolean b = Parsing.checkMatches( + builder, + JSTokenTypes.COMMA, + JavaScriptLocalize.javascriptParserMessageExpectedComma().get() + ); if(!b) { break; @@ -326,7 +330,7 @@ public void parseArrayLiteralExpression(final PsiBuilder builder) { if(!parseAssignmentExpression(builder)) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.expression")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); break; } else @@ -335,7 +339,7 @@ public void parseArrayLiteralExpression(final PsiBuilder builder) } } } - Parsing.checkMatches(builder, JSTokenTypes.RBRACKET, JavaScriptBundle.message("javascript.parser.message.expected.rbracket")); + Parsing.checkMatches(builder, JSTokenTypes.RBRACKET, JavaScriptLocalize.javascriptParserMessageExpectedRbracket().get()); expr.done(JSElementTypes.ARRAY_LITERAL_EXPRESSION); } finally @@ -350,7 +354,7 @@ private void parseParenthesizedExpression(final PsiBuilder builder) final PsiBuilder.Marker expr = builder.mark(); builder.advanceLexer(); parseExpression(builder); - Parsing.checkMatches(builder, JSTokenTypes.RPAR, JavaScriptBundle.message("javascript.parser.message.expected.rparen")); + Parsing.checkMatches(builder, JSTokenTypes.RPAR, JavaScriptLocalize.javascriptParserMessageExpectedRparen().get()); expr.done(JSElementTypes.PARENTHESIZED_EXPRESSION); } @@ -420,7 +424,7 @@ protected boolean parseMemberExpression(PsiBuilder builder, boolean allowCallSyn } else { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.name")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedName().get()); } expr.done(JSElementTypes.REFERENCE_EXPRESSION); @@ -430,7 +434,7 @@ else if(tokenType == JSTokenTypes.LBRACKET) { builder.advanceLexer(); parseExpression(builder); - Parsing.checkMatches(builder, JSTokenTypes.RBRACKET, JavaScriptBundle.message("javascript.parser.message.expected.rbracket")); + Parsing.checkMatches(builder, JSTokenTypes.RBRACKET, JavaScriptLocalize.javascriptParserMessageExpectedRbracket().get()); expr.done(JSElementTypes.INDEXED_PROPERTY_ACCESS_EXPRESSION); expr = expr.precede(); } @@ -495,7 +499,7 @@ else if(tokenType == JSTokenTypes.DEFAULT_KEYWORD || (tokenType != JSTokenTypes. } else { - Parsing.checkMatches(builder, JSTokenTypes.IDENTIFIER, JavaScriptBundle.message("javascript.parser.message.expected.name")); + Parsing.checkMatches(builder, JSTokenTypes.IDENTIFIER, JavaScriptLocalize.javascriptParserMessageExpectedName().get()); } expr.done(JSElementTypes.REFERENCE_EXPRESSION); expr = expr.precede(); @@ -523,7 +527,7 @@ protected boolean parseNewExpression(PsiBuilder builder) if(!parseMemberExpression(builder, false)) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.expression")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); } return false; } @@ -548,17 +552,17 @@ protected void parseArgumentList(final PsiBuilder builder) } else { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.comma.or.rparen")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedCommaOrRparen().get()); break; } } if(!parseAssignmentExpression(builder)) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.expression")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); } } - Parsing.checkMatches(builder, JSTokenTypes.RPAR, JavaScriptBundle.message("javascript.parser.message.expected.rparen")); + Parsing.checkMatches(builder, JSTokenTypes.RPAR, JavaScriptLocalize.javascriptParserMessageExpectedRparen().get()); arglist.done(JSElementTypes.ARGUMENT_LIST); } @@ -566,7 +570,7 @@ public void parseExpression(PsiBuilder builder) { if(!parseExpressionOptional(builder)) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.expression")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); } } @@ -586,11 +590,11 @@ private boolean parseAssignmentExpression(final PsiBuilder builder, boolean allo if(JSTokenTypes.ASSIGNMENT_OPERATIONS.contains(builder.getTokenType()) && builder.getUserData(WITHIN_OBJECT_LITERAL_EXPRESSION) == null) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.expression")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); builder.advanceLexer(); if(!parseAssignmentExpression(builder, allowIn)) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.expression")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); } expr.done(JSElementTypes.ASSIGNMENT_EXPRESSION); return true; @@ -610,7 +614,7 @@ private boolean parseAssignmentExpression(final PsiBuilder builder, boolean allo builder.advanceLexer(); if(!parseAssignmentExpression(builder, allowIn)) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.expression")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); } expr.done(JSElementTypes.ASSIGNMENT_EXPRESSION); } @@ -638,12 +642,12 @@ private boolean parseConditionalExpression(final PsiBuilder builder, final boole builder.advanceLexer(); if(!parseAssignmentExpression(builder, allowIn)) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.expression")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); } - Parsing.checkMatches(builder, JSTokenTypes.COLON, JavaScriptBundle.message("javascript.parser.message.expected.colon")); + Parsing.checkMatches(builder, JSTokenTypes.COLON, JavaScriptLocalize.javascriptParserMessageExpectedColon().get()); if(!parseAssignmentExpression(builder, allowIn)) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.expression")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); } expr.done(JSElementTypes.CONDITIONAL_EXPRESSION); } @@ -673,7 +677,7 @@ private boolean parseORExpression(final PsiBuilder builder, final boolean allowI builder.advanceLexer(); if(!parseANDExpression(builder, allowIn)) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.expression")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); } expr.done(JSElementTypes.BINARY_EXPRESSION); expr = expr.precede(); @@ -697,7 +701,7 @@ private boolean parseANDExpression(final PsiBuilder builder, final boolean allow builder.advanceLexer(); if(!parseBitwiseORExpression(builder, allowIn)) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.expression")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); } expr.done(JSElementTypes.BINARY_EXPRESSION); expr = expr.precede(); @@ -721,7 +725,7 @@ private boolean parseBitwiseORExpression(final PsiBuilder builder, final boolean builder.advanceLexer(); if(!parseBitwiseXORExpression(builder, allowIn)) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.expression")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); } expr.done(JSElementTypes.BINARY_EXPRESSION); expr = expr.precede(); @@ -745,7 +749,7 @@ private boolean parseBitwiseXORExpression(final PsiBuilder builder, final boolea builder.advanceLexer(); if(!parseBitwiseANDExpression(builder, allowIn)) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.expression")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); } expr.done(JSElementTypes.BINARY_EXPRESSION); expr = expr.precede(); @@ -769,7 +773,7 @@ private boolean parseBitwiseANDExpression(final PsiBuilder builder, final boolea builder.advanceLexer(); if(!parseEqualityExpression(builder, allowIn)) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.expression")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); } expr.done(JSElementTypes.BINARY_EXPRESSION); expr = expr.precede(); @@ -793,7 +797,7 @@ private boolean parseEqualityExpression(final PsiBuilder builder, final boolean builder.advanceLexer(); if(!parseRelationalExpression(builder, allowIn)) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.expression")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); } expr.done(JSElementTypes.BINARY_EXPRESSION); expr = expr.precede(); @@ -816,7 +820,7 @@ private boolean parseRelationalExpression(final PsiBuilder builder, final boolea builder.advanceLexer(); if(!parseShiftExpression(builder)) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.expression")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); } expr.done(JSElementTypes.BINARY_EXPRESSION); expr = expr.precede(); @@ -839,7 +843,7 @@ private boolean parseShiftExpression(final PsiBuilder builder) builder.advanceLexer(); if(!parseAdditiveExpression(builder)) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.expression")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); } expr.done(JSElementTypes.BINARY_EXPRESSION); expr = expr.precede(); @@ -862,7 +866,7 @@ private boolean parseAdditiveExpression(final PsiBuilder builder) builder.advanceLexer(); if(!parseMultiplicativeExpression(builder)) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.expression")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); } expr.done(JSElementTypes.BINARY_EXPRESSION); expr = expr.precede(); @@ -886,7 +890,7 @@ private boolean parseIsAsExpression(final PsiBuilder builder) builder.advanceLexer(); if(!parseUnaryExpression(builder)) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.expression")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); } expr.done(JSElementTypes.BINARY_EXPRESSION); expr = expr.precede(); @@ -915,7 +919,7 @@ protected boolean parseMultiplicativeExpression(final PsiBuilder builder, TokenS builder.advanceLexer(); if(!parseUnaryExpression(builder)) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.expression")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); } expr.done(JSElementTypes.BINARY_EXPRESSION); expr = expr.precede(); @@ -934,7 +938,7 @@ private boolean parseUnaryExpression(final PsiBuilder builder) builder.advanceLexer(); if(!parseUnaryExpression(builder)) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.expression")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); } expr.done(JSElementTypes.PREFIX_EXPRESSION); return true; @@ -997,7 +1001,7 @@ public boolean parseExpressionOptional(final PsiBuilder builder, final boolean a builder.advanceLexer(); if(!parseAssignmentExpression(builder, allowIn)) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.expression")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); } expr.done(JSElementTypes.COMMA_EXPRESSION); @@ -1023,7 +1027,7 @@ public boolean parseType(final PsiBuilder builder) } else if(!parseQualifiedTypeName(builder)) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.typename")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedTypename().get()); } return true; } @@ -1032,7 +1036,7 @@ public boolean parseSimpleExpression(final PsiBuilder builder) { if(!parseUnaryExpression(builder)) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.expression")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); return false; } return true; diff --git a/base-impl/src/main/java/consulo/javascript/lang/parsing/FunctionParsing.java b/base-impl/src/main/java/consulo/javascript/lang/parsing/FunctionParsing.java index 9e111f13..71cbbef4 100644 --- a/base-impl/src/main/java/consulo/javascript/lang/parsing/FunctionParsing.java +++ b/base-impl/src/main/java/consulo/javascript/lang/parsing/FunctionParsing.java @@ -18,7 +18,7 @@ import com.intellij.lang.javascript.JSElementTypes; import com.intellij.lang.javascript.JSTokenTypes; -import consulo.javascript.language.JavaScriptBundle; +import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.parser.PsiBuilder; import javax.annotation.Nonnull; @@ -79,7 +79,7 @@ else if(isContextKeyword(builder, JSTokenTypes.SET_KEYWORD)) { if(!expressionContext && builder.getTokenType() != JSTokenTypes.LPAR /*get/set as name*/) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.function.name")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedFunctionName().get()); } } @@ -104,7 +104,7 @@ public void parseParameterList(final PsiBuilder builder) final PsiBuilder.Marker parameterList; if(builder.getTokenType() != JSTokenTypes.LPAR) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.lparen")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedLparen().get()); parameterList = builder.mark(); // To have non-empty parameters list at all the time. parameterList.done(JSElementTypes.PARAMETER_LIST); return; @@ -130,7 +130,7 @@ public void parseParameterList(final PsiBuilder builder) } else { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.comma.or.rparen")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedCommaOrRparen().get()); break; } } @@ -175,7 +175,7 @@ else if(builder.getTokenType() == JSTokenTypes.LBRACE) } else { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.formal.parameter.name")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedFormalParameterName().get()); parameterMarker.drop(); } } diff --git a/base-impl/src/main/java/consulo/javascript/lang/parsing/StatementParsing.java b/base-impl/src/main/java/consulo/javascript/lang/parsing/StatementParsing.java index 28b1bdb5..84abac3d 100644 --- a/base-impl/src/main/java/consulo/javascript/lang/parsing/StatementParsing.java +++ b/base-impl/src/main/java/consulo/javascript/lang/parsing/StatementParsing.java @@ -18,7 +18,7 @@ import com.intellij.lang.javascript.JSElementTypes; import com.intellij.lang.javascript.JSTokenTypes; -import consulo.javascript.language.JavaScriptBundle; +import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.ast.IElementType; import consulo.language.parser.PsiBuilder; import consulo.logging.Logger; @@ -66,7 +66,7 @@ protected void doParseStatement(final PsiBuilder builder, boolean canHaveClasses if(firstToken == null) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.statement")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedStatement().get()); return; } @@ -195,7 +195,7 @@ protected void doParseStatement(final PsiBuilder builder, boolean canHaveClasses } } - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.statement")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedStatement().get()); builder.advanceLexer(); } @@ -261,7 +261,7 @@ PsiBuilder.Marker parseLetExpressionStart(final PsiBuilder builder) } } } - Parsing.checkMatches(builder, JSTokenTypes.RPAR, JavaScriptBundle.message("javascript.parser.message.expected.rparen")); + Parsing.checkMatches(builder, JSTokenTypes.RPAR, JavaScriptLocalize.javascriptParserMessageExpectedRparen().get()); } return marker; } @@ -272,7 +272,7 @@ public void parseIncludeDirective(final PsiBuilder builder) StatementParsing.LOG.assertTrue(builder.getTokenType() == JSTokenTypes.INCLUDE_KEYWORD); final PsiBuilder.Marker useNSStatement = builder.mark(); builder.advanceLexer(); - Parsing.checkMatches(builder, JSTokenTypes.STRING_LITERAL, JavaScriptBundle.message("javascript.parser.message.expected.string.literal")); + Parsing.checkMatches(builder, JSTokenTypes.STRING_LITERAL, JavaScriptLocalize.javascriptParserMessageExpectedStringLiteral().get()); checkForSemicolon(builder); useNSStatement.done(JSElementTypes.INCLUDE_DIRECTIVE); @@ -304,7 +304,7 @@ private void parseCatchBlock(final PsiBuilder builder) StatementParsing.LOG.assertTrue(builder.getTokenType() == JSTokenTypes.CATCH_KEYWORD); final PsiBuilder.Marker block = builder.mark(); builder.advanceLexer(); - Parsing.checkMatches(builder, JSTokenTypes.LPAR, JavaScriptBundle.message("javascript.parser.message.expected.lparen")); + Parsing.checkMatches(builder, JSTokenTypes.LPAR, JavaScriptLocalize.javascriptParserMessageExpectedLparen().get()); final IElementType identifierType = builder.getTokenType(); @@ -318,19 +318,23 @@ private void parseCatchBlock(final PsiBuilder builder) if(builder.getTokenType() == JSTokenTypes.IF_KEYWORD) { builder.advanceLexer(); - Parsing.checkMatches(builder, identifierType, JavaScriptBundle.message("javascript.parser.message.expected.identifier")); - Parsing.checkMatches(builder, JSTokenTypes.INSTANCEOF_KEYWORD, JavaScriptBundle.message("javascript.parser.message.expected.instanceof")); - Parsing.checkMatches(builder, JSTokenTypes.IDENTIFIER, JavaScriptBundle.message("javascript.parser.message.expected.identifier")); + Parsing.checkMatches(builder, identifierType, JavaScriptLocalize.javascriptParserMessageExpectedIdentifier().get()); + Parsing.checkMatches( + builder, + JSTokenTypes.INSTANCEOF_KEYWORD, + JavaScriptLocalize.javascriptParserMessageExpectedInstanceof().get() + ); + Parsing.checkMatches(builder, JSTokenTypes.IDENTIFIER, JavaScriptLocalize.javascriptParserMessageExpectedIdentifier().get()); } } param.done(JSElementTypes.FORMAL_PARAMETER); } else { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.parameter.name")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedParameterName().get()); } - Parsing.checkMatches(builder, JSTokenTypes.RPAR, JavaScriptBundle.message("javascript.parser.message.expected.rparen")); + Parsing.checkMatches(builder, JSTokenTypes.RPAR, JavaScriptLocalize.javascriptParserMessageExpectedRparen().get()); parseBlock(builder); @@ -355,16 +359,16 @@ protected void parseSwitchStatement(final PsiBuilder builder) final PsiBuilder.Marker statement = builder.mark(); builder.advanceLexer(); - Parsing.checkMatches(builder, JSTokenTypes.LPAR, JavaScriptBundle.message("javascript.parser.message.expected.lparen")); + Parsing.checkMatches(builder, JSTokenTypes.LPAR, JavaScriptLocalize.javascriptParserMessageExpectedLparen().get()); getExpressionParsing().parseExpression(builder); - Parsing.checkMatches(builder, JSTokenTypes.RPAR, JavaScriptBundle.message("javascript.parser.message.expected.rparen")); + Parsing.checkMatches(builder, JSTokenTypes.RPAR, JavaScriptLocalize.javascriptParserMessageExpectedRparen().get()); - Parsing.checkMatches(builder, JSTokenTypes.LBRACE, JavaScriptBundle.message("javascript.parser.message.expected.lbrace")); + Parsing.checkMatches(builder, JSTokenTypes.LBRACE, JavaScriptLocalize.javascriptParserMessageExpectedLbrace().get()); while(builder.getTokenType() != JSTokenTypes.RBRACE) { if(builder.eof()) { - builder.error(JavaScriptBundle.message("javascript.parser.message.unexpected.end.of.file")); + builder.error(JavaScriptLocalize.javascriptParserMessageUnexpectedEndOfFile().get()); statement.done(JSElementTypes.SWITCH_STATEMENT); return; } @@ -381,14 +385,14 @@ private void parseCaseOrDefaultClause(final PsiBuilder builder) final PsiBuilder.Marker clause = builder.mark(); if(firstToken != JSTokenTypes.CASE_KEYWORD && firstToken != JSTokenTypes.DEFAULT_KEYWORD) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.catch.or.default")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedCatchOrDefault().get()); } builder.advanceLexer(); if(firstToken == JSTokenTypes.CASE_KEYWORD) { getExpressionParsing().parseExpression(builder); } - Parsing.checkMatches(builder, JSTokenTypes.COLON, JavaScriptBundle.message("javascript.parser.message.expected.colon")); + Parsing.checkMatches(builder, JSTokenTypes.COLON, JavaScriptLocalize.javascriptParserMessageExpectedColon().get()); while(true) { IElementType token = builder.getTokenType(); @@ -407,9 +411,9 @@ protected void parseWithStatement(final PsiBuilder builder) final PsiBuilder.Marker statement = builder.mark(); builder.advanceLexer(); - Parsing.checkMatches(builder, JSTokenTypes.LPAR, JavaScriptBundle.message("javascript.parser.message.expected.lparen")); + Parsing.checkMatches(builder, JSTokenTypes.LPAR, JavaScriptLocalize.javascriptParserMessageExpectedLparen().get()); getExpressionParsing().parseExpression(builder); - Parsing.checkMatches(builder, JSTokenTypes.RPAR, JavaScriptBundle.message("javascript.parser.message.expected.rparen")); + Parsing.checkMatches(builder, JSTokenTypes.RPAR, JavaScriptLocalize.javascriptParserMessageExpectedRparen().get()); parseStatement(builder); @@ -557,7 +561,7 @@ protected boolean parseForLoopHeader(final PsiBuilder builder) builder.advanceLexer(); } - Parsing.checkMatches(builder, JSTokenTypes.LPAR, JavaScriptBundle.message("javascript.parser.message.expected.lparen")); + Parsing.checkMatches(builder, JSTokenTypes.LPAR, JavaScriptLocalize.javascriptParserMessageExpectedLparen().get()); final boolean empty; if(builder.getTokenType() == JSTokenTypes.VAR_KEYWORD || builder.getTokenType() == JSTokenTypes.LET_KEYWORD) { @@ -581,7 +585,7 @@ protected boolean parseForLoopHeader(final PsiBuilder builder) } else { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.semicolon")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedSemicolon().get()); } getExpressionParsing().parseExpressionOptional(builder); } @@ -590,17 +594,17 @@ else if(builder.getTokenType() == JSTokenTypes.IN_KEYWORD) forin = true; if(empty) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.forloop.left.hand.side.expression.or.variable.declaration")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedForloopLeftHandSideExpressionOrVariableDeclaration().get()); } builder.advanceLexer(); getExpressionParsing().parseExpression(builder); } else { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.forloop.in.or.semicolon")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedForloopInOrSemicolon().get()); } - Parsing.checkMatches(builder, JSTokenTypes.RPAR, JavaScriptBundle.message("javascript.parser.message.expected.rparen")); + Parsing.checkMatches(builder, JSTokenTypes.RPAR, JavaScriptLocalize.javascriptParserMessageExpectedRparen().get()); return forin; } @@ -610,9 +614,9 @@ private void parseWhileStatement(final PsiBuilder builder) final PsiBuilder.Marker statement = builder.mark(); builder.advanceLexer(); - Parsing.checkMatches(builder, JSTokenTypes.LPAR, JavaScriptBundle.message("javascript.parser.message.expected.lparen")); + Parsing.checkMatches(builder, JSTokenTypes.LPAR, JavaScriptLocalize.javascriptParserMessageExpectedLparen().get()); getExpressionParsing().parseExpression(builder); - Parsing.checkMatches(builder, JSTokenTypes.RPAR, JavaScriptBundle.message("javascript.parser.message.expected.rparen")); + Parsing.checkMatches(builder, JSTokenTypes.RPAR, JavaScriptLocalize.javascriptParserMessageExpectedRparen().get()); parseStatement(builder); statement.done(JSElementTypes.WHILE_STATEMENT); @@ -625,10 +629,10 @@ private void parseDoWhileStatement(final PsiBuilder builder) builder.advanceLexer(); parseStatement(builder); - Parsing.checkMatches(builder, JSTokenTypes.WHILE_KEYWORD, JavaScriptBundle.message("javascript.parser.message.expected.while.keyword")); - Parsing.checkMatches(builder, JSTokenTypes.LPAR, JavaScriptBundle.message("javascript.parser.message.expected.lparen")); + Parsing.checkMatches(builder, JSTokenTypes.WHILE_KEYWORD, JavaScriptLocalize.javascriptParserMessageExpectedWhileKeyword().get()); + Parsing.checkMatches(builder, JSTokenTypes.LPAR, JavaScriptLocalize.javascriptParserMessageExpectedLparen().get()); getExpressionParsing().parseExpression(builder); - Parsing.checkMatches(builder, JSTokenTypes.RPAR, JavaScriptBundle.message("javascript.parser.message.expected.rparen")); + Parsing.checkMatches(builder, JSTokenTypes.RPAR, JavaScriptLocalize.javascriptParserMessageExpectedRparen().get()); checkForSemicolon(builder); statement.done(JSElementTypes.DOWHILE_STATEMENT); @@ -640,7 +644,7 @@ protected void parseIfStatement(final PsiBuilder builder) final PsiBuilder.Marker ifStatement = builder.mark(); builder.advanceLexer(); - Parsing.checkMatches(builder, JSTokenTypes.LPAR, JavaScriptBundle.message("javascript.parser.message.expected.lparen")); + Parsing.checkMatches(builder, JSTokenTypes.LPAR, JavaScriptLocalize.javascriptParserMessageExpectedLparen().get()); getExpressionParsing().parseExpression(builder); // handle empty expressions inside @@ -649,7 +653,7 @@ protected void parseIfStatement(final PsiBuilder builder) builder.advanceLexer(); } - Parsing.checkMatches(builder, JSTokenTypes.RPAR, JavaScriptBundle.message("javascript.parser.message.expected.rparen")); + Parsing.checkMatches(builder, JSTokenTypes.RPAR, JavaScriptLocalize.javascriptParserMessageExpectedRparen().get()); parseStatement(builder); @@ -699,7 +703,7 @@ protected void parseVarStatementWithMarker(final PsiBuilder builder, final boole } else { - Parsing.checkMatches(builder, JSTokenTypes.COMMA, JavaScriptBundle.message("javascript.parser.message.expected.comma")); + Parsing.checkMatches(builder, JSTokenTypes.COMMA, JavaScriptLocalize.javascriptParserMessageExpectedComma().get()); } parseVarDeclaration(builder, !inForInitializationContext); @@ -778,7 +782,7 @@ protected void parseVarDeclaration(final PsiBuilder builder, boolean allowIn) { if(!JSTokenTypes.IDENTIFIER_TOKENS_SET.contains(builder.getTokenType())) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.variable.name")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedVariableName().get()); builder.advanceLexer(); return; } @@ -803,14 +807,14 @@ protected void parseVarInitializer(PsiBuilder builder, boolean allowIn) { if(!getExpressionParsing().parseAssignmentExpression(builder)) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.expression")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); } } else { if(!getExpressionParsing().parseAssignmentExpressionNoIn(builder)) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.expression")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); } } } @@ -840,7 +844,7 @@ protected void parseBlockOrFunctionBody(final PsiBuilder builder, BlockType type { block.rollbackTo(); } - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.lbrace")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedLbrace().get()); return; } @@ -849,7 +853,7 @@ protected void parseBlockOrFunctionBody(final PsiBuilder builder, BlockType type { if(builder.eof()) { - builder.error(JavaScriptBundle.message("javascript.parser.message.missing.rbrace")); + builder.error(JavaScriptLocalize.javascriptParserMessageMissingRbrace().get()); if(block != null) { block.done(JSElementTypes.BLOCK_STATEMENT); diff --git a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptExpressionParsing.java b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptExpressionParsing.java index c8de1739..34946936 100644 --- a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptExpressionParsing.java +++ b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptExpressionParsing.java @@ -19,7 +19,6 @@ import com.intellij.lang.javascript.JSElementTypes; import com.intellij.lang.javascript.JSTokenTypes; import consulo.javascript.lang.parsing.ExpressionParsing; -import consulo.javascript.language.JavaScriptBundle; import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.ast.IElementType; import consulo.language.parser.PsiBuilder; @@ -158,14 +157,14 @@ protected void parseProperty(PsiBuilder builder) PsiBuilder.Marker mark = builder.mark(); builder.advanceLexer(); parseExpression(builder); - checkMatches(builder, JSTokenTypes.RBRACKET, JavaScriptBundle.message("javascript.parser.message.expected.rbracket")); + checkMatches(builder, JSTokenTypes.RBRACKET, JavaScriptLocalize.javascriptParserMessageExpectedRbracket().get()); mark.done(JSElementTypes.COMPUTED_NAME); } else { if(isNotPropertyStart(builder, nameTokenType)) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.identifier.string.literal.or.numeric.literal")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedIdentifierStringLiteralOrNumericLiteral().get()); } IElementType setOrGetToken = isContextKeyword(builder, JSTokenTypes.GET_SET_TOKEN_SET); @@ -220,12 +219,12 @@ else if(nextTokenType == JSTokenTypes.LPAR) } else { - checkMatches(builder, JSTokenTypes.COLON, JavaScriptBundle.message("javascript.parser.message.expected.colon")); + checkMatches(builder, JSTokenTypes.COLON, JavaScriptLocalize.javascriptParserMessageExpectedColon().get()); builder.putUserData(WITHIN_OBJECT_LITERAL_EXPRESSION, Boolean.TRUE); if(!parseAssignmentExpression(builder)) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.expression")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); } builder.putUserData(WITHIN_OBJECT_LITERAL_EXPRESSION, null); } diff --git a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptStatementParsing.java b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptStatementParsing.java index 2af0968a..0182eb37 100644 --- a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptStatementParsing.java +++ b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptStatementParsing.java @@ -22,7 +22,6 @@ import consulo.javascript.lang.JavaScriptTokenSets; import consulo.javascript.lang.parsing.Parsing; import consulo.javascript.lang.parsing.StatementParsing; -import consulo.javascript.language.JavaScriptBundle; import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.ast.IElementType; import consulo.language.ast.TokenSet; @@ -100,7 +99,7 @@ protected boolean parseForLoopHeader(final PsiBuilder builder) { builder.advanceLexer(); - Parsing.checkMatches(builder, JSTokenTypes.LPAR, JavaScriptBundle.message("javascript.parser.message.expected.lparen")); + Parsing.checkMatches(builder, JSTokenTypes.LPAR, JavaScriptLocalize.javascriptParserMessageExpectedLparen().get()); final boolean empty; if(builder.getTokenType() == JSTokenTypes.VAR_KEYWORD || builder.getTokenType() == JSTokenTypes.LET_KEYWORD || builder.getTokenType() == JSTokenTypes.CONST_KEYWORD) { @@ -124,7 +123,7 @@ protected boolean parseForLoopHeader(final PsiBuilder builder) } else { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.semicolon")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedSemicolon().get()); } getExpressionParsing().parseExpressionOptional(builder); } @@ -133,7 +132,7 @@ else if(isContextKeyword(builder, JSTokenTypes.OF_KEYWORD) || builder.getTokenTy forin = true; if(empty) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.forloop.left.hand.side.expression.or.variable.declaration")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedForloopLeftHandSideExpressionOrVariableDeclaration().get()); } if(builder.getTokenType() == JSTokenTypes.IN_KEYWORD) @@ -149,10 +148,10 @@ else if(isContextKeyword(builder, JSTokenTypes.OF_KEYWORD) || builder.getTokenTy } else { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.forloop.in.of.or.semicolon")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedForloopInOfOrSemicolon().get()); } - Parsing.checkMatches(builder, JSTokenTypes.RPAR, JavaScriptBundle.message("javascript.parser.message.expected.rparen")); + Parsing.checkMatches(builder, JSTokenTypes.RPAR, JavaScriptLocalize.javascriptParserMessageExpectedRparen().get()); return forin; } @@ -297,7 +296,7 @@ else if(builder.getTokenType() == JSTokenTypes.IDENTIFIER) } else { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.typename")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedTypename().get()); break; } @@ -376,7 +375,7 @@ protected void parseClassBody(final PsiBuilder builder, BlockType type) { if(builder.getTokenType() != JSTokenTypes.LBRACE) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.lbrace")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedLbrace().get()); return; } @@ -450,7 +449,7 @@ protected void parseClassBody(final PsiBuilder builder, BlockType type) if(!JSTokenTypes.IDENTIFIER_TOKENS_SET.contains(builder.getTokenType())) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.identifier")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedIdentifier().get()); } else { diff --git a/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4ExpressionParsing.java b/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4ExpressionParsing.java index 3c39debb..e9225bcd 100644 --- a/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4ExpressionParsing.java +++ b/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4ExpressionParsing.java @@ -4,7 +4,7 @@ import com.intellij.lang.javascript.JSTokenTypes; import consulo.javascript.lang.parsing.ExpressionParsing; import consulo.javascript.lang.parsing.JavaScriptParsingContext; -import consulo.javascript.language.JavaScriptBundle; +import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.ast.IElementType; import consulo.language.ast.TokenSet; import consulo.language.parser.PsiBuilder; @@ -90,7 +90,7 @@ protected boolean parseMemberExpression(PsiBuilder builder, boolean allowCallSyn } else { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.name")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedName().get()); } expr.done(JSElementTypes.REFERENCE_EXPRESSION); @@ -100,7 +100,7 @@ else if(tokenType == JSTokenTypes.LBRACKET) { builder.advanceLexer(); parseExpression(builder); - checkMatches(builder, JSTokenTypes.RBRACKET, JavaScriptBundle.message("javascript.parser.message.expected.rbracket")); + checkMatches(builder, JSTokenTypes.RBRACKET, JavaScriptLocalize.javascriptParserMessageExpectedRbracket().get()); expr.done(JSElementTypes.INDEXED_PROPERTY_ACCESS_EXPRESSION); expr = expr.precede(); } @@ -163,7 +163,7 @@ else if(tokenType == JSTokenTypes.DEFAULT_KEYWORD || (tokenType != JSTokenTypes. } else { - checkMatches(builder, JSTokenTypes.IDENTIFIER, JavaScriptBundle.message("javascript.parser.message.expected.name")); + checkMatches(builder, JSTokenTypes.IDENTIFIER, JavaScriptLocalize.javascriptParserMessageExpectedName().get()); } expr.done(JSElementTypes.REFERENCE_EXPRESSION); expr = expr.precede(); @@ -205,7 +205,7 @@ private void parseGenericSignature(final PsiBuilder builder) PsiBuilder.Marker genericTypeSignature = builder.mark(); builder.advanceLexer(); parseType(builder); - checkMatches(builder, JSTokenTypes.GT, JavaScriptBundle.message("javascript.parser.message.expected.lt")); + checkMatches(builder, JSTokenTypes.GT, JavaScriptLocalize.javascriptParserMessageExpectedLt().get()); genericTypeSignature.done(JSElementTypes.GENERIC_SIGNATURE); } } diff --git a/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4FunctionParsing.java b/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4FunctionParsing.java index 623801eb..794638c9 100644 --- a/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4FunctionParsing.java +++ b/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4FunctionParsing.java @@ -4,7 +4,7 @@ import com.intellij.lang.javascript.JSTokenTypes; import consulo.javascript.lang.parsing.FunctionParsing; import consulo.javascript.lang.parsing.JavaScriptParsingContext; -import consulo.javascript.language.JavaScriptBundle; +import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.ast.IElementType; import consulo.language.parser.PsiBuilder; @@ -22,7 +22,7 @@ public EcmaScript4FunctionParsing(JavaScriptParsingContext context) public void parseAttributeWithoutBrackets(final PsiBuilder builder) { final PsiBuilder.Marker attribute = builder.mark(); - if(!checkMatches(builder, JSTokenTypes.IDENTIFIER, JavaScriptBundle.message("javascript.parser.message.expected.identifier"))) + if (!checkMatches(builder, JSTokenTypes.IDENTIFIER, JavaScriptLocalize.javascriptParserMessageExpectedIdentifier().get())) { attribute.drop(); return; @@ -53,8 +53,10 @@ void parseAttributesList(final PsiBuilder builder) builder.advanceLexer(); - if(builder.eof() || (!checkMatches(builder, JSTokenTypes.IDENTIFIER, JavaScriptBundle.message("javascript.parser.message.expected.identifier")) && - builder.getTokenType() != JSTokenTypes.RBRACKET)) + if (builder.eof() || ( + !checkMatches(builder, JSTokenTypes.IDENTIFIER, JavaScriptLocalize.javascriptParserMessageExpectedIdentifier().get()) + && builder.getTokenType() != JSTokenTypes.RBRACKET + )) { attribute.drop(); return; @@ -67,7 +69,7 @@ void parseAttributesList(final PsiBuilder builder) if(builder.eof()) { attribute.done(JSElementTypes.ATTRIBUTE); - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.rbracket")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedRbracket().get()); return; } } @@ -127,7 +129,7 @@ void parseAttributesList(final PsiBuilder builder) private void parseAttributeBody(final PsiBuilder builder) { - final boolean haveLParen = checkMatches(builder, JSTokenTypes.LPAR, JavaScriptBundle.message("javascript.parser.message.expected.lparen")); + final boolean haveLParen = checkMatches(builder, JSTokenTypes.LPAR, JavaScriptLocalize.javascriptParserMessageExpectedLparen().get()); boolean hasName; while(haveLParen) @@ -137,7 +139,7 @@ private void parseAttributeBody(final PsiBuilder builder) if(builder.getTokenType() == JSTokenTypes.COMMA) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.identifer.or.value")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedIdentiferOrValue().get()); break; } if(builder.getTokenType() == JSTokenTypes.RBRACKET) @@ -150,7 +152,7 @@ private void parseAttributeBody(final PsiBuilder builder) if(hasName && builder.getTokenType() != JSTokenTypes.COMMA && builder.getTokenType() != JSTokenTypes.RPAR) { - checkMatches(builder, JSTokenTypes.EQ, JavaScriptBundle.message("javascript.parser.message.expected.equal")); + checkMatches(builder, JSTokenTypes.EQ, JavaScriptLocalize.javascriptParserMessageExpectedEqual().get()); if(builder.getTokenType() != JSTokenTypes.COMMA && builder.getTokenType() != JSTokenTypes.RBRACKET && builder.getTokenType() != JSTokenTypes.RPAR) @@ -159,7 +161,7 @@ private void parseAttributeBody(final PsiBuilder builder) } else { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.value")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedValue().get()); } } @@ -175,14 +177,14 @@ private void parseAttributeBody(final PsiBuilder builder) if(builder.eof()) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.rparen")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedRparen().get()); return; } } - if(haveLParen) + if (haveLParen) { - checkMatches(builder, JSTokenTypes.RPAR, JavaScriptBundle.message("javascript.parser.message.expected.rparen")); + checkMatches(builder, JSTokenTypes.RPAR, JavaScriptLocalize.javascriptParserMessageExpectedRparen().get()); } else { diff --git a/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4StatementParsing.java b/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4StatementParsing.java index 8c0f5bea..21e36393 100644 --- a/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4StatementParsing.java +++ b/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4StatementParsing.java @@ -3,7 +3,7 @@ import com.intellij.lang.javascript.JSElementTypes; import com.intellij.lang.javascript.JSTokenTypes; import consulo.javascript.lang.parsing.StatementParsing; -import consulo.javascript.language.JavaScriptBundle; +import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.ast.IElementType; import consulo.language.parser.PsiBuilder; import consulo.logging.Logger; @@ -57,7 +57,7 @@ protected void parseVarDeclaration(final PsiBuilder builder, boolean allowIn) { if(!JSTokenTypes.IDENTIFIER_TOKENS_SET.contains(builder.getTokenType())) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.variable.name")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedVariableName().get()); builder.advanceLexer(); return; } @@ -75,14 +75,14 @@ protected void parseVarDeclaration(final PsiBuilder builder, boolean allowIn) { if(!getExpressionParsing().parseAssignmentExpression(builder)) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.expression")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); } } else { if(!getExpressionParsing().parseAssignmentExpressionNoIn(builder)) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.expression")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); } } } @@ -96,7 +96,7 @@ protected void doParseStatement(final PsiBuilder builder, boolean canHaveClasses if(firstToken == null) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.statement")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedStatement().get()); return; } @@ -291,7 +291,7 @@ else if(JSTokenTypes.COLON_COLON == builder.getTokenType()) } else { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.function.var.class.interface.namespace")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedFunctionVarClassInterfaceNamespace().get()); marker.drop(); } } @@ -324,7 +324,7 @@ else if(JSTokenTypes.COLON_COLON == builder.getTokenType()) } } - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.statement")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedStatement().get()); builder.advanceLexer(); } @@ -338,9 +338,9 @@ private void parseDefaultNsStatement(final PsiBuilder builder) { builder.advanceLexer(); - if(checkMatches(builder, JSTokenTypes.NAMESPACE_KEYWORD, JavaScriptBundle.message("javascript.parser.message.expected.namespace"))) + if (checkMatches(builder, JSTokenTypes.NAMESPACE_KEYWORD, JavaScriptLocalize.javascriptParserMessageExpectedNamespace().get())) { - if(checkMatches(builder, JSTokenTypes.EQ, JavaScriptBundle.message("javascript.parser.message.expected.equal"))) + if (checkMatches(builder, JSTokenTypes.EQ, JavaScriptLocalize.javascriptParserMessageExpectedEqual().get())) { getExpressionParsing().parseExpression(builder); } @@ -348,7 +348,7 @@ private void parseDefaultNsStatement(final PsiBuilder builder) } else { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.xml")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedXml().get()); } marker.done(JSElementTypes.ASSIGNMENT_EXPRESSION); } @@ -364,7 +364,7 @@ private void parseImportStatement(final PsiBuilder builder) final PsiBuilder.Marker nsAssignment = builder.mark(); if(!getExpressionParsing().parseQualifiedTypeName(builder, true)) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.typename")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedTypename().get()); nsAssignment.drop(); return; } @@ -374,7 +374,7 @@ private void parseImportStatement(final PsiBuilder builder) builder.advanceLexer(); if(!getExpressionParsing().parseQualifiedTypeName(builder)) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.typename")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedTypename().get()); } nsAssignment.done(JSElementTypes.ASSIGNMENT_EXPRESSION); @@ -405,12 +405,12 @@ private boolean parseNamespaceNoMarker(final PsiBuilder builder, final @Nonnull if(!getExpressionParsing().parseQualifiedTypeName(builder)) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.typename")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedTypename().get()); } if(builder.getTokenType() == JSTokenTypes.EQ) { builder.advanceLexer(); - checkMatches(builder, JSTokenTypes.STRING_LITERAL, JavaScriptBundle.message("javascript.parser.message.expected.string.literal")); + checkMatches(builder, JSTokenTypes.STRING_LITERAL, JavaScriptLocalize.javascriptParserMessageExpectedStringLiteral().get()); } checkForSemicolon(builder); useNSStatement.done(JSElementTypes.NAMESPACE_DECLARATION); @@ -424,7 +424,7 @@ private void parseUseNamespaceDirective(final PsiBuilder builder) if(builder.getTokenType() != JSTokenTypes.NAMESPACE_KEYWORD) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.namespace")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedNamespace().get()); } else { @@ -432,7 +432,7 @@ private void parseUseNamespaceDirective(final PsiBuilder builder) if(!getExpressionParsing().parseQualifiedTypeName(builder)) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.typename")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedTypename().get()); } while(builder.getTokenType() == JSTokenTypes.COMMA) @@ -440,7 +440,7 @@ private void parseUseNamespaceDirective(final PsiBuilder builder) builder.advanceLexer(); if(!getExpressionParsing().parseQualifiedTypeName(builder)) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.typename")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedTypename().get()); break; } } @@ -462,7 +462,7 @@ private void parseClassNoMarker(final PsiBuilder builder, final @Nonnull PsiBuil builder.advanceLexer(); if(!getExpressionParsing().parseQualifiedTypeName(builder)) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.typename")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedTypename().get()); } if(builder.getTokenType() == JSTokenTypes.EXTENDS_KEYWORD) @@ -511,7 +511,7 @@ private void parsePackage(final PsiBuilder builder) if(builder.getTokenType() != JSTokenTypes.LBRACE) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.name.or.lbrace")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedNameOrLbrace().get()); } else { diff --git a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/lang/JsonJavaScriptParser.java b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/lang/JsonJavaScriptParser.java index 1c9c7be9..aa34c377 100644 --- a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/lang/JsonJavaScriptParser.java +++ b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/lang/JsonJavaScriptParser.java @@ -1,14 +1,14 @@ package consulo.json.lang; -import consulo.language.ast.ASTNode; -import consulo.language.parser.PsiBuilder; import com.intellij.lang.javascript.JSElementTypes; import com.intellij.lang.javascript.JSTokenTypes; -import consulo.javascript.language.JavaScriptBundle; -import consulo.language.ast.IElementType; import consulo.javascript.lang.JavaScriptTokenSets; import consulo.javascript.lang.parsing.ExpressionParsing; import consulo.javascript.lang.parsing.Parsing; +import consulo.javascript.localize.JavaScriptLocalize; +import consulo.language.ast.ASTNode; +import consulo.language.ast.IElementType; +import consulo.language.parser.PsiBuilder; import consulo.language.parser.PsiParser; import consulo.language.version.LanguageVersion; import consulo.logging.Logger; @@ -42,7 +42,7 @@ private void parseRoot(PsiBuilder builder) parseArrayLiteralExpression(builder); if(builder.getTokenType() != null) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.eof")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedEof().get()); } } else if(builder.getTokenType() == JSTokenTypes.LBRACE) @@ -50,12 +50,12 @@ else if(builder.getTokenType() == JSTokenTypes.LBRACE) parseObjectLiteralExpression(builder); if(builder.getTokenType() != null) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.eof")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedEof().get()); } } else { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.lbrace.or.lbracket")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedLbraceOrLbracket().get()); } while(builder.getTokenType() != null) @@ -108,14 +108,14 @@ else if(tokenType == JSTokenTypes.RBRACKET) if(isNotPropertyStart(nameToken)) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.identifier.string.literal.or.numeric.literal")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedIdentifierStringLiteralOrNumericLiteral().get()); } builder.advanceLexer(); - Parsing.checkMatches(builder, JSTokenTypes.COLON, JavaScriptBundle.message("javascript.parser.message.expected.colon")); + Parsing.checkMatches(builder, JSTokenTypes.COLON, JavaScriptLocalize.javascriptParserMessageExpectedColon().get()); if(!parseValue(builder)) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.expression")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); } myPropertyDepth--; @@ -150,7 +150,7 @@ else if(elementType == JSTokenTypes.COMMA) } else { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.comma")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedComma().get()); } elementType = builder.getTokenType(); @@ -164,7 +164,7 @@ else if(isNotPropertyStart(elementType)) } } - Parsing.checkMatches(builder, JSTokenTypes.RBRACE, JavaScriptBundle.message("javascript.parser.message.expected.rbrace")); + Parsing.checkMatches(builder, JSTokenTypes.RBRACE, JavaScriptLocalize.javascriptParserMessageExpectedRbrace().get()); expr.done(JSElementTypes.OBJECT_LITERAL_EXPRESSION); } @@ -184,7 +184,7 @@ public void parseArrayLiteralExpression(final PsiBuilder builder) { if(commaExpected) { - final boolean b = Parsing.checkMatches(builder, JSTokenTypes.COMMA, JavaScriptBundle.message("javascript.parser.message.expected.comma")); + final boolean b = Parsing.checkMatches(builder, JSTokenTypes.COMMA, JavaScriptLocalize.javascriptParserMessageExpectedComma().get()); if(!b) { break; @@ -201,7 +201,7 @@ public void parseArrayLiteralExpression(final PsiBuilder builder) { if(!parseValue(builder)) { - builder.error(JavaScriptBundle.message("javascript.parser.message.expected.expression")); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); break; } else @@ -210,7 +210,7 @@ public void parseArrayLiteralExpression(final PsiBuilder builder) } } } - Parsing.checkMatches(builder, JSTokenTypes.RBRACKET, JavaScriptBundle.message("javascript.parser.message.expected.rbracket")); + Parsing.checkMatches(builder, JSTokenTypes.RBRACKET, JavaScriptLocalize.javascriptParserMessageExpectedRbracket().get()); expr.done(JSElementTypes.ARRAY_LITERAL_EXPRESSION); } diff --git a/plugin/src/main/java/com/intellij/javascript/JSClassNameMacro.java b/plugin/src/main/java/com/intellij/javascript/JSClassNameMacro.java index 7921b5fe..fe7af18c 100644 --- a/plugin/src/main/java/com/intellij/javascript/JSClassNameMacro.java +++ b/plugin/src/main/java/com/intellij/javascript/JSClassNameMacro.java @@ -19,7 +19,7 @@ import com.intellij.lang.javascript.psi.JSFunction; import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; import consulo.annotation.component.ExtensionImpl; -import consulo.javascript.language.JavaScriptBundle; +import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.editor.completion.lookup.LookupElement; import consulo.language.editor.template.Expression; import consulo.language.editor.template.ExpressionContext; @@ -48,7 +48,7 @@ public String getName() @Override public String getPresentableName() { - return JavaScriptBundle.message("js.classname.macro.description"); + return JavaScriptLocalize.jsClassnameMacroDescription().get(); } @Override diff --git a/plugin/src/main/java/com/intellij/javascript/JSMethodNameMacro.java b/plugin/src/main/java/com/intellij/javascript/JSMethodNameMacro.java index 9cf4300b..056d2dbb 100644 --- a/plugin/src/main/java/com/intellij/javascript/JSMethodNameMacro.java +++ b/plugin/src/main/java/com/intellij/javascript/JSMethodNameMacro.java @@ -19,7 +19,7 @@ import com.intellij.lang.javascript.psi.JSFunction; import com.intellij.lang.javascript.psi.JSFunctionExpression; import consulo.annotation.component.ExtensionImpl; -import consulo.javascript.language.JavaScriptBundle; +import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.editor.completion.lookup.LookupElement; import consulo.language.editor.template.Expression; import consulo.language.editor.template.ExpressionContext; @@ -43,7 +43,7 @@ public String getName() @Override public String getPresentableName() { - return JavaScriptBundle.message("js.methodname.macro.description"); + return JavaScriptLocalize.jsMethodnameMacroDescription().get(); } @Override diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/JSSmartEnterProcessor.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/JSSmartEnterProcessor.java index af445809..6fff3a61 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/JSSmartEnterProcessor.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/JSSmartEnterProcessor.java @@ -23,7 +23,7 @@ import consulo.annotation.component.ExtensionImpl; import consulo.codeEditor.Editor; import consulo.javascript.language.JavaScriptLanguage; -import consulo.javascript.language.JavaScriptBundle; +import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.Language; import consulo.language.codeStyle.CodeStyleManager; import consulo.language.editor.action.SmartEnterProcessor; @@ -108,8 +108,8 @@ public boolean process(@Nonnull final Project project, @Nonnull final Editor edi element = prevMeaningfulElement; } - if(element instanceof PsiErrorElement && (JavaScriptBundle.message("javascript.parser.message.expected.lbrace").equals(errorDescription = ( - (PsiErrorElement) element).getErrorDescription()) || JavaScriptBundle.message("javascript.parser.message.expected.statement").equals(errorDescription))) + if (element instanceof PsiErrorElement && (JavaScriptLocalize.javascriptParserMessageExpectedLbrace().get().equals(errorDescription = ( + (PsiErrorElement) element).getErrorDescription()) || JavaScriptLocalize.javascriptParserMessageExpectedStatement().get().equals(errorDescription))) { String semicolon = ""; @@ -124,8 +124,8 @@ public boolean process(@Nonnull final Project project, @Nonnull final Editor edi insertCommitReformat(project, editor, psiFile, offset, "{\n\n}" + semicolon, 2, true); return true; } - else if(JavaScriptBundle.message("javascript.parser.message.expected.lparen").equals(errorDescription) || JavaScriptBundle.message("javascript.parser.message" + - ".expected.function.name").equals(errorDescription)) + else if (JavaScriptLocalize.javascriptParserMessageExpectedLparen().get().equals(errorDescription) + || JavaScriptLocalize.javascriptParserMessageExpectedFunctionName().get().equals(errorDescription)) { insertCommitReformat(project, editor, psiFile, offset, "()", 1, false); return true; diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/JavaScriptCodeContextType.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/JavaScriptCodeContextType.java index 5f1aecc6..4fd76cc9 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/JavaScriptCodeContextType.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/JavaScriptCodeContextType.java @@ -20,9 +20,9 @@ import com.intellij.lang.javascript.psi.JSFile; import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; import consulo.annotation.component.ExtensionImpl; -import consulo.javascript.language.JavaScriptLanguage; -import consulo.javascript.language.JavaScriptBundle; import consulo.javascript.language.JavaScriptFileType; +import consulo.javascript.language.JavaScriptLanguage; +import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.Language; import consulo.language.editor.highlight.SyntaxHighlighter; import consulo.language.editor.highlight.SyntaxHighlighterFactory; @@ -50,7 +50,7 @@ public class JavaScriptCodeContextType extends TemplateContextType public JavaScriptCodeContextType() { - super(JAVA_SCRIPT, JavaScriptBundle.message("javascript.template.context.type")); + super(JAVA_SCRIPT, JavaScriptLocalize.javascriptTemplateContextType().get()); } @Override diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/findUsages/JavaScriptFindUsagesProvider.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/findUsages/JavaScriptFindUsagesProvider.java index 4b0b1ff3..09871c2a 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/findUsages/JavaScriptFindUsagesProvider.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/findUsages/JavaScriptFindUsagesProvider.java @@ -16,10 +16,10 @@ package com.intellij.lang.javascript.impl.findUsages; -import consulo.annotation.component.ExtensionImpl; -import consulo.javascript.language.JavaScriptBundle; import com.intellij.lang.javascript.psi.*; +import consulo.annotation.component.ExtensionImpl; import consulo.javascript.language.JavaScriptLanguage; +import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.Language; import consulo.language.cacheBuilder.WordsScanner; import consulo.language.findUsage.FindUsagesProvider; @@ -48,49 +48,49 @@ public boolean canFindUsagesFor(@Nonnull PsiElement psiElement) @Nonnull public String getType(@Nonnull PsiElement element) { - if(element instanceof JSFunction) + if (element instanceof JSFunction) { - return JavaScriptBundle.message("javascript.language.term.function"); + return JavaScriptLocalize.javascriptLanguageTermFunction().get(); } - if(element instanceof JSClass) + if (element instanceof JSClass) { - return JavaScriptBundle.message("javascript.language.term.class"); + return JavaScriptLocalize.javascriptLanguageTermClass().get(); } - if(element instanceof JSNamespaceDeclaration) + if (element instanceof JSNamespaceDeclaration) { - return JavaScriptBundle.message("javascript.language.term.namespace"); + return JavaScriptLocalize.javascriptLanguageTermNamespace().get(); } - if(element instanceof JSParameter) + if (element instanceof JSParameter) { - return JavaScriptBundle.message("javascript.language.term.parameter"); + return JavaScriptLocalize.javascriptLanguageTermParameter().get(); } - if(element instanceof JSProperty) + if (element instanceof JSProperty) { - return JavaScriptBundle.message("javascript.language.term.property"); + return JavaScriptLocalize.javascriptLanguageTermProperty().get(); } - if(element instanceof JSVariable) + if (element instanceof JSVariable) { - return JavaScriptBundle.message("javascript.language.term.variable"); + return JavaScriptLocalize.javascriptLanguageTermVariable().get(); } - if(element instanceof JSLabeledStatement) + if (element instanceof JSLabeledStatement) { - return JavaScriptBundle.message("javascript.language.term.label"); + return JavaScriptLocalize.javascriptLanguageTermLabel().get(); } - if(element instanceof JSDefinitionExpression) + if (element instanceof JSDefinitionExpression) { - return JavaScriptBundle.message("javascript.language.term.value"); + return JavaScriptLocalize.javascriptLanguageTermValue().get(); } - if(element instanceof XmlTag) + if (element instanceof XmlTag) { - return JavaScriptBundle.message("javascript.language.term.tag"); + return JavaScriptLocalize.javascriptLanguageTermTag().get(); } - if(element instanceof XmlToken) + if (element instanceof XmlToken) { - return JavaScriptBundle.message("javascript.language.term.attribute.value"); + return JavaScriptLocalize.javascriptLanguageTermAttributeValue().get(); } - if(element instanceof JSPackageStatement) + if (element instanceof JSPackageStatement) { - return JavaScriptBundle.message("javascript.language.term.package"); + return JavaScriptLocalize.javascriptLanguageTermPackage().get(); } return ""; } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/AddImportECMAScriptClassOrFunctionAction.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/AddImportECMAScriptClassOrFunctionAction.java index 1528eb69..08669f84 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/AddImportECMAScriptClassOrFunctionAction.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/AddImportECMAScriptClassOrFunctionAction.java @@ -16,7 +16,6 @@ package com.intellij.lang.javascript.impl.flex; -import consulo.javascript.language.JavaScriptBundle; import com.intellij.lang.javascript.psi.JSFunction; import com.intellij.lang.javascript.psi.JSQualifiedNamedElement; import com.intellij.lang.javascript.psi.JSReferenceExpression; @@ -26,6 +25,7 @@ import consulo.codeEditor.Editor; import consulo.codeEditor.EditorPopupHelper; import consulo.document.util.TextRange; +import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.editor.hint.HintManager; import consulo.language.editor.hint.QuestionAction; import consulo.language.editor.inspection.LocalQuickFix; @@ -91,7 +91,9 @@ public boolean showHint(final Editor editor) @Nonnull public String getText() { - return JavaScriptBundle.message(isFunction ? "flex.import.function" : "flex.import.class", calculatedClass); + return isFunction + ? JavaScriptLocalize.flexImportFunction(calculatedClass).get() + : JavaScriptLocalize.flexImportClass(calculatedClass).get(); } @Override @@ -117,38 +119,38 @@ public void applyFix(@Nonnull final Project project, @Nonnull final ProblemDescr @Override public boolean isAvailable(@Nonnull final Project project, final Editor editor, final PsiFile file) { - if(!myReference.getElement().isValid()) + if (!myReference.getElement().isValid()) { return false; } final long modL = myReference.getElement().getManager().getModificationTracker().getModificationCount(); - if(!isAvailableCalculated || modL != modificationCount) + if (!isAvailableCalculated || modL != modificationCount) { final ResolveResult[] results = myReference.multiResolve(false); boolean hasValidResult = false; - for(ResolveResult r : results) + for (ResolveResult r : results) { - if(r.isValidResult()) + if (r.isValidResult()) { hasValidResult = true; break; } } - if(!hasValidResult) + if (!hasValidResult) { final Collection candidates = getCandidates(editor, file); isAvailableCalculated = true; isAvailable = candidates.size() > 0; - if(isAvailable) + if (isAvailable) { final JSQualifiedNamedElement element = candidates.iterator().next(); calculatedClass = element.getQualifiedName(); isFunction = element instanceof JSFunction; - if(candidates.size() > 1) + if (candidates.size() > 1) { calculatedClass += HAS_MORE_SUFFIX; } @@ -174,7 +176,7 @@ private Collection getCandidates(Editor editor, PsiFile { final Collection candidates; - if(myReference instanceof JSReferenceExpression && ((JSReferenceExpression) myReference).getQualifier() == null) + if (myReference instanceof JSReferenceExpression referenceExpression && referenceExpression.getQualifier() == null) { Collection c = getCandidates(editor, file, myReference.getCanonicalText()); filterDefaultPackage(c); @@ -184,15 +186,15 @@ private Collection getCandidates(Editor editor, PsiFile { JSQualifiedNamedElement invalidResult = null; - for(ResolveResult r : myReference.multiResolve(false)) + for (ResolveResult r : myReference.multiResolve(false)) { PsiElement element = r.getElement(); - if(element instanceof JSQualifiedNamedElement) + if (element instanceof JSQualifiedNamedElement) { invalidResult = (JSQualifiedNamedElement) element; } } - if(invalidResult != null) + if (invalidResult != null) { candidates = new SmartList(); candidates.add(invalidResult); @@ -208,9 +210,13 @@ private Collection getCandidates(Editor editor, PsiFile public static Collection getCandidates(final Editor editor, final PsiFile file, final String name) { final Module element = ModuleUtilCore.findModuleForPsiElement(file); - if(element != null) + if (element != null) { - return JSResolveUtil.findElementsByName(name, editor.getProject(), GlobalSearchScope.moduleWithDependenciesAndLibrariesScope(element, false)); + return JSResolveUtil.findElementsByName( + name, + editor.getProject(), + GlobalSearchScope.moduleWithDependenciesAndLibrariesScope(element, false) + ); } else { @@ -223,54 +229,55 @@ public void invoke(@Nonnull final Project project, final Editor editor, final Ps { final Collection candidates = getCandidates(editor, file); - if(candidates.size() > 0) + if (candidates.size() > 0) { - if(candidates.size() > 1) + if (candidates.size() > 1) { - JBPopup popup = PopupNavigationUtil.getPsiElementPopup(candidates.toArray(new JSQualifiedNamedElement[candidates.size()]), - new PsiElementListCellRenderer() + JBPopup popup = PopupNavigationUtil.getPsiElementPopup( + candidates.toArray(new JSQualifiedNamedElement[candidates.size()]), + new PsiElementListCellRenderer<>() + { + @Override + public String getElementText(final JSQualifiedNamedElement element) { - @Override - public String getElementText(final JSQualifiedNamedElement element) - { - return element.getName(); - } + return element.getName(); + } - @Override - protected String getContainerText(final JSQualifiedNamedElement element, final String name) + @Override + protected String getContainerText(final JSQualifiedNamedElement element, final String name) + { + final String qName = element.getQualifiedName(); + final String elementName = element.getName(); + String s = qName.equals(elementName) ? "" : qName.substring(0, qName.length() - elementName.length() - 1); + if ("".equals(s)) { - final String qName = element.getQualifiedName(); - final String elementName = element.getName(); - String s = qName.equals(elementName) ? "" : qName.substring(0, qName.length() - elementName.length() - 1); - if("".equals(s)) - { - s = element.getContainingFile().getName(); - } - return "( " + s + " )"; + s = element.getContainingFile().getName(); } + return "( " + s + " )"; + } - @Override - protected int getIconFlags() - { - return 0; - } - }, JavaScriptBundle.message("choose.class.title"), new PsiElementProcessor() + @Override + protected int getIconFlags() { - @Override - public boolean execute(final JSQualifiedNamedElement element) - { - CommandProcessor.getInstance().executeCommand(project, new Runnable() - { - @Override - public void run() - { - doImport(editor, element.getQualifiedName()); - } - }, getClass().getName(), this); - - return false; - } + return 0; + } + }, + JavaScriptLocalize.chooseClassTitle().get(), + new PsiElementProcessor<>() + { + @Override + public boolean execute(final JSQualifiedNamedElement element) + { + CommandProcessor.getInstance().executeCommand( + project, + () -> doImport(editor, element.getQualifiedName()), + getClass().getName(), + this + ); + + return false; } + } ); EditorPopupHelper.getInstance().showPopupInBestPositionFor(editor, popup); @@ -284,14 +291,9 @@ public void run() private void doImport(final Editor editor, final String qName) { - ApplicationManager.getApplication().runWriteAction(new Runnable() - { - @Override - public void run() - { - final PsiElement element = myReference.getElement(); - ImportUtils.doImport(element, qName); - } + ApplicationManager.getApplication().runWriteAction(() -> { + final PsiElement element = myReference.getElement(); + ImportUtils.doImport(element, qName); }); } @@ -312,9 +314,9 @@ public boolean execute() private static void filterDefaultPackage(Collection candidates) { - for(Iterator i = candidates.iterator(); i.hasNext(); ) + for (Iterator i = candidates.iterator(); i.hasNext(); ) { - if(!i.next().getQualifiedName().contains(".")) + if (!i.next().getQualifiedName().contains(".")) { i.remove(); } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/BaseJSGenerateHandler.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/BaseJSGenerateHandler.java index 7d6f52d2..0c3642d7 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/BaseJSGenerateHandler.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/BaseJSGenerateHandler.java @@ -19,10 +19,9 @@ */ package com.intellij.lang.javascript.impl.generation; -import consulo.javascript.language.JavaScriptBundle; +import com.intellij.lang.javascript.impl.validation.BaseCreateMethodsFix; import com.intellij.lang.javascript.psi.JSClass; import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; -import com.intellij.lang.javascript.impl.validation.BaseCreateMethodsFix; import consulo.application.ApplicationManager; import consulo.codeEditor.Editor; import consulo.javascript.language.JavaScriptLanguage; @@ -73,7 +72,7 @@ public void invoke(final Project project, final Editor editor, final PsiFile fil builder.withEmptySelection(); } - builder.withTitle(LocalizeValue.localizeTODO(JavaScriptBundle.message(getTitleKey()))); + builder.withTitle(getTitle()); builder.showAsync(project, dataHolder -> { List data = dataHolder.getUserData(ClassMember.KEY_OF_LIST); @@ -157,7 +156,7 @@ else if(JSResolveUtil.isArtificialClassUsedForReferenceList(clazz)) return clazz; } - protected abstract String getTitleKey(); + protected abstract LocalizeValue getTitle(); protected abstract BaseCreateMethodsFix createFix(JSClass clazz); diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptGenerateAccessorHandler.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptGenerateAccessorHandler.java index b874f9f9..9cfd208c 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptGenerateAccessorHandler.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptGenerateAccessorHandler.java @@ -16,21 +16,22 @@ package com.intellij.lang.javascript.impl.generation; -import consulo.javascript.language.JavaScriptBundle; import com.intellij.lang.javascript.formatter.JSCodeStyleSettings; +import com.intellij.lang.javascript.impl.validation.BaseCreateMethodsFix; +import com.intellij.lang.javascript.impl.validation.JSAnnotatingVisitor; import com.intellij.lang.javascript.psi.*; import com.intellij.lang.javascript.psi.impl.JSChangeUtil; import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; import com.intellij.lang.javascript.psi.resolve.ResolveProcessor; -import com.intellij.lang.javascript.impl.validation.BaseCreateMethodsFix; -import com.intellij.lang.javascript.impl.validation.JSAnnotatingVisitor; import consulo.application.ApplicationManager; import consulo.codeEditor.Editor; +import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.codeStyle.CodeStyleSettingsManager; import consulo.language.psi.PsiElement; import consulo.language.psi.PsiFile; import consulo.language.psi.resolve.ResolveState; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import consulo.project.Project; import consulo.ui.ex.awt.NonFocusableCheckBox; import consulo.util.lang.StringUtil; @@ -65,11 +66,17 @@ static enum GenerationMode } @Override - protected String getTitleKey() + protected LocalizeValue getTitle() { - return mode == GenerationMode.GETTERS ? "generate.getter.fields.chooser.title" : mode == GenerationMode.SETTERS ? "generate.setter.fields.chooser" + - ".title" : mode == GenerationMode.GETTERS_AND_SETTERS ? "generate.getter.setter.chooser.title" : mode == GenerationMode.TOSTRING ? "generate.to" + - ".string.chooser.title" : "generate.constructor.fields.chooser.title"; + return mode == GenerationMode.GETTERS + ? JavaScriptLocalize.generateGetterFieldsChooserTitle() + : mode == GenerationMode.SETTERS + ? JavaScriptLocalize.generateSetterFieldsChooserTitle() + : mode == GenerationMode.GETTERS_AND_SETTERS + ? JavaScriptLocalize.generateGetterSetterChooserTitle() + : mode == GenerationMode.TOSTRING + ? JavaScriptLocalize.generateToStringChooserTitle() + : JavaScriptLocalize.generateConstructorFieldsChooserTitle(); } @Override @@ -80,7 +87,7 @@ protected void appendOwnOptions(List jComponentList) { if(!ApplicationManager.getApplication().isUnitTestMode()) { - myCreateBindableProperties = new NonFocusableCheckBox(JavaScriptBundle.message("generate.getter.fields.bindable.properties")); + myCreateBindableProperties = new NonFocusableCheckBox(JavaScriptLocalize.generateGetterFieldsBindableProperties().get()); jComponentList.add(myCreateBindableProperties); } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptImplementMethodsHandler.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptImplementMethodsHandler.java index d4c5c491..d0152e12 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptImplementMethodsHandler.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptImplementMethodsHandler.java @@ -19,14 +19,16 @@ */ package com.intellij.lang.javascript.impl.generation; -import com.intellij.lang.javascript.psi.JSClass; -import com.intellij.lang.javascript.psi.JSFunction; -import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; import com.intellij.lang.javascript.impl.validation.BaseCreateMethodsFix; import com.intellij.lang.javascript.impl.validation.ImplementMethodsFix; import com.intellij.lang.javascript.impl.validation.ImplementedMethodProcessor; +import com.intellij.lang.javascript.psi.JSClass; +import com.intellij.lang.javascript.psi.JSFunction; +import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; import consulo.annotation.component.ExtensionImpl; +import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.editor.generation.ImplementMethodHandler; +import consulo.localize.LocalizeValue; import java.util.Collection; @@ -49,12 +51,12 @@ protected void addNonimplementedFunction(final JSFunction function) } @Override - protected String getTitleKey() + protected LocalizeValue getTitle() { - return "methods.to.implement.chooser.title"; - } + return JavaScriptLocalize.methodsToImplementChooserTitle(); + } - @Override + @Override protected BaseCreateMethodsFix createFix(final JSClass clazz) { return new ImplementMethodsFix(clazz); diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptOverrideMethodsHandler.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptOverrideMethodsHandler.java index 94919eee..f73985a8 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptOverrideMethodsHandler.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptOverrideMethodsHandler.java @@ -19,16 +19,18 @@ */ package com.intellij.lang.javascript.impl.generation; +import com.intellij.lang.javascript.impl.validation.BaseCreateMethodsFix; +import com.intellij.lang.javascript.impl.validation.ImplementedMethodProcessor; import com.intellij.lang.javascript.psi.JSAttributeList; import com.intellij.lang.javascript.psi.JSClass; import com.intellij.lang.javascript.psi.JSFunction; import com.intellij.lang.javascript.psi.resolve.ResolveProcessor; -import com.intellij.lang.javascript.impl.validation.BaseCreateMethodsFix; -import com.intellij.lang.javascript.impl.validation.ImplementedMethodProcessor; import consulo.annotation.component.ExtensionImpl; +import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.editor.generation.OverrideMethodHandler; import consulo.language.psi.PsiElement; import consulo.language.psi.resolve.ResolveState; +import consulo.localize.LocalizeValue; import java.util.Collection; import java.util.Map; @@ -38,12 +40,12 @@ public class JavaScriptOverrideMethodsHandler extends BaseJSGenerateHandler implements OverrideMethodHandler { @Override - protected String getTitleKey() + protected LocalizeValue getTitle() { - return "methods.to.override.chooser.title"; - } + return JavaScriptLocalize.methodsToOverrideChooserTitle(); + } - @Override + @Override protected BaseCreateMethodsFix createFix(final JSClass clazz) { return new OverrideMethodsFix(clazz); diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptColorsAndFontsPage.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptColorsAndFontsPage.java index 3e54999a..fd1913b0 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptColorsAndFontsPage.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptColorsAndFontsPage.java @@ -16,13 +16,13 @@ package com.intellij.lang.javascript.impl.highlighting; -import consulo.javascript.language.JavaScriptBundle; import consulo.annotation.component.ExtensionImpl; import consulo.colorScheme.TextAttributesKey; import consulo.colorScheme.setting.AttributesDescriptor; import consulo.colorScheme.setting.ColorDescriptor; import consulo.javascript.ide.hightlight.JavaScriptSyntaxHighlightKeys; import consulo.javascript.lang.JavaScript15LanguageVersion; +import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.editor.colorScheme.setting.ColorSettingsPage; import consulo.language.editor.highlight.SyntaxHighlighter; import org.jetbrains.annotations.NonNls; @@ -47,34 +47,34 @@ public class JavaScriptColorsAndFontsPage implements ColorSettingsPage static { ATTRS = new AttributesDescriptor[]{ - new AttributesDescriptor(JavaScriptBundle.message("javascript.keyword"), JavaScriptSyntaxHighlightKeys.JS_KEYWORD), - new AttributesDescriptor(JavaScriptBundle.message("javascript.string"), JavaScriptSyntaxHighlightKeys.JS_STRING), - new AttributesDescriptor(JavaScriptBundle.message("javascript.valid.string.escape"), JavaScriptSyntaxHighlightKeys.JS_VALID_STRING_ESCAPE), - new AttributesDescriptor(JavaScriptBundle.message("javascript.invalid.string.escape"), JavaScriptSyntaxHighlightKeys.JS_INVALID_STRING_ESCAPE), - new AttributesDescriptor(JavaScriptBundle.message("javascript.number"), JavaScriptSyntaxHighlightKeys.JS_NUMBER), - new AttributesDescriptor(JavaScriptBundle.message("javascript.regexp"), JavaScriptSyntaxHighlightKeys.JS_REGEXP), - new AttributesDescriptor(JavaScriptBundle.message("javascript.linecomment"), JavaScriptSyntaxHighlightKeys.JS_LINE_COMMENT), - new AttributesDescriptor(JavaScriptBundle.message("javascript.blockcomment"), JavaScriptSyntaxHighlightKeys.JS_BLOCK_COMMENT), - new AttributesDescriptor(JavaScriptBundle.message("javascript.doccomment"), JavaScriptSyntaxHighlightKeys.JS_DOC_COMMENT), - new AttributesDescriptor(JavaScriptBundle.message("javascript.operation"), JavaScriptSyntaxHighlightKeys.JS_OPERATION_SIGN), - new AttributesDescriptor(JavaScriptBundle.message("javascript.parens"), JavaScriptSyntaxHighlightKeys.JS_PARENTHS), - new AttributesDescriptor(JavaScriptBundle.message("javascript.brackets"), JavaScriptSyntaxHighlightKeys.JS_BRACKETS), - new AttributesDescriptor(JavaScriptBundle.message("javascript.braces"), JavaScriptSyntaxHighlightKeys.JS_BRACES), - new AttributesDescriptor(JavaScriptBundle.message("javascript.comma"), JavaScriptSyntaxHighlightKeys.JS_COMMA), - new AttributesDescriptor(JavaScriptBundle.message("javascript.dot"), JavaScriptSyntaxHighlightKeys.JS_DOT), - new AttributesDescriptor(JavaScriptBundle.message("javascript.semicolon"), JavaScriptSyntaxHighlightKeys.JS_SEMICOLON), - new AttributesDescriptor(JavaScriptBundle.message("javascript.badcharacter"), JavaScriptSyntaxHighlightKeys.JS_BAD_CHARACTER), - new AttributesDescriptor(JavaScriptBundle.message("javascript.docmarkup"), JavaScriptSyntaxHighlightKeys.JS_DOC_MARKUP), - new AttributesDescriptor(JavaScriptBundle.message("javascript.doctag"), JavaScriptSyntaxHighlightKeys.JS_DOC_TAG), - new AttributesDescriptor(JavaScriptBundle.message("javascript.parameter"), JavaScriptSyntaxHighlightKeys.JS_PARAMETER), - new AttributesDescriptor(JavaScriptBundle.message("javascript.local.variable"), JavaScriptSyntaxHighlightKeys.JS_LOCAL_VARIABLE), - new AttributesDescriptor(JavaScriptBundle.message("javascript.global.variable"), JavaScriptSyntaxHighlightKeys.JS_GLOBAL_VARIABLE), - new AttributesDescriptor(JavaScriptBundle.message("javascript.global.function"), JavaScriptSyntaxHighlightKeys.JS_GLOBAL_FUNCTION), - new AttributesDescriptor(JavaScriptBundle.message("javascript.instance.member.function"), JavaScriptSyntaxHighlightKeys.JS_INSTANCE_MEMBER_FUNCTION), - new AttributesDescriptor(JavaScriptBundle.message("javascript.static.member.function"), JavaScriptSyntaxHighlightKeys.JS_STATIC_MEMBER_FUNCTION), - new AttributesDescriptor(JavaScriptBundle.message("javascript.static.member.variable"), JavaScriptSyntaxHighlightKeys.JS_STATIC_MEMBER_VARIABLE), - new AttributesDescriptor(JavaScriptBundle.message("javascript.instance.member.variable"), JavaScriptSyntaxHighlightKeys.JS_INSTANCE_MEMBER_VARIABLE), - new AttributesDescriptor(JavaScriptBundle.message("javascript.metadata"), JavaScriptSyntaxHighlightKeys.JS_METADATA), + new AttributesDescriptor(JavaScriptLocalize.javascriptKeyword(), JavaScriptSyntaxHighlightKeys.JS_KEYWORD), + new AttributesDescriptor(JavaScriptLocalize.javascriptString(), JavaScriptSyntaxHighlightKeys.JS_STRING), + new AttributesDescriptor(JavaScriptLocalize.javascriptValidStringEscape(), JavaScriptSyntaxHighlightKeys.JS_VALID_STRING_ESCAPE), + new AttributesDescriptor(JavaScriptLocalize.javascriptInvalidStringEscape(), JavaScriptSyntaxHighlightKeys.JS_INVALID_STRING_ESCAPE), + new AttributesDescriptor(JavaScriptLocalize.javascriptNumber(), JavaScriptSyntaxHighlightKeys.JS_NUMBER), + new AttributesDescriptor(JavaScriptLocalize.javascriptRegexp(), JavaScriptSyntaxHighlightKeys.JS_REGEXP), + new AttributesDescriptor(JavaScriptLocalize.javascriptLinecomment(), JavaScriptSyntaxHighlightKeys.JS_LINE_COMMENT), + new AttributesDescriptor(JavaScriptLocalize.javascriptBlockcomment(), JavaScriptSyntaxHighlightKeys.JS_BLOCK_COMMENT), + new AttributesDescriptor(JavaScriptLocalize.javascriptDoccomment(), JavaScriptSyntaxHighlightKeys.JS_DOC_COMMENT), + new AttributesDescriptor(JavaScriptLocalize.javascriptOperation(), JavaScriptSyntaxHighlightKeys.JS_OPERATION_SIGN), + new AttributesDescriptor(JavaScriptLocalize.javascriptParens(), JavaScriptSyntaxHighlightKeys.JS_PARENTHS), + new AttributesDescriptor(JavaScriptLocalize.javascriptBrackets(), JavaScriptSyntaxHighlightKeys.JS_BRACKETS), + new AttributesDescriptor(JavaScriptLocalize.javascriptBraces(), JavaScriptSyntaxHighlightKeys.JS_BRACES), + new AttributesDescriptor(JavaScriptLocalize.javascriptComma(), JavaScriptSyntaxHighlightKeys.JS_COMMA), + new AttributesDescriptor(JavaScriptLocalize.javascriptDot(), JavaScriptSyntaxHighlightKeys.JS_DOT), + new AttributesDescriptor(JavaScriptLocalize.javascriptSemicolon(), JavaScriptSyntaxHighlightKeys.JS_SEMICOLON), + new AttributesDescriptor(JavaScriptLocalize.javascriptBadcharacter(), JavaScriptSyntaxHighlightKeys.JS_BAD_CHARACTER), + new AttributesDescriptor(JavaScriptLocalize.javascriptDocmarkup(), JavaScriptSyntaxHighlightKeys.JS_DOC_MARKUP), + new AttributesDescriptor(JavaScriptLocalize.javascriptDoctag(), JavaScriptSyntaxHighlightKeys.JS_DOC_TAG), + new AttributesDescriptor(JavaScriptLocalize.javascriptParameter(), JavaScriptSyntaxHighlightKeys.JS_PARAMETER), + new AttributesDescriptor(JavaScriptLocalize.javascriptLocalVariable(), JavaScriptSyntaxHighlightKeys.JS_LOCAL_VARIABLE), + new AttributesDescriptor(JavaScriptLocalize.javascriptGlobalVariable(), JavaScriptSyntaxHighlightKeys.JS_GLOBAL_VARIABLE), + new AttributesDescriptor(JavaScriptLocalize.javascriptGlobalFunction(), JavaScriptSyntaxHighlightKeys.JS_GLOBAL_FUNCTION), + new AttributesDescriptor(JavaScriptLocalize.javascriptInstanceMemberFunction(), JavaScriptSyntaxHighlightKeys.JS_INSTANCE_MEMBER_FUNCTION), + new AttributesDescriptor(JavaScriptLocalize.javascriptStaticMemberFunction(), JavaScriptSyntaxHighlightKeys.JS_STATIC_MEMBER_FUNCTION), + new AttributesDescriptor(JavaScriptLocalize.javascriptStaticMemberVariable(), JavaScriptSyntaxHighlightKeys.JS_STATIC_MEMBER_VARIABLE), + new AttributesDescriptor(JavaScriptLocalize.javascriptInstanceMemberVariable(), JavaScriptSyntaxHighlightKeys.JS_INSTANCE_MEMBER_VARIABLE), + new AttributesDescriptor(JavaScriptLocalize.javascriptMetadata(), JavaScriptSyntaxHighlightKeys.JS_METADATA), }; ADDITIONAL_HIGHLIGHT_DESCRIPTORS.put("local_variable", JavaScriptSyntaxHighlightKeys.JS_LOCAL_VARIABLE); ADDITIONAL_HIGHLIGHT_DESCRIPTORS.put("global_variable", JavaScriptSyntaxHighlightKeys.JS_GLOBAL_VARIABLE); diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptHighlightVisitor.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptHighlightVisitor.java index 51dfc950..016410bb 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptHighlightVisitor.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptHighlightVisitor.java @@ -24,9 +24,9 @@ import consulo.javascript.ide.hightlight.JavaScriptSyntaxHighlightKeys; import consulo.javascript.lang.JavaScriptContextKeywordElementType; import consulo.javascript.lang.JavaScriptTokenSets; -import consulo.javascript.language.JavaScriptBundle; import consulo.javascript.language.JavaScriptFeature; import consulo.javascript.language.JavaScriptVersionUtil; +import consulo.javascript.localize.JavaScriptLocalize; import consulo.javascript.psi.JSSimpleLiteralExpression; import consulo.language.ast.IElementType; import consulo.language.editor.rawHighlight.HighlightInfo; @@ -35,6 +35,7 @@ import consulo.language.editor.rawHighlight.HighlightVisitor; import consulo.language.psi.*; import consulo.language.psi.util.PsiTreeUtil; +import consulo.localize.LocalizeValue; import consulo.util.lang.StringUtil; import javax.annotation.Nonnull; @@ -361,7 +362,7 @@ private void reportFeatureUsage(@Nonnull PsiElement element, @Nonnull JavaScript return; } - String message = JavaScriptBundle.message("this.feature.is.not.supported.by.current.language", javaScriptFeature.getName()); + LocalizeValue message = JavaScriptLocalize.thisFeatureIsNotSupportedByCurrentLanguage(javaScriptFeature.getName()); myHighlightInfoHolder.add(HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(element).descriptionAndTooltip(message).create()); } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/CreateClassDialog.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/CreateClassDialog.java index 393556ef..869b4e3c 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/CreateClassDialog.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/CreateClassDialog.java @@ -16,22 +16,19 @@ package com.intellij.lang.javascript.impl.inspections; -import javax.swing.JComponent; -import javax.swing.JLabel; -import javax.swing.JPanel; -import javax.swing.JTextField; -import javax.swing.event.DocumentEvent; - -import consulo.javascript.language.JavaScriptBundle; import com.intellij.lang.javascript.psi.JSExpressionStatement; import com.intellij.lang.javascript.psi.JSReferenceExpression; import com.intellij.lang.javascript.psi.impl.JSChangeUtil; -import consulo.ui.ex.awt.DialogWrapper; -import consulo.language.psi.PsiElement; +import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.ast.ASTNode; +import consulo.language.psi.PsiElement; import consulo.project.Project; +import consulo.ui.ex.awt.DialogWrapper; import consulo.ui.ex.awt.event.DocumentAdapter; +import javax.swing.*; +import javax.swing.event.DocumentEvent; + /** * @author Maxim.Mossienko * Date: Jun 9, 2008 @@ -47,7 +44,7 @@ protected CreateClassDialog(final Project project, String className, String pack { super(project, false); - setTitle(JavaScriptBundle.message(isInterface ? "create.interface.dialog.title" : "create.class.dialog.title")); + setTitle(isInterface ? JavaScriptLocalize.createInterfaceDialogTitle() : JavaScriptLocalize.createClassDialogTitle()); setModal(true); myPackageName.getDocument().addDocumentListener(new DocumentAdapter() diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/CreateClassOrInterfaceAction.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/CreateClassOrInterfaceAction.java index f0a60809..6d7fc913 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/CreateClassOrInterfaceAction.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/CreateClassOrInterfaceAction.java @@ -16,7 +16,6 @@ package com.intellij.lang.javascript.impl.inspections; -import consulo.javascript.language.JavaScriptBundle; import com.intellij.lang.javascript.JavaScriptSupportLoader; import com.intellij.lang.javascript.impl.flex.ImportUtils; import com.intellij.lang.javascript.psi.JSReferenceExpression; @@ -25,6 +24,7 @@ import consulo.fileTemplate.FileTemplate; import consulo.fileTemplate.FileTemplateManager; import consulo.fileTemplate.FileTemplateUtil; +import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.editor.inspection.LocalQuickFix; import consulo.language.editor.inspection.ProblemDescriptor; import consulo.language.psi.PsiDirectory; @@ -70,8 +70,9 @@ public CreateClassOrInterfaceAction(JSReferenceExpression context, boolean isInt @Nonnull public String getName() { - final String key = myIsInterface ? "javascript.create.interface.intention.name" : "javascript.create.class.intention.name"; - return JavaScriptBundle.message(key, classNameToCreate); + return myIsInterface + ? JavaScriptLocalize.javascriptCreateInterfaceIntentionName(classNameToCreate).get() + : JavaScriptLocalize.javascriptCreateClassIntentionName(classNameToCreate).get(); } @Override @@ -86,18 +87,18 @@ public void applyFix(@Nonnull final Project project, @Nonnull final ProblemDescr { PsiFile contextFile = myContext.getContainingFile(); final PsiElement context = contextFile.getContext(); - if(context != null) + if (context != null) { contextFile = context.getContainingFile(); } packageName = JSResolveUtil.getExpectedPackageNameFromFile(contextFile.getVirtualFile(), project, false); - if(!ApplicationManager.getApplication().isUnitTestMode()) + if (!ApplicationManager.getApplication().isUnitTestMode()) { final CreateClassDialog dialog = new CreateClassDialog(project, classNameToCreate, packageName, myIsInterface); dialog.show(); - if(dialog.getExitCode() != DialogWrapper.OK_EXIT_CODE) + if (dialog.getExitCode() != DialogWrapper.OK_EXIT_CODE) { return; } @@ -116,8 +117,11 @@ public void run() { try { - final FileTemplate template = FileTemplateManager.getInstance().getTemplate(myIsInterface ? JavaScriptSupportLoader - .ACTION_SCRIPT_INTERFACE_TEMPLATE_NAME : JavaScriptSupportLoader.ACTION_SCRIPT_CLASS_TEMPLATE_NAME); + final FileTemplate template = FileTemplateManager.getInstance().getTemplate( + myIsInterface + ? JavaScriptSupportLoader.ACTION_SCRIPT_INTERFACE_TEMPLATE_NAME + : JavaScriptSupportLoader.ACTION_SCRIPT_CLASS_TEMPLATE_NAME + ); @NonNls final String fileName = classNameToCreate + ".as"; final Properties props = new Properties(); props.setProperty(FileTemplate.ATTRIBUTE_NAME, classNameToCreate); @@ -125,15 +129,15 @@ public void run() VirtualFile base = ModuleRootManager.getInstance(element).getSourceRoots()[0]; VirtualFile relativeFile = VirtualFileUtil.findRelativeFile(packageName, base); - if(relativeFile == null) + if (relativeFile == null) { relativeFile = base; StringTokenizer tokenizer = new StringTokenizer(packageName, "."); - while(tokenizer.hasMoreTokens()) + while (tokenizer.hasMoreTokens()) { String nextNameSegment = tokenizer.nextToken(); VirtualFile next = relativeFile.findChild(nextNameSegment); - if(next == null) + if (next == null) { next = relativeFile.createChildDirectory(this, nextNameSegment); } @@ -148,12 +152,12 @@ public void run() FileTemplateUtil.createFromTemplate(template, fileName, props, psiDirectory); String contextPackage = JSResolveUtil.findPackageStatementQualifier(myContext); - if(packageName != null && !packageName.equals(contextPackage) && packageName.length() > 0) + if (packageName != null && !packageName.equals(contextPackage) && packageName.length() > 0) { ImportUtils.doImport(myContext, packageName + "." + classNameToCreate); } } - catch(Exception e) + catch (Exception e) { Logger.getInstance(getClass().getName()).error(e); } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSDeprecatedSymbolsInspection.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSDeprecatedSymbolsInspection.java index ccb426c0..540de9a1 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSDeprecatedSymbolsInspection.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSDeprecatedSymbolsInspection.java @@ -17,12 +17,12 @@ package com.intellij.lang.javascript.impl.inspections; import com.intellij.javascript.documentation.JSDocumentationUtils; -import consulo.javascript.language.JavaScriptBundle; import com.intellij.lang.javascript.psi.JSAssignmentExpression; import com.intellij.lang.javascript.psi.JSDefinitionExpression; import com.intellij.lang.javascript.psi.JSElementVisitor; import com.intellij.lang.javascript.psi.JSReferenceExpression; import consulo.annotation.component.ExtensionImpl; +import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.editor.inspection.ProblemHighlightType; import consulo.language.editor.inspection.ProblemsHolder; import consulo.language.psi.PsiElement; @@ -51,7 +51,7 @@ public String getGroupDisplayName() @Nonnull public String getDisplayName() { - return JavaScriptBundle.message("js.deprecated.symbols.inspection.name"); + return JavaScriptLocalize.jsDeprecatedSymbolsInspectionName().get(); } @Override @@ -79,8 +79,11 @@ public void visitJSReferenceExpression(final JSReferenceExpression node) } if(JSDocumentationUtils.isDeprecated(element)) { - holder.registerProblem(node.getReferenceNameElement(), JavaScriptBundle.message("javascript.deprecated.symbol.used.name.message"), - ProblemHighlightType.LIKE_DEPRECATED); + holder.registerProblem( + node.getReferenceNameElement(), + JavaScriptLocalize.javascriptDeprecatedSymbolUsedNameMessage().get(), + ProblemHighlightType.LIKE_DEPRECATED + ); break; } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSDuplicatedDeclarationInspection.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSDuplicatedDeclarationInspection.java index 958a0ad4..178b1b31 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSDuplicatedDeclarationInspection.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSDuplicatedDeclarationInspection.java @@ -17,13 +17,13 @@ package com.intellij.lang.javascript.impl.inspections; import com.intellij.lang.javascript.JSElementType; -import consulo.javascript.language.JavaScriptBundle; import com.intellij.lang.javascript.JavaScriptSupportLoader; import com.intellij.lang.javascript.psi.*; import com.intellij.lang.javascript.psi.impl.JSEmbeddedContentImpl; import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; import com.intellij.lang.javascript.psi.resolve.ResolveProcessor; import consulo.annotation.component.ExtensionImpl; +import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.editor.inspection.ProblemHighlightType; import consulo.language.editor.inspection.ProblemsHolder; import consulo.language.editor.rawHighlight.HighlightDisplayLevel; @@ -57,7 +57,7 @@ public String getGroupDisplayName() @Nonnull public String getDisplayName() { - return JavaScriptBundle.message("js.duplicated.declaration.inspection.name"); + return JavaScriptLocalize.jsDuplicatedDeclarationInspectionName().get(); } @Override @@ -193,10 +193,12 @@ else if((attrList != null && attrList.getNamespace() != null) || (attrList2 != n if(processor.getResult() != null && processor.getResult() != scope) { - holder.registerProblem(nameIdentifier, JavaScriptBundle.message("javascript.validation.message.duplicate.declaration"), - originalScope.getContainingFile().getLanguage() == JavaScriptSupportLoader.ECMA_SCRIPT_L4 ? ProblemHighlightType.ERROR : - ProblemHighlightType - .GENERIC_ERROR_OR_WARNING); + holder.registerProblem( + nameIdentifier, + JavaScriptLocalize.javascriptValidationMessageDuplicateDeclaration().get(), + originalScope.getContainingFile().getLanguage() == JavaScriptSupportLoader.ECMA_SCRIPT_L4 + ? ProblemHighlightType.ERROR : ProblemHighlightType.GENERIC_ERROR_OR_WARNING + ); } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUndeclaredVariableInspection.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUndeclaredVariableInspection.java index eb5a836a..276a1108 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUndeclaredVariableInspection.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUndeclaredVariableInspection.java @@ -17,12 +17,12 @@ package com.intellij.lang.javascript.impl.inspections; import com.intellij.lang.javascript.JSTokenTypes; -import consulo.javascript.language.JavaScriptBundle; import com.intellij.lang.javascript.psi.*; import com.intellij.lang.javascript.psi.util.JSUtils; import consulo.annotation.component.ExtensionImpl; import consulo.document.Document; import consulo.document.util.TextRange; +import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.codeStyle.CodeStyleManager; import consulo.language.editor.FileModificationService; import consulo.language.editor.inspection.LocalQuickFix; @@ -62,7 +62,7 @@ public String getGroupDisplayName() @Nonnull public String getDisplayName() { - return JavaScriptBundle.message("js.undeclared.variable.inspection.name"); + return JavaScriptLocalize.jsUndeclaredVariableInspectionName().get(); } @Override @@ -117,8 +117,12 @@ public void visitJSReferenceExpression(final JSReferenceExpression node) fixes.add(new DeclareJSVariableIntentionAction(node)); } - holder.registerProblem(nameIdentifier, JavaScriptBundle.message("javascript.undeclared.variable.name.message", node.getReferencedName()), - ProblemHighlightType.GENERIC_ERROR_OR_WARNING, !fixes.isEmpty() ? fixes.toArray(new LocalQuickFix[fixes.size()]) : null); + holder.registerProblem( + nameIdentifier, + JavaScriptLocalize.javascriptUndeclaredVariableNameMessage(node.getReferencedName()).get(), + ProblemHighlightType.GENERIC_ERROR_OR_WARNING, + !fixes.isEmpty() ? fixes.toArray(new LocalQuickFix[fixes.size()]) : null + ); } } } @@ -162,14 +166,14 @@ private static class DeclareJSVariableIntentionAction implements LocalQuickFix @Nonnull public String getName() { - return JavaScriptBundle.message("javascript.declare.variable.intention.name", myReferenceExpression.getReferencedName()); + return JavaScriptLocalize.javascriptDeclareVariableIntentionName(myReferenceExpression.getReferencedName()).get(); } @Override @Nonnull public String getFamilyName() { - return JavaScriptBundle.message("javascript.create.variable.intention.family"); + return JavaScriptLocalize.javascriptCreateVariableIntentionFamily().get(); } @Override diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnresolvedFunctionInspection.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnresolvedFunctionInspection.java index 13edeb48..c58af7fc 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnresolvedFunctionInspection.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnresolvedFunctionInspection.java @@ -17,21 +17,21 @@ package com.intellij.lang.javascript.impl.inspections; import com.intellij.lang.javascript.JSTokenTypes; -import consulo.javascript.language.JavaScriptBundle; import com.intellij.lang.javascript.JavaScriptSupportLoader; -import com.intellij.lang.javascript.impl.flex.AddImportECMAScriptClassOrFunctionAction; import com.intellij.lang.javascript.flex.XmlBackedJSClassImpl; +import com.intellij.lang.javascript.impl.flex.AddImportECMAScriptClassOrFunctionAction; +import com.intellij.lang.javascript.impl.validation.JSAnnotatingVisitor; import com.intellij.lang.javascript.inspections.qucikFixes.BaseCreateFix; import com.intellij.lang.javascript.psi.*; import com.intellij.lang.javascript.psi.resolve.JSImportHandlingUtil; import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; import com.intellij.lang.javascript.psi.util.JSUtils; -import com.intellij.lang.javascript.impl.validation.JSAnnotatingVisitor; import consulo.annotation.component.ExtensionImpl; import consulo.codeEditor.Editor; import consulo.javascript.ide.codeInsight.JavaScriptQuickFixFactory; import consulo.javascript.language.JavaScriptFeature; import consulo.javascript.language.JavaScriptVersionUtil; +import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.ast.IElementType; import consulo.language.editor.inspection.LocalQuickFix; import consulo.language.editor.inspection.ProblemDescriptor; @@ -43,15 +43,16 @@ import consulo.language.psi.PsiFile; import consulo.language.psi.ResolveResult; import consulo.language.psi.util.PsiTreeUtil; +import consulo.localize.LocalizeValue; import consulo.project.Project; import consulo.xml.ide.highlighter.XmlFileType; import org.jetbrains.annotations.NonNls; -import org.jetbrains.annotations.PropertyKey; import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.LinkedList; import java.util.List; +import java.util.function.BiFunction; /** * @author Maxim.Mossienko @@ -73,7 +74,7 @@ public String getGroupDisplayName() @Nonnull public String getDisplayName() { - return JavaScriptBundle.message("js.unresolved.function.inspection.name"); + return JavaScriptLocalize.jsUnresolvedFunctionInspectionName().get(); } @Override @@ -94,9 +95,8 @@ public void visitJSCallExpression(final JSCallExpression node) { final JSExpression methodExpression = node.getMethodExpression(); - if(methodExpression instanceof JSReferenceExpression) + if (methodExpression instanceof JSReferenceExpression referenceExpression) { - final JSReferenceExpression referenceExpression = (JSReferenceExpression) methodExpression; final ResolveResult[] resolveResults = referenceExpression.multiResolve(false); boolean noCompleteResolve = true; @@ -110,22 +110,25 @@ public void visitJSCallExpression(final JSCallExpression node) PsiElement element = r.getElement(); - if(element instanceof JSVariable) + if (element instanceof JSVariable variable) { - String typeText = ((JSVariable) element).getTypeString(); + String typeText = variable.getTypeString(); if(typeText != null && !"*".equals(typeText)) { if(!allowMemberReference(inNewExpression, typeText)) { - holder.registerProblem(((JSReferenceExpression) methodExpression).getReferenceNameElement(), JavaScriptBundle.message("javascript.term.does.not" + - ".evaluate.to.function"), getHighlightTypeForTypeOrSignatureProblem(node)); + holder.registerProblem( + referenceExpression.getReferenceNameElement(), + JavaScriptLocalize.javascriptTermDoesNotEvaluateToFunction().get(), + getHighlightTypeForTypeOrSignatureProblem(node) + ); } } } - else if(element instanceof JSFunction && ((JSFunction) element).isGetProperty()) + else if (element instanceof JSFunction function && function.isGetProperty()) { - String typeText = ((JSFunction) element).getReturnTypeString(); + String typeText = function.getReturnTypeString(); if(!allowMemberReference(inNewExpression, typeText)) { @@ -135,12 +138,19 @@ else if(element instanceof JSFunction && ((JSFunction) element).isGetProperty()) if(argumentList != null) { fixes = new LocalQuickFix[]{ - new JSAnnotatingVisitor.RemoveASTNodeFix(argumentList.getNode(), "javascript.term.does.not.evaluate.to.function2.fix") + new JSAnnotatingVisitor.RemoveASTNodeFix( + argumentList.getNode(), + JavaScriptLocalize.javascriptTermDoesNotEvaluateToFunction2Fix() + ) }; } - holder.registerProblem(((JSReferenceExpression) methodExpression).getReferenceNameElement(), JavaScriptBundle.message("javascript.term.does.not" + - ".evaluate.to.function2"), getHighlightTypeForTypeOrSignatureProblem(node), fixes); + holder.registerProblem( + ((JSReferenceExpression) methodExpression).getReferenceNameElement(), + JavaScriptLocalize.javascriptTermDoesNotEvaluateToFunction2().get(), + getHighlightTypeForTypeOrSignatureProblem(node), + fixes + ); } } break; @@ -187,21 +197,29 @@ else if(element instanceof JSFunction && ((JSFunction) element).isGetProperty()) if(referenceNameElement != null) { - holder.registerProblem(referenceNameElement, JavaScriptBundle.message(inNewExpression ? "javascript.unresolved.type.name.message" : "javascript" + - ".unresolved.function.name.message", refName), getUnresolveReferenceHighlightType(qualifier, node), - quickFixes.size() > 0 ? quickFixes.toArray(new LocalQuickFix[quickFixes.size()]) : null); + holder.registerProblem( + referenceNameElement, + inNewExpression + ? JavaScriptLocalize.javascriptUnresolvedTypeNameMessage(refName).get() + : JavaScriptLocalize.javascriptUnresolvedFunctionNameMessage(refName).get(), + getUnresolveReferenceHighlightType(qualifier, node), + quickFixes.size() > 0 ? quickFixes.toArray(new LocalQuickFix[quickFixes.size()]) : null + ); } } else { PsiElement element = resolveResults[0].getElement(); - if(inNewExpression && element instanceof JSClass && ((JSClass) element).isInterface()) + if (inNewExpression && element instanceof JSClass jsClass && jsClass.isInterface()) { final PsiElement referenceNameElement = referenceExpression.getReferenceNameElement(); - holder.registerProblem(referenceNameElement, JavaScriptBundle.message("javascript.interface.can.not.be.instantiated.message"), - getUnresolveReferenceHighlightType(referenceExpression.getQualifier(), node)); + holder.registerProblem( + referenceNameElement, + JavaScriptLocalize.javascriptInterfaceCanNotBeInstantiatedMessage().get(), + getUnresolveReferenceHighlightType(referenceExpression.getQualifier(), node) + ); } else { @@ -218,20 +236,23 @@ else if(methodExpression instanceof JSSuperExpression) checkFunction(node, element, holder); } } - else if(methodExpression instanceof JSNewExpression) + else if (methodExpression instanceof JSNewExpression newExpression) { - JSExpression methodExpr = ((JSNewExpression) methodExpression).getMethodExpression(); + JSExpression methodExpr = newExpression.getMethodExpression(); - if(methodExpr instanceof JSReferenceExpression) + if (methodExpr instanceof JSReferenceExpression referenceExpression) { - ResolveResult[] results = ((JSReferenceExpression) methodExpr).multiResolve(false); + ResolveResult[] results = referenceExpression.multiResolve(false); PsiElement elt; if(results.length > 0 && ((elt = results[0].getElement()) instanceof JSFunction && ((JSFunction) elt).isConstructor() || elt instanceof JSClass)) { - holder.registerProblem(methodExpression, JavaScriptBundle.message("javascript.term.does.not.evaluate.to.function"), - getUnresolveReferenceHighlightType(null, node)); + holder.registerProblem( + methodExpression, + JavaScriptLocalize.javascriptTermDoesNotEvaluateToFunction().get(), + getUnresolveReferenceHighlightType(null, node) + ); } } } @@ -282,7 +303,13 @@ public void visitJSAssignmentExpression(final JSAssignmentExpression node) { expressionType = JSResolveUtil.getQualifiedExpressionType(lOperand, containingFile); } - checkExpressionIsAssignableToType(rOperand, expressionType, holder, containingFile, "javascript.assigned.expression.type.mismatch"); + checkExpressionIsAssignableToType( + rOperand, + expressionType, + holder, + containingFile, + JavaScriptLocalize::javascriptAssignedExpressionTypeMismatch + ); } @Override @@ -310,8 +337,13 @@ public void visitJSReturnStatement(final JSReturnStatement node) return; } - checkExpressionIsAssignableToType(expression, JSImportHandlingUtil.resolveTypeName(typeString, fun), holder, containingFile, - "javascript.returned.expression.type.mismatch"); + checkExpressionIsAssignableToType( + expression, + JSImportHandlingUtil.resolveTypeName(typeString, fun), + holder, + containingFile, + JavaScriptLocalize::javascriptReturnedExpressionTypeMismatch + ); } @Override @@ -322,7 +354,13 @@ public void visitJSVariable(final JSVariable node) { return; } - checkExpressionIsAssignableToVariable(node, initializer, holder, node.getContainingFile(), "javascript.initializer.type.mismatch"); + checkExpressionIsAssignableToVariable( + node, + initializer, + holder, + node.getContainingFile(), + JavaScriptLocalize::javascriptInitializerTypeMismatch + ); } @Override @@ -340,7 +378,7 @@ public void visitJSBinaryExpression(JSBinaryExpression node) if(results.length > 0 && results[0].getElement() instanceof JSVariable) { - checkTypeIs(rOperand, rOperand, holder, "Class", "javascript.binary.operand.type.mismatch"); + checkTypeIs(rOperand, rOperand, holder, "Class"); } } } @@ -367,8 +405,11 @@ public void visitJSForInStatement(JSForInStatement node) "Array".equals(expressionType) && ("Object".equals(typeElementText = typeElement.getText()) || "*".equals(typeElementText))) { - holder.registerProblem(typeElement, JavaScriptBundle.message("javascript.incorrect.array.type.in.for-in"), - ProblemHighlightType.GENERIC_ERROR_OR_WARNING); + holder.registerProblem( + typeElement, + JavaScriptLocalize.javascriptIncorrectArrayTypeInForin().get(), + ProblemHighlightType.GENERIC_ERROR_OR_WARNING + ); continue; } @@ -376,8 +417,7 @@ public void visitJSForInStatement(JSForInStatement node) { continue; } - checkTypeIs(typeElement, typeElement, holder, "XMLList".equals(expressionType) ? "XML" : "String", - "javascript.incorrect.variable.type.mismatch"); + checkTypeIs(typeElement, typeElement, holder, "XMLList".equals(expressionType) ? "XML" : "String"); } } } @@ -390,24 +430,40 @@ private static boolean allowMemberReference(boolean inNewExpression, String type return ("Class".equals(typeText) && inNewExpression) || "Function".equals(typeText); } - private static void checkTypeIs(PsiElement type, PsiElement node, ProblemsHolder holder, String typeName, String key) + private static void checkTypeIs(PsiElement type, PsiElement node, ProblemsHolder holder, String typeName) { - if(type instanceof JSReferenceExpression) + if (type instanceof JSReferenceExpression referenceExpression) { - checkTypeIs((JSExpression) type, node, holder, typeName, key); + String expressionType = JSResolveUtil.getQualifiedExpressionType(referenceExpression, referenceExpression.getContainingFile()); + if (!typeName.equals(expressionType)) + { + holder.registerProblem( + node, + JavaScriptLocalize.javascriptIncorrectVariableTypeMismatch(typeName, expressionType).get(), + getHighlightTypeForTypeOrSignatureProblem(node) + ); + } } else if(type != null) { - holder.registerProblem(node, JavaScriptBundle.message(key, typeName, type.getText()), getHighlightTypeForTypeOrSignatureProblem(node)); + holder.registerProblem( + node, + JavaScriptLocalize.javascriptIncorrectVariableTypeMismatch(typeName, type.getText()).get(), + getHighlightTypeForTypeOrSignatureProblem(node) + ); } } - private static void checkTypeIs(JSExpression rOperand, PsiElement node, ProblemsHolder holder, String typeName, String key) + private static void checkTypeIs(JSExpression rOperand, PsiElement node, ProblemsHolder holder, String typeName) { String expressionType = JSResolveUtil.getQualifiedExpressionType(rOperand, rOperand.getContainingFile()); if(!typeName.equals(expressionType)) { - holder.registerProblem(node, JavaScriptBundle.message(key, typeName, expressionType), getHighlightTypeForTypeOrSignatureProblem(node)); + holder.registerProblem( + node, + JavaScriptLocalize.javascriptBinaryOperandTypeMismatch(typeName, expressionType).get(), + getHighlightTypeForTypeOrSignatureProblem(node) + ); } } @@ -420,22 +476,22 @@ static ProblemHighlightType getUnresolveReferenceHighlightType(final @Nullable J { jsClass = JSResolveUtil.findClassOfQualifier(qualifier, containingFile); - if(jsClass == null && (qualifier instanceof JSReferenceExpression)) + if (jsClass == null && qualifier instanceof JSReferenceExpression referenceExpression) { - ResolveResult[] results = ((JSReferenceExpression) qualifier).multiResolve(false); + ResolveResult[] results = referenceExpression.multiResolve(false); if(results.length != 0) { PsiElement resultElement = results[0].getElement(); String type = null; - if(resultElement instanceof JSVariable) + if (resultElement instanceof JSVariable variable) { - type = ((JSVariable) resultElement).getTypeString(); + type = variable.getTypeString(); } - else if(resultElement instanceof JSFunction) + else if (resultElement instanceof JSFunction function) { - type = ((JSFunction) resultElement).getReturnTypeString(); + type = function.getReturnTypeString(); } if("*".equals(type)) @@ -472,9 +528,8 @@ else if(resultElement instanceof JSFunction) private static void checkFunction(final JSCallExpression node, final PsiElement element, final ProblemsHolder holder) { - if(element instanceof JSFunction) + if (element instanceof JSFunction function) { - final JSFunction function = (JSFunction) element; if(!function.isGetProperty() || !"Function".equals(function.getReturnTypeString())) { final JSParameterList parameterList = function.getParameterList(); @@ -496,8 +551,11 @@ else if(element instanceof JSClass) JSArgumentList argumentList = node.getArgumentList(); if(argumentList == null || argumentList.getArguments().length != 1) { - holder.registerProblem(argumentList != null ? argumentList : node, JavaScriptBundle.message("javascript.invalid.number.of.parameters", "one"), - getHighlightTypeForTypeOrSignatureProblem(node)); + holder.registerProblem( + argumentList != null ? argumentList : node, + JavaScriptLocalize.javascriptInvalidNumberOfParameters("one").get(), + getHighlightTypeForTypeOrSignatureProblem(node) + ); } } } @@ -536,12 +594,15 @@ private static void checkCallParameters(final JSCallExpression node, final JSPar maxParameterLength = Integer.MAX_VALUE; } - if((expressions.length < minParameterLength || expressions.length > maxParameterLength) && !functionReferencesArguments) + if ((expressions.length < minParameterLength || expressions.length > maxParameterLength) && !functionReferencesArguments) { - final String s = (lastIsRest ? minParameterLength + " or more " : String.valueOf(minParameterLength) + (minParameterLength != maxParameterLength - ? ".." + maxParameterLength : "")); - holder.registerProblem(argumentList != null ? argumentList : node, JavaScriptBundle.message("javascript.invalid.number.of.parameters", s), - getHighlightTypeForTypeOrSignatureProblem(node)); + final String s = (lastIsRest ? minParameterLength + " or more " : String.valueOf(minParameterLength) + + (minParameterLength != maxParameterLength ? ".." + maxParameterLength : "")); + holder.registerProblem( + argumentList != null ? argumentList : node, + JavaScriptLocalize.javascriptInvalidNumberOfParameters(s).get(), + getHighlightTypeForTypeOrSignatureProblem(node) + ); } else { @@ -558,21 +619,37 @@ private static void checkCallParameters(final JSCallExpression node, final JSPar { break; } - checkExpressionIsAssignableToVariable(p, expressions[i], holder, containingFile, "javascript.argument.type.mismatch"); + checkExpressionIsAssignableToVariable(p, expressions[i], holder, containingFile, JavaScriptLocalize::javascriptArgumentTypeMismatch); ++i; } } } - private static void checkExpressionIsAssignableToVariable(final JSVariable p, JSExpression expr, final ProblemsHolder holder, - final PsiFile containingFile, @PropertyKey(resourceBundle = JavaScriptBundle.BUNDLE) String problemKey) + private static void checkExpressionIsAssignableToVariable( + final JSVariable p, + JSExpression expr, + final ProblemsHolder holder, + final PsiFile containingFile, + final BiFunction messageGenerator + ) { final String parameterTypeResolved = JSImportHandlingUtil.resolveTypeName(p.getTypeString(), p); - checkExpressionIsAssignableToType(expr, parameterTypeResolved, holder, containingFile, problemKey); + checkExpressionIsAssignableToType( + expr, + parameterTypeResolved, + holder, + containingFile, + messageGenerator + ); } - private static void checkExpressionIsAssignableToType(final JSExpression expr, final String type, final ProblemsHolder holder, - final PsiFile containingFile, final String problemKey) + private static void checkExpressionIsAssignableToType( + final JSExpression expr, + final String type, + final ProblemsHolder holder, + final PsiFile containingFile, + final BiFunction messageGenerator + ) { if("*".equals(type) || type == null) { @@ -582,8 +659,12 @@ private static void checkExpressionIsAssignableToType(final JSExpression expr, f if(!JSResolveUtil.isAssignableType(type, expressionType, containingFile)) { - holder.registerProblem(expr, JavaScriptBundle.message(problemKey, type, expressionType), getHighlightTypeForTypeOrSignatureProblem(expr), - new JSInsertCastFix(type)); + holder.registerProblem( + expr, + messageGenerator.apply(type, expressionType).get(), + getHighlightTypeForTypeOrSignatureProblem(expr), + new JSInsertCastFix(type) + ); } } @@ -609,7 +690,7 @@ public JSInsertCastFix(final String type) @Nonnull public String getName() { - return JavaScriptBundle.message("javascript.insert.cast.fix"); + return JavaScriptLocalize.javascriptInsertCastFix().get(); } @Override diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnresolvedVariableInspection.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnresolvedVariableInspection.java index 978f1afc..c0d553bc 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnresolvedVariableInspection.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnresolvedVariableInspection.java @@ -16,10 +16,9 @@ package com.intellij.lang.javascript.impl.inspections; -import consulo.javascript.language.JavaScriptBundle; import com.intellij.lang.javascript.JavaScriptSupportLoader; -import com.intellij.lang.javascript.impl.flex.AddImportECMAScriptClassOrFunctionAction; import com.intellij.lang.javascript.formatter.JSCodeStyleSettings; +import com.intellij.lang.javascript.impl.flex.AddImportECMAScriptClassOrFunctionAction; import com.intellij.lang.javascript.inspections.qucikFixes.BaseCreateFix; import com.intellij.lang.javascript.inspections.qucikFixes.CreateJSFunctionOrMethodFix; import com.intellij.lang.javascript.psi.*; @@ -29,6 +28,7 @@ import consulo.annotation.component.ExtensionImpl; import consulo.javascript.inspections.qucikFixes.CreateJSFunctionFixBase; import consulo.javascript.language.JavaScriptFeature; +import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.codeStyle.CodeStyleSettingsManager; import consulo.language.editor.inspection.LocalQuickFix; import consulo.language.editor.inspection.ProblemsHolder; @@ -37,6 +37,7 @@ import consulo.language.psi.PsiFile; import consulo.language.psi.ResolveResult; import consulo.language.psi.util.PsiTreeUtil; +import consulo.localize.LocalizeValue; import consulo.util.lang.StringUtil; import org.jetbrains.annotations.NonNls; @@ -65,7 +66,7 @@ public String getGroupDisplayName() @Nonnull public String getDisplayName() { - return JavaScriptBundle.message("js.unresolved.variable.inspection.name"); + return JavaScriptLocalize.jsUnresolvedVariableInspectionName().get(); } @Override @@ -244,12 +245,18 @@ protected void addReturnType(Template template, JSReferenceExpression referenceE } } - final String key = node.getQualifier() == null ? JSResolveUtil.isExprInTypeContext(node) ? "javascript.unresolved.type.name.message" : - "javascript.unresolved.variable.or.type.name.message" : "javascript.unresolved.variable.name.message"; - - holder.registerProblem(nameIdentifier, JavaScriptBundle.message(key, node.getReferencedName()), - JSUnresolvedFunctionInspection.getUnresolveReferenceHighlightType(qualifier, node), - fixes.size() > 0 ? fixes.toArray(new LocalQuickFix[fixes.size()]) : null); + final LocalizeValue message = node.getQualifier() == null + ? JSResolveUtil.isExprInTypeContext(node) + ? JavaScriptLocalize.javascriptUnresolvedTypeNameMessage(node.getReferencedName()) + : JavaScriptLocalize.javascriptUnresolvedVariableOrTypeNameMessage(node.getReferencedName()) + : JavaScriptLocalize.javascriptUnresolvedVariableNameMessage(node.getReferencedName()); + + holder.registerProblem( + nameIdentifier, + message.get(), + JSUnresolvedFunctionInspection.getUnresolveReferenceHighlightType(qualifier, node), + fixes.size() > 0 ? fixes.toArray(new LocalQuickFix[fixes.size()]) : null + ); } } } @@ -271,7 +278,7 @@ private abstract static class BaseCreateJSVariableIntentionAction extends BaseCr @Nonnull public String getFamilyName() { - return JavaScriptBundle.message("javascript.create.variable.intention.family"); + return JavaScriptLocalize.javascriptCreateVariableIntentionFamily().get(); } } @@ -286,7 +293,7 @@ private static class CreateJSNamespaceIntentionAction extends BaseCreateJSVariab @Nonnull public String getName() { - return JavaScriptBundle.message("javascript.create.namespace.intention.name", myReferencedName); + return JavaScriptLocalize.javascriptCreateNamespaceIntentionName(myReferencedName).get(); } @RequiredReadAction @@ -320,14 +327,25 @@ private static class CreateJSVariableIntentionAction extends BaseCreateJSVariabl @Nonnull public String getName() { - return JavaScriptBundle.message(isField ? isConstant ? "javascript.create.constant.field.intention.name" : "javascript.create.property.intention.name" : - isConstant ? "javascript.create.constant.intention.name" : "javascript.create.variable.intention.name", myReferencedName); + return isField + ? isConstant + ? JavaScriptLocalize.javascriptCreateConstantFieldIntentionName(myReferencedName).get() + : JavaScriptLocalize.javascriptCreatePropertyIntentionName(myReferencedName).get() + : isConstant + ? JavaScriptLocalize.javascriptCreateConstantIntentionName(myReferencedName).get() + : JavaScriptLocalize.javascriptCreateVariableIntentionName(myReferencedName).get(); } @RequiredReadAction @Override - protected void buildTemplate(final Template template, final JSReferenceExpression referenceExpression, final Set features, boolean staticContext, - final PsiFile file, final PsiElement anchorParent) + protected void buildTemplate( + final Template template, + final JSReferenceExpression referenceExpression, + final Set features, + boolean staticContext, + final PsiFile file, + final PsiElement anchorParent + ) { boolean classFeature = features.contains(JavaScriptFeature.CLASS); @@ -372,7 +390,11 @@ private static class CreateJSPropertyAccessorIntentionAction extends CreateJSFun public CreateJSPropertyAccessorIntentionAction(String name, boolean getter) { - super(name, getter ? "javascript.create.get.property.intention.name" : "javascript.create.set.property.intention.name"); + super( + getter + ? JavaScriptLocalize.javascriptCreateGetPropertyIntentionName(name) + : JavaScriptLocalize.javascriptCreateSetPropertyIntentionName(name) + ); myIsGetter = getter; } @@ -451,7 +473,7 @@ private static class CreateJSEventMethod extends CreateJSFunctionFixBase public CreateJSEventMethod(String invokedName, JSExpression eventNameQualifier) { - super(invokedName, "javascript.create.event.handler.intention.name"); + super(JavaScriptLocalize.javascriptCreateEventHandlerIntentionName(invokedName)); myEventQualifier = eventNameQualifier; } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUntypedDeclarationInspection.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUntypedDeclarationInspection.java index 880e2acf..76086235 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUntypedDeclarationInspection.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUntypedDeclarationInspection.java @@ -16,7 +16,6 @@ package com.intellij.lang.javascript.impl.inspections; -import consulo.javascript.language.JavaScriptBundle; import com.intellij.lang.javascript.JavaScriptSupportLoader; import com.intellij.lang.javascript.inspections.qucikFixes.BaseCreateFix; import com.intellij.lang.javascript.psi.*; @@ -26,6 +25,7 @@ import consulo.codeEditor.Editor; import consulo.fileEditor.FileEditorManager; import consulo.javascript.language.JavaScriptFeature; +import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.editor.FileModificationService; import consulo.language.editor.inspection.LocalQuickFix; import consulo.language.editor.inspection.ProblemDescriptor; @@ -38,6 +38,7 @@ import consulo.language.editor.template.macro.MacroFactory; import consulo.language.psi.PsiElement; import consulo.language.psi.PsiFile; +import consulo.localize.LocalizeValue; import consulo.navigation.OpenFileDescriptor; import consulo.navigation.OpenFileDescriptorFactory; import consulo.project.Project; @@ -66,7 +67,7 @@ public String getGroupDisplayName() @Nonnull public String getDisplayName() { - return JavaScriptBundle.message("js.untyped.declaration.inspection.name"); + return JavaScriptLocalize.jsUntypedDeclarationInspectionName().get(); } @Nonnull @@ -125,8 +126,15 @@ private static void process(final JSNamedElement node, final ProblemsHolder hold JSPsiImplUtils.getTypeFromDeclaration(node) == null && (!(node instanceof JSParameter) || !((JSParameter) node).isRest())) { - holder.registerProblem(nameIdentifier, JavaScriptBundle.message(node instanceof JSFunction ? "js.untyped.function.problem" : "js.untyped" + - ".variable.problem", nameIdentifier.getText()), ProblemHighlightType.GENERIC_ERROR_OR_WARNING, new AddTypeToDclFix()); + LocalizeValue description = node instanceof JSFunction + ? JavaScriptLocalize.jsUntypedFunctionProblem(nameIdentifier.getText()) + : JavaScriptLocalize.jsUntypedVariableProblem(nameIdentifier.getText()); + holder.registerProblem( + nameIdentifier, + description.get(), + ProblemHighlightType.GENERIC_ERROR_OR_WARNING, + new AddTypeToDclFix() + ); } } @@ -137,7 +145,7 @@ private static class AddTypeToDclFix implements LocalQuickFix @Nonnull public String getName() { - return JavaScriptBundle.message("js.untyped.declaration.problem.addtype.fix"); + return JavaScriptLocalize.jsUntypedDeclarationProblemAddtypeFix().get(); } @Override diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnusedLocalSymbolsInspection.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnusedLocalSymbolsInspection.java index 12491d71..6285611c 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnusedLocalSymbolsInspection.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnusedLocalSymbolsInspection.java @@ -16,33 +16,33 @@ package com.intellij.lang.javascript.impl.inspections; -import consulo.annotation.component.ExtensionImpl; -import consulo.language.editor.inspection.ProblemDescriptor; -import consulo.language.editor.inspection.ProblemHighlightType; -import consulo.language.editor.inspection.ProblemsHolder; -import consulo.language.editor.rawHighlight.HighlightDisplayLevel; -import consulo.language.editor.inspection.LocalQuickFix; import com.intellij.lang.javascript.JSElementTypes; -import consulo.javascript.language.JavaScriptBundle; import com.intellij.lang.javascript.JavaScriptSupportLoader; import com.intellij.lang.javascript.impl.highlighting.JavaScriptLineMarkerProvider; import com.intellij.lang.javascript.psi.*; import com.intellij.lang.javascript.psi.impl.JSClassImpl; import com.intellij.lang.javascript.psi.resolve.JSImportHandlingUtil; import com.intellij.lang.javascript.psi.resolve.ResolveProcessor; -import consulo.logging.Logger; +import consulo.annotation.component.ExtensionImpl; +import consulo.javascript.localize.JavaScriptLocalize; +import consulo.language.editor.inspection.LocalQuickFix; +import consulo.language.editor.inspection.ProblemDescriptor; +import consulo.language.editor.inspection.ProblemHighlightType; +import consulo.language.editor.inspection.ProblemsHolder; +import consulo.language.editor.rawHighlight.HighlightDisplayLevel; import consulo.language.psi.PsiElement; import consulo.language.psi.PsiFile; import consulo.language.psi.ResolveResult; import consulo.language.psi.resolve.ResolveState; import consulo.language.psi.util.PsiTreeUtil; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; +import consulo.logging.Logger; import consulo.project.Project; import consulo.util.collection.primitive.objects.ObjectIntMap; import consulo.util.collection.primitive.objects.ObjectMaps; import consulo.util.dataholder.Key; import org.jetbrains.annotations.NonNls; -import org.jetbrains.annotations.PropertyKey; import javax.annotation.Nonnull; import java.util.BitSet; @@ -71,7 +71,7 @@ public String getGroupDisplayName() @Nonnull public String getDisplayName() { - return JavaScriptBundle.message("js.unused.local.symbol.inspection.name"); + return JavaScriptLocalize.jsUnusedLocalSymbolInspectionName().get(); } @Override @@ -270,10 +270,10 @@ private static void processDeclarationHost(final PsiElement node, final Problems { continue; } - final @NonNls @PropertyKey(resourceBundle = JavaScriptBundle.BUNDLE) String messageId; + final LocalizeValue message; final @Nonnull PsiElement highlightedElement; - if(p instanceof JSParameter) + if (p instanceof JSParameter parameter) { // There are cases of predefined sinatures for which we are not interested in reported unused parameters final boolean ecma = node.getContainingFile().getLanguage() == JavaScriptSupportLoader.ECMA_SCRIPT_L4; @@ -281,13 +281,13 @@ private static void processDeclarationHost(final PsiElement node, final Problems { continue; // do not report unused parameters } - else if(ecma && node instanceof JSFunction) + else if (ecma && node instanceof JSFunction function) { - final JSParameter[] params = ((JSFunction) node).getParameterList().getParameters(); + final JSParameter[] params = function.getParameterList().getParameters(); if(params.length == 1) { - @NonNls String type = ((JSParameter) p).getTypeString(); + @NonNls String type = parameter.getTypeString(); if(type != null) { type = JSImportHandlingUtil.resolveTypeName(type, p); @@ -315,11 +315,7 @@ else if(ecma && node instanceof JSFunction) @Override public boolean execute(final PsiElement element, final ResolveState state) { - if(!(element instanceof JSClass)) - { - return true; - } - return !myName.equals(((JSClass) element).getQualifiedName()); + return !(element instanceof JSClass jsClass && myName.equals(jsClass.getQualifiedName())); } }; processor.setLocalResolve(true); @@ -365,37 +361,46 @@ public boolean execute(final PsiElement element, final ResolveState state) } } - if(parameterIndexMap.getInt((JSParameter) p) < lastUsedParameterIndex) + if (parameterIndexMap.getInt(parameter) < lastUsedParameterIndex) { continue; // no sense to report unused symbol before used since it will change signature } - messageId = "js.unused.parameter"; - highlightedElement = ((JSParameter) p).getNameIdentifier(); + message = JavaScriptLocalize.jsUnusedParameter(); + highlightedElement = parameter.getNameIdentifier(); } - else if(p instanceof JSFunction) + else if (p instanceof JSFunction function) { - final PsiElement nameIdentifier = ((JSFunction) p).getNameIdentifier(); - if(nameIdentifier == null) + final PsiElement nameIdentifier = function.getNameIdentifier(); + if (nameIdentifier == null) { continue; } highlightedElement = nameIdentifier; - messageId = "js.unused.function.declaration"; + message = JavaScriptLocalize.jsUnusedFunctionDeclaration(); } else { highlightedElement = ((JSVariable) p).getNameIdentifier(); - messageId = "js.unused.local.variable"; + message = JavaScriptLocalize.jsUnusedLocalVariable(); } if(p.getParent() instanceof JSCatchBlock) { - holder.registerProblem(highlightedElement, JavaScriptBundle.message(messageId), ProblemHighlightType.LIKE_UNUSED_SYMBOL); + holder.registerProblem( + highlightedElement, + message.get(), + ProblemHighlightType.LIKE_UNUSED_SYMBOL + ); } else { - holder.registerProblem(highlightedElement, JavaScriptBundle.message(messageId), ProblemHighlightType.LIKE_UNUSED_SYMBOL, new RemoveElementLocalQuickFix()); + holder.registerProblem( + highlightedElement, + message.get(), + ProblemHighlightType.LIKE_UNUSED_SYMBOL, + new RemoveElementLocalQuickFix() + ); } } } @@ -407,7 +412,7 @@ else if(p instanceof JSFunction) private static void handleLocalDeclaration(final JSNamedElement node) { - if(node instanceof JSFunction && !isSupportedFunction((JSFunction) node)) + if (node instanceof JSFunction function && !isSupportedFunction(function)) { return; } @@ -442,7 +447,7 @@ private static class RemoveElementLocalQuickFix implements LocalQuickFix @Nonnull public String getName() { - return JavaScriptBundle.message("js.unused.symbol.remove"); + return JavaScriptLocalize.jsUnusedSymbolRemove().get(); } @Override diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseClassBasedIntroduceDialog.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseClassBasedIntroduceDialog.java index da1820f5..45f7c8d6 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseClassBasedIntroduceDialog.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseClassBasedIntroduceDialog.java @@ -21,6 +21,7 @@ import com.intellij.lang.javascript.psi.JSAttributeList; import com.intellij.lang.javascript.psi.JSExpression; +import consulo.localize.LocalizeValue; import consulo.project.Project; /** @@ -30,9 +31,14 @@ public abstract class JSBaseClassBasedIntroduceDialog extends JSBaseIntroduceDia { private static JSAttributeList.AccessType lastType; - protected JSBaseClassBasedIntroduceDialog(final Project project, final JSExpression[] occurences, final JSExpression mainOccurence, String titleKey) + protected JSBaseClassBasedIntroduceDialog( + final Project project, + final JSExpression[] occurences, + final JSExpression mainOccurence, + LocalizeValue title + ) { - super(project, occurences, mainOccurence, titleKey); + super(project, occurences, mainOccurence, title); } @Override diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseIntroduceDialog.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseIntroduceDialog.java index 9faec08e..468aab80 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseIntroduceDialog.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseIntroduceDialog.java @@ -16,12 +16,12 @@ package com.intellij.lang.javascript.impl.refactoring; -import consulo.javascript.language.JavaScriptBundle; import com.intellij.lang.javascript.psi.*; import com.intellij.lang.javascript.psi.impl.JSEmbeddedContentImpl; import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; import com.intellij.lang.javascript.psi.resolve.ResolveProcessor; import consulo.application.Application; +import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.Language; import consulo.language.editor.refactoring.NamesValidator; import consulo.language.editor.refactoring.ui.ConflictsDialog; @@ -30,6 +30,7 @@ import consulo.language.psi.PsiFile; import consulo.language.psi.ResolveResult; import consulo.language.psi.util.PsiTreeUtil; +import consulo.localize.LocalizeValue; import consulo.project.Project; import consulo.ui.ex.awt.DialogWrapper; import consulo.ui.ex.awt.Messages; @@ -53,14 +54,19 @@ public abstract class JSBaseIntroduceDialog extends DialogWrapper implements Bas private Alarm myAlarm = new Alarm(Alarm.ThreadToUse.SWING_THREAD); - protected JSBaseIntroduceDialog(final Project project, final JSExpression[] occurences, final JSExpression mainOccurence, String titleKey) + protected JSBaseIntroduceDialog( + final Project project, + final JSExpression[] occurences, + final JSExpression mainOccurence, + LocalizeValue title + ) { super(project, false); myProject = project; myOccurences = occurences; myMainOccurence = mainOccurence; - setTitle(JavaScriptBundle.message(titleKey)); + setTitle(title); } protected void doInit() @@ -68,7 +74,7 @@ protected void doInit() JCheckBox replaceAllCheckBox = getReplaceAllCheckBox(); if(myOccurences.length > 1) { - replaceAllCheckBox.setText(JavaScriptBundle.message("javascript.introduce.variable.replace.all.occurrences", myOccurences.length)); + replaceAllCheckBox.setText(JavaScriptLocalize.javascriptIntroduceVariableReplaceAllOccurrences(myOccurences.length).get()); } else { @@ -213,8 +219,11 @@ protected void doOKAction() final String name = getVariableName(); if(name.length() == 0 || !isValidName(name)) { - Messages.showErrorDialog(myProject, JavaScriptBundle.message("javascript.introduce.variable.invalid.name"), - JavaScriptBundle.message("javascript.introduce.variable.title")); + Messages.showErrorDialog( + myProject, + JavaScriptLocalize.javascriptIntroduceVariableInvalidName().get(), + JavaScriptLocalize.javascriptIntroduceVariableTitle().get() + ); getNameField().requestFocus(); return; } @@ -288,10 +297,10 @@ public void visitJSFunctionDeclaration(final JSFunction node) private boolean showConflictsDialog(final JSNamedElement existing, final String name) { - final String message = existing instanceof JSFunction ? JavaScriptBundle.message("javascript.introduce.variable.function.already.exists", - CommonRefactoringUtil.htmlEmphasize(name)) : JavaScriptBundle.message("javascript.introduce.variable.variable.already.exists", - CommonRefactoringUtil.htmlEmphasize(name)); - final ConflictsDialog conflictsDialog = new ConflictsDialog(myProject, message); + final LocalizeValue message = existing instanceof JSFunction + ? JavaScriptLocalize.javascriptIntroduceVariableFunctionAlreadyExists(CommonRefactoringUtil.htmlEmphasize(name)) + : JavaScriptLocalize.javascriptIntroduceVariableVariableAlreadyExists(CommonRefactoringUtil.htmlEmphasize(name)); + final ConflictsDialog conflictsDialog = new ConflictsDialog(myProject, message.get()); conflictsDialog.show(); return conflictsDialog.isOK(); } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseIntroduceHandler.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseIntroduceHandler.java index 07165223..8d00e31b 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseIntroduceHandler.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseIntroduceHandler.java @@ -16,45 +16,42 @@ package com.intellij.lang.javascript.impl.refactoring; -import java.util.ArrayList; -import java.util.List; - -import javax.annotation.Nonnull; - +import com.intellij.lang.javascript.JSTokenTypes; +import com.intellij.lang.javascript.psi.*; +import com.intellij.lang.javascript.psi.impl.JSChangeUtil; +import com.intellij.lang.javascript.psi.impl.JSEmbeddedContentImpl; +import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; import consulo.application.ApplicationManager; import consulo.codeEditor.Editor; +import consulo.codeEditor.EditorColors; +import consulo.codeEditor.markup.RangeHighlighter; +import consulo.colorScheme.EditorColorsManager; import consulo.colorScheme.TextAttributes; import consulo.dataContext.DataContext; import consulo.document.RangeMarker; +import consulo.document.util.TextRange; import consulo.language.editor.PsiEquivalenceUtil; import consulo.language.editor.highlight.HighlightManager; import consulo.language.editor.refactoring.RefactoringBundle; import consulo.language.editor.refactoring.action.RefactoringActionHandler; +import consulo.language.editor.refactoring.util.CommonRefactoringUtil; +import consulo.language.psi.PsiElement; +import consulo.language.psi.PsiFile; +import consulo.language.psi.PsiWhiteSpace; +import consulo.language.psi.util.PsiTreeUtil; +import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; +import consulo.logging.Logger; +import consulo.project.Project; import consulo.project.ui.wm.WindowManager; import consulo.ui.ex.awt.DialogWrapper; import consulo.undoRedo.CommandProcessor; import org.jetbrains.annotations.NonNls; +import javax.annotation.Nonnull; import javax.annotation.Nullable; - -import com.intellij.lang.javascript.JSTokenTypes; -import consulo.javascript.language.JavaScriptBundle; -import com.intellij.lang.javascript.psi.*; -import com.intellij.lang.javascript.psi.impl.JSChangeUtil; -import com.intellij.lang.javascript.psi.impl.JSEmbeddedContentImpl; -import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; -import consulo.logging.Logger; -import consulo.codeEditor.EditorColors; -import consulo.colorScheme.EditorColorsManager; -import consulo.codeEditor.markup.RangeHighlighter; -import consulo.project.Project; -import consulo.document.util.TextRange; -import consulo.language.psi.PsiElement; -import consulo.language.psi.PsiFile; -import consulo.language.psi.PsiWhiteSpace; -import consulo.language.psi.util.PsiTreeUtil; -import consulo.language.editor.refactoring.util.CommonRefactoringUtil; -import consulo.language.util.IncorrectOperationException; +import java.util.ArrayList; +import java.util.List; /** * @author ven @@ -172,21 +169,14 @@ public void invoke(@Nonnull final Project project, final Editor editor, PsiFile return; } - CommandProcessor.getInstance().executeCommand(project, new Runnable() - { - @Override - public void run() - { - ApplicationManager.getApplication().runWriteAction(new Runnable() - { - @Override - public void run() - { - doRefactoring(project, editor, new BaseIntroduceContext(expression, occurrences, settings)); - } - }); - } - }, getRefactoringName(), null); + CommandProcessor.getInstance().executeCommand( + project, + () -> ApplicationManager.getApplication().runWriteAction( + () -> doRefactoring(project, editor, new BaseIntroduceContext<>(expression, occurrences, settings)) + ), + getRefactoringName(), + null + ); } protected static final class BaseIntroduceContext @@ -210,7 +200,7 @@ protected JSElement findIntroducedScope(final JSExpression expression) protected abstract String getRefactoringName(); - protected abstract String getCannotIntroduceMessagePropertyKey(); + protected abstract LocalizeValue getCannotIntroduceMessage(); @Nullable protected JSExpression findIntroducedExpression(final PsiFile file, final int start, final int end, Editor editor) @@ -218,8 +208,13 @@ protected JSExpression findIntroducedExpression(final PsiFile file, final int st final JSExpression expression = findExpressionInRange(file, start, end); if(expression == null) { - CommonRefactoringUtil.showErrorHint(file.getProject(), editor, JavaScriptBundle.message(getCannotIntroduceMessagePropertyKey()), getRefactoringName(), - null); + CommonRefactoringUtil.showErrorHint( + file.getProject(), + editor, + getCannotIntroduceMessage().get(), + getRefactoringName(), + null + ); } return expression; } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/extractMethod/JSExtractFunctionDialog.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/extractMethod/JSExtractFunctionDialog.java index 79cb490a..0999ea77 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/extractMethod/JSExtractFunctionDialog.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/extractMethod/JSExtractFunctionDialog.java @@ -16,13 +16,11 @@ package com.intellij.lang.javascript.impl.refactoring.extractMethod; -import javax.swing.JComponent; -import javax.swing.JPanel; -import javax.swing.JTextField; - -import consulo.javascript.language.JavaScriptBundle; +import consulo.javascript.localize.JavaScriptLocalize; import consulo.ui.ex.awt.DialogWrapper; +import javax.swing.*; + /** * @author Maxim.Mossienko * Date: Aug 9, 2008 @@ -37,7 +35,7 @@ public class JSExtractFunctionDialog extends DialogWrapper implements JSExtractF { super(false); - setTitle(JavaScriptBundle.message("javascript.extract.method.title")); + setTitle(JavaScriptLocalize.javascriptExtractMethodTitle()); init(); } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/extractMethod/JSExtractFunctionHandler.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/extractMethod/JSExtractFunctionHandler.java index 27a896ea..9217c539 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/extractMethod/JSExtractFunctionHandler.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/extractMethod/JSExtractFunctionHandler.java @@ -16,19 +16,18 @@ package com.intellij.lang.javascript.impl.refactoring.extractMethod; -import javax.annotation.Nonnull; - -import consulo.javascript.language.JavaScriptBundle; +import consulo.codeEditor.Editor; +import consulo.dataContext.DataContext; +import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.editor.refactoring.action.RefactoringActionHandler; +import consulo.language.editor.refactoring.util.CommonRefactoringUtil; +import consulo.language.psi.PsiElement; import consulo.language.psi.PsiFile; -import consulo.undoRedo.CommandProcessor; -import consulo.codeEditor.Editor; import consulo.project.Project; import consulo.ui.ex.awt.DialogWrapper; -import consulo.language.psi.PsiElement; -import consulo.language.editor.refactoring.util.CommonRefactoringUtil; -import consulo.application.ApplicationManager; -import consulo.dataContext.DataContext; +import consulo.undoRedo.CommandProcessor; + +import javax.annotation.Nonnull; /** * @author Maxim.Mossienko @@ -58,21 +57,12 @@ public void invoke(@Nonnull final Project project, final Editor editor, PsiFile return; } - CommandProcessor.getInstance().executeCommand(project, new Runnable() - { - @Override - public void run() - { - ApplicationManager.getApplication().runWriteAction(new Runnable() - { - @Override - public void run() - { - doRefactoring(project, editor, settings); - } - }); - } - }, JavaScriptBundle.message("javascript.extract.method.title"), null); + CommandProcessor.getInstance().executeCommand( + project, + () -> project.getApplication().runWriteAction(() -> doRefactoring(project, editor, settings)), + JavaScriptLocalize.javascriptExtractMethodTitle().get(), + null + ); } protected JSExtractFunctionSettings getSettings(final Project project, final Editor editor) diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceConstant/JSIntroduceConstantDialog.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceConstant/JSIntroduceConstantDialog.java index 0925a1d5..099ebf16 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceConstant/JSIntroduceConstantDialog.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceConstant/JSIntroduceConstantDialog.java @@ -16,16 +16,13 @@ package com.intellij.lang.javascript.impl.refactoring.introduceConstant; -import javax.swing.JCheckBox; -import javax.swing.JComboBox; -import javax.swing.JPanel; -import javax.swing.JRadioButton; -import javax.swing.JTextField; - -import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.lang.javascript.impl.refactoring.JSBaseClassBasedIntroduceDialog; +import com.intellij.lang.javascript.psi.JSExpression; +import consulo.javascript.localize.JavaScriptLocalize; import consulo.project.Project; +import javax.swing.*; + /** * @author Maxim.Mossienko * Date: Jul 24, 2008 @@ -44,7 +41,7 @@ class JSIntroduceConstantDialog extends JSBaseClassBasedIntroduceDialog implemen protected JSIntroduceConstantDialog(final Project project, final JSExpression[] occurences, final JSExpression mainOccurence) { - super(project, occurences, mainOccurence, "javascript.introduce.constant.title"); + super(project, occurences, mainOccurence, JavaScriptLocalize.javascriptIntroduceConstantTitle()); doInit(); } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceConstant/JSIntroduceConstantHandler.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceConstant/JSIntroduceConstantHandler.java index 04074409..6f88c1a2 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceConstant/JSIntroduceConstantHandler.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceConstant/JSIntroduceConstantHandler.java @@ -16,15 +16,16 @@ package com.intellij.lang.javascript.impl.refactoring.introduceConstant; -import consulo.javascript.language.JavaScriptBundle; import com.intellij.lang.javascript.JavaScriptSupportLoader; -import com.intellij.lang.javascript.psi.*; import com.intellij.lang.javascript.impl.refactoring.JSBaseIntroduceHandler; +import com.intellij.lang.javascript.psi.*; import consulo.codeEditor.Editor; +import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.editor.refactoring.util.CommonRefactoringUtil; import consulo.language.psi.PsiElement; import consulo.language.psi.PsiFile; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import consulo.project.Project; import consulo.util.lang.ref.Ref; import org.jetbrains.annotations.NonNls; @@ -39,13 +40,13 @@ public class JSIntroduceConstantHandler extends JSBaseIntroduceHandler() - { - @Override - public boolean process(final PsiReference t) + ReferencesSearch.search(sourceElement, GlobalSearchScope.projectScope(sourceElement.getProject())).forEach(t -> { + if (t instanceof JSReferenceExpression referenceExpression) { - if(t instanceof JSReferenceExpression) + final PsiElement parent = referenceExpression.getParent(); + final ResolveResult[] resolveResults = referenceExpression.multiResolve(true); + + for (ResolveResult r : resolveResults) { - final PsiElement parent = ((JSReferenceExpression) t).getParent(); - final ResolveResult[] resolveResults = ((JSReferenceExpression) t).multiResolve(true); + PsiElement psiElement = r.getElement(); - for(ResolveResult r : resolveResults) + if (psiElement != null && + !JavaScriptIndex.isFromPredefinedFile(psiElement.getContainingFile()) && + sourceElement != psiElement) { - PsiElement psiElement = r.getElement(); - - if(psiElement != null && - !JavaScriptIndex.isFromPredefinedFile(psiElement.getContainingFile()) && - sourceElement != psiElement) + if (psiElement instanceof JSFunction fun && sourceElement instanceof JSFunction sourceFun) { - if((psiElement instanceof JSFunction) && sourceElement instanceof JSFunction) + if ((sourceFun.isGetProperty() && fun.isSetProperty()) || (sourceFun.isSetProperty() && fun.isGetProperty())) { - JSFunction fun = (JSFunction) psiElement; - JSFunction sourceFun = (JSFunction) sourceElement; - - if((sourceFun.isGetProperty() && fun.isSetProperty()) || (sourceFun.isSetProperty() && fun.isGetProperty())) - { - return true; - } + return true; } + } - if((psiElement != sourceElement || !(psiElement instanceof JSClass)) && !consumer.process(psiElement)) - { - return false; - } + if ((psiElement != sourceElement || !(psiElement instanceof JSClass)) && !consumer.process(psiElement)) + { + return false; } } + } - if(!(parent instanceof JSDefinitionExpression)) - { - return false; - } + if (!(parent instanceof JSDefinitionExpression)) + { + return false; } - return true; } + return true; }); - if(sourceElement instanceof JSClass) + if (sourceElement instanceof JSClass clazz) { - final JSClass clazz = (JSClass) sourceElement; - - final Processor delegatingProcessor = new Processor() - { - @Override - public boolean process(final JSClass jsClass) - { - return consumer.process(jsClass); - } - }; + final Processor delegatingProcessor = jsClass -> consumer.process(jsClass); JSClassSearch.searchClassInheritors(clazz, true).forEach(delegatingProcessor); - if(clazz.isInterface()) + if (clazz.isInterface()) { JSClassSearch.searchInterfaceImplementations(clazz, true).forEach(delegatingProcessor); } } - else if(sourceElement instanceof JSFunction) + else if (sourceElement instanceof JSFunction baseFunction) { - final JSFunction baseFunction = (JSFunction) sourceElement; - final Processor delegatingProcessor = new Processor() - { - @Override - public boolean process(final JSFunction jsFunction) - { - return consumer.process(jsFunction); - } - }; + final Processor delegatingProcessor = jsFunction -> consumer.process(jsFunction); JSFunctionsSearch.searchOverridingFunctions(baseFunction, true).forEach(delegatingProcessor); final PsiElement parent = baseFunction.getParent(); - if(parent instanceof JSClass && ((JSClass) parent).isInterface()) + if (parent instanceof JSClass jsClass && jsClass.isInterface()) { JSFunctionsSearch.searchImplementingFunctions(baseFunction, true).forEach(delegatingProcessor); } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureItemPresentation.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureItemPresentation.java index 004fd2ee..40983222 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureItemPresentation.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureItemPresentation.java @@ -16,21 +16,13 @@ package com.intellij.lang.javascript.impl.structureView; -import consulo.javascript.language.JavaScriptBundle; -import com.intellij.lang.javascript.psi.JSAssignmentExpression; -import com.intellij.lang.javascript.psi.JSDefinitionExpression; -import com.intellij.lang.javascript.psi.JSExpression; -import com.intellij.lang.javascript.psi.JSFunction; -import com.intellij.lang.javascript.psi.JSObjectLiteralExpression; -import com.intellij.lang.javascript.psi.JSParameter; -import com.intellij.lang.javascript.psi.JSParameterList; -import com.intellij.lang.javascript.psi.JSProperty; -import com.intellij.lang.javascript.psi.JSReferenceExpression; +import com.intellij.lang.javascript.psi.*; import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; +import consulo.annotation.access.RequiredReadAction; +import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.icon.IconDescriptorUpdaters; import consulo.language.psi.PsiElement; import consulo.language.psi.PsiNamedElement; -import consulo.annotation.access.RequiredReadAction; import consulo.ui.image.Image; import javax.annotation.Nonnull; @@ -65,34 +57,32 @@ public static String getName(@Nonnull PsiElement psiElement) { if(psiElement instanceof JSObjectLiteralExpression) { - if(psiElement.getParent() instanceof JSAssignmentExpression) + if (psiElement.getParent() instanceof JSAssignmentExpression assignmentExpression) { - final JSExpression expression = ((JSDefinitionExpression) ((JSAssignmentExpression) psiElement.getParent()).getLOperand()).getExpression(); + final JSExpression expression = ((JSDefinitionExpression) assignmentExpression.getLOperand()).getExpression(); return JSResolveUtil.findClassIdentifier(expression).getText(); } else { - return JavaScriptBundle.message("javascript.language.term.prototype"); + return JavaScriptLocalize.javascriptLanguageTermPrototype().get(); } } - if(psiElement instanceof JSDefinitionExpression) + if (psiElement instanceof JSDefinitionExpression definitionExpression) { - psiElement = ((JSDefinitionExpression) psiElement).getExpression(); + psiElement = definitionExpression.getExpression(); } - if(psiElement instanceof JSReferenceExpression) + if (psiElement instanceof JSReferenceExpression expression) { - JSReferenceExpression expression = (JSReferenceExpression) psiElement; - String s = expression.getReferencedName(); if(JSResolveUtil.PROTOTYPE_FIELD_NAME.equals(s)) { final JSExpression jsExpression = expression.getQualifier(); - if(jsExpression instanceof JSReferenceExpression) + if (jsExpression instanceof JSReferenceExpression referenceExpression) { - s = ((JSReferenceExpression) jsExpression).getReferencedName(); + s = referenceExpression.getReferencedName(); } } return s; @@ -105,9 +95,9 @@ public static String getName(@Nonnull PsiElement psiElement) String name = ((PsiNamedElement) psiElement).getName(); - if(psiElement instanceof JSProperty) + if (psiElement instanceof JSProperty property) { - psiElement = ((JSProperty) psiElement).getValue(); + psiElement = property.getValue(); } if(psiElement instanceof JSFunction) @@ -143,13 +133,13 @@ public static String getName(@Nonnull PsiElement psiElement) } } - if(name == null && psiElement.getParent() instanceof JSAssignmentExpression) + if (name == null && psiElement.getParent() instanceof JSAssignmentExpression assignmentExpression) { - JSExpression lOperand = ((JSDefinitionExpression) ((JSAssignmentExpression) psiElement.getParent()).getLOperand()).getExpression(); + JSExpression lOperand = ((JSDefinitionExpression) assignmentExpression.getLOperand()).getExpression(); lOperand = JSResolveUtil.findClassIdentifier(lOperand); - if(lOperand instanceof JSReferenceExpression) + if (lOperand instanceof JSReferenceExpression referenceExpression) { - return ((JSReferenceExpression) lOperand).getReferencedName(); + return referenceExpression.getReferencedName(); } return lOperand.getText(); } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewModel.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewModel.java index bee312ad..c87b731a 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewModel.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewModel.java @@ -22,7 +22,7 @@ import consulo.codeEditor.Editor; import consulo.fileEditor.structureView.StructureViewTreeElement; import consulo.fileEditor.structureView.tree.*; -import consulo.ide.IdeBundle; +import consulo.ide.localize.IdeLocalize; import consulo.language.editor.structureView.TextEditorBasedStructureViewModel; import consulo.language.inject.InjectedLanguageManager; import consulo.language.psi.PsiElement; @@ -153,7 +153,7 @@ public boolean isReverted() @Nonnull public ActionPresentation getPresentation() { - return new ActionPresentationData(IdeBundle.message("action.structureview.show.fields"), null, AllIcons.Nodes.Variable); + return new ActionPresentationData(IdeLocalize.actionStructureviewShowFields().get(), null, AllIcons.Nodes.Variable); } @Override @@ -186,7 +186,11 @@ public boolean isVisible(TreeElement treeNode) @Nonnull public ActionPresentation getPresentation() { - return new ActionPresentationData(IdeBundle.message("action.structureview.show.inherited"), null, PlatformIconGroup.hierarchySupertypes()); + return new ActionPresentationData( + IdeLocalize.actionStructureviewShowInherited().get(), + null, + PlatformIconGroup.hierarchySupertypes() + ); } @Override @@ -205,7 +209,7 @@ public boolean isReverted() @Override public String getCheckBoxText() { - return IdeBundle.message("file.structure.toggle.show.inherited"); + return IdeLocalize.fileStructureToggleShowInherited().get(); } @Override diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithDoWhileSurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithDoWhileSurrounder.java index d8423c32..22edc648 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithDoWhileSurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithDoWhileSurrounder.java @@ -16,12 +16,12 @@ package com.intellij.lang.javascript.impl.surroundWith; -import consulo.javascript.language.JavaScriptBundle; import com.intellij.lang.javascript.psi.JSDoWhileStatement; import consulo.document.util.TextRange; +import consulo.javascript.localize.JavaScriptLocalize; +import consulo.language.ast.ASTNode; import consulo.language.psi.PsiElement; import consulo.project.Project; -import consulo.language.ast.ASTNode; /** * Created by IntelliJ IDEA. @@ -35,7 +35,7 @@ public class JSWithDoWhileSurrounder extends JSStatementSurrounder @Override public String getTemplateDescription() { - return JavaScriptBundle.message("javascript.surround.with.do.while"); + return JavaScriptLocalize.javascriptSurroundWithDoWhile().get(); } @Override diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithForSurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithForSurrounder.java index 393892bf..d90c76d5 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithForSurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithForSurrounder.java @@ -16,15 +16,15 @@ package com.intellij.lang.javascript.impl.surroundWith; -import consulo.document.util.TextRange; -import consulo.language.ast.ASTNode; import com.intellij.lang.javascript.JSTokenTypes; -import consulo.javascript.language.JavaScriptBundle; import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.lang.javascript.psi.JSForStatement; +import consulo.document.util.TextRange; +import consulo.javascript.localize.JavaScriptLocalize; +import consulo.language.ast.ASTNode; import consulo.language.psi.PsiElement; -import consulo.project.Project; import consulo.language.psi.PsiWhiteSpace; +import consulo.project.Project; /** * Created by IntelliJ IDEA. @@ -38,7 +38,7 @@ public class JSWithForSurrounder extends JSStatementSurrounder @Override public String getTemplateDescription() { - return JavaScriptBundle.message("javascript.surround.with.for"); + return JavaScriptLocalize.javascriptSurroundWithFor().get(); } @Override diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithFunctionExpressionSurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithFunctionExpressionSurrounder.java index 048a8872..fd0c4258 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithFunctionExpressionSurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithFunctionExpressionSurrounder.java @@ -16,13 +16,13 @@ package com.intellij.lang.javascript.impl.surroundWith; -import consulo.language.ast.ASTNode; -import consulo.javascript.language.JavaScriptBundle; import com.intellij.lang.javascript.psi.JSAssignmentExpression; import com.intellij.lang.javascript.psi.JSExpressionStatement; import com.intellij.lang.javascript.psi.JSFunctionExpression; import com.intellij.lang.javascript.psi.impl.JSChangeUtil; import consulo.document.util.TextRange; +import consulo.javascript.localize.JavaScriptLocalize; +import consulo.language.ast.ASTNode; import consulo.language.psi.PsiElement; import consulo.project.Project; @@ -31,7 +31,7 @@ public class JSWithFunctionExpressionSurrounder extends JSStatementSurrounder @Override public String getTemplateDescription() { - return JavaScriptBundle.message("javascript.surround.with.function.expression"); + return JavaScriptLocalize.javascriptSurroundWithFunctionExpression().get(); } @Override diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithFunctionSurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithFunctionSurrounder.java index 1d7ce44f..713c9d12 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithFunctionSurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithFunctionSurrounder.java @@ -16,19 +16,19 @@ package com.intellij.lang.javascript.impl.surroundWith; -import consulo.language.ast.ASTNode; -import consulo.javascript.language.JavaScriptBundle; import com.intellij.lang.javascript.psi.JSFunction; -import consulo.project.Project; import consulo.document.util.TextRange; +import consulo.javascript.localize.JavaScriptLocalize; +import consulo.language.ast.ASTNode; import consulo.language.psi.PsiElement; +import consulo.project.Project; public class JSWithFunctionSurrounder extends JSStatementSurrounder { @Override public String getTemplateDescription() { - return JavaScriptBundle.message("javascript.surround.with.function"); + return JavaScriptLocalize.javascriptSurroundWithFunction().get(); } @Override diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithIfElseSurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithIfElseSurrounder.java index 218eaf53..06e4d222 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithIfElseSurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithIfElseSurrounder.java @@ -16,7 +16,7 @@ package com.intellij.lang.javascript.impl.surroundWith; -import consulo.javascript.language.JavaScriptBundle; +import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.psi.PsiElement; import consulo.project.Project; @@ -32,7 +32,7 @@ public class JSWithIfElseSurrounder extends JSWithIfSurrounder @Override public String getTemplateDescription() { - return JavaScriptBundle.message("javascript.surround.with.if.else"); + return JavaScriptLocalize.javascriptSurroundWithIfElse().get(); } @Override diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithIfSurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithIfSurrounder.java index e05490d2..194d9007 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithIfSurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithIfSurrounder.java @@ -16,13 +16,13 @@ package com.intellij.lang.javascript.impl.surroundWith; +import com.intellij.lang.javascript.psi.JSIfStatement; import consulo.document.util.TextRange; +import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.ast.ASTNode; -import org.jetbrains.annotations.NonNls; -import consulo.javascript.language.JavaScriptBundle; -import com.intellij.lang.javascript.psi.JSIfStatement; -import consulo.project.Project; import consulo.language.psi.PsiElement; +import consulo.project.Project; +import org.jetbrains.annotations.NonNls; /** * Created by IntelliJ IDEA. @@ -36,7 +36,7 @@ public class JSWithIfSurrounder extends JSStatementSurrounder @Override public String getTemplateDescription() { - return JavaScriptBundle.message("javascript.surround.with.if"); + return JavaScriptLocalize.javascriptSurroundWithIf().get(); } @Override diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithParenthesesSurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithParenthesesSurrounder.java index 8cc6270e..8569622b 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithParenthesesSurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithParenthesesSurrounder.java @@ -16,19 +16,19 @@ package com.intellij.lang.javascript.impl.surroundWith; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; - -import consulo.language.ast.ASTNode; -import consulo.javascript.language.JavaScriptBundle; import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.lang.javascript.psi.impl.JSChangeUtil; import consulo.codeEditor.Editor; -import consulo.project.Project; import consulo.document.util.TextRange; -import consulo.language.psi.PsiElement; +import consulo.javascript.localize.JavaScriptLocalize; +import consulo.language.ast.ASTNode; import consulo.language.editor.surroundWith.Surrounder; +import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.project.Project; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; /** * Created by IntelliJ IDEA. @@ -42,7 +42,7 @@ public class JSWithParenthesesSurrounder implements Surrounder @Override public String getTemplateDescription() { - return JavaScriptBundle.message("javascript.surround.with.parenthesis"); + return JavaScriptLocalize.javascriptSurroundWithParenthesis().get(); } @Override diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryCatchFinallySurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryCatchFinallySurrounder.java index f3a08dd8..96ab2803 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryCatchFinallySurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryCatchFinallySurrounder.java @@ -16,18 +16,18 @@ package com.intellij.lang.javascript.impl.surroundWith; -import javax.annotation.Nonnull; - -import consulo.project.Project; -import org.jetbrains.annotations.NonNls; -import consulo.language.ast.ASTNode; -import consulo.javascript.language.JavaScriptBundle; import com.intellij.lang.javascript.JavaScriptSupportLoader; import com.intellij.lang.javascript.psi.JSCatchBlock; import com.intellij.lang.javascript.psi.JSStatement; import com.intellij.lang.javascript.psi.JSTryStatement; import consulo.document.util.TextRange; +import consulo.javascript.localize.JavaScriptLocalize; +import consulo.language.ast.ASTNode; import consulo.language.psi.PsiElement; +import consulo.project.Project; +import org.jetbrains.annotations.NonNls; + +import javax.annotation.Nonnull; /** * Created by IntelliJ IDEA. @@ -41,7 +41,7 @@ public class JSWithTryCatchFinallySurrounder extends JSStatementSurrounder @Override public String getTemplateDescription() { - return JavaScriptBundle.message("javascript.surround.with.try.catch.finally"); + return JavaScriptLocalize.javascriptSurroundWithTryCatchFinally().get(); } @Override diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryCatchSurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryCatchSurrounder.java index 6305a51f..2e9853eb 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryCatchSurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryCatchSurrounder.java @@ -16,7 +16,7 @@ package com.intellij.lang.javascript.impl.surroundWith; -import consulo.javascript.language.JavaScriptBundle; +import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.psi.PsiElement; import consulo.project.Project; @@ -32,7 +32,7 @@ public class JSWithTryCatchSurrounder extends JSWithTryCatchFinallySurrounder @Override public String getTemplateDescription() { - return JavaScriptBundle.message("javascript.surround.with.try.catch"); + return JavaScriptLocalize.javascriptSurroundWithTryCatch().get(); } @Override diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryFinallySurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryFinallySurrounder.java index b288ae48..f5c5484e 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryFinallySurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryFinallySurrounder.java @@ -16,7 +16,7 @@ package com.intellij.lang.javascript.impl.surroundWith; -import consulo.javascript.language.JavaScriptBundle; +import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.psi.PsiElement; import consulo.project.Project; @@ -32,7 +32,7 @@ public class JSWithTryFinallySurrounder extends JSWithTryCatchFinallySurrounder @Override public String getTemplateDescription() { - return JavaScriptBundle.message("javascript.surround.with.try.finally"); + return JavaScriptLocalize.javascriptSurroundWithTryFinally().get(); } @Override diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithWhileSurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithWhileSurrounder.java index f9965a96..01aa5755 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithWhileSurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithWhileSurrounder.java @@ -16,9 +16,9 @@ package com.intellij.lang.javascript.impl.surroundWith; -import consulo.javascript.language.JavaScriptBundle; import com.intellij.lang.javascript.psi.JSWhileStatement; import consulo.document.util.TextRange; +import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.ast.ASTNode; import consulo.language.psi.PsiElement; import consulo.project.Project; @@ -35,7 +35,7 @@ public class JSWithWhileSurrounder extends JSStatementSurrounder @Override public String getTemplateDescription() { - return JavaScriptBundle.message("javascript.surround.with.while"); + return JavaScriptLocalize.javascriptSurroundWithWhile().get(); } @Override diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithWithSurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithWithSurrounder.java index 40290958..b0b00fb8 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithWithSurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithWithSurrounder.java @@ -16,12 +16,12 @@ package com.intellij.lang.javascript.impl.surroundWith; -import consulo.javascript.language.JavaScriptBundle; import com.intellij.lang.javascript.psi.JSWithStatement; -import consulo.project.Project; import consulo.document.util.TextRange; -import consulo.language.psi.PsiElement; +import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.ast.ASTNode; +import consulo.language.psi.PsiElement; +import consulo.project.Project; /** * Created by IntelliJ IDEA. @@ -35,7 +35,7 @@ public class JSWithWithSurrounder extends JSStatementSurrounder @Override public String getTemplateDescription() { - return JavaScriptBundle.message("javascript.surround.with.with"); + return JavaScriptLocalize.javascriptSurroundWithWith().get(); } @Override diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/ImplementMethodsFix.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/ImplementMethodsFix.java index dfbebfc6..22951eb8 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/ImplementMethodsFix.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/ImplementMethodsFix.java @@ -22,7 +22,7 @@ import com.intellij.lang.javascript.psi.JSParameterList; import com.intellij.lang.javascript.psi.impl.JSChangeUtil; import consulo.codeEditor.Editor; -import consulo.javascript.language.JavaScriptBundle; +import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.editor.intention.SyntheticIntentionAction; import consulo.language.psi.PsiFile; import consulo.project.Project; @@ -43,7 +43,7 @@ public ImplementMethodsFix(final JSClass jsClass) { @Override @Nonnull public String getText() { - return JavaScriptBundle.message("javascript.fix.implement.methods"); + return JavaScriptLocalize.javascriptFixImplementMethods().get(); } @Override diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatingVisitor.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatingVisitor.java index c89f6362..6c53677b 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatingVisitor.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatingVisitor.java @@ -23,11 +23,10 @@ import com.intellij.lang.javascript.psi.impl.JSPackageStatementImpl; import com.intellij.lang.javascript.psi.resolve.JSImportHandlingUtil; import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; -import com.intellij.lang.javascript.psi.resolve.ResolveProcessor; import com.intellij.lang.javascript.psi.util.JSUtils; import consulo.codeEditor.Editor; import consulo.document.util.TextRange; -import consulo.javascript.language.JavaScriptBundle; +import consulo.javascript.localize.JavaScriptLocalize; import consulo.javascript.psi.JSSimpleLiteralExpression; import consulo.javascript.psi.JavaScriptLambdaExpression; import consulo.language.ast.ASTNode; @@ -49,6 +48,7 @@ import consulo.language.psi.*; import consulo.language.psi.util.PsiTreeUtil; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import consulo.module.content.ProjectRootManager; import consulo.project.Project; import consulo.util.lang.ref.Ref; @@ -56,7 +56,6 @@ import consulo.xml.psi.xml.XmlAttributeValue; import consulo.xml.psi.xml.XmlTagChild; import org.jetbrains.annotations.NonNls; -import org.jetbrains.annotations.PropertyKey; import javax.annotation.Nonnull; import java.text.MessageFormat; @@ -102,19 +101,22 @@ private void checkReferences(final PsiElement includeDirective, ProblemKind kind final TextRange elementRange = ref.getElement().getTextRange(); final TextRange textRange = ref.getRangeInElement(); - final TextRange range = - new TextRange(elementRange.getStartOffset() + textRange.getStartOffset(), elementRange.getStartOffset() + textRange - .getEndOffset()); + final TextRange range = new TextRange( + elementRange.getStartOffset() + textRange.getStartOffset(), + elementRange.getStartOffset() + textRange.getEndOffset() + ); final String message = MessageFormat.format(((EmptyResolveMessageProvider)ref).getUnresolvedMessagePattern(), ref.getCanonicalText()); - Annotation annotation = - kind == ProblemKind.ERROR ? myHolder.createErrorAnnotation(range, message) : kind == ProblemKind.WARNING ? myHolder - .createWarningAnnotation(range, message) : myHolder.createInfoAnnotation(range, message); - - if (ref instanceof LocalQuickFixProvider) { - for (LocalQuickFix fix : ((LocalQuickFixProvider)ref).getQuickFixes()) { - if (fix instanceof IntentionAction) { - annotation.registerFix((IntentionAction)fix, new TextRange(annotation.getStartOffset(), annotation.getEndOffset())); + Annotation annotation = kind == ProblemKind.ERROR + ? myHolder.createErrorAnnotation(range, message) + : kind == ProblemKind.WARNING + ? myHolder.createWarningAnnotation(range, message) + : myHolder.createInfoAnnotation(range, message); + + if (ref instanceof LocalQuickFixProvider localQuickFixProvider) { + for (LocalQuickFix fix : localQuickFixProvider.getQuickFixes()) { + if (fix instanceof IntentionAction intentionAction) { + annotation.registerFix(intentionAction, new TextRange(annotation.getStartOffset(), annotation.getEndOffset())); } } } @@ -123,8 +125,8 @@ private void checkReferences(final PsiElement includeDirective, ProblemKind kind } private boolean hasBadResolve(final PsiReference ref) { - if (ref instanceof PsiPolyVariantReference) { - return ((PsiPolyVariantReference)ref).multiResolve(false).length == 0; + if (ref instanceof PsiPolyVariantReference psiPolyVariantReference) { + return psiPolyVariantReference.multiResolve(false).length == 0; } return ref.resolve() == null; } @@ -134,7 +136,7 @@ public void visitJSCallExpression(final JSCallExpression node) { final JSExpression methodExpression = node.getMethodExpression(); if (methodExpression instanceof JSLiteralExpression) { - myHolder.createErrorAnnotation(methodExpression, JavaScriptBundle.message("javascript.parser.message.expected.function.name")); + myHolder.createErrorAnnotation(methodExpression, JavaScriptLocalize.javascriptParserMessageExpectedFunctionName().get()); } } @@ -160,7 +162,8 @@ public void visitJSReferenceList(final JSReferenceList referenceList) { if (withinImplements && jsClass.isInterface()) { myHolder.createErrorAnnotation(referenceList, - JavaScriptBundle.message("javascript.validation.message.implements.for.interface.not.allowed")); + JavaScriptLocalize.javascriptValidationMessageImplementsForInterfaceNotAllowed().get() + ); return; } @@ -181,17 +184,19 @@ public void visitJSReferenceList(final JSReferenceList referenceList) { final JSReferenceExpression expr = nameToExprMap.get(clazz.getName()); if (!b && withinImplements) { - myHolder.createErrorAnnotation(expr, JavaScriptBundle.message("javascript.validation.message.interface.name.expected.here")); + myHolder.createErrorAnnotation(expr, JavaScriptLocalize.javascriptValidationMessageInterfaceNameExpectedHere().get()); } else if (withinExtends && b != jsClass.isInterface()) { - myHolder.createErrorAnnotation(expr, - JavaScriptBundle.message(!b ? "javascript.validation.message.interface.name.expected.here" : "javascript.validation" + - ".message.class.name.expected.here")); + myHolder.createErrorAnnotation( + expr, + !b + ? JavaScriptLocalize.javascriptValidationMessageInterfaceNameExpectedHere().get() + : JavaScriptLocalize.javascriptValidationMessageClassNameExpectedHere().get() + ); } if (clazz == jsClass) { - myHolder.createErrorAnnotation(expr, JavaScriptBundle.message("javascript.validation.message.circular.dependency")) - .registerFix(new RemoveASTNodeFix - (referenceList.getNode(), "javascript.fix.remove.circular.dependency")); + myHolder.createErrorAnnotation(expr, JavaScriptLocalize.javascriptValidationMessageCircularDependency().get()) + .registerFix(new RemoveASTNodeFix(referenceList.getNode(), JavaScriptLocalize.javascriptFixRemoveCircularDependency())); } } @@ -225,12 +230,15 @@ protected void addNonimplementedFunction(final JSFunction function) { implementMethodsFix = new ImplementMethodsFix(myJsClass); } implementMethodsFix.addElementToProcess(function); - reportingClient.reportError(node, - JavaScriptBundle.message("javascript.validation.message.interface.method.not.implemented", - function.getName(), - ((JSClass)JSResolveUtil.findParent(function)).getQualifiedName()), - ErrorReportingClient.ProblemKind.ERROR, - implementMethodsFix); + reportingClient.reportError( + node, + JavaScriptLocalize.javascriptValidationMessageInterfaceMethodNotImplemented( + function.getName(), + ((JSClass)JSResolveUtil.findParent(function)).getQualifiedName() + ).get(), + ErrorReportingClient.ProblemKind.ERROR, + implementMethodsFix + ); } @Override @@ -238,11 +246,12 @@ protected void addImplementedFunction(final JSFunction interfaceFunction, final final JSAttributeList attributeList = implementationFunction.getAttributeList(); if (attributeList == null || attributeList.getAccessType() != JSAttributeList.AccessType.PUBLIC) { final ASTNode node = findElementForAccessModifierError(implementationFunction, attributeList); - reportingClient.reportError(node, - JavaScriptBundle.message("javascript.validation.message.interface.method.invalid.access.modifier"), - ErrorReportingClient.ProblemKind.ERROR, - null - // TODO: quickfix + reportingClient.reportError( + node, + JavaScriptLocalize.javascriptValidationMessageInterfaceMethodInvalidAccessModifier().get(), + ErrorReportingClient.ProblemKind.ERROR, + null + // TODO: quickfix ); } @@ -263,21 +272,26 @@ protected void addImplementedFunction(final JSFunction interfaceFunction, final if (incompatibleSignature == SignatureMatchResult.PARAMETERS_DIFFERS) { final JSParameterList parameterList = implementationFunction.getParameterList(); final JSParameterList expectedParameterList = interfaceFunction.getParameterList(); - reportingClient.reportError(parameterList.getNode(), - JavaScriptBundle.message("javascript.validation.message.interface.method.invalid.signature", - expectedParameterList != null ? expectedParameterList.getText() : "()"), - ErrorReportingClient.ProblemKind.ERROR, - null); // TODO: quickfix + reportingClient.reportError( + parameterList.getNode(), + JavaScriptLocalize.javascriptValidationMessageInterfaceMethodInvalidSignature( + expectedParameterList != null ? expectedParameterList.getText() : "()" + ).get(), + ErrorReportingClient.ProblemKind.ERROR, + null + ); // TODO: quickfix } else if (incompatibleSignature == SignatureMatchResult.RETURN_TYPE_DIFFERS) { PsiElement implementationReturnTypeExpr = implementationFunction.getReturnTypeElement(); PsiElement interfaceReturnTypeExpr = interfaceFunction.getReturnTypeElement(); - reportingClient.reportError(implementationReturnTypeExpr != null ? implementationReturnTypeExpr : implementationFunction - .getNameIdentifier(), - JavaScriptBundle.message("javascript.validation.message.interface.method.invalid.signature2", - interfaceReturnTypeExpr != null ? interfaceReturnTypeExpr.getText() : "*"), - ErrorReportingClient.ProblemKind.ERROR, - null); // TODO: quickfix + reportingClient.reportError( + implementationReturnTypeExpr != null ? implementationReturnTypeExpr : implementationFunction.getNameIdentifier(), + JavaScriptLocalize.javascriptValidationMessageInterfaceMethodInvalidSignature2( + interfaceReturnTypeExpr != null ? interfaceReturnTypeExpr.getText() : "*" + ).get(), + ErrorReportingClient.ProblemKind.ERROR, + null + ); // TODO: quickfix } } } @@ -308,14 +322,20 @@ public void visitJSAttributeList(JSAttributeList attributeList) { namespaceOrAccessModifierElement = accessTypeElement; } else if (accessTypeElement != null) { - myHolder.createErrorAnnotation(namespaceOrAccessModifierElement, - JavaScriptBundle.message("javascript.validation.message.use.namespace.reference.or" + - ".access.modifier")) - .registerFix(new RemoveASTNodeFix(namespaceOrAccessModifierElement.getNode(), "javascript.fix.remove.namespace.reference")); - - myHolder.createErrorAnnotation(accessTypeElement, - JavaScriptBundle.message("javascript.validation.message.use.namespace.reference.or.access.modifier")) - .registerFix(new RemoveASTNodeFix(accessTypeElement.getNode(), "javascript.fix.remove.namespace.reference")); + myHolder.createErrorAnnotation( + namespaceOrAccessModifierElement, + JavaScriptLocalize.javascriptValidationMessageUseNamespaceReferenceOrAccessModifier().get() + ) + .registerFix(new RemoveASTNodeFix( + namespaceOrAccessModifierElement.getNode(), + JavaScriptLocalize.javascriptFixRemoveNamespaceReference() + )); + + myHolder.createErrorAnnotation( + accessTypeElement, + JavaScriptLocalize.javascriptValidationMessageUseNamespaceReferenceOrAccessModifier().get() + ) + .registerFix(new RemoveASTNodeFix(accessTypeElement.getNode(), JavaScriptLocalize.javascriptFixRemoveNamespaceReference())); } if (namespaceOrAccessModifierElement != null) { @@ -324,34 +344,37 @@ else if (accessTypeElement != null) { String typeElementText; boolean nodeUnderPackage; - if (((!(nodeUnderPackage = - (parentForCheckingNsOrAccessModifier instanceof JSPackageStatement)) && (!(parentForCheckingNsOrAccessModifier - instanceof JSFile) || attributeList.getAccessType() != JSAttributeList.AccessType.PACKAGE_LOCAL)) || (!"public".equals( - typeElementText = - namespaceOrAccessModifierElement.getText())) && !"internal".equals(typeElementText))) { + if (((!(nodeUnderPackage = (parentForCheckingNsOrAccessModifier instanceof JSPackageStatement)) + && (!(parentForCheckingNsOrAccessModifier instanceof JSFile) + || attributeList.getAccessType() != JSAttributeList.AccessType.PACKAGE_LOCAL)) + || (!"public".equals(typeElementText = namespaceOrAccessModifierElement.getText())) + && !"internal".equals(typeElementText))) { boolean nsRef = namespaceOrAccessModifierElement instanceof JSReferenceExpression; - myHolder.createErrorAnnotation(namespaceOrAccessModifierElement, - JavaScriptBundle.message(nodeUnderPackage ? "javascript.validation.message.access" + - ".modifier.allowed.only.for.package.members" : nsRef ? "javascript.validation.message.namespace.allowed.only.for.class.members" : "javascript" + - ".validation.message.access.modifier.allowed.only.for.class.members")) - .registerFix(new RemoveASTNodeFix(namespaceOrAccessModifierElement - .getNode(), - nsRef ? "javascript.fix.remove.namespace.reference" : "javascript.fix.remove.access.modifier")); + myHolder.createErrorAnnotation( + namespaceOrAccessModifierElement, + nodeUnderPackage ? + JavaScriptLocalize.javascriptValidationMessageAccessModifierAllowedOnlyForPackageMembers().get() + : nsRef + ? JavaScriptLocalize.javascriptValidationMessageNamespaceAllowedOnlyForClassMembers().get() + : JavaScriptLocalize.javascriptValidationMessageAccessModifierAllowedOnlyForClassMembers().get() + ) + .registerFix(new RemoveASTNodeFix( + namespaceOrAccessModifierElement.getNode(), + nsRef ? JavaScriptLocalize.javascriptFixRemoveNamespaceReference() : JavaScriptLocalize.javascriptFixRemoveAccessModifier() + )); } } else if (((JSClass)parentForCheckingNsOrAccessModifier).isInterface()) { - - if (attributeList.getAccessType() != JSAttributeList.AccessType.PACKAGE_LOCAL || attributeList.getNode() - .findChildByType(JSTokenTypes - .INTERNAL_KEYWORD) != null - + if (attributeList.getAccessType() != JSAttributeList.AccessType.PACKAGE_LOCAL + || attributeList.getNode().findChildByType(JSTokenTypes.INTERNAL_KEYWORD) != null ) { final ASTNode astNode = attributeList.getNode().findChildByType(JSTokenTypes.ACCESS_MODIFIERS); - final Annotation annotation = - myHolder.createErrorAnnotation(astNode, JavaScriptBundle.message("javascript.validation.message.interface.members.cannot" + - ".have.access.modifiers")); + final Annotation annotation = myHolder.createErrorAnnotation( + astNode, + JavaScriptLocalize.javascriptValidationMessageInterfaceMembersCannotHaveAccessModifiers().get() + ); - annotation.registerFix(new RemoveASTNodeFix(astNode, "javascript.fix.remove.access.modifier")); + annotation.registerFix(new RemoveASTNodeFix(astNode, JavaScriptLocalize.javascriptFixRemoveAccessModifier())); } } } @@ -361,24 +384,21 @@ else if (((JSClass)parentForCheckingNsOrAccessModifier).isInterface()) { public void visitJSReferenceExpression(final JSReferenceExpression node) { final PsiElement parent = node.getParent(); - if (parent instanceof JSNamedElement) { - JSNamedElement namedElement = (JSNamedElement)parent; + if (parent instanceof JSNamedElement namedElement) { final PsiElement nameIdentifier = namedElement.getNameIdentifier(); if (nameIdentifier != null && nameIdentifier == node) { - if (parent instanceof JSPackageStatement) { - checkPackageStatement((JSPackageStatement)parent); + if (parent instanceof JSPackageStatement packageStatement) { + checkPackageStatement(packageStatement); } else if (!(parent instanceof JSImportStatement) && parent.getParent() instanceof JSPackageStatement) { checkNamedObjectIsInCorrespondingFile(namedElement); } - else if (parent instanceof JSFunction) { - JSFunction function = (JSFunction)parent; - + else if (parent instanceof JSFunction function) { if (function.isConstructor()) { final JSClass clazz; - if (parent.getParent() instanceof JSClass) { - clazz = (JSClass)parent.getParent(); + if (parent.getParent() instanceof JSClass jsClass) { + clazz = jsClass; } else { assert parent.getParent() instanceof JSFile; @@ -393,16 +413,19 @@ else if (function.isSetProperty()) { if (typeString != null && !"void".equals(typeString)) { // TODO: fix! - myHolder.createErrorAnnotation(function.getReturnTypeElement(), - JavaScriptBundle.message("javascript.validation.message.set.method.should.be.void.or" + - ".without.type")); + myHolder.createErrorAnnotation( + function.getReturnTypeElement(), + JavaScriptLocalize.javascriptValidationMessageSetMethodShouldBeVoidOrWithoutType().get() + ); } JSParameterList parameterList = function.getParameterList(); if (parameterList != null && parameterList.getParameters().length != 1) { // TODO: fix! - myHolder.createErrorAnnotation(parameterList, - JavaScriptBundle.message("javascript.validation.message.set.method.should.have.one.parameter")); + myHolder.createErrorAnnotation( + parameterList, + JavaScriptLocalize.javascriptValidationMessageSetMethodShouldHaveOneParameter().get() + ); } } else if (function.isGetProperty()) { @@ -410,51 +433,51 @@ else if (function.isGetProperty()) { if (typeString == null || "void".equals(typeString)) { // TODO: fix! - myHolder.createErrorAnnotation(typeString != null ? function.getReturnTypeElement() : nameIdentifier, - JavaScriptBundle.message("javascript.validation.message.get.method.should.be.valid.type", - typeString != null ? typeString : "empty")); + myHolder.createErrorAnnotation( + typeString != null ? function.getReturnTypeElement() : nameIdentifier, + JavaScriptLocalize.javascriptValidationMessageGetMethodShouldBeValidType(typeString != null ? typeString : "empty").get() + ); } JSParameterList parameterList = function.getParameterList(); if (parameterList != null && parameterList.getParameters().length != 0) { // TODO: fix! - myHolder.createErrorAnnotation(parameterList, - JavaScriptBundle.message("javascript.validation.message.get.method.should.have.no.parameter")); + myHolder.createErrorAnnotation( + parameterList, + JavaScriptLocalize.javascriptValidationMessageGetMethodShouldHaveNoParameter().get() + ); } } } - if (parent instanceof JSClass) { - final JSClass jsClass = (JSClass)parent; + if (parent instanceof JSClass jsClass) { final JSFunction constructor = jsClass.findFunctionByName(jsClass.getName()); if (constructor == null) { checkMissedSuperCall(node, constructor, jsClass); } PsiElement clazzParent = jsClass.getParent(); - if (!(clazzParent instanceof JSPackageStatement) && !(clazzParent instanceof JSFile)) { - myHolder.createErrorAnnotation(node, JavaScriptBundle.message("javascript.validation.message.nested.classes.are.not.allowed")); + if (!(clazzParent instanceof JSPackageStatement || clazzParent instanceof JSFile)) { + myHolder.createErrorAnnotation(node, JavaScriptLocalize.javascriptValidationMessageNestedClassesAreNotAllowed().get()); } } } } - if (node.getQualifier() == null) { - if (!(parent instanceof JSCallExpression)) { - if ("arguments".equals(node.getText())) { - JSFunction fun = PsiTreeUtil.getParentOfType(node, JSFunction.class); - if (fun == null) { - myHolder.createErrorAnnotation(node, JavaScriptBundle.message("javascript.validation.message.arguments.out.of.function")); - } - else { - JSParameterList parameterList = fun.getParameterList(); - if (parameterList != null) { - for (JSParameter p : parameterList.getParameters()) { - if (p.isRest()) { - myHolder.createErrorAnnotation(node, - JavaScriptBundle.message("javascript.validation.message.arguments.with.rest.parameter")); - } - } + if (node.getQualifier() == null && !(parent instanceof JSCallExpression) && "arguments".equals(node.getText())) { + JSFunction fun = PsiTreeUtil.getParentOfType(node, JSFunction.class); + if (fun == null) { + myHolder.createErrorAnnotation(node, JavaScriptLocalize.javascriptValidationMessageArgumentsOutOfFunction().get()); + } + else { + JSParameterList parameterList = fun.getParameterList(); + if (parameterList != null) { + for (JSParameter p : parameterList.getParameters()) { + if (p.isRest()) { + myHolder.createErrorAnnotation( + node, + JavaScriptLocalize.javascriptValidationMessageArgumentsWithRestParameter().get() + ); } } } @@ -473,7 +496,7 @@ private void checkMissedSuperCall(JSReferenceExpression node, JSFunction constru if (!hasSuperConstructorCall(constructor)) { annotation = - myHolder.createErrorAnnotation(node, JavaScriptBundle.message("javascript.validation.message.missed.super.constructor.call")); + myHolder.createErrorAnnotation(node, JavaScriptLocalize.javascriptValidationMessageMissedSuperConstructorCall().get()); } if (annotation != null) { @@ -493,12 +516,11 @@ private boolean hasSuperConstructorCall(JSFunction jsFunction) { } final JSSourceElement[] body = (jsFunction).getBody(); final JSStatement[] statements = body.length > 0 ? ((JSBlockStatement)body[0]).getStatements() : JSStatement.EMPTY; - JSExpression expr; for (JSStatement st : statements) { - if (st instanceof JSExpressionStatement && - (expr = ((JSExpressionStatement)st).getExpression()) instanceof JSCallExpression && - (((JSCallExpression)expr).getMethodExpression()) instanceof JSSuperExpression) { + if (st instanceof JSExpressionStatement expressionStatement + && expressionStatement.getExpression() instanceof JSCallExpression callExpression + && callExpression.getMethodExpression() instanceof JSSuperExpression) { return true; } } @@ -541,37 +563,46 @@ public void visitJSParameterList(JSParameterList node) { initializerPresent = true; } else if (!hasInitializer && initializerPresent && !parameter.isRest()) { - myHolder.createErrorAnnotation(parameter, JavaScriptBundle.message("javascript.validation.message.parameter.should.be.initialized")) - .registerFix(new - RemoveASTNodeFix(parameter.getNode(), "javascript.fix.remove.parameter")); + myHolder.createErrorAnnotation(parameter, JavaScriptLocalize.javascriptValidationMessageParameterShouldBeInitialized().get()) + .registerFix(new RemoveASTNodeFix(parameter.getNode(), JavaScriptLocalize.javascriptFixRemoveParameter())); } else if (hasInitializer && parameter.isRest()) { - myHolder.createErrorAnnotation(parameter, - JavaScriptBundle.message("javascript.validation.message.rest.parameter.should.not.be.initialized")) - .registerFix(new RemoveASTNodeFix("javascript.fix.remove.initializer", getNodesBefore(initializer, JSTokenTypes.EQ))); + myHolder.createErrorAnnotation( + parameter, + JavaScriptLocalize.javascriptValidationMessageRestParameterShouldNotBeInitialized().get() + ) + .registerFix(new RemoveASTNodeFix( + JavaScriptLocalize.javascriptFixRemoveInitializer(), + getNodesBefore(initializer, JSTokenTypes.EQ) + )); } if (parameter.isRest() && !foundRest) { foundRest = true; PsiElement typeElement = parameter.getTypeElement(); if (typeElement != null && !"Array".equals(typeElement.getText())) { - myHolder.createErrorAnnotation(typeElement, - JavaScriptBundle.message("javascript.validation.message.unexpected.type.for.rest.parameter")) - .registerFix - (new RemoveASTNodeFix("javascript.fix.remove.type.reference", getNodesBefore(typeElement, JSTokenTypes.COLON))); + myHolder.createErrorAnnotation( + typeElement, + JavaScriptLocalize.javascriptValidationMessageUnexpectedTypeForRestParameter().get() + ) + .registerFix(new RemoveASTNodeFix( + JavaScriptLocalize.javascriptFixRemoveTypeReference(), + getNodesBefore(typeElement, JSTokenTypes.COLON) + )); } } else if (foundRest) { - myHolder.createErrorAnnotation(parameter, - JavaScriptBundle.message( - "javascript.validation.message.parameter.is.not.allowed.after.rest.parameter")) - .registerFix(new RemoveASTNodeFix(parameter.getNode(), "javascript.fix.remove.parameter")); + myHolder.createErrorAnnotation( + parameter, + JavaScriptLocalize.javascriptValidationMessageParameterIsNotAllowedAfterRestParameter().get() + ) + .registerFix(new RemoveASTNodeFix(parameter.getNode(), JavaScriptLocalize.javascriptFixRemoveParameter())); } } } private static ASTNode[] getNodesBefore(PsiElement initializer, IElementType eq) { - List nodes = new ArrayList(); + List nodes = new ArrayList<>(); PsiElement element = initializer.getPrevSibling(); PsiElement lastElement = element; @@ -591,10 +622,11 @@ private static ASTNode[] getNodesBefore(PsiElement initializer, IElementType eq) @Override public void visitJSPackageStatement(final JSPackageStatement packageStatement) { for (PsiElement el = packageStatement.getPrevSibling(); el != null; el = el.getPrevSibling()) { - if (!(el instanceof PsiWhiteSpace) && !(el instanceof PsiComment)) { - myHolder.createErrorAnnotation(packageStatement.getFirstChild().getNode(), - JavaScriptBundle.message("javascript.validation.message.package.shouldbe" + - ".first.statement")); + if (!(el instanceof PsiWhiteSpace || el instanceof PsiComment)) { + myHolder.createErrorAnnotation( + packageStatement.getFirstChild().getNode(), + JavaScriptLocalize.javascriptValidationMessagePackageShouldbeFirstStatement().get() + ); break; } } @@ -610,19 +642,19 @@ public void visitJSAssignmentExpression(final JSAssignmentExpression expression) if (lExpr == null) { return; } - if (lExpr instanceof JSDefinitionExpression) { - lExpr = ((JSDefinitionExpression)lExpr).getExpression(); + if (lExpr instanceof JSDefinitionExpression definitionExpression) { + lExpr = definitionExpression.getExpression(); } - if (lExpr instanceof JSReferenceExpression) { - PsiElement resolved = ((JSReferenceExpression)lExpr).resolve(); - if (resolved instanceof JSVariable && ((JSVariable)resolved).isConst()) { - myHolder.createErrorAnnotation(lExpr, JavaScriptBundle.message("javascript.validation.message.assignment.to.const")); + if (lExpr instanceof JSReferenceExpression lRefExpr) { + PsiElement resolved = lRefExpr.resolve(); + if (resolved instanceof JSVariable variable && variable.isConst()) { + myHolder.createErrorAnnotation(lExpr, JavaScriptLocalize.javascriptValidationMessageAssignmentToConst().get()); } } if (!JSUtils.isLHSExpression(lExpr)) { - myHolder.createErrorAnnotation(lExpr, JavaScriptBundle.message("javascript.validation.message.must.be.lvalue")); + myHolder.createErrorAnnotation(lExpr, JavaScriptLocalize.javascriptValidationMessageMustBeLvalue().get()); } } @@ -637,8 +669,8 @@ public void visitJSArrayLiteralExpression(final JSArrayLiteralExpression node) { if (child != null && (childNode = child.getNode()) != null && childNode.getElementType() == JSTokenTypes.COMMA) { final Annotation annotation = - myHolder.createWarningAnnotation(child, JavaScriptBundle.message("javascript.validation.message.unneeded.comma")); - annotation.registerFix(new RemoveASTNodeFix(childNode, "javascript.validation.message.remove.unneeded.comma.fix")); + myHolder.createWarningAnnotation(child, JavaScriptLocalize.javascriptValidationMessageUnneededComma().get()); + annotation.registerFix(new RemoveASTNodeFix(childNode, JavaScriptLocalize.javascriptValidationMessageRemoveUnneededCommaFix())); } } @@ -647,7 +679,7 @@ public void visitJSTryStatement(final JSTryStatement node) { final JSCatchBlock[] blocks = node.getAllCatchBlocks(); if (blocks.length > 1) { - final Set typeToCatch = new HashSet(); + final Set typeToCatch = new HashSet<>(); for (JSCatchBlock block : blocks) { final JSParameter p = block.getParameter(); @@ -662,8 +694,11 @@ public void visitJSTryStatement(final JSTryStatement node) { if (typeToCatch.contains(s)) { final Annotation annotation = - myHolder.createErrorAnnotation(block, JavaScriptBundle.message("javascript.validation.message.duplicated.catch.block")); - annotation.registerFix(new RemoveASTNodeFix(block.getNode(), "javascript.validation.message.duplicated.catch.block.fix")); + myHolder.createErrorAnnotation(block, JavaScriptLocalize.javascriptValidationMessageDuplicatedCatchBlock().get()); + annotation.registerFix(new RemoveASTNodeFix( + block.getNode(), + JavaScriptLocalize.javascriptValidationMessageDuplicatedCatchBlockFix() + )); } else { typeToCatch.add(s); @@ -675,14 +710,16 @@ public void visitJSTryStatement(final JSTryStatement node) { @Override public void visitJSVariable(final JSVariable var) { if (var.isConst() && var.getInitializer() == null) { - if (var.getParent() instanceof JSVarStatement && var.getParent().getParent() instanceof JSForInStatement) { + if (var.getParent() instanceof JSVarStatement varStatement && varStatement.getParent() instanceof JSForInStatement) { return; } JSAttributeList attributeList = var.getAttributeList(); if (attributeList == null || attributeList.getAttributesByName("Embed").length == 0) { - myHolder.createWarningAnnotation(var, - JavaScriptBundle.message("javascript.validation.message.const.variable.without.initializer.")); + myHolder.createWarningAnnotation( + var, + JavaScriptLocalize.javascriptValidationMessageConstVariableWithoutInitializer().get() + ); } } @@ -694,50 +731,56 @@ public void visitJSVariable(final JSVariable var) { @Override public void visitJSContinueStatement(final JSContinueStatement node) { if (node.getStatementToContinue() == null) { - myHolder.createErrorAnnotation(node, JavaScriptBundle.message("javascript.validation.message.continue.without.target")); + myHolder.createErrorAnnotation(node, JavaScriptLocalize.javascriptValidationMessageContinueWithoutTarget().get()); } } @Override public void visitJSBreakStatement(final JSBreakStatement node) { if (node.getStatementToBreak() == null) { - myHolder.createErrorAnnotation(node, JavaScriptBundle.message("javascript.validation.message.break.without.target")); + myHolder.createErrorAnnotation(node, JavaScriptLocalize.javascriptValidationMessageBreakWithoutTarget().get()); } } @Override public void visitJSThisExpression(final JSThisExpression node) { - checkClassReferenceInStaticContext(node, "javascript.validation.message.this.referenced.from.static.context"); + checkClassReferenceInStaticContext(node, JavaScriptLocalize.javascriptValidationMessageThisReferencedFromStaticContext()); } - private void checkClassReferenceInStaticContext(final JSExpression node, - @PropertyKey(resourceBundle = JavaScriptBundle.BUNDLE) String key) { - PsiElement element = PsiTreeUtil.getParentOfType(node, JSFunction.class, JSFile.class, JSClass.class, JSObjectLiteralExpression.class, - XmlTagChild.class); - - if (element instanceof JSFunction) { - final JSFunction function = (JSFunction)element; - + private void checkClassReferenceInStaticContext( + final JSExpression node, + LocalizeValue message + ) { + PsiElement element = PsiTreeUtil.getParentOfType( + node, + JSFunction.class, + JSFile.class, + JSClass.class, + JSObjectLiteralExpression.class, + XmlTagChild.class + ); + + if (element instanceof JSFunction function) { final JSAttributeList attributeList = function.getAttributeList(); if (attributeList != null && attributeList.hasModifier(JSAttributeList.ModifierType.STATIC)) { - myHolder.createErrorAnnotation(node, JavaScriptBundle.message(key)); + myHolder.createErrorAnnotation(node, message.get()); return; } } - PsiElement elementParent; - if (node instanceof JSSuperExpression && (element == null || (!((elementParent = - element.getParent()) instanceof JSClass) && (!(elementParent - instanceof JSFile) || elementParent.getContext() == null)))) { - myHolder.createErrorAnnotation(node, - JavaScriptBundle.message( - "javascript.validation.message.super.referenced.without.class.instance.context")); + if (!(node instanceof JSSuperExpression)) { + return; + } + + PsiElement elementParent = element != null ? element.getParent() : null; + if (element == null || !(elementParent instanceof JSClass || elementParent instanceof JSFile && elementParent.getContext() != null)) { + myHolder.createErrorAnnotation(node, JavaScriptLocalize.javascriptValidationMessageSuperReferencedWithoutClassInstanceContext().get()); } } @Override public void visitJSSuperExpression(final JSSuperExpression node) { - checkClassReferenceInStaticContext(node, "javascript.validation.message.super.referenced.from.static.context"); + checkClassReferenceInStaticContext(node, JavaScriptLocalize.javascriptValidationMessageSuperReferencedFromStaticContext()); } @Override @@ -748,16 +791,17 @@ public void visitJSFunctionDeclaration(final JSFunction node) { } PsiElement parent = node.getParent(); - if (parent instanceof JSFile) { - parent = JSResolveUtil.getClassReferenceForXmlFromContext(parent); + if (parent instanceof JSFile file) { + parent = JSResolveUtil.getClassReferenceForXmlFromContext(file); - if (parent instanceof JSClass && node.getName().equals(((JSClass)parent).getName()) && JavaScriptSupportLoader.isFlexMxmFile(parent - .getContainingFile())) { - final Annotation annotation = - myHolder.createErrorAnnotation(nameIdentifier, JavaScriptBundle.message("javascript.validation.message.constructor.in.mxml" + - ".is.not.allowed")); + if (parent instanceof JSClass jsClass && node.getName().equals(jsClass.getName()) + && JavaScriptSupportLoader.isFlexMxmFile(parent.getContainingFile())) { + final Annotation annotation = myHolder.createErrorAnnotation( + nameIdentifier, + JavaScriptLocalize.javascriptValidationMessageConstructorInMxmlIsNotAllowed().get() + ); - annotation.registerFix(new RemoveASTNodeFix(node.getNode(), "javascript.fix.remove.constructor")); + annotation.registerFix(new RemoveASTNodeFix(node.getNode(), JavaScriptLocalize.javascriptFixRemoveConstructor())); } } @@ -765,19 +809,16 @@ public void visitJSFunctionDeclaration(final JSFunction node) { checkNamedObjectIsInCorrespondingFile(node); } - if (parent instanceof JSClass && !node.isConstructor()) { + if (parent instanceof JSClass clazz && !node.isConstructor()) { final JSAttributeList attributeList = node.getAttributeList(); - final JSClass clazz = (JSClass)parent; if (attributeList == null || (!attributeList.hasModifier(JSAttributeList.ModifierType.STATIC) && (attributeList.getAccessType() != JSAttributeList .AccessType.PRIVATE || attributeList.hasModifier(JSAttributeList.ModifierType.OVERRIDE)))) { final String qName = clazz.getQualifiedName(); final boolean hasOverride = attributeList != null ? attributeList.hasModifier(JSAttributeList.ModifierType.OVERRIDE) : false; - final Ref set = new Ref(); - boolean b = JSResolveUtil.iterateType(node, parent, qName, new JSResolveUtil.OverrideHandler() { - @Override - public boolean process(final ResolveProcessor processor, final PsiElement scope, final String className) { + final Ref set = new Ref<>(); + boolean b = JSResolveUtil.iterateType(node, parent, qName, (processor, scope, className) -> { if (qName == className || (qName != null && qName.equals(className))) { return true; } @@ -785,33 +826,34 @@ public boolean process(final ResolveProcessor processor, final PsiElement scope, if ("Object".equals(className)) { if (hasOverride && !attributeList.hasModifier(JSAttributeList.ModifierType.NATIVE)) { /*native modifier is written always*/ final ASTNode astNode = attributeList.getNode().findChildByType(JSTokenTypes.OVERRIDE_KEYWORD); - final Annotation annotation = - myHolder.createErrorAnnotation(astNode, JavaScriptBundle.message("javascript.validation.message.function.override.for" + - ".object.method")); + final Annotation annotation = myHolder.createErrorAnnotation( + astNode, + JavaScriptLocalize.javascriptValidationMessageFunctionOverrideForObjectMethod().get() + ); - annotation.registerFix(new RemoveASTNodeFix(astNode, "javascript.fix.remove.override.modifier")); + annotation.registerFix(new RemoveASTNodeFix(astNode, JavaScriptLocalize.javascriptFixRemoveOverrideModifier())); } return false; } else if (!hasOverride) { - final Annotation annotation = - myHolder.createErrorAnnotation(nameIdentifier, JavaScriptBundle.message("javascript.validation.message.function" + - ".override.without.override.modifier", - className)); + final Annotation annotation = myHolder.createErrorAnnotation( + nameIdentifier, + JavaScriptLocalize.javascriptValidationMessageFunctionOverrideWithoutOverrideModifier(className).get() + ); annotation.registerFix(new AddOverrideIntentionAction(node)); } return false; - } - }); + }); if (b && hasOverride) { final ASTNode astNode = attributeList.getNode().findChildByType(JSTokenTypes.OVERRIDE_KEYWORD); - final Annotation annotation = - myHolder.createErrorAnnotation(astNode, JavaScriptBundle.message("javascript.validation.message.function.override.without" + - ".parent.method")); + final Annotation annotation = myHolder.createErrorAnnotation( + astNode, + JavaScriptLocalize.javascriptValidationMessageFunctionOverrideWithoutParentMethod().get() + ); - annotation.registerFix(new RemoveASTNodeFix(astNode, "javascript.fix.remove.override.modifier")); + annotation.registerFix(new RemoveASTNodeFix(astNode, JavaScriptLocalize.javascriptFixRemoveOverrideModifier())); } if (!b && hasOverride) { @@ -823,13 +865,16 @@ else if (!hasOverride) { (overrideAttrList != null && attributeList.getAccessType() != overrideAttrList.getAccessType()) || overrideAttrList != null && (overrideNs = overrideAttrList.getNamespace()) != null && !overrideNs.equals(attributeList.getNamespace())) { - final Annotation annotation1 = myHolder.createErrorAnnotation(findElementForAccessModifierError(node, attributeList), - JavaScriptBundle.message( - "javascript.validation.message.function.override.incompatible.access.modifier", - overrideNs != null ? overrideNs : (overrideAttrList != null ? overrideAttrList - .getAccessType() - .toString() : JSAttributeList.AccessType - .PACKAGE_LOCAL.toString()).toLowerCase())); + final Annotation annotation1 = myHolder.createErrorAnnotation( + findElementForAccessModifierError(node, attributeList), + JavaScriptLocalize.javascriptValidationMessageFunctionOverrideIncompatibleAccessModifier( + overrideNs != null ? overrideNs : ( + overrideAttrList != null + ? overrideAttrList.getAccessType().toString() + : JSAttributeList.AccessType.PACKAGE_LOCAL.toString() + ).toLowerCase() + ).get() + ); // TODO: quickfix //annotation.registerFix( @@ -843,11 +888,12 @@ else if (!hasOverride) { final JSParameterList nodeParameterList = node.getParameterList(); final JSParameterList overrideParameterList = override.getParameterList(); - final Annotation annotation = - myHolder.createErrorAnnotation(nodeParameterList != null ? nodeParameterList : node.getNameIdentifier(), - JavaScriptBundle.message( - "javascript.validation.message.function.override.incompatible.signature", - overrideParameterList != null ? overrideParameterList.getText() : "()")); + final Annotation annotation = myHolder.createErrorAnnotation( + nodeParameterList != null ? nodeParameterList : node.getNameIdentifier(), + JavaScriptLocalize.javascriptValidationMessageFunctionOverrideIncompatibleSignature( + overrideParameterList != null ? overrideParameterList.getText() : "()" + ).get() + ); // TODO: quickfix //annotation.registerFix( @@ -857,10 +903,12 @@ else if (!hasOverride) { else if (incompatibleSignature == SignatureMatchResult.RETURN_TYPE_DIFFERS) { PsiElement returnTypeExpr = node.getReturnTypeElement(); PsiElement overrideReturnTypeExpr = override.getReturnTypeElement(); - final Annotation annotation = myHolder.createErrorAnnotation(returnTypeExpr != null ? returnTypeExpr : node.getNameIdentifier(), - JavaScriptBundle.message( - "javascript.validation.message.function.override.incompatible.signature2", - overrideReturnTypeExpr != null ? overrideReturnTypeExpr.getText() : "*")); + final Annotation annotation = myHolder.createErrorAnnotation( + returnTypeExpr != null ? returnTypeExpr : node.getNameIdentifier(), + JavaScriptLocalize.javascriptValidationMessageFunctionOverrideIncompatibleSignature2( + overrideReturnTypeExpr != null ? overrideReturnTypeExpr.getText() : "*" + ).get() + ); // TODO: quickfix //annotation.registerFix( @@ -927,23 +975,23 @@ else if (overrideParameterType == null && parameterType != null && !"*".equals(p @Override public void visitJSReturnStatement(final JSReturnStatement node) { - final PsiElement element = PsiTreeUtil.getParentOfType(node, - JSFunction.class, - XmlTagChild.class, - XmlAttributeValue.class, - JSFile.class, - JavaScriptLambdaExpression.class); - if ((element instanceof JSFile && !(element.getContext() instanceof PsiLanguageInjectionHost)) || (element instanceof XmlTagChild && !(element - .getParent() instanceof XmlAttributeValue))) { - myHolder.createErrorAnnotation(node, JavaScriptBundle.message("javascript.validation.message.return.outside.function.definition")); - } - - if (element instanceof JSFunction) { - final @NonNls String typeString = ((JSFunction)element).getReturnTypeString(); + final PsiElement element = PsiTreeUtil.getParentOfType( + node, + JSFunction.class, + XmlTagChild.class, + XmlAttributeValue.class, + JSFile.class, + JavaScriptLambdaExpression.class + ); + if ((element instanceof JSFile && !(element.getContext() instanceof PsiLanguageInjectionHost)) + || (element instanceof XmlTagChild && !(element.getParent() instanceof XmlAttributeValue))) { + myHolder.createErrorAnnotation(node, JavaScriptLocalize.javascriptValidationMessageReturnOutsideFunctionDefinition().get()); + } + + if (element instanceof JSFunction function) { + final @NonNls String typeString = function.getReturnTypeString(); if (typeString != null && !"void".equals(typeString) && node.getExpression() == null) { - myHolder.createErrorAnnotation(node, - JavaScriptBundle.message("javascript.validation.message.return.value.of.type.is.required", - typeString)); + myHolder.createErrorAnnotation(node, JavaScriptLocalize.javascriptValidationMessageReturnValueOfTypeIsRequired(typeString).get()); } } } @@ -954,10 +1002,9 @@ public void visitJSLabeledStatement(final JSLabeledStatement node) { if (label != null) { PsiElement run = node.getParent(); while (run != null) { - if (run instanceof JSLabeledStatement) { - if (label.equals(((JSLabeledStatement)run).getLabel())) { - myHolder.createErrorAnnotation(node.getLabelIdentifier(), - JavaScriptBundle.message("javascript.validation.message.duplicate.label")); + if (run instanceof JSLabeledStatement labeledStatement) { + if (label.equals(labeledStatement.getLabel())) { + myHolder.createErrorAnnotation(node.getLabelIdentifier(), JavaScriptLocalize.javascriptValidationMessageDuplicateLabel().get()); break; } } @@ -984,11 +1031,14 @@ private void checkNamedObjectIsInCorrespondingFile(final JSNamedElement aClass) if (node != null) { final String name = aClass.getName(); String nameWithExtension = name + "." + file.getExtension(); - final String message = - JavaScriptBundle.message(aClass instanceof JSClass ? "javascript.validation.message.class.should.be.in.file" : aClass instanceof - JSNamespaceDeclaration ? "javascript.validation.message.namespace.should.be.in.file" : aClass instanceof JSVariable ? "javascript.validation" + - ".message.variable.should.be.in.file" : "javascript.validation.message.function.should.be.in.file", name, nameWithExtension); - final Annotation annotation = myHolder.createErrorAnnotation(node, message); + final LocalizeValue message = aClass instanceof JSClass + ? JavaScriptLocalize.javascriptValidationMessageClassShouldBeInFile(name, nameWithExtension) + : aClass instanceof JSNamespaceDeclaration + ? JavaScriptLocalize.javascriptValidationMessageNamespaceShouldBeInFile(name, nameWithExtension) + : aClass instanceof JSVariable + ? JavaScriptLocalize.javascriptValidationMessageVariableShouldBeInFile(name, nameWithExtension) + : JavaScriptLocalize.javascriptValidationMessageFunctionShouldBeInFile(name, nameWithExtension); + final Annotation annotation = myHolder.createErrorAnnotation(node, message.get()); annotation.registerFix(new RenameFileFix(nameWithExtension)); /*annotation.registerFix(new RenamePublicClassFix(aClass) { @@ -1037,10 +1087,12 @@ public static void checkFileUnderSourceRoot(final JSNamedElement aClass, ErrorRe final VirtualFile rootForFile = ProjectRootManager.getInstance(containingFile.getProject()).getFileIndex().getSourceRootForFile(file); if (rootForFile == null) { - client.reportError(nameIdentifier.getNode(), - JavaScriptBundle.message("javascript.validation.message.file.should.be.under.source.root"), - ErrorReportingClient.ProblemKind.WARNING, - null); + client.reportError( + nameIdentifier.getNode(), + JavaScriptLocalize.javascriptValidationMessageFileShouldBeUnderSourceRoot().get(), + ErrorReportingClient.ProblemKind.WARNING, + null + ); } } @@ -1048,19 +1100,23 @@ private void checkPackageStatement(final JSPackageStatement packageStatement) { final String s = packageStatement.getQualifiedName(); final PsiFile containingFile = packageStatement.getContainingFile(); - final String expected = - JSResolveUtil.getExpectedPackageNameFromFile(containingFile.getVirtualFile(), containingFile.getProject(), true); + final String expected = JSResolveUtil.getExpectedPackageNameFromFile( + containingFile.getVirtualFile(), + containingFile.getProject(), + true + ); if (expected != null && ((s == null && expected.length() != 0) || (s != null && !expected.equals(s)))) { final PsiElement nameIdentifier = packageStatement.getNameIdentifier(); - final Annotation annotation = - myHolder.createErrorAnnotation(nameIdentifier != null ? nameIdentifier : packageStatement.getFirstChild() - , JavaScriptBundle.message("javascript.validation.message.incorrect.package.name", s, expected)); + final Annotation annotation = myHolder.createErrorAnnotation( + nameIdentifier != null ? nameIdentifier : packageStatement.getFirstChild(), + JavaScriptLocalize.javascriptValidationMessageIncorrectPackageName(s, expected).get() + ); annotation.registerFix(new SyntheticIntentionAction() { @Override @Nonnull public String getText() { - return JavaScriptBundle.message("javascript.fix.package.name", expected); + return JavaScriptLocalize.javascriptFixPackageName(expected).get(); } @Override @@ -1080,21 +1136,22 @@ public boolean startInWriteAction() { }); } - final Set elements = new HashSet(); + final Set elements = new HashSet<>(); for (JSSourceElement statement : packageStatement.getStatements()) { - if (statement instanceof JSNamedElement && !(statement instanceof JSImportStatement)) { - elements.add((JSNamedElement)statement); + if (statement instanceof JSNamedElement namedElement && !(statement instanceof JSImportStatement)) { + elements.add(namedElement); } } if (elements.size() > 1) { for (JSNamedElement el : elements) { final PsiElement nameIdentifier = el.getNameIdentifier(); - myHolder.createErrorAnnotation(nameIdentifier != null ? nameIdentifier : el.getFirstChild(), - JavaScriptBundle.message("javascript.validation.message.more.than.one.externally.visible.symbol")) - .registerFix(new RemoveASTNodeFix(el.getNode(), - "javascript.fix.remove.externally.visible.symbol")); + myHolder.createErrorAnnotation( + nameIdentifier != null ? nameIdentifier : el.getFirstChild(), + JavaScriptLocalize.javascriptValidationMessageMoreThanOneExternallyVisibleSymbol().get() + ) + .registerFix(new RemoveASTNodeFix(el.getNode(), JavaScriptLocalize.javascriptFixRemoveExternallyVisibleSymbol())); } } @@ -1103,21 +1160,21 @@ public boolean startInWriteAction() { public static class RemoveASTNodeFix implements SyntheticIntentionAction, LocalQuickFix { private final ASTNode[] myAstNodes; - private final String myPropKey; + private final LocalizeValue myProp; - public RemoveASTNodeFix(final ASTNode astNode, @PropertyKey(resourceBundle = JavaScriptBundle.BUNDLE) String propKey) { - this(propKey, astNode); + public RemoveASTNodeFix(final ASTNode astNode, LocalizeValue prop) { + this(prop, astNode); } - public RemoveASTNodeFix(@PropertyKey(resourceBundle = JavaScriptBundle.BUNDLE) String propKey, final ASTNode... astNodes) { - myPropKey = propKey; + public RemoveASTNodeFix(LocalizeValue prop, final ASTNode... astNodes) { + myProp = prop; myAstNodes = astNodes; } @Override @Nonnull public String getText() { - return JavaScriptBundle.message(myPropKey); + return myProp.get(); } @Override @@ -1176,7 +1233,7 @@ public AddOverrideIntentionAction(final JSFunction node) { @Override @Nonnull public String getText() { - return JavaScriptBundle.message("javascript.fix.add.override.modifier"); + return JavaScriptLocalize.javascriptFixAddOverrideModifier().get(); } @Override @@ -1210,10 +1267,10 @@ public boolean startInWriteAction() { private class SimpleErrorReportingClient implements ErrorReportingClient { @Override public void reportError(final ASTNode nameIdentifier, final String s, ProblemKind kind, final IntentionAction implementMethodsFix) { - final Annotation annotation = kind == ProblemKind.ERROR ? myHolder.createErrorAnnotation(nameIdentifier, - s) : myHolder.createWarningAnnotation( - nameIdentifier, - s); + final Annotation annotation = kind == ProblemKind.ERROR + ? myHolder.createErrorAnnotation(nameIdentifier, s) + : myHolder.createWarningAnnotation(nameIdentifier, s); + if (implementMethodsFix != null) { annotation.registerFix(implementMethodsFix); } @@ -1221,10 +1278,9 @@ public void reportError(final ASTNode nameIdentifier, final String s, ProblemKin @Override public void reportError(PsiElement nameIdentifier, String s, ProblemKind kind, IntentionAction implementMethodsFix) { - final Annotation annotation = kind == ProblemKind.ERROR ? myHolder.createErrorAnnotation(nameIdentifier, - s) : myHolder.createWarningAnnotation( - nameIdentifier, - s); + final Annotation annotation = kind == ProblemKind.ERROR + ? myHolder.createErrorAnnotation(nameIdentifier, s) + : myHolder.createWarningAnnotation(nameIdentifier, s); if (implementMethodsFix != null) { annotation.registerFix(implementMethodsFix); } @@ -1243,7 +1299,7 @@ public AddSuperInvokationFix(JSReferenceExpression node, JSFunction superConstru @Override @Nonnull public String getText() { - return JavaScriptBundle.message("javascript.fix.create.invoke.super"); + return JavaScriptLocalize.javascriptFixCreateInvokeSuper().get(); } @Override @@ -1281,8 +1337,8 @@ public void invoke(@Nonnull Project project, Editor editor, PsiFile file) throws JSFunction fun = PsiTreeUtil.getParentOfType(node, JSFunction.class); JSSourceElement[] body = fun != null ? fun.getBody() : JSSourceElement.EMPTY_ARRAY; - if (body.length > 0 && body[0] instanceof JSBlockStatement) { - PsiElement firstChild = body[0].getFirstChild(); + if (body.length > 0 && body[0] instanceof JSBlockStatement blockStatement) { + PsiElement firstChild = blockStatement.getFirstChild(); editor.getCaretModel().moveToOffset(firstChild.getTextRange().getEndOffset()); TemplateManager.getInstance(project).startTemplate(editor, t); } @@ -1306,7 +1362,7 @@ private static class AddConstructorAndSuperInvokationFix implements SyntheticInt @Override @Nonnull public String getText() { - return JavaScriptBundle.message("javascript.fix.create.constructor.invoke.super"); + return JavaScriptLocalize.javascriptFixCreateConstructorInvokeSuper().get(); } @Override From 1baad0337db4347a869a42d4b62aca09a3b486b3 Mon Sep 17 00:00:00 2001 From: UNV Date: Sat, 6 Jul 2024 17:43:19 +0300 Subject: [PATCH 021/150] Using LocalizeValue as is in calls of Parsing.checkMatches() and builder.error(). --- .../lang/javascript/JSTokenTypes.java | 4 +- .../lang/javascript/parsing/JSDocParsing.java | 4 +- .../lang/parsing/ExpressionParsing.java | 86 +++++++++---------- .../lang/parsing/FunctionParsing.java | 8 +- .../lang/parsing/StatementParsing.java | 76 ++++++++-------- .../parsing/EcmaScriptExpressionParsing.java | 4 +- .../parsing/EcmaScriptStatementParsing.java | 22 ++--- .../parsing/EcmaScript4ExpressionParsing.java | 2 +- .../parsing/EcmaScript4FunctionParsing.java | 8 +- .../parsing/EcmaScript4StatementParsing.java | 28 +++--- .../json/lang/JsonJavaScriptParser.java | 22 ++--- .../impl/structureView/JSSuperGrouper.java | 40 +++++---- 12 files changed, 150 insertions(+), 154 deletions(-) diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/JSTokenTypes.java b/base-impl/src/main/java/com/intellij/lang/javascript/JSTokenTypes.java index 039ad4ea..f5806ac3 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/JSTokenTypes.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/JSTokenTypes.java @@ -167,12 +167,12 @@ protected void doParse(JavaScriptParsingContext context, PsiBuilder builder) public void parseScriptExpression(JavaScriptParsingContext context, final PsiBuilder builder) { PsiBuilder.Marker root = builder.mark(); - Parsing.checkMatches(builder, JSTokenTypes.LBRACE, JavaScriptLocalize.javascriptParserMessageExpectedLbrace().get()); + Parsing.checkMatches(builder, JSTokenTypes.LBRACE, JavaScriptLocalize.javascriptParserMessageExpectedLbrace()); if(builder.getTokenType() != JSTokenTypes.RBRACE) { context.getExpressionParsing().parseExpression(builder); } - Parsing.checkMatches(builder, JSTokenTypes.RBRACE, JavaScriptLocalize.javascriptParserMessageExpectedRbrace().get()); + Parsing.checkMatches(builder, JSTokenTypes.RBRACE, JavaScriptLocalize.javascriptParserMessageExpectedRbrace()); while(!builder.eof()) { diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/parsing/JSDocParsing.java b/base-impl/src/main/java/com/intellij/lang/javascript/parsing/JSDocParsing.java index 04ba5023..edc1699b 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/parsing/JSDocParsing.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/parsing/JSDocParsing.java @@ -67,7 +67,7 @@ private static boolean parseDocTag(final PsiBuilder builder) if(isInvalidTokenType(builder)) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedDocTagName().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedDocTagName()); return false; } @@ -106,7 +106,7 @@ else if(!currentText.startsWith("{")) if(isInvalidTokenType(builder)) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedDocTagValue().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedDocTagValue()); return false; } } diff --git a/base-impl/src/main/java/consulo/javascript/lang/parsing/ExpressionParsing.java b/base-impl/src/main/java/consulo/javascript/lang/parsing/ExpressionParsing.java index bdaf5b00..0cd15ea1 100644 --- a/base-impl/src/main/java/consulo/javascript/lang/parsing/ExpressionParsing.java +++ b/base-impl/src/main/java/consulo/javascript/lang/parsing/ExpressionParsing.java @@ -143,11 +143,11 @@ else if(tokenType == JSTokenTypes.LBRACKET) { builder.advanceLexer(); parseExpression(builder); - Parsing.checkMatches(builder, JSTokenTypes.RBRACKET, JavaScriptLocalize.javascriptParserMessageExpectedRbracket().get()); + Parsing.checkMatches(builder, JSTokenTypes.RBRACKET, JavaScriptLocalize.javascriptParserMessageExpectedRbracket()); } else { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedIdentifier().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedIdentifier()); } } @@ -245,13 +245,13 @@ else if(elementType == JSTokenTypes.COMMA) } else { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedComma().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedComma()); } elementType = builder.getTokenType(); if(elementType == JSTokenTypes.RBRACE) { - builder.error(JavaScriptLocalize.javascriptParserPropertyExpected().get()); + builder.error(JavaScriptLocalize.javascriptParserPropertyExpected()); } else if(isNotPropertyStart(builder, elementType)) { @@ -259,7 +259,7 @@ else if(isNotPropertyStart(builder, elementType)) } } - Parsing.checkMatches(builder, JSTokenTypes.RBRACE, JavaScriptLocalize.javascriptParserMessageExpectedRbrace().get()); + Parsing.checkMatches(builder, JSTokenTypes.RBRACE, JavaScriptLocalize.javascriptParserMessageExpectedRbrace()); expr.done(JSElementTypes.OBJECT_LITERAL_EXPRESSION); } @@ -275,16 +275,16 @@ protected void parseProperty(final PsiBuilder builder) if(isNotPropertyStart(builder, nameToken)) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedIdentifierStringLiteralOrNumericLiteral().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedIdentifierStringLiteralOrNumericLiteral()); } builder.advanceLexer(); - Parsing.checkMatches(builder, JSTokenTypes.COLON, JavaScriptLocalize.javascriptParserMessageExpectedColon().get()); + Parsing.checkMatches(builder, JSTokenTypes.COLON, JavaScriptLocalize.javascriptParserMessageExpectedColon()); builder.putUserData(WITHIN_OBJECT_LITERAL_EXPRESSION, Boolean.TRUE); if(!parseAssignmentExpression(builder)) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression()); } builder.putUserData(WITHIN_OBJECT_LITERAL_EXPRESSION, null); @@ -309,11 +309,7 @@ public void parseArrayLiteralExpression(final PsiBuilder builder) { if(commaExpected) { - final boolean b = Parsing.checkMatches( - builder, - JSTokenTypes.COMMA, - JavaScriptLocalize.javascriptParserMessageExpectedComma().get() - ); + final boolean b = Parsing.checkMatches(builder, JSTokenTypes.COMMA, JavaScriptLocalize.javascriptParserMessageExpectedComma()); if(!b) { break; @@ -330,7 +326,7 @@ public void parseArrayLiteralExpression(final PsiBuilder builder) { if(!parseAssignmentExpression(builder)) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression()); break; } else @@ -339,7 +335,7 @@ public void parseArrayLiteralExpression(final PsiBuilder builder) } } } - Parsing.checkMatches(builder, JSTokenTypes.RBRACKET, JavaScriptLocalize.javascriptParserMessageExpectedRbracket().get()); + Parsing.checkMatches(builder, JSTokenTypes.RBRACKET, JavaScriptLocalize.javascriptParserMessageExpectedRbracket()); expr.done(JSElementTypes.ARRAY_LITERAL_EXPRESSION); } finally @@ -354,7 +350,7 @@ private void parseParenthesizedExpression(final PsiBuilder builder) final PsiBuilder.Marker expr = builder.mark(); builder.advanceLexer(); parseExpression(builder); - Parsing.checkMatches(builder, JSTokenTypes.RPAR, JavaScriptLocalize.javascriptParserMessageExpectedRparen().get()); + Parsing.checkMatches(builder, JSTokenTypes.RPAR, JavaScriptLocalize.javascriptParserMessageExpectedRparen()); expr.done(JSElementTypes.PARENTHESIZED_EXPRESSION); } @@ -424,7 +420,7 @@ protected boolean parseMemberExpression(PsiBuilder builder, boolean allowCallSyn } else { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedName().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedName()); } expr.done(JSElementTypes.REFERENCE_EXPRESSION); @@ -434,7 +430,7 @@ else if(tokenType == JSTokenTypes.LBRACKET) { builder.advanceLexer(); parseExpression(builder); - Parsing.checkMatches(builder, JSTokenTypes.RBRACKET, JavaScriptLocalize.javascriptParserMessageExpectedRbracket().get()); + Parsing.checkMatches(builder, JSTokenTypes.RBRACKET, JavaScriptLocalize.javascriptParserMessageExpectedRbracket()); expr.done(JSElementTypes.INDEXED_PROPERTY_ACCESS_EXPRESSION); expr = expr.precede(); } @@ -499,7 +495,7 @@ else if(tokenType == JSTokenTypes.DEFAULT_KEYWORD || (tokenType != JSTokenTypes. } else { - Parsing.checkMatches(builder, JSTokenTypes.IDENTIFIER, JavaScriptLocalize.javascriptParserMessageExpectedName().get()); + Parsing.checkMatches(builder, JSTokenTypes.IDENTIFIER, JavaScriptLocalize.javascriptParserMessageExpectedName()); } expr.done(JSElementTypes.REFERENCE_EXPRESSION); expr = expr.precede(); @@ -527,7 +523,7 @@ protected boolean parseNewExpression(PsiBuilder builder) if(!parseMemberExpression(builder, false)) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression()); } return false; } @@ -552,17 +548,17 @@ protected void parseArgumentList(final PsiBuilder builder) } else { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedCommaOrRparen().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedCommaOrRparen()); break; } } if(!parseAssignmentExpression(builder)) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression()); } } - Parsing.checkMatches(builder, JSTokenTypes.RPAR, JavaScriptLocalize.javascriptParserMessageExpectedRparen().get()); + Parsing.checkMatches(builder, JSTokenTypes.RPAR, JavaScriptLocalize.javascriptParserMessageExpectedRparen()); arglist.done(JSElementTypes.ARGUMENT_LIST); } @@ -570,7 +566,7 @@ public void parseExpression(PsiBuilder builder) { if(!parseExpressionOptional(builder)) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression()); } } @@ -590,11 +586,11 @@ private boolean parseAssignmentExpression(final PsiBuilder builder, boolean allo if(JSTokenTypes.ASSIGNMENT_OPERATIONS.contains(builder.getTokenType()) && builder.getUserData(WITHIN_OBJECT_LITERAL_EXPRESSION) == null) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression()); builder.advanceLexer(); if(!parseAssignmentExpression(builder, allowIn)) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression()); } expr.done(JSElementTypes.ASSIGNMENT_EXPRESSION); return true; @@ -614,7 +610,7 @@ private boolean parseAssignmentExpression(final PsiBuilder builder, boolean allo builder.advanceLexer(); if(!parseAssignmentExpression(builder, allowIn)) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression()); } expr.done(JSElementTypes.ASSIGNMENT_EXPRESSION); } @@ -642,12 +638,12 @@ private boolean parseConditionalExpression(final PsiBuilder builder, final boole builder.advanceLexer(); if(!parseAssignmentExpression(builder, allowIn)) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression()); } - Parsing.checkMatches(builder, JSTokenTypes.COLON, JavaScriptLocalize.javascriptParserMessageExpectedColon().get()); + Parsing.checkMatches(builder, JSTokenTypes.COLON, JavaScriptLocalize.javascriptParserMessageExpectedColon()); if(!parseAssignmentExpression(builder, allowIn)) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression()); } expr.done(JSElementTypes.CONDITIONAL_EXPRESSION); } @@ -677,7 +673,7 @@ private boolean parseORExpression(final PsiBuilder builder, final boolean allowI builder.advanceLexer(); if(!parseANDExpression(builder, allowIn)) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression()); } expr.done(JSElementTypes.BINARY_EXPRESSION); expr = expr.precede(); @@ -701,7 +697,7 @@ private boolean parseANDExpression(final PsiBuilder builder, final boolean allow builder.advanceLexer(); if(!parseBitwiseORExpression(builder, allowIn)) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression()); } expr.done(JSElementTypes.BINARY_EXPRESSION); expr = expr.precede(); @@ -725,7 +721,7 @@ private boolean parseBitwiseORExpression(final PsiBuilder builder, final boolean builder.advanceLexer(); if(!parseBitwiseXORExpression(builder, allowIn)) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression()); } expr.done(JSElementTypes.BINARY_EXPRESSION); expr = expr.precede(); @@ -749,7 +745,7 @@ private boolean parseBitwiseXORExpression(final PsiBuilder builder, final boolea builder.advanceLexer(); if(!parseBitwiseANDExpression(builder, allowIn)) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression()); } expr.done(JSElementTypes.BINARY_EXPRESSION); expr = expr.precede(); @@ -773,7 +769,7 @@ private boolean parseBitwiseANDExpression(final PsiBuilder builder, final boolea builder.advanceLexer(); if(!parseEqualityExpression(builder, allowIn)) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression()); } expr.done(JSElementTypes.BINARY_EXPRESSION); expr = expr.precede(); @@ -797,7 +793,7 @@ private boolean parseEqualityExpression(final PsiBuilder builder, final boolean builder.advanceLexer(); if(!parseRelationalExpression(builder, allowIn)) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression()); } expr.done(JSElementTypes.BINARY_EXPRESSION); expr = expr.precede(); @@ -820,7 +816,7 @@ private boolean parseRelationalExpression(final PsiBuilder builder, final boolea builder.advanceLexer(); if(!parseShiftExpression(builder)) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression()); } expr.done(JSElementTypes.BINARY_EXPRESSION); expr = expr.precede(); @@ -843,7 +839,7 @@ private boolean parseShiftExpression(final PsiBuilder builder) builder.advanceLexer(); if(!parseAdditiveExpression(builder)) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression()); } expr.done(JSElementTypes.BINARY_EXPRESSION); expr = expr.precede(); @@ -866,7 +862,7 @@ private boolean parseAdditiveExpression(final PsiBuilder builder) builder.advanceLexer(); if(!parseMultiplicativeExpression(builder)) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression()); } expr.done(JSElementTypes.BINARY_EXPRESSION); expr = expr.precede(); @@ -890,7 +886,7 @@ private boolean parseIsAsExpression(final PsiBuilder builder) builder.advanceLexer(); if(!parseUnaryExpression(builder)) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression()); } expr.done(JSElementTypes.BINARY_EXPRESSION); expr = expr.precede(); @@ -919,7 +915,7 @@ protected boolean parseMultiplicativeExpression(final PsiBuilder builder, TokenS builder.advanceLexer(); if(!parseUnaryExpression(builder)) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression()); } expr.done(JSElementTypes.BINARY_EXPRESSION); expr = expr.precede(); @@ -938,7 +934,7 @@ private boolean parseUnaryExpression(final PsiBuilder builder) builder.advanceLexer(); if(!parseUnaryExpression(builder)) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression()); } expr.done(JSElementTypes.PREFIX_EXPRESSION); return true; @@ -1001,7 +997,7 @@ public boolean parseExpressionOptional(final PsiBuilder builder, final boolean a builder.advanceLexer(); if(!parseAssignmentExpression(builder, allowIn)) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression()); } expr.done(JSElementTypes.COMMA_EXPRESSION); @@ -1027,7 +1023,7 @@ public boolean parseType(final PsiBuilder builder) } else if(!parseQualifiedTypeName(builder)) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedTypename().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedTypename()); } return true; } @@ -1036,7 +1032,7 @@ public boolean parseSimpleExpression(final PsiBuilder builder) { if(!parseUnaryExpression(builder)) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression()); return false; } return true; diff --git a/base-impl/src/main/java/consulo/javascript/lang/parsing/FunctionParsing.java b/base-impl/src/main/java/consulo/javascript/lang/parsing/FunctionParsing.java index 71cbbef4..0952762a 100644 --- a/base-impl/src/main/java/consulo/javascript/lang/parsing/FunctionParsing.java +++ b/base-impl/src/main/java/consulo/javascript/lang/parsing/FunctionParsing.java @@ -79,7 +79,7 @@ else if(isContextKeyword(builder, JSTokenTypes.SET_KEYWORD)) { if(!expressionContext && builder.getTokenType() != JSTokenTypes.LPAR /*get/set as name*/) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedFunctionName().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedFunctionName()); } } @@ -104,7 +104,7 @@ public void parseParameterList(final PsiBuilder builder) final PsiBuilder.Marker parameterList; if(builder.getTokenType() != JSTokenTypes.LPAR) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedLparen().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedLparen()); parameterList = builder.mark(); // To have non-empty parameters list at all the time. parameterList.done(JSElementTypes.PARAMETER_LIST); return; @@ -130,7 +130,7 @@ public void parseParameterList(final PsiBuilder builder) } else { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedCommaOrRparen().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedCommaOrRparen()); break; } } @@ -175,7 +175,7 @@ else if(builder.getTokenType() == JSTokenTypes.LBRACE) } else { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedFormalParameterName().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedFormalParameterName()); parameterMarker.drop(); } } diff --git a/base-impl/src/main/java/consulo/javascript/lang/parsing/StatementParsing.java b/base-impl/src/main/java/consulo/javascript/lang/parsing/StatementParsing.java index 84abac3d..9b32a30f 100644 --- a/base-impl/src/main/java/consulo/javascript/lang/parsing/StatementParsing.java +++ b/base-impl/src/main/java/consulo/javascript/lang/parsing/StatementParsing.java @@ -66,7 +66,7 @@ protected void doParseStatement(final PsiBuilder builder, boolean canHaveClasses if(firstToken == null) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedStatement().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedStatement()); return; } @@ -195,7 +195,7 @@ protected void doParseStatement(final PsiBuilder builder, boolean canHaveClasses } } - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedStatement().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedStatement()); builder.advanceLexer(); } @@ -261,7 +261,7 @@ PsiBuilder.Marker parseLetExpressionStart(final PsiBuilder builder) } } } - Parsing.checkMatches(builder, JSTokenTypes.RPAR, JavaScriptLocalize.javascriptParserMessageExpectedRparen().get()); + Parsing.checkMatches(builder, JSTokenTypes.RPAR, JavaScriptLocalize.javascriptParserMessageExpectedRparen()); } return marker; } @@ -272,7 +272,7 @@ public void parseIncludeDirective(final PsiBuilder builder) StatementParsing.LOG.assertTrue(builder.getTokenType() == JSTokenTypes.INCLUDE_KEYWORD); final PsiBuilder.Marker useNSStatement = builder.mark(); builder.advanceLexer(); - Parsing.checkMatches(builder, JSTokenTypes.STRING_LITERAL, JavaScriptLocalize.javascriptParserMessageExpectedStringLiteral().get()); + Parsing.checkMatches(builder, JSTokenTypes.STRING_LITERAL, JavaScriptLocalize.javascriptParserMessageExpectedStringLiteral()); checkForSemicolon(builder); useNSStatement.done(JSElementTypes.INCLUDE_DIRECTIVE); @@ -304,7 +304,7 @@ private void parseCatchBlock(final PsiBuilder builder) StatementParsing.LOG.assertTrue(builder.getTokenType() == JSTokenTypes.CATCH_KEYWORD); final PsiBuilder.Marker block = builder.mark(); builder.advanceLexer(); - Parsing.checkMatches(builder, JSTokenTypes.LPAR, JavaScriptLocalize.javascriptParserMessageExpectedLparen().get()); + Parsing.checkMatches(builder, JSTokenTypes.LPAR, JavaScriptLocalize.javascriptParserMessageExpectedLparen()); final IElementType identifierType = builder.getTokenType(); @@ -318,23 +318,19 @@ private void parseCatchBlock(final PsiBuilder builder) if(builder.getTokenType() == JSTokenTypes.IF_KEYWORD) { builder.advanceLexer(); - Parsing.checkMatches(builder, identifierType, JavaScriptLocalize.javascriptParserMessageExpectedIdentifier().get()); - Parsing.checkMatches( - builder, - JSTokenTypes.INSTANCEOF_KEYWORD, - JavaScriptLocalize.javascriptParserMessageExpectedInstanceof().get() - ); - Parsing.checkMatches(builder, JSTokenTypes.IDENTIFIER, JavaScriptLocalize.javascriptParserMessageExpectedIdentifier().get()); + Parsing.checkMatches(builder, identifierType, JavaScriptLocalize.javascriptParserMessageExpectedIdentifier()); + Parsing.checkMatches(builder, JSTokenTypes.INSTANCEOF_KEYWORD, JavaScriptLocalize.javascriptParserMessageExpectedInstanceof()); + Parsing.checkMatches(builder, JSTokenTypes.IDENTIFIER, JavaScriptLocalize.javascriptParserMessageExpectedIdentifier()); } } param.done(JSElementTypes.FORMAL_PARAMETER); } else { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedParameterName().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedParameterName()); } - Parsing.checkMatches(builder, JSTokenTypes.RPAR, JavaScriptLocalize.javascriptParserMessageExpectedRparen().get()); + Parsing.checkMatches(builder, JSTokenTypes.RPAR, JavaScriptLocalize.javascriptParserMessageExpectedRparen()); parseBlock(builder); @@ -359,16 +355,16 @@ protected void parseSwitchStatement(final PsiBuilder builder) final PsiBuilder.Marker statement = builder.mark(); builder.advanceLexer(); - Parsing.checkMatches(builder, JSTokenTypes.LPAR, JavaScriptLocalize.javascriptParserMessageExpectedLparen().get()); + Parsing.checkMatches(builder, JSTokenTypes.LPAR, JavaScriptLocalize.javascriptParserMessageExpectedLparen()); getExpressionParsing().parseExpression(builder); - Parsing.checkMatches(builder, JSTokenTypes.RPAR, JavaScriptLocalize.javascriptParserMessageExpectedRparen().get()); + Parsing.checkMatches(builder, JSTokenTypes.RPAR, JavaScriptLocalize.javascriptParserMessageExpectedRparen()); - Parsing.checkMatches(builder, JSTokenTypes.LBRACE, JavaScriptLocalize.javascriptParserMessageExpectedLbrace().get()); + Parsing.checkMatches(builder, JSTokenTypes.LBRACE, JavaScriptLocalize.javascriptParserMessageExpectedLbrace()); while(builder.getTokenType() != JSTokenTypes.RBRACE) { if(builder.eof()) { - builder.error(JavaScriptLocalize.javascriptParserMessageUnexpectedEndOfFile().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageUnexpectedEndOfFile()); statement.done(JSElementTypes.SWITCH_STATEMENT); return; } @@ -385,14 +381,14 @@ private void parseCaseOrDefaultClause(final PsiBuilder builder) final PsiBuilder.Marker clause = builder.mark(); if(firstToken != JSTokenTypes.CASE_KEYWORD && firstToken != JSTokenTypes.DEFAULT_KEYWORD) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedCatchOrDefault().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedCatchOrDefault()); } builder.advanceLexer(); if(firstToken == JSTokenTypes.CASE_KEYWORD) { getExpressionParsing().parseExpression(builder); } - Parsing.checkMatches(builder, JSTokenTypes.COLON, JavaScriptLocalize.javascriptParserMessageExpectedColon().get()); + Parsing.checkMatches(builder, JSTokenTypes.COLON, JavaScriptLocalize.javascriptParserMessageExpectedColon()); while(true) { IElementType token = builder.getTokenType(); @@ -411,9 +407,9 @@ protected void parseWithStatement(final PsiBuilder builder) final PsiBuilder.Marker statement = builder.mark(); builder.advanceLexer(); - Parsing.checkMatches(builder, JSTokenTypes.LPAR, JavaScriptLocalize.javascriptParserMessageExpectedLparen().get()); + Parsing.checkMatches(builder, JSTokenTypes.LPAR, JavaScriptLocalize.javascriptParserMessageExpectedLparen()); getExpressionParsing().parseExpression(builder); - Parsing.checkMatches(builder, JSTokenTypes.RPAR, JavaScriptLocalize.javascriptParserMessageExpectedRparen().get()); + Parsing.checkMatches(builder, JSTokenTypes.RPAR, JavaScriptLocalize.javascriptParserMessageExpectedRparen()); parseStatement(builder); @@ -561,7 +557,7 @@ protected boolean parseForLoopHeader(final PsiBuilder builder) builder.advanceLexer(); } - Parsing.checkMatches(builder, JSTokenTypes.LPAR, JavaScriptLocalize.javascriptParserMessageExpectedLparen().get()); + Parsing.checkMatches(builder, JSTokenTypes.LPAR, JavaScriptLocalize.javascriptParserMessageExpectedLparen()); final boolean empty; if(builder.getTokenType() == JSTokenTypes.VAR_KEYWORD || builder.getTokenType() == JSTokenTypes.LET_KEYWORD) { @@ -585,7 +581,7 @@ protected boolean parseForLoopHeader(final PsiBuilder builder) } else { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedSemicolon().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedSemicolon()); } getExpressionParsing().parseExpressionOptional(builder); } @@ -594,17 +590,17 @@ else if(builder.getTokenType() == JSTokenTypes.IN_KEYWORD) forin = true; if(empty) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedForloopLeftHandSideExpressionOrVariableDeclaration().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedForloopLeftHandSideExpressionOrVariableDeclaration()); } builder.advanceLexer(); getExpressionParsing().parseExpression(builder); } else { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedForloopInOrSemicolon().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedForloopInOrSemicolon()); } - Parsing.checkMatches(builder, JSTokenTypes.RPAR, JavaScriptLocalize.javascriptParserMessageExpectedRparen().get()); + Parsing.checkMatches(builder, JSTokenTypes.RPAR, JavaScriptLocalize.javascriptParserMessageExpectedRparen()); return forin; } @@ -614,9 +610,9 @@ private void parseWhileStatement(final PsiBuilder builder) final PsiBuilder.Marker statement = builder.mark(); builder.advanceLexer(); - Parsing.checkMatches(builder, JSTokenTypes.LPAR, JavaScriptLocalize.javascriptParserMessageExpectedLparen().get()); + Parsing.checkMatches(builder, JSTokenTypes.LPAR, JavaScriptLocalize.javascriptParserMessageExpectedLparen()); getExpressionParsing().parseExpression(builder); - Parsing.checkMatches(builder, JSTokenTypes.RPAR, JavaScriptLocalize.javascriptParserMessageExpectedRparen().get()); + Parsing.checkMatches(builder, JSTokenTypes.RPAR, JavaScriptLocalize.javascriptParserMessageExpectedRparen()); parseStatement(builder); statement.done(JSElementTypes.WHILE_STATEMENT); @@ -629,10 +625,10 @@ private void parseDoWhileStatement(final PsiBuilder builder) builder.advanceLexer(); parseStatement(builder); - Parsing.checkMatches(builder, JSTokenTypes.WHILE_KEYWORD, JavaScriptLocalize.javascriptParserMessageExpectedWhileKeyword().get()); - Parsing.checkMatches(builder, JSTokenTypes.LPAR, JavaScriptLocalize.javascriptParserMessageExpectedLparen().get()); + Parsing.checkMatches(builder, JSTokenTypes.WHILE_KEYWORD, JavaScriptLocalize.javascriptParserMessageExpectedWhileKeyword()); + Parsing.checkMatches(builder, JSTokenTypes.LPAR, JavaScriptLocalize.javascriptParserMessageExpectedLparen()); getExpressionParsing().parseExpression(builder); - Parsing.checkMatches(builder, JSTokenTypes.RPAR, JavaScriptLocalize.javascriptParserMessageExpectedRparen().get()); + Parsing.checkMatches(builder, JSTokenTypes.RPAR, JavaScriptLocalize.javascriptParserMessageExpectedRparen()); checkForSemicolon(builder); statement.done(JSElementTypes.DOWHILE_STATEMENT); @@ -644,7 +640,7 @@ protected void parseIfStatement(final PsiBuilder builder) final PsiBuilder.Marker ifStatement = builder.mark(); builder.advanceLexer(); - Parsing.checkMatches(builder, JSTokenTypes.LPAR, JavaScriptLocalize.javascriptParserMessageExpectedLparen().get()); + Parsing.checkMatches(builder, JSTokenTypes.LPAR, JavaScriptLocalize.javascriptParserMessageExpectedLparen()); getExpressionParsing().parseExpression(builder); // handle empty expressions inside @@ -653,7 +649,7 @@ protected void parseIfStatement(final PsiBuilder builder) builder.advanceLexer(); } - Parsing.checkMatches(builder, JSTokenTypes.RPAR, JavaScriptLocalize.javascriptParserMessageExpectedRparen().get()); + Parsing.checkMatches(builder, JSTokenTypes.RPAR, JavaScriptLocalize.javascriptParserMessageExpectedRparen()); parseStatement(builder); @@ -703,7 +699,7 @@ protected void parseVarStatementWithMarker(final PsiBuilder builder, final boole } else { - Parsing.checkMatches(builder, JSTokenTypes.COMMA, JavaScriptLocalize.javascriptParserMessageExpectedComma().get()); + Parsing.checkMatches(builder, JSTokenTypes.COMMA, JavaScriptLocalize.javascriptParserMessageExpectedComma()); } parseVarDeclaration(builder, !inForInitializationContext); @@ -782,7 +778,7 @@ protected void parseVarDeclaration(final PsiBuilder builder, boolean allowIn) { if(!JSTokenTypes.IDENTIFIER_TOKENS_SET.contains(builder.getTokenType())) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedVariableName().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedVariableName()); builder.advanceLexer(); return; } @@ -807,14 +803,14 @@ protected void parseVarInitializer(PsiBuilder builder, boolean allowIn) { if(!getExpressionParsing().parseAssignmentExpression(builder)) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression()); } } else { if(!getExpressionParsing().parseAssignmentExpressionNoIn(builder)) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression()); } } } @@ -844,7 +840,7 @@ protected void parseBlockOrFunctionBody(final PsiBuilder builder, BlockType type { block.rollbackTo(); } - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedLbrace().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedLbrace()); return; } @@ -853,7 +849,7 @@ protected void parseBlockOrFunctionBody(final PsiBuilder builder, BlockType type { if(builder.eof()) { - builder.error(JavaScriptLocalize.javascriptParserMessageMissingRbrace().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageMissingRbrace()); if(block != null) { block.done(JSElementTypes.BLOCK_STATEMENT); diff --git a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptExpressionParsing.java b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptExpressionParsing.java index 34946936..53bb09de 100644 --- a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptExpressionParsing.java +++ b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptExpressionParsing.java @@ -164,7 +164,7 @@ protected void parseProperty(PsiBuilder builder) { if(isNotPropertyStart(builder, nameTokenType)) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedIdentifierStringLiteralOrNumericLiteral().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedIdentifierStringLiteralOrNumericLiteral()); } IElementType setOrGetToken = isContextKeyword(builder, JSTokenTypes.GET_SET_TOKEN_SET); @@ -224,7 +224,7 @@ else if(nextTokenType == JSTokenTypes.LPAR) builder.putUserData(WITHIN_OBJECT_LITERAL_EXPRESSION, Boolean.TRUE); if(!parseAssignmentExpression(builder)) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression()); } builder.putUserData(WITHIN_OBJECT_LITERAL_EXPRESSION, null); } diff --git a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptStatementParsing.java b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptStatementParsing.java index 0182eb37..48555d56 100644 --- a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptStatementParsing.java +++ b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptStatementParsing.java @@ -99,7 +99,7 @@ protected boolean parseForLoopHeader(final PsiBuilder builder) { builder.advanceLexer(); - Parsing.checkMatches(builder, JSTokenTypes.LPAR, JavaScriptLocalize.javascriptParserMessageExpectedLparen().get()); + Parsing.checkMatches(builder, JSTokenTypes.LPAR, JavaScriptLocalize.javascriptParserMessageExpectedLparen()); final boolean empty; if(builder.getTokenType() == JSTokenTypes.VAR_KEYWORD || builder.getTokenType() == JSTokenTypes.LET_KEYWORD || builder.getTokenType() == JSTokenTypes.CONST_KEYWORD) { @@ -123,7 +123,7 @@ protected boolean parseForLoopHeader(final PsiBuilder builder) } else { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedSemicolon().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedSemicolon()); } getExpressionParsing().parseExpressionOptional(builder); } @@ -132,7 +132,7 @@ else if(isContextKeyword(builder, JSTokenTypes.OF_KEYWORD) || builder.getTokenTy forin = true; if(empty) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedForloopLeftHandSideExpressionOrVariableDeclaration().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedForloopLeftHandSideExpressionOrVariableDeclaration()); } if(builder.getTokenType() == JSTokenTypes.IN_KEYWORD) @@ -148,10 +148,10 @@ else if(isContextKeyword(builder, JSTokenTypes.OF_KEYWORD) || builder.getTokenTy } else { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedForloopInOfOrSemicolon().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedForloopInOfOrSemicolon()); } - Parsing.checkMatches(builder, JSTokenTypes.RPAR, JavaScriptLocalize.javascriptParserMessageExpectedRparen().get()); + Parsing.checkMatches(builder, JSTokenTypes.RPAR, JavaScriptLocalize.javascriptParserMessageExpectedRparen()); return forin; } @@ -247,7 +247,7 @@ else if(JavaScriptTokenSets.STRING_LITERALS.contains(builder.getTokenType())) } else { - builder.error("Comma expected"); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedComma()); } } @@ -279,7 +279,7 @@ else if(JavaScriptTokenSets.STRING_LITERALS.contains(builder.getTokenType())) } else if(builder.getTokenType() != JSTokenTypes.RBRACE) { - builder.error("Expected identifier"); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedIdentifier()); break; } } @@ -296,7 +296,7 @@ else if(builder.getTokenType() == JSTokenTypes.IDENTIFIER) } else { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedTypename().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedTypename()); break; } @@ -314,7 +314,7 @@ else if(builder.getTokenType() == JSTokenTypes.IDENTIFIER) } else { - builder.error("Expecte from target"); + builder.error("Expected from target"); } } @@ -375,7 +375,7 @@ protected void parseClassBody(final PsiBuilder builder, BlockType type) { if(builder.getTokenType() != JSTokenTypes.LBRACE) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedLbrace().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedLbrace()); return; } @@ -449,7 +449,7 @@ protected void parseClassBody(final PsiBuilder builder, BlockType type) if(!JSTokenTypes.IDENTIFIER_TOKENS_SET.contains(builder.getTokenType())) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedIdentifier().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedIdentifier()); } else { diff --git a/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4ExpressionParsing.java b/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4ExpressionParsing.java index e9225bcd..4bb1c19c 100644 --- a/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4ExpressionParsing.java +++ b/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4ExpressionParsing.java @@ -90,7 +90,7 @@ protected boolean parseMemberExpression(PsiBuilder builder, boolean allowCallSyn } else { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedName().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedName()); } expr.done(JSElementTypes.REFERENCE_EXPRESSION); diff --git a/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4FunctionParsing.java b/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4FunctionParsing.java index 794638c9..df76c1ca 100644 --- a/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4FunctionParsing.java +++ b/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4FunctionParsing.java @@ -69,7 +69,7 @@ void parseAttributesList(final PsiBuilder builder) if(builder.eof()) { attribute.done(JSElementTypes.ATTRIBUTE); - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedRbracket().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedRbracket()); return; } } @@ -139,7 +139,7 @@ private void parseAttributeBody(final PsiBuilder builder) if(builder.getTokenType() == JSTokenTypes.COMMA) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedIdentiferOrValue().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedIdentiferOrValue()); break; } if(builder.getTokenType() == JSTokenTypes.RBRACKET) @@ -161,7 +161,7 @@ private void parseAttributeBody(final PsiBuilder builder) } else { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedValue().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedValue()); } } @@ -177,7 +177,7 @@ private void parseAttributeBody(final PsiBuilder builder) if(builder.eof()) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedRparen().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedRparen()); return; } } diff --git a/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4StatementParsing.java b/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4StatementParsing.java index 21e36393..6a323fd9 100644 --- a/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4StatementParsing.java +++ b/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4StatementParsing.java @@ -57,7 +57,7 @@ protected void parseVarDeclaration(final PsiBuilder builder, boolean allowIn) { if(!JSTokenTypes.IDENTIFIER_TOKENS_SET.contains(builder.getTokenType())) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedVariableName().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedVariableName()); builder.advanceLexer(); return; } @@ -75,14 +75,14 @@ protected void parseVarDeclaration(final PsiBuilder builder, boolean allowIn) { if(!getExpressionParsing().parseAssignmentExpression(builder)) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression()); } } else { if(!getExpressionParsing().parseAssignmentExpressionNoIn(builder)) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression()); } } } @@ -96,7 +96,7 @@ protected void doParseStatement(final PsiBuilder builder, boolean canHaveClasses if(firstToken == null) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedStatement().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedStatement()); return; } @@ -291,7 +291,7 @@ else if(JSTokenTypes.COLON_COLON == builder.getTokenType()) } else { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedFunctionVarClassInterfaceNamespace().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedFunctionVarClassInterfaceNamespace()); marker.drop(); } } @@ -348,7 +348,7 @@ private void parseDefaultNsStatement(final PsiBuilder builder) } else { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedXml().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedXml()); } marker.done(JSElementTypes.ASSIGNMENT_EXPRESSION); } @@ -364,7 +364,7 @@ private void parseImportStatement(final PsiBuilder builder) final PsiBuilder.Marker nsAssignment = builder.mark(); if(!getExpressionParsing().parseQualifiedTypeName(builder, true)) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedTypename().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedTypename()); nsAssignment.drop(); return; } @@ -374,7 +374,7 @@ private void parseImportStatement(final PsiBuilder builder) builder.advanceLexer(); if(!getExpressionParsing().parseQualifiedTypeName(builder)) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedTypename().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedTypename()); } nsAssignment.done(JSElementTypes.ASSIGNMENT_EXPRESSION); @@ -405,7 +405,7 @@ private boolean parseNamespaceNoMarker(final PsiBuilder builder, final @Nonnull if(!getExpressionParsing().parseQualifiedTypeName(builder)) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedTypename().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedTypename()); } if(builder.getTokenType() == JSTokenTypes.EQ) { @@ -424,7 +424,7 @@ private void parseUseNamespaceDirective(final PsiBuilder builder) if(builder.getTokenType() != JSTokenTypes.NAMESPACE_KEYWORD) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedNamespace().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedNamespace()); } else { @@ -432,7 +432,7 @@ private void parseUseNamespaceDirective(final PsiBuilder builder) if(!getExpressionParsing().parseQualifiedTypeName(builder)) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedTypename().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedTypename()); } while(builder.getTokenType() == JSTokenTypes.COMMA) @@ -440,7 +440,7 @@ private void parseUseNamespaceDirective(final PsiBuilder builder) builder.advanceLexer(); if(!getExpressionParsing().parseQualifiedTypeName(builder)) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedTypename().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedTypename()); break; } } @@ -462,7 +462,7 @@ private void parseClassNoMarker(final PsiBuilder builder, final @Nonnull PsiBuil builder.advanceLexer(); if(!getExpressionParsing().parseQualifiedTypeName(builder)) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedTypename().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedTypename()); } if(builder.getTokenType() == JSTokenTypes.EXTENDS_KEYWORD) @@ -511,7 +511,7 @@ private void parsePackage(final PsiBuilder builder) if(builder.getTokenType() != JSTokenTypes.LBRACE) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedNameOrLbrace().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedNameOrLbrace()); } else { diff --git a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/lang/JsonJavaScriptParser.java b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/lang/JsonJavaScriptParser.java index aa34c377..ef466ece 100644 --- a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/lang/JsonJavaScriptParser.java +++ b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/lang/JsonJavaScriptParser.java @@ -42,7 +42,7 @@ private void parseRoot(PsiBuilder builder) parseArrayLiteralExpression(builder); if(builder.getTokenType() != null) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedEof().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedEof()); } } else if(builder.getTokenType() == JSTokenTypes.LBRACE) @@ -50,12 +50,12 @@ else if(builder.getTokenType() == JSTokenTypes.LBRACE) parseObjectLiteralExpression(builder); if(builder.getTokenType() != null) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedEof().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedEof()); } } else { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedLbraceOrLbracket().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedLbraceOrLbracket()); } while(builder.getTokenType() != null) @@ -108,14 +108,14 @@ else if(tokenType == JSTokenTypes.RBRACKET) if(isNotPropertyStart(nameToken)) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedIdentifierStringLiteralOrNumericLiteral().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedIdentifierStringLiteralOrNumericLiteral()); } builder.advanceLexer(); - Parsing.checkMatches(builder, JSTokenTypes.COLON, JavaScriptLocalize.javascriptParserMessageExpectedColon().get()); + Parsing.checkMatches(builder, JSTokenTypes.COLON, JavaScriptLocalize.javascriptParserMessageExpectedColon()); if(!parseValue(builder)) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression()); } myPropertyDepth--; @@ -150,7 +150,7 @@ else if(elementType == JSTokenTypes.COMMA) } else { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedComma().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedComma()); } elementType = builder.getTokenType(); @@ -164,7 +164,7 @@ else if(isNotPropertyStart(elementType)) } } - Parsing.checkMatches(builder, JSTokenTypes.RBRACE, JavaScriptLocalize.javascriptParserMessageExpectedRbrace().get()); + Parsing.checkMatches(builder, JSTokenTypes.RBRACE, JavaScriptLocalize.javascriptParserMessageExpectedRbrace()); expr.done(JSElementTypes.OBJECT_LITERAL_EXPRESSION); } @@ -184,7 +184,7 @@ public void parseArrayLiteralExpression(final PsiBuilder builder) { if(commaExpected) { - final boolean b = Parsing.checkMatches(builder, JSTokenTypes.COMMA, JavaScriptLocalize.javascriptParserMessageExpectedComma().get()); + final boolean b = Parsing.checkMatches(builder, JSTokenTypes.COMMA, JavaScriptLocalize.javascriptParserMessageExpectedComma()); if(!b) { break; @@ -201,7 +201,7 @@ public void parseArrayLiteralExpression(final PsiBuilder builder) { if(!parseValue(builder)) { - builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression().get()); + builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression()); break; } else @@ -210,7 +210,7 @@ public void parseArrayLiteralExpression(final PsiBuilder builder) } } } - Parsing.checkMatches(builder, JSTokenTypes.RBRACKET, JavaScriptLocalize.javascriptParserMessageExpectedRbracket().get()); + Parsing.checkMatches(builder, JSTokenTypes.RBRACKET, JavaScriptLocalize.javascriptParserMessageExpectedRbracket()); expr.done(JSElementTypes.ARRAY_LITERAL_EXPRESSION); } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSSuperGrouper.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSSuperGrouper.java index 5570172a..1dcb6761 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSSuperGrouper.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSSuperGrouper.java @@ -17,6 +17,7 @@ package com.intellij.lang.javascript.impl.structureView; import consulo.fileEditor.structureView.tree.*; +import consulo.ide.localize.IdeLocalize; import consulo.project.ui.view.tree.AbstractTreeNode; import com.intellij.lang.javascript.psi.JSClass; import com.intellij.lang.javascript.psi.JSFunction; @@ -46,38 +47,38 @@ class JSSuperGrouper implements Grouper @Nonnull public Collection group(final Object parent, final Collection children) { - if(isParentGrouped((AbstractTreeNode) parent)) + if (isParentGrouped((AbstractTreeNode) parent)) { return Collections.emptyList(); } - final Map groups = new HashMap(); + final Map groups = new HashMap<>(); - for(TreeElement _child : children) + for (TreeElement _child : children) { - if(!(_child instanceof JSStructureViewElement)) + if (!(_child instanceof JSStructureViewElement)) { continue; } JSStructureViewElement child = (JSStructureViewElement) _child; final PsiElement value = child.getValue(); - if(value instanceof JSVariable) + if (value instanceof JSVariable) { - if(!child.isInherited()) + if (!child.isInherited()) { continue; } PsiElement parentElement = value.getParent(); - if(parentElement instanceof JSVarStatement) + if (parentElement instanceof JSVarStatement) { parentElement = parentElement.getParent(); } - if(parentElement instanceof JSClass) + if (parentElement instanceof JSClass jsClass) { - addGroup(groups, _child, ((JSClass) parentElement).getQualifiedName()); + addGroup(groups, _child, jsClass.getQualifiedName()); } } - else if(value instanceof JSFunction) + else if (value instanceof JSFunction) { processFunction((JSStructureViewElement) ((AbstractTreeNode) parent).getValue(), groups, _child, value); } @@ -88,11 +89,10 @@ else if(value instanceof JSFunction) private static void processFunction(JSStructureViewElement parentElement, Map groups, TreeElement _child, PsiElement value) { final PsiElement element = JSStructureViewElement.getPsiElementResolveProxy(parentElement); - if(element instanceof JSClass) + if (element instanceof JSClass parentClass) { - JSClass parentClass = (JSClass) element; JSClass declaringClass = JSResolveUtil.findDeclaringClass((JSFunction) value); - if(parentClass != declaringClass) + if (parentClass != declaringClass) { addGroup(groups, _child, declaringClass.getQualifiedName()); } @@ -101,8 +101,8 @@ private static void processFunction(JSStructureViewElement parentElement, Map groups, final TreeElement _child, final String qName) { - JSSuperGroup group; - if((group = ((JSSuperGroup) groups.get(qName))) == null) + JSSuperGroup group = (JSSuperGroup) groups.get(qName); + if (group == null) { groups.put(qName, group = new JSSuperGroup(qName)); } @@ -114,7 +114,11 @@ private static void addGroup(final Map groups, final TreeElement @Nonnull public ActionPresentation getPresentation() { - return new ActionPresentationData(IdeBundle.message("action.structureview.group.methods.by.defining.type"), null, PlatformIconGroup.generalImplementingmethod()); + return new ActionPresentationData( + IdeLocalize.actionStructureviewGroupMethodsByDefiningType().get(), + null, + PlatformIconGroup.generalImplementingmethod() + ); } @Override @@ -126,9 +130,9 @@ public String getName() private static boolean isParentGrouped(AbstractTreeNode parent) { - while(parent != null) + while (parent != null) { - if(parent.getValue() instanceof JSSuperGroup) + if (parent.getValue() instanceof JSSuperGroup) { return true; } From 922a9e341684263db47bc5afbb8b33f5162ebedc Mon Sep 17 00:00:00 2001 From: UNV Date: Sat, 6 Jul 2024 17:53:13 +0300 Subject: [PATCH 022/150] Using LocalizeValue as is in calls of Parsing.checkMatches(). --- .../javascript/lang/parsing/FunctionParsing.java | 4 ++-- .../consulo/javascript/lang/parsing/Parsing.java | 15 --------------- .../javascript/lang/parsing/StatementParsing.java | 4 ++-- .../lang/parsing/EcmaScriptExpressionParsing.java | 4 ++-- .../lang/parsing/EcmaScriptStatementParsing.java | 4 ++-- .../parsing/EcmaScript4ExpressionParsing.java | 6 +++--- .../lang/parsing/EcmaScript4FunctionParsing.java | 10 +++++----- .../lang/parsing/EcmaScript4StatementParsing.java | 6 +++--- 8 files changed, 19 insertions(+), 34 deletions(-) diff --git a/base-impl/src/main/java/consulo/javascript/lang/parsing/FunctionParsing.java b/base-impl/src/main/java/consulo/javascript/lang/parsing/FunctionParsing.java index 0952762a..d2b145ac 100644 --- a/base-impl/src/main/java/consulo/javascript/lang/parsing/FunctionParsing.java +++ b/base-impl/src/main/java/consulo/javascript/lang/parsing/FunctionParsing.java @@ -195,7 +195,7 @@ protected void parseDeconstructionParameter(PsiBuilder builder, PsiBuilder.Marke if(!first) { - Parsing.checkMatches(builder, JSTokenTypes.COMMA, "Comma expected"); + Parsing.checkMatches(builder, JSTokenTypes.COMMA, JavaScriptLocalize.javascriptParserMessageExpectedComma()); } first = false; @@ -216,7 +216,7 @@ protected void parseDeconstructionParameter(PsiBuilder builder, PsiBuilder.Marke } } - Parsing.checkMatches(builder, JSTokenTypes.RBRACE, "'}' expected"); + Parsing.checkMatches(builder, JSTokenTypes.RBRACE, JavaScriptLocalize.javascriptParserMessageExpectedRbrace()); desctructionObjectMarker.done(JSElementTypes.DESTRUCTURING_OBJECT); diff --git a/base-impl/src/main/java/consulo/javascript/lang/parsing/Parsing.java b/base-impl/src/main/java/consulo/javascript/lang/parsing/Parsing.java index 378d513a..b3e5d765 100644 --- a/base-impl/src/main/java/consulo/javascript/lang/parsing/Parsing.java +++ b/base-impl/src/main/java/consulo/javascript/lang/parsing/Parsing.java @@ -125,21 +125,6 @@ public static void buildTokenElement(IElementType type, PsiBuilder builder) marker.done(type); } - @Deprecated - public static boolean checkMatches(final PsiBuilder builder, final IElementType token, final String message) - { - if(builder.getTokenType() == token) - { - builder.advanceLexer(); - return true; - } - else - { - builder.error(message); - return false; - } - } - public static boolean checkMatches(final PsiBuilder builder, final IElementType token, final LocalizeValue message) { if(builder.getTokenType() == token) diff --git a/base-impl/src/main/java/consulo/javascript/lang/parsing/StatementParsing.java b/base-impl/src/main/java/consulo/javascript/lang/parsing/StatementParsing.java index 9b32a30f..6ade6147 100644 --- a/base-impl/src/main/java/consulo/javascript/lang/parsing/StatementParsing.java +++ b/base-impl/src/main/java/consulo/javascript/lang/parsing/StatementParsing.java @@ -736,7 +736,7 @@ protected void parseDeconstructionElement(PsiBuilder builder) if(!first) { - Parsing.checkMatches(builder, JSTokenTypes.COMMA, "Comma expected"); + Parsing.checkMatches(builder, JSTokenTypes.COMMA, JavaScriptLocalize.javascriptParserMessageExpectedComma()); } first = false; @@ -757,7 +757,7 @@ protected void parseDeconstructionElement(PsiBuilder builder) } } - Parsing.checkMatches(builder, JSTokenTypes.RBRACE, "'}' expected"); + Parsing.checkMatches(builder, JSTokenTypes.RBRACE, JavaScriptLocalize.javascriptParserMessageExpectedRbrace()); desctructionObjectMarker.done(JSElementTypes.DESTRUCTURING_OBJECT); diff --git a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptExpressionParsing.java b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptExpressionParsing.java index 53bb09de..1ab98d6c 100644 --- a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptExpressionParsing.java +++ b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptExpressionParsing.java @@ -157,7 +157,7 @@ protected void parseProperty(PsiBuilder builder) PsiBuilder.Marker mark = builder.mark(); builder.advanceLexer(); parseExpression(builder); - checkMatches(builder, JSTokenTypes.RBRACKET, JavaScriptLocalize.javascriptParserMessageExpectedRbracket().get()); + checkMatches(builder, JSTokenTypes.RBRACKET, JavaScriptLocalize.javascriptParserMessageExpectedRbracket()); mark.done(JSElementTypes.COMPUTED_NAME); } else @@ -219,7 +219,7 @@ else if(nextTokenType == JSTokenTypes.LPAR) } else { - checkMatches(builder, JSTokenTypes.COLON, JavaScriptLocalize.javascriptParserMessageExpectedColon().get()); + checkMatches(builder, JSTokenTypes.COLON, JavaScriptLocalize.javascriptParserMessageExpectedColon()); builder.putUserData(WITHIN_OBJECT_LITERAL_EXPRESSION, Boolean.TRUE); if(!parseAssignmentExpression(builder)) diff --git a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptStatementParsing.java b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptStatementParsing.java index 48555d56..e7afa4bc 100644 --- a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptStatementParsing.java +++ b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptStatementParsing.java @@ -223,7 +223,7 @@ else if(JavaScriptTokenSets.STRING_LITERALS.contains(builder.getTokenType())) if(!firstBinding) { - Parsing.checkMatches(builder, JSTokenTypes.COMMA, "Comma expected"); + Parsing.checkMatches(builder, JSTokenTypes.COMMA, JavaScriptLocalize.javascriptParserMessageExpectedComma()); } if(builder.getTokenType() == JSTokenTypes.LBRACE) @@ -284,7 +284,7 @@ else if(builder.getTokenType() != JSTokenTypes.RBRACE) } } - Parsing.checkMatches(builder, JSTokenTypes.RBRACE, "'}' expected"); + Parsing.checkMatches(builder, JSTokenTypes.RBRACE, JavaScriptLocalize.javascriptParserMessageExpectedRbrace()); namedImportsMark.done(EcmaScript6ElementTypes.NAMED_IMPORTS); } diff --git a/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4ExpressionParsing.java b/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4ExpressionParsing.java index 4bb1c19c..91610b67 100644 --- a/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4ExpressionParsing.java +++ b/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4ExpressionParsing.java @@ -100,7 +100,7 @@ else if(tokenType == JSTokenTypes.LBRACKET) { builder.advanceLexer(); parseExpression(builder); - checkMatches(builder, JSTokenTypes.RBRACKET, JavaScriptLocalize.javascriptParserMessageExpectedRbracket().get()); + checkMatches(builder, JSTokenTypes.RBRACKET, JavaScriptLocalize.javascriptParserMessageExpectedRbracket()); expr.done(JSElementTypes.INDEXED_PROPERTY_ACCESS_EXPRESSION); expr = expr.precede(); } @@ -163,7 +163,7 @@ else if(tokenType == JSTokenTypes.DEFAULT_KEYWORD || (tokenType != JSTokenTypes. } else { - checkMatches(builder, JSTokenTypes.IDENTIFIER, JavaScriptLocalize.javascriptParserMessageExpectedName().get()); + checkMatches(builder, JSTokenTypes.IDENTIFIER, JavaScriptLocalize.javascriptParserMessageExpectedName()); } expr.done(JSElementTypes.REFERENCE_EXPRESSION); expr = expr.precede(); @@ -205,7 +205,7 @@ private void parseGenericSignature(final PsiBuilder builder) PsiBuilder.Marker genericTypeSignature = builder.mark(); builder.advanceLexer(); parseType(builder); - checkMatches(builder, JSTokenTypes.GT, JavaScriptLocalize.javascriptParserMessageExpectedLt().get()); + checkMatches(builder, JSTokenTypes.GT, JavaScriptLocalize.javascriptParserMessageExpectedLt()); genericTypeSignature.done(JSElementTypes.GENERIC_SIGNATURE); } } diff --git a/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4FunctionParsing.java b/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4FunctionParsing.java index df76c1ca..d4abf341 100644 --- a/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4FunctionParsing.java +++ b/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4FunctionParsing.java @@ -22,7 +22,7 @@ public EcmaScript4FunctionParsing(JavaScriptParsingContext context) public void parseAttributeWithoutBrackets(final PsiBuilder builder) { final PsiBuilder.Marker attribute = builder.mark(); - if (!checkMatches(builder, JSTokenTypes.IDENTIFIER, JavaScriptLocalize.javascriptParserMessageExpectedIdentifier().get())) + if (!checkMatches(builder, JSTokenTypes.IDENTIFIER, JavaScriptLocalize.javascriptParserMessageExpectedIdentifier())) { attribute.drop(); return; @@ -54,7 +54,7 @@ void parseAttributesList(final PsiBuilder builder) builder.advanceLexer(); if (builder.eof() || ( - !checkMatches(builder, JSTokenTypes.IDENTIFIER, JavaScriptLocalize.javascriptParserMessageExpectedIdentifier().get()) + !checkMatches(builder, JSTokenTypes.IDENTIFIER, JavaScriptLocalize.javascriptParserMessageExpectedIdentifier()) && builder.getTokenType() != JSTokenTypes.RBRACKET )) { @@ -129,7 +129,7 @@ void parseAttributesList(final PsiBuilder builder) private void parseAttributeBody(final PsiBuilder builder) { - final boolean haveLParen = checkMatches(builder, JSTokenTypes.LPAR, JavaScriptLocalize.javascriptParserMessageExpectedLparen().get()); + final boolean haveLParen = checkMatches(builder, JSTokenTypes.LPAR, JavaScriptLocalize.javascriptParserMessageExpectedLparen()); boolean hasName; while(haveLParen) @@ -152,7 +152,7 @@ private void parseAttributeBody(final PsiBuilder builder) if(hasName && builder.getTokenType() != JSTokenTypes.COMMA && builder.getTokenType() != JSTokenTypes.RPAR) { - checkMatches(builder, JSTokenTypes.EQ, JavaScriptLocalize.javascriptParserMessageExpectedEqual().get()); + checkMatches(builder, JSTokenTypes.EQ, JavaScriptLocalize.javascriptParserMessageExpectedEqual()); if(builder.getTokenType() != JSTokenTypes.COMMA && builder.getTokenType() != JSTokenTypes.RBRACKET && builder.getTokenType() != JSTokenTypes.RPAR) @@ -184,7 +184,7 @@ private void parseAttributeBody(final PsiBuilder builder) if (haveLParen) { - checkMatches(builder, JSTokenTypes.RPAR, JavaScriptLocalize.javascriptParserMessageExpectedRparen().get()); + checkMatches(builder, JSTokenTypes.RPAR, JavaScriptLocalize.javascriptParserMessageExpectedRparen()); } else { diff --git a/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4StatementParsing.java b/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4StatementParsing.java index 6a323fd9..9c142476 100644 --- a/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4StatementParsing.java +++ b/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4StatementParsing.java @@ -338,9 +338,9 @@ private void parseDefaultNsStatement(final PsiBuilder builder) { builder.advanceLexer(); - if (checkMatches(builder, JSTokenTypes.NAMESPACE_KEYWORD, JavaScriptLocalize.javascriptParserMessageExpectedNamespace().get())) + if (checkMatches(builder, JSTokenTypes.NAMESPACE_KEYWORD, JavaScriptLocalize.javascriptParserMessageExpectedNamespace())) { - if (checkMatches(builder, JSTokenTypes.EQ, JavaScriptLocalize.javascriptParserMessageExpectedEqual().get())) + if (checkMatches(builder, JSTokenTypes.EQ, JavaScriptLocalize.javascriptParserMessageExpectedEqual())) { getExpressionParsing().parseExpression(builder); } @@ -410,7 +410,7 @@ private boolean parseNamespaceNoMarker(final PsiBuilder builder, final @Nonnull if(builder.getTokenType() == JSTokenTypes.EQ) { builder.advanceLexer(); - checkMatches(builder, JSTokenTypes.STRING_LITERAL, JavaScriptLocalize.javascriptParserMessageExpectedStringLiteral().get()); + checkMatches(builder, JSTokenTypes.STRING_LITERAL, JavaScriptLocalize.javascriptParserMessageExpectedStringLiteral()); } checkForSemicolon(builder); useNSStatement.done(JSElementTypes.NAMESPACE_DECLARATION); From 0dc639bcb5c8501100ede34ff596f1cb65bb2af9 Mon Sep 17 00:00:00 2001 From: UNV Date: Sat, 6 Jul 2024 17:58:21 +0300 Subject: [PATCH 023/150] Code-style fixes. --- .../impl/generation/JavaScriptOverrideMethodsHandler.java | 4 ++-- .../introduceVariable/JSIntroduceVariableHandler.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptOverrideMethodsHandler.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptOverrideMethodsHandler.java index f73985a8..aa889eba 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptOverrideMethodsHandler.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptOverrideMethodsHandler.java @@ -40,10 +40,10 @@ public class JavaScriptOverrideMethodsHandler extends BaseJSGenerateHandler implements OverrideMethodHandler { @Override - protected LocalizeValue getTitle() + protected LocalizeValue getTitle() { return JavaScriptLocalize.methodsToOverrideChooserTitle(); - } + } @Override protected BaseCreateMethodsFix createFix(final JSClass clazz) diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceVariable/JSIntroduceVariableHandler.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceVariable/JSIntroduceVariableHandler.java index e7ee417d..7377bd06 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceVariable/JSIntroduceVariableHandler.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceVariable/JSIntroduceVariableHandler.java @@ -28,7 +28,6 @@ */ public class JSIntroduceVariableHandler extends JSBaseIntroduceHandler { - @Override protected String getRefactoringName() { @@ -36,7 +35,8 @@ protected String getRefactoringName() } @Override - protected LocalizeValue getCannotIntroduceMessage() { + protected LocalizeValue getCannotIntroduceMessage() + { return JavaScriptLocalize.javascriptIntroduceVariableErrorNoExpressionSelected(); } From c67f064af838651e8dffbe171827423bd6504d02 Mon Sep 17 00:00:00 2001 From: Valery Semenchuk Date: Sun, 7 Jul 2024 14:31:40 +0400 Subject: [PATCH 024/150] use new api for Unresolved Reference Provider --- .../javascript/psi/impl/JSAttributeImpl.java | 6 ++- .../javascript/psi/impl/JSDocTagImpl.java | 12 ++---- .../javascript/psi/impl/JSReferenceSet.java | 7 ++-- .../impl/validation/JSAnnotatingVisitor.java | 38 +++++++------------ 4 files changed, 26 insertions(+), 37 deletions(-) diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAttributeImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAttributeImpl.java index 963792a6..c9c210b9 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAttributeImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAttributeImpl.java @@ -28,6 +28,7 @@ import consulo.language.psi.PsiReference; import consulo.language.util.IncorrectOperationException; import consulo.language.psi.EmptyResolveMessageProvider; +import consulo.localize.LocalizeValue; import consulo.util.collection.ArrayUtil; import org.jetbrains.annotations.NonNls; @@ -211,10 +212,11 @@ public boolean isSoft() return true; } + @Nonnull @Override - public String getUnresolvedMessagePattern() + public LocalizeValue buildUnresolvedMessaged(@Nonnull String referenceText) { - return "Unknown metadata tag"; + return LocalizeValue.localizeTODO("Unknown metadata tag"); } } } \ No newline at end of file diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDocTagImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDocTagImpl.java index 40457c25..a1703c2b 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDocTagImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDocTagImpl.java @@ -26,6 +26,7 @@ import consulo.language.psi.*; import consulo.language.psi.util.PsiTreeUtil; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import consulo.util.collection.ArrayUtil; import org.jetbrains.annotations.NonNls; @@ -325,16 +326,11 @@ public Object[] getVariants() return ArrayUtil.EMPTY_OBJECT_ARRAY; } + @Nonnull @Override - public boolean isSoft() + public LocalizeValue buildUnresolvedMessaged(@Nonnull String referenceText) { - return false; - } - - @Override - public String getUnresolvedMessagePattern() - { - return JavaScriptLocalize.javascriptValidationMessageIncorrectParameterName().get(); + return JavaScriptLocalize.javascriptValidationMessageIncorrectParameterName(); } } } \ No newline at end of file diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSReferenceSet.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSReferenceSet.java index 35709537..13ace481 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSReferenceSet.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSReferenceSet.java @@ -28,6 +28,7 @@ import consulo.language.psi.resolve.ResolveCache; import consulo.language.psi.resolve.ResolveState; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import consulo.project.Project; import consulo.util.collection.ArrayUtil; import consulo.util.lang.StringUtil; @@ -548,12 +549,12 @@ private ResolveResult[] doOldResolve(PsiFile psiFile) return processor.getResults(); } + @Nonnull @Override - public String getUnresolvedMessagePattern() + public LocalizeValue buildUnresolvedMessaged(@Nonnull String text) { - String text = getCanonicalText(); text = "'" + text.replace("'", "''") + "'"; - return JavaScriptLocalize.javascriptUnresolvedVariableOrTypeNameMessage2(text).get(); + return JavaScriptLocalize.javascriptUnresolvedVariableOrTypeNameMessage2(text); } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatingVisitor.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatingVisitor.java index 6c53677b..18286eee 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatingVisitor.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatingVisitor.java @@ -24,6 +24,7 @@ import com.intellij.lang.javascript.psi.resolve.JSImportHandlingUtil; import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; import com.intellij.lang.javascript.psi.util.JSUtils; +import consulo.annotation.access.RequiredReadAction; import consulo.codeEditor.Editor; import consulo.document.util.TextRange; import consulo.javascript.localize.JavaScriptLocalize; @@ -32,9 +33,7 @@ import consulo.language.ast.ASTNode; import consulo.language.ast.IElementType; import consulo.language.editor.FileModificationService; -import consulo.language.editor.annotation.Annotation; -import consulo.language.editor.annotation.AnnotationHolder; -import consulo.language.editor.annotation.Annotator; +import consulo.language.editor.annotation.*; import consulo.language.editor.impl.intention.RenameFileFix; import consulo.language.editor.inspection.LocalQuickFix; import consulo.language.editor.inspection.LocalQuickFixProvider; @@ -58,7 +57,6 @@ import org.jetbrains.annotations.NonNls; import javax.annotation.Nonnull; -import java.text.MessageFormat; import java.util.*; /** @@ -76,26 +74,21 @@ public synchronized void annotate(PsiElement psiElement, AnnotationHolder holder @Override public void visitJSAttributeNameValuePair(final JSAttributeNameValuePair attributeNameValuePair) { - checkReferences(attributeNameValuePair, ProblemKind.ERROR); + checkReferences(attributeNameValuePair, HighlightSeverity.ERROR); } @Override public void visitJSIncludeDirective(final JSIncludeDirective includeDirective) { - checkReferences(includeDirective, ProblemKind.ERROR); + checkReferences(includeDirective, HighlightSeverity.ERROR); } @Override public void visitJSLiteralExpression(JSSimpleLiteralExpression node) { - checkReferences(node, ProblemKind.ERROR); + checkReferences(node, HighlightSeverity.ERROR); } - static enum ProblemKind { - ERROR, - WARNING, - INFO - } - - private void checkReferences(final PsiElement includeDirective, ProblemKind kind) { + @RequiredReadAction + private void checkReferences(final PsiElement includeDirective, HighlightSeverity kind) { for (PsiReference ref : includeDirective.getReferences()) { if (!ref.isSoft() && hasBadResolve(ref)) { final TextRange elementRange = ref.getElement().getTextRange(); @@ -105,21 +98,18 @@ private void checkReferences(final PsiElement includeDirective, ProblemKind kind elementRange.getStartOffset() + textRange.getStartOffset(), elementRange.getStartOffset() + textRange.getEndOffset() ); - final String message = - MessageFormat.format(((EmptyResolveMessageProvider)ref).getUnresolvedMessagePattern(), ref.getCanonicalText()); - Annotation annotation = kind == ProblemKind.ERROR - ? myHolder.createErrorAnnotation(range, message) - : kind == ProblemKind.WARNING - ? myHolder.createWarningAnnotation(range, message) - : myHolder.createInfoAnnotation(range, message); + final LocalizeValue value = ((EmptyResolveMessageProvider) ref).buildUnresolvedMessaged(ref.getCanonicalText()); + AnnotationBuilder builder = myHolder.newAnnotation(kind, value); + builder = builder.range(range); if (ref instanceof LocalQuickFixProvider localQuickFixProvider) { for (LocalQuickFix fix : localQuickFixProvider.getQuickFixes()) { if (fix instanceof IntentionAction intentionAction) { - annotation.registerFix(intentionAction, new TextRange(annotation.getStartOffset(), annotation.getEndOffset())); + builder = builder.withFix(intentionAction); } } } + builder.create(); } } } @@ -142,12 +132,12 @@ public void visitJSCallExpression(final JSCallExpression node) { @Override public void visitJSDocTagValue(final JSDocTagValue tagValue) { - checkReferences(tagValue, ProblemKind.WARNING); + checkReferences(tagValue, HighlightSeverity.WARNING); } @Override public void visitJSDocTag(final JSDocTag tagValue) { - checkReferences(tagValue, ProblemKind.WARNING); + checkReferences(tagValue, HighlightSeverity.WARNING); } @Override From 10fd32002675a4615a0a2de8e9449d89e1e0d5eb Mon Sep 17 00:00:00 2001 From: Valery Semenchuk Date: Sun, 7 Jul 2024 14:45:21 +0400 Subject: [PATCH 025/150] annotation cleanup --- .../java/com/intellij/lang/javascript/psi/JSAttribute.java | 3 +-- .../com/intellij/lang/javascript/psi/JSAttributeList.java | 4 ++-- .../intellij/lang/javascript/psi/JSAttributeListOwner.java | 2 +- .../lang/javascript/psi/JSAttributeNameValuePair.java | 2 +- .../intellij/lang/javascript/psi/JSBinaryExpression.java | 3 +-- .../java/com/intellij/lang/javascript/psi/JSClass.java | 2 +- .../intellij/lang/javascript/psi/JSClassExpression.java | 2 +- .../lang/javascript/psi/JSDestructuringElement.java | 4 ++-- .../lang/javascript/psi/JSDestructuringObject.java | 2 +- .../lang/javascript/psi/JSDestructuringParameter.java | 3 +-- .../javascript/psi/JSDestructuringShorthandedProperty.java | 3 +-- .../java/com/intellij/lang/javascript/psi/JSDocTag.java | 2 +- .../com/intellij/lang/javascript/psi/JSExpression.java | 2 +- .../lang/javascript/psi/JSExpressionStatement.java | 3 +-- .../java/com/intellij/lang/javascript/psi/JSFunction.java | 4 ++-- .../intellij/lang/javascript/psi/JSFunctionExpression.java | 2 +- .../lang/javascript/psi/JSNamespaceDeclaration.java | 2 +- .../java/com/intellij/lang/javascript/psi/JSParameter.java | 3 +-- .../intellij/lang/javascript/psi/JSPostfixExpression.java | 2 +- .../intellij/lang/javascript/psi/JSPrefixExpression.java | 2 +- .../java/com/intellij/lang/javascript/psi/JSProperty.java | 4 ++-- .../lang/javascript/psi/JSReferenceExpression.java | 2 +- .../com/intellij/lang/javascript/psi/JSReferenceList.java | 2 +- .../com/intellij/lang/javascript/psi/JSTryStatement.java | 4 ++-- .../com/intellij/lang/javascript/psi/JSVarStatement.java | 3 +-- .../java/com/intellij/lang/javascript/psi/JSVariable.java | 4 ++-- .../com/intellij/lang/javascript/psi/JSYieldStatement.java | 2 +- .../javascript/psi/stubs/JSAttributeNameValuePairStub.java | 2 +- .../completion/JavaScriptKeywordCompletionExtender.java | 2 +- .../java/consulo/javascript/index/JavaScriptIndexer.java | 2 +- .../consulo/javascript/language/JavaScriptFeature.java | 2 +- .../consulo/javascript/language/JavaScriptFileType.java | 4 ++-- .../javascript/language/JavaScriptFileTypeWithVersion.java | 4 ++-- .../consulo/javascript/language/JavaScriptLanguage.java | 4 ++-- .../javascript/language/JavaScriptLanguageVersion.java | 3 +-- .../consulo/javascript/language/JavaScriptVersionUtil.java | 2 +- .../javascript/language/StandardJavaScriptVersions.java | 4 ++-- .../javascript/language/psi/JavaScriptPrimitiveType.java | 5 ++--- .../consulo/javascript/language/psi/JavaScriptType.java | 4 ++-- .../javascript/language/psi/JavaScriptTypeElement.java | 3 +-- .../language/psi/stub/JSImplementedInterfacesIndex.java | 2 +- .../consulo/javascript/language/psi/stub/JSNameIndex.java | 2 +- .../language/psi/stub/JSQualifiedElementIndex.java | 3 +-- .../javascript/language/psi/stub/JSSuperClassIndex.java | 3 +-- .../module/extension/JavaScriptModuleExtension.java | 3 +-- .../module/extension/JavaScriptMutableModuleExtension.java | 3 +-- .../main/java/consulo/javascript/psi/JSComputedName.java | 2 +- .../consulo/javascript/psi/JSSimpleLiteralExpression.java | 3 +-- .../impl/reference/JSPropertyNameReferenceProvider.java | 4 ++-- .../main/java/consulo/javascript/psi/stubs/JSFileStub.java | 2 +- .../javascript/documentation/JSDocumentationBuilder.java | 7 ++++--- .../javascript/documentation/JSDocumentationProcessor.java | 6 +++--- .../javascript/documentation/JSDocumentationProvider.java | 4 ++-- .../javascript/documentation/JSDocumentationUtils.java | 6 +++--- .../com/intellij/lang/javascript/JSDocElementType.java | 2 +- .../java/com/intellij/lang/javascript/JSElementType.java | 3 +-- .../java/com/intellij/lang/javascript/JSElementTypes.java | 2 +- .../com/intellij/lang/javascript/JSLanguageInjector.java | 2 +- .../com/intellij/lang/javascript/JSStubElementTypes.java | 2 +- .../java/com/intellij/lang/javascript/JSTokenTypes.java | 4 ++-- .../lang/javascript/JavaScriptStubElementHolder.java | 4 ++-- .../lang/javascript/XmlAttributeValueJSInjector.java | 2 +- .../com/intellij/lang/javascript/XmlTextJSInjector.java | 2 +- .../intellij/lang/javascript/flex/FlexImportSupport.java | 2 +- .../com/intellij/lang/javascript/flex/JSResolveHelper.java | 2 +- .../lang/javascript/flex/XmlBackedJSClassImpl.java | 5 +++-- .../lang/javascript/highlighting/JSHighlighter.java | 2 +- .../intellij/lang/javascript/index/JSItemPresentation.java | 3 +-- .../com/intellij/lang/javascript/index/JSSymbolUtil.java | 2 +- .../javascript/inspections/qucikFixes/BaseCreateFix.java | 4 ++-- .../lang/javascript/psi/impl/JSArgumentListImpl.java | 2 +- .../javascript/psi/impl/JSArrayLiteralExpressionImpl.java | 2 +- .../javascript/psi/impl/JSAssignmentExpressionImpl.java | 2 +- .../intellij/lang/javascript/psi/impl/JSAttributeImpl.java | 2 +- .../lang/javascript/psi/impl/JSAttributeListImpl.java | 4 ++-- .../javascript/psi/impl/JSAttributeNameValuePairImpl.java | 2 +- .../lang/javascript/psi/impl/JSBinaryExpressionImpl.java | 4 ++-- .../lang/javascript/psi/impl/JSBlockStatementImpl.java | 2 +- .../lang/javascript/psi/impl/JSBreakStatementImpl.java | 3 +-- .../lang/javascript/psi/impl/JSCallExpressionImpl.java | 2 +- .../lang/javascript/psi/impl/JSCaseClauseImpl.java | 3 +-- .../lang/javascript/psi/impl/JSCatchBlockImpl.java | 2 +- .../intellij/lang/javascript/psi/impl/JSChangeUtil.java | 4 ++-- .../com/intellij/lang/javascript/psi/impl/JSClassBase.java | 6 +++--- .../lang/javascript/psi/impl/JSClassExpressionImpl.java | 2 +- .../com/intellij/lang/javascript/psi/impl/JSClassImpl.java | 2 +- .../lang/javascript/psi/impl/JSCommaExpressionImpl.java | 3 +-- .../javascript/psi/impl/JSConditionalExpressionImpl.java | 2 +- .../lang/javascript/psi/impl/JSContinueStatementImpl.java | 2 +- .../javascript/psi/impl/JSDefinitionExpressionImpl.java | 4 ++-- .../lang/javascript/psi/impl/JSDoWhileStatementImpl.java | 3 +-- .../lang/javascript/psi/impl/JSDocCommentImpl.java | 3 +-- .../intellij/lang/javascript/psi/impl/JSDocTagImpl.java | 3 +-- .../lang/javascript/psi/impl/JSDocTagValueImpl.java | 2 +- .../lang/javascript/psi/impl/JSEmbeddedContentImpl.java | 2 +- .../lang/javascript/psi/impl/JSEmptyStatementImpl.java | 3 +-- .../javascript/psi/impl/JSExpressionCodeFragmentImpl.java | 2 +- .../lang/javascript/psi/impl/JSExpressionImpl.java | 3 +-- .../javascript/psi/impl/JSExpressionStatementImpl.java | 2 +- .../com/intellij/lang/javascript/psi/impl/JSFileImpl.java | 6 +++--- .../lang/javascript/psi/impl/JSForInStatementImpl.java | 2 +- .../lang/javascript/psi/impl/JSForStatementImpl.java | 4 ++-- .../lang/javascript/psi/impl/JSFunctionBaseImpl.java | 4 ++-- .../lang/javascript/psi/impl/JSFunctionExpressionImpl.java | 2 +- .../intellij/lang/javascript/psi/impl/JSFunctionImpl.java | 2 +- .../lang/javascript/psi/impl/JSFunctionPropertyImpl.java | 4 ++-- .../lang/javascript/psi/impl/JSGenericSignatureImpl.java | 2 +- .../lang/javascript/psi/impl/JSIfStatementImpl.java | 3 +-- .../lang/javascript/psi/impl/JSImportStatementImpl.java | 2 +- .../lang/javascript/psi/impl/JSIncludeDirectiveImpl.java | 2 +- .../psi/impl/JSIndexedPropertyAccessExpressionImpl.java | 3 +-- .../lang/javascript/psi/impl/JSLabeledStatementImpl.java | 2 +- .../lang/javascript/psi/impl/JSLetExpressionImpl.java | 3 +-- .../lang/javascript/psi/impl/JSLetStatementImpl.java | 2 +- .../lang/javascript/psi/impl/JSLiteralExpressionImpl.java | 3 +-- .../javascript/psi/impl/JSNamespaceDeclarationImpl.java | 2 +- .../lang/javascript/psi/impl/JSNewExpressionImpl.java | 2 +- .../javascript/psi/impl/JSObjectLiteralExpressionImpl.java | 2 +- .../lang/javascript/psi/impl/JSPackageStatementImpl.java | 2 +- .../intellij/lang/javascript/psi/impl/JSParameterImpl.java | 4 ++-- .../lang/javascript/psi/impl/JSParameterListImpl.java | 2 +- .../javascript/psi/impl/JSParenthesizedExpressionImpl.java | 3 +-- .../lang/javascript/psi/impl/JSPostfixExpressionImpl.java | 2 +- .../lang/javascript/psi/impl/JSPrefixExpressionImpl.java | 4 ++-- .../intellij/lang/javascript/psi/impl/JSPropertyImpl.java | 4 ++-- .../intellij/lang/javascript/psi/impl/JSPsiImplUtils.java | 4 ++-- .../javascript/psi/impl/JSReferenceExpressionImpl.java | 4 ++-- .../lang/javascript/psi/impl/JSReferenceListImpl.java | 2 +- .../intellij/lang/javascript/psi/impl/JSReferenceSet.java | 4 ++-- .../lang/javascript/psi/impl/JSReturnStatementImpl.java | 3 +-- .../psi/impl/JSSmartCompletionVariantsHandler.java | 2 +- .../psi/impl/JSStatementWithLabelReferenceImpl.java | 5 +++-- .../lang/javascript/psi/impl/JSStubElementImpl.java | 3 +-- .../lang/javascript/psi/impl/JSSuperExpressionImpl.java | 4 ++-- .../lang/javascript/psi/impl/JSSwitchStatementImpl.java | 3 +-- .../lang/javascript/psi/impl/JSThisExpressionImpl.java | 2 +- .../lang/javascript/psi/impl/JSThrowStatementImpl.java | 3 +-- .../lang/javascript/psi/impl/JSTryStatementImpl.java | 4 ++-- .../javascript/psi/impl/JSUseNamespaceDirectiveImpl.java | 2 +- .../lang/javascript/psi/impl/JSVarStatementImpl.java | 6 +++--- .../lang/javascript/psi/impl/JSVariableBaseImpl.java | 2 +- .../intellij/lang/javascript/psi/impl/JSVariableImpl.java | 3 +-- .../lang/javascript/psi/impl/JSWhileStatementImpl.java | 2 +- .../lang/javascript/psi/impl/JSWithStatementImpl.java | 3 +-- .../javascript/psi/impl/JSXmlLiteralExpressionImpl.java | 4 ++-- .../lang/javascript/psi/impl/JSYieldStatementImpl.java | 2 +- .../psi/impl/reference/JSPropertyNameReference.java | 4 ++-- .../lang/javascript/psi/resolve/BaseJSSymbolProcessor.java | 2 +- .../lang/javascript/psi/resolve/JSImportHandlingUtil.java | 4 ++-- .../lang/javascript/psi/resolve/JSResolveUtil.java | 4 ++-- .../lang/javascript/psi/resolve/ResolveProcessor.java | 5 +++-- .../javascript/psi/resolve/WalkUpResolveProcessor.java | 2 +- .../intellij/lang/javascript/psi/util/JSLookupUtil.java | 4 ++-- .../com/intellij/lang/javascript/search/JSClassSearch.java | 2 +- .../lang/javascript/types/JSAttributeElementType.java | 2 +- .../lang/javascript/types/JSAttributeListElementType.java | 2 +- .../javascript/types/JSAttributeNameValuePairType.java | 2 +- .../intellij/lang/javascript/types/JSClassElementType.java | 2 +- .../intellij/lang/javascript/types/JSFileElementType.java | 2 +- .../lang/javascript/types/JSFunctionElementType.java | 2 +- .../javascript/types/JSImportStatementElementType.java | 2 +- .../javascript/types/JSIncludeDirectiveElementType.java | 2 +- .../types/JSNamespaceDeclarationElementType.java | 3 +-- .../javascript/types/JSPackageStatementElementType.java | 2 +- .../lang/javascript/types/JSParameterElementType.java | 2 +- .../lang/javascript/types/JSParameterListElementType.java | 2 +- .../lang/javascript/types/JSReferenceListElementType.java | 2 +- .../lang/javascript/types/JSUseNamespaceDirectiveType.java | 2 +- .../lang/javascript/types/JSVarStatementElementType.java | 2 +- .../lang/javascript/types/JSVariableElementType.java | 2 +- .../lang/javascript/validation/JSUnusedImportsHelper.java | 4 ++-- .../ide/codeInsight/JavaScriptQuickFixFactory.java | 2 +- .../javascript/ide/hightlight/JavaScriptHighlighter.java | 2 +- .../ide/hightlight/JavaScriptSyntaxHighlightFactory.java | 2 +- .../javascript/impl/language/JavaScriptQuoteHandler.java | 3 +-- .../javascript/impl/language/psi/JSComputedNameImpl.java | 4 ++-- .../javascript/impl/language/psi/JSElementFactory.java | 3 +-- .../javascript/impl/language/psi/JSStubElementType.java | 2 +- .../impl/language/psi/JavaScriptLambdaExpressionImpl.java | 5 ++--- .../impl/language/psi/JavaScriptSpreadExpressionImpl.java | 2 +- .../javascript/impl/language/psi/stub/JSFileStubImpl.java | 4 ++-- .../impl/language/psi/stub/JavaScriptClassNameIndex.java | 2 +- .../inspections/qucikFixes/CreateJSFunctionFixBase.java | 2 +- .../javascript/lang/BaseJavaScriptLanguageVersion.java | 2 +- .../javascript/lang/JavaScript15LanguageVersion.java | 2 +- .../lang/JavaScriptContextKeywordElementType.java | 4 ++-- .../javascript/lang/StandardJavaScriptVersionsImpl.java | 4 ++-- .../consulo/javascript/lang/parsing/ExpressionParsing.java | 2 +- .../consulo/javascript/lang/parsing/FunctionParsing.java | 5 ++--- .../java/consulo/javascript/lang/parsing/JSXParser.java | 4 ++-- .../consulo/javascript/lang/parsing/JavaScriptParser.java | 2 +- .../javascript/lang/parsing/JavaScriptParsingContext.java | 3 +-- .../main/java/consulo/javascript/lang/parsing/Parsing.java | 4 ++-- .../consulo/javascript/lang/parsing/StatementParsing.java | 2 +- .../parsing/impl/JavaSciptDestructuringElementImpl.java | 4 ++-- .../parsing/impl/JavaSciptDestructuringObjectImpl.java | 2 +- .../parsing/impl/JavaScriptDestructuringParameterImpl.java | 4 ++-- .../JavaScriptDestructuringShorthandedPropertyImpl.java | 2 +- .../lang/parsing/impl/JavaScriptStrictParserBuilder.java | 2 +- .../javascript/lang/psi/impl/JavaScriptClassType.java | 4 ++-- .../lang/psi/impl/resolve/JavaScriptVersionWithHelper.java | 2 +- .../javascript/lang/psi/impl/resolve/ResolveHelper.java | 4 ++-- .../lang/viewProvider/JSFileViewProviderFactory.java | 2 +- .../javascript/types/JSQualifiedStubElementType.java | 3 +-- .../javascript/debugger/JSDebuggerSupportUtils.java | 4 ++-- .../javascript/debugger/JavaScriptEditorsProvider.java | 4 ++-- .../javascript/debugger/JavaScriptLineBreakpointType.java | 4 ++-- .../debugger/JavaScriptLineBreakpointTypeResolver.java | 4 ++-- .../consulo/javascript/debugger/JavaScriptListPanel.java | 5 +++-- .../javascript/run/debug/v8/V8BaseDebugProcess.java | 5 +++-- .../javascript/run/debug/v8/V8BaseVariableValue.java | 4 ++-- .../consulo/javascript/run/debug/v8/V8DebugProcess.java | 2 +- .../consulo/javascript/run/debug/v8/V8ExecutionStack.java | 2 +- .../java/consulo/javascript/run/debug/v8/V8ScriptUtil.java | 2 +- .../java/consulo/javascript/run/debug/v8/V8StackFrame.java | 4 ++-- .../consulo/javascript/run/debug/v8/V8SuspendContext.java | 2 +- .../consulo/javascript/run/debug/v8/V8VariableValue.java | 4 ++-- .../java/consulo/javascript/run/debug/v8/V8WatchValue.java | 2 +- .../src/main/java/com/sixrr/inspectjs/BaseInspection.java | 4 ++-- .../java/com/sixrr/inspectjs/BaseInspectionVisitor.java | 4 ++-- .../src/main/java/com/sixrr/inspectjs/InspectionJSFix.java | 2 +- .../assignment/AssignmentResultUsedJSInspection.java | 5 ++--- .../AssignmentToForLoopParameterJSInspection.java | 3 +-- .../AssignmentToFunctionParameterJSInspection.java | 4 ++-- .../inspectjs/assignment/NestedAssignmentJSInspection.java | 2 +- ...eplaceAssignmentWithOperatorAssignmentJSInspection.java | 3 +-- .../inspectjs/assignment/SillyAssignmentJSInspection.java | 2 +- .../inspectjs/bitwise/IncompatibleMaskJSInspection.java | 2 +- .../bitwise/PointlessBitwiseExpressionJSInspection.java | 2 +- .../PointlessBitwiseExpressionJSInspectionState.java | 2 +- .../inspectjs/bitwise/ShiftOutOfRangeJSInspection.java | 2 +- .../com/sixrr/inspectjs/bugs/DivideByZeroJSInspection.java | 2 +- .../bugs/EqualityComparisonWithCoercionJSInspection.java | 2 +- .../com/sixrr/inspectjs/bugs/InfiniteLoopJSInspection.java | 2 +- .../inspectjs/bugs/InfiniteRecursionJSInspection.java | 2 +- .../bugs/NonShortCircuitBooleanExpressionJSInspection.java | 4 ++-- .../bugs/ObjectAllocationIgnoredJSInspection.java | 2 +- .../main/java/com/sixrr/inspectjs/bugs/RecursionUtils.java | 2 +- .../java/com/sixrr/inspectjs/bugs/RecursionVisitor.java | 2 +- .../bugs/TextLabelInSwitchStatementJSInspection.java | 2 +- .../inspectjs/confusing/AnonymousFunctionJSInspection.java | 4 ++-- .../inspectjs/confusing/BlockStatementJSInspection.java | 4 ++-- .../com/sixrr/inspectjs/confusing/CallerJSInspection.java | 4 ++-- .../inspectjs/confusing/CommaExpressionJSInspection.java | 4 ++-- .../confusing/ConditionalExpressionJSInspection.java | 4 ++-- .../ConfusingFloatingPointLiteralJSInspection.java | 2 +- .../confusing/ConfusingPlusesOrMinusesJSInspection.java | 4 ++-- .../confusing/DynamicallyGeneratedCodeJSInspection.java | 4 ++-- .../confusing/EmptyStatementBodyJSInspection.java | 2 +- .../confusing/EmptyStatementBodyJSInspectionState.java | 2 +- .../IncrementDecrementResultUsedJSInspection.java | 4 ++-- .../sixrr/inspectjs/confusing/MagicNumberJSInspection.java | 2 +- .../NegatedConditionalExpressionJSInspection.java | 4 ++-- .../confusing/NegatedIfStatementJSInspection.java | 4 ++-- .../confusing/NestedConditionalExpressionJSInspection.java | 5 ++--- .../inspectjs/confusing/NestedFunctionJSInspection.java | 4 ++-- .../confusing/NestedFunctionJSInspectionState.java | 3 +-- .../inspectjs/confusing/OctalIntegerJSInspection.java | 4 ++-- .../OverlyComplexArithmeticExpressionJSInspection.java | 2 +- ...OverlyComplexArithmeticExpressionJSInspectionState.java | 2 +- .../OverlyComplexBooleanExpressionJSInspection.java | 2 +- .../OverlyComplexBooleanExpressionJSInspectionState.java | 2 +- .../PointlessArithmeticExpressionJSInspection.java | 2 +- .../confusing/PointlessBooleanExpressionJSInspection.java | 4 ++-- .../inspectjs/confusing/VoidExpressionJSInspection.java | 4 ++-- .../inspectjs/confusing/WithStatementJSInspection.java | 4 ++-- .../inspectjs/control/BreakStatementJSInspection.java | 4 ++-- .../control/BreakStatementWithLabelJSInspection.java | 4 ++-- ...itionalExpressionWithIdenticalBranchesJSInspection.java | 3 +-- .../control/ConstantConditionalExpressionJSInspection.java | 3 +-- .../inspectjs/control/ConstantIfStatementJSInspection.java | 2 +- .../inspectjs/control/ContinueStatementJSInspection.java | 4 ++-- .../control/ContinueStatementWithLabelJSInspection.java | 4 ++-- .../control/DefaultNotLastCaseInSwitchJSInspection.java | 3 +-- .../inspectjs/control/DuplicateConditionJSInspection.java | 3 +-- .../control/FallthroughInSwitchStatementJSInspection.java | 4 ++-- .../control/ForLoopReplaceableByWhileJSInspection.java | 2 +- .../ForLoopReplaceableByWhileJSInspectionState.java | 3 +-- .../ForLoopThatDoesntUseLoopVariableJSInspection.java | 2 +- .../IfStatementWithIdenticalBranchesJSInspection.java | 2 +- .../IfStatementWithTooManyBranchesJSInspection.java | 2 +- .../IfStatementWithTooManyBranchesJSInspectionState.java | 3 +-- .../inspectjs/control/LabeledStatementJSInspection.java | 4 ++-- .../control/LoopStatementThatDoesntLoopJSInspection.java | 2 +- .../control/NestedSwitchStatementJSInspection.java | 5 ++--- .../SwitchStatementWithNoDefaultBranchJSInspection.java | 4 ++-- .../sixrr/inspectjs/control/TailRecursionJSInspection.java | 2 +- .../inspectjs/control/TrivialConditionalJSInspection.java | 3 +-- .../com/sixrr/inspectjs/control/TrivialIfJSInspection.java | 2 +- .../inspectjs/control/UnnecessaryContinueJSInspection.java | 3 +-- .../inspectjs/control/UnnecessaryLabelJSInspection.java | 2 +- .../UnnecessaryLabelOnBreakStatementJSInspection.java | 4 ++-- .../UnnecessaryLabelOnContinueStatementJSInspection.java | 4 ++-- .../inspectjs/control/UnnecessaryReturnJSInspection.java | 3 +-- .../dataflow/ReuseOfLocalVariableJSInspection.java | 4 ++-- .../dataflow/UnnecessaryLocalVariableJSInspection.java | 2 +- .../UnnecessaryLocalVariableJSInspectionState.java | 2 +- .../sixrr/inspectjs/dataflow/VariableAssignedVisitor.java | 2 +- .../dataflow/VariableUsedInInnerFunctionVisitor.java | 3 +-- .../com/sixrr/inspectjs/dataflow/VariableUsedVisitor.java | 2 +- .../com/sixrr/inspectjs/dom/DocumentWriteJSInspection.java | 4 ++-- .../com/sixrr/inspectjs/dom/InnerHTMLJSInspection.java | 4 ++-- .../sixrr/inspectjs/dom/PlatformDetectionJSInspection.java | 4 ++-- .../inspectjs/dom/XHTMLIncompatabilitiesJSInspection.java | 4 ++-- .../inspectjs/exception/CatchParameterUsedVisitor.java | 2 +- .../ContinueOrBreakFromFinallyBlockJSInspection.java | 3 +-- .../inspectjs/exception/EmptyCatchBlockJSInspection.java | 5 ++--- .../inspectjs/exception/EmptyFinallyBlockJSInspection.java | 4 ++-- .../inspectjs/exception/EmptyTryBlockJSInspection.java | 4 ++-- .../exception/ExceptionCaughtLocallyJSInspection.java | 2 +- .../exception/ReturnFromFinallyBlockJSInspection.java | 2 +- .../exception/ThrowFromFinallyBlockJSInspection.java | 2 +- .../exception/UnusedCatchParameterJSInspection.java | 2 +- .../exception/UnusedCatchParameterJSInspectionState.java | 2 +- .../src/main/java/com/sixrr/inspectjs/fix/RenameFix.java | 2 +- .../functionmetrics/CyclomaticComplexityJSInspection.java | 2 +- .../functionmetrics/CyclomaticComplexityVisitor.java | 3 +-- .../FunctionWithMultipleLoopsJSInspection.java | 2 +- .../FunctionWithMultipleReturnPointsJSInspection.java | 2 +- .../sixrr/inspectjs/functionmetrics/LoopCountVisitor.java | 2 +- .../inspectjs/functionmetrics/NegationCountVisitor.java | 2 +- .../functionmetrics/NestingDepthJSInspection.java | 2 +- .../inspectjs/functionmetrics/NestingDepthVisitor.java | 2 +- .../functionmetrics/ParametersPerFunctionJSInspection.java | 2 +- .../inspectjs/functionmetrics/StatementCountVisitor.java | 2 +- .../functionmetrics/StatementsPerFunctionJSInspection.java | 2 +- .../ThreeNegationsPerFunctionJSInspection.java | 2 +- .../sixrr/inspectjs/naming/ConventionInspectionState.java | 2 +- .../naming/FunctionNamingConventionJSInspection.java | 2 +- .../naming/FunctionNamingConventionJSInspectionState.java | 3 --- .../naming/LocalVariableNamingConventionJSInspection.java | 2 +- .../naming/ParameterNamingConventionJSInspection.java | 2 +- .../sixrr/inspectjs/style/ChainedEqualityJSInspection.java | 2 +- .../inspectjs/style/ChainedFunctionCallJSInspection.java | 3 +-- .../style/ConstantOnLHSOfComparisonJSInspection.java | 2 +- .../style/ConstantOnRHSOfComparisonJSInspection.java | 2 +- .../inspectjs/style/NestedFunctionCallJSInspection.java | 2 +- .../inspectjs/style/NonBlockStatementBodyJSInspection.java | 2 +- .../inspectjs/style/UnterminatedStatementJSInspection.java | 4 ++-- .../src/main/java/com/sixrr/inspectjs/utils/BoolUtils.java | 4 ++-- .../java/com/sixrr/inspectjs/utils/ComparisonUtils.java | 4 ++-- .../java/com/sixrr/inspectjs/utils/ControlFlowUtils.java | 4 ++-- .../java/com/sixrr/inspectjs/utils/EquivalenceChecker.java | 4 ++-- .../java/com/sixrr/inspectjs/utils/ExpressionUtil.java | 3 +-- .../java/com/sixrr/inspectjs/utils/SideEffectChecker.java | 2 +- .../validity/BadExpressionStatementJSInspection.java | 5 ++--- .../inspectjs/validity/DebuggerStatementJSInspection.java | 4 ++-- .../inspectjs/validity/DuplicateCaseLabelJSInspection.java | 2 +- .../validity/DuplicatePropertyOnObjectJSInspection.java | 2 +- .../FunctionWithInconsistentReturnsJSInspection.java | 4 ++-- .../validity/StringLiteralBreaksHTMLJSInspection.java | 4 ++-- .../ThisExpressionReferencesGlobalObjectJSInspection.java | 4 ++-- .../inspectjs/validity/UnreachableCodeJSInspection.java | 4 ++-- .../idea/lang/javascript/intention/JSElementPredicate.java | 2 +- .../idea/lang/javascript/intention/JSIntention.java | 4 ++-- .../lang/javascript/intention/JSMutablyNamedIntention.java | 4 ++-- .../javascript/intention/bool/ComparisonPredicate.java | 2 +- .../javascript/intention/bool/ConjunctionPredicate.java | 3 +-- .../javascript/intention/bool/JSDeMorgansLawIntention.java | 2 +- .../intention/bool/JSFlipComparisonIntention.java | 3 +-- .../intention/bool/JSFlipConjunctionIntention.java | 3 +-- .../intention/bool/JSNegateComparisonIntention.java | 3 +-- .../intention/bool/JSRemoveBooleanEqualityIntention.java | 2 +- .../javascript/intention/braces/JSAddBracesIntention.java | 2 +- .../intention/braces/JSRemoveBracesIntention.java | 2 +- .../comment/JSChangeToCStyleCommentIntention.java | 2 +- .../comment/JSChangeToEndOfLineCommentIntention.java | 2 +- .../comment/JSMoveCommentToSeparateLineIntention.java | 3 +-- .../intention/conditional/JSFlipConditionalIntention.java | 2 +- .../intention/conditional/JSFlipIfIntention.java | 2 +- .../conditional/JSRemoveConditionalIntention.java | 2 +- .../conditional/JSReplaceConditionalWithIfIntention.java | 2 +- .../intention/constant/JSConstantExpressionIntention.java | 3 +-- .../constant/JSConstantSubexpressionIntention.java | 4 ++-- .../intention/increment/JSExtractIncrementIntention.java | 2 +- .../JSMergeDeclarationAndInitializationIntention.java | 2 +- .../JSSplitDeclarationAndInitializationIntention.java | 2 +- .../intention/loop/JSMergeParallelForInLoopsIntention.java | 2 +- .../intention/loop/JSMergeParallelForLoopsIntention.java | 2 +- .../number/JSConvertIntegerToDecimalIntention.java | 2 +- .../intention/number/JSConvertIntegerToHexIntention.java | 2 +- .../intention/number/JSConvertIntegerToOctalIntention.java | 2 +- .../number/JSReplaceMultiplyWithShiftIntention.java | 2 +- .../number/JSReplaceShiftWithMultiplyIntention.java | 3 +-- .../opassign/JSReplaceWithOperatorAssignmentIntention.java | 3 +-- .../JSRemoveUnnecessaryParenthesesIntention.java | 2 +- .../string/JSDoubleToSingleQuotedStringIntention.java | 2 +- .../string/JSJoinConcatenatedStringLiteralsIntention.java | 3 +-- .../string/JSSingleToDoubleQuotedStringIntention.java | 2 +- .../switchtoif/JSReplaceIfWithSwitchIntention.java | 2 +- .../switchtoif/JSReplaceSwitchWithIfIntention.java | 2 +- .../intention/trivialif/JSMergeElseIfIntention.java | 2 +- .../intention/trivialif/JSMergeIfAndIntention.java | 2 +- .../intention/trivialif/JSMergeIfOrIntention.java | 2 +- .../intention/trivialif/JSMergeParallelIfsIntention.java | 2 +- .../trivialif/JSRemoveRedundantElseIntention.java | 3 +-- .../trivialif/JSReplaceIfWithConditionalIntention.java | 3 +-- .../intention/trivialif/JSSimplifyIfElseIntention.java | 2 +- .../intention/trivialif/JSSplitElseIfIntention.java | 2 +- .../intention/trivialif/JSSplitIfAndIntention.java | 3 +-- .../intention/trivialif/JSSplitIfOrIntention.java | 2 +- .../intellij/idea/lang/javascript/psiutil/BoolUtils.java | 3 +-- .../idea/lang/javascript/psiutil/ControlFlowUtils.java | 4 ++-- .../intellij/idea/lang/javascript/psiutil/ErrorUtil.java | 3 +-- .../idea/lang/javascript/psiutil/ExpressionUtil.java | 4 ++-- .../idea/lang/javascript/psiutil/FindReferenceUtil.java | 4 ++-- .../idea/lang/javascript/psiutil/JSElementFactory.java | 2 +- .../idea/lang/javascript/psiutil/RecursionUtil.java | 3 +-- .../intellij/idea/lang/javascript/psiutil/TreeUtil.java | 4 ++-- .../idea/lang/javascript/psiutil/VariableAccessUtil.java | 2 +- .../java/consulo/actionscript/ActionScriptFileType.java | 4 ++-- .../consulo/actionscript/ActionScriptFileTypeFactory.java | 3 +-- .../actionscript/lang/ActionScriptLanguageVersion.java | 2 +- .../ecmascript/codeInsight/EcmaScript6QuickFixFactory.java | 3 +-- .../completion/EcmaScript6KeywordCompletionExtender.java | 3 +-- .../ecmascript/lang/BaseEcmaScriptJavaScriptVersion.java | 2 +- .../ecmascript/lang/EcmaScript10JavaScriptVersion.java | 2 +- .../ecmascript/lang/EcmaScript11JavaScriptVersion.java | 3 +-- .../ecmascript/lang/EcmaScript12JavaScriptVersion.java | 2 +- .../ecmascript/lang/EcmaScript6JavaScriptVersion.java | 2 +- .../ecmascript/lang/EcmaScript7JavaScriptVersion.java | 2 +- .../ecmascript/lang/EcmaScript8JavaScriptVersion.java | 3 +-- .../ecmascript/lang/EcmaScript9JavaScriptVersion.java | 3 +-- .../javascript/ecmascript/lang/EcmaScriptFileType.java | 4 ++-- .../ecmascript/lang/EcmaScriptFileTypeFactory.java | 2 +- .../ecmascript/lang/parsing/EcmaScriptParser.java | 2 +- .../ecmascript/lang/parsing/EcmaScriptParsingContext.java | 2 +- .../lang/parsing/EcmaScriptStatementParsing.java | 2 +- .../javascript/ecmascript/psi/ES6ImportedBinding.java | 3 +-- .../consulo/javascript/ecmascript/psi/ES6NamedImports.java | 2 +- .../psi/impl/ES6ExportDefaultAssignmentImpl.java | 4 ++-- .../ecmascript/psi/impl/ES6ImportDeclarationImpl.java | 2 +- .../ecmascript/psi/impl/ES6ImportSpecifierImpl.java | 4 ++-- .../ecmascript/psi/impl/ES6ImportedBindingImpl.java | 4 ++-- .../ecmascript/psi/impl/ES6NamedImportsImpl.java | 2 +- .../psi/impl/resolve/EcmaScript6ResolveHelper.java | 4 ++-- .../jsx/codeInsight/JSXTagTreeHighlightingPassFactory.java | 2 +- .../jsx/fileTemplate/JSXCreateFromTemplateHandler.java | 3 +-- .../java/consulo/javascript/jsx/language/JSXFileType.java | 4 ++-- .../javascript/jsx/language/JSXFileTypeFactory.java | 2 +- .../javascript/jsx/language/JSXJavaScriptVersion.java | 3 +-- .../jsx/language/psi/impl/JSXmlTagReference.java | 4 ++-- .../language/psi/impl/JSXmlTagReferenceContributor.java | 2 +- .../ecmascript4/lang/EcmaScript4JavaScriptVersion.java | 3 +-- .../ecmascript4/lang/parsing/EcmaScript4Parser.java | 2 +- .../lang/parsing/EcmaScript4ParsingContext.java | 3 +-- .../lang/parsing/EcmaScript4StatementParsing.java | 2 +- .../javascript16/lang/JavaScript16LanguageVersion.java | 2 +- .../javascript17/lang/JavaScript17LanguageVersion.java | 2 +- .../javascript18/lang/JavaScript185LanguageVersion.java | 2 +- .../javascript18/lang/JavaScript18LanguageVersion.java | 2 +- .../src/main/java/consulo/json/JsonFileType.java | 4 ++-- .../src/main/java/consulo/json/JsonFileTypeFactory.java | 3 +-- .../src/main/java/consulo/json/jom/JomFileDescriptor.java | 2 +- .../src/main/java/consulo/json/jom/JomFileElement.java | 2 +- .../java/consulo/json/jom/JomIconDescriptorUpdater.java | 3 +-- .../src/main/java/consulo/json/jom/JomManager.java | 4 ++-- .../json/jom/JomModeAsJsonFileDescriptorProvider.java | 4 ++-- .../src/main/java/consulo/json/jom/JomUtil.java | 4 ++-- .../consulo/json/jom/proxy/JomProxyInvocationHandler.java | 4 ++-- .../java/consulo/json/jom/proxy/JomValueConverter.java | 4 ++-- .../java/consulo/json/jom/proxy/impl/JomBooleanValue.java | 4 ++-- .../consulo/json/jom/proxy/impl/JomCollectionValue.java | 2 +- .../java/consulo/json/jom/proxy/impl/JomMapConverter.java | 2 +- .../json/jom/proxy/impl/JomNullableNumberValue.java | 2 +- .../consulo/json/jom/proxy/impl/JomStringConverter.java | 2 +- .../main/java/consulo/json/lang/JsonJavaScriptParser.java | 2 +- .../main/java/consulo/json/lang/JsonJavaScriptVersion.java | 5 +++-- .../src/main/java/consulo/json/lang/JsonQuoteHandler.java | 2 +- .../json/validation/JsonFileDescriptorProvider.java | 2 +- .../json/validation/JsonFileDescriptorProviders.java | 3 +-- .../src/main/java/consulo/json/validation/NativeArray.java | 2 +- .../validation/completion/JsonCompletionContributor.java | 2 +- .../DescriptionByAnotherPsiElementEditorNotification.java | 4 ++-- ...criptionByAnotherPsiElementJsonDescriptionProvider.java | 2 +- .../DescriptionByAnotherPsiElementProvider.java | 4 ++-- .../DescriptionByAnotherPsiElementRegistrar.java | 2 +- .../DescriptionByAnotherPsiElementService.java | 4 ++-- .../json/validation/descriptor/JsonObjectDescriptor.java | 7 ++----- .../json/validation/descriptor/JsonPropertyDescriptor.java | 4 ++-- .../inspections/PropertyValidationInspection.java | 4 ++-- .../psi/reference/JsonPropertyNameReference.java | 3 +-- .../psi/reference/JsonPropertyNameReferenceProvider.java | 5 ++--- .../main/java/consulo/typescript/TypeScriptFileType.java | 4 ++-- .../java/consulo/typescript/TypeScriptFileTypeFactory.java | 3 +-- .../typescript/version/TypeScriptLanguageVersion.java | 2 +- .../java/com/intellij/javascript/JSClassNameMacro.java | 2 +- .../javascript/JSImplementationTextSelectioner.java | 2 +- .../java/com/intellij/javascript/JSMethodNameMacro.java | 2 +- .../com/intellij/javascript/JSParameterInfoHandler.java | 4 ++-- .../manipulators/JSAttributeNameValuePairManipulator.java | 2 +- .../javascript/manipulators/JSDocTagManipulator.java | 3 +-- .../manipulators/JSIncludeDirectiveManipulator.java | 2 +- .../lang/javascript/impl/JSSmartEnterProcessor.java | 2 +- .../lang/javascript/impl/JavaScriptCodeContextType.java | 3 +-- .../javascript/impl/JavaScriptTargetElementUtilEx.java | 3 +-- .../intellij/lang/javascript/impl/JavascriptCommenter.java | 4 ++-- .../impl/findUsages/JavaScriptClassGroupRuleProvider.java | 3 +-- .../impl/findUsages/JavaScriptFindUsagesProvider.java | 2 +- .../findUsages/JavaScriptFunctionGroupRuleProvider.java | 3 +-- .../impl/findUsages/JavaScriptGroupRuleProviderBase.java | 5 ++--- .../flex/AddImportECMAScriptClassOrFunctionAction.java | 2 +- .../javascript/impl/flex/ECMAScriptImportOptimizer.java | 2 +- .../intellij/lang/javascript/impl/flex/ImportUtils.java | 4 ++-- .../javascript/impl/flex/importer/AS3InterfaceDumper.java | 4 ++-- .../impl/flex/importer/AS3InterfaceStubDumper.java | 4 ++-- .../intellij/lang/javascript/impl/flex/importer/Abc.java | 2 +- .../lang/javascript/impl/flex/importer/AbcDumper.java | 4 ++-- .../impl/flex/importer/AbstractDumpProcessor.java | 3 +-- .../lang/javascript/impl/flex/importer/ByteBuffer.java | 2 +- .../flex/importer/FlexByteCodeInformationProcessor.java | 4 ++-- .../lang/javascript/impl/flex/importer/FlexImporter.java | 3 +-- .../lang/javascript/impl/flex/importer/MemberInfo.java | 2 +- .../javascript/impl/folding/JavaScriptFoldingBuilder.java | 2 +- .../lang/javascript/impl/formatter/JSCodeStylePanel.java | 2 +- .../impl/formatter/JSCodeStyleSettingsProvider.java | 5 ++--- .../lang/javascript/impl/formatter/JSFormattingModel.java | 3 +-- .../impl/formatter/JavascriptFormattingModelBuilder.java | 2 +- .../lang/javascript/impl/formatter/blocks/JSBlock.java | 4 ++-- .../impl/formatter/blocks/JSDocCommentBlock.java | 4 ++-- .../javascript/impl/formatter/blocks/SubBlockVisitor.java | 2 +- .../javascript/impl/generation/BaseJSGenerateAction.java | 3 +-- .../javascript/impl/generation/BaseJSGenerateHandler.java | 2 +- .../impl/generation/JavaScriptGenerateAccessorHandler.java | 2 +- .../lang/javascript/impl/highlighting/JSBraceMatcher.java | 4 ++-- .../impl/highlighting/JavaScriptColorsAndFontsPage.java | 2 +- .../impl/highlighting/JavaScriptHighlightVisitor.java | 4 ++-- .../highlighting/JavaScriptHighlightVisitorFactory.java | 2 +- .../impl/highlighting/JavaScriptLineMarkerProvider.java | 4 ++-- .../impl/inspections/CreateClassOrInterfaceAction.java | 2 +- .../impl/inspections/JSDeprecatedSymbolsInspection.java | 2 +- .../inspections/JSDuplicatedDeclarationInspection.java | 2 +- .../lang/javascript/impl/inspections/JSInspection.java | 4 ++-- .../impl/inspections/JSUndeclaredVariableInspection.java | 2 +- .../impl/inspections/JSUnresolvedFunctionInspection.java | 5 +++-- .../impl/inspections/JSUnresolvedVariableInspection.java | 2 +- .../impl/inspections/JSUntypedDeclarationInspection.java | 2 +- .../impl/inspections/JSUnusedLocalSymbolsInspection.java | 2 +- .../impl/navigation/JavaScriptGotoSuperHandler.java | 3 +-- .../impl/navigation/JavaScriptSymbolContributor.java | 4 ++-- .../impl/refactoring/BasicJavascriptNamesValidator.java | 3 +-- .../impl/refactoring/JSBaseIntroduceHandler.java | 5 +++-- .../refactoring/JavascriptRefactoringSupportProvider.java | 5 ++--- .../extractMethod/JSExtractFunctionHandler.java | 2 +- .../javascript/impl/search/JSDeclarationRangeHandler.java | 2 +- .../impl/search/JSDefinitionsSearchExecutor.java | 3 +-- .../impl/search/JSGotoTargetRendererProvider.java | 3 +-- .../impl/structureView/JSStructureItemPresentation.java | 3 +-- .../impl/structureView/JSStructureViewBuilderFactory.java | 3 +-- .../impl/structureView/JSStructureViewElement.java | 2 +- .../impl/structureView/JSStructureViewModel.java | 2 +- .../lang/javascript/impl/structureView/JSSuperGroup.java | 3 +-- .../lang/javascript/impl/structureView/JSSuperGrouper.java | 3 +-- .../impl/surroundWith/JSExpressionSurroundDescriptor.java | 3 +-- .../impl/surroundWith/JSStatementSurrounder.java | 4 ++-- .../impl/surroundWith/JSStatementsSurroundDescriptor.java | 2 +- .../impl/surroundWith/JSWithParenthesesSurrounder.java | 4 ++-- .../impl/surroundWith/JSWithTryCatchFinallySurrounder.java | 3 +-- .../javascript/impl/validation/BaseCreateMethodsFix.java | 2 +- .../javascript/impl/validation/ImplementMethodsFix.java | 3 +-- .../impl/validation/ImplementedMethodProcessor.java | 2 +- .../javascript/impl/validation/JSAnnotatingVisitor.java | 2 +- .../javascript/impl/validation/JSAnnotatorFactory.java | 4 ++-- .../javascript/impl/JavaScriptIconDescriptorUpdater.java | 4 ++-- .../impl/copyright/UpdateJavaScriptFileCopyright.java | 3 +-- .../copyright/UpdateJavaScriptFileCopyrightProvider.java | 2 +- .../findUsages/JavaScriptFindUsagesHandlerFactory.java | 4 ++-- .../impl/formatter/JavaScriptCodeStyleConfigurable.java | 2 +- .../JavaScriptLanguageCodeStyleSettingsProvider.java | 2 +- .../impl/html/JavaScriptHtmlScriptContentProvider.java | 2 +- .../impl/ide/actions/JavaScriptCreateFileAction.java | 3 +-- .../ide/actions/JavaScriptFileTemplateContributor.java | 3 +-- .../completion/JavaScriptKeywordCompletionContributor.java | 2 +- .../ide/completion/JavaScriptSkipAutopopupInStrings.java | 2 +- .../navigationToolbar/JavaScriptNavBarModelExtension.java | 4 ++-- .../javascript/impl/lang/JavaScriptFileTypeFactory.java | 2 +- .../impl/lang/JavaScriptLanguageVersionPusher.java | 5 +++-- .../impl/lang/JavaScriptLanguageVersionResolver.java | 4 ++-- .../javascript/impl/lang/JavaScriptParsingDefinition.java | 3 +-- .../impl/lang/navigation/JavaScriptClassContributor.java | 5 +++-- .../javascript/impl/lang/psi/JavaScriptSimpleType.java | 4 ++-- .../reference/DefaultJSPropertyNameReferenceProvider.java | 4 ++-- .../regexp/impl/JavaScriptRegExpLiteralLanguageHost.java | 4 ++-- .../regexp/impl/JavaScriptRegexpMultiHostInjector.java | 2 +- .../module/extension/ClientJavaScriptModuleExtension.java | 4 ++-- .../extension/ClientJavaScriptModuleExtensionPanel.java | 2 +- .../extension/ClientJavaScriptModuleExtensionProvider.java | 2 +- .../extension/ClientJavaScriptMutableModuleExtension.java | 4 ++-- .../sdk/ClientJavaScriptPredefinedBundlesProvider.java | 2 +- .../client/module/sdk/ClientJavaScriptSdkType.java | 4 ++-- 590 files changed, 789 insertions(+), 908 deletions(-) diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSAttribute.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSAttribute.java index 9d3baef7..90045a16 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSAttribute.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSAttribute.java @@ -16,12 +16,11 @@ package com.intellij.lang.javascript.psi; -import javax.annotation.Nonnull; - import com.intellij.lang.javascript.psi.stubs.JSAttributeStub; import consulo.language.psi.PsiNamedElement; import consulo.language.psi.StubBasedPsiElement; import consulo.util.collection.ArrayFactory; +import jakarta.annotation.Nonnull; /** * @author Maxim.Mossienko diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSAttributeList.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSAttributeList.java index acfcd11e..554757f6 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSAttributeList.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSAttributeList.java @@ -16,12 +16,12 @@ package com.intellij.lang.javascript.psi; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; import com.intellij.lang.javascript.psi.stubs.JSAttributeListStub; import consulo.language.psi.PsiElement; import consulo.language.psi.StubBasedPsiElement; +import jakarta.annotation.Nonnull; /** * @author Maxim.Mossienko diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSAttributeListOwner.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSAttributeListOwner.java index f20c33d5..297c7fd0 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSAttributeListOwner.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSAttributeListOwner.java @@ -18,7 +18,7 @@ import consulo.language.psi.PsiElement; -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; /** * @by Maxim.Mossienko diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSAttributeNameValuePair.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSAttributeNameValuePair.java index 426f6c43..a1f0998e 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSAttributeNameValuePair.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSAttributeNameValuePair.java @@ -16,7 +16,7 @@ package com.intellij.lang.javascript.psi; -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; import com.intellij.lang.javascript.psi.stubs.JSAttributeNameValuePairStub; import consulo.language.psi.PsiNamedElement; import consulo.language.psi.StubBasedPsiElement; diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSBinaryExpression.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSBinaryExpression.java index b88ac07b..a4866968 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSBinaryExpression.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSBinaryExpression.java @@ -19,8 +19,7 @@ import consulo.annotation.access.RequiredReadAction; import consulo.language.ast.IElementType; import consulo.language.psi.PsiElement; - -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; /** * Created by IntelliJ IDEA. diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSClass.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSClass.java index 65524958..3fc3b0ef 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSClass.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSClass.java @@ -16,7 +16,7 @@ package com.intellij.lang.javascript.psi; -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; import com.intellij.lang.javascript.psi.stubs.JSClassStub; import consulo.language.psi.StubBasedPsiElement; import consulo.navigation.Navigatable; diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSClassExpression.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSClassExpression.java index edde7c95..85f83eb3 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSClassExpression.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSClassExpression.java @@ -2,7 +2,7 @@ import consulo.annotation.access.RequiredReadAction; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSDestructuringElement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSDestructuringElement.java index 21d7556e..b58f43ee 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSDestructuringElement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSDestructuringElement.java @@ -1,9 +1,9 @@ package com.intellij.lang.javascript.psi; import consulo.annotation.access.RequiredReadAction; +import jakarta.annotation.Nonnull; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSDestructuringObject.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSDestructuringObject.java index de354952..5eb47f73 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSDestructuringObject.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSDestructuringObject.java @@ -2,7 +2,7 @@ import consulo.annotation.access.RequiredReadAction; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSDestructuringParameter.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSDestructuringParameter.java index 078d98d0..966345b4 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSDestructuringParameter.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSDestructuringParameter.java @@ -1,8 +1,7 @@ package com.intellij.lang.javascript.psi; import consulo.annotation.access.RequiredReadAction; - -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSDestructuringShorthandedProperty.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSDestructuringShorthandedProperty.java index 4af569e5..60c491f7 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSDestructuringShorthandedProperty.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSDestructuringShorthandedProperty.java @@ -1,8 +1,7 @@ package com.intellij.lang.javascript.psi; import consulo.annotation.access.RequiredReadAction; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSDocTag.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSDocTag.java index 49983e35..d80a0c93 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSDocTag.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSDocTag.java @@ -16,7 +16,7 @@ package com.intellij.lang.javascript.psi; -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; import consulo.language.psi.PsiNamedElement; public interface JSDocTag extends PsiNamedElement, JSElement diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSExpression.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSExpression.java index b327d842..555f08d6 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSExpression.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSExpression.java @@ -20,7 +20,7 @@ import consulo.annotation.access.RequiredReadAction; import consulo.javascript.language.psi.JavaScriptType; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author max diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSExpressionStatement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSExpressionStatement.java index 742869aa..ed188cac 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSExpressionStatement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSExpressionStatement.java @@ -17,8 +17,7 @@ package com.intellij.lang.javascript.psi; import consulo.annotation.access.RequiredReadAction; - -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; /** * User: max diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSFunction.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSFunction.java index efc6ae17..87a14d0c 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSFunction.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSFunction.java @@ -21,8 +21,8 @@ import consulo.javascript.language.psi.JavaScriptTypeElement; import consulo.util.collection.ArrayFactory; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; /** * @author max diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSFunctionExpression.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSFunctionExpression.java index 642cb1e6..ddb02c62 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSFunctionExpression.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSFunctionExpression.java @@ -16,7 +16,7 @@ package com.intellij.lang.javascript.psi; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author max diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSNamespaceDeclaration.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSNamespaceDeclaration.java index febe96ef..21bd6091 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSNamespaceDeclaration.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSNamespaceDeclaration.java @@ -16,9 +16,9 @@ package com.intellij.lang.javascript.psi; -import javax.annotation.Nullable; import com.intellij.lang.javascript.psi.stubs.JSNamespaceDeclarationStub; import consulo.language.psi.StubBasedPsiElement; +import jakarta.annotation.Nullable; /** * @by Maxim.Mossienko diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSParameter.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSParameter.java index 867f248f..cdb3b272 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSParameter.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSParameter.java @@ -19,8 +19,7 @@ import consulo.annotation.access.RequiredReadAction; import consulo.language.psi.PsiElement; import consulo.util.collection.ArrayFactory; - -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; /** * User: max diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSPostfixExpression.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSPostfixExpression.java index 7ca495e2..ddc386b6 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSPostfixExpression.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSPostfixExpression.java @@ -16,7 +16,7 @@ package com.intellij.lang.javascript.psi; -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; import consulo.language.ast.IElementType; /** diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSPrefixExpression.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSPrefixExpression.java index 16449e30..2c3199d2 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSPrefixExpression.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSPrefixExpression.java @@ -16,10 +16,10 @@ package com.intellij.lang.javascript.psi; -import javax.annotation.Nullable; import consulo.annotation.access.RequiredReadAction; import consulo.language.ast.IElementType; import consulo.language.psi.PsiElement; +import jakarta.annotation.Nullable; /** * Created by IntelliJ IDEA. diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSProperty.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSProperty.java index 0081bfe1..071ecb8f 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSProperty.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSProperty.java @@ -17,13 +17,13 @@ package com.intellij.lang.javascript.psi; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; import consulo.annotation.access.RequiredReadAction; import consulo.javascript.language.psi.JavaScriptType; import consulo.javascript.psi.JSComputedName; import consulo.language.psi.PsiElement; +import jakarta.annotation.Nonnull; /** * @author max diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSReferenceExpression.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSReferenceExpression.java index 8915e3ba..ecfc17ba 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSReferenceExpression.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSReferenceExpression.java @@ -19,7 +19,7 @@ import consulo.language.psi.PsiElement; import consulo.language.psi.PsiPolyVariantReference; -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; /** * @author max diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSReferenceList.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSReferenceList.java index 9a904362..3b9c68b7 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSReferenceList.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSReferenceList.java @@ -16,7 +16,7 @@ package com.intellij.lang.javascript.psi; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import consulo.annotation.access.RequiredReadAction; import com.intellij.lang.javascript.psi.stubs.JSReferenceListStub; diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSTryStatement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSTryStatement.java index cfafa152..0e0300a5 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSTryStatement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSTryStatement.java @@ -16,8 +16,8 @@ package com.intellij.lang.javascript.psi; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; /** * Created by IntelliJ IDEA. diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSVarStatement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSVarStatement.java index 9959741c..a74fc00e 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSVarStatement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSVarStatement.java @@ -19,8 +19,7 @@ import com.intellij.lang.javascript.psi.stubs.JSVarStatementStub; import consulo.annotation.access.RequiredReadAction; import consulo.language.psi.StubBasedPsiElement; - -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; /** * Created by IntelliJ IDEA. diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSVariable.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSVariable.java index 6f26c7ec..af6ea26e 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSVariable.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSVariable.java @@ -20,9 +20,9 @@ import consulo.javascript.language.psi.JavaScriptType; import consulo.javascript.language.psi.JavaScriptTypeElement; import consulo.language.util.IncorrectOperationException; +import jakarta.annotation.Nonnull; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; /** * @author max diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSYieldStatement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSYieldStatement.java index b0f6120b..572f2a7f 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSYieldStatement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSYieldStatement.java @@ -16,7 +16,7 @@ package com.intellij.lang.javascript.psi; -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; /** * User: max diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSAttributeNameValuePairStub.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSAttributeNameValuePairStub.java index ac09849b..d757cd9e 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSAttributeNameValuePairStub.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSAttributeNameValuePairStub.java @@ -16,7 +16,7 @@ package com.intellij.lang.javascript.psi.stubs; -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; import com.intellij.lang.javascript.psi.JSAttributeNameValuePair; import consulo.language.psi.stub.StubElement; diff --git a/base-api/src/main/java/consulo/javascript/ide/completion/JavaScriptKeywordCompletionExtender.java b/base-api/src/main/java/consulo/javascript/ide/completion/JavaScriptKeywordCompletionExtender.java index 550f83a7..afb75a91 100644 --- a/base-api/src/main/java/consulo/javascript/ide/completion/JavaScriptKeywordCompletionExtender.java +++ b/base-api/src/main/java/consulo/javascript/ide/completion/JavaScriptKeywordCompletionExtender.java @@ -7,7 +7,7 @@ import consulo.language.editor.completion.CompletionResultSet; import consulo.language.util.ProcessingContext; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/base-api/src/main/java/consulo/javascript/index/JavaScriptIndexer.java b/base-api/src/main/java/consulo/javascript/index/JavaScriptIndexer.java index cd99bccb..cc8cf1ed 100644 --- a/base-api/src/main/java/consulo/javascript/index/JavaScriptIndexer.java +++ b/base-api/src/main/java/consulo/javascript/index/JavaScriptIndexer.java @@ -5,8 +5,8 @@ import consulo.component.extension.ExtensionPointName; import consulo.javascript.psi.stubs.JSFileStub; import consulo.language.psi.stub.IndexSink; +import jakarta.annotation.Nonnull; -import javax.annotation.Nonnull; /** * @author VISTALL * @since 19.07.2015 diff --git a/base-api/src/main/java/consulo/javascript/language/JavaScriptFeature.java b/base-api/src/main/java/consulo/javascript/language/JavaScriptFeature.java index d731ae7e..185ebb03 100644 --- a/base-api/src/main/java/consulo/javascript/language/JavaScriptFeature.java +++ b/base-api/src/main/java/consulo/javascript/language/JavaScriptFeature.java @@ -16,7 +16,7 @@ package consulo.javascript.language; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/base-api/src/main/java/consulo/javascript/language/JavaScriptFileType.java b/base-api/src/main/java/consulo/javascript/language/JavaScriptFileType.java index af2fa996..18a0eec0 100644 --- a/base-api/src/main/java/consulo/javascript/language/JavaScriptFileType.java +++ b/base-api/src/main/java/consulo/javascript/language/JavaScriptFileType.java @@ -28,8 +28,8 @@ import consulo.ui.image.Image; import consulo.virtualFileSystem.VirtualFile; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; /** * User: max diff --git a/base-api/src/main/java/consulo/javascript/language/JavaScriptFileTypeWithVersion.java b/base-api/src/main/java/consulo/javascript/language/JavaScriptFileTypeWithVersion.java index 69966243..ad558768 100644 --- a/base-api/src/main/java/consulo/javascript/language/JavaScriptFileTypeWithVersion.java +++ b/base-api/src/main/java/consulo/javascript/language/JavaScriptFileTypeWithVersion.java @@ -21,8 +21,8 @@ import consulo.module.Module; import consulo.virtualFileSystem.VirtualFile; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/base-api/src/main/java/consulo/javascript/language/JavaScriptLanguage.java b/base-api/src/main/java/consulo/javascript/language/JavaScriptLanguage.java index 361f758b..e92a7c2b 100644 --- a/base-api/src/main/java/consulo/javascript/language/JavaScriptLanguage.java +++ b/base-api/src/main/java/consulo/javascript/language/JavaScriptLanguage.java @@ -20,8 +20,8 @@ import consulo.language.file.LanguageFileType; import consulo.language.version.LanguageVersion; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; import java.util.HashMap; import java.util.Map; diff --git a/base-api/src/main/java/consulo/javascript/language/JavaScriptLanguageVersion.java b/base-api/src/main/java/consulo/javascript/language/JavaScriptLanguageVersion.java index 2306826a..bc3308bb 100644 --- a/base-api/src/main/java/consulo/javascript/language/JavaScriptLanguageVersion.java +++ b/base-api/src/main/java/consulo/javascript/language/JavaScriptLanguageVersion.java @@ -1,11 +1,10 @@ package consulo.javascript.language; -import consulo.javascript.language.JavaScriptFeature; import consulo.language.Language; import consulo.language.version.LanguageVersion; import consulo.language.version.LanguageVersionWithParsing; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import java.util.Set; /** diff --git a/base-api/src/main/java/consulo/javascript/language/JavaScriptVersionUtil.java b/base-api/src/main/java/consulo/javascript/language/JavaScriptVersionUtil.java index 737c24a0..c053e592 100644 --- a/base-api/src/main/java/consulo/javascript/language/JavaScriptVersionUtil.java +++ b/base-api/src/main/java/consulo/javascript/language/JavaScriptVersionUtil.java @@ -19,7 +19,7 @@ import consulo.language.psi.PsiElement; import consulo.language.version.LanguageVersion; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import java.util.Collections; import java.util.Set; diff --git a/base-api/src/main/java/consulo/javascript/language/StandardJavaScriptVersions.java b/base-api/src/main/java/consulo/javascript/language/StandardJavaScriptVersions.java index 1c89344b..8edd1f39 100644 --- a/base-api/src/main/java/consulo/javascript/language/StandardJavaScriptVersions.java +++ b/base-api/src/main/java/consulo/javascript/language/StandardJavaScriptVersions.java @@ -20,8 +20,8 @@ import consulo.annotation.component.ServiceAPI; import consulo.ide.ServiceManager; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; import java.util.List; /** diff --git a/base-api/src/main/java/consulo/javascript/language/psi/JavaScriptPrimitiveType.java b/base-api/src/main/java/consulo/javascript/language/psi/JavaScriptPrimitiveType.java index 001cf1d8..3fed4841 100644 --- a/base-api/src/main/java/consulo/javascript/language/psi/JavaScriptPrimitiveType.java +++ b/base-api/src/main/java/consulo/javascript/language/psi/JavaScriptPrimitiveType.java @@ -18,9 +18,8 @@ import consulo.annotation.access.RequiredReadAction; import consulo.language.psi.PsiElement; - -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/base-api/src/main/java/consulo/javascript/language/psi/JavaScriptType.java b/base-api/src/main/java/consulo/javascript/language/psi/JavaScriptType.java index 874d4897..a729fdc2 100644 --- a/base-api/src/main/java/consulo/javascript/language/psi/JavaScriptType.java +++ b/base-api/src/main/java/consulo/javascript/language/psi/JavaScriptType.java @@ -19,8 +19,8 @@ import consulo.annotation.access.RequiredReadAction; import consulo.language.psi.PsiElement; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/base-api/src/main/java/consulo/javascript/language/psi/JavaScriptTypeElement.java b/base-api/src/main/java/consulo/javascript/language/psi/JavaScriptTypeElement.java index 4a14b3e1..bc26717d 100644 --- a/base-api/src/main/java/consulo/javascript/language/psi/JavaScriptTypeElement.java +++ b/base-api/src/main/java/consulo/javascript/language/psi/JavaScriptTypeElement.java @@ -16,9 +16,8 @@ package consulo.javascript.language.psi; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import com.intellij.lang.javascript.psi.JSElement; -import consulo.javascript.language.psi.JavaScriptType; /** * @author VISTALL diff --git a/base-api/src/main/java/consulo/javascript/language/psi/stub/JSImplementedInterfacesIndex.java b/base-api/src/main/java/consulo/javascript/language/psi/stub/JSImplementedInterfacesIndex.java index e28eee01..0c17c51d 100644 --- a/base-api/src/main/java/consulo/javascript/language/psi/stub/JSImplementedInterfacesIndex.java +++ b/base-api/src/main/java/consulo/javascript/language/psi/stub/JSImplementedInterfacesIndex.java @@ -21,7 +21,7 @@ import consulo.language.psi.stub.StringStubIndexExtension; import consulo.language.psi.stub.StubIndexKey; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class JSImplementedInterfacesIndex extends StringStubIndexExtension diff --git a/base-api/src/main/java/consulo/javascript/language/psi/stub/JSNameIndex.java b/base-api/src/main/java/consulo/javascript/language/psi/stub/JSNameIndex.java index bc1fe0b8..9facfe99 100644 --- a/base-api/src/main/java/consulo/javascript/language/psi/stub/JSNameIndex.java +++ b/base-api/src/main/java/consulo/javascript/language/psi/stub/JSNameIndex.java @@ -24,7 +24,7 @@ import consulo.language.psi.stub.StringStubIndexExtension; import consulo.language.psi.stub.StubIndexKey; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class JSNameIndex extends StringStubIndexExtension diff --git a/base-api/src/main/java/consulo/javascript/language/psi/stub/JSQualifiedElementIndex.java b/base-api/src/main/java/consulo/javascript/language/psi/stub/JSQualifiedElementIndex.java index 8e5b39c3..dc609ec2 100644 --- a/base-api/src/main/java/consulo/javascript/language/psi/stub/JSQualifiedElementIndex.java +++ b/base-api/src/main/java/consulo/javascript/language/psi/stub/JSQualifiedElementIndex.java @@ -23,8 +23,7 @@ import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.stub.StringStubIndexExtension; import consulo.language.psi.stub.StubIndexKey; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class JSQualifiedElementIndex extends StringStubIndexExtension diff --git a/base-api/src/main/java/consulo/javascript/language/psi/stub/JSSuperClassIndex.java b/base-api/src/main/java/consulo/javascript/language/psi/stub/JSSuperClassIndex.java index 560068e4..81ef425f 100644 --- a/base-api/src/main/java/consulo/javascript/language/psi/stub/JSSuperClassIndex.java +++ b/base-api/src/main/java/consulo/javascript/language/psi/stub/JSSuperClassIndex.java @@ -20,8 +20,7 @@ import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.stub.StringStubIndexExtension; import consulo.language.psi.stub.StubIndexKey; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class JSSuperClassIndex extends StringStubIndexExtension diff --git a/base-api/src/main/java/consulo/javascript/module/extension/JavaScriptModuleExtension.java b/base-api/src/main/java/consulo/javascript/module/extension/JavaScriptModuleExtension.java index c4a9e02c..472eb47c 100644 --- a/base-api/src/main/java/consulo/javascript/module/extension/JavaScriptModuleExtension.java +++ b/base-api/src/main/java/consulo/javascript/module/extension/JavaScriptModuleExtension.java @@ -2,8 +2,7 @@ import consulo.language.version.LanguageVersion; import consulo.module.extension.ModuleExtensionWithSdk; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/base-api/src/main/java/consulo/javascript/module/extension/JavaScriptMutableModuleExtension.java b/base-api/src/main/java/consulo/javascript/module/extension/JavaScriptMutableModuleExtension.java index 1043a134..0a1d7ab7 100644 --- a/base-api/src/main/java/consulo/javascript/module/extension/JavaScriptMutableModuleExtension.java +++ b/base-api/src/main/java/consulo/javascript/module/extension/JavaScriptMutableModuleExtension.java @@ -18,8 +18,7 @@ import consulo.language.version.LanguageVersion; import consulo.module.extension.MutableModuleExtensionWithSdk; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/base-api/src/main/java/consulo/javascript/psi/JSComputedName.java b/base-api/src/main/java/consulo/javascript/psi/JSComputedName.java index cce7278f..c15004d5 100644 --- a/base-api/src/main/java/consulo/javascript/psi/JSComputedName.java +++ b/base-api/src/main/java/consulo/javascript/psi/JSComputedName.java @@ -16,7 +16,7 @@ package consulo.javascript.psi; -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; import com.intellij.lang.javascript.psi.JSElement; import com.intellij.lang.javascript.psi.JSExpression; diff --git a/base-api/src/main/java/consulo/javascript/psi/JSSimpleLiteralExpression.java b/base-api/src/main/java/consulo/javascript/psi/JSSimpleLiteralExpression.java index 6027465a..886d3030 100644 --- a/base-api/src/main/java/consulo/javascript/psi/JSSimpleLiteralExpression.java +++ b/base-api/src/main/java/consulo/javascript/psi/JSSimpleLiteralExpression.java @@ -20,8 +20,7 @@ import com.intellij.lang.javascript.psi.JSLiteralExpression; import consulo.annotation.access.RequiredReadAction; import consulo.language.ast.IElementType; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/base-api/src/main/java/consulo/javascript/psi/impl/reference/JSPropertyNameReferenceProvider.java b/base-api/src/main/java/consulo/javascript/psi/impl/reference/JSPropertyNameReferenceProvider.java index 2342e6c3..48763677 100644 --- a/base-api/src/main/java/consulo/javascript/psi/impl/reference/JSPropertyNameReferenceProvider.java +++ b/base-api/src/main/java/consulo/javascript/psi/impl/reference/JSPropertyNameReferenceProvider.java @@ -24,8 +24,8 @@ import consulo.component.extension.ExtensionPointName; import consulo.language.psi.PsiReference; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/base-api/src/main/java/consulo/javascript/psi/stubs/JSFileStub.java b/base-api/src/main/java/consulo/javascript/psi/stubs/JSFileStub.java index cb89a010..a20d02ef 100644 --- a/base-api/src/main/java/consulo/javascript/psi/stubs/JSFileStub.java +++ b/base-api/src/main/java/consulo/javascript/psi/stubs/JSFileStub.java @@ -3,7 +3,7 @@ import com.intellij.lang.javascript.psi.JSFile; import consulo.language.psi.stub.PsiFileStub; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/base-impl/src/main/java/com/intellij/javascript/documentation/JSDocumentationBuilder.java b/base-impl/src/main/java/com/intellij/javascript/documentation/JSDocumentationBuilder.java index c20f888c..31d14df2 100644 --- a/base-impl/src/main/java/com/intellij/javascript/documentation/JSDocumentationBuilder.java +++ b/base-impl/src/main/java/com/intellij/javascript/documentation/JSDocumentationBuilder.java @@ -28,10 +28,11 @@ import consulo.language.psi.PsiElement; import consulo.util.io.URLUtil; import consulo.util.lang.StringUtil; +import jakarta.annotation.Nullable; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; + import java.util.LinkedHashMap; import java.util.Map; import java.util.regex.Matcher; @@ -240,7 +241,7 @@ private void setResult(final StringBuilder builder) @Override public boolean onPatternMatch(@Nonnull MetaDocType metaDocType, @Nullable String matchName, @Nullable String matchValue, - @Nullable String remainingLineContent, @Nonnull final String line, final String patternMatched) + @Nullable String remainingLineContent, @Nonnull final String line, final String patternMatched) { if(metaDocType == MetaDocType.DEFAULT) { diff --git a/base-impl/src/main/java/com/intellij/javascript/documentation/JSDocumentationProcessor.java b/base-impl/src/main/java/com/intellij/javascript/documentation/JSDocumentationProcessor.java index 31b81845..1754dc4d 100644 --- a/base-impl/src/main/java/com/intellij/javascript/documentation/JSDocumentationProcessor.java +++ b/base-impl/src/main/java/com/intellij/javascript/documentation/JSDocumentationProcessor.java @@ -22,8 +22,8 @@ */ package com.intellij.javascript.documentation; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; public interface JSDocumentationProcessor { @@ -38,5 +38,5 @@ enum MetaDocType boolean onCommentLine(@Nonnull String line); boolean onPatternMatch(@Nonnull MetaDocType type, @Nullable String matchName, @Nullable final String matchValue, - @Nullable String remainingLineContent, @Nonnull final String line, final String patternMatched); + @Nullable String remainingLineContent, @Nonnull final String line, final String patternMatched); } \ No newline at end of file diff --git a/base-impl/src/main/java/com/intellij/javascript/documentation/JSDocumentationProvider.java b/base-impl/src/main/java/com/intellij/javascript/documentation/JSDocumentationProvider.java index 93502b77..e0e326a6 100644 --- a/base-impl/src/main/java/com/intellij/javascript/documentation/JSDocumentationProvider.java +++ b/base-impl/src/main/java/com/intellij/javascript/documentation/JSDocumentationProvider.java @@ -43,8 +43,8 @@ import consulo.xml.psi.xml.XmlToken; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; import java.io.File; import java.lang.reflect.Method; import java.util.Collections; diff --git a/base-impl/src/main/java/com/intellij/javascript/documentation/JSDocumentationUtils.java b/base-impl/src/main/java/com/intellij/javascript/documentation/JSDocumentationUtils.java index 7501dd11..53aabdd5 100644 --- a/base-impl/src/main/java/com/intellij/javascript/documentation/JSDocumentationUtils.java +++ b/base-impl/src/main/java/com/intellij/javascript/documentation/JSDocumentationUtils.java @@ -37,8 +37,8 @@ import consulo.util.lang.ref.Ref; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; import java.util.Enumeration; import java.util.HashMap; import java.util.Map; @@ -808,7 +808,7 @@ public boolean onPatternMatch(@Nonnull final MetaDocType type, @Nullable final S } public static void appendHyperLinkToElement(@Nullable PsiElement element, String elementName, final StringBuilder buffer, - final String presentableName, final @Nullable String presentableFileName) + final String presentableName, final @Nullable String presentableFileName) { final PsiFile containingFile = element != null ? element.getContainingFile() : null; String fileName = containingFile == null ? null : !JSResolveUtil.isPredefinedFile(containingFile) ? containingFile.getVirtualFile() diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/JSDocElementType.java b/base-impl/src/main/java/com/intellij/lang/javascript/JSDocElementType.java index 8015ee6b..356daab4 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/JSDocElementType.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/JSDocElementType.java @@ -16,8 +16,8 @@ package com.intellij.lang.javascript; +import jakarta.annotation.Nonnull; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; /** * @author yole diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/JSElementType.java b/base-impl/src/main/java/com/intellij/lang/javascript/JSElementType.java index ea634c51..cd76a525 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/JSElementType.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/JSElementType.java @@ -18,10 +18,9 @@ import consulo.javascript.language.JavaScriptLanguage; import consulo.language.ast.IElementType; +import jakarta.annotation.Nonnull; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; - /** * Created by IntelliJ IDEA. * User: max diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/JSElementTypes.java b/base-impl/src/main/java/com/intellij/lang/javascript/JSElementTypes.java index 35f62174..abbd0ca3 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/JSElementTypes.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/JSElementTypes.java @@ -47,7 +47,7 @@ import consulo.language.version.LanguageVersionUtil; import consulo.project.Project; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * User: max diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/JSLanguageInjector.java b/base-impl/src/main/java/com/intellij/lang/javascript/JSLanguageInjector.java index e5380a33..1d3dca07 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/JSLanguageInjector.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/JSLanguageInjector.java @@ -35,7 +35,7 @@ import consulo.xml.psi.xml.*; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author Maxim.Mossienko diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/JSStubElementTypes.java b/base-impl/src/main/java/com/intellij/lang/javascript/JSStubElementTypes.java index f0a5c917..5c388303 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/JSStubElementTypes.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/JSStubElementTypes.java @@ -8,7 +8,7 @@ import consulo.language.ast.ASTNode; import consulo.language.psi.PsiElement; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/JSTokenTypes.java b/base-impl/src/main/java/com/intellij/lang/javascript/JSTokenTypes.java index f5806ac3..04641b25 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/JSTokenTypes.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/JSTokenTypes.java @@ -38,10 +38,10 @@ import consulo.language.version.LanguageVersion; import consulo.project.Project; import consulo.xml.psi.xml.XmlTokenType; +import jakarta.annotation.Nonnull; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; /** * @author max, maxim.mossienko diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/JavaScriptStubElementHolder.java b/base-impl/src/main/java/com/intellij/lang/javascript/JavaScriptStubElementHolder.java index abd0989b..f0be63e1 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/JavaScriptStubElementHolder.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/JavaScriptStubElementHolder.java @@ -3,9 +3,9 @@ import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.stub.ObjectStubSerializerProvider; import consulo.language.psi.stub.StubElementTypeHolder; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.lang.reflect.Field; import java.util.List; diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/XmlAttributeValueJSInjector.java b/base-impl/src/main/java/com/intellij/lang/javascript/XmlAttributeValueJSInjector.java index 5a7d36a2..b4497929 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/XmlAttributeValueJSInjector.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/XmlAttributeValueJSInjector.java @@ -4,7 +4,7 @@ import consulo.language.psi.PsiElement; import consulo.xml.psi.xml.XmlAttributeValue; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/XmlTextJSInjector.java b/base-impl/src/main/java/com/intellij/lang/javascript/XmlTextJSInjector.java index af4f89e7..3fd70f3e 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/XmlTextJSInjector.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/XmlTextJSInjector.java @@ -4,7 +4,7 @@ import consulo.language.psi.PsiElement; import consulo.xml.psi.xml.XmlText; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/flex/FlexImportSupport.java b/base-impl/src/main/java/com/intellij/lang/javascript/flex/FlexImportSupport.java index 46c5fb29..8cd37ad2 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/flex/FlexImportSupport.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/flex/FlexImportSupport.java @@ -25,7 +25,7 @@ import consulo.util.collection.ArrayUtil; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import java.util.HashMap; import java.util.Map; diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/flex/JSResolveHelper.java b/base-impl/src/main/java/com/intellij/lang/javascript/flex/JSResolveHelper.java index 359d427e..09fb560f 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/flex/JSResolveHelper.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/flex/JSResolveHelper.java @@ -28,7 +28,7 @@ import consulo.project.Project; import consulo.virtualFileSystem.VirtualFile; -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; /** * @author yole diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/flex/XmlBackedJSClassImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/flex/XmlBackedJSClassImpl.java index 7cb917c0..5ad5266b 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/flex/XmlBackedJSClassImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/flex/XmlBackedJSClassImpl.java @@ -40,10 +40,11 @@ import consulo.virtualFileSystem.VirtualFile; import consulo.xml.psi.XmlRecursiveElementVisitor; import consulo.xml.psi.xml.*; +import jakarta.annotation.Nullable; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; + import java.util.*; /** diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/highlighting/JSHighlighter.java b/base-impl/src/main/java/com/intellij/lang/javascript/highlighting/JSHighlighter.java index 6e4a3863..519e5582 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/highlighting/JSHighlighter.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/highlighting/JSHighlighter.java @@ -26,8 +26,8 @@ import consulo.language.editor.highlight.SyntaxHighlighterBase; import consulo.language.lexer.Lexer; import consulo.xml.editor.XmlHighlighterColors; +import jakarta.annotation.Nonnull; -import javax.annotation.Nonnull; import java.util.HashMap; import java.util.Map; diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/index/JSItemPresentation.java b/base-impl/src/main/java/com/intellij/lang/javascript/index/JSItemPresentation.java index 06530b6a..7500e9f5 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/index/JSItemPresentation.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/index/JSItemPresentation.java @@ -28,8 +28,7 @@ import consulo.navigation.ItemPresentation; import consulo.ui.annotation.RequiredUIAccess; import consulo.ui.image.Image; - -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; /** * @author Maxim.Mossienko diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/index/JSSymbolUtil.java b/base-impl/src/main/java/com/intellij/lang/javascript/index/JSSymbolUtil.java index 3bfdd25c..93dc7484 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/index/JSSymbolUtil.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/index/JSSymbolUtil.java @@ -23,7 +23,7 @@ import consulo.language.psi.util.PsiTreeUtil; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; import java.util.ArrayList; import java.util.HashSet; import java.util.List; diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/inspections/qucikFixes/BaseCreateFix.java b/base-impl/src/main/java/com/intellij/lang/javascript/inspections/qucikFixes/BaseCreateFix.java index 47e03606..bb16d770 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/inspections/qucikFixes/BaseCreateFix.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/inspections/qucikFixes/BaseCreateFix.java @@ -47,8 +47,8 @@ import consulo.xml.psi.xml.XmlTag; import consulo.xml.psi.xml.XmlText; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; import java.util.Collections; import java.util.Set; diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSArgumentListImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSArgumentListImpl.java index ee186ac3..bd7ff9ca 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSArgumentListImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSArgumentListImpl.java @@ -24,7 +24,7 @@ import consulo.language.util.IncorrectOperationException; import consulo.language.ast.ASTNode; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * User: max diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSArrayLiteralExpressionImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSArrayLiteralExpressionImpl.java index a9e5b482..7112715f 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSArrayLiteralExpressionImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSArrayLiteralExpressionImpl.java @@ -23,7 +23,7 @@ import consulo.language.ast.ASTNode; import consulo.language.ast.IElementType; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import java.util.ArrayList; import java.util.List; diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAssignmentExpressionImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAssignmentExpressionImpl.java index 5e48bb64..ec0a6bd9 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAssignmentExpressionImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAssignmentExpressionImpl.java @@ -20,7 +20,7 @@ import com.intellij.lang.javascript.psi.JSElementVisitor; import consulo.language.ast.ASTNode; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * Created by IntelliJ IDEA. diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAttributeImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAttributeImpl.java index c9c210b9..e3305df3 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAttributeImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAttributeImpl.java @@ -32,7 +32,7 @@ import consulo.util.collection.ArrayUtil; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @by Maxim.Mossienko diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAttributeListImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAttributeListImpl.java index 707b5e24..b90dfa2c 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAttributeListImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAttributeListImpl.java @@ -28,9 +28,9 @@ import consulo.language.psi.PsiElement; import consulo.language.ast.IElementType; import consulo.language.util.IncorrectOperationException; +import jakarta.annotation.Nonnull; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; import java.util.ArrayList; import java.util.List; diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAttributeNameValuePairImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAttributeNameValuePairImpl.java index f4f9cdb9..ebac4856 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAttributeNameValuePairImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAttributeNameValuePairImpl.java @@ -31,7 +31,7 @@ import consulo.util.lang.StringUtil; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @by Maxim.Mossienko diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSBinaryExpressionImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSBinaryExpressionImpl.java index bda9362f..c4afc293 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSBinaryExpressionImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSBinaryExpressionImpl.java @@ -30,8 +30,8 @@ import consulo.annotation.access.RequiredReadAction; import consulo.language.psi.util.PsiTreeUtil; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; /** * Created by IntelliJ IDEA. diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSBlockStatementImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSBlockStatementImpl.java index 49230730..e870c59e 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSBlockStatementImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSBlockStatementImpl.java @@ -26,7 +26,7 @@ import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * Created by IntelliJ IDEA. diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSBreakStatementImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSBreakStatementImpl.java index 0569134b..13ac550a 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSBreakStatementImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSBreakStatementImpl.java @@ -19,8 +19,7 @@ import consulo.language.ast.ASTNode; import com.intellij.lang.javascript.psi.*; import consulo.language.psi.util.PsiTreeUtil; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * Created by IntelliJ IDEA. diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSCallExpressionImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSCallExpressionImpl.java index 75b731c8..28d67b65 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSCallExpressionImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSCallExpressionImpl.java @@ -23,7 +23,7 @@ import com.intellij.lang.javascript.psi.JSElementVisitor; import com.intellij.lang.javascript.psi.JSExpression; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * Created by IntelliJ IDEA. diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSCaseClauseImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSCaseClauseImpl.java index 2e4c8869..6ada727b 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSCaseClauseImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSCaseClauseImpl.java @@ -22,8 +22,7 @@ import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.lang.javascript.psi.JSStatement; import consulo.language.ast.ASTNode; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * Created by IntelliJ IDEA. diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSCatchBlockImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSCatchBlockImpl.java index 159fc8ed..26f0e3a5 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSCatchBlockImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSCatchBlockImpl.java @@ -27,7 +27,7 @@ import consulo.language.psi.resolve.ResolveState; import consulo.language.util.IncorrectOperationException; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * Created by IntelliJ IDEA. diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSChangeUtil.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSChangeUtil.java index 7f0e72f6..13feaa15 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSChangeUtil.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSChangeUtil.java @@ -32,10 +32,10 @@ import consulo.language.util.IncorrectOperationException; import consulo.project.Project; import consulo.util.lang.StringUtil; +import jakarta.annotation.Nullable; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; /** * Created by IntelliJ IDEA. diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSClassBase.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSClassBase.java index a0e53a6b..59187b98 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSClassBase.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSClassBase.java @@ -36,8 +36,8 @@ import consulo.util.collection.ArrayUtil; import consulo.util.dataholder.Key; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; import java.util.*; /** @@ -339,7 +339,7 @@ private List getClassesFromReferenceList(final @Nullable JSReferenceLis @Override public boolean processDeclarations(@Nonnull final PsiScopeProcessor processor, @Nonnull final ResolveState substitutor, - final PsiElement lastParent, @Nonnull final PsiElement place) + final PsiElement lastParent, @Nonnull final PsiElement place) { final ResolveProcessor resolveProcessor = processor instanceof ResolveProcessor ? (ResolveProcessor) processor : null; final boolean toProcessClass = resolveProcessor != null && resolveProcessor.isTypeContext(); diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSClassExpressionImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSClassExpressionImpl.java index fe01504a..2545bb72 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSClassExpressionImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSClassExpressionImpl.java @@ -8,7 +8,7 @@ import consulo.javascript.language.psi.JavaScriptType; import consulo.javascript.lang.psi.impl.JavaScriptClassType; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSClassImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSClassImpl.java index b8cc7fc2..c50a2305 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSClassImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSClassImpl.java @@ -16,7 +16,7 @@ package com.intellij.lang.javascript.psi.impl; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import consulo.language.psi.PsiElement; import org.jetbrains.annotations.NonNls; diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSCommaExpressionImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSCommaExpressionImpl.java index e076e84e..a5b79a76 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSCommaExpressionImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSCommaExpressionImpl.java @@ -19,8 +19,7 @@ import consulo.language.ast.ASTNode; import com.intellij.lang.javascript.psi.JSCommaExpression; import com.intellij.lang.javascript.psi.JSElementVisitor; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * Created by IntelliJ IDEA. diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSConditionalExpressionImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSConditionalExpressionImpl.java index 4adc3fcc..22e5abdc 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSConditionalExpressionImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSConditionalExpressionImpl.java @@ -24,7 +24,7 @@ import com.intellij.lang.javascript.psi.JSExpression; import consulo.language.ast.IElementType; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * Created by IntelliJ IDEA. diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSContinueStatementImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSContinueStatementImpl.java index 625689eb..4c1318d7 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSContinueStatementImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSContinueStatementImpl.java @@ -20,7 +20,7 @@ import consulo.language.ast.ASTNode; import consulo.language.psi.util.PsiTreeUtil; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * Created by IntelliJ IDEA. diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDefinitionExpressionImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDefinitionExpressionImpl.java index 13cdf87c..d19877eb 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDefinitionExpressionImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDefinitionExpressionImpl.java @@ -23,7 +23,7 @@ import consulo.language.util.IncorrectOperationException; import consulo.language.ast.ASTNode; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * Created by IntelliJ IDEA. @@ -75,7 +75,7 @@ protected void accept(@Nonnull JSElementVisitor visitor) @Override public boolean processDeclarations(@Nonnull PsiScopeProcessor processor, @Nonnull ResolveState state, PsiElement lastParent, - @Nonnull PsiElement place) + @Nonnull PsiElement place) { if(lastParent == null) { diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDoWhileStatementImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDoWhileStatementImpl.java index 50064f10..bfcaf37b 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDoWhileStatementImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDoWhileStatementImpl.java @@ -21,8 +21,7 @@ import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.lang.javascript.psi.JSStatement; import consulo.language.ast.ASTNode; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * Created by IntelliJ IDEA. diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDocCommentImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDocCommentImpl.java index 80c15906..6ec245cf 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDocCommentImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDocCommentImpl.java @@ -23,8 +23,7 @@ import consulo.language.ast.IElementType; import consulo.language.psi.PsiElement; import consulo.language.ast.ASTNode; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; public class JSDocCommentImpl extends JSElementImpl implements JSDocComment { diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDocTagImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDocTagImpl.java index a1703c2b..d6526008 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDocTagImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDocTagImpl.java @@ -28,10 +28,9 @@ import consulo.language.util.IncorrectOperationException; import consulo.localize.LocalizeValue; import consulo.util.collection.ArrayUtil; +import jakarta.annotation.Nonnull; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; - public class JSDocTagImpl extends JSElementImpl implements JSDocTag { private volatile PsiReference[] myRefs; diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDocTagValueImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDocTagValueImpl.java index 8ac7cde1..990edd91 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDocTagValueImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDocTagValueImpl.java @@ -26,7 +26,7 @@ import consulo.util.lang.text.StringTokenizer; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; public class JSDocTagValueImpl extends JSElementImpl implements JSDocTagValue { diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSEmbeddedContentImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSEmbeddedContentImpl.java index 2550ba3a..11966cc2 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSEmbeddedContentImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSEmbeddedContentImpl.java @@ -29,7 +29,7 @@ import consulo.xml.psi.xml.XmlTag; import consulo.xml.psi.xml.XmlTagChild; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * Created by IntelliJ IDEA. diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSEmptyStatementImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSEmptyStatementImpl.java index 6d2142c1..1297ca47 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSEmptyStatementImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSEmptyStatementImpl.java @@ -19,8 +19,7 @@ import consulo.language.ast.ASTNode; import com.intellij.lang.javascript.psi.JSElementVisitor; import com.intellij.lang.javascript.psi.JSEmptyStatement; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * Created by IntelliJ IDEA. diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSExpressionCodeFragmentImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSExpressionCodeFragmentImpl.java index 9faa5146..4afdab2f 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSExpressionCodeFragmentImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSExpressionCodeFragmentImpl.java @@ -27,7 +27,7 @@ import consulo.project.Project; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author nik diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSExpressionImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSExpressionImpl.java index 2a126e88..83d4f6d2 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSExpressionImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSExpressionImpl.java @@ -20,8 +20,7 @@ import consulo.annotation.access.RequiredReadAction; import consulo.javascript.language.psi.JavaScriptType; import consulo.language.ast.ASTNode; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author ven diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSExpressionStatementImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSExpressionStatementImpl.java index a6ea348e..b924606a 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSExpressionStatementImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSExpressionStatementImpl.java @@ -28,7 +28,7 @@ import consulo.navigation.ItemPresentation; import consulo.ui.image.Image; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * Created by IntelliJ IDEA. diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSFileImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSFileImpl.java index 3884d3ca..6185aad1 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSFileImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSFileImpl.java @@ -18,8 +18,7 @@ import java.util.List; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; import com.intellij.lang.javascript.JSElementTypes; import com.intellij.lang.javascript.psi.JSElementVisitor; @@ -38,6 +37,7 @@ import consulo.javascript.language.JavaScriptLanguage; import consulo.language.file.FileViewProvider; import consulo.language.impl.psi.PsiFileBase; +import jakarta.annotation.Nullable; /** * Created by IntelliJ IDEA. @@ -61,7 +61,7 @@ public String toString() @Override public boolean processDeclarations(@Nonnull final PsiScopeProcessor processor, @Nonnull final ResolveState state, @Nullable PsiElement lastParent, - @Nonnull PsiElement place) + @Nonnull PsiElement place) { boolean result = JSResolveUtil.processDeclarationsInScope(this, processor, state, lastParent, place); if(lastParent == null) diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSForInStatementImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSForInStatementImpl.java index eda1a5e5..40aee640 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSForInStatementImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSForInStatementImpl.java @@ -25,7 +25,7 @@ import consulo.language.ast.TokenSet; import consulo.annotation.access.RequiredReadAction; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * Created by IntelliJ IDEA. diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSForStatementImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSForStatementImpl.java index 7dec90dd..a3992ac7 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSForStatementImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSForStatementImpl.java @@ -24,7 +24,7 @@ import consulo.language.psi.resolve.ResolveState; import consulo.language.psi.resolve.PsiScopeProcessor; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author max @@ -129,7 +129,7 @@ else if(passedRParen && child.getPsi() instanceof JSStatement) @Override public boolean processDeclarations(@Nonnull PsiScopeProcessor processor, @Nonnull ResolveState state, PsiElement lastParent, - @Nonnull PsiElement place) + @Nonnull PsiElement place) { if(lastParent != null) { diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSFunctionBaseImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSFunctionBaseImpl.java index 151b7ea2..1b2afcc8 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSFunctionBaseImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSFunctionBaseImpl.java @@ -35,7 +35,7 @@ import consulo.javascript.language.psi.JavaScriptTypeElement; import consulo.language.ast.ASTNode; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * Created by IntelliJ IDEA. @@ -173,7 +173,7 @@ public int getTextOffset() @Override public boolean processDeclarations(@Nonnull PsiScopeProcessor processor, @Nonnull ResolveState state, PsiElement lastParent, - @Nonnull PsiElement place) + @Nonnull PsiElement place) { if(lastParent != null && lastParent.getParent() == this) { diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSFunctionExpressionImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSFunctionExpressionImpl.java index b50ae806..95ef42df 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSFunctionExpressionImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSFunctionExpressionImpl.java @@ -26,7 +26,7 @@ import consulo.annotation.access.RequiredReadAction; import consulo.javascript.language.psi.JavaScriptType; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * Created by IntelliJ IDEA. diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSFunctionImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSFunctionImpl.java index dc03f7c4..5abf9f69 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSFunctionImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSFunctionImpl.java @@ -29,7 +29,7 @@ import consulo.language.psi.PsiElement; import consulo.util.lang.Comparing; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * Created by IntelliJ IDEA. diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSFunctionPropertyImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSFunctionPropertyImpl.java index 2cc98bc6..b3058da9 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSFunctionPropertyImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSFunctionPropertyImpl.java @@ -11,8 +11,8 @@ import consulo.javascript.language.psi.JavaScriptType; import consulo.javascript.language.psi.JavaScriptTypeElement; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSGenericSignatureImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSGenericSignatureImpl.java index 5d93fd7a..a7c8b7af 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSGenericSignatureImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSGenericSignatureImpl.java @@ -20,7 +20,7 @@ import com.intellij.lang.javascript.psi.JSGenericSignature; import consulo.language.ast.ASTNode; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; public class JSGenericSignatureImpl extends JSElementImpl implements JSGenericSignature { diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSIfStatementImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSIfStatementImpl.java index 2a5a963d..d6852643 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSIfStatementImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSIfStatementImpl.java @@ -23,8 +23,7 @@ import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.lang.javascript.psi.JSIfStatement; import com.intellij.lang.javascript.psi.JSStatement; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * Created by IntelliJ IDEA. diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSImportStatementImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSImportStatementImpl.java index e03ebe1d..4c3e2324 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSImportStatementImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSImportStatementImpl.java @@ -25,7 +25,7 @@ import consulo.language.psi.resolve.PsiScopeProcessor; import consulo.language.psi.resolve.ResolveState; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @by Maxim.Mossienko diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSIncludeDirectiveImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSIncludeDirectiveImpl.java index 43e34497..e66a2b33 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSIncludeDirectiveImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSIncludeDirectiveImpl.java @@ -30,7 +30,7 @@ import consulo.language.psi.path.FileReferenceSet; import consulo.javascript.lang.JavaScriptTokenSets; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @by Maxim.Mossienko diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSIndexedPropertyAccessExpressionImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSIndexedPropertyAccessExpressionImpl.java index 6662f52f..1ba65315 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSIndexedPropertyAccessExpressionImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSIndexedPropertyAccessExpressionImpl.java @@ -22,8 +22,7 @@ import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.lang.javascript.psi.JSIndexedPropertyAccessExpression; import consulo.language.ast.IElementType; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * Created by IntelliJ IDEA. diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSLabeledStatementImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSLabeledStatementImpl.java index f836ce54..8ac840e2 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSLabeledStatementImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSLabeledStatementImpl.java @@ -25,7 +25,7 @@ import consulo.language.ast.ASTNode; import consulo.language.psi.PsiElement; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * Created by IntelliJ IDEA. diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSLetExpressionImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSLetExpressionImpl.java index 6a815796..86833093 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSLetExpressionImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSLetExpressionImpl.java @@ -20,8 +20,7 @@ import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.lang.javascript.psi.JSLetExpression; import consulo.language.ast.ASTNode; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * Created by IntelliJ IDEA. diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSLetStatementImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSLetStatementImpl.java index 7cd6d4ba..a8536b14 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSLetStatementImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSLetStatementImpl.java @@ -22,7 +22,7 @@ import com.intellij.lang.javascript.psi.JSLetStatement; import consulo.language.ast.ASTNode; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author maxim diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSLiteralExpressionImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSLiteralExpressionImpl.java index e3402c2f..5fbbf184 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSLiteralExpressionImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSLiteralExpressionImpl.java @@ -30,8 +30,7 @@ import consulo.language.psi.PsiElement; import consulo.language.psi.PsiLanguageInjectionHost; import consulo.language.psi.PsiReference; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author max diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSNamespaceDeclarationImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSNamespaceDeclarationImpl.java index 6bc53b76..2d4333d0 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSNamespaceDeclarationImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSNamespaceDeclarationImpl.java @@ -30,7 +30,7 @@ import consulo.javascript.lang.JavaScriptTokenSets; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @by Maxim.Mossienko diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSNewExpressionImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSNewExpressionImpl.java index a30eaada..66f64e5c 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSNewExpressionImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSNewExpressionImpl.java @@ -24,7 +24,7 @@ import consulo.javascript.language.psi.JavaScriptType; import consulo.javascript.lang.psi.impl.JavaScriptClassType; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * Created by IntelliJ IDEA. diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSObjectLiteralExpressionImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSObjectLiteralExpressionImpl.java index 48f685b1..3c242b81 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSObjectLiteralExpressionImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSObjectLiteralExpressionImpl.java @@ -24,7 +24,7 @@ import consulo.language.psi.PsiElement; import consulo.language.psi.resolve.ResolveState; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * Created by IntelliJ IDEA. diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSPackageStatementImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSPackageStatementImpl.java index 6aec140c..6fc625cb 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSPackageStatementImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSPackageStatementImpl.java @@ -36,7 +36,7 @@ import consulo.virtualFileSystem.VirtualFile; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import java.io.IOException; /** diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSParameterImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSParameterImpl.java index ef89f26d..4fd430ee 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSParameterImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSParameterImpl.java @@ -31,8 +31,8 @@ import consulo.language.psi.resolve.ResolveState; import consulo.language.util.IncorrectOperationException; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; /** * Created by IntelliJ IDEA. diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSParameterListImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSParameterListImpl.java index 3a5f9264..0f9f7f03 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSParameterListImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSParameterListImpl.java @@ -23,7 +23,7 @@ import com.intellij.lang.javascript.psi.stubs.JSParameterListStub; import consulo.language.ast.ASTNode; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * Created by IntelliJ IDEA. diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSParenthesizedExpressionImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSParenthesizedExpressionImpl.java index e6e3d2bc..b147b83f 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSParenthesizedExpressionImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSParenthesizedExpressionImpl.java @@ -20,8 +20,7 @@ import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.lang.javascript.psi.JSParenthesizedExpression; import consulo.language.ast.ASTNode; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * User: max diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSPostfixExpressionImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSPostfixExpressionImpl.java index 3c6debaa..5f461df6 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSPostfixExpressionImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSPostfixExpressionImpl.java @@ -25,7 +25,7 @@ import consulo.language.ast.ASTNode; import consulo.language.ast.IElementType; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * User: max diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSPrefixExpressionImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSPrefixExpressionImpl.java index d82216bc..f5b0e957 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSPrefixExpressionImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSPrefixExpressionImpl.java @@ -26,8 +26,8 @@ import consulo.language.ast.ASTNode; import consulo.language.psi.PsiElement; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; /** * Created by IntelliJ IDEA. diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSPropertyImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSPropertyImpl.java index 26aa824b..afe784d6 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSPropertyImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSPropertyImpl.java @@ -35,8 +35,8 @@ import consulo.language.util.IncorrectOperationException; import consulo.util.lang.StringUtil; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; /** * @author max diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSPsiImplUtils.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSPsiImplUtils.java index 5701df90..06fc85a9 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSPsiImplUtils.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSPsiImplUtils.java @@ -45,10 +45,10 @@ import consulo.util.lang.StringUtil; import consulo.virtualFileSystem.VirtualFile; import consulo.xml.psi.xml.XmlFile; +import jakarta.annotation.Nonnull; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; import java.io.IOException; import java.util.Collection; import java.util.Iterator; diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSReferenceExpressionImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSReferenceExpressionImpl.java index 6fe0349b..c955de91 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSReferenceExpressionImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSReferenceExpressionImpl.java @@ -40,8 +40,8 @@ import consulo.xml.psi.xml.XmlFile; import consulo.xml.psi.xml.XmlToken; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; import java.util.Set; public class JSReferenceExpressionImpl extends JSExpressionImpl implements JSReferenceExpression, BindablePsiReference diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSReferenceListImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSReferenceListImpl.java index eda7fbb4..f643ca22 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSReferenceListImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSReferenceListImpl.java @@ -29,7 +29,7 @@ import consulo.project.Project; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import java.util.ArrayList; import java.util.Collection; diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSReferenceSet.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSReferenceSet.java index 13ace481..b06483dd 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSReferenceSet.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSReferenceSet.java @@ -35,8 +35,8 @@ import consulo.xml.psi.xml.*; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; import java.util.ArrayList; import java.util.List; diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSReturnStatementImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSReturnStatementImpl.java index fbc084e7..49eb9514 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSReturnStatementImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSReturnStatementImpl.java @@ -20,8 +20,7 @@ import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.lang.javascript.psi.JSReturnStatement; import consulo.language.ast.ASTNode; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * User: max diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSSmartCompletionVariantsHandler.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSSmartCompletionVariantsHandler.java index 991084da..c29af19e 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSSmartCompletionVariantsHandler.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSSmartCompletionVariantsHandler.java @@ -34,7 +34,7 @@ import consulo.xml.psi.xml.XmlTag; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import java.util.ArrayList; import java.util.HashMap; import java.util.List; diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSStatementWithLabelReferenceImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSStatementWithLabelReferenceImpl.java index 02a90e8c..c11b9603 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSStatementWithLabelReferenceImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSStatementWithLabelReferenceImpl.java @@ -27,8 +27,9 @@ import consulo.language.ast.ASTNode; import consulo.util.collection.ArrayUtil; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; + import java.util.ArrayList; import java.util.List; diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSStubElementImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSStubElementImpl.java index 9554378c..cf0a52b0 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSStubElementImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSStubElementImpl.java @@ -31,8 +31,7 @@ import consulo.navigation.ItemPresentation; import consulo.navigation.NavigationItem; import consulo.util.dataholder.Key; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * User: max diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSSuperExpressionImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSSuperExpressionImpl.java index 6e175373..cb5d6b5f 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSSuperExpressionImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSSuperExpressionImpl.java @@ -29,8 +29,8 @@ import consulo.language.psi.resolve.ResolveState; import consulo.util.collection.ArrayUtil; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; /** * Created by IntelliJ IDEA. diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSSwitchStatementImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSSwitchStatementImpl.java index f4895467..02feea3c 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSSwitchStatementImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSSwitchStatementImpl.java @@ -23,8 +23,7 @@ import com.intellij.lang.javascript.psi.JSSwitchStatement; import consulo.language.ast.ASTNode; import consulo.language.ast.TokenSet; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * Created by IntelliJ IDEA. diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSThisExpressionImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSThisExpressionImpl.java index fe59da9b..47c797af 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSThisExpressionImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSThisExpressionImpl.java @@ -20,7 +20,7 @@ import com.intellij.lang.javascript.psi.JSThisExpression; import consulo.language.ast.ASTNode; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * Created by IntelliJ IDEA. diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSThrowStatementImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSThrowStatementImpl.java index 5bf27e86..8a04bf20 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSThrowStatementImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSThrowStatementImpl.java @@ -20,8 +20,7 @@ import com.intellij.lang.javascript.psi.JSElementVisitor; import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.lang.javascript.psi.JSThrowStatement; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * Created by IntelliJ IDEA. diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSTryStatementImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSTryStatementImpl.java index 1eb555f0..5665675a 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSTryStatementImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSTryStatementImpl.java @@ -26,8 +26,8 @@ import consulo.language.ast.IElementType; import consulo.language.ast.TokenSet; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; /** * Created by IntelliJ IDEA. diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSUseNamespaceDirectiveImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSUseNamespaceDirectiveImpl.java index 0e3747e7..5db9381e 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSUseNamespaceDirectiveImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSUseNamespaceDirectiveImpl.java @@ -26,7 +26,7 @@ import consulo.language.psi.resolve.PsiScopeProcessor; import consulo.language.psi.resolve.ResolveState; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @by Maxim.Mossienko diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSVarStatementImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSVarStatementImpl.java index 261d59e1..2954b238 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSVarStatementImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSVarStatementImpl.java @@ -25,8 +25,8 @@ import consulo.language.psi.resolve.PsiScopeProcessor; import consulo.annotation.access.RequiredReadAction; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; /** * Created by IntelliJ IDEA. @@ -80,7 +80,7 @@ protected void accept(@Nonnull JSElementVisitor visitor) @Override public boolean processDeclarations(@Nonnull PsiScopeProcessor processor, @Nonnull ResolveState state, PsiElement lastParent, - @Nonnull PsiElement place) + @Nonnull PsiElement place) { final JSVariable[] vars = getVariables(); diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSVariableBaseImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSVariableBaseImpl.java index 4fa7d7e7..b25cc8d9 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSVariableBaseImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSVariableBaseImpl.java @@ -37,7 +37,7 @@ import consulo.language.psi.resolve.PsiScopeProcessor; import consulo.language.psi.resolve.ResolveState; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * Created by IntelliJ IDEA. diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSVariableImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSVariableImpl.java index de9d3f11..f4178b12 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSVariableImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSVariableImpl.java @@ -16,8 +16,6 @@ package com.intellij.lang.javascript.psi.impl; -import javax.annotation.Nonnull; - import com.intellij.lang.javascript.JSElementTypes; import com.intellij.lang.javascript.psi.JSClass; import com.intellij.lang.javascript.psi.JSPackageStatement; @@ -26,6 +24,7 @@ import consulo.language.psi.PsiElement; import consulo.language.ast.ASTNode; import consulo.language.util.IncorrectOperationException; +import jakarta.annotation.Nonnull; /** * Created by IntelliJ IDEA. diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSWhileStatementImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSWhileStatementImpl.java index 320bc5aa..53fe7c50 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSWhileStatementImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSWhileStatementImpl.java @@ -22,7 +22,7 @@ import com.intellij.lang.javascript.psi.JSStatement; import com.intellij.lang.javascript.psi.JSWhileStatement; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * User: max diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSWithStatementImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSWithStatementImpl.java index e59f792e..097540df 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSWithStatementImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSWithStatementImpl.java @@ -21,8 +21,7 @@ import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.lang.javascript.psi.JSStatement; import com.intellij.lang.javascript.psi.JSWithStatement; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * Created by IntelliJ IDEA. diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSXmlLiteralExpressionImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSXmlLiteralExpressionImpl.java index 648ad825..4e436105 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSXmlLiteralExpressionImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSXmlLiteralExpressionImpl.java @@ -34,8 +34,8 @@ import consulo.xml.psi.xml.*; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; import java.util.ArrayList; import java.util.Collections; import java.util.List; diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSYieldStatementImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSYieldStatementImpl.java index 9dc2d9c9..49106e4e 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSYieldStatementImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSYieldStatementImpl.java @@ -21,7 +21,7 @@ import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.lang.javascript.psi.JSYieldStatement; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author maxim diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/reference/JSPropertyNameReference.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/reference/JSPropertyNameReference.java index aba9d663..4f0136f5 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/reference/JSPropertyNameReference.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/reference/JSPropertyNameReference.java @@ -31,8 +31,8 @@ import consulo.language.util.IncorrectOperationException; import consulo.util.lang.StringUtil; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; public class JSPropertyNameReference implements PsiReference { diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/BaseJSSymbolProcessor.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/BaseJSSymbolProcessor.java index f83d484a..80391404 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/BaseJSSymbolProcessor.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/BaseJSSymbolProcessor.java @@ -44,7 +44,7 @@ import consulo.xml.psi.xml.XmlToken; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import java.util.ArrayList; import java.util.HashSet; import java.util.List; diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/JSImportHandlingUtil.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/JSImportHandlingUtil.java index 84b61da6..a7652d02 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/JSImportHandlingUtil.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/JSImportHandlingUtil.java @@ -44,8 +44,8 @@ import consulo.xml.psi.xml.XmlFile; import consulo.xml.psi.xml.XmlTag; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; import java.util.HashMap; import java.util.HashSet; import java.util.Map; diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/JSResolveUtil.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/JSResolveUtil.java index dcfedb92..5cfe2a68 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/JSResolveUtil.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/JSResolveUtil.java @@ -82,8 +82,8 @@ import consulo.xml.psi.xml.*; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; import java.util.*; /** diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/ResolveProcessor.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/ResolveProcessor.java index c4d9fc04..87e76c17 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/ResolveProcessor.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/ResolveProcessor.java @@ -39,8 +39,9 @@ import consulo.xml.psi.xml.XmlAttributeValue; import consulo.xml.psi.xml.XmlTag; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; + import java.util.ArrayList; import java.util.HashSet; import java.util.List; diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/WalkUpResolveProcessor.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/WalkUpResolveProcessor.java index 3c0e4adf..10663648 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/WalkUpResolveProcessor.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/WalkUpResolveProcessor.java @@ -30,7 +30,7 @@ import consulo.util.collection.ArrayUtil; import consulo.xml.psi.xml.XmlAttributeValue; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import java.util.ArrayList; import java.util.List; import java.util.Set; diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/util/JSLookupUtil.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/util/JSLookupUtil.java index df2a4e13..20ace63f 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/util/JSLookupUtil.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/util/JSLookupUtil.java @@ -28,8 +28,8 @@ import consulo.language.icon.IconDescriptorUpdaters; import consulo.javascript.language.psi.JavaScriptType; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; public class JSLookupUtil { diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/search/JSClassSearch.java b/base-impl/src/main/java/com/intellij/lang/javascript/search/JSClassSearch.java index 9554517d..4668c622 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/search/JSClassSearch.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/search/JSClassSearch.java @@ -31,7 +31,7 @@ import consulo.language.psi.stub.StubIndexKey; import consulo.project.Project; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import java.util.Collection; import java.util.HashSet; import java.util.Set; diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/types/JSAttributeElementType.java b/base-impl/src/main/java/com/intellij/lang/javascript/types/JSAttributeElementType.java index 5cac7445..0a9067b2 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/types/JSAttributeElementType.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/types/JSAttributeElementType.java @@ -19,7 +19,7 @@ import java.io.IOException; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import consulo.annotation.access.RequiredReadAction; import consulo.language.ast.ASTNode; diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/types/JSAttributeListElementType.java b/base-impl/src/main/java/com/intellij/lang/javascript/types/JSAttributeListElementType.java index 72535cd1..2b4e83b9 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/types/JSAttributeListElementType.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/types/JSAttributeListElementType.java @@ -30,7 +30,7 @@ import consulo.language.psi.stub.StubInputStream; import consulo.language.psi.stub.StubOutputStream; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import java.io.IOException; /** diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/types/JSAttributeNameValuePairType.java b/base-impl/src/main/java/com/intellij/lang/javascript/types/JSAttributeNameValuePairType.java index 683be6c4..871a711e 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/types/JSAttributeNameValuePairType.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/types/JSAttributeNameValuePairType.java @@ -19,7 +19,7 @@ import java.io.IOException; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import consulo.annotation.access.RequiredReadAction; import com.intellij.lang.javascript.psi.JSAttributeNameValuePair; diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/types/JSClassElementType.java b/base-impl/src/main/java/com/intellij/lang/javascript/types/JSClassElementType.java index 78a1b51f..d7cc763f 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/types/JSClassElementType.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/types/JSClassElementType.java @@ -32,8 +32,8 @@ import consulo.language.psi.stub.StubInputStream; import consulo.language.psi.stub.StubOutputStream; import consulo.util.lang.StringUtil; +import jakarta.annotation.Nonnull; -import javax.annotation.Nonnull; import java.io.IOException; /** diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/types/JSFileElementType.java b/base-impl/src/main/java/com/intellij/lang/javascript/types/JSFileElementType.java index 69e65082..0d637c25 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/types/JSFileElementType.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/types/JSFileElementType.java @@ -25,7 +25,7 @@ import consulo.language.Language; import consulo.language.psi.PsiFile; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import java.io.IOException; /** diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/types/JSFunctionElementType.java b/base-impl/src/main/java/com/intellij/lang/javascript/types/JSFunctionElementType.java index b39d92e0..2b057418 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/types/JSFunctionElementType.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/types/JSFunctionElementType.java @@ -19,7 +19,7 @@ import java.io.IOException; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import consulo.annotation.access.RequiredReadAction; import com.intellij.lang.javascript.psi.JSFunction; diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/types/JSImportStatementElementType.java b/base-impl/src/main/java/com/intellij/lang/javascript/types/JSImportStatementElementType.java index 56af7669..16f8ae70 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/types/JSImportStatementElementType.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/types/JSImportStatementElementType.java @@ -19,7 +19,7 @@ import java.io.IOException; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import consulo.annotation.access.RequiredReadAction; import com.intellij.lang.javascript.psi.JSImportStatement; diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/types/JSIncludeDirectiveElementType.java b/base-impl/src/main/java/com/intellij/lang/javascript/types/JSIncludeDirectiveElementType.java index 25e9bd7f..ea179899 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/types/JSIncludeDirectiveElementType.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/types/JSIncludeDirectiveElementType.java @@ -19,7 +19,7 @@ import java.io.IOException; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import consulo.annotation.access.RequiredReadAction; import consulo.index.io.StringRef; diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/types/JSNamespaceDeclarationElementType.java b/base-impl/src/main/java/com/intellij/lang/javascript/types/JSNamespaceDeclarationElementType.java index 50208692..83a4d5e3 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/types/JSNamespaceDeclarationElementType.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/types/JSNamespaceDeclarationElementType.java @@ -19,8 +19,6 @@ import java.io.IOException; -import javax.annotation.Nonnull; - import consulo.annotation.access.RequiredReadAction; import com.intellij.lang.javascript.psi.JSNamespaceDeclaration; import com.intellij.lang.javascript.psi.impl.JSNamespaceDeclarationImpl; @@ -33,6 +31,7 @@ import consulo.language.psi.stub.StubElement; import consulo.language.psi.stub.StubInputStream; import consulo.language.psi.stub.StubOutputStream; +import jakarta.annotation.Nonnull; /** * @author Maxim.Mossienko diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/types/JSPackageStatementElementType.java b/base-impl/src/main/java/com/intellij/lang/javascript/types/JSPackageStatementElementType.java index 63a378c1..26859e24 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/types/JSPackageStatementElementType.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/types/JSPackageStatementElementType.java @@ -19,7 +19,7 @@ import java.io.IOException; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import consulo.annotation.access.RequiredReadAction; import com.intellij.lang.javascript.psi.JSPackageStatement; diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/types/JSParameterElementType.java b/base-impl/src/main/java/com/intellij/lang/javascript/types/JSParameterElementType.java index d9289741..38bab215 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/types/JSParameterElementType.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/types/JSParameterElementType.java @@ -19,7 +19,7 @@ import java.io.IOException; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import consulo.annotation.access.RequiredReadAction; import com.intellij.lang.javascript.psi.JSParameter; import consulo.javascript.impl.language.psi.JSStubElementType; diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/types/JSParameterListElementType.java b/base-impl/src/main/java/com/intellij/lang/javascript/types/JSParameterListElementType.java index 81e178ca..d8484424 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/types/JSParameterListElementType.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/types/JSParameterListElementType.java @@ -29,7 +29,7 @@ import consulo.language.psi.stub.StubInputStream; import consulo.language.psi.stub.StubOutputStream; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import java.io.IOException; /** diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/types/JSReferenceListElementType.java b/base-impl/src/main/java/com/intellij/lang/javascript/types/JSReferenceListElementType.java index 9987de92..58ec6bbe 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/types/JSReferenceListElementType.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/types/JSReferenceListElementType.java @@ -19,7 +19,7 @@ import java.io.IOException; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import consulo.language.psi.PsiElement; import consulo.language.psi.stub.*; diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/types/JSUseNamespaceDirectiveType.java b/base-impl/src/main/java/com/intellij/lang/javascript/types/JSUseNamespaceDirectiveType.java index be953d24..0993a1fb 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/types/JSUseNamespaceDirectiveType.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/types/JSUseNamespaceDirectiveType.java @@ -19,7 +19,7 @@ import java.io.IOException; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import consulo.annotation.access.RequiredReadAction; import consulo.index.io.StringRef; diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/types/JSVarStatementElementType.java b/base-impl/src/main/java/com/intellij/lang/javascript/types/JSVarStatementElementType.java index 13d7987e..00359a33 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/types/JSVarStatementElementType.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/types/JSVarStatementElementType.java @@ -19,7 +19,7 @@ import java.io.IOException; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import consulo.annotation.access.RequiredReadAction; import consulo.language.ast.ASTNode; diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/types/JSVariableElementType.java b/base-impl/src/main/java/com/intellij/lang/javascript/types/JSVariableElementType.java index f9fc22c5..fd7564db 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/types/JSVariableElementType.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/types/JSVariableElementType.java @@ -19,7 +19,7 @@ import java.io.IOException; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import consulo.annotation.access.RequiredReadAction; import com.intellij.lang.javascript.JSElementTypes; diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/validation/JSUnusedImportsHelper.java b/base-impl/src/main/java/com/intellij/lang/javascript/validation/JSUnusedImportsHelper.java index 90b1edb1..4ea66c06 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/validation/JSUnusedImportsHelper.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/validation/JSUnusedImportsHelper.java @@ -38,8 +38,8 @@ import consulo.xml.psi.xml.XmlFile; import consulo.xml.psi.xml.XmlTag; import consulo.xml.psi.xml.XmlText; +import jakarta.annotation.Nullable; -import javax.annotation.Nullable; import java.util.*; public class JSUnusedImportsHelper @@ -324,7 +324,7 @@ else if(e instanceof JSReferenceExpression) } private static void collectElements(@Nullable final XmlTag rootTag, final PsiFile file, final Map> result, - final Collection processedFiles) + final Collection processedFiles) { if(processedFiles.contains(file)) { diff --git a/base-impl/src/main/java/consulo/javascript/ide/codeInsight/JavaScriptQuickFixFactory.java b/base-impl/src/main/java/consulo/javascript/ide/codeInsight/JavaScriptQuickFixFactory.java index b1cb00cb..e33d2bd7 100644 --- a/base-impl/src/main/java/consulo/javascript/ide/codeInsight/JavaScriptQuickFixFactory.java +++ b/base-impl/src/main/java/consulo/javascript/ide/codeInsight/JavaScriptQuickFixFactory.java @@ -24,7 +24,7 @@ import consulo.language.psi.PsiElement; import consulo.language.version.LanguageVersion; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/base-impl/src/main/java/consulo/javascript/ide/hightlight/JavaScriptHighlighter.java b/base-impl/src/main/java/consulo/javascript/ide/hightlight/JavaScriptHighlighter.java index 5569c308..584128c8 100644 --- a/base-impl/src/main/java/consulo/javascript/ide/hightlight/JavaScriptHighlighter.java +++ b/base-impl/src/main/java/consulo/javascript/ide/hightlight/JavaScriptHighlighter.java @@ -28,8 +28,8 @@ import consulo.language.lexer.Lexer; import consulo.util.collection.MultiMap; import consulo.xml.editor.XmlHighlighterColors; +import jakarta.annotation.Nonnull; -import javax.annotation.Nonnull; import java.util.function.Supplier; /** diff --git a/base-impl/src/main/java/consulo/javascript/ide/hightlight/JavaScriptSyntaxHighlightFactory.java b/base-impl/src/main/java/consulo/javascript/ide/hightlight/JavaScriptSyntaxHighlightFactory.java index 7f49d869..5908868f 100644 --- a/base-impl/src/main/java/consulo/javascript/ide/hightlight/JavaScriptSyntaxHighlightFactory.java +++ b/base-impl/src/main/java/consulo/javascript/ide/hightlight/JavaScriptSyntaxHighlightFactory.java @@ -8,7 +8,7 @@ import consulo.language.editor.highlight.SyntaxHighlighter; import consulo.language.version.LanguageVersion; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/base-impl/src/main/java/consulo/javascript/impl/language/JavaScriptQuoteHandler.java b/base-impl/src/main/java/consulo/javascript/impl/language/JavaScriptQuoteHandler.java index 0a049df1..62e14714 100644 --- a/base-impl/src/main/java/consulo/javascript/impl/language/JavaScriptQuoteHandler.java +++ b/base-impl/src/main/java/consulo/javascript/impl/language/JavaScriptQuoteHandler.java @@ -27,8 +27,7 @@ import consulo.language.editor.action.SimpleTokenSetQuoteHandler; import consulo.language.psi.PsiElement; import consulo.virtualFileSystem.fileType.FileType; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/base-impl/src/main/java/consulo/javascript/impl/language/psi/JSComputedNameImpl.java b/base-impl/src/main/java/consulo/javascript/impl/language/psi/JSComputedNameImpl.java index 2ab51448..95505c0a 100644 --- a/base-impl/src/main/java/consulo/javascript/impl/language/psi/JSComputedNameImpl.java +++ b/base-impl/src/main/java/consulo/javascript/impl/language/psi/JSComputedNameImpl.java @@ -22,8 +22,8 @@ import consulo.javascript.psi.JSComputedName; import consulo.language.ast.ASTNode; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/base-impl/src/main/java/consulo/javascript/impl/language/psi/JSElementFactory.java b/base-impl/src/main/java/consulo/javascript/impl/language/psi/JSElementFactory.java index f2aaa804..ceabf21d 100644 --- a/base-impl/src/main/java/consulo/javascript/impl/language/psi/JSElementFactory.java +++ b/base-impl/src/main/java/consulo/javascript/impl/language/psi/JSElementFactory.java @@ -20,8 +20,7 @@ import com.intellij.lang.javascript.psi.impl.JSExpressionCodeFragmentImpl; import consulo.language.psi.PsiElement; import consulo.project.Project; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author nik diff --git a/base-impl/src/main/java/consulo/javascript/impl/language/psi/JSStubElementType.java b/base-impl/src/main/java/consulo/javascript/impl/language/psi/JSStubElementType.java index 70ce3c05..51bac722 100644 --- a/base-impl/src/main/java/consulo/javascript/impl/language/psi/JSStubElementType.java +++ b/base-impl/src/main/java/consulo/javascript/impl/language/psi/JSStubElementType.java @@ -26,7 +26,7 @@ import consulo.language.psi.stub.IStubElementType; import consulo.language.psi.stub.IndexSink; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; public abstract class JSStubElementType, PsiT extends JSElement> extends IStubElementType implements IElementTypeAsPsiFactory { diff --git a/base-impl/src/main/java/consulo/javascript/impl/language/psi/JavaScriptLambdaExpressionImpl.java b/base-impl/src/main/java/consulo/javascript/impl/language/psi/JavaScriptLambdaExpressionImpl.java index bb0a63b1..ec6393a7 100644 --- a/base-impl/src/main/java/consulo/javascript/impl/language/psi/JavaScriptLambdaExpressionImpl.java +++ b/base-impl/src/main/java/consulo/javascript/impl/language/psi/JavaScriptLambdaExpressionImpl.java @@ -30,11 +30,10 @@ import consulo.language.psi.resolve.PsiScopeProcessor; import consulo.language.psi.resolve.ResolveState; import consulo.language.util.IncorrectOperationException; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; - /** * @author VISTALL * @since 03.03.2016 diff --git a/base-impl/src/main/java/consulo/javascript/impl/language/psi/JavaScriptSpreadExpressionImpl.java b/base-impl/src/main/java/consulo/javascript/impl/language/psi/JavaScriptSpreadExpressionImpl.java index 4001d56f..764d3d8a 100644 --- a/base-impl/src/main/java/consulo/javascript/impl/language/psi/JavaScriptSpreadExpressionImpl.java +++ b/base-impl/src/main/java/consulo/javascript/impl/language/psi/JavaScriptSpreadExpressionImpl.java @@ -8,7 +8,7 @@ import consulo.javascript.language.psi.JavaScriptType; import consulo.language.ast.ASTNode; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/base-impl/src/main/java/consulo/javascript/impl/language/psi/stub/JSFileStubImpl.java b/base-impl/src/main/java/consulo/javascript/impl/language/psi/stub/JSFileStubImpl.java index 7100e0eb..a3bc5ceb 100644 --- a/base-impl/src/main/java/consulo/javascript/impl/language/psi/stub/JSFileStubImpl.java +++ b/base-impl/src/main/java/consulo/javascript/impl/language/psi/stub/JSFileStubImpl.java @@ -7,8 +7,8 @@ import consulo.language.psi.stub.IStubFileElementType; import consulo.language.psi.stub.PsiFileStubImpl; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/base-impl/src/main/java/consulo/javascript/impl/language/psi/stub/JavaScriptClassNameIndex.java b/base-impl/src/main/java/consulo/javascript/impl/language/psi/stub/JavaScriptClassNameIndex.java index 241ee73e..d412fabb 100644 --- a/base-impl/src/main/java/consulo/javascript/impl/language/psi/stub/JavaScriptClassNameIndex.java +++ b/base-impl/src/main/java/consulo/javascript/impl/language/psi/stub/JavaScriptClassNameIndex.java @@ -25,7 +25,7 @@ import consulo.language.psi.stub.StringStubIndexExtension; import consulo.language.psi.stub.StubIndexKey; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/base-impl/src/main/java/consulo/javascript/inspections/qucikFixes/CreateJSFunctionFixBase.java b/base-impl/src/main/java/consulo/javascript/inspections/qucikFixes/CreateJSFunctionFixBase.java index 07652605..e66668a1 100644 --- a/base-impl/src/main/java/consulo/javascript/inspections/qucikFixes/CreateJSFunctionFixBase.java +++ b/base-impl/src/main/java/consulo/javascript/inspections/qucikFixes/CreateJSFunctionFixBase.java @@ -28,7 +28,7 @@ import consulo.language.psi.PsiFile; import consulo.localize.LocalizeValue; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import java.util.Set; /** diff --git a/base-impl/src/main/java/consulo/javascript/lang/BaseJavaScriptLanguageVersion.java b/base-impl/src/main/java/consulo/javascript/lang/BaseJavaScriptLanguageVersion.java index fb890b73..a1c1435e 100644 --- a/base-impl/src/main/java/consulo/javascript/lang/BaseJavaScriptLanguageVersion.java +++ b/base-impl/src/main/java/consulo/javascript/lang/BaseJavaScriptLanguageVersion.java @@ -9,7 +9,7 @@ import consulo.language.editor.highlight.SyntaxHighlighter; import consulo.language.parser.PsiParser; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import java.util.LinkedHashSet; import java.util.Set; diff --git a/base-impl/src/main/java/consulo/javascript/lang/JavaScript15LanguageVersion.java b/base-impl/src/main/java/consulo/javascript/lang/JavaScript15LanguageVersion.java index fc5f0901..35860b36 100644 --- a/base-impl/src/main/java/consulo/javascript/lang/JavaScript15LanguageVersion.java +++ b/base-impl/src/main/java/consulo/javascript/lang/JavaScript15LanguageVersion.java @@ -8,7 +8,7 @@ import consulo.language.editor.highlight.SyntaxHighlighter; import consulo.language.lexer.Lexer; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import java.util.function.Supplier; /** diff --git a/base-impl/src/main/java/consulo/javascript/lang/JavaScriptContextKeywordElementType.java b/base-impl/src/main/java/consulo/javascript/lang/JavaScriptContextKeywordElementType.java index 77510a67..986ce6d4 100644 --- a/base-impl/src/main/java/consulo/javascript/lang/JavaScriptContextKeywordElementType.java +++ b/base-impl/src/main/java/consulo/javascript/lang/JavaScriptContextKeywordElementType.java @@ -5,8 +5,8 @@ import com.intellij.lang.javascript.JSElementType; import consulo.language.ast.IElementType; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/base-impl/src/main/java/consulo/javascript/lang/StandardJavaScriptVersionsImpl.java b/base-impl/src/main/java/consulo/javascript/lang/StandardJavaScriptVersionsImpl.java index bfe3287d..54d16ad7 100644 --- a/base-impl/src/main/java/consulo/javascript/lang/StandardJavaScriptVersionsImpl.java +++ b/base-impl/src/main/java/consulo/javascript/lang/StandardJavaScriptVersionsImpl.java @@ -8,10 +8,10 @@ import consulo.javascript.language.StandardJavaScriptVersions; import consulo.language.version.LanguageVersion; import consulo.util.lang.StringUtil; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; import jakarta.inject.Singleton; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.util.ArrayList; import java.util.List; diff --git a/base-impl/src/main/java/consulo/javascript/lang/parsing/ExpressionParsing.java b/base-impl/src/main/java/consulo/javascript/lang/parsing/ExpressionParsing.java index 0cd15ea1..03b011b5 100644 --- a/base-impl/src/main/java/consulo/javascript/lang/parsing/ExpressionParsing.java +++ b/base-impl/src/main/java/consulo/javascript/lang/parsing/ExpressionParsing.java @@ -27,7 +27,7 @@ import consulo.logging.Logger; import consulo.util.dataholder.Key; -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; /** diff --git a/base-impl/src/main/java/consulo/javascript/lang/parsing/FunctionParsing.java b/base-impl/src/main/java/consulo/javascript/lang/parsing/FunctionParsing.java index d2b145ac..93270a20 100644 --- a/base-impl/src/main/java/consulo/javascript/lang/parsing/FunctionParsing.java +++ b/base-impl/src/main/java/consulo/javascript/lang/parsing/FunctionParsing.java @@ -20,9 +20,8 @@ import com.intellij.lang.javascript.JSTokenTypes; import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.parser.PsiBuilder; - -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; /** * @author max diff --git a/base-impl/src/main/java/consulo/javascript/lang/parsing/JSXParser.java b/base-impl/src/main/java/consulo/javascript/lang/parsing/JSXParser.java index a504887a..3d050dd3 100644 --- a/base-impl/src/main/java/consulo/javascript/lang/parsing/JSXParser.java +++ b/base-impl/src/main/java/consulo/javascript/lang/parsing/JSXParser.java @@ -11,8 +11,8 @@ import consulo.xml.psi.xml.XmlElementType; import consulo.xml.psi.xml.XmlTokenType; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; import java.util.Stack; /** diff --git a/base-impl/src/main/java/consulo/javascript/lang/parsing/JavaScriptParser.java b/base-impl/src/main/java/consulo/javascript/lang/parsing/JavaScriptParser.java index c2f3d4d5..4e8008b2 100644 --- a/base-impl/src/main/java/consulo/javascript/lang/parsing/JavaScriptParser.java +++ b/base-impl/src/main/java/consulo/javascript/lang/parsing/JavaScriptParser.java @@ -6,7 +6,7 @@ import consulo.language.parser.PsiParser; import consulo.language.version.LanguageVersion; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/base-impl/src/main/java/consulo/javascript/lang/parsing/JavaScriptParsingContext.java b/base-impl/src/main/java/consulo/javascript/lang/parsing/JavaScriptParsingContext.java index ff4fd901..0a0dd819 100644 --- a/base-impl/src/main/java/consulo/javascript/lang/parsing/JavaScriptParsingContext.java +++ b/base-impl/src/main/java/consulo/javascript/lang/parsing/JavaScriptParsingContext.java @@ -3,8 +3,7 @@ import com.intellij.lang.javascript.JSTokenTypes; import consulo.language.ast.IElementType; import consulo.language.parser.PsiBuilder; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/base-impl/src/main/java/consulo/javascript/lang/parsing/Parsing.java b/base-impl/src/main/java/consulo/javascript/lang/parsing/Parsing.java index b3e5d765..ea68756d 100644 --- a/base-impl/src/main/java/consulo/javascript/lang/parsing/Parsing.java +++ b/base-impl/src/main/java/consulo/javascript/lang/parsing/Parsing.java @@ -24,8 +24,8 @@ import consulo.language.parser.PsiBuilder; import consulo.localize.LocalizeValue; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; /** * User: max diff --git a/base-impl/src/main/java/consulo/javascript/lang/parsing/StatementParsing.java b/base-impl/src/main/java/consulo/javascript/lang/parsing/StatementParsing.java index 6ade6147..89ea9545 100644 --- a/base-impl/src/main/java/consulo/javascript/lang/parsing/StatementParsing.java +++ b/base-impl/src/main/java/consulo/javascript/lang/parsing/StatementParsing.java @@ -23,7 +23,7 @@ import consulo.language.parser.PsiBuilder; import consulo.logging.Logger; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author max diff --git a/base-impl/src/main/java/consulo/javascript/lang/parsing/impl/JavaSciptDestructuringElementImpl.java b/base-impl/src/main/java/consulo/javascript/lang/parsing/impl/JavaSciptDestructuringElementImpl.java index c510669f..16d2f3bf 100644 --- a/base-impl/src/main/java/consulo/javascript/lang/parsing/impl/JavaSciptDestructuringElementImpl.java +++ b/base-impl/src/main/java/consulo/javascript/lang/parsing/impl/JavaSciptDestructuringElementImpl.java @@ -6,9 +6,9 @@ import com.intellij.lang.javascript.psi.JSElementVisitor; import com.intellij.lang.javascript.psi.impl.JSElementImpl; import consulo.annotation.access.RequiredReadAction; +import jakarta.annotation.Nonnull; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/base-impl/src/main/java/consulo/javascript/lang/parsing/impl/JavaSciptDestructuringObjectImpl.java b/base-impl/src/main/java/consulo/javascript/lang/parsing/impl/JavaSciptDestructuringObjectImpl.java index 7230a7cb..f0f27403 100644 --- a/base-impl/src/main/java/consulo/javascript/lang/parsing/impl/JavaSciptDestructuringObjectImpl.java +++ b/base-impl/src/main/java/consulo/javascript/lang/parsing/impl/JavaSciptDestructuringObjectImpl.java @@ -8,7 +8,7 @@ import consulo.annotation.access.RequiredReadAction; import consulo.language.ast.ASTNode; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import java.util.Arrays; /** diff --git a/base-impl/src/main/java/consulo/javascript/lang/parsing/impl/JavaScriptDestructuringParameterImpl.java b/base-impl/src/main/java/consulo/javascript/lang/parsing/impl/JavaScriptDestructuringParameterImpl.java index fd91cdb8..1c6c22d3 100644 --- a/base-impl/src/main/java/consulo/javascript/lang/parsing/impl/JavaScriptDestructuringParameterImpl.java +++ b/base-impl/src/main/java/consulo/javascript/lang/parsing/impl/JavaScriptDestructuringParameterImpl.java @@ -14,8 +14,8 @@ import consulo.language.util.IncorrectOperationException; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/base-impl/src/main/java/consulo/javascript/lang/parsing/impl/JavaScriptDestructuringShorthandedPropertyImpl.java b/base-impl/src/main/java/consulo/javascript/lang/parsing/impl/JavaScriptDestructuringShorthandedPropertyImpl.java index c5d358b6..9e5ee051 100644 --- a/base-impl/src/main/java/consulo/javascript/lang/parsing/impl/JavaScriptDestructuringShorthandedPropertyImpl.java +++ b/base-impl/src/main/java/consulo/javascript/lang/parsing/impl/JavaScriptDestructuringShorthandedPropertyImpl.java @@ -7,7 +7,7 @@ import com.intellij.lang.javascript.psi.impl.JSElementImpl; import consulo.annotation.access.RequiredReadAction; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/base-impl/src/main/java/consulo/javascript/lang/parsing/impl/JavaScriptStrictParserBuilder.java b/base-impl/src/main/java/consulo/javascript/lang/parsing/impl/JavaScriptStrictParserBuilder.java index 8f4f0021..b689d58f 100644 --- a/base-impl/src/main/java/consulo/javascript/lang/parsing/impl/JavaScriptStrictParserBuilder.java +++ b/base-impl/src/main/java/consulo/javascript/lang/parsing/impl/JavaScriptStrictParserBuilder.java @@ -10,7 +10,7 @@ import consulo.util.lang.StringUtil; import consulo.util.lang.ThreeState; -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; import java.util.HashMap; import java.util.Map; diff --git a/base-impl/src/main/java/consulo/javascript/lang/psi/impl/JavaScriptClassType.java b/base-impl/src/main/java/consulo/javascript/lang/psi/impl/JavaScriptClassType.java index 4506aa5c..60d19030 100644 --- a/base-impl/src/main/java/consulo/javascript/lang/psi/impl/JavaScriptClassType.java +++ b/base-impl/src/main/java/consulo/javascript/lang/psi/impl/JavaScriptClassType.java @@ -21,8 +21,8 @@ import consulo.javascript.language.psi.JavaScriptType; import consulo.language.psi.PsiElement; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/base-impl/src/main/java/consulo/javascript/lang/psi/impl/resolve/JavaScriptVersionWithHelper.java b/base-impl/src/main/java/consulo/javascript/lang/psi/impl/resolve/JavaScriptVersionWithHelper.java index 5df55969..059755f7 100644 --- a/base-impl/src/main/java/consulo/javascript/lang/psi/impl/resolve/JavaScriptVersionWithHelper.java +++ b/base-impl/src/main/java/consulo/javascript/lang/psi/impl/resolve/JavaScriptVersionWithHelper.java @@ -1,6 +1,6 @@ package consulo.javascript.lang.psi.impl.resolve; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/base-impl/src/main/java/consulo/javascript/lang/psi/impl/resolve/ResolveHelper.java b/base-impl/src/main/java/consulo/javascript/lang/psi/impl/resolve/ResolveHelper.java index 9b9a2296..7a3c2fc9 100644 --- a/base-impl/src/main/java/consulo/javascript/lang/psi/impl/resolve/ResolveHelper.java +++ b/base-impl/src/main/java/consulo/javascript/lang/psi/impl/resolve/ResolveHelper.java @@ -8,9 +8,9 @@ import consulo.language.psi.PsiNamedElement; import consulo.language.psi.resolve.ResolveState; import consulo.language.version.LanguageVersion; +import jakarta.annotation.Nonnull; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/base-impl/src/main/java/consulo/javascript/lang/viewProvider/JSFileViewProviderFactory.java b/base-impl/src/main/java/consulo/javascript/lang/viewProvider/JSFileViewProviderFactory.java index 2a6b3d23..ef37e6e6 100644 --- a/base-impl/src/main/java/consulo/javascript/lang/viewProvider/JSFileViewProviderFactory.java +++ b/base-impl/src/main/java/consulo/javascript/lang/viewProvider/JSFileViewProviderFactory.java @@ -12,7 +12,7 @@ import consulo.util.lang.reflect.ReflectionUtil; import consulo.virtualFileSystem.VirtualFile; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/base-impl/src/main/java/consulo/javascript/types/JSQualifiedStubElementType.java b/base-impl/src/main/java/consulo/javascript/types/JSQualifiedStubElementType.java index 732e831e..c454c269 100644 --- a/base-impl/src/main/java/consulo/javascript/types/JSQualifiedStubElementType.java +++ b/base-impl/src/main/java/consulo/javascript/types/JSQualifiedStubElementType.java @@ -22,10 +22,9 @@ import com.intellij.lang.javascript.psi.stubs.JSQualifiedStub; import consulo.javascript.language.psi.stub.JavaScriptIndexKeys; import consulo.language.psi.stub.IndexSink; +import jakarta.annotation.Nonnull; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; - /** * @author VISTALL * @since 03.05.2015 diff --git a/debugger/debugger-impl/src/main/java/consulo/javascript/debugger/JSDebuggerSupportUtils.java b/debugger/debugger-impl/src/main/java/consulo/javascript/debugger/JSDebuggerSupportUtils.java index c4a87c6f..5ee8a267 100644 --- a/debugger/debugger-impl/src/main/java/consulo/javascript/debugger/JSDebuggerSupportUtils.java +++ b/debugger/debugger-impl/src/main/java/consulo/javascript/debugger/JSDebuggerSupportUtils.java @@ -30,9 +30,9 @@ import consulo.util.lang.ref.Ref; import consulo.virtualFileSystem.VirtualFile; import consulo.xml.lang.xml.XMLLanguage; +import jakarta.annotation.Nonnull; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; import java.util.List; /** diff --git a/debugger/debugger-impl/src/main/java/consulo/javascript/debugger/JavaScriptEditorsProvider.java b/debugger/debugger-impl/src/main/java/consulo/javascript/debugger/JavaScriptEditorsProvider.java index 30deec9e..174b2797 100644 --- a/debugger/debugger-impl/src/main/java/consulo/javascript/debugger/JavaScriptEditorsProvider.java +++ b/debugger/debugger-impl/src/main/java/consulo/javascript/debugger/JavaScriptEditorsProvider.java @@ -16,8 +16,7 @@ package consulo.javascript.debugger; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; import consulo.javascript.language.JavaScriptFileType; import consulo.javascript.impl.language.psi.JSElementFactory; import consulo.execution.debug.evaluation.XDebuggerEditorsProviderBase; @@ -25,6 +24,7 @@ import consulo.project.Project; import consulo.language.psi.PsiFile; import consulo.virtualFileSystem.fileType.FileType; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/debugger/debugger-impl/src/main/java/consulo/javascript/debugger/JavaScriptLineBreakpointType.java b/debugger/debugger-impl/src/main/java/consulo/javascript/debugger/JavaScriptLineBreakpointType.java index 315e4ec2..1754d81c 100644 --- a/debugger/debugger-impl/src/main/java/consulo/javascript/debugger/JavaScriptLineBreakpointType.java +++ b/debugger/debugger-impl/src/main/java/consulo/javascript/debugger/JavaScriptLineBreakpointType.java @@ -26,8 +26,8 @@ import consulo.project.Project; import consulo.virtualFileSystem.fileType.FileType; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/debugger/debugger-impl/src/main/java/consulo/javascript/debugger/JavaScriptLineBreakpointTypeResolver.java b/debugger/debugger-impl/src/main/java/consulo/javascript/debugger/JavaScriptLineBreakpointTypeResolver.java index fb78b35a..e4911172 100644 --- a/debugger/debugger-impl/src/main/java/consulo/javascript/debugger/JavaScriptLineBreakpointTypeResolver.java +++ b/debugger/debugger-impl/src/main/java/consulo/javascript/debugger/JavaScriptLineBreakpointTypeResolver.java @@ -24,9 +24,9 @@ import consulo.project.Project; import consulo.virtualFileSystem.VirtualFile; import consulo.virtualFileSystem.fileType.FileType; +import jakarta.annotation.Nonnull; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/debugger/debugger-impl/src/main/java/consulo/javascript/debugger/JavaScriptListPanel.java b/debugger/debugger-impl/src/main/java/consulo/javascript/debugger/JavaScriptListPanel.java index f5fa3627..de39449a 100644 --- a/debugger/debugger-impl/src/main/java/consulo/javascript/debugger/JavaScriptListPanel.java +++ b/debugger/debugger-impl/src/main/java/consulo/javascript/debugger/JavaScriptListPanel.java @@ -26,8 +26,9 @@ import consulo.util.io.FileUtil; import consulo.virtualFileSystem.VirtualFile; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; + import javax.swing.*; import java.awt.*; import java.awt.event.MouseAdapter; diff --git a/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8BaseDebugProcess.java b/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8BaseDebugProcess.java index 99054a12..23bfbe0d 100644 --- a/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8BaseDebugProcess.java +++ b/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8BaseDebugProcess.java @@ -38,13 +38,14 @@ import consulo.ui.ex.awt.UIUtil; import consulo.ui.ex.content.Content; import consulo.virtualFileSystem.VirtualFile; +import jakarta.annotation.Nullable; import org.chromium.sdk.Breakpoint; import org.chromium.sdk.DebugContext; import org.chromium.sdk.JavascriptVm; import org.chromium.sdk.Script; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; + import java.util.Collection; import java.util.HashMap; import java.util.Map; diff --git a/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8BaseVariableValue.java b/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8BaseVariableValue.java index e6f63763..f2fc8792 100644 --- a/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8BaseVariableValue.java +++ b/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8BaseVariableValue.java @@ -22,8 +22,8 @@ import consulo.ui.image.Image; import org.chromium.sdk.*; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; import java.util.Collection; /** diff --git a/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8DebugProcess.java b/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8DebugProcess.java index da20fe73..2c0a2c7f 100644 --- a/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8DebugProcess.java +++ b/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8DebugProcess.java @@ -24,7 +24,7 @@ import org.chromium.sdk.JavascriptVmFactory; import org.chromium.sdk.StandaloneVm; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import java.net.InetSocketAddress; /** diff --git a/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8ExecutionStack.java b/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8ExecutionStack.java index 42918a8a..3ee5e58b 100644 --- a/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8ExecutionStack.java +++ b/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8ExecutionStack.java @@ -18,10 +18,10 @@ import consulo.execution.debug.frame.XExecutionStack; import consulo.execution.debug.frame.XStackFrame; +import jakarta.annotation.Nullable; import org.chromium.sdk.CallFrame; import org.chromium.sdk.DebugContext; -import javax.annotation.Nullable; import java.util.ArrayList; import java.util.List; diff --git a/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8ScriptUtil.java b/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8ScriptUtil.java index c1efd9c4..99597f63 100644 --- a/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8ScriptUtil.java +++ b/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8ScriptUtil.java @@ -24,7 +24,7 @@ import consulo.util.dataholder.Key; import org.chromium.sdk.Script; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import java.io.File; /** diff --git a/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8StackFrame.java b/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8StackFrame.java index 0f62be4d..1ddb7998 100644 --- a/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8StackFrame.java +++ b/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8StackFrame.java @@ -25,10 +25,10 @@ import consulo.platform.base.icon.PlatformIconGroup; import consulo.ui.ex.ColoredTextContainer; import consulo.ui.ex.SimpleTextAttributes; +import jakarta.annotation.Nonnull; import org.chromium.sdk.*; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; import java.util.Collections; import java.util.List; diff --git a/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8SuspendContext.java b/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8SuspendContext.java index 0495ac67..67e97114 100644 --- a/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8SuspendContext.java +++ b/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8SuspendContext.java @@ -20,7 +20,7 @@ import consulo.execution.debug.frame.XSuspendContext; import org.chromium.sdk.DebugContext; -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8VariableValue.java b/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8VariableValue.java index 9d7af7ce..e8fd3c90 100644 --- a/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8VariableValue.java +++ b/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8VariableValue.java @@ -20,8 +20,8 @@ import consulo.execution.debug.frame.XValueModifier; import org.chromium.sdk.*; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8WatchValue.java b/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8WatchValue.java index 55a32d83..fb9b4d1b 100644 --- a/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8WatchValue.java +++ b/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8WatchValue.java @@ -21,7 +21,7 @@ import org.chromium.sdk.JsEvaluateContext; import org.chromium.sdk.JsValue; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/inspections/src/main/java/com/sixrr/inspectjs/BaseInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/BaseInspection.java index 3ffed716..e04561dc 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/BaseInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/BaseInspection.java @@ -14,8 +14,8 @@ import consulo.language.psi.PsiNamedElement; import consulo.language.psi.util.PsiTreeUtil; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; public abstract class BaseInspection extends LocalInspectionTool implements CustomSuppressableInspectionTool { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/BaseInspectionVisitor.java b/inspections/src/main/java/com/sixrr/inspectjs/BaseInspectionVisitor.java index c51f127d..c3d7779d 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/BaseInspectionVisitor.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/BaseInspectionVisitor.java @@ -6,9 +6,9 @@ import consulo.language.psi.PsiElement; import consulo.language.psi.PsiWhiteSpace; import consulo.language.psi.util.PsiTreeUtil; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.util.List; public abstract class BaseInspectionVisitor extends JSElementVisitor diff --git a/inspections/src/main/java/com/sixrr/inspectjs/InspectionJSFix.java b/inspections/src/main/java/com/sixrr/inspectjs/InspectionJSFix.java index 963f4a1d..7235e786 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/InspectionJSFix.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/InspectionJSFix.java @@ -16,7 +16,7 @@ import consulo.virtualFileSystem.VirtualFile; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; public abstract class InspectionJSFix implements LocalQuickFix { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentResultUsedJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentResultUsedJSInspection.java index f5b1db7d..0bcf09e0 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentResultUsedJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentResultUsedJSInspection.java @@ -8,9 +8,8 @@ import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; - -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; @ExtensionImpl public class AssignmentResultUsedJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentToForLoopParameterJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentToForLoopParameterJSInspection.java index be0a5787..9cabb056 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentToForLoopParameterJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentToForLoopParameterJSInspection.java @@ -11,8 +11,7 @@ import consulo.language.ast.IElementType; import consulo.language.psi.PsiElement; import consulo.language.psi.util.PsiTreeUtil; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class AssignmentToForLoopParameterJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentToFunctionParameterJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentToFunctionParameterJSInspection.java index 111b413e..9c3dbbb4 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentToFunctionParameterJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentToFunctionParameterJSInspection.java @@ -12,8 +12,8 @@ import com.sixrr.inspectjs.JavaScriptInspection; import consulo.language.psi.PsiReference; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; @ExtensionImpl public class AssignmentToFunctionParameterJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/assignment/NestedAssignmentJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/assignment/NestedAssignmentJSInspection.java index 3043ab6b..245f3938 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/assignment/NestedAssignmentJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/assignment/NestedAssignmentJSInspection.java @@ -9,7 +9,7 @@ import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class NestedAssignmentJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/assignment/ReplaceAssignmentWithOperatorAssignmentJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/assignment/ReplaceAssignmentWithOperatorAssignmentJSInspection.java index 792d2e8a..1c89b27d 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/assignment/ReplaceAssignmentWithOperatorAssignmentJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/assignment/ReplaceAssignmentWithOperatorAssignmentJSInspection.java @@ -15,10 +15,9 @@ import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; import consulo.project.Project; +import jakarta.annotation.Nonnull; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; - @ExtensionImpl public class ReplaceAssignmentWithOperatorAssignmentJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/assignment/SillyAssignmentJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/assignment/SillyAssignmentJSInspection.java index a14d8221..2cf5f9c2 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/assignment/SillyAssignmentJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/assignment/SillyAssignmentJSInspection.java @@ -15,7 +15,7 @@ import consulo.language.ast.IElementType; import consulo.language.psi.PsiElement; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class SillyAssignmentJSInspection diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bitwise/IncompatibleMaskJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bitwise/IncompatibleMaskJSInspection.java index 2683b65f..dab86d16 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bitwise/IncompatibleMaskJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bitwise/IncompatibleMaskJSInspection.java @@ -14,7 +14,7 @@ import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class IncompatibleMaskJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bitwise/PointlessBitwiseExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bitwise/PointlessBitwiseExpressionJSInspection.java index ace5540c..006e9fd3 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bitwise/PointlessBitwiseExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bitwise/PointlessBitwiseExpressionJSInspection.java @@ -15,7 +15,7 @@ import consulo.language.util.IncorrectOperationException; import consulo.project.Project; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import java.util.HashSet; import java.util.Set; diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bitwise/PointlessBitwiseExpressionJSInspectionState.java b/inspections/src/main/java/com/sixrr/inspectjs/bitwise/PointlessBitwiseExpressionJSInspectionState.java index 9947a019..575e6047 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bitwise/PointlessBitwiseExpressionJSInspectionState.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bitwise/PointlessBitwiseExpressionJSInspectionState.java @@ -7,7 +7,7 @@ import consulo.language.editor.inspection.InspectionToolState; import consulo.util.xml.serializer.XmlSerializerUtil; -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bitwise/ShiftOutOfRangeJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bitwise/ShiftOutOfRangeJSInspection.java index d90feebd..4db0ba49 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bitwise/ShiftOutOfRangeJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bitwise/ShiftOutOfRangeJSInspection.java @@ -11,7 +11,7 @@ import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; import com.sixrr.inspectjs.utils.ExpressionUtil; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class ShiftOutOfRangeJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bugs/DivideByZeroJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bugs/DivideByZeroJSInspection.java index 6a46cb73..635db319 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bugs/DivideByZeroJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bugs/DivideByZeroJSInspection.java @@ -13,7 +13,7 @@ import consulo.language.ast.IElementType; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class DivideByZeroJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bugs/EqualityComparisonWithCoercionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bugs/EqualityComparisonWithCoercionJSInspection.java index a0062a6c..d28ac7b0 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bugs/EqualityComparisonWithCoercionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bugs/EqualityComparisonWithCoercionJSInspection.java @@ -13,7 +13,7 @@ import consulo.project.Project; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class EqualityComparisonWithCoercionJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bugs/InfiniteLoopJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bugs/InfiniteLoopJSInspection.java index edbb9a0f..6e933a9f 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bugs/InfiniteLoopJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bugs/InfiniteLoopJSInspection.java @@ -11,7 +11,7 @@ import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class InfiniteLoopJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bugs/InfiniteRecursionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bugs/InfiniteRecursionJSInspection.java index adfe9cb2..6edd655f 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bugs/InfiniteRecursionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bugs/InfiniteRecursionJSInspection.java @@ -9,7 +9,7 @@ import consulo.annotation.component.ExtensionImpl; import consulo.logging.Logger; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class InfiniteRecursionJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bugs/NonShortCircuitBooleanExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bugs/NonShortCircuitBooleanExpressionJSInspection.java index bc45fc73..7ce96288 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bugs/NonShortCircuitBooleanExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bugs/NonShortCircuitBooleanExpressionJSInspection.java @@ -12,8 +12,8 @@ import consulo.language.util.IncorrectOperationException; import consulo.project.Project; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; @ExtensionImpl public class NonShortCircuitBooleanExpressionJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bugs/ObjectAllocationIgnoredJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bugs/ObjectAllocationIgnoredJSInspection.java index f04231a4..db19d923 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bugs/ObjectAllocationIgnoredJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bugs/ObjectAllocationIgnoredJSInspection.java @@ -10,7 +10,7 @@ import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class ObjectAllocationIgnoredJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bugs/RecursionUtils.java b/inspections/src/main/java/com/sixrr/inspectjs/bugs/RecursionUtils.java index 8b814bfa..e9e754fc 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bugs/RecursionUtils.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bugs/RecursionUtils.java @@ -1,6 +1,6 @@ package com.sixrr.inspectjs.bugs; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import consulo.language.ast.IElementType; import com.intellij.lang.javascript.psi.*; diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bugs/RecursionVisitor.java b/inspections/src/main/java/com/sixrr/inspectjs/bugs/RecursionVisitor.java index 4f7325b4..ed863a03 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bugs/RecursionVisitor.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bugs/RecursionVisitor.java @@ -3,7 +3,7 @@ import com.intellij.lang.javascript.psi.*; import consulo.language.psi.PsiElement; import com.sixrr.inspectjs.JSRecursiveElementVisitor; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; public class RecursionVisitor extends JSRecursiveElementVisitor { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bugs/TextLabelInSwitchStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bugs/TextLabelInSwitchStatementJSInspection.java index a2e9eef2..80554a31 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bugs/TextLabelInSwitchStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bugs/TextLabelInSwitchStatementJSInspection.java @@ -11,7 +11,7 @@ import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class TextLabelInSwitchStatementJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/AnonymousFunctionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/AnonymousFunctionJSInspection.java index 7a08f741..a8e939fe 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/AnonymousFunctionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/AnonymousFunctionJSInspection.java @@ -11,8 +11,8 @@ import consulo.language.psi.PsiElement; import consulo.language.psi.util.PsiTreeUtil; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; @ExtensionImpl public class AnonymousFunctionJSInspection extends JavaScriptInspection{ diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/BlockStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/BlockStatementJSInspection.java index 89433927..de2890e9 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/BlockStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/BlockStatementJSInspection.java @@ -9,8 +9,8 @@ import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; @ExtensionImpl public class BlockStatementJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/CallerJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/CallerJSInspection.java index 3217ac6c..e0d424ca 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/CallerJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/CallerJSInspection.java @@ -8,8 +8,8 @@ import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; @ExtensionImpl public class CallerJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/CommaExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/CommaExpressionJSInspection.java index c71bfaf5..c77502fc 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/CommaExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/CommaExpressionJSInspection.java @@ -9,8 +9,8 @@ import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; @ExtensionImpl public class CommaExpressionJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConditionalExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConditionalExpressionJSInspection.java index 39461311..b4ac6c45 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConditionalExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConditionalExpressionJSInspection.java @@ -8,8 +8,8 @@ import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; @ExtensionImpl public class ConditionalExpressionJSInspection extends JavaScriptInspection diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConfusingFloatingPointLiteralJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConfusingFloatingPointLiteralJSInspection.java index 36fad493..6b7796e0 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConfusingFloatingPointLiteralJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConfusingFloatingPointLiteralJSInspection.java @@ -11,7 +11,7 @@ import consulo.language.psi.PsiElement; import consulo.project.Project; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import java.util.regex.Matcher; import java.util.regex.Pattern; diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConfusingPlusesOrMinusesJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConfusingPlusesOrMinusesJSInspection.java index 2456a559..8333b3c8 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConfusingPlusesOrMinusesJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConfusingPlusesOrMinusesJSInspection.java @@ -12,8 +12,8 @@ import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; @ExtensionImpl public class ConfusingPlusesOrMinusesJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/DynamicallyGeneratedCodeJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/DynamicallyGeneratedCodeJSInspection.java index 29f3dc31..72996993 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/DynamicallyGeneratedCodeJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/DynamicallyGeneratedCodeJSInspection.java @@ -10,10 +10,10 @@ import com.sixrr.inspectjs.JavaScriptInspection; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import jakarta.annotation.Nullable; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; @ExtensionImpl public class DynamicallyGeneratedCodeJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/EmptyStatementBodyJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/EmptyStatementBodyJSInspection.java index 0f4c56c6..ee1f43fc 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/EmptyStatementBodyJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/EmptyStatementBodyJSInspection.java @@ -9,7 +9,7 @@ import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.inspection.InspectionToolState; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class EmptyStatementBodyJSInspection extends JavaScriptInspection diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/EmptyStatementBodyJSInspectionState.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/EmptyStatementBodyJSInspectionState.java index fb4e601a..fcd796d6 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/EmptyStatementBodyJSInspectionState.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/EmptyStatementBodyJSInspectionState.java @@ -7,7 +7,7 @@ import consulo.language.editor.inspection.InspectionToolState; import consulo.util.xml.serializer.XmlSerializerUtil; -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/IncrementDecrementResultUsedJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/IncrementDecrementResultUsedJSInspection.java index eca9abd9..ba584a71 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/IncrementDecrementResultUsedJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/IncrementDecrementResultUsedJSInspection.java @@ -10,8 +10,8 @@ import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; @ExtensionImpl public class IncrementDecrementResultUsedJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/MagicNumberJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/MagicNumberJSInspection.java index 2a3221fe..b3bb4367 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/MagicNumberJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/MagicNumberJSInspection.java @@ -11,7 +11,7 @@ import consulo.javascript.psi.JSSimpleLiteralExpression; import consulo.language.psi.PsiElement; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import java.util.HashSet; import java.util.Set; diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/NegatedConditionalExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/NegatedConditionalExpressionJSInspection.java index d77a5509..a3dd49c8 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/NegatedConditionalExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/NegatedConditionalExpressionJSInspection.java @@ -15,8 +15,8 @@ import consulo.language.util.IncorrectOperationException; import consulo.project.Project; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; @ExtensionImpl public class NegatedConditionalExpressionJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/NegatedIfStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/NegatedIfStatementJSInspection.java index ecd1afcb..077d2a4c 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/NegatedIfStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/NegatedIfStatementJSInspection.java @@ -18,8 +18,8 @@ import consulo.project.Project; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; @ExtensionImpl public class NegatedIfStatementJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/NestedConditionalExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/NestedConditionalExpressionJSInspection.java index f65d4630..86370e10 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/NestedConditionalExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/NestedConditionalExpressionJSInspection.java @@ -8,9 +8,8 @@ import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.util.PsiTreeUtil; - -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; @ExtensionImpl public class NestedConditionalExpressionJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/NestedFunctionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/NestedFunctionJSInspection.java index 8daba3f8..cac0c708 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/NestedFunctionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/NestedFunctionJSInspection.java @@ -11,9 +11,9 @@ import consulo.language.editor.inspection.InspectionToolState; import consulo.language.psi.PsiElement; import consulo.language.psi.util.PsiTreeUtil; +import jakarta.annotation.Nonnull; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; @ExtensionImpl public class NestedFunctionJSInspection extends JavaScriptInspection diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/NestedFunctionJSInspectionState.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/NestedFunctionJSInspectionState.java index 84f1ab28..b971f656 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/NestedFunctionJSInspectionState.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/NestedFunctionJSInspectionState.java @@ -6,8 +6,7 @@ import consulo.configurable.UnnamedConfigurable; import consulo.language.editor.inspection.InspectionToolState; import consulo.util.xml.serializer.XmlSerializerUtil; - -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/OctalIntegerJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/OctalIntegerJSInspection.java index 633cafea..deae7244 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/OctalIntegerJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/OctalIntegerJSInspection.java @@ -7,9 +7,9 @@ import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import jakarta.annotation.Nonnull; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; @ExtensionImpl public class OctalIntegerJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexArithmeticExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexArithmeticExpressionJSInspection.java index 576eaf48..01fa2167 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexArithmeticExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexArithmeticExpressionJSInspection.java @@ -11,8 +11,8 @@ import consulo.language.ast.IElementType; import consulo.language.editor.inspection.InspectionToolState; import consulo.language.psi.PsiElement; +import jakarta.annotation.Nonnull; -import javax.annotation.Nonnull; import java.util.HashSet; import java.util.Set; diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexArithmeticExpressionJSInspectionState.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexArithmeticExpressionJSInspectionState.java index f7ed289d..da05920e 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexArithmeticExpressionJSInspectionState.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexArithmeticExpressionJSInspectionState.java @@ -8,7 +8,7 @@ import consulo.ui.Label; import consulo.util.xml.serializer.XmlSerializerUtil; -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexBooleanExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexBooleanExpressionJSInspection.java index 83ceeec9..a5f4510b 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexBooleanExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexBooleanExpressionJSInspection.java @@ -15,7 +15,7 @@ import consulo.language.editor.inspection.InspectionToolState; import consulo.language.psi.PsiElement; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class OverlyComplexBooleanExpressionJSInspection extends JavaScriptInspection diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexBooleanExpressionJSInspectionState.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexBooleanExpressionJSInspectionState.java index ab2a197e..5449eaf7 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexBooleanExpressionJSInspectionState.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexBooleanExpressionJSInspectionState.java @@ -8,7 +8,7 @@ import consulo.ui.Label; import consulo.util.xml.serializer.XmlSerializerUtil; -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/PointlessArithmeticExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/PointlessArithmeticExpressionJSInspection.java index 17e964b9..ac3851b9 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/PointlessArithmeticExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/PointlessArithmeticExpressionJSInspection.java @@ -13,7 +13,7 @@ import com.sixrr.inspectjs.*; import consulo.project.Project; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import java.util.HashSet; import java.util.Set; diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/PointlessBooleanExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/PointlessBooleanExpressionJSInspection.java index 0f42899d..a240125f 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/PointlessBooleanExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/PointlessBooleanExpressionJSInspection.java @@ -16,8 +16,8 @@ import com.sixrr.inspectjs.utils.ParenthesesUtils; import consulo.project.Project; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; import java.util.HashSet; import java.util.Set; diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/VoidExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/VoidExpressionJSInspection.java index e3e20e0d..2d2579d2 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/VoidExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/VoidExpressionJSInspection.java @@ -10,8 +10,8 @@ import consulo.language.psi.PsiElement; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; @ExtensionImpl public class VoidExpressionJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/WithStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/WithStatementJSInspection.java index 82c1fb3a..f1838b75 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/WithStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/WithStatementJSInspection.java @@ -8,8 +8,8 @@ import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; @ExtensionImpl public class WithStatementJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/BreakStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/BreakStatementJSInspection.java index f204aa0b..b42ff17b 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/BreakStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/BreakStatementJSInspection.java @@ -9,8 +9,8 @@ import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; @ExtensionImpl public class BreakStatementJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/BreakStatementWithLabelJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/BreakStatementWithLabelJSInspection.java index 2372b456..e44c5bd4 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/BreakStatementWithLabelJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/BreakStatementWithLabelJSInspection.java @@ -8,8 +8,8 @@ import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; @ExtensionImpl public class BreakStatementWithLabelJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/ConditionalExpressionWithIdenticalBranchesJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/ConditionalExpressionWithIdenticalBranchesJSInspection.java index c282ed2f..bd46b974 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/ConditionalExpressionWithIdenticalBranchesJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/ConditionalExpressionWithIdenticalBranchesJSInspection.java @@ -10,8 +10,7 @@ import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; import consulo.project.Project; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class ConditionalExpressionWithIdenticalBranchesJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/ConstantConditionalExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/ConstantConditionalExpressionJSInspection.java index a5e039f8..40a1dbd6 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/ConstantConditionalExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/ConstantConditionalExpressionJSInspection.java @@ -10,8 +10,7 @@ import com.sixrr.inspectjs.*; import com.sixrr.inspectjs.utils.BoolUtils; import consulo.language.editor.inspection.ProblemDescriptor; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class ConstantConditionalExpressionJSInspection diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/ConstantIfStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/ConstantIfStatementJSInspection.java index 8ebd7a76..0cb6dee6 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/ConstantIfStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/ConstantIfStatementJSInspection.java @@ -12,7 +12,7 @@ import consulo.language.util.IncorrectOperationException; import consulo.project.Project; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class ConstantIfStatementJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/ContinueStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/ContinueStatementJSInspection.java index af7fa0b3..0a24c71a 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/ContinueStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/ContinueStatementJSInspection.java @@ -8,8 +8,8 @@ import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; @ExtensionImpl public class ContinueStatementJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/ContinueStatementWithLabelJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/ContinueStatementWithLabelJSInspection.java index 2d464232..78ce535d 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/ContinueStatementWithLabelJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/ContinueStatementWithLabelJSInspection.java @@ -8,8 +8,8 @@ import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; @ExtensionImpl public class ContinueStatementWithLabelJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/DefaultNotLastCaseInSwitchJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/DefaultNotLastCaseInSwitchJSInspection.java index 58786983..744a5af1 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/DefaultNotLastCaseInSwitchJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/DefaultNotLastCaseInSwitchJSInspection.java @@ -8,8 +8,7 @@ import com.sixrr.inspectjs.JavaScriptInspection; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class DefaultNotLastCaseInSwitchJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/DuplicateConditionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/DuplicateConditionJSInspection.java index fd4bced6..bfbf65de 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/DuplicateConditionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/DuplicateConditionJSInspection.java @@ -11,8 +11,7 @@ import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; import consulo.language.psi.PsiElement; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import java.util.Arrays; import java.util.HashSet; diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/FallthroughInSwitchStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/FallthroughInSwitchStatementJSInspection.java index eb486af4..7b29bdcb 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/FallthroughInSwitchStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/FallthroughInSwitchStatementJSInspection.java @@ -12,8 +12,8 @@ import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; @ExtensionImpl public class FallthroughInSwitchStatementJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/ForLoopReplaceableByWhileJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/ForLoopReplaceableByWhileJSInspection.java index 8b3eaf5f..4fb9e0e6 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/ForLoopReplaceableByWhileJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/ForLoopReplaceableByWhileJSInspection.java @@ -14,7 +14,7 @@ import consulo.project.Project; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class ForLoopReplaceableByWhileJSInspection extends JavaScriptInspection diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/ForLoopReplaceableByWhileJSInspectionState.java b/inspections/src/main/java/com/sixrr/inspectjs/control/ForLoopReplaceableByWhileJSInspectionState.java index 97b399c2..af40113c 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/ForLoopReplaceableByWhileJSInspectionState.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/ForLoopReplaceableByWhileJSInspectionState.java @@ -6,8 +6,7 @@ import consulo.configurable.UnnamedConfigurable; import consulo.language.editor.inspection.InspectionToolState; import consulo.util.xml.serializer.XmlSerializerUtil; - -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/ForLoopThatDoesntUseLoopVariableJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/ForLoopThatDoesntUseLoopVariableJSInspection.java index da35a04f..46f532ad 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/ForLoopThatDoesntUseLoopVariableJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/ForLoopThatDoesntUseLoopVariableJSInspection.java @@ -6,7 +6,7 @@ import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class ForLoopThatDoesntUseLoopVariableJSInspection diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/IfStatementWithIdenticalBranchesJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/IfStatementWithIdenticalBranchesJSInspection.java index 367f8e91..834dc95e 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/IfStatementWithIdenticalBranchesJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/IfStatementWithIdenticalBranchesJSInspection.java @@ -11,7 +11,7 @@ import consulo.language.util.IncorrectOperationException; import consulo.project.Project; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class IfStatementWithIdenticalBranchesJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/IfStatementWithTooManyBranchesJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/IfStatementWithTooManyBranchesJSInspection.java index 9fded7b8..b892b7e9 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/IfStatementWithTooManyBranchesJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/IfStatementWithTooManyBranchesJSInspection.java @@ -11,7 +11,7 @@ import consulo.language.editor.inspection.InspectionToolState; import consulo.language.psi.PsiElement; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class IfStatementWithTooManyBranchesJSInspection extends JavaScriptInspection diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/IfStatementWithTooManyBranchesJSInspectionState.java b/inspections/src/main/java/com/sixrr/inspectjs/control/IfStatementWithTooManyBranchesJSInspectionState.java index fa1a5c11..8900fb5e 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/IfStatementWithTooManyBranchesJSInspectionState.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/IfStatementWithTooManyBranchesJSInspectionState.java @@ -8,8 +8,7 @@ import consulo.ui.IntBox; import consulo.ui.Label; import consulo.util.xml.serializer.XmlSerializerUtil; - -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/LabeledStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/LabeledStatementJSInspection.java index daffe18e..40f0f30a 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/LabeledStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/LabeledStatementJSInspection.java @@ -7,9 +7,9 @@ import com.sixrr.inspectjs.JavaScriptInspection; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; @ExtensionImpl public class LabeledStatementJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/LoopStatementThatDoesntLoopJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/LoopStatementThatDoesntLoopJSInspection.java index 5f3f4aad..83ffc86c 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/LoopStatementThatDoesntLoopJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/LoopStatementThatDoesntLoopJSInspection.java @@ -9,7 +9,7 @@ import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class LoopStatementThatDoesntLoopJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/NestedSwitchStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/NestedSwitchStatementJSInspection.java index e5987017..d09fdc66 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/NestedSwitchStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/NestedSwitchStatementJSInspection.java @@ -8,9 +8,8 @@ import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.util.PsiTreeUtil; - -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; @ExtensionImpl public class NestedSwitchStatementJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/SwitchStatementWithNoDefaultBranchJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/SwitchStatementWithNoDefaultBranchJSInspection.java index f6adddc7..64882d6f 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/SwitchStatementWithNoDefaultBranchJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/SwitchStatementWithNoDefaultBranchJSInspection.java @@ -9,8 +9,8 @@ import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; @ExtensionImpl public class SwitchStatementWithNoDefaultBranchJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/TailRecursionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/TailRecursionJSInspection.java index 453fd25a..980ad6e6 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/TailRecursionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/TailRecursionJSInspection.java @@ -10,7 +10,7 @@ import consulo.language.psi.PsiElement; import consulo.language.psi.util.PsiTreeUtil; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class TailRecursionJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/TrivialConditionalJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/TrivialConditionalJSInspection.java index 048a447e..121565a7 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/TrivialConditionalJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/TrivialConditionalJSInspection.java @@ -11,10 +11,9 @@ import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; import consulo.project.Project; +import jakarta.annotation.Nonnull; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; - @ExtensionImpl public class TrivialConditionalJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/TrivialIfJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/TrivialIfJSInspection.java index b22e97bf..9664939f 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/TrivialIfJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/TrivialIfJSInspection.java @@ -17,7 +17,7 @@ import consulo.project.Project; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryContinueJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryContinueJSInspection.java index 9596cd6b..9858989a 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryContinueJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryContinueJSInspection.java @@ -9,8 +9,7 @@ import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; import consulo.project.Project; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class UnnecessaryContinueJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelJSInspection.java index b378d41d..a6a37150 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelJSInspection.java @@ -12,7 +12,7 @@ import com.sixrr.inspectjs.*; import consulo.project.Project; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class UnnecessaryLabelJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelOnBreakStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelOnBreakStatementJSInspection.java index 78d60c38..b6b66f3a 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelOnBreakStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelOnBreakStatementJSInspection.java @@ -13,8 +13,8 @@ import consulo.language.util.IncorrectOperationException; import consulo.project.Project; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; @ExtensionImpl public class UnnecessaryLabelOnBreakStatementJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelOnContinueStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelOnContinueStatementJSInspection.java index 1f4e8db8..8b3ab4b5 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelOnContinueStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelOnContinueStatementJSInspection.java @@ -12,8 +12,8 @@ import consulo.language.util.IncorrectOperationException; import consulo.project.Project; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; @ExtensionImpl public class UnnecessaryLabelOnContinueStatementJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryReturnJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryReturnJSInspection.java index e2587272..dc21bac3 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryReturnJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryReturnJSInspection.java @@ -10,8 +10,7 @@ import consulo.language.psi.util.PsiTreeUtil; import consulo.language.util.IncorrectOperationException; import consulo.project.Project; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class UnnecessaryReturnJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/dataflow/ReuseOfLocalVariableJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/dataflow/ReuseOfLocalVariableJSInspection.java index 5fe42579..247c00c0 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/dataflow/ReuseOfLocalVariableJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/dataflow/ReuseOfLocalVariableJSInspection.java @@ -13,8 +13,8 @@ import consulo.language.psi.PsiReference; import consulo.language.psi.util.PsiTreeUtil; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; @ExtensionImpl public class ReuseOfLocalVariableJSInspection extends JavaScriptInspection diff --git a/inspections/src/main/java/com/sixrr/inspectjs/dataflow/UnnecessaryLocalVariableJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/dataflow/UnnecessaryLocalVariableJSInspection.java index daae2e19..cfa3e6d4 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/dataflow/UnnecessaryLocalVariableJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/dataflow/UnnecessaryLocalVariableJSInspection.java @@ -12,7 +12,7 @@ import consulo.language.psi.PsiReference; import consulo.language.psi.util.PsiTreeUtil; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class UnnecessaryLocalVariableJSInspection extends JavaScriptInspection diff --git a/inspections/src/main/java/com/sixrr/inspectjs/dataflow/UnnecessaryLocalVariableJSInspectionState.java b/inspections/src/main/java/com/sixrr/inspectjs/dataflow/UnnecessaryLocalVariableJSInspectionState.java index 4cae1dac..6485d7c6 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/dataflow/UnnecessaryLocalVariableJSInspectionState.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/dataflow/UnnecessaryLocalVariableJSInspectionState.java @@ -7,7 +7,7 @@ import consulo.language.editor.inspection.InspectionToolState; import consulo.util.xml.serializer.XmlSerializerUtil; -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/inspections/src/main/java/com/sixrr/inspectjs/dataflow/VariableAssignedVisitor.java b/inspections/src/main/java/com/sixrr/inspectjs/dataflow/VariableAssignedVisitor.java index 24048c18..445439f8 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/dataflow/VariableAssignedVisitor.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/dataflow/VariableAssignedVisitor.java @@ -5,7 +5,7 @@ import consulo.language.psi.PsiElement; import consulo.language.ast.IElementType; import com.sixrr.inspectjs.JSRecursiveElementVisitor; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; public class VariableAssignedVisitor extends JSRecursiveElementVisitor { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/dataflow/VariableUsedInInnerFunctionVisitor.java b/inspections/src/main/java/com/sixrr/inspectjs/dataflow/VariableUsedInInnerFunctionVisitor.java index 9c8f5e7e..71b5293c 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/dataflow/VariableUsedInInnerFunctionVisitor.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/dataflow/VariableUsedInInnerFunctionVisitor.java @@ -1,12 +1,11 @@ package com.sixrr.inspectjs.dataflow; -import javax.annotation.Nonnull; - import com.intellij.lang.javascript.psi.JSReferenceExpression; import com.intellij.lang.javascript.psi.JSVariable; import com.intellij.lang.javascript.psi.JSFunctionExpression; import com.sixrr.inspectjs.JSRecursiveElementVisitor; import consulo.language.psi.PsiElement; +import jakarta.annotation.Nonnull; public class VariableUsedInInnerFunctionVisitor extends JSRecursiveElementVisitor { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/dataflow/VariableUsedVisitor.java b/inspections/src/main/java/com/sixrr/inspectjs/dataflow/VariableUsedVisitor.java index 2ca6d417..53bef780 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/dataflow/VariableUsedVisitor.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/dataflow/VariableUsedVisitor.java @@ -1,6 +1,6 @@ package com.sixrr.inspectjs.dataflow; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import com.intellij.lang.javascript.psi.JSElement; import com.intellij.lang.javascript.psi.JSReferenceExpression; diff --git a/inspections/src/main/java/com/sixrr/inspectjs/dom/DocumentWriteJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/dom/DocumentWriteJSInspection.java index cc8d1b8b..38b6ed0e 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/dom/DocumentWriteJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/dom/DocumentWriteJSInspection.java @@ -9,10 +9,10 @@ import com.sixrr.inspectjs.JavaScriptInspection; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import jakarta.annotation.Nullable; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; @ExtensionImpl public class DocumentWriteJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/dom/InnerHTMLJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/dom/InnerHTMLJSInspection.java index 48c91a4f..3ddbdcd2 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/dom/InnerHTMLJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/dom/InnerHTMLJSInspection.java @@ -8,8 +8,8 @@ import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; @ExtensionImpl public class InnerHTMLJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/dom/PlatformDetectionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/dom/PlatformDetectionJSInspection.java index 51426728..8f3cf5c5 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/dom/PlatformDetectionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/dom/PlatformDetectionJSInspection.java @@ -8,9 +8,9 @@ import com.sixrr.inspectjs.JavaScriptInspection; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import jakarta.annotation.Nonnull; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; @ExtensionImpl public class PlatformDetectionJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/dom/XHTMLIncompatabilitiesJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/dom/XHTMLIncompatabilitiesJSInspection.java index 9edfe6cf..a044ec8f 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/dom/XHTMLIncompatabilitiesJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/dom/XHTMLIncompatabilitiesJSInspection.java @@ -9,8 +9,8 @@ import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; @ExtensionImpl public class XHTMLIncompatabilitiesJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/exception/CatchParameterUsedVisitor.java b/inspections/src/main/java/com/sixrr/inspectjs/exception/CatchParameterUsedVisitor.java index 945edbe5..300682d5 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/exception/CatchParameterUsedVisitor.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/exception/CatchParameterUsedVisitor.java @@ -5,7 +5,7 @@ import com.sixrr.inspectjs.JSRecursiveElementVisitor; import consulo.language.psi.PsiElement; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; class CatchParameterUsedVisitor extends JSRecursiveElementVisitor { private final JSParameter parameter; diff --git a/inspections/src/main/java/com/sixrr/inspectjs/exception/ContinueOrBreakFromFinallyBlockJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/exception/ContinueOrBreakFromFinallyBlockJSInspection.java index 44e07ffe..7b61b766 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/exception/ContinueOrBreakFromFinallyBlockJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/exception/ContinueOrBreakFromFinallyBlockJSInspection.java @@ -10,8 +10,7 @@ import com.sixrr.inspectjs.utils.ControlFlowUtils; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class ContinueOrBreakFromFinallyBlockJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyCatchBlockJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyCatchBlockJSInspection.java index bd1c0d37..347de179 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyCatchBlockJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyCatchBlockJSInspection.java @@ -11,9 +11,8 @@ import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; - -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; @ExtensionImpl public class EmptyCatchBlockJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyFinallyBlockJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyFinallyBlockJSInspection.java index 51817209..7888493e 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyFinallyBlockJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyFinallyBlockJSInspection.java @@ -10,8 +10,8 @@ import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; @ExtensionImpl public class EmptyFinallyBlockJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyTryBlockJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyTryBlockJSInspection.java index fb93f69f..397dc04b 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyTryBlockJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyTryBlockJSInspection.java @@ -10,8 +10,8 @@ import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; @ExtensionImpl public class EmptyTryBlockJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/exception/ExceptionCaughtLocallyJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/exception/ExceptionCaughtLocallyJSInspection.java index e8ea66a2..047368e9 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/exception/ExceptionCaughtLocallyJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/exception/ExceptionCaughtLocallyJSInspection.java @@ -12,7 +12,7 @@ import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.util.PsiTreeUtil; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class ExceptionCaughtLocallyJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/exception/ReturnFromFinallyBlockJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/exception/ReturnFromFinallyBlockJSInspection.java index a04ca1f1..a015acc3 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/exception/ReturnFromFinallyBlockJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/exception/ReturnFromFinallyBlockJSInspection.java @@ -9,7 +9,7 @@ import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class ReturnFromFinallyBlockJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/exception/ThrowFromFinallyBlockJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/exception/ThrowFromFinallyBlockJSInspection.java index ebcadcd2..a58ddf57 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/exception/ThrowFromFinallyBlockJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/exception/ThrowFromFinallyBlockJSInspection.java @@ -1,6 +1,6 @@ package com.sixrr.inspectjs.exception; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import com.intellij.lang.javascript.psi.JSThrowStatement; import com.sixrr.inspectjs.BaseInspectionVisitor; diff --git a/inspections/src/main/java/com/sixrr/inspectjs/exception/UnusedCatchParameterJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/exception/UnusedCatchParameterJSInspection.java index c57f938c..8f65e82f 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/exception/UnusedCatchParameterJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/exception/UnusedCatchParameterJSInspection.java @@ -14,7 +14,7 @@ import consulo.language.psi.PsiComment; import consulo.language.psi.PsiElement; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class UnusedCatchParameterJSInspection extends JavaScriptInspection diff --git a/inspections/src/main/java/com/sixrr/inspectjs/exception/UnusedCatchParameterJSInspectionState.java b/inspections/src/main/java/com/sixrr/inspectjs/exception/UnusedCatchParameterJSInspectionState.java index 45c18657..ba17efdf 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/exception/UnusedCatchParameterJSInspectionState.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/exception/UnusedCatchParameterJSInspectionState.java @@ -7,7 +7,7 @@ import consulo.language.editor.inspection.InspectionToolState; import consulo.util.xml.serializer.XmlSerializerUtil; -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/inspections/src/main/java/com/sixrr/inspectjs/fix/RenameFix.java b/inspections/src/main/java/com/sixrr/inspectjs/fix/RenameFix.java index 901593f4..7e64ffab 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/fix/RenameFix.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/fix/RenameFix.java @@ -10,7 +10,7 @@ import consulo.language.editor.refactoring.RenameRefactoring; import com.sixrr.inspectjs.InspectionJSFix; import com.sixrr.inspectjs.InspectionJSBundle; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; public class RenameFix extends InspectionJSFix { private final String m_targetName; diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/CyclomaticComplexityJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/CyclomaticComplexityJSInspection.java index edd04b06..9970d2c7 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/CyclomaticComplexityJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/CyclomaticComplexityJSInspection.java @@ -11,7 +11,7 @@ import consulo.language.editor.inspection.InspectionToolState; import consulo.language.psi.PsiElement; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class CyclomaticComplexityJSInspection extends JavaScriptInspection diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/CyclomaticComplexityVisitor.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/CyclomaticComplexityVisitor.java index 32a022f0..517ae42a 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/CyclomaticComplexityVisitor.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/CyclomaticComplexityVisitor.java @@ -1,9 +1,8 @@ package com.sixrr.inspectjs.functionmetrics; -import javax.annotation.Nonnull; - import com.intellij.lang.javascript.psi.*; import com.sixrr.inspectjs.JSRecursiveElementVisitor; +import jakarta.annotation.Nonnull; class CyclomaticComplexityVisitor extends JSRecursiveElementVisitor { private int complexity = 1; diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleLoopsJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleLoopsJSInspection.java index bbc1870d..a36c2d9c 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleLoopsJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleLoopsJSInspection.java @@ -9,7 +9,7 @@ import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class FunctionWithMultipleLoopsJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleReturnPointsJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleReturnPointsJSInspection.java index 169304e1..c517eadd 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleReturnPointsJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleReturnPointsJSInspection.java @@ -7,7 +7,7 @@ import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class FunctionWithMultipleReturnPointsJSInspection extends JavaScriptInspection diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/LoopCountVisitor.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/LoopCountVisitor.java index e67204d0..a6827dc8 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/LoopCountVisitor.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/LoopCountVisitor.java @@ -2,7 +2,7 @@ import com.intellij.lang.javascript.psi.*; import com.sixrr.inspectjs.JSRecursiveElementVisitor; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; class LoopCountVisitor extends JSRecursiveElementVisitor { private int loopCount = 0; diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/NegationCountVisitor.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/NegationCountVisitor.java index 9e91ea7c..a7b384b5 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/NegationCountVisitor.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/NegationCountVisitor.java @@ -7,7 +7,7 @@ import com.intellij.lang.javascript.psi.JSPrefixExpression; import consulo.language.ast.IElementType; import com.sixrr.inspectjs.JSRecursiveElementVisitor; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; class NegationCountVisitor extends JSRecursiveElementVisitor { private int negationCount = 0; diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/NestingDepthJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/NestingDepthJSInspection.java index 4487fa90..fc77aa9b 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/NestingDepthJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/NestingDepthJSInspection.java @@ -10,7 +10,7 @@ import consulo.language.editor.inspection.InspectionToolState; import consulo.language.psi.PsiElement; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class NestingDepthJSInspection extends JavaScriptInspection diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/NestingDepthVisitor.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/NestingDepthVisitor.java index 11a666e0..bc36e0ef 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/NestingDepthVisitor.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/NestingDepthVisitor.java @@ -2,7 +2,7 @@ import com.intellij.lang.javascript.psi.*; import com.sixrr.inspectjs.JSRecursiveElementVisitor; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; class NestingDepthVisitor extends JSRecursiveElementVisitor { private int m_maximumDepth = 0; diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/ParametersPerFunctionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/ParametersPerFunctionJSInspection.java index 8e3c2b11..e382b0e0 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/ParametersPerFunctionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/ParametersPerFunctionJSInspection.java @@ -12,7 +12,7 @@ import consulo.language.editor.inspection.InspectionToolState; import consulo.language.psi.PsiElement; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class ParametersPerFunctionJSInspection extends JavaScriptInspection diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/StatementCountVisitor.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/StatementCountVisitor.java index f1894a98..c5038a3a 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/StatementCountVisitor.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/StatementCountVisitor.java @@ -1,6 +1,6 @@ package com.sixrr.inspectjs.functionmetrics; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import com.intellij.lang.javascript.psi.*; import com.sixrr.inspectjs.JSRecursiveElementVisitor; diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/StatementsPerFunctionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/StatementsPerFunctionJSInspection.java index b8092e85..f03377d1 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/StatementsPerFunctionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/StatementsPerFunctionJSInspection.java @@ -11,7 +11,7 @@ import consulo.language.editor.inspection.InspectionToolState; import consulo.language.psi.PsiElement; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class StatementsPerFunctionJSInspection extends JavaScriptInspection diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/ThreeNegationsPerFunctionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/ThreeNegationsPerFunctionJSInspection.java index 7886e5e2..bf44209b 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/ThreeNegationsPerFunctionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/ThreeNegationsPerFunctionJSInspection.java @@ -10,7 +10,7 @@ import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class ThreeNegationsPerFunctionJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/naming/ConventionInspectionState.java b/inspections/src/main/java/com/sixrr/inspectjs/naming/ConventionInspectionState.java index fb23cc08..b05d51c3 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/naming/ConventionInspectionState.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/naming/ConventionInspectionState.java @@ -8,7 +8,7 @@ import consulo.util.xml.serializer.XmlSerializerUtil; import consulo.util.xml.serializer.annotation.Transient; -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; import java.util.regex.Pattern; /** diff --git a/inspections/src/main/java/com/sixrr/inspectjs/naming/FunctionNamingConventionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/naming/FunctionNamingConventionJSInspection.java index 98157ebe..aa335ab6 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/naming/FunctionNamingConventionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/naming/FunctionNamingConventionJSInspection.java @@ -12,7 +12,7 @@ import consulo.language.psi.PsiElement; import consulo.language.psi.util.PsiTreeUtil; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class FunctionNamingConventionJSInspection extends ConventionInspection diff --git a/inspections/src/main/java/com/sixrr/inspectjs/naming/FunctionNamingConventionJSInspectionState.java b/inspections/src/main/java/com/sixrr/inspectjs/naming/FunctionNamingConventionJSInspectionState.java index dfd5e765..c5c77f65 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/naming/FunctionNamingConventionJSInspectionState.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/naming/FunctionNamingConventionJSInspectionState.java @@ -1,10 +1,7 @@ package com.sixrr.inspectjs.naming; -import consulo.configurable.UnnamedConfigurable; import consulo.language.editor.inspection.InspectionToolState; -import javax.annotation.Nullable; - /** * @author VISTALL * @since 18/03/2023 diff --git a/inspections/src/main/java/com/sixrr/inspectjs/naming/LocalVariableNamingConventionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/naming/LocalVariableNamingConventionJSInspection.java index 22966df2..f1bd22e7 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/naming/LocalVariableNamingConventionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/naming/LocalVariableNamingConventionJSInspection.java @@ -12,7 +12,7 @@ import consulo.language.editor.inspection.InspectionToolState; import consulo.language.psi.PsiElement; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class LocalVariableNamingConventionJSInspection extends ConventionInspection diff --git a/inspections/src/main/java/com/sixrr/inspectjs/naming/ParameterNamingConventionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/naming/ParameterNamingConventionJSInspection.java index 732295b9..51e6add9 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/naming/ParameterNamingConventionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/naming/ParameterNamingConventionJSInspection.java @@ -14,7 +14,7 @@ import consulo.language.editor.inspection.InspectionToolState; import consulo.language.psi.PsiElement; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class ParameterNamingConventionJSInspection extends ConventionInspection diff --git a/inspections/src/main/java/com/sixrr/inspectjs/style/ChainedEqualityJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/style/ChainedEqualityJSInspection.java index a9a4aeae..e21137a3 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/style/ChainedEqualityJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/style/ChainedEqualityJSInspection.java @@ -11,7 +11,7 @@ import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class ChainedEqualityJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/style/ChainedFunctionCallJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/style/ChainedFunctionCallJSInspection.java index bf7d95d1..7c0bbfdf 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/style/ChainedFunctionCallJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/style/ChainedFunctionCallJSInspection.java @@ -10,8 +10,7 @@ import com.sixrr.inspectjs.JavaScriptInspection; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class ChainedFunctionCallJSInspection extends JavaScriptInspection diff --git a/inspections/src/main/java/com/sixrr/inspectjs/style/ConstantOnLHSOfComparisonJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/style/ConstantOnLHSOfComparisonJSInspection.java index f656258a..26ae5232 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/style/ConstantOnLHSOfComparisonJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/style/ConstantOnLHSOfComparisonJSInspection.java @@ -13,7 +13,7 @@ import consulo.language.util.IncorrectOperationException; import consulo.project.Project; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class ConstantOnLHSOfComparisonJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/style/ConstantOnRHSOfComparisonJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/style/ConstantOnRHSOfComparisonJSInspection.java index 6d4d8da3..6018ff78 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/style/ConstantOnRHSOfComparisonJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/style/ConstantOnRHSOfComparisonJSInspection.java @@ -13,7 +13,7 @@ import consulo.language.util.IncorrectOperationException; import consulo.project.Project; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class ConstantOnRHSOfComparisonJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/style/NestedFunctionCallJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/style/NestedFunctionCallJSInspection.java index d0473e37..f158d5b7 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/style/NestedFunctionCallJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/style/NestedFunctionCallJSInspection.java @@ -11,7 +11,7 @@ import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl diff --git a/inspections/src/main/java/com/sixrr/inspectjs/style/NonBlockStatementBodyJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/style/NonBlockStatementBodyJSInspection.java index 1ad6f4d1..75b431ca 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/style/NonBlockStatementBodyJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/style/NonBlockStatementBodyJSInspection.java @@ -9,7 +9,7 @@ import consulo.language.util.IncorrectOperationException; import consulo.project.Project; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class NonBlockStatementBodyJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/style/UnterminatedStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/style/UnterminatedStatementJSInspection.java index e85f14ff..cb1499f7 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/style/UnterminatedStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/style/UnterminatedStatementJSInspection.java @@ -12,9 +12,9 @@ import consulo.project.Project; import consulo.xml.psi.xml.XmlAttributeValue; import consulo.xml.psi.xml.XmlTagChild; +import jakarta.annotation.Nonnull; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; @ExtensionImpl public class UnterminatedStatementJSInspection extends JavaScriptInspection diff --git a/inspections/src/main/java/com/sixrr/inspectjs/utils/BoolUtils.java b/inspections/src/main/java/com/sixrr/inspectjs/utils/BoolUtils.java index b6d195d5..3aeda2a5 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/utils/BoolUtils.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/utils/BoolUtils.java @@ -1,6 +1,6 @@ package com.sixrr.inspectjs.utils; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import com.intellij.lang.javascript.JSTokenTypes; import com.intellij.lang.javascript.psi.JSBinaryExpression; @@ -9,7 +9,7 @@ import com.intellij.lang.javascript.psi.JSPrefixExpression; import consulo.language.ast.IElementType; -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; import org.jetbrains.annotations.NonNls; public class BoolUtils { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/utils/ComparisonUtils.java b/inspections/src/main/java/com/sixrr/inspectjs/utils/ComparisonUtils.java index c1cb31cd..a3ebf101 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/utils/ComparisonUtils.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/utils/ComparisonUtils.java @@ -4,8 +4,8 @@ import com.intellij.lang.javascript.psi.JSBinaryExpression; import com.intellij.lang.javascript.psi.JSExpression; import consulo.language.ast.IElementType; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; import java.util.HashMap; import java.util.HashSet; diff --git a/inspections/src/main/java/com/sixrr/inspectjs/utils/ControlFlowUtils.java b/inspections/src/main/java/com/sixrr/inspectjs/utils/ControlFlowUtils.java index 2673d61c..40b97227 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/utils/ControlFlowUtils.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/utils/ControlFlowUtils.java @@ -1,12 +1,12 @@ package com.sixrr.inspectjs.utils; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import com.intellij.lang.javascript.psi.*; import consulo.language.psi.util.PsiTreeUtil; import com.sixrr.inspectjs.JSRecursiveElementVisitor; -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; public class ControlFlowUtils { private ControlFlowUtils() { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/utils/EquivalenceChecker.java b/inspections/src/main/java/com/sixrr/inspectjs/utils/EquivalenceChecker.java index 0471daac..21222477 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/utils/EquivalenceChecker.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/utils/EquivalenceChecker.java @@ -1,7 +1,7 @@ package com.sixrr.inspectjs.utils; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; import consulo.javascript.language.psi.JavaScriptType; import com.intellij.lang.javascript.psi.*; import consulo.language.psi.PsiElement; diff --git a/inspections/src/main/java/com/sixrr/inspectjs/utils/ExpressionUtil.java b/inspections/src/main/java/com/sixrr/inspectjs/utils/ExpressionUtil.java index 8e048a64..d76b82a1 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/utils/ExpressionUtil.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/utils/ExpressionUtil.java @@ -4,12 +4,11 @@ import com.intellij.lang.javascript.psi.*; import consulo.language.ast.IElementType; import consulo.javascript.psi.JSSimpleLiteralExpression; +import jakarta.annotation.Nullable; import java.util.HashMap; import java.util.Map; -import javax.annotation.Nullable; - public class ExpressionUtil { private ExpressionUtil() { } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/utils/SideEffectChecker.java b/inspections/src/main/java/com/sixrr/inspectjs/utils/SideEffectChecker.java index 6efbab3f..a3fbd60b 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/utils/SideEffectChecker.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/utils/SideEffectChecker.java @@ -1,6 +1,6 @@ package com.sixrr.inspectjs.utils; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import com.intellij.lang.javascript.JSTokenTypes; import com.intellij.lang.javascript.psi.*; diff --git a/inspections/src/main/java/com/sixrr/inspectjs/validity/BadExpressionStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/validity/BadExpressionStatementJSInspection.java index c3381bb7..faaaf425 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/validity/BadExpressionStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/validity/BadExpressionStatementJSInspection.java @@ -15,11 +15,10 @@ import consulo.annotation.access.RequiredReadAction; import consulo.javascript.ecmascript.psi.ES6ExportDefaultAssignment; import consulo.language.psi.PsiElement; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; - @ExtensionImpl public class BadExpressionStatementJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/validity/DebuggerStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/validity/DebuggerStatementJSInspection.java index 797eef67..e3f56ac5 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/validity/DebuggerStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/validity/DebuggerStatementJSInspection.java @@ -9,10 +9,10 @@ import com.sixrr.inspectjs.JavaScriptInspection; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import jakarta.annotation.Nonnull; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; @ExtensionImpl public class DebuggerStatementJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/validity/DuplicateCaseLabelJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/validity/DuplicateCaseLabelJSInspection.java index b227509b..fba8afb0 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/validity/DuplicateCaseLabelJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/validity/DuplicateCaseLabelJSInspection.java @@ -11,7 +11,7 @@ import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import java.util.Arrays; import java.util.HashSet; diff --git a/inspections/src/main/java/com/sixrr/inspectjs/validity/DuplicatePropertyOnObjectJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/validity/DuplicatePropertyOnObjectJSInspection.java index f8c4fbca..785d884c 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/validity/DuplicatePropertyOnObjectJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/validity/DuplicatePropertyOnObjectJSInspection.java @@ -9,7 +9,7 @@ import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import java.util.Arrays; diff --git a/inspections/src/main/java/com/sixrr/inspectjs/validity/FunctionWithInconsistentReturnsJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/validity/FunctionWithInconsistentReturnsJSInspection.java index 93b88e91..67d5a840 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/validity/FunctionWithInconsistentReturnsJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/validity/FunctionWithInconsistentReturnsJSInspection.java @@ -10,8 +10,8 @@ import com.sixrr.inspectjs.utils.ControlFlowUtils; import consulo.language.editor.inspection.ProblemHighlightType; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; @ExtensionImpl public class FunctionWithInconsistentReturnsJSInspection extends JavaScriptInspection diff --git a/inspections/src/main/java/com/sixrr/inspectjs/validity/StringLiteralBreaksHTMLJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/validity/StringLiteralBreaksHTMLJSInspection.java index d375c9a2..86fb22fb 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/validity/StringLiteralBreaksHTMLJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/validity/StringLiteralBreaksHTMLJSInspection.java @@ -7,8 +7,8 @@ import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; @ExtensionImpl public class StringLiteralBreaksHTMLJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/validity/ThisExpressionReferencesGlobalObjectJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/validity/ThisExpressionReferencesGlobalObjectJSInspection.java index 1f5d901c..a718ea61 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/validity/ThisExpressionReferencesGlobalObjectJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/validity/ThisExpressionReferencesGlobalObjectJSInspection.java @@ -14,8 +14,8 @@ import consulo.language.psi.util.PsiTreeUtil; import consulo.xml.psi.xml.XmlAttributeValue; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; @ExtensionImpl public class ThisExpressionReferencesGlobalObjectJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/validity/UnreachableCodeJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/validity/UnreachableCodeJSInspection.java index d019f90c..beff78f7 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/validity/UnreachableCodeJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/validity/UnreachableCodeJSInspection.java @@ -10,8 +10,8 @@ import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; @ExtensionImpl public class UnreachableCodeJSInspection extends JavaScriptInspection { diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSElementPredicate.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSElementPredicate.java index 4e83e920..15e223eb 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSElementPredicate.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSElementPredicate.java @@ -17,7 +17,7 @@ import consulo.language.psi.PsiElement; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; public interface JSElementPredicate { diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSIntention.java index 4acc999a..ea2bbc8b 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSIntention.java @@ -26,8 +26,8 @@ import consulo.xml.psi.xml.XmlElement; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; public abstract class JSIntention extends PsiElementBaseIntentionAction { private static final String INTENTION_SUFFIX = "Intention"; diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSMutablyNamedIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSMutablyNamedIntention.java index 7b9e6c43..37fe5a12 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSMutablyNamedIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSMutablyNamedIntention.java @@ -19,8 +19,8 @@ import consulo.language.psi.PsiElement; import consulo.project.Project; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; public abstract class JSMutablyNamedIntention extends JSIntention { diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/ComparisonPredicate.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/ComparisonPredicate.java index 3257f1dd..c9420f4a 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/ComparisonPredicate.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/ComparisonPredicate.java @@ -22,7 +22,7 @@ import org.intellij.idea.lang.javascript.psiutil.ComparisonUtils; import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; class ComparisonPredicate implements JSElementPredicate { diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/ConjunctionPredicate.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/ConjunctionPredicate.java index 35b3f95c..447c6e63 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/ConjunctionPredicate.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/ConjunctionPredicate.java @@ -19,11 +19,10 @@ import com.intellij.lang.javascript.psi.JSBinaryExpression; import consulo.language.ast.IElementType; import consulo.language.psi.PsiElement; +import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; -import javax.annotation.Nonnull; - class ConjunctionPredicate implements JSElementPredicate { @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSDeMorgansLawIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSDeMorgansLawIntention.java index ce99621d..67590497 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSDeMorgansLawIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSDeMorgansLawIntention.java @@ -30,7 +30,7 @@ import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl @IntentionMetaData(ignoreId = "JSDeMorgansLawIntention", categories = { diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipComparisonIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipComparisonIntention.java index 252ec0e8..94748537 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipComparisonIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipComparisonIntention.java @@ -22,13 +22,12 @@ import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSMutablyNamedIntention; import org.intellij.idea.lang.javascript.psiutil.ComparisonUtils; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; -import javax.annotation.Nonnull; - @ExtensionImpl @IntentionMetaData(ignoreId = "JSFlipComparisonIntention", categories = { "JavaScript", diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipConjunctionIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipConjunctionIntention.java index c62a79f9..2317d749 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipConjunctionIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipConjunctionIntention.java @@ -23,13 +23,12 @@ import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSMutablyNamedIntention; import org.intellij.idea.lang.javascript.psiutil.BinaryOperatorUtils; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; -import javax.annotation.Nonnull; - @ExtensionImpl @IntentionMetaData(ignoreId = "JSFlipConjunctionIntention", categories = { "JavaScript", diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSNegateComparisonIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSNegateComparisonIntention.java index 582ec90a..6664739f 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSNegateComparisonIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSNegateComparisonIntention.java @@ -22,13 +22,12 @@ import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSMutablyNamedIntention; import org.intellij.idea.lang.javascript.psiutil.ComparisonUtils; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; -import javax.annotation.Nonnull; - @ExtensionImpl @IntentionMetaData(ignoreId = "JSNegateComparisonIntention", categories = { "JavaScript", diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSRemoveBooleanEqualityIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSRemoveBooleanEqualityIntention.java index 649f2bfd..b5e54f06 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSRemoveBooleanEqualityIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSRemoveBooleanEqualityIntention.java @@ -30,7 +30,7 @@ import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl @IntentionMetaData(ignoreId = "JSRemoveBooleanEqualityIntention", categories = { diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSAddBracesIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSAddBracesIntention.java index 8fe6085a..ea715b5c 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSAddBracesIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSAddBracesIntention.java @@ -26,7 +26,7 @@ import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl @IntentionMetaData(ignoreId = "JSAddBracesIntention", categories = { diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSRemoveBracesIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSRemoveBracesIntention.java index d4c0ee81..6bbec666 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSRemoveBracesIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSRemoveBracesIntention.java @@ -26,7 +26,7 @@ import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl @IntentionMetaData(ignoreId = "JSRemoveBracesIntention", categories = { diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToCStyleCommentIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToCStyleCommentIntention.java index 55ab6d6f..e4be30c6 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToCStyleCommentIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToCStyleCommentIntention.java @@ -27,7 +27,7 @@ import org.intellij.idea.lang.javascript.intention.JSIntention; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import java.util.ArrayList; import java.util.List; diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToEndOfLineCommentIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToEndOfLineCommentIntention.java index 74cdce1d..c841acc5 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToEndOfLineCommentIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToEndOfLineCommentIntention.java @@ -28,7 +28,7 @@ import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import org.intellij.idea.lang.javascript.psiutil.TreeUtil; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl @IntentionMetaData(ignoreId = "JSChangeToEndOfLineCommentIntention", categories = { diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSMoveCommentToSeparateLineIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSMoveCommentToSeparateLineIntention.java index cf989c13..0b70d805 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSMoveCommentToSeparateLineIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSMoveCommentToSeparateLineIntention.java @@ -23,13 +23,12 @@ import consulo.language.psi.PsiElement; import consulo.language.psi.PsiWhiteSpace; import consulo.language.util.IncorrectOperationException; +import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import org.intellij.idea.lang.javascript.psiutil.TreeUtil; -import javax.annotation.Nonnull; - @ExtensionImpl @IntentionMetaData(ignoreId = "JSMoveCommentToSeparateLineIntention", categories = { "JavaScript", diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipConditionalIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipConditionalIntention.java index 1f469c50..37cfbed0 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipConditionalIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipConditionalIntention.java @@ -28,7 +28,7 @@ import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl @IntentionMetaData(ignoreId = "JSFlipConditionalIntention", categories = { diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipIfIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipIfIntention.java index f5328854..64f9bb2b 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipIfIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipIfIntention.java @@ -30,7 +30,7 @@ import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl @IntentionMetaData(ignoreId = "JSFlipIfIntention", categories = { diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSRemoveConditionalIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSRemoveConditionalIntention.java index adc1c69d..9d97e5f6 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSRemoveConditionalIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSRemoveConditionalIntention.java @@ -28,7 +28,7 @@ import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import org.intellij.idea.lang.javascript.psiutil.ParenthesesUtils; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl @IntentionMetaData(ignoreId = "JSRemoveConditionalIntention", categories = { diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSReplaceConditionalWithIfIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSReplaceConditionalWithIfIntention.java index 791f8e95..2b3c17d3 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSReplaceConditionalWithIfIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSReplaceConditionalWithIfIntention.java @@ -24,7 +24,7 @@ import org.intellij.idea.lang.javascript.intention.JSIntention; import org.intellij.idea.lang.javascript.psiutil.ConditionalUtils; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl @IntentionMetaData(ignoreId = "JSReplaceConditionalWithIfIntention", categories = { diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantExpressionIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantExpressionIntention.java index fd9b4594..66aeda6a 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantExpressionIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantExpressionIntention.java @@ -24,14 +24,13 @@ import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; import consulo.util.lang.StringUtil; +import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; import org.intellij.idea.lang.javascript.psiutil.ExpressionUtil; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; -import javax.annotation.Nonnull; - @ExtensionImpl @IntentionMetaData(ignoreId = "JSConstantExpressionIntention", categories = { "JavaScript", diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantSubexpressionIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantSubexpressionIntention.java index 5ff7d4ea..01e645da 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantSubexpressionIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantSubexpressionIntention.java @@ -25,6 +25,7 @@ import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; import consulo.util.lang.StringUtil; +import jakarta.annotation.Nullable; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSMutablyNamedIntention; import org.intellij.idea.lang.javascript.psiutil.BinaryOperatorUtils; @@ -32,8 +33,7 @@ import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import org.intellij.idea.lang.javascript.psiutil.ParenthesesUtils; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; @ExtensionImpl @IntentionMetaData(ignoreId = "JSConstantSubexpressionIntention", categories = { diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/increment/JSExtractIncrementIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/increment/JSExtractIncrementIntention.java index 14ee6f5e..d23d2e82 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/increment/JSExtractIncrementIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/increment/JSExtractIncrementIntention.java @@ -25,7 +25,7 @@ import org.intellij.idea.lang.javascript.intention.JSMutablyNamedIntention; import org.intellij.idea.lang.javascript.psiutil.*; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl @IntentionMetaData(ignoreId = "JSExtractIncrementIntention", categories = { diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSMergeDeclarationAndInitializationIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSMergeDeclarationAndInitializationIntention.java index 1fdd0063..c7f0fc62 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSMergeDeclarationAndInitializationIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSMergeDeclarationAndInitializationIntention.java @@ -20,6 +20,7 @@ import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; @@ -27,7 +28,6 @@ import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; import java.util.Iterator; @ExtensionImpl diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSSplitDeclarationAndInitializationIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSSplitDeclarationAndInitializationIntention.java index 69c311cd..3b83b734 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSSplitDeclarationAndInitializationIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSSplitDeclarationAndInitializationIntention.java @@ -30,7 +30,7 @@ import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import java.util.ArrayList; import java.util.List; diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForInLoopsIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForInLoopsIntention.java index 4100a103..2f6c26a2 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForInLoopsIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForInLoopsIntention.java @@ -33,7 +33,7 @@ import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl @IntentionMetaData(ignoreId = "JSMergeParallelForInLoopsIntention", categories = { diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForLoopsIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForLoopsIntention.java index 3c43e8a7..d0c6d1b4 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForLoopsIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForLoopsIntention.java @@ -31,7 +31,7 @@ import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl @IntentionMetaData(ignoreId = "JSMergeParallelForLoopsIntention", categories = { diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToDecimalIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToDecimalIntention.java index ebdcf618..7552dde9 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToDecimalIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToDecimalIntention.java @@ -25,7 +25,7 @@ import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import org.intellij.idea.lang.javascript.psiutil.NumberUtil; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl @IntentionMetaData(ignoreId = "JSConvertIntegerToDecimalIntention", categories = { diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToHexIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToHexIntention.java index 6e39e25d..7b42bc59 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToHexIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToHexIntention.java @@ -25,7 +25,7 @@ import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import org.intellij.idea.lang.javascript.psiutil.NumberUtil; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl @IntentionMetaData(ignoreId = "JSConvertIntegerToHexIntention", categories = { diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToOctalIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToOctalIntention.java index 3343bbc1..bb29594b 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToOctalIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToOctalIntention.java @@ -25,7 +25,7 @@ import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import org.intellij.idea.lang.javascript.psiutil.NumberUtil; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl @IntentionMetaData(ignoreId = "JSConvertIntegerToOctalIntention", categories = { diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceMultiplyWithShiftIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceMultiplyWithShiftIntention.java index add28157..64bb725e 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceMultiplyWithShiftIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceMultiplyWithShiftIntention.java @@ -28,7 +28,7 @@ import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import org.intellij.idea.lang.javascript.psiutil.ParenthesesUtils; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl @IntentionMetaData(ignoreId = "JSReplaceMultiplyWithShiftIntention", categories = { diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceShiftWithMultiplyIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceShiftWithMultiplyIntention.java index 9f2fd03d..28a236d0 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceShiftWithMultiplyIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceShiftWithMultiplyIntention.java @@ -22,14 +22,13 @@ import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSMutablyNamedIntention; import org.intellij.idea.lang.javascript.psiutil.BinaryOperatorUtils; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import org.intellij.idea.lang.javascript.psiutil.ParenthesesUtils; -import javax.annotation.Nonnull; - @ExtensionImpl @IntentionMetaData(ignoreId = "JSReplaceShiftWithMultiplyIntention", categories = { "JavaScript", diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/opassign/JSReplaceWithOperatorAssignmentIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/opassign/JSReplaceWithOperatorAssignmentIntention.java index 4c45d8e7..77035391 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/opassign/JSReplaceWithOperatorAssignmentIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/opassign/JSReplaceWithOperatorAssignmentIntention.java @@ -25,12 +25,11 @@ import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSMutablyNamedIntention; import org.intellij.idea.lang.javascript.psiutil.*; -import javax.annotation.Nonnull; - @ExtensionImpl @IntentionMetaData(ignoreId = "JSReplaceWithOperatorAssignmentIntention", categories = { "JavaScript", diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/parenthesis/JSRemoveUnnecessaryParenthesesIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/parenthesis/JSRemoveUnnecessaryParenthesesIntention.java index 852e4e32..10107559 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/parenthesis/JSRemoveUnnecessaryParenthesesIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/parenthesis/JSRemoveUnnecessaryParenthesesIntention.java @@ -27,7 +27,7 @@ import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import org.intellij.idea.lang.javascript.psiutil.ParenthesesUtils; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl @IntentionMetaData(ignoreId = "JSRemoveUnnecessaryParenthesesIntention", categories = { diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSDoubleToSingleQuotedStringIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSDoubleToSingleQuotedStringIntention.java index d7076630..4db8293e 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSDoubleToSingleQuotedStringIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSDoubleToSingleQuotedStringIntention.java @@ -24,7 +24,7 @@ import org.intellij.idea.lang.javascript.intention.JSIntention; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl @IntentionMetaData(ignoreId = "JSDoubleToSingleQuotedStringIntention", categories = { diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSJoinConcatenatedStringLiteralsIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSJoinConcatenatedStringLiteralsIntention.java index e2458f2a..013a8a9b 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSJoinConcatenatedStringLiteralsIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSJoinConcatenatedStringLiteralsIntention.java @@ -27,12 +27,11 @@ import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; -import javax.annotation.Nonnull; - @ExtensionImpl @IntentionMetaData(ignoreId = "JSJoinConcatenatedStringLiteralsIntention", categories = { "JavaScript", diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSSingleToDoubleQuotedStringIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSSingleToDoubleQuotedStringIntention.java index e3aaba47..fade7b3e 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSSingleToDoubleQuotedStringIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSSingleToDoubleQuotedStringIntention.java @@ -24,7 +24,7 @@ import org.intellij.idea.lang.javascript.intention.JSIntention; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl @IntentionMetaData(ignoreId = "JSSingleToDoubleQuotedStringIntention", categories = { diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceIfWithSwitchIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceIfWithSwitchIntention.java index 95fa8662..847c76dc 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceIfWithSwitchIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceIfWithSwitchIntention.java @@ -22,12 +22,12 @@ import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; import org.intellij.idea.lang.javascript.psiutil.*; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; import java.util.*; @ExtensionImpl diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceSwitchWithIfIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceSwitchWithIfIntention.java index b0b1821d..43c98e14 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceSwitchWithIfIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceSwitchWithIfIntention.java @@ -29,7 +29,7 @@ import org.intellij.idea.lang.javascript.psiutil.*; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import java.util.*; @ExtensionImpl diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeElseIfIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeElseIfIntention.java index 3e74ca63..86cd6107 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeElseIfIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeElseIfIntention.java @@ -28,7 +28,7 @@ import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl @IntentionMetaData(ignoreId = "JSMergeElseIfIntention", categories = { diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfAndIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfAndIntention.java index f6699073..40e917ab 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfAndIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfAndIntention.java @@ -31,7 +31,7 @@ import org.intellij.idea.lang.javascript.psiutil.ParenthesesUtils; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl @IntentionMetaData(ignoreId = "JSMergeIfAndIntention", categories = { diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfOrIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfOrIntention.java index 8125af55..06edb2e0 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfOrIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfOrIntention.java @@ -28,7 +28,7 @@ import org.intellij.idea.lang.javascript.psiutil.*; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl @IntentionMetaData(ignoreId = "JSMergeIfOrIntention", categories = { diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeParallelIfsIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeParallelIfsIntention.java index d5a0e93a..bd19fb6b 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeParallelIfsIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeParallelIfsIntention.java @@ -30,7 +30,7 @@ import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl @IntentionMetaData(ignoreId = "JSMergeParallelIfsIntention", categories = { diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSRemoveRedundantElseIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSRemoveRedundantElseIntention.java index 6c01a689..6afc6e36 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSRemoveRedundantElseIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSRemoveRedundantElseIntention.java @@ -23,14 +23,13 @@ import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; - @ExtensionImpl @IntentionMetaData(ignoreId = "JSRemoveRedundantElseIntention", categories = { "JavaScript", diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSReplaceIfWithConditionalIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSReplaceIfWithConditionalIntention.java index 2b6cfc05..cb239fde 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSReplaceIfWithConditionalIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSReplaceIfWithConditionalIntention.java @@ -22,13 +22,12 @@ import consulo.language.psi.PsiElement; import consulo.language.psi.util.PsiTreeUtil; import consulo.language.util.IncorrectOperationException; +import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; import org.intellij.idea.lang.javascript.psiutil.*; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; - @ExtensionImpl @IntentionMetaData(ignoreId = "JSReplaceIfWithConditionalIntention", categories = { "JavaScript", diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSimplifyIfElseIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSimplifyIfElseIntention.java index f516bd8e..0b9176c3 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSimplifyIfElseIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSimplifyIfElseIntention.java @@ -27,7 +27,7 @@ import org.intellij.idea.lang.javascript.psiutil.ConditionalUtils; import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl @IntentionMetaData(ignoreId = "JSSimplifyIfElseIntention", categories = { diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitElseIfIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitElseIfIntention.java index 701c162b..e78afee8 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitElseIfIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitElseIfIntention.java @@ -26,7 +26,7 @@ import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl @IntentionMetaData(ignoreId = "JSSplitElseIfIntention", categories = { diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfAndIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfAndIntention.java index c3bf0f3b..7dd47c43 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfAndIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfAndIntention.java @@ -24,6 +24,7 @@ import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; @@ -31,8 +32,6 @@ import org.intellij.idea.lang.javascript.psiutil.ParenthesesUtils; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; - @ExtensionImpl @IntentionMetaData(ignoreId = "JSSplitIfAndIntention", categories = { "JavaScript", diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfOrIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfOrIntention.java index 12adcd7f..4ba0fa15 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfOrIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfOrIntention.java @@ -31,7 +31,7 @@ import org.intellij.idea.lang.javascript.psiutil.ParenthesesUtils; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl @IntentionMetaData(ignoreId = "JSSplitIfOrIntention", categories = { diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/BoolUtils.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/BoolUtils.java index e336f3c6..c04eedb7 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/BoolUtils.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/BoolUtils.java @@ -19,10 +19,9 @@ import com.intellij.lang.javascript.psi.*; import com.intellij.lang.javascript.psi.impl.JSChangeUtil; import consulo.language.ast.IElementType; +import jakarta.annotation.Nullable; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nullable; - public class BoolUtils { diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/ControlFlowUtils.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/ControlFlowUtils.java index d1c34480..2772a5b2 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/ControlFlowUtils.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/ControlFlowUtils.java @@ -20,8 +20,8 @@ import consulo.language.psi.PsiReference; import consulo.language.psi.util.PsiTreeUtil; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; import java.util.ArrayList; import java.util.HashSet; import java.util.List; diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/ErrorUtil.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/ErrorUtil.java index ffa37cf4..a794d5f9 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/ErrorUtil.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/ErrorUtil.java @@ -19,8 +19,7 @@ import consulo.language.psi.PsiElement; import consulo.language.psi.PsiErrorElement; import consulo.language.psi.PsiRecursiveElementVisitor; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; public class ErrorUtil { diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/ExpressionUtil.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/ExpressionUtil.java index 29ce3d62..061a1cbf 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/ExpressionUtil.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/ExpressionUtil.java @@ -21,8 +21,8 @@ import consulo.language.ast.IElementType; import consulo.language.psi.PsiElement; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; import java.util.HashMap; import java.util.Map; diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/FindReferenceUtil.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/FindReferenceUtil.java index d81294d0..21c2fc31 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/FindReferenceUtil.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/FindReferenceUtil.java @@ -22,11 +22,11 @@ import consulo.language.psi.PsiElement; import consulo.language.psi.util.PsiTreeUtil; import consulo.xml.psi.xml.XmlFile; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; import org.intellij.idea.lang.javascript.intention.JSElementIterator; import org.intellij.idea.lang.javascript.intention.JSFunctionVisitor; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.util.ArrayList; import java.util.Iterator; import java.util.List; diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/JSElementFactory.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/JSElementFactory.java index c14ce614..b4980d05 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/JSElementFactory.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/JSElementFactory.java @@ -33,7 +33,7 @@ import consulo.virtualFileSystem.VirtualFile; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/RecursionUtil.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/RecursionUtil.java index 4c9cca65..e8573086 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/RecursionUtil.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/RecursionUtil.java @@ -18,8 +18,7 @@ import com.intellij.lang.javascript.JSTokenTypes; import com.intellij.lang.javascript.psi.*; import consulo.language.ast.IElementType; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; public class RecursionUtil { diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/TreeUtil.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/TreeUtil.java index 3f694678..488afd66 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/TreeUtil.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/TreeUtil.java @@ -18,8 +18,8 @@ import com.intellij.lang.javascript.psi.JSElement; import consulo.language.psi.PsiElement; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; public class TreeUtil { diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/VariableAccessUtil.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/VariableAccessUtil.java index 7122df6a..9fac204b 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/VariableAccessUtil.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/VariableAccessUtil.java @@ -20,7 +20,7 @@ import consulo.language.ast.IElementType; import consulo.language.psi.PsiElement; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import java.util.Collections; import java.util.HashSet; import java.util.LinkedHashSet; diff --git a/lang-version-impl/actionscript-impl/src/main/java/consulo/actionscript/ActionScriptFileType.java b/lang-version-impl/actionscript-impl/src/main/java/consulo/actionscript/ActionScriptFileType.java index 2c46e82a..ede6de31 100644 --- a/lang-version-impl/actionscript-impl/src/main/java/consulo/actionscript/ActionScriptFileType.java +++ b/lang-version-impl/actionscript-impl/src/main/java/consulo/actionscript/ActionScriptFileType.java @@ -28,8 +28,8 @@ import consulo.ui.image.Image; import consulo.virtualFileSystem.VirtualFile; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/lang-version-impl/actionscript-impl/src/main/java/consulo/actionscript/ActionScriptFileTypeFactory.java b/lang-version-impl/actionscript-impl/src/main/java/consulo/actionscript/ActionScriptFileTypeFactory.java index 068e7de0..75a3054e 100644 --- a/lang-version-impl/actionscript-impl/src/main/java/consulo/actionscript/ActionScriptFileTypeFactory.java +++ b/lang-version-impl/actionscript-impl/src/main/java/consulo/actionscript/ActionScriptFileTypeFactory.java @@ -3,8 +3,7 @@ import consulo.annotation.component.ExtensionImpl; import consulo.virtualFileSystem.fileType.FileTypeConsumer; import consulo.virtualFileSystem.fileType.FileTypeFactory; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/lang-version-impl/actionscript-impl/src/main/java/consulo/actionscript/lang/ActionScriptLanguageVersion.java b/lang-version-impl/actionscript-impl/src/main/java/consulo/actionscript/lang/ActionScriptLanguageVersion.java index 744e4aa7..8c74a0e0 100644 --- a/lang-version-impl/actionscript-impl/src/main/java/consulo/actionscript/lang/ActionScriptLanguageVersion.java +++ b/lang-version-impl/actionscript-impl/src/main/java/consulo/actionscript/lang/ActionScriptLanguageVersion.java @@ -10,7 +10,7 @@ import consulo.language.lexer.Lexer; import consulo.language.parser.PsiParser; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/codeInsight/EcmaScript6QuickFixFactory.java b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/codeInsight/EcmaScript6QuickFixFactory.java index 79cd0c9f..a236f186 100644 --- a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/codeInsight/EcmaScript6QuickFixFactory.java +++ b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/codeInsight/EcmaScript6QuickFixFactory.java @@ -22,8 +22,7 @@ import consulo.javascript.ecmascript.lang.BaseEcmaScriptJavaScriptVersion; import consulo.javascript.ide.codeInsight.JavaScriptQuickFixFactory; import consulo.javascript.language.JavaScriptLanguageVersion; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/completion/EcmaScript6KeywordCompletionExtender.java b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/completion/EcmaScript6KeywordCompletionExtender.java index c6b42d32..6085f2a1 100644 --- a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/completion/EcmaScript6KeywordCompletionExtender.java +++ b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/completion/EcmaScript6KeywordCompletionExtender.java @@ -7,8 +7,7 @@ import consulo.language.editor.completion.lookup.LookupElementBuilder; import consulo.language.util.ProcessingContext; import consulo.javascript.ide.completion.JavaScriptKeywordCompletionExtender; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/BaseEcmaScriptJavaScriptVersion.java b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/BaseEcmaScriptJavaScriptVersion.java index 9c765d12..5c2883cf 100644 --- a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/BaseEcmaScriptJavaScriptVersion.java +++ b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/BaseEcmaScriptJavaScriptVersion.java @@ -16,7 +16,7 @@ import consulo.language.lexer.MergingLexerAdapter; import consulo.language.parser.PsiParser; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/EcmaScript10JavaScriptVersion.java b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/EcmaScript10JavaScriptVersion.java index b35eff5f..a2f42dc0 100644 --- a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/EcmaScript10JavaScriptVersion.java +++ b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/EcmaScript10JavaScriptVersion.java @@ -3,7 +3,7 @@ import consulo.annotation.component.ExtensionImpl; import jakarta.inject.Inject; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/EcmaScript11JavaScriptVersion.java b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/EcmaScript11JavaScriptVersion.java index 74207140..6215b1e0 100644 --- a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/EcmaScript11JavaScriptVersion.java +++ b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/EcmaScript11JavaScriptVersion.java @@ -2,10 +2,9 @@ import consulo.annotation.component.ExtensionImpl; import consulo.javascript.language.JavaScriptFeature; +import jakarta.annotation.Nonnull; import jakarta.inject.Inject; -import javax.annotation.Nonnull; - /** * @author VISTALL * @since 06/12/2021 diff --git a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/EcmaScript12JavaScriptVersion.java b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/EcmaScript12JavaScriptVersion.java index a6ca7876..6931cd51 100644 --- a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/EcmaScript12JavaScriptVersion.java +++ b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/EcmaScript12JavaScriptVersion.java @@ -5,7 +5,7 @@ import consulo.javascript.language.JavaScriptLanguage; import jakarta.inject.Inject; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/EcmaScript6JavaScriptVersion.java b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/EcmaScript6JavaScriptVersion.java index 8db98a4f..fe0fd375 100644 --- a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/EcmaScript6JavaScriptVersion.java +++ b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/EcmaScript6JavaScriptVersion.java @@ -23,7 +23,7 @@ import consulo.javascript.language.StandardJavaScriptVersion; import jakarta.inject.Inject; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/EcmaScript7JavaScriptVersion.java b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/EcmaScript7JavaScriptVersion.java index cd75a50f..8d68b172 100644 --- a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/EcmaScript7JavaScriptVersion.java +++ b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/EcmaScript7JavaScriptVersion.java @@ -4,7 +4,7 @@ import consulo.javascript.language.JavaScriptFeature; import jakarta.inject.Inject; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/EcmaScript8JavaScriptVersion.java b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/EcmaScript8JavaScriptVersion.java index 864433dd..762eb6d9 100644 --- a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/EcmaScript8JavaScriptVersion.java +++ b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/EcmaScript8JavaScriptVersion.java @@ -1,10 +1,9 @@ package consulo.javascript.ecmascript.lang; import consulo.annotation.component.ExtensionImpl; +import jakarta.annotation.Nonnull; import jakarta.inject.Inject; -import javax.annotation.Nonnull; - /** * @author VISTALL * @since 06/12/2021 diff --git a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/EcmaScript9JavaScriptVersion.java b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/EcmaScript9JavaScriptVersion.java index c8a80313..aa53f532 100644 --- a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/EcmaScript9JavaScriptVersion.java +++ b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/EcmaScript9JavaScriptVersion.java @@ -2,10 +2,9 @@ import consulo.annotation.component.ExtensionImpl; import consulo.javascript.language.JavaScriptFeature; +import jakarta.annotation.Nonnull; import jakarta.inject.Inject; -import javax.annotation.Nonnull; - /** * @author VISTALL * @since 06/12/2021 diff --git a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/EcmaScriptFileType.java b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/EcmaScriptFileType.java index 364781fc..24eb3133 100644 --- a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/EcmaScriptFileType.java +++ b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/EcmaScriptFileType.java @@ -29,8 +29,8 @@ import consulo.ui.image.Image; import consulo.virtualFileSystem.VirtualFile; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/EcmaScriptFileTypeFactory.java b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/EcmaScriptFileTypeFactory.java index 9e18e457..561bdcef 100644 --- a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/EcmaScriptFileTypeFactory.java +++ b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/EcmaScriptFileTypeFactory.java @@ -4,7 +4,7 @@ import consulo.virtualFileSystem.fileType.FileTypeConsumer; import consulo.virtualFileSystem.fileType.FileTypeFactory; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptParser.java b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptParser.java index 7a9a5529..1dee3897 100644 --- a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptParser.java +++ b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptParser.java @@ -21,7 +21,7 @@ import consulo.javascript.lang.parsing.JavaScriptParsingContext; import consulo.language.parser.PsiBuilder; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptParsingContext.java b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptParsingContext.java index adc740ae..33bfbd51 100644 --- a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptParsingContext.java +++ b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptParsingContext.java @@ -20,7 +20,7 @@ import consulo.javascript.lang.parsing.JavaScriptParsingContext; import consulo.javascript.lang.parsing.StatementParsing; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptStatementParsing.java b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptStatementParsing.java index e7afa4bc..d27d7a24 100644 --- a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptStatementParsing.java +++ b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptStatementParsing.java @@ -28,7 +28,7 @@ import consulo.language.parser.PsiBuilder; import consulo.logging.Logger; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/psi/ES6ImportedBinding.java b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/psi/ES6ImportedBinding.java index b2718d8c..6351b677 100644 --- a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/psi/ES6ImportedBinding.java +++ b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/psi/ES6ImportedBinding.java @@ -3,8 +3,7 @@ import com.intellij.lang.javascript.psi.JSElement; import consulo.annotation.access.RequiredReadAction; import consulo.language.psi.PsiNameIdentifierOwner; - -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/psi/ES6NamedImports.java b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/psi/ES6NamedImports.java index 8b268040..5bf95e50 100644 --- a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/psi/ES6NamedImports.java +++ b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/psi/ES6NamedImports.java @@ -3,7 +3,7 @@ import com.intellij.lang.javascript.psi.JSElement; import consulo.annotation.access.RequiredReadAction; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/psi/impl/ES6ExportDefaultAssignmentImpl.java b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/psi/impl/ES6ExportDefaultAssignmentImpl.java index 8bd18081..da3e1c29 100644 --- a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/psi/impl/ES6ExportDefaultAssignmentImpl.java +++ b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/psi/impl/ES6ExportDefaultAssignmentImpl.java @@ -10,8 +10,8 @@ import consulo.language.psi.resolve.PsiScopeProcessor; import consulo.language.psi.resolve.ResolveState; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/psi/impl/ES6ImportDeclarationImpl.java b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/psi/impl/ES6ImportDeclarationImpl.java index 975ea395..ea19c28c 100644 --- a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/psi/impl/ES6ImportDeclarationImpl.java +++ b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/psi/impl/ES6ImportDeclarationImpl.java @@ -8,7 +8,7 @@ import consulo.language.psi.resolve.PsiScopeProcessor; import consulo.language.psi.resolve.ResolveState; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/psi/impl/ES6ImportSpecifierImpl.java b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/psi/impl/ES6ImportSpecifierImpl.java index cae389d9..d2734fff 100644 --- a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/psi/impl/ES6ImportSpecifierImpl.java +++ b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/psi/impl/ES6ImportSpecifierImpl.java @@ -10,8 +10,8 @@ import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/psi/impl/ES6ImportedBindingImpl.java b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/psi/impl/ES6ImportedBindingImpl.java index 0a879af6..f7d64c3b 100644 --- a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/psi/impl/ES6ImportedBindingImpl.java +++ b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/psi/impl/ES6ImportedBindingImpl.java @@ -13,8 +13,8 @@ import consulo.language.psi.resolve.ResolveState; import consulo.language.util.IncorrectOperationException; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/psi/impl/ES6NamedImportsImpl.java b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/psi/impl/ES6NamedImportsImpl.java index 2c21b944..9dc3a191 100644 --- a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/psi/impl/ES6NamedImportsImpl.java +++ b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/psi/impl/ES6NamedImportsImpl.java @@ -10,7 +10,7 @@ import consulo.language.psi.resolve.PsiScopeProcessor; import consulo.language.psi.resolve.ResolveState; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/psi/impl/resolve/EcmaScript6ResolveHelper.java b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/psi/impl/resolve/EcmaScript6ResolveHelper.java index e3a22089..0dbfa943 100644 --- a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/psi/impl/resolve/EcmaScript6ResolveHelper.java +++ b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/psi/impl/resolve/EcmaScript6ResolveHelper.java @@ -15,9 +15,9 @@ import consulo.language.psi.resolve.ResolveState; import consulo.language.psi.util.PsiTreeUtil; import consulo.util.lang.Comparing; +import jakarta.annotation.Nonnull; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/jsx/codeInsight/JSXTagTreeHighlightingPassFactory.java b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/jsx/codeInsight/JSXTagTreeHighlightingPassFactory.java index 0e32bf7e..d7e72f19 100644 --- a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/jsx/codeInsight/JSXTagTreeHighlightingPassFactory.java +++ b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/jsx/codeInsight/JSXTagTreeHighlightingPassFactory.java @@ -10,7 +10,7 @@ import consulo.language.psi.PsiFile; import consulo.xml.codeInsight.daemon.impl.tagTreeHighlighting.XmlTagTreeHighlightingPass; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/jsx/fileTemplate/JSXCreateFromTemplateHandler.java b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/jsx/fileTemplate/JSXCreateFromTemplateHandler.java index ddbde5cb..84b25056 100644 --- a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/jsx/fileTemplate/JSXCreateFromTemplateHandler.java +++ b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/jsx/fileTemplate/JSXCreateFromTemplateHandler.java @@ -5,8 +5,7 @@ import consulo.fileTemplate.CreateFromTemplateHandler; import consulo.fileTemplate.FileTemplate; import consulo.javascript.jsx.language.JSXFileType; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/jsx/language/JSXFileType.java b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/jsx/language/JSXFileType.java index 8215ed78..df836de1 100644 --- a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/jsx/language/JSXFileType.java +++ b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/jsx/language/JSXFileType.java @@ -11,8 +11,8 @@ import consulo.ui.image.Image; import consulo.virtualFileSystem.VirtualFile; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/jsx/language/JSXFileTypeFactory.java b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/jsx/language/JSXFileTypeFactory.java index 68170888..944d87af 100644 --- a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/jsx/language/JSXFileTypeFactory.java +++ b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/jsx/language/JSXFileTypeFactory.java @@ -4,7 +4,7 @@ import consulo.virtualFileSystem.fileType.FileTypeConsumer; import consulo.virtualFileSystem.fileType.FileTypeFactory; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/jsx/language/JSXJavaScriptVersion.java b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/jsx/language/JSXJavaScriptVersion.java index 3db5f974..f835371c 100644 --- a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/jsx/language/JSXJavaScriptVersion.java +++ b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/jsx/language/JSXJavaScriptVersion.java @@ -3,8 +3,7 @@ import consulo.annotation.component.ExtensionImpl; import consulo.javascript.ecmascript.lang.EcmaScript6JavaScriptVersion; import consulo.javascript.language.JavaScriptLanguage; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/jsx/language/psi/impl/JSXmlTagReference.java b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/jsx/language/psi/impl/JSXmlTagReference.java index b95b6769..15d371f5 100644 --- a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/jsx/language/psi/impl/JSXmlTagReference.java +++ b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/jsx/language/psi/impl/JSXmlTagReference.java @@ -3,9 +3,9 @@ import consulo.annotation.access.RequiredReadAction; import consulo.language.psi.PsiElement; import consulo.language.psi.PsiReferenceBase; +import jakarta.annotation.Nonnull; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/jsx/language/psi/impl/JSXmlTagReferenceContributor.java b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/jsx/language/psi/impl/JSXmlTagReferenceContributor.java index ce6fabb9..a1de075d 100644 --- a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/jsx/language/psi/impl/JSXmlTagReferenceContributor.java +++ b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/jsx/language/psi/impl/JSXmlTagReferenceContributor.java @@ -8,7 +8,7 @@ import consulo.language.psi.*; import consulo.language.util.ProcessingContext; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/EcmaScript4JavaScriptVersion.java b/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/EcmaScript4JavaScriptVersion.java index 169b05df..f3e084fb 100644 --- a/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/EcmaScript4JavaScriptVersion.java +++ b/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/EcmaScript4JavaScriptVersion.java @@ -10,8 +10,7 @@ import consulo.javascript.language.JavaScriptFeature; import consulo.language.lexer.Lexer; import consulo.language.parser.PsiParser; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4Parser.java b/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4Parser.java index 8aaaad41..5bd643de 100644 --- a/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4Parser.java +++ b/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4Parser.java @@ -3,7 +3,7 @@ import consulo.javascript.lang.parsing.JavaScriptParser; import consulo.javascript.lang.parsing.JavaScriptParsingContext; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4ParsingContext.java b/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4ParsingContext.java index d3a2da3a..3533cd4f 100644 --- a/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4ParsingContext.java +++ b/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4ParsingContext.java @@ -4,8 +4,7 @@ import consulo.javascript.lang.parsing.FunctionParsing; import consulo.javascript.lang.parsing.JavaScriptParsingContext; import consulo.javascript.lang.parsing.StatementParsing; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4StatementParsing.java b/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4StatementParsing.java index 9c142476..df29143d 100644 --- a/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4StatementParsing.java +++ b/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4StatementParsing.java @@ -8,7 +8,7 @@ import consulo.language.parser.PsiBuilder; import consulo.logging.Logger; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/lang-version-impl/javascript16-impl/src/main/java/consulo/javascript/javascript16/lang/JavaScript16LanguageVersion.java b/lang-version-impl/javascript16-impl/src/main/java/consulo/javascript/javascript16/lang/JavaScript16LanguageVersion.java index 9b7a9adb..e2bd9187 100644 --- a/lang-version-impl/javascript16-impl/src/main/java/consulo/javascript/javascript16/lang/JavaScript16LanguageVersion.java +++ b/lang-version-impl/javascript16-impl/src/main/java/consulo/javascript/javascript16/lang/JavaScript16LanguageVersion.java @@ -25,7 +25,7 @@ import consulo.language.editor.highlight.SyntaxHighlighter; import consulo.language.lexer.Lexer; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import java.util.function.Supplier; /** diff --git a/lang-version-impl/javascript17-impl/src/main/java/consulo/javascript/javascript17/lang/JavaScript17LanguageVersion.java b/lang-version-impl/javascript17-impl/src/main/java/consulo/javascript/javascript17/lang/JavaScript17LanguageVersion.java index af42dc90..13b62614 100644 --- a/lang-version-impl/javascript17-impl/src/main/java/consulo/javascript/javascript17/lang/JavaScript17LanguageVersion.java +++ b/lang-version-impl/javascript17-impl/src/main/java/consulo/javascript/javascript17/lang/JavaScript17LanguageVersion.java @@ -25,7 +25,7 @@ import consulo.language.editor.highlight.SyntaxHighlighter; import consulo.language.lexer.Lexer; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import java.util.function.Supplier; /** diff --git a/lang-version-impl/javascript18-impl/src/main/java/consulo/javascript/javascript18/lang/JavaScript185LanguageVersion.java b/lang-version-impl/javascript18-impl/src/main/java/consulo/javascript/javascript18/lang/JavaScript185LanguageVersion.java index db36cd1e..2c8bf63d 100644 --- a/lang-version-impl/javascript18-impl/src/main/java/consulo/javascript/javascript18/lang/JavaScript185LanguageVersion.java +++ b/lang-version-impl/javascript18-impl/src/main/java/consulo/javascript/javascript18/lang/JavaScript185LanguageVersion.java @@ -25,7 +25,7 @@ import consulo.language.editor.highlight.SyntaxHighlighter; import consulo.language.lexer.Lexer; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import java.util.function.Supplier; /** diff --git a/lang-version-impl/javascript18-impl/src/main/java/consulo/javascript/javascript18/lang/JavaScript18LanguageVersion.java b/lang-version-impl/javascript18-impl/src/main/java/consulo/javascript/javascript18/lang/JavaScript18LanguageVersion.java index 7e1e3b00..c5eaad98 100644 --- a/lang-version-impl/javascript18-impl/src/main/java/consulo/javascript/javascript18/lang/JavaScript18LanguageVersion.java +++ b/lang-version-impl/javascript18-impl/src/main/java/consulo/javascript/javascript18/lang/JavaScript18LanguageVersion.java @@ -24,8 +24,8 @@ import consulo.javascript.language.StandardJavaScriptVersion; import consulo.language.editor.highlight.SyntaxHighlighter; import consulo.language.lexer.Lexer; +import jakarta.annotation.Nonnull; -import javax.annotation.Nonnull; import java.util.function.Supplier; /** diff --git a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/JsonFileType.java b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/JsonFileType.java index 455c3d39..4311100a 100644 --- a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/JsonFileType.java +++ b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/JsonFileType.java @@ -26,9 +26,9 @@ import consulo.module.Module; import consulo.ui.image.Image; import consulo.virtualFileSystem.VirtualFile; +import jakarta.annotation.Nonnull; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/JsonFileTypeFactory.java b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/JsonFileTypeFactory.java index ea9f6a79..305ec2a9 100644 --- a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/JsonFileTypeFactory.java +++ b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/JsonFileTypeFactory.java @@ -3,8 +3,7 @@ import consulo.annotation.component.ExtensionImpl; import consulo.virtualFileSystem.fileType.FileTypeConsumer; import consulo.virtualFileSystem.fileType.FileTypeFactory; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/JomFileDescriptor.java b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/JomFileDescriptor.java index ea17af09..8437d4be 100644 --- a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/JomFileDescriptor.java +++ b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/JomFileDescriptor.java @@ -22,7 +22,7 @@ import consulo.language.psi.PsiFile; import consulo.ui.image.Image; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/JomFileElement.java b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/JomFileElement.java index f6ed4647..3c47c095 100644 --- a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/JomFileElement.java +++ b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/JomFileElement.java @@ -22,7 +22,7 @@ import consulo.language.psi.util.PsiTreeUtil; import consulo.util.lang.lazy.LazyValue; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import java.util.function.Supplier; /** diff --git a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/JomIconDescriptorUpdater.java b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/JomIconDescriptorUpdater.java index a2dbd22b..1fb03a90 100644 --- a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/JomIconDescriptorUpdater.java +++ b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/JomIconDescriptorUpdater.java @@ -22,8 +22,7 @@ import consulo.language.icon.IconDescriptorUpdater; import consulo.language.psi.PsiElement; import consulo.language.psi.PsiFile; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/JomManager.java b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/JomManager.java index ada3199f..614c0c7f 100644 --- a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/JomManager.java +++ b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/JomManager.java @@ -34,8 +34,8 @@ import jakarta.inject.Inject; import jakarta.inject.Singleton; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/JomModeAsJsonFileDescriptorProvider.java b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/JomModeAsJsonFileDescriptorProvider.java index 15b30c1f..025fd8b4 100644 --- a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/JomModeAsJsonFileDescriptorProvider.java +++ b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/JomModeAsJsonFileDescriptorProvider.java @@ -25,8 +25,8 @@ import consulo.language.psi.PsiFile; import consulo.util.collection.ContainerUtil; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; import java.lang.reflect.Method; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; diff --git a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/JomUtil.java b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/JomUtil.java index 65a8652b..bc7de45e 100644 --- a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/JomUtil.java +++ b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/JomUtil.java @@ -2,9 +2,9 @@ import consulo.util.lang.ObjectUtil; import consulo.util.lang.StringUtil; +import jakarta.annotation.Nonnull; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; import java.lang.reflect.Method; /** diff --git a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/proxy/JomProxyInvocationHandler.java b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/proxy/JomProxyInvocationHandler.java index 21b70e4a..f16689ec 100644 --- a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/proxy/JomProxyInvocationHandler.java +++ b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/proxy/JomProxyInvocationHandler.java @@ -4,8 +4,8 @@ import java.lang.reflect.Method; import java.lang.reflect.Proxy; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; import consulo.annotation.access.RequiredReadAction; import consulo.json.jom.JomElement; import consulo.json.jom.JomUtil; diff --git a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/proxy/JomValueConverter.java b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/proxy/JomValueConverter.java index 302abecd..b4556dd2 100644 --- a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/proxy/JomValueConverter.java +++ b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/proxy/JomValueConverter.java @@ -8,8 +8,8 @@ import consulo.json.jom.proxy.impl.*; import consulo.language.psi.PsiElement; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; import java.lang.reflect.Array; import java.lang.reflect.Type; import java.util.*; diff --git a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/proxy/impl/JomBooleanValue.java b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/proxy/impl/JomBooleanValue.java index d5d37e31..ff4f53f5 100644 --- a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/proxy/impl/JomBooleanValue.java +++ b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/proxy/impl/JomBooleanValue.java @@ -2,8 +2,8 @@ import java.lang.reflect.Type; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; import consulo.annotation.access.RequiredReadAction; import consulo.json.jom.proxy.JomBadValueExpressionException; import consulo.json.jom.proxy.JomValueConverter; diff --git a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/proxy/impl/JomCollectionValue.java b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/proxy/impl/JomCollectionValue.java index bcfc0889..71cc177a 100644 --- a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/proxy/impl/JomCollectionValue.java +++ b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/proxy/impl/JomCollectionValue.java @@ -4,7 +4,7 @@ import java.lang.reflect.Type; import java.util.Collection; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import consulo.annotation.access.RequiredReadAction; import consulo.json.jom.proxy.JomBadValueExpressionException; diff --git a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/proxy/impl/JomMapConverter.java b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/proxy/impl/JomMapConverter.java index ae1cfabf..42b48943 100644 --- a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/proxy/impl/JomMapConverter.java +++ b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/proxy/impl/JomMapConverter.java @@ -5,7 +5,7 @@ import java.util.LinkedHashMap; import java.util.Map; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import consulo.annotation.access.RequiredReadAction; import consulo.json.jom.proxy.JomBadValueExpressionException; import consulo.json.jom.proxy.JomValueConverter; diff --git a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/proxy/impl/JomNullableNumberValue.java b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/proxy/impl/JomNullableNumberValue.java index 9c4dbe50..48eeba33 100644 --- a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/proxy/impl/JomNullableNumberValue.java +++ b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/proxy/impl/JomNullableNumberValue.java @@ -12,7 +12,7 @@ import consulo.util.lang.lazy.LazyValue; import consulo.util.lang.reflect.ReflectionUtil; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import java.lang.reflect.Method; import java.lang.reflect.Type; import java.util.function.Supplier; diff --git a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/proxy/impl/JomStringConverter.java b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/proxy/impl/JomStringConverter.java index c71c9198..11937677 100644 --- a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/proxy/impl/JomStringConverter.java +++ b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/proxy/impl/JomStringConverter.java @@ -2,7 +2,7 @@ import java.lang.reflect.Type; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import consulo.javascript.psi.JSSimpleLiteralExpression; import consulo.language.psi.PsiElement; diff --git a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/lang/JsonJavaScriptParser.java b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/lang/JsonJavaScriptParser.java index ef466ece..59cfaf5d 100644 --- a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/lang/JsonJavaScriptParser.java +++ b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/lang/JsonJavaScriptParser.java @@ -13,7 +13,7 @@ import consulo.language.version.LanguageVersion; import consulo.logging.Logger; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/lang/JsonJavaScriptVersion.java b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/lang/JsonJavaScriptVersion.java index d7a88824..e88e67f0 100644 --- a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/lang/JsonJavaScriptVersion.java +++ b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/lang/JsonJavaScriptVersion.java @@ -11,8 +11,9 @@ import consulo.language.parser.PsiParser; import consulo.virtualFileSystem.fileType.FileType; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; + import java.util.function.Supplier; /** diff --git a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/lang/JsonQuoteHandler.java b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/lang/JsonQuoteHandler.java index 3f9a44e5..4e50b3ba 100644 --- a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/lang/JsonQuoteHandler.java +++ b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/lang/JsonQuoteHandler.java @@ -5,7 +5,7 @@ import consulo.json.JsonFileType; import consulo.virtualFileSystem.fileType.FileType; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/JsonFileDescriptorProvider.java b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/JsonFileDescriptorProvider.java index 73e65058..ea37c99f 100644 --- a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/JsonFileDescriptorProvider.java +++ b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/JsonFileDescriptorProvider.java @@ -23,7 +23,7 @@ import consulo.json.validation.descriptor.JsonObjectDescriptor; import consulo.language.psi.PsiFile; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/JsonFileDescriptorProviders.java b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/JsonFileDescriptorProviders.java index 73acb67a..397513a0 100644 --- a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/JsonFileDescriptorProviders.java +++ b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/JsonFileDescriptorProviders.java @@ -16,8 +16,6 @@ package consulo.json.validation; -import javax.annotation.Nullable; - import consulo.annotation.access.RequiredReadAction; import consulo.application.util.CachedValuesManager; import consulo.json.JsonFileType; @@ -25,6 +23,7 @@ import consulo.language.psi.PsiFile; import consulo.application.util.CachedValueProvider; import consulo.language.psi.PsiModificationTracker; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/NativeArray.java b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/NativeArray.java index de902df7..2915ad10 100644 --- a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/NativeArray.java +++ b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/NativeArray.java @@ -16,7 +16,7 @@ package consulo.json.validation; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/completion/JsonCompletionContributor.java b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/completion/JsonCompletionContributor.java index cb6ea592..41b38436 100644 --- a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/completion/JsonCompletionContributor.java +++ b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/completion/JsonCompletionContributor.java @@ -43,7 +43,7 @@ import consulo.util.collection.ContainerUtil; import consulo.util.lang.StringUtil; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import java.util.*; /** diff --git a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/descriptionByAnotherPsiElement/DescriptionByAnotherPsiElementEditorNotification.java b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/descriptionByAnotherPsiElement/DescriptionByAnotherPsiElementEditorNotification.java index 378c37eb..f81dc90a 100644 --- a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/descriptionByAnotherPsiElement/DescriptionByAnotherPsiElementEditorNotification.java +++ b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/descriptionByAnotherPsiElement/DescriptionByAnotherPsiElementEditorNotification.java @@ -38,8 +38,8 @@ import consulo.util.lang.StringUtil; import consulo.virtualFileSystem.VirtualFile; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; import java.util.function.Consumer; import java.util.function.Supplier; diff --git a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/descriptionByAnotherPsiElement/DescriptionByAnotherPsiElementJsonDescriptionProvider.java b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/descriptionByAnotherPsiElement/DescriptionByAnotherPsiElementJsonDescriptionProvider.java index 792e0dcf..374b9355 100644 --- a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/descriptionByAnotherPsiElement/DescriptionByAnotherPsiElementJsonDescriptionProvider.java +++ b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/descriptionByAnotherPsiElement/DescriptionByAnotherPsiElementJsonDescriptionProvider.java @@ -26,7 +26,7 @@ import consulo.util.lang.Pair; import consulo.virtualFileSystem.VirtualFile; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/descriptionByAnotherPsiElement/DescriptionByAnotherPsiElementProvider.java b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/descriptionByAnotherPsiElement/DescriptionByAnotherPsiElementProvider.java index 317daf99..2625158b 100644 --- a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/descriptionByAnotherPsiElement/DescriptionByAnotherPsiElementProvider.java +++ b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/descriptionByAnotherPsiElement/DescriptionByAnotherPsiElementProvider.java @@ -24,8 +24,8 @@ import consulo.project.Project; import consulo.ui.annotation.RequiredUIAccess; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/descriptionByAnotherPsiElement/DescriptionByAnotherPsiElementRegistrar.java b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/descriptionByAnotherPsiElement/DescriptionByAnotherPsiElementRegistrar.java index c40377d2..9ca87e37 100644 --- a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/descriptionByAnotherPsiElement/DescriptionByAnotherPsiElementRegistrar.java +++ b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/descriptionByAnotherPsiElement/DescriptionByAnotherPsiElementRegistrar.java @@ -22,7 +22,7 @@ import consulo.fileEditor.EditorNotificationProvider; import consulo.project.Project; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import java.util.function.Consumer; /** diff --git a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/descriptionByAnotherPsiElement/DescriptionByAnotherPsiElementService.java b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/descriptionByAnotherPsiElement/DescriptionByAnotherPsiElementService.java index 4e31d177..2e43d504 100644 --- a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/descriptionByAnotherPsiElement/DescriptionByAnotherPsiElementService.java +++ b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/descriptionByAnotherPsiElement/DescriptionByAnotherPsiElementService.java @@ -41,8 +41,8 @@ import jakarta.inject.Singleton; import org.jdom.Element; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; import java.util.ArrayList; import java.util.Iterator; import java.util.List; diff --git a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/descriptor/JsonObjectDescriptor.java b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/descriptor/JsonObjectDescriptor.java index edca4c39..d57b039d 100644 --- a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/descriptor/JsonObjectDescriptor.java +++ b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/descriptor/JsonObjectDescriptor.java @@ -19,13 +19,10 @@ import java.util.HashMap; import java.util.Map; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; import consulo.json.validation.NativeArray; -import consulo.util.collection.ContainerUtil; -import consulo.language.impl.ast.Factory; -import consulo.util.collection.Maps; /** * @author VISTALL diff --git a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/descriptor/JsonPropertyDescriptor.java b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/descriptor/JsonPropertyDescriptor.java index c1278419..d5d0778c 100644 --- a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/descriptor/JsonPropertyDescriptor.java +++ b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/descriptor/JsonPropertyDescriptor.java @@ -21,8 +21,8 @@ import consulo.language.psi.PsiElement; import consulo.language.psi.SmartPsiElementPointer; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/inspections/PropertyValidationInspection.java b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/inspections/PropertyValidationInspection.java index 7653958b..7e3ef5ea 100644 --- a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/inspections/PropertyValidationInspection.java +++ b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/inspections/PropertyValidationInspection.java @@ -42,8 +42,8 @@ import consulo.util.lang.StringUtil; import consulo.util.lang.function.PairProcessor; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; import java.util.*; /** diff --git a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/psi/reference/JsonPropertyNameReference.java b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/psi/reference/JsonPropertyNameReference.java index 0df3f52a..06225e2e 100644 --- a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/psi/reference/JsonPropertyNameReference.java +++ b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/psi/reference/JsonPropertyNameReference.java @@ -16,14 +16,13 @@ package consulo.json.validation.psi.reference; -import javax.annotation.Nullable; - import consulo.annotation.access.RequiredReadAction; import consulo.json.validation.descriptor.JsonPropertyDescriptor; import consulo.json.validation.inspections.PropertyValidationInspection; import com.intellij.lang.javascript.psi.JSProperty; import com.intellij.lang.javascript.psi.impl.reference.JSPropertyNameReference; import consulo.language.psi.PsiElement; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/psi/reference/JsonPropertyNameReferenceProvider.java b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/psi/reference/JsonPropertyNameReferenceProvider.java index 96b280f7..35466612 100644 --- a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/psi/reference/JsonPropertyNameReferenceProvider.java +++ b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/psi/reference/JsonPropertyNameReferenceProvider.java @@ -24,9 +24,8 @@ import consulo.json.validation.inspections.PropertyValidationInspection; import consulo.language.psi.PsiElement; import consulo.language.psi.PsiReference; - -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/lang-version-impl/typescript-impl/src/main/java/consulo/typescript/TypeScriptFileType.java b/lang-version-impl/typescript-impl/src/main/java/consulo/typescript/TypeScriptFileType.java index 5be239f6..ac7b376e 100644 --- a/lang-version-impl/typescript-impl/src/main/java/consulo/typescript/TypeScriptFileType.java +++ b/lang-version-impl/typescript-impl/src/main/java/consulo/typescript/TypeScriptFileType.java @@ -29,8 +29,8 @@ import consulo.typescript.version.TypeScriptLanguageVersion; import consulo.ui.image.Image; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/lang-version-impl/typescript-impl/src/main/java/consulo/typescript/TypeScriptFileTypeFactory.java b/lang-version-impl/typescript-impl/src/main/java/consulo/typescript/TypeScriptFileTypeFactory.java index b529295c..71248ff8 100644 --- a/lang-version-impl/typescript-impl/src/main/java/consulo/typescript/TypeScriptFileTypeFactory.java +++ b/lang-version-impl/typescript-impl/src/main/java/consulo/typescript/TypeScriptFileTypeFactory.java @@ -19,8 +19,7 @@ import consulo.annotation.component.ExtensionImpl; import consulo.virtualFileSystem.fileType.FileTypeConsumer; import consulo.virtualFileSystem.fileType.FileTypeFactory; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/lang-version-impl/typescript-impl/src/main/java/consulo/typescript/version/TypeScriptLanguageVersion.java b/lang-version-impl/typescript-impl/src/main/java/consulo/typescript/version/TypeScriptLanguageVersion.java index c16c9fdb..ab50be70 100644 --- a/lang-version-impl/typescript-impl/src/main/java/consulo/typescript/version/TypeScriptLanguageVersion.java +++ b/lang-version-impl/typescript-impl/src/main/java/consulo/typescript/version/TypeScriptLanguageVersion.java @@ -5,7 +5,7 @@ import consulo.javascript.language.JavaScriptFeature; import consulo.javascript.language.JavaScriptLanguage; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/plugin/src/main/java/com/intellij/javascript/JSClassNameMacro.java b/plugin/src/main/java/com/intellij/javascript/JSClassNameMacro.java index fe7af18c..affa83ad 100644 --- a/plugin/src/main/java/com/intellij/javascript/JSClassNameMacro.java +++ b/plugin/src/main/java/com/intellij/javascript/JSClassNameMacro.java @@ -33,7 +33,7 @@ import consulo.project.Project; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class JSClassNameMacro extends Macro diff --git a/plugin/src/main/java/com/intellij/javascript/JSImplementationTextSelectioner.java b/plugin/src/main/java/com/intellij/javascript/JSImplementationTextSelectioner.java index 1ddba26c..67d427d1 100644 --- a/plugin/src/main/java/com/intellij/javascript/JSImplementationTextSelectioner.java +++ b/plugin/src/main/java/com/intellij/javascript/JSImplementationTextSelectioner.java @@ -30,7 +30,7 @@ import consulo.language.psi.PsiElement; import consulo.language.psi.util.PsiTreeUtil; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class JSImplementationTextSelectioner implements ImplementationTextSelectioner diff --git a/plugin/src/main/java/com/intellij/javascript/JSMethodNameMacro.java b/plugin/src/main/java/com/intellij/javascript/JSMethodNameMacro.java index 056d2dbb..bb7d8e12 100644 --- a/plugin/src/main/java/com/intellij/javascript/JSMethodNameMacro.java +++ b/plugin/src/main/java/com/intellij/javascript/JSMethodNameMacro.java @@ -29,7 +29,7 @@ import consulo.language.psi.PsiElement; import consulo.language.psi.util.PsiTreeUtil; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class JSMethodNameMacro extends Macro diff --git a/plugin/src/main/java/com/intellij/javascript/JSParameterInfoHandler.java b/plugin/src/main/java/com/intellij/javascript/JSParameterInfoHandler.java index b6eaf6fd..e82ff321 100644 --- a/plugin/src/main/java/com/intellij/javascript/JSParameterInfoHandler.java +++ b/plugin/src/main/java/com/intellij/javascript/JSParameterInfoHandler.java @@ -33,8 +33,8 @@ import consulo.language.psi.search.DefinitionsScopedSearch; import consulo.util.collection.ArrayUtil; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; import java.util.*; /** diff --git a/plugin/src/main/java/com/intellij/javascript/manipulators/JSAttributeNameValuePairManipulator.java b/plugin/src/main/java/com/intellij/javascript/manipulators/JSAttributeNameValuePairManipulator.java index 5ec6c534..688c380a 100644 --- a/plugin/src/main/java/com/intellij/javascript/manipulators/JSAttributeNameValuePairManipulator.java +++ b/plugin/src/main/java/com/intellij/javascript/manipulators/JSAttributeNameValuePairManipulator.java @@ -23,7 +23,7 @@ import com.intellij.lang.javascript.psi.impl.JSChangeUtil; import consulo.project.Project; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author peter diff --git a/plugin/src/main/java/com/intellij/javascript/manipulators/JSDocTagManipulator.java b/plugin/src/main/java/com/intellij/javascript/manipulators/JSDocTagManipulator.java index 8bf64619..ac65997a 100644 --- a/plugin/src/main/java/com/intellij/javascript/manipulators/JSDocTagManipulator.java +++ b/plugin/src/main/java/com/intellij/javascript/manipulators/JSDocTagManipulator.java @@ -21,8 +21,7 @@ import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; import consulo.project.Project; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class JSDocTagManipulator extends JSAbstractElementManipulator diff --git a/plugin/src/main/java/com/intellij/javascript/manipulators/JSIncludeDirectiveManipulator.java b/plugin/src/main/java/com/intellij/javascript/manipulators/JSIncludeDirectiveManipulator.java index f9a9f2da..6346874b 100644 --- a/plugin/src/main/java/com/intellij/javascript/manipulators/JSIncludeDirectiveManipulator.java +++ b/plugin/src/main/java/com/intellij/javascript/manipulators/JSIncludeDirectiveManipulator.java @@ -20,7 +20,7 @@ import consulo.annotation.component.ExtensionImpl; import consulo.project.Project; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author peter diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/JSSmartEnterProcessor.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/JSSmartEnterProcessor.java index 6fff3a61..e029cc97 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/JSSmartEnterProcessor.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/JSSmartEnterProcessor.java @@ -31,7 +31,7 @@ import consulo.language.psi.util.PsiTreeUtil; import consulo.project.Project; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author Maxim.Mossienko diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/JavaScriptCodeContextType.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/JavaScriptCodeContextType.java index 4fd76cc9..38f2381c 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/JavaScriptCodeContextType.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/JavaScriptCodeContextType.java @@ -35,8 +35,7 @@ import consulo.util.lang.ref.Ref; import consulo.virtualFileSystem.fileType.FileType; import consulo.xml.lang.xml.XMLLanguage; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author Maxim.Mossienko diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/JavaScriptTargetElementUtilEx.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/JavaScriptTargetElementUtilEx.java index 634bf0f8..d27d081a 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/JavaScriptTargetElementUtilEx.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/JavaScriptTargetElementUtilEx.java @@ -22,8 +22,7 @@ import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.TargetElementUtilExtender; import consulo.language.psi.PsiElement; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author Maxim.Mossienko diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/JavascriptCommenter.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/JavascriptCommenter.java index 6800da67..ea5879ff 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/JavascriptCommenter.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/JavascriptCommenter.java @@ -24,8 +24,8 @@ import consulo.language.ast.IElementType; import consulo.language.psi.PsiComment; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; /** * @author max diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/findUsages/JavaScriptClassGroupRuleProvider.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/findUsages/JavaScriptClassGroupRuleProvider.java index 219047d9..dc2a10a5 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/findUsages/JavaScriptClassGroupRuleProvider.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/findUsages/JavaScriptClassGroupRuleProvider.java @@ -22,8 +22,7 @@ import consulo.annotation.component.ExtensionImpl; import consulo.application.AllIcons; import consulo.usage.UsageGroup; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author Maxim.Mossienko diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/findUsages/JavaScriptFindUsagesProvider.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/findUsages/JavaScriptFindUsagesProvider.java index 09871c2a..4494aa5b 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/findUsages/JavaScriptFindUsagesProvider.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/findUsages/JavaScriptFindUsagesProvider.java @@ -28,7 +28,7 @@ import consulo.xml.psi.xml.XmlTag; import consulo.xml.psi.xml.XmlToken; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * User: max diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/findUsages/JavaScriptFunctionGroupRuleProvider.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/findUsages/JavaScriptFunctionGroupRuleProvider.java index c2bfac95..51b80a31 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/findUsages/JavaScriptFunctionGroupRuleProvider.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/findUsages/JavaScriptFunctionGroupRuleProvider.java @@ -21,8 +21,7 @@ import consulo.annotation.component.ExtensionImpl; import consulo.application.AllIcons; import consulo.usage.UsageGroup; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author Maxim.Mossienko diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/findUsages/JavaScriptGroupRuleProviderBase.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/findUsages/JavaScriptGroupRuleProviderBase.java index b2b33dcb..20b2dd6f 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/findUsages/JavaScriptGroupRuleProviderBase.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/findUsages/JavaScriptGroupRuleProviderBase.java @@ -39,9 +39,8 @@ import consulo.util.dataholder.Key; import consulo.util.lang.Comparing; import consulo.virtualFileSystem.status.FileStatus; - -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; /** * @author Maxim.Mossienko diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/AddImportECMAScriptClassOrFunctionAction.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/AddImportECMAScriptClassOrFunctionAction.java index 08669f84..b513e007 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/AddImportECMAScriptClassOrFunctionAction.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/AddImportECMAScriptClassOrFunctionAction.java @@ -49,7 +49,7 @@ import consulo.util.collection.SmartList; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import java.util.Collection; import java.util.Collections; import java.util.Iterator; diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/ECMAScriptImportOptimizer.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/ECMAScriptImportOptimizer.java index bfec99bb..4f7a827a 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/ECMAScriptImportOptimizer.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/ECMAScriptImportOptimizer.java @@ -37,7 +37,7 @@ import consulo.util.lang.EmptyRunnable; import consulo.util.lang.Pair; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import java.util.*; /** diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/ImportUtils.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/ImportUtils.java index 4c8cc091..204c0203 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/ImportUtils.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/ImportUtils.java @@ -42,8 +42,8 @@ import consulo.xml.psi.xml.XmlText; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; import java.util.*; /** diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/AS3InterfaceDumper.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/AS3InterfaceDumper.java index 5297d6a7..fb424486 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/AS3InterfaceDumper.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/AS3InterfaceDumper.java @@ -18,8 +18,8 @@ import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; import java.util.Set; /** diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/AS3InterfaceStubDumper.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/AS3InterfaceStubDumper.java index 4ce5b526..ae72c5bf 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/AS3InterfaceStubDumper.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/AS3InterfaceStubDumper.java @@ -19,8 +19,8 @@ import java.util.LinkedList; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; import com.intellij.lang.javascript.JSElementTypes; import com.intellij.lang.javascript.psi.stubs.impl.JSAttributeNameValuePairStubImpl; import com.intellij.lang.javascript.psi.stubs.impl.JSReferenceListStubImpl; diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/Abc.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/Abc.java index 38f3c2d6..23a63665 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/Abc.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/Abc.java @@ -21,7 +21,7 @@ import consulo.util.collection.ArrayUtil; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import consulo.util.lang.StringUtil; /** diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/AbcDumper.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/AbcDumper.java index c23677c8..e684bec6 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/AbcDumper.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/AbcDumper.java @@ -16,8 +16,8 @@ package com.intellij.lang.javascript.impl.flex.importer; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; /** * @author Maxim.Mossienko diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/AbstractDumpProcessor.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/AbstractDumpProcessor.java index e49008ed..81f9de42 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/AbstractDumpProcessor.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/AbstractDumpProcessor.java @@ -16,8 +16,7 @@ package com.intellij.lang.javascript.impl.flex.importer; -import javax.annotation.Nonnull; - +import jakarta.annotation.Nonnull; import org.jetbrains.annotations.NonNls; /** diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/ByteBuffer.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/ByteBuffer.java index 888d0417..2074e0ca 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/ByteBuffer.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/ByteBuffer.java @@ -22,7 +22,7 @@ import java.io.UnsupportedEncodingException; import java.util.zip.InflaterInputStream; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author Maxim.Mossienko diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/FlexByteCodeInformationProcessor.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/FlexByteCodeInformationProcessor.java index 0e768417..2ca09555 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/FlexByteCodeInformationProcessor.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/FlexByteCodeInformationProcessor.java @@ -17,8 +17,8 @@ package com.intellij.lang.javascript.impl.flex.importer; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; /** * @author Maxim.Mossienko diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/FlexImporter.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/FlexImporter.java index b9e9a12a..82574aa3 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/FlexImporter.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/FlexImporter.java @@ -22,9 +22,8 @@ import java.io.IOException; import java.io.InputStream; -import javax.annotation.Nonnull; - import consulo.language.psi.stub.StubElement; +import jakarta.annotation.Nonnull; import org.jetbrains.annotations.NonNls; /** diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/MemberInfo.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/MemberInfo.java index c9763a86..8f985a8f 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/MemberInfo.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/MemberInfo.java @@ -16,7 +16,7 @@ package com.intellij.lang.javascript.impl.flex.importer; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author Maxim.Mossienko diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/folding/JavaScriptFoldingBuilder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/folding/JavaScriptFoldingBuilder.java index 8a5040d7..675d06b9 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/folding/JavaScriptFoldingBuilder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/folding/JavaScriptFoldingBuilder.java @@ -36,7 +36,7 @@ import consulo.language.editor.folding.FoldingBuilder; import consulo.language.psi.PsiWhiteSpace; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import java.util.ArrayList; import java.util.List; diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSCodeStylePanel.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSCodeStylePanel.java index 389b6515..78b197a6 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSCodeStylePanel.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSCodeStylePanel.java @@ -29,7 +29,7 @@ import consulo.virtualFileSystem.fileType.FileType; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import javax.swing.*; import javax.swing.event.DocumentEvent; import java.awt.event.ItemEvent; diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSCodeStyleSettingsProvider.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSCodeStyleSettingsProvider.java index 24abcc8d..fcadded6 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSCodeStyleSettingsProvider.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSCodeStyleSettingsProvider.java @@ -25,9 +25,8 @@ import consulo.language.codeStyle.CodeStyleSettings; import consulo.language.codeStyle.CustomCodeStyleSettings; import consulo.language.codeStyle.setting.CodeStyleSettingsProvider; - -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; /** * @author Maxim.Mossienko diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSFormattingModel.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSFormattingModel.java index 373b3e13..9266d98d 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSFormattingModel.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSFormattingModel.java @@ -16,8 +16,6 @@ package com.intellij.lang.javascript.impl.formatter; -import javax.annotation.Nonnull; - import consulo.language.codeStyle.FormattingModel; import consulo.language.codeStyle.FormattingModelProvider; import consulo.language.ast.ASTNode; @@ -26,6 +24,7 @@ import consulo.language.codeStyle.Block; import consulo.language.codeStyle.FormattingDocumentModel; import consulo.language.psi.PsiFile; +import jakarta.annotation.Nonnull; /** * @author ven diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JavascriptFormattingModelBuilder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JavascriptFormattingModelBuilder.java index cb573b42..a518c1d0 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JavascriptFormattingModelBuilder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JavascriptFormattingModelBuilder.java @@ -28,7 +28,7 @@ import consulo.language.psi.PsiElement; import consulo.language.psi.PsiFile; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class JavascriptFormattingModelBuilder implements FormattingModelBuilder diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/blocks/JSBlock.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/blocks/JSBlock.java index c2b7a9d6..0aff8bda 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/blocks/JSBlock.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/blocks/JSBlock.java @@ -28,8 +28,8 @@ import consulo.language.psi.PsiErrorElement; import consulo.language.psi.PsiWhiteSpace; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; import java.util.List; /** diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/blocks/JSDocCommentBlock.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/blocks/JSDocCommentBlock.java index 33247c74..237900e2 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/blocks/JSDocCommentBlock.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/blocks/JSDocCommentBlock.java @@ -19,8 +19,7 @@ import java.util.ArrayList; import java.util.List; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; import consulo.language.codeStyle.Alignment; import consulo.language.codeStyle.Block; import consulo.language.codeStyle.Indent; @@ -29,6 +28,7 @@ import consulo.language.ast.ASTNode; import consulo.document.util.TextRange; import consulo.language.codeStyle.ChildAttributes; +import jakarta.annotation.Nullable; /** * @author yole diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/blocks/SubBlockVisitor.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/blocks/SubBlockVisitor.java index 16835acb..e00e940f 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/blocks/SubBlockVisitor.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/blocks/SubBlockVisitor.java @@ -29,8 +29,8 @@ import consulo.language.ast.IElementType; import consulo.annotation.access.RequiredReadAction; import consulo.language.psi.PsiElement; +import jakarta.annotation.Nullable; -import javax.annotation.Nullable; import java.util.ArrayList; import java.util.List; diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/BaseJSGenerateAction.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/BaseJSGenerateAction.java index b77000dd..49571634 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/BaseJSGenerateAction.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/BaseJSGenerateAction.java @@ -28,8 +28,7 @@ import consulo.ui.ex.action.AnAction; import consulo.ui.ex.action.AnActionEvent; import consulo.virtualFileSystem.VirtualFile; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author Maxim.Mossienko diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/BaseJSGenerateHandler.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/BaseJSGenerateHandler.java index 0c3642d7..539eca69 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/BaseJSGenerateHandler.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/BaseJSGenerateHandler.java @@ -38,7 +38,7 @@ import consulo.project.Project; import consulo.undoRedo.CommandProcessor; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import javax.swing.*; import java.util.ArrayList; import java.util.Collection; diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptGenerateAccessorHandler.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptGenerateAccessorHandler.java index 9cfd208c..17d30834 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptGenerateAccessorHandler.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptGenerateAccessorHandler.java @@ -37,7 +37,7 @@ import consulo.util.lang.StringUtil; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import javax.swing.*; import java.util.*; diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JSBraceMatcher.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JSBraceMatcher.java index e57866ee..3e804004 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JSBraceMatcher.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JSBraceMatcher.java @@ -23,9 +23,9 @@ import consulo.language.Language; import consulo.language.PairedBraceMatcher; import consulo.language.ast.IElementType; +import jakarta.annotation.Nonnull; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; /** * User: max diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptColorsAndFontsPage.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptColorsAndFontsPage.java index fd1913b0..05b881d6 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptColorsAndFontsPage.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptColorsAndFontsPage.java @@ -27,7 +27,7 @@ import consulo.language.editor.highlight.SyntaxHighlighter; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import java.util.HashMap; import java.util.Map; diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptHighlightVisitor.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptHighlightVisitor.java index 016410bb..0f2b72b2 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptHighlightVisitor.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptHighlightVisitor.java @@ -38,8 +38,8 @@ import consulo.localize.LocalizeValue; import consulo.util.lang.StringUtil; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; public class JavaScriptHighlightVisitor extends JSElementVisitor implements HighlightVisitor { diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptHighlightVisitorFactory.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptHighlightVisitorFactory.java index 600a9b3f..91204479 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptHighlightVisitorFactory.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptHighlightVisitorFactory.java @@ -6,7 +6,7 @@ import consulo.language.editor.rawHighlight.HighlightVisitorFactory; import consulo.language.psi.PsiFile; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptLineMarkerProvider.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptLineMarkerProvider.java index 9d37386a..3f8f956b 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptLineMarkerProvider.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptLineMarkerProvider.java @@ -44,8 +44,8 @@ import consulo.util.dataholder.Key; import consulo.util.lang.ref.Ref; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; import java.awt.event.MouseEvent; import java.util.*; import java.util.function.Function; diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/CreateClassOrInterfaceAction.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/CreateClassOrInterfaceAction.java index 6d7fc913..643b000f 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/CreateClassOrInterfaceAction.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/CreateClassOrInterfaceAction.java @@ -42,7 +42,7 @@ import consulo.virtualFileSystem.util.VirtualFileUtil; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import java.util.Properties; /** diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSDeprecatedSymbolsInspection.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSDeprecatedSymbolsInspection.java index 540de9a1..c1136623 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSDeprecatedSymbolsInspection.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSDeprecatedSymbolsInspection.java @@ -29,7 +29,7 @@ import consulo.language.psi.ResolveResult; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @by Maxim.Mossienko diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSDuplicatedDeclarationInspection.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSDuplicatedDeclarationInspection.java index 178b1b31..c93b066e 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSDuplicatedDeclarationInspection.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSDuplicatedDeclarationInspection.java @@ -35,7 +35,7 @@ import consulo.language.psi.util.PsiTreeUtil; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author Maxim.Mossienko diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSInspection.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSInspection.java index 8f100336..3db30641 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSInspection.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSInspection.java @@ -32,8 +32,8 @@ import consulo.language.psi.PsiNamedElement; import consulo.language.psi.util.PsiTreeUtil; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; /** * User: Maxim.Mossienko diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUndeclaredVariableInspection.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUndeclaredVariableInspection.java index 276a1108..4433cefa 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUndeclaredVariableInspection.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUndeclaredVariableInspection.java @@ -38,7 +38,7 @@ import consulo.project.Project; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import java.util.LinkedList; import java.util.List; diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnresolvedFunctionInspection.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnresolvedFunctionInspection.java index c58af7fc..cdff7322 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnresolvedFunctionInspection.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnresolvedFunctionInspection.java @@ -46,10 +46,11 @@ import consulo.localize.LocalizeValue; import consulo.project.Project; import consulo.xml.ide.highlighter.XmlFileType; +import jakarta.annotation.Nullable; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; + import java.util.LinkedList; import java.util.List; import java.util.function.BiFunction; diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnresolvedVariableInspection.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnresolvedVariableInspection.java index c0d553bc..1318b365 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnresolvedVariableInspection.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnresolvedVariableInspection.java @@ -39,9 +39,9 @@ import consulo.language.psi.util.PsiTreeUtil; import consulo.localize.LocalizeValue; import consulo.util.lang.StringUtil; +import jakarta.annotation.Nonnull; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; import java.util.LinkedList; import java.util.List; import java.util.Set; diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUntypedDeclarationInspection.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUntypedDeclarationInspection.java index 76086235..fd9ad07d 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUntypedDeclarationInspection.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUntypedDeclarationInspection.java @@ -44,7 +44,7 @@ import consulo.project.Project; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import java.util.Collections; /** diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnusedLocalSymbolsInspection.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnusedLocalSymbolsInspection.java index 6285611c..e02dc46c 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnusedLocalSymbolsInspection.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnusedLocalSymbolsInspection.java @@ -44,7 +44,7 @@ import consulo.util.dataholder.Key; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import java.util.BitSet; import java.util.Collections; import java.util.HashSet; diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/navigation/JavaScriptGotoSuperHandler.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/navigation/JavaScriptGotoSuperHandler.java index d57a64e9..90e1d7b8 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/navigation/JavaScriptGotoSuperHandler.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/navigation/JavaScriptGotoSuperHandler.java @@ -35,8 +35,7 @@ import consulo.navigation.NavigationItem; import consulo.project.Project; import consulo.ui.ex.popup.JBPopup; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class JavaScriptGotoSuperHandler implements GotoSuperActionHander diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/navigation/JavaScriptSymbolContributor.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/navigation/JavaScriptSymbolContributor.java index 5529826c..3ead17b8 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/navigation/JavaScriptSymbolContributor.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/navigation/JavaScriptSymbolContributor.java @@ -34,8 +34,8 @@ import consulo.project.Project; import consulo.util.io.FileUtil; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; import java.util.Collection; /** diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/BasicJavascriptNamesValidator.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/BasicJavascriptNamesValidator.java index eae7a968..1eb1bb04 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/BasicJavascriptNamesValidator.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/BasicJavascriptNamesValidator.java @@ -23,8 +23,7 @@ import consulo.annotation.component.ExtensionImpl; import consulo.javascript.language.JavaScriptLanguage; import consulo.language.Language; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class BasicJavascriptNamesValidator extends JSNamesValidator diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseIntroduceHandler.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseIntroduceHandler.java index 8d00e31b..ee97e355 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseIntroduceHandler.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseIntroduceHandler.java @@ -46,10 +46,11 @@ import consulo.project.ui.wm.WindowManager; import consulo.ui.ex.awt.DialogWrapper; import consulo.undoRedo.CommandProcessor; +import jakarta.annotation.Nullable; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; + import java.util.ArrayList; import java.util.List; diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JavascriptRefactoringSupportProvider.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JavascriptRefactoringSupportProvider.java index 71eca1dd..0f153d79 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JavascriptRefactoringSupportProvider.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JavascriptRefactoringSupportProvider.java @@ -31,9 +31,8 @@ import consulo.language.editor.refactoring.action.RefactoringActionHandler; import consulo.language.psi.PsiElement; import consulo.language.psi.scope.LocalSearchScope; - -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; @ExtensionImpl public class JavascriptRefactoringSupportProvider extends RefactoringSupportProvider diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/extractMethod/JSExtractFunctionHandler.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/extractMethod/JSExtractFunctionHandler.java index 9217c539..2bd40121 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/extractMethod/JSExtractFunctionHandler.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/extractMethod/JSExtractFunctionHandler.java @@ -27,7 +27,7 @@ import consulo.ui.ex.awt.DialogWrapper; import consulo.undoRedo.CommandProcessor; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author Maxim.Mossienko diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSDeclarationRangeHandler.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSDeclarationRangeHandler.java index 47cd35ee..1e746881 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSDeclarationRangeHandler.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSDeclarationRangeHandler.java @@ -22,7 +22,7 @@ import consulo.language.editor.hint.DeclarationRangeHandler; import consulo.language.psi.PsiElement; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author Maxim.Mossienko diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSDefinitionsSearchExecutor.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSDefinitionsSearchExecutor.java index b276b37c..2e8e59b3 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSDefinitionsSearchExecutor.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSDefinitionsSearchExecutor.java @@ -27,14 +27,13 @@ import consulo.javascript.language.JavaScriptLanguage; import consulo.language.psi.PsiElement; import consulo.language.psi.PsiNamedElement; -import consulo.language.psi.PsiReference; import consulo.language.psi.ResolveResult; import consulo.language.psi.scope.GlobalSearchScope; import consulo.language.psi.search.DefinitionsScopedSearch; import consulo.language.psi.search.DefinitionsScopedSearchExecutor; import consulo.language.psi.search.ReferencesSearch; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author Maxim.Mossienko diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSGotoTargetRendererProvider.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSGotoTargetRendererProvider.java index c8f84bcc..9c4e0dbc 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSGotoTargetRendererProvider.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSGotoTargetRendererProvider.java @@ -23,8 +23,7 @@ import consulo.language.psi.PsiElement; import consulo.navigation.ItemPresentation; import consulo.navigation.NavigationItem; - -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; /** * @author Maxim.Mossienko diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureItemPresentation.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureItemPresentation.java index 40983222..ae9b4c7e 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureItemPresentation.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureItemPresentation.java @@ -24,8 +24,7 @@ import consulo.language.psi.PsiElement; import consulo.language.psi.PsiNamedElement; import consulo.ui.image.Image; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author Maxim.Mossienko diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewBuilderFactory.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewBuilderFactory.java index e13ce8df..fa676c23 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewBuilderFactory.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewBuilderFactory.java @@ -28,8 +28,7 @@ import consulo.language.Language; import consulo.language.editor.structureView.PsiStructureViewFactory; import consulo.language.psi.PsiFile; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; @ExtensionImpl public class JSStructureViewBuilderFactory implements PsiStructureViewFactory diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewElement.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewElement.java index 7b664476..52fb4034 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewElement.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewElement.java @@ -31,7 +31,7 @@ import consulo.util.collection.primitive.ints.IntMaps; import consulo.util.collection.primitive.ints.IntObjectMap; -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; import java.util.*; /** diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewModel.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewModel.java index c87b731a..8b5a7384 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewModel.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewModel.java @@ -35,7 +35,7 @@ import consulo.util.lang.ref.Ref; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import java.util.Comparator; import java.util.List; diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSSuperGroup.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSSuperGroup.java index 910aa90d..05e7b8d8 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSSuperGroup.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSSuperGroup.java @@ -20,13 +20,12 @@ import java.util.Collection; import java.util.List; -import javax.annotation.Nullable; - import consulo.application.AllIcons; import consulo.fileEditor.structureView.tree.Group; import consulo.navigation.ItemPresentation; import consulo.fileEditor.structureView.tree.TreeElement; import consulo.ui.image.Image; +import jakarta.annotation.Nullable; /** * @author Maxim.Mossienko diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSSuperGrouper.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSSuperGrouper.java index 1dcb6761..075719f0 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSSuperGrouper.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSSuperGrouper.java @@ -25,11 +25,10 @@ import com.intellij.lang.javascript.psi.JSVariable; import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; import consulo.language.psi.PsiElement; -import consulo.ide.IdeBundle; import consulo.platform.base.icon.PlatformIconGroup; +import jakarta.annotation.Nonnull; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; import java.util.Collection; import java.util.Collections; import java.util.HashMap; diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSExpressionSurroundDescriptor.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSExpressionSurroundDescriptor.java index 9a7cb915..75908cbe 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSExpressionSurroundDescriptor.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSExpressionSurroundDescriptor.java @@ -28,8 +28,7 @@ import consulo.language.psi.PsiFile; import consulo.language.psi.PsiWhiteSpace; import consulo.language.psi.util.PsiTreeUtil; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * User: yole diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSStatementSurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSStatementSurrounder.java index f98ff314..b3944fd6 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSStatementSurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSStatementSurrounder.java @@ -16,7 +16,7 @@ package com.intellij.lang.javascript.impl.surroundWith; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import consulo.codeEditor.Editor; import consulo.language.codeStyle.CodeStyleManager; @@ -25,7 +25,7 @@ import consulo.language.util.IncorrectOperationException; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; import consulo.language.ast.ASTNode; import com.intellij.lang.javascript.psi.impl.JSChangeUtil; import consulo.document.util.TextRange; diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSStatementsSurroundDescriptor.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSStatementsSurroundDescriptor.java index 8f651c80..a9023d2a 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSStatementsSurroundDescriptor.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSStatementsSurroundDescriptor.java @@ -32,7 +32,7 @@ import consulo.language.psi.PsiWhiteSpace; import consulo.language.psi.util.PsiTreeUtil; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import java.util.ArrayList; import java.util.List; diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithParenthesesSurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithParenthesesSurrounder.java index 8569622b..caf7926d 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithParenthesesSurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithParenthesesSurrounder.java @@ -27,8 +27,8 @@ import consulo.language.util.IncorrectOperationException; import consulo.project.Project; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; /** * Created by IntelliJ IDEA. diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryCatchFinallySurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryCatchFinallySurrounder.java index 96ab2803..fd8b5bd8 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryCatchFinallySurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryCatchFinallySurrounder.java @@ -25,10 +25,9 @@ import consulo.language.ast.ASTNode; import consulo.language.psi.PsiElement; import consulo.project.Project; +import jakarta.annotation.Nonnull; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; - /** * Created by IntelliJ IDEA. * User: yole diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/BaseCreateMethodsFix.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/BaseCreateMethodsFix.java index 8a406ee5..85ba6f7c 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/BaseCreateMethodsFix.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/BaseCreateMethodsFix.java @@ -27,7 +27,7 @@ import consulo.language.ast.ASTNode; import consulo.language.util.IncorrectOperationException; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import com.intellij.lang.javascript.JSTokenTypes; import com.intellij.lang.javascript.impl.flex.ImportUtils; diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/ImplementMethodsFix.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/ImplementMethodsFix.java index 22951eb8..ae32dc65 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/ImplementMethodsFix.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/ImplementMethodsFix.java @@ -26,10 +26,9 @@ import consulo.language.editor.intention.SyntheticIntentionAction; import consulo.language.psi.PsiFile; import consulo.project.Project; +import jakarta.annotation.Nonnull; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; - /** * @author Maxim.Mossienko * Date: Jul 17, 2008 diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/ImplementedMethodProcessor.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/ImplementedMethodProcessor.java index 6a0d4d84..0ed4ceda 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/ImplementedMethodProcessor.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/ImplementedMethodProcessor.java @@ -24,8 +24,8 @@ import com.intellij.lang.javascript.psi.resolve.ResolveProcessor; import consulo.language.psi.PsiElement; import consulo.language.psi.resolve.ResolveState; +import jakarta.annotation.Nullable; -import javax.annotation.Nullable; import java.util.LinkedHashMap; import java.util.Map; import java.util.function.Function; diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatingVisitor.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatingVisitor.java index 18286eee..8c325f5b 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatingVisitor.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatingVisitor.java @@ -56,7 +56,7 @@ import consulo.xml.psi.xml.XmlTagChild; import org.jetbrains.annotations.NonNls; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import java.util.*; /** diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatorFactory.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatorFactory.java index d371e790..be889e39 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatorFactory.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatorFactory.java @@ -6,8 +6,8 @@ import consulo.language.editor.annotation.Annotator; import consulo.language.editor.annotation.AnnotatorFactory; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/plugin/src/main/java/consulo/javascript/impl/JavaScriptIconDescriptorUpdater.java b/plugin/src/main/java/consulo/javascript/impl/JavaScriptIconDescriptorUpdater.java index 67506cea..e121fbd7 100644 --- a/plugin/src/main/java/consulo/javascript/impl/JavaScriptIconDescriptorUpdater.java +++ b/plugin/src/main/java/consulo/javascript/impl/JavaScriptIconDescriptorUpdater.java @@ -29,8 +29,8 @@ import consulo.platform.base.icon.PlatformIconGroup; import consulo.ui.image.Image; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/plugin/src/main/java/consulo/javascript/impl/copyright/UpdateJavaScriptFileCopyright.java b/plugin/src/main/java/consulo/javascript/impl/copyright/UpdateJavaScriptFileCopyright.java index 164ae2b7..752e7313 100644 --- a/plugin/src/main/java/consulo/javascript/impl/copyright/UpdateJavaScriptFileCopyright.java +++ b/plugin/src/main/java/consulo/javascript/impl/copyright/UpdateJavaScriptFileCopyright.java @@ -23,8 +23,7 @@ import consulo.language.psi.PsiElement; import consulo.language.psi.PsiFile; import consulo.language.psi.PsiWhiteSpace; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; public class UpdateJavaScriptFileCopyright extends UpdatePsiFileCopyright { diff --git a/plugin/src/main/java/consulo/javascript/impl/copyright/UpdateJavaScriptFileCopyrightProvider.java b/plugin/src/main/java/consulo/javascript/impl/copyright/UpdateJavaScriptFileCopyrightProvider.java index c832e012..2d08111a 100644 --- a/plugin/src/main/java/consulo/javascript/impl/copyright/UpdateJavaScriptFileCopyrightProvider.java +++ b/plugin/src/main/java/consulo/javascript/impl/copyright/UpdateJavaScriptFileCopyrightProvider.java @@ -11,7 +11,7 @@ import consulo.project.Project; import consulo.virtualFileSystem.fileType.FileType; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/plugin/src/main/java/consulo/javascript/impl/findUsages/JavaScriptFindUsagesHandlerFactory.java b/plugin/src/main/java/consulo/javascript/impl/findUsages/JavaScriptFindUsagesHandlerFactory.java index edceabde..4ce94cc9 100644 --- a/plugin/src/main/java/consulo/javascript/impl/findUsages/JavaScriptFindUsagesHandlerFactory.java +++ b/plugin/src/main/java/consulo/javascript/impl/findUsages/JavaScriptFindUsagesHandlerFactory.java @@ -6,8 +6,8 @@ import com.intellij.lang.javascript.psi.JSDefinitionExpression; import consulo.language.psi.PsiElement; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/plugin/src/main/java/consulo/javascript/impl/formatter/JavaScriptCodeStyleConfigurable.java b/plugin/src/main/java/consulo/javascript/impl/formatter/JavaScriptCodeStyleConfigurable.java index 108e3799..7af99a38 100644 --- a/plugin/src/main/java/consulo/javascript/impl/formatter/JavaScriptCodeStyleConfigurable.java +++ b/plugin/src/main/java/consulo/javascript/impl/formatter/JavaScriptCodeStyleConfigurable.java @@ -1,6 +1,6 @@ package consulo.javascript.impl.formatter; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import consulo.language.codeStyle.ui.setting.CodeStyleAbstractConfigurable; import consulo.language.codeStyle.CodeStyleSettings; diff --git a/plugin/src/main/java/consulo/javascript/impl/formatter/JavaScriptLanguageCodeStyleSettingsProvider.java b/plugin/src/main/java/consulo/javascript/impl/formatter/JavaScriptLanguageCodeStyleSettingsProvider.java index 220bf5ea..e94004bf 100644 --- a/plugin/src/main/java/consulo/javascript/impl/formatter/JavaScriptLanguageCodeStyleSettingsProvider.java +++ b/plugin/src/main/java/consulo/javascript/impl/formatter/JavaScriptLanguageCodeStyleSettingsProvider.java @@ -10,7 +10,7 @@ import consulo.language.codeStyle.ui.setting.SmartIndentOptionsEditor; import consulo.util.io.FileUtil; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import java.io.IOException; /** diff --git a/plugin/src/main/java/consulo/javascript/impl/html/JavaScriptHtmlScriptContentProvider.java b/plugin/src/main/java/consulo/javascript/impl/html/JavaScriptHtmlScriptContentProvider.java index 174a10de..a1b03520 100644 --- a/plugin/src/main/java/consulo/javascript/impl/html/JavaScriptHtmlScriptContentProvider.java +++ b/plugin/src/main/java/consulo/javascript/impl/html/JavaScriptHtmlScriptContentProvider.java @@ -10,7 +10,7 @@ import consulo.xml.lang.HtmlScriptContentProvider; import jakarta.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/plugin/src/main/java/consulo/javascript/impl/ide/actions/JavaScriptCreateFileAction.java b/plugin/src/main/java/consulo/javascript/impl/ide/actions/JavaScriptCreateFileAction.java index b36a182e..87957250 100644 --- a/plugin/src/main/java/consulo/javascript/impl/ide/actions/JavaScriptCreateFileAction.java +++ b/plugin/src/main/java/consulo/javascript/impl/ide/actions/JavaScriptCreateFileAction.java @@ -16,8 +16,7 @@ import consulo.project.Project; import consulo.ui.annotation.RequiredUIAccess; import consulo.virtualFileSystem.fileType.FileType; - -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/plugin/src/main/java/consulo/javascript/impl/ide/actions/JavaScriptFileTemplateContributor.java b/plugin/src/main/java/consulo/javascript/impl/ide/actions/JavaScriptFileTemplateContributor.java index 66a4c5d7..db5ada54 100644 --- a/plugin/src/main/java/consulo/javascript/impl/ide/actions/JavaScriptFileTemplateContributor.java +++ b/plugin/src/main/java/consulo/javascript/impl/ide/actions/JavaScriptFileTemplateContributor.java @@ -3,8 +3,7 @@ import consulo.annotation.component.ExtensionImpl; import consulo.fileTemplate.FileTemplateContributor; import consulo.fileTemplate.FileTemplateRegistrator; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/plugin/src/main/java/consulo/javascript/impl/ide/completion/JavaScriptKeywordCompletionContributor.java b/plugin/src/main/java/consulo/javascript/impl/ide/completion/JavaScriptKeywordCompletionContributor.java index 08601a22..0d4202db 100644 --- a/plugin/src/main/java/consulo/javascript/impl/ide/completion/JavaScriptKeywordCompletionContributor.java +++ b/plugin/src/main/java/consulo/javascript/impl/ide/completion/JavaScriptKeywordCompletionContributor.java @@ -30,7 +30,7 @@ import consulo.language.psi.PsiElement; import consulo.language.util.ProcessingContext; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/plugin/src/main/java/consulo/javascript/impl/ide/completion/JavaScriptSkipAutopopupInStrings.java b/plugin/src/main/java/consulo/javascript/impl/ide/completion/JavaScriptSkipAutopopupInStrings.java index 07e554ac..3aa22d1c 100644 --- a/plugin/src/main/java/consulo/javascript/impl/ide/completion/JavaScriptSkipAutopopupInStrings.java +++ b/plugin/src/main/java/consulo/javascript/impl/ide/completion/JavaScriptSkipAutopopupInStrings.java @@ -5,7 +5,7 @@ import consulo.language.Language; import consulo.language.editor.completion.SkipAutopopupInStrings; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/plugin/src/main/java/consulo/javascript/impl/ide/navigationToolbar/JavaScriptNavBarModelExtension.java b/plugin/src/main/java/consulo/javascript/impl/ide/navigationToolbar/JavaScriptNavBarModelExtension.java index ac0ae4ce..38e217ae 100644 --- a/plugin/src/main/java/consulo/javascript/impl/ide/navigationToolbar/JavaScriptNavBarModelExtension.java +++ b/plugin/src/main/java/consulo/javascript/impl/ide/navigationToolbar/JavaScriptNavBarModelExtension.java @@ -7,9 +7,9 @@ import consulo.language.psi.PsiElement; import consulo.annotation.access.RequiredReadAction; import consulo.javascript.language.JavaScriptLanguage; +import jakarta.annotation.Nonnull; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/plugin/src/main/java/consulo/javascript/impl/lang/JavaScriptFileTypeFactory.java b/plugin/src/main/java/consulo/javascript/impl/lang/JavaScriptFileTypeFactory.java index 09529cfb..cad8e12c 100644 --- a/plugin/src/main/java/consulo/javascript/impl/lang/JavaScriptFileTypeFactory.java +++ b/plugin/src/main/java/consulo/javascript/impl/lang/JavaScriptFileTypeFactory.java @@ -21,7 +21,7 @@ import consulo.virtualFileSystem.fileType.FileTypeConsumer; import consulo.virtualFileSystem.fileType.FileTypeFactory; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/plugin/src/main/java/consulo/javascript/impl/lang/JavaScriptLanguageVersionPusher.java b/plugin/src/main/java/consulo/javascript/impl/lang/JavaScriptLanguageVersionPusher.java index 661a185e..6984f3b8 100644 --- a/plugin/src/main/java/consulo/javascript/impl/lang/JavaScriptLanguageVersionPusher.java +++ b/plugin/src/main/java/consulo/javascript/impl/lang/JavaScriptLanguageVersionPusher.java @@ -20,8 +20,9 @@ import consulo.virtualFileSystem.FileAttribute; import consulo.virtualFileSystem.VirtualFile; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; + import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; diff --git a/plugin/src/main/java/consulo/javascript/impl/lang/JavaScriptLanguageVersionResolver.java b/plugin/src/main/java/consulo/javascript/impl/lang/JavaScriptLanguageVersionResolver.java index 15a96023..0832af44 100644 --- a/plugin/src/main/java/consulo/javascript/impl/lang/JavaScriptLanguageVersionResolver.java +++ b/plugin/src/main/java/consulo/javascript/impl/lang/JavaScriptLanguageVersionResolver.java @@ -32,8 +32,8 @@ import consulo.language.version.LanguageVersionResolver; import consulo.language.Language; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/plugin/src/main/java/consulo/javascript/impl/lang/JavaScriptParsingDefinition.java b/plugin/src/main/java/consulo/javascript/impl/lang/JavaScriptParsingDefinition.java index dd3720e7..3fc68a65 100644 --- a/plugin/src/main/java/consulo/javascript/impl/lang/JavaScriptParsingDefinition.java +++ b/plugin/src/main/java/consulo/javascript/impl/lang/JavaScriptParsingDefinition.java @@ -34,8 +34,7 @@ import consulo.language.psi.PsiFile; import consulo.language.util.LanguageUtil; import consulo.language.version.LanguageVersionableParserDefinition; - -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/plugin/src/main/java/consulo/javascript/impl/lang/navigation/JavaScriptClassContributor.java b/plugin/src/main/java/consulo/javascript/impl/lang/navigation/JavaScriptClassContributor.java index c4212f48..d2eaefee 100644 --- a/plugin/src/main/java/consulo/javascript/impl/lang/navigation/JavaScriptClassContributor.java +++ b/plugin/src/main/java/consulo/javascript/impl/lang/navigation/JavaScriptClassContributor.java @@ -29,8 +29,9 @@ import consulo.navigation.NavigationItem; import consulo.project.Project; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; + import java.util.Collection; /** diff --git a/plugin/src/main/java/consulo/javascript/impl/lang/psi/JavaScriptSimpleType.java b/plugin/src/main/java/consulo/javascript/impl/lang/psi/JavaScriptSimpleType.java index 0b7f5ec3..bd077848 100644 --- a/plugin/src/main/java/consulo/javascript/impl/lang/psi/JavaScriptSimpleType.java +++ b/plugin/src/main/java/consulo/javascript/impl/lang/psi/JavaScriptSimpleType.java @@ -16,8 +16,8 @@ package consulo.javascript.impl.lang.psi; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; import consulo.annotation.access.RequiredReadAction; import consulo.javascript.language.psi.JavaScriptType; diff --git a/plugin/src/main/java/consulo/javascript/impl/psi/impl/reference/DefaultJSPropertyNameReferenceProvider.java b/plugin/src/main/java/consulo/javascript/impl/psi/impl/reference/DefaultJSPropertyNameReferenceProvider.java index 11621ffc..61a95b1b 100644 --- a/plugin/src/main/java/consulo/javascript/impl/psi/impl/reference/DefaultJSPropertyNameReferenceProvider.java +++ b/plugin/src/main/java/consulo/javascript/impl/psi/impl/reference/DefaultJSPropertyNameReferenceProvider.java @@ -25,8 +25,8 @@ import consulo.language.psi.PsiElement; import consulo.language.psi.PsiReference; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/regexp-impl/src/main/java/consulo/javascript/regexp/impl/JavaScriptRegExpLiteralLanguageHost.java b/regexp-impl/src/main/java/consulo/javascript/regexp/impl/JavaScriptRegExpLiteralLanguageHost.java index c79e6a84..ca822653 100644 --- a/regexp-impl/src/main/java/consulo/javascript/regexp/impl/JavaScriptRegExpLiteralLanguageHost.java +++ b/regexp-impl/src/main/java/consulo/javascript/regexp/impl/JavaScriptRegExpLiteralLanguageHost.java @@ -8,8 +8,8 @@ import org.intellij.lang.regexp.psi.RegExpGroup; import org.intellij.lang.regexp.psi.RegExpNamedGroupRef; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/regexp-impl/src/main/java/consulo/javascript/regexp/impl/JavaScriptRegexpMultiHostInjector.java b/regexp-impl/src/main/java/consulo/javascript/regexp/impl/JavaScriptRegexpMultiHostInjector.java index bd3b6efe..44606933 100644 --- a/regexp-impl/src/main/java/consulo/javascript/regexp/impl/JavaScriptRegexpMultiHostInjector.java +++ b/regexp-impl/src/main/java/consulo/javascript/regexp/impl/JavaScriptRegexpMultiHostInjector.java @@ -26,7 +26,7 @@ import consulo.language.psi.PsiLanguageInjectionHost; import org.intellij.lang.regexp.RegExpLanguage; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptModuleExtension.java b/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptModuleExtension.java index c957f371..c2646b17 100644 --- a/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptModuleExtension.java +++ b/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptModuleExtension.java @@ -16,8 +16,8 @@ import consulo.module.extension.ModuleInheritableNamedPointer; import org.jdom.Element; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; /** * @author VISTALL diff --git a/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptModuleExtensionPanel.java b/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptModuleExtensionPanel.java index b06b1750..5675fdfc 100644 --- a/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptModuleExtensionPanel.java +++ b/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptModuleExtensionPanel.java @@ -26,7 +26,7 @@ import consulo.javascript.module.extension.JavaScriptMutableModuleExtension; import consulo.ui.ex.awt.LabeledComponent; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import javax.swing.*; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; diff --git a/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptModuleExtensionProvider.java b/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptModuleExtensionProvider.java index b0a3cc4d..c44f06b1 100644 --- a/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptModuleExtensionProvider.java +++ b/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptModuleExtensionProvider.java @@ -9,7 +9,7 @@ import consulo.module.extension.MutableModuleExtension; import consulo.ui.image.Image; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; /** * @author VISTALL diff --git a/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptMutableModuleExtension.java b/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptMutableModuleExtension.java index 88eca5df..83ee3396 100644 --- a/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptMutableModuleExtension.java +++ b/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptMutableModuleExtension.java @@ -12,8 +12,8 @@ import consulo.ui.annotation.RequiredUIAccess; import consulo.ui.layout.VerticalLayout; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; import javax.swing.*; /** diff --git a/web-browser-impl/src/main/java/consulo/javascript/client/module/sdk/ClientJavaScriptPredefinedBundlesProvider.java b/web-browser-impl/src/main/java/consulo/javascript/client/module/sdk/ClientJavaScriptPredefinedBundlesProvider.java index b1627237..ee53edc7 100644 --- a/web-browser-impl/src/main/java/consulo/javascript/client/module/sdk/ClientJavaScriptPredefinedBundlesProvider.java +++ b/web-browser-impl/src/main/java/consulo/javascript/client/module/sdk/ClientJavaScriptPredefinedBundlesProvider.java @@ -9,8 +9,8 @@ import consulo.content.bundle.SdkModificator; import consulo.virtualFileSystem.LocalFileSystem; import consulo.virtualFileSystem.VirtualFile; +import jakarta.annotation.Nonnull; -import javax.annotation.Nonnull; import java.io.File; import java.util.Map; diff --git a/web-browser-impl/src/main/java/consulo/javascript/client/module/sdk/ClientJavaScriptSdkType.java b/web-browser-impl/src/main/java/consulo/javascript/client/module/sdk/ClientJavaScriptSdkType.java index c23416e2..1d0f215a 100644 --- a/web-browser-impl/src/main/java/consulo/javascript/client/module/sdk/ClientJavaScriptSdkType.java +++ b/web-browser-impl/src/main/java/consulo/javascript/client/module/sdk/ClientJavaScriptSdkType.java @@ -8,8 +8,8 @@ import consulo.javascript.icon.JavaScriptIconGroup; import consulo.ui.image.Image; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; /** * @author VISTALL From 278a74f40471426f9d33d3dc7544845868546943 Mon Sep 17 00:00:00 2001 From: Valery Semenchuk Date: Mon, 8 Jul 2024 18:15:26 +0400 Subject: [PATCH 026/150] typo --- .../com/intellij/lang/javascript/psi/impl/JSAttributeImpl.java | 2 +- .../com/intellij/lang/javascript/psi/impl/JSDocTagImpl.java | 2 +- .../com/intellij/lang/javascript/psi/impl/JSReferenceSet.java | 2 +- .../lang/javascript/impl/validation/JSAnnotatingVisitor.java | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAttributeImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAttributeImpl.java index e3305df3..8f40fa38 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAttributeImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAttributeImpl.java @@ -214,7 +214,7 @@ public boolean isSoft() @Nonnull @Override - public LocalizeValue buildUnresolvedMessaged(@Nonnull String referenceText) + public LocalizeValue buildUnresolvedMessage(@Nonnull String referenceText) { return LocalizeValue.localizeTODO("Unknown metadata tag"); } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDocTagImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDocTagImpl.java index d6526008..1f090952 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDocTagImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDocTagImpl.java @@ -327,7 +327,7 @@ public Object[] getVariants() @Nonnull @Override - public LocalizeValue buildUnresolvedMessaged(@Nonnull String referenceText) + public LocalizeValue buildUnresolvedMessage(@Nonnull String referenceText) { return JavaScriptLocalize.javascriptValidationMessageIncorrectParameterName(); } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSReferenceSet.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSReferenceSet.java index b06483dd..369e486f 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSReferenceSet.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSReferenceSet.java @@ -551,7 +551,7 @@ private ResolveResult[] doOldResolve(PsiFile psiFile) @Nonnull @Override - public LocalizeValue buildUnresolvedMessaged(@Nonnull String text) + public LocalizeValue buildUnresolvedMessage(@Nonnull String text) { text = "'" + text.replace("'", "''") + "'"; return JavaScriptLocalize.javascriptUnresolvedVariableOrTypeNameMessage2(text); diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatingVisitor.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatingVisitor.java index 8c325f5b..7e675836 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatingVisitor.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatingVisitor.java @@ -98,7 +98,7 @@ private void checkReferences(final PsiElement includeDirective, HighlightSeverit elementRange.getStartOffset() + textRange.getStartOffset(), elementRange.getStartOffset() + textRange.getEndOffset() ); - final LocalizeValue value = ((EmptyResolveMessageProvider) ref).buildUnresolvedMessaged(ref.getCanonicalText()); + final LocalizeValue value = ((EmptyResolveMessageProvider) ref).buildUnresolvedMessage(ref.getCanonicalText()); AnnotationBuilder builder = myHolder.newAnnotation(kind, value); builder = builder.range(range); From 8f7475fc2f64df31f57cf132729a3fdd9b34cc4b Mon Sep 17 00:00:00 2001 From: UNV Date: Thu, 11 Jul 2024 19:47:01 +0300 Subject: [PATCH 027/150] Localize fixes. --- .../lang/parsing/ExpressionParsing.java | 9 +++--- .../lang/parsing/FunctionParsing.java | 2 +- .../javascript/lang/parsing/JSXParser.java | 29 ++++++++++--------- .../lang/parsing/StatementParsing.java | 2 +- .../run/debug/v8/V8BaseDebugProcess.java | 9 +++--- .../parsing/EcmaScriptStatementParsing.java | 4 +-- .../json/lang/JsonJavaScriptParser.java | 3 +- 7 files changed, 31 insertions(+), 27 deletions(-) diff --git a/base-impl/src/main/java/consulo/javascript/lang/parsing/ExpressionParsing.java b/base-impl/src/main/java/consulo/javascript/lang/parsing/ExpressionParsing.java index 03b011b5..7655cd4a 100644 --- a/base-impl/src/main/java/consulo/javascript/lang/parsing/ExpressionParsing.java +++ b/base-impl/src/main/java/consulo/javascript/lang/parsing/ExpressionParsing.java @@ -24,6 +24,7 @@ import consulo.language.ast.IElementType; import consulo.language.ast.TokenSet; import consulo.language.parser.PsiBuilder; +import consulo.localize.LocalizeValue; import consulo.logging.Logger; import consulo.util.dataholder.Key; @@ -72,7 +73,7 @@ else if(isIdentifierName(builder, firstToken) || firstToken == JSTokenTypes.ANY_ } else if(firstToken == JSTokenTypes.REGEXP_LITERAL) { - String errorMessage = validateLiteral(builder); + LocalizeValue errorMessage = validateLiteral(builder); Parsing.buildTokenElement(JSElementTypes.REGEXP_LITERAL_EXPRESSION, builder); if(errorMessage != null) { @@ -89,7 +90,7 @@ else if(firstToken == JSTokenTypes.NUMERIC_LITERAL || firstToken == JSTokenTypes.FALSE_KEYWORD || firstToken == JSTokenTypes.TRUE_KEYWORD) { - String errorMessage = validateLiteral(builder); + LocalizeValue errorMessage = validateLiteral(builder); Parsing.buildTokenElement(JSElementTypes.LITERAL_EXPRESSION, builder); if(errorMessage != null) { @@ -176,7 +177,7 @@ private void parseTag(final PsiBuilder builder) } @Nullable - public static String validateLiteral(final PsiBuilder builder) + public static LocalizeValue validateLiteral(final PsiBuilder builder) { final IElementType ttype = builder.getTokenType(); if(ttype == JSTokenTypes.STRING_LITERAL || ttype == JSTokenTypes.SINGLE_QUOTE_STRING_LITERAL) @@ -188,7 +189,7 @@ public static String validateLiteral(final PsiBuilder builder) ttext.startsWith("\"") && (!ttext.endsWith("\"") || ttext.length() == 1) || ttext.startsWith("\'") && (!ttext.endsWith("\'") || ttext.length() == 1)) { - return JavaScriptLocalize.javascriptParserMessageUnclosedStringLiteral().get(); + return JavaScriptLocalize.javascriptParserMessageUnclosedStringLiteral(); } } diff --git a/base-impl/src/main/java/consulo/javascript/lang/parsing/FunctionParsing.java b/base-impl/src/main/java/consulo/javascript/lang/parsing/FunctionParsing.java index 93270a20..ecdc96e8 100644 --- a/base-impl/src/main/java/consulo/javascript/lang/parsing/FunctionParsing.java +++ b/base-impl/src/main/java/consulo/javascript/lang/parsing/FunctionParsing.java @@ -211,7 +211,7 @@ protected void parseDeconstructionParameter(PsiBuilder builder, PsiBuilder.Marke { PsiBuilder.Marker err = builder.mark(); builder.advanceLexer(); - err.error("Expected identifier"); + err.error(JavaScriptLocalize.javascriptParserMessageExpectedIdentifier()); } } diff --git a/base-impl/src/main/java/consulo/javascript/lang/parsing/JSXParser.java b/base-impl/src/main/java/consulo/javascript/lang/parsing/JSXParser.java index 3d050dd3..2b20ad3d 100644 --- a/base-impl/src/main/java/consulo/javascript/lang/parsing/JSXParser.java +++ b/base-impl/src/main/java/consulo/javascript/lang/parsing/JSXParser.java @@ -7,12 +7,13 @@ import consulo.language.ast.ILazyParseableElementType; import consulo.language.ast.TokenType; import consulo.language.parser.PsiBuilder; -import consulo.xml.codeInsight.daemon.XmlErrorMessages; +import consulo.localize.LocalizeValue; +import consulo.xml.impl.localize.XmlErrorLocalize; import consulo.xml.psi.xml.XmlElementType; import consulo.xml.psi.xml.XmlTokenType; - import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; + import java.util.Stack; /** @@ -48,7 +49,7 @@ private IElementType token() return myBuilder.getTokenType(); } - private void error(String error) + private void error(LocalizeValue error) { myBuilder.error(error); } @@ -65,7 +66,7 @@ private String parseTagHeader(final boolean multipleRootTagError, final PsiBuild { final PsiBuilder.Marker error = mark(); advance(); - error.error(XmlErrorMessages.message("xml.parsing.multiple.root.tags")); + error.error(XmlErrorLocalize.xmlParsingMultipleRootTags()); } else { @@ -75,7 +76,7 @@ private String parseTagHeader(final boolean multipleRootTagError, final PsiBuild final String tagName; if(token() != JSTokenTypes.XML_NAME || myBuilder.rawLookup(-1) == TokenType.WHITE_SPACE) { - error(XmlErrorMessages.message("xml.parsing.tag.name.expected")); + error(XmlErrorLocalize.xmlParsingTagNameExpected()); tagName = ""; } else @@ -118,7 +119,7 @@ else if(tt == JSTokenTypes.XML_JS_SCRIPT) } else { - error(XmlErrorMessages.message("tag.start.is.not.closed")); + error(XmlErrorLocalize.tagStartIsNotClosed()); myTagNamesStack.pop(); tag.done(JSElementTypes.XML_LITERAL_EXPRESSION); return null; @@ -126,7 +127,7 @@ else if(tt == JSTokenTypes.XML_JS_SCRIPT) if(myTagNamesStack.size() > BALANCING_DEPTH_THRESHOLD) { - error(XmlErrorMessages.message("way.too.unbalanced")); + error(XmlErrorLocalize.wayTooUnbalanced()); tag.done(JSElementTypes.XML_LITERAL_EXPRESSION); return null; } @@ -166,7 +167,7 @@ private void parseAttributeValue() { final PsiBuilder.Marker error = mark(); advance(); - error.error(XmlErrorMessages.message("unescaped.ampersand.or.nonterminated.character.entity.reference")); + error.error(XmlErrorLocalize.unescapedAmpersandOrNonterminatedCharacterEntityReference()); } else { @@ -180,7 +181,7 @@ private void parseAttributeValue() } else { - error(XmlErrorMessages.message("xml.parsing.unclosed.attribute.value")); + error(XmlErrorLocalize.xmlParsingUnclosedAttributeValue()); } } else if(token() == JSTokenTypes.XML_JS_SCRIPT) @@ -219,7 +220,7 @@ else if(tt == JSTokenTypes.BAD_CHARACTER) xmlText = startText(xmlText); final PsiBuilder.Marker error = mark(); advance(); - error.error(XmlErrorMessages.message("unescaped.ampersand.or.nonterminated.character.entity.reference")); + error.error(XmlErrorLocalize.unescapedAmpersandOrNonterminatedCharacterEntityReference()); } else if(tt instanceof ICustomParsingType || tt instanceof ILazyParseableElementType) { @@ -282,7 +283,7 @@ protected void parseTag(boolean multipleRootTagError) { footer.rollbackTo(); myTagNamesStack.pop(); - tag.doneBefore(JSElementTypes.XML_LITERAL_EXPRESSION, content, XmlErrorMessages.message("named.element.is.not.closed", tagName)); + tag.doneBefore(JSElementTypes.XML_LITERAL_EXPRESSION, content, XmlErrorLocalize.namedElementIsNotClosed(tagName)); content.drop(); return; } @@ -293,7 +294,7 @@ protected void parseTag(boolean multipleRootTagError) while(token() != XmlTokenType.XML_TAG_END && token() != XmlTokenType.XML_START_TAG_START && token() != XmlTokenType.XML_END_TAG_START && !eof()) { - error(XmlErrorMessages.message("xml.parsing.unexpected.token")); + error(XmlErrorLocalize.xmlParsingUnexpectedToken()); advance(); } @@ -303,12 +304,12 @@ protected void parseTag(boolean multipleRootTagError) } else { - error(XmlErrorMessages.message("xml.parsing.closing.tag.is.not.done")); + error(XmlErrorLocalize.xmlParsingClosingTagIsNotDone()); } } else { - error(XmlErrorMessages.message("xml.parsing.unexpected.end.of.file")); + error(XmlErrorLocalize.xmlParsingUnexpectedEndOfFile()); } content.drop(); diff --git a/base-impl/src/main/java/consulo/javascript/lang/parsing/StatementParsing.java b/base-impl/src/main/java/consulo/javascript/lang/parsing/StatementParsing.java index 89ea9545..190a687d 100644 --- a/base-impl/src/main/java/consulo/javascript/lang/parsing/StatementParsing.java +++ b/base-impl/src/main/java/consulo/javascript/lang/parsing/StatementParsing.java @@ -753,7 +753,7 @@ protected void parseDeconstructionElement(PsiBuilder builder) { PsiBuilder.Marker err = builder.mark(); builder.advanceLexer(); - err.error("Expected identifier"); + err.error(JavaScriptLocalize.javascriptParserMessageExpectedIdentifier()); } } diff --git a/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8BaseDebugProcess.java b/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8BaseDebugProcess.java index 23bfbe0d..33adb147 100644 --- a/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8BaseDebugProcess.java +++ b/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8BaseDebugProcess.java @@ -26,6 +26,7 @@ import consulo.execution.debug.breakpoint.XLineBreakpoint; import consulo.execution.debug.evaluation.XDebuggerEditorsProvider; import consulo.execution.debug.frame.XSuspendContext; +import consulo.execution.debug.localize.XDebuggerLocalize; import consulo.execution.debug.ui.XDebugTabLayouter; import consulo.execution.ui.ExecutionConsole; import consulo.execution.ui.layout.RunnerLayoutUi; @@ -260,19 +261,19 @@ public void registerAdditionalContent(@Nonnull RunnerLayoutUi ui) @Override public String getCurrentStateMessage() { - if(myVm == null) + if (myVm == null) { - return XDebuggerBundle.message("debugger.state.message.disconnected"); + return XDebuggerLocalize.debuggerStateMessageDisconnected().get(); } else { - if(myVm.isAttached()) + if (myVm.isAttached()) { return "Attached"; } else { - return XDebuggerBundle.message("debugger.state.message.disconnected"); + return XDebuggerLocalize.debuggerStateMessageDisconnected().get(); } } } diff --git a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptStatementParsing.java b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptStatementParsing.java index d27d7a24..a7f2acc2 100644 --- a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptStatementParsing.java +++ b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptStatementParsing.java @@ -271,7 +271,7 @@ else if(JavaScriptTokenSets.STRING_LITERALS.contains(builder.getTokenType())) } else { - importSpecificMark.error("Expected identifier"); + importSpecificMark.error(JavaScriptLocalize.javascriptParserMessageExpectedIdentifier()); } } @@ -314,7 +314,7 @@ else if(builder.getTokenType() == JSTokenTypes.IDENTIFIER) } else { - builder.error("Expected from target"); + builder.error("Expected 'from' target"); } } diff --git a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/lang/JsonJavaScriptParser.java b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/lang/JsonJavaScriptParser.java index 59cfaf5d..e556faba 100644 --- a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/lang/JsonJavaScriptParser.java +++ b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/lang/JsonJavaScriptParser.java @@ -11,6 +11,7 @@ import consulo.language.parser.PsiBuilder; import consulo.language.parser.PsiParser; import consulo.language.version.LanguageVersion; +import consulo.localize.LocalizeValue; import consulo.logging.Logger; import jakarta.annotation.Nonnull; @@ -224,7 +225,7 @@ private boolean parseValue(PsiBuilder builder) firstToken == JSTokenTypes.FALSE_KEYWORD || firstToken == JSTokenTypes.TRUE_KEYWORD) { - String errorMessage = ExpressionParsing.validateLiteral(builder); + LocalizeValue errorMessage = ExpressionParsing.validateLiteral(builder); Parsing.buildTokenElement(JSElementTypes.LITERAL_EXPRESSION, builder); if(errorMessage != null) { From 45a4134aba36addc7d4b2714ee677129ddbc3a77 Mon Sep 17 00:00:00 2001 From: UNV Date: Sat, 13 Jul 2024 11:30:31 +0300 Subject: [PATCH 028/150] Replacing Bundle with Localize. Making same indents within file. --- .../run/debug/v8/V8DebugProcess.java | 12 ++-- .../AssignmentResultUsedJSInspection.java | 20 +++--- ...ignmentToForLoopParameterJSInspection.java | 21 +++--- ...gnmentToFunctionParameterJSInspection.java | 46 ++++++------ .../bitwise/IncompatibleMaskJSInspection.java | 71 +++++++------------ .../bugs/DivideByZeroJSInspection.java | 33 ++++----- ...ityComparisonWithCoercionJSInspection.java | 15 ++-- .../AnonymousFunctionJSInspection.java | 22 +++--- .../confusing/BlockStatementJSInspection.java | 23 +++--- .../confusing/CallerJSInspection.java | 32 ++++----- .../CommaExpressionJSInspection.java | 29 +++----- .../ConditionalExpressionJSInspection.java | 7 +- ...usingFloatingPointLiteralJSInspection.java | 63 ++++++++-------- .../ConfusingPlusesOrMinusesJSInspection.java | 23 +++--- .../DynamicallyGeneratedCodeJSInspection.java | 30 ++++---- .../EmptyStatementBodyJSInspection.java | 17 ++--- ...rementDecrementResultUsedJSInspection.java | 23 +++--- .../control/BreakStatementJSInspection.java | 22 +++--- .../BreakStatementWithLabelJSInspection.java | 18 +++-- ...sionWithIdenticalBranchesJSInspection.java | 36 +++++----- ...tantConditionalExpressionJSInspection.java | 59 +++++++-------- .../ConstantIfStatementJSInspection.java | 57 +++++++-------- .../ContinueStatementJSInspection.java | 16 ++--- ...ontinueStatementWithLabelJSInspection.java | 22 +++--- ...efaultNotLastCaseInSwitchJSInspection.java | 24 +++---- .../DuplicateConditionJSInspection.java | 36 +++++----- ...lthroughInSwitchStatementJSInspection.java | 23 +++--- ...ForLoopReplaceableByWhileJSInspection.java | 34 ++++----- ...ThatDoesntUseLoopVariableJSInspection.java | 50 +++++-------- ...mentWithIdenticalBranchesJSInspection.java | 33 ++++----- ...tementWithTooManyBranchesJSInspection.java | 8 +-- .../dom/DocumentWriteJSInspection.java | 20 +++--- ...ueOrBreakFromFinallyBlockJSInspection.java | 26 +++---- .../EmptyCatchBlockJSInspection.java | 21 +++--- .../EmptyFinallyBlockJSInspection.java | 21 +++--- .../exception/EmptyTryBlockJSInspection.java | 21 +++--- .../ExceptionCaughtLocallyJSInspection.java | 22 +++--- .../CyclomaticComplexityJSInspection.java | 10 ++- ...FunctionWithMultipleLoopsJSInspection.java | 29 ++++---- ...nWithMultipleReturnPointsJSInspection.java | 14 ++-- .../FunctionNamingConventionJSInspection.java | 11 ++- .../style/ChainedEqualityJSInspection.java | 30 ++++---- .../ChainedFunctionCallJSInspection.java | 22 ++---- ...ConstantOnLHSOfComparisonJSInspection.java | 33 ++++----- ...ConstantOnRHSOfComparisonJSInspection.java | 39 +++++----- .../BadExpressionStatementJSInspection.java | 18 ++--- .../DebuggerStatementJSInspection.java | 26 ++++--- .../DuplicateCaseLabelJSInspection.java | 31 ++++---- ...DuplicatePropertyOnObjectJSInspection.java | 28 ++++---- ...onWithInconsistentReturnsJSInspection.java | 17 +++-- 50 files changed, 614 insertions(+), 750 deletions(-) diff --git a/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8DebugProcess.java b/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8DebugProcess.java index 2c0a2c7f..32d71423 100644 --- a/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8DebugProcess.java +++ b/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8DebugProcess.java @@ -16,15 +16,15 @@ package consulo.javascript.run.debug.v8; +import consulo.annotation.UsedInPlugin; import consulo.execution.ExecutionResult; -import consulo.process.ExecutionException; import consulo.execution.debug.XDebugSession; -import consulo.execution.debug.XDebuggerBundle; -import consulo.annotation.UsedInPlugin; +import consulo.execution.debug.localize.XDebuggerLocalize; +import consulo.process.ExecutionException; +import jakarta.annotation.Nonnull; import org.chromium.sdk.JavascriptVmFactory; import org.chromium.sdk.StandaloneVm; -import jakarta.annotation.Nonnull; import java.net.InetSocketAddress; /** @@ -52,7 +52,7 @@ public String getCurrentStateMessage() { if(myVm == null) { - return XDebuggerBundle.message("debugger.state.message.disconnected"); + return XDebuggerLocalize.debuggerStateMessageDisconnected().get(); } else { @@ -65,7 +65,7 @@ public String getCurrentStateMessage() String disconnectReason = myVm.getDisconnectReason(); if(disconnectReason == null) { - return XDebuggerBundle.message("debugger.state.message.disconnected"); + return XDebuggerLocalize.debuggerStateMessageDisconnected().get(); } return "Disconnected: " + disconnectReason; } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentResultUsedJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentResultUsedJSInspection.java index 0bcf09e0..2f9e9ab3 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentResultUsedJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentResultUsedJSInspection.java @@ -2,9 +2,9 @@ import com.intellij.lang.javascript.psi.*; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; @@ -13,33 +13,33 @@ @ExtensionImpl public class AssignmentResultUsedJSInspection extends JavaScriptInspection { - @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("result.of.assignment.used.displayName"); + return InspectionJSLocalize.resultOfAssignmentUsedDisplayname().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.ASSIGNMENT_GROUP_NAME; } @RequiredReadAction - @Override - @Nullable + @Override + @Nullable protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("result.of.assignment.expression.used.error.string"); + return InspectionJSLocalize.resultOfAssignmentExpressionUsedErrorString().get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new Visitor(); } private static class Visitor extends BaseInspectionVisitor { - @Override public void visitJSAssignmentExpression(JSAssignmentExpression jsAssignmentExpression) { + @Override + public void visitJSAssignmentExpression(JSAssignmentExpression jsAssignmentExpression) { super.visitJSAssignmentExpression(jsAssignmentExpression); final PsiElement parent = jsAssignmentExpression.getParent(); if (parent == null) { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentToForLoopParameterJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentToForLoopParameterJSInspection.java index 9cabb056..bf643ad1 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentToForLoopParameterJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentToForLoopParameterJSInspection.java @@ -3,9 +3,9 @@ import com.intellij.lang.javascript.JSTokenTypes; import com.intellij.lang.javascript.psi.*; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; @@ -15,33 +15,32 @@ @ExtensionImpl public class AssignmentToForLoopParameterJSInspection extends JavaScriptInspection { - @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("assignment.to.for.loop.parameter.display.name"); + return InspectionJSLocalize.assignmentToForLoopParameterDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.ASSIGNMENT_GROUP_NAME; } @RequiredReadAction - @Override - public String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("assignment.to.for.loop.parameter.error.string"); + @Override + public String buildErrorString(Object state, Object... args) { + return InspectionJSLocalize.assignmentToForLoopParameterErrorString().get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new Visitor(); } private static class Visitor extends BaseInspectionVisitor { - - @Override public void visitJSAssignmentExpression(@Nonnull JSAssignmentExpression expression) { + @Override + public void visitJSAssignmentExpression(@Nonnull JSAssignmentExpression expression) { super.visitJSAssignmentExpression(expression); final JSExpression rhs = expression.getROperand(); if (rhs == null) { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentToFunctionParameterJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentToFunctionParameterJSInspection.java index 9c3dbbb4..f869a6b4 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentToFunctionParameterJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentToFunctionParameterJSInspection.java @@ -2,54 +2,53 @@ import com.intellij.lang.javascript.JSTokenTypes; import com.intellij.lang.javascript.psi.*; +import com.sixrr.inspectjs.BaseInspectionVisitor; +import com.sixrr.inspectjs.JSGroupNames; +import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; import consulo.language.psi.PsiElement; -import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; -import com.sixrr.inspectjs.JSGroupNames; -import com.sixrr.inspectjs.JavaScriptInspection; -import consulo.language.psi.PsiReference; - import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class AssignmentToFunctionParameterJSInspection extends JavaScriptInspection { - @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("assignment.to.function.parameter.display.name"); + return InspectionJSLocalize.assignmentToFunctionParameterDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.ASSIGNMENT_GROUP_NAME; } @RequiredReadAction - @Override - @Nullable + @Override + @Nullable protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("assignment.to.function.parameter.error.string"); + return InspectionJSLocalize.assignmentToFunctionParameterErrorString().get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new Visitor(); } private static class Visitor extends BaseInspectionVisitor { - @Override public void visitJSAssignmentExpression(JSAssignmentExpression jsAssignmentExpression) { + @Override + public void visitJSAssignmentExpression(JSAssignmentExpression jsAssignmentExpression) { super.visitJSAssignmentExpression(jsAssignmentExpression); final JSExpression lhs = jsAssignmentExpression.getLOperand(); checkOperand(lhs); } - @Override public void visitJSPrefixExpression(JSPrefixExpression expression) { + @Override + public void visitJSPrefixExpression(JSPrefixExpression expression) { super.visitJSPrefixExpression(expression); final IElementType sign = expression.getOperationSign(); if (!JSTokenTypes.PLUSPLUS.equals(sign) && @@ -60,7 +59,8 @@ private static class Visitor extends BaseInspectionVisitor { checkOperand(operand); } - @Override public void visitJSPostfixExpression(JSPostfixExpression jsPostfixExpression) { + @Override + public void visitJSPostfixExpression(JSPostfixExpression jsPostfixExpression) { super.visitJSPostfixExpression(jsPostfixExpression); final IElementType sign = jsPostfixExpression.getOperationSign(); if (!JSTokenTypes.PLUSPLUS.equals(sign) && @@ -75,10 +75,10 @@ private void checkOperand(JSExpression operand) { if (operand == null) { return; } - if (operand instanceof JSDefinitionExpression) { - final JSExpression definiend = ((JSDefinitionExpression) operand).getExpression(); - if (definiend instanceof JSReferenceExpression) { - final PsiElement referent = ((PsiReference) definiend).resolve(); + if (operand instanceof JSDefinitionExpression definitionExpression) { + final JSExpression definiend = definitionExpression.getExpression(); + if (definiend instanceof JSReferenceExpression referenceExpression) { + final PsiElement referent = referenceExpression.resolve(); if (referent == null) { return; } @@ -88,8 +88,8 @@ private void checkOperand(JSExpression operand) { registerError(operand); } } - if (operand instanceof JSReferenceExpression) { - final PsiElement referent = ((PsiReference) operand).resolve(); + if (operand instanceof JSReferenceExpression referenceExpression) { + final PsiElement referent = referenceExpression.resolve(); if (referent == null) { return; } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bitwise/IncompatibleMaskJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bitwise/IncompatibleMaskJSInspection.java index dab86d16..885544ea 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bitwise/IncompatibleMaskJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bitwise/IncompatibleMaskJSInspection.java @@ -4,109 +4,92 @@ import com.intellij.lang.javascript.psi.JSBinaryExpression; import com.intellij.lang.javascript.psi.JSExpression; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import com.sixrr.inspectjs.utils.ComparisonUtils; import com.sixrr.inspectjs.utils.ExpressionUtil; import com.sixrr.inspectjs.utils.ParenthesesUtils; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; - import jakarta.annotation.Nonnull; @ExtensionImpl public class IncompatibleMaskJSInspection extends JavaScriptInspection { - @Override - @Nonnull + @Nonnull public String getID() { return "IncompatibleBitwiseMaskOperation"; } @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message( - "incompatible.mask.operation.display.name"); + return InspectionJSLocalize.incompatibleMaskOperationDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.BITWISE_GROUP_NAME; } @RequiredReadAction - @Override - @Nonnull + @Override + @Nonnull public String buildErrorString(Object state, Object... args) { - final JSBinaryExpression binaryExpression = - (JSBinaryExpression) args[0]; - final IElementType tokenType = - binaryExpression.getOperationSign(); + final JSBinaryExpression binaryExpression = (JSBinaryExpression) args[0]; + final IElementType tokenType = binaryExpression.getOperationSign(); if (JSTokenTypes.EQEQ.equals(tokenType)) { - return InspectionJSBundle.message( - "incompatible.mask.operation.problem.descriptor.always.false"); + return InspectionJSLocalize.incompatibleMaskOperationProblemDescriptorAlwaysFalse().get(); } else { - return InspectionJSBundle.message( - "incompatible.mask.operation.problem.descriptor.always.true"); + return InspectionJSLocalize.incompatibleMaskOperationProblemDescriptorAlwaysTrue().get(); } } @Override - public boolean isEnabledByDefault() { + public boolean isEnabledByDefault() { return true; } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new IncompatibleMaskVisitor(); } private static class IncompatibleMaskVisitor extends BaseInspectionVisitor { - - @Override public void visitJSBinaryExpression( - @Nonnull JSBinaryExpression expression) { + @Override + public void visitJSBinaryExpression(@Nonnull JSBinaryExpression expression) { super.visitJSBinaryExpression(expression); final JSExpression rhs = expression.getROperand(); if (!ComparisonUtils.isEqualityComparison(expression)) { return; } - final JSExpression strippedRhs = - ParenthesesUtils.stripParentheses(rhs); + final JSExpression strippedRhs = ParenthesesUtils.stripParentheses(rhs); if (strippedRhs == null) { return; } final JSExpression lhs = expression.getLOperand(); - final JSExpression strippedLhs = - ParenthesesUtils.stripParentheses(lhs); + final JSExpression strippedLhs = ParenthesesUtils.stripParentheses(lhs); if (strippedLhs == null) { return; } - if (isConstantMask(strippedLhs) && - ExpressionUtil.isConstantExpression(strippedRhs)) { - if (isIncompatibleMask((JSBinaryExpression) strippedLhs, - strippedRhs)) { + if (isConstantMask(strippedLhs) && ExpressionUtil.isConstantExpression(strippedRhs)) { + if (isIncompatibleMask((JSBinaryExpression) strippedLhs, strippedRhs)) { registerError(expression, expression); } - } else if (isConstantMask(strippedRhs) && - ExpressionUtil.isConstantExpression(strippedLhs)) { - if (isIncompatibleMask((JSBinaryExpression) strippedRhs, - strippedLhs)) { + } else if (isConstantMask(strippedRhs) && ExpressionUtil.isConstantExpression(strippedLhs)) { + if (isIncompatibleMask((JSBinaryExpression) strippedRhs, strippedLhs)) { registerError(expression, expression); } } } - private static boolean isIncompatibleMask( - JSBinaryExpression maskExpression, - JSExpression constantExpression) { + private static boolean isIncompatibleMask(JSBinaryExpression maskExpression, JSExpression constantExpression) { final IElementType tokenType = maskExpression.getOperationSign(); - final Object constantValue = - ExpressionUtil.computeConstantExpression(constantExpression); - if (!(constantValue instanceof Integer) ){ + final Object constantValue = ExpressionUtil.computeConstantExpression(constantExpression); + if (!(constantValue instanceof Integer)){ return false; } final int constantLongValue = (Integer) constantValue; @@ -150,11 +133,9 @@ private static boolean isConstantMask(JSExpression expression) { if (!(expression instanceof JSBinaryExpression)) { return false; } - final JSBinaryExpression binaryExpression = - (JSBinaryExpression) expression; + final JSBinaryExpression binaryExpression = (JSBinaryExpression) expression; final IElementType tokenType = binaryExpression.getOperationSign(); - if (!JSTokenTypes.OR.equals(tokenType) && - !JSTokenTypes.AND.equals(tokenType)) { + if (!JSTokenTypes.OR.equals(tokenType) && !JSTokenTypes.AND.equals(tokenType)) { return false; } final JSExpression rhs = binaryExpression.getROperand(); diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bugs/DivideByZeroJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bugs/DivideByZeroJSInspection.java index 635db319..e766a96f 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bugs/DivideByZeroJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bugs/DivideByZeroJSInspection.java @@ -5,53 +5,50 @@ import com.intellij.lang.javascript.psi.JSBinaryExpression; import com.intellij.lang.javascript.psi.JSExpression; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; -import org.jetbrains.annotations.NonNls; - import jakarta.annotation.Nonnull; +import org.jetbrains.annotations.NonNls; @ExtensionImpl public class DivideByZeroJSInspection extends JavaScriptInspection { - @Override - @Nonnull + @Nonnull public String getID() { return "DivideByZeroJS"; } @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("divide.by.zero.display.name"); + return InspectionJSLocalize.divideByZeroDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.BUGS_GROUP_NAME; } @RequiredReadAction - @Override - @Nonnull + @Override + @Nonnull protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("division.by.zero.error.string"); + return InspectionJSLocalize.divisionByZeroErrorString().get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new DivisionByZeroVisitor(); } private static class DivisionByZeroVisitor extends BaseInspectionVisitor { - - @Override public void visitJSBinaryExpression( - @Nonnull JSBinaryExpression expression) { + @Override + public void visitJSBinaryExpression(@Nonnull JSBinaryExpression expression) { super.visitJSBinaryExpression(expression); final JSExpression rhs = expression.getROperand(); if (rhs == null) { @@ -69,8 +66,8 @@ private static class DivisionByZeroVisitor extends BaseInspectionVisitor { registerError(expression); } - @Override public void visitJSAssignmentExpression( - JSAssignmentExpression expression) { + @Override + public void visitJSAssignmentExpression(JSAssignmentExpression expression) { super.visitJSAssignmentExpression(expression); final JSExpression rhs = expression.getROperand(); if (rhs == null) { @@ -86,7 +83,6 @@ private static class DivisionByZeroVisitor extends BaseInspectionVisitor { } registerError(expression); } - } private static boolean isZero(JSExpression expression) { @@ -99,5 +95,4 @@ private static boolean isZero(JSExpression expression) { "0L".equals(text) || "0l".equals(text); } - } \ No newline at end of file diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bugs/EqualityComparisonWithCoercionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bugs/EqualityComparisonWithCoercionJSInspection.java index d28ac7b0..37ecc722 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bugs/EqualityComparisonWithCoercionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bugs/EqualityComparisonWithCoercionJSInspection.java @@ -3,7 +3,11 @@ import com.intellij.lang.javascript.JSTokenTypes; import com.intellij.lang.javascript.psi.JSBinaryExpression; import com.intellij.lang.javascript.psi.JSExpression; -import com.sixrr.inspectjs.*; +import com.sixrr.inspectjs.BaseInspectionVisitor; +import com.sixrr.inspectjs.InspectionJSFix; +import com.sixrr.inspectjs.JSGroupNames; +import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; @@ -11,9 +15,8 @@ import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; import consulo.project.Project; -import org.jetbrains.annotations.NonNls; - import jakarta.annotation.Nonnull; +import org.jetbrains.annotations.NonNls; @ExtensionImpl public class EqualityComparisonWithCoercionJSInspection extends JavaScriptInspection { @@ -27,7 +30,7 @@ public String getID() { @Override @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("equality.comparison.with.coercion.display.name"); + return InspectionJSLocalize.equalityComparisonWithCoercionDisplayName().get(); } @Override @@ -40,7 +43,7 @@ public String getGroupDisplayName() { @Override @Nonnull protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("equality.comparison.with.coercion.error.string"); + return InspectionJSLocalize.equalityComparisonWithCoercionErrorString().get(); } @Override @@ -66,7 +69,7 @@ public EqualityComparisonWithCoercionFix(String sign) { @Override @Nonnull public String getName() { - return InspectionJSBundle.message("equality.comparison.with.coercion.fix", sign); + return InspectionJSLocalize.equalityComparisonWithCoercionFix(sign).get(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/AnonymousFunctionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/AnonymousFunctionJSInspection.java index a8e939fe..5e589a5f 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/AnonymousFunctionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/AnonymousFunctionJSInspection.java @@ -3,47 +3,45 @@ import com.intellij.lang.javascript.psi.JSFunction; import com.intellij.lang.javascript.psi.JSFunctionExpression; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; import consulo.language.psi.util.PsiTreeUtil; - import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class AnonymousFunctionJSInspection extends JavaScriptInspection{ - @Override - @Nonnull + @Nonnull public String getDisplayName(){ - return InspectionJSBundle.message("anonymous.function.display.name"); + return InspectionJSLocalize.anonymousFunctionDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName(){ return JSGroupNames.CONFUSING_GROUP_NAME; } @RequiredReadAction - @Override - @Nullable + @Override + @Nullable protected String buildErrorString(Object state, Object... args){ - return InspectionJSBundle.message("anonymous.function.error.string"); + return InspectionJSLocalize.anonymousFunctionErrorString().get(); } @Override - public BaseInspectionVisitor buildVisitor(){ + public BaseInspectionVisitor buildVisitor(){ return new Visitor(); } private static class Visitor extends BaseInspectionVisitor{ - - @Override public void visitJSFunctionExpression(JSFunctionExpression jsFunctionExpression){ + @Override + public void visitJSFunctionExpression(JSFunctionExpression jsFunctionExpression){ super.visitJSFunctionExpression(jsFunctionExpression); final JSFunction function = jsFunctionExpression.getFunction(); final PsiElement identifier = function.getNameIdentifier(); diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/BlockStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/BlockStatementJSInspection.java index de2890e9..76599fe4 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/BlockStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/BlockStatementJSInspection.java @@ -2,46 +2,44 @@ import com.intellij.lang.javascript.psi.*; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; - import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class BlockStatementJSInspection extends JavaScriptInspection { - @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("unnecessary.block.statement.display.name"); + return InspectionJSLocalize.unnecessaryBlockStatementDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.CONFUSING_GROUP_NAME; } @RequiredReadAction - @Override - @Nullable + @Override + @Nullable protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("unnecessary.block.statement.error.string"); + return InspectionJSLocalize.unnecessaryBlockStatementErrorString().get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new Visitor(); } private static class Visitor extends BaseInspectionVisitor { - - @Override public void visitJSBlock(JSBlockStatement jsBlockStatement) { + @Override + public void visitJSBlock(JSBlockStatement jsBlockStatement) { super.visitJSBlock(jsBlockStatement); final PsiElement parent = jsBlockStatement.getParent(); if(parent instanceof JSIfStatement|| @@ -56,6 +54,5 @@ private static class Visitor extends BaseInspectionVisitor { } registerStatementError(jsBlockStatement); } - } } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/CallerJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/CallerJSInspection.java index e0d424ca..4574b1ec 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/CallerJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/CallerJSInspection.java @@ -2,53 +2,47 @@ import com.intellij.lang.javascript.psi.JSReferenceExpression; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; - import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class CallerJSInspection extends JavaScriptInspection { - @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("caller.display.name"); + return InspectionJSLocalize.callerDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.CONFUSING_GROUP_NAME; } @RequiredReadAction - @Override - @Nullable + @Override + @Nullable protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("caller.error.string"); + return InspectionJSLocalize.callerErrorString().get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new Visitor(); } private static class Visitor extends BaseInspectionVisitor { - - @Override public void visitJSReferenceExpression(JSReferenceExpression jsReferenceExpression) { - super.visitJSReferenceExpression( - jsReferenceExpression); - if(!"caller".equals(jsReferenceExpression.getReferencedName())) - { - return; + @Override + public void visitJSReferenceExpression(JSReferenceExpression jsReferenceExpression) { + super.visitJSReferenceExpression(jsReferenceExpression); + if ("caller".equals(jsReferenceExpression.getReferencedName())) { + registerError(jsReferenceExpression.getReferenceNameElement()); } - registerError(jsReferenceExpression.getReferenceNameElement()); } - } } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/CommaExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/CommaExpressionJSInspection.java index c77502fc..6ce167b4 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/CommaExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/CommaExpressionJSInspection.java @@ -3,55 +3,48 @@ import com.intellij.lang.javascript.psi.JSCommaExpression; import com.intellij.lang.javascript.psi.JSForStatement; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; - import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class CommaExpressionJSInspection extends JavaScriptInspection { - @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("comma.expression.display.name"); + return InspectionJSLocalize.commaExpressionDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.CONFUSING_GROUP_NAME; } @RequiredReadAction - @Override - @Nullable + @Override + @Nullable protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("comma.expression.error.string"); + return InspectionJSLocalize.commaExpressionErrorString().get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new Visitor(); } private static class Visitor extends BaseInspectionVisitor { - @Override public void visitJSCommaExpression(JSCommaExpression node) { + @Override + public void visitJSCommaExpression(JSCommaExpression node) { super.visitJSCommaExpression(node); - if(node.getParent() instanceof JSCommaExpression) - { - return; - } - if(node.getParent() instanceof JSForStatement) - { + if (node.getParent() instanceof JSCommaExpression || node.getParent() instanceof JSForStatement) { return; } registerError(node); } - } } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConditionalExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConditionalExpressionJSInspection.java index b4ac6c45..637dfebc 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConditionalExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConditionalExpressionJSInspection.java @@ -2,12 +2,11 @@ import com.intellij.lang.javascript.psi.JSConditionalExpression; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; - import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @@ -24,7 +23,7 @@ public boolean isEnabledByDefault() @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("conditional.expression.display.name"); + return InspectionJSLocalize.conditionalExpressionDisplayName().get(); } @Override @@ -39,7 +38,7 @@ public String getGroupDisplayName() @Nullable protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("conditional.expression.error.string"); + return InspectionJSLocalize.conditionalExpressionErrorString().get(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConfusingFloatingPointLiteralJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConfusingFloatingPointLiteralJSInspection.java index 6b7796e0..28a8a25f 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConfusingFloatingPointLiteralJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConfusingFloatingPointLiteralJSInspection.java @@ -1,17 +1,21 @@ package com.sixrr.inspectjs.confusing; -import consulo.annotation.access.RequiredReadAction; -import consulo.annotation.component.ExtensionImpl; -import consulo.language.editor.inspection.ProblemDescriptor; import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.lang.javascript.psi.JSLiteralExpression; +import com.sixrr.inspectjs.BaseInspectionVisitor; +import com.sixrr.inspectjs.InspectionJSFix; +import com.sixrr.inspectjs.JSGroupNames; +import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; +import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.component.ExtensionImpl; import consulo.javascript.psi.JSSimpleLiteralExpression; -import consulo.language.util.IncorrectOperationException; -import com.sixrr.inspectjs.*; +import consulo.language.editor.inspection.ProblemDescriptor; import consulo.language.psi.PsiElement; +import consulo.language.util.IncorrectOperationException; import consulo.project.Project; -import org.jetbrains.annotations.NonNls; import jakarta.annotation.Nonnull; +import org.jetbrains.annotations.NonNls; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -19,50 +23,42 @@ @ExtensionImpl public class ConfusingFloatingPointLiteralJSInspection extends JavaScriptInspection { @NonNls - private static final Pattern pickyFloatingPointPattern = - Pattern.compile("[0-9]+\\.[0-9]+((e|E)(-)?[0-9]+)?(f|F|d|D)?"); + private static final Pattern PICKY_FLOATING_POINT_PATTERN = Pattern.compile("[0-9]+\\.[0-9]+((e|E)(-)?[0-9]+)?(f|F|d|D)?"); @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.CONFUSING_GROUP_NAME; } @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message( - "confusing.floating.point.literal.display.name"); + return InspectionJSLocalize.confusingFloatingPointLiteralDisplayName().get(); } @RequiredReadAction - @Override - @Nonnull + @Override + @Nonnull protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message( - "confusing.floating.point.literal.problem.descriptor"); + return InspectionJSLocalize.confusingFloatingPointLiteralProblemDescriptor().get(); } @Override - public InspectionJSFix buildFix(PsiElement location, Object state) { + public InspectionJSFix buildFix(PsiElement location, Object state) { return new ConfusingFloatingPointLiteralFix(); } - private static class ConfusingFloatingPointLiteralFix - extends InspectionJSFix { - + private static class ConfusingFloatingPointLiteralFix extends InspectionJSFix { @Override - @Nonnull + @Nonnull public String getName() { - return InspectionJSBundle.message( - "confusing.floating.point.literal.change.quickfix"); + return InspectionJSLocalize.confusingFloatingPointLiteralChangeQuickfix().get(); } @Override - public void doFix(Project project, ProblemDescriptor descriptor) - throws IncorrectOperationException { - final JSExpression literalExpression = - (JSExpression) descriptor.getPsiElement(); + public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { + final JSExpression literalExpression = (JSExpression) descriptor.getPsiElement(); final String text = literalExpression.getText(); final String newText = getCanonicalForm(text); replaceExpression(literalExpression, newText); @@ -112,15 +108,13 @@ private static String getCanonicalForm(String text) { } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new ConfusingFloatingPointLiteralVisitor(); } - private static class ConfusingFloatingPointLiteralVisitor - extends BaseInspectionVisitor { - - @Override public void visitJSLiteralExpression( - @Nonnull JSSimpleLiteralExpression literal) { + private static class ConfusingFloatingPointLiteralVisitor extends BaseInspectionVisitor { + @Override + public void visitJSLiteralExpression(@Nonnull JSSimpleLiteralExpression literal) { super.visitJSLiteralExpression(literal); final String text = literal.getText(); if (text == null) { @@ -137,7 +131,7 @@ private static class ConfusingFloatingPointLiteralVisitor } private static boolean isConfusing(String text) { - final Matcher matcher = pickyFloatingPointPattern.matcher(text); + final Matcher matcher = PICKY_FLOATING_POINT_PATTERN.matcher(text); return !matcher.matches(); } @@ -149,5 +143,4 @@ private static boolean isFloatingPoint(JSLiteralExpression literal) { } return text.contains(".") || text.contains("e") || text.contains("E"); } - } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConfusingPlusesOrMinusesJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConfusingPlusesOrMinusesJSInspection.java index 8333b3c8..db9ec79b 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConfusingPlusesOrMinusesJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConfusingPlusesOrMinusesJSInspection.java @@ -5,40 +5,39 @@ import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.lang.javascript.psi.JSPostfixExpression; import com.intellij.lang.javascript.psi.JSPrefixExpression; -import consulo.annotation.access.RequiredReadAction; -import consulo.annotation.component.ExtensionImpl; -import consulo.language.ast.IElementType; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; +import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.component.ExtensionImpl; +import consulo.language.ast.IElementType; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class ConfusingPlusesOrMinusesJSInspection extends JavaScriptInspection { - @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("confusing.pluses.or.minuses.display.name"); + return InspectionJSLocalize.confusingPlusesOrMinusesDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.CONFUSING_GROUP_NAME; } @RequiredReadAction - @Override - @Nullable + @Override + @Nullable protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("confusing.pluses.or.minuses.error.string"); + return InspectionJSLocalize.confusingPlusesOrMinusesErrorString().get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new Visitor(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/DynamicallyGeneratedCodeJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/DynamicallyGeneratedCodeJSInspection.java index 72996993..044291a9 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/DynamicallyGeneratedCodeJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/DynamicallyGeneratedCodeJSInspection.java @@ -5,46 +5,44 @@ import com.intellij.lang.javascript.psi.JSNewExpression; import com.intellij.lang.javascript.psi.JSReferenceExpression; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; import org.jetbrains.annotations.NonNls; -import jakarta.annotation.Nonnull; - @ExtensionImpl public class DynamicallyGeneratedCodeJSInspection extends JavaScriptInspection { - @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("dynamically.generated.code.display.name"); + return InspectionJSLocalize.dynamicallyGeneratedCodeDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.CONFUSING_GROUP_NAME; } @RequiredReadAction - @Override - @Nullable + @Override + @Nullable protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("dynamically.generated.code.error.string"); + return InspectionJSLocalize.dynamicallyGeneratedCodeErrorString().get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new Visitor(); } private static class Visitor extends BaseInspectionVisitor { - - @Override public void visitJSCallExpression(JSCallExpression jsCallExpression) { + @Override + public void visitJSCallExpression(JSCallExpression jsCallExpression) { super.visitJSCallExpression(jsCallExpression); final JSExpression methodExpression; try { @@ -65,9 +63,9 @@ private static class Visitor extends BaseInspectionVisitor { registerError(methodExpression); } - @Override public void visitJSNewExpression(JSNewExpression jsNewExpression) { - super.visitJSNewExpression( - jsNewExpression); + @Override + public void visitJSNewExpression(JSNewExpression jsNewExpression) { + super.visitJSNewExpression(jsNewExpression); final JSExpression methodExpression; try { methodExpression = jsNewExpression.getMethodExpression(); diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/EmptyStatementBodyJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/EmptyStatementBodyJSInspection.java index ee1f43fc..102e0b2e 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/EmptyStatementBodyJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/EmptyStatementBodyJSInspection.java @@ -2,13 +2,12 @@ import com.intellij.lang.javascript.psi.*; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.inspection.InspectionToolState; - import jakarta.annotation.Nonnull; @ExtensionImpl @@ -25,7 +24,7 @@ public String getID() @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("statement.with.empty.body.display.name"); + return InspectionJSLocalize.statementWithEmptyBodyDisplayName().get(); } @Override @@ -45,14 +44,9 @@ public boolean isEnabledByDefault() @Override public String buildErrorString(Object state, Object... args) { - if(args[0] instanceof JSIfStatement) - { - return InspectionJSBundle.message("statement.has.empty.branch.error.string"); - } - else - { - return InspectionJSBundle.message("statement.has.empty.body.error.string"); - } + return args[0] instanceof JSIfStatement + ? InspectionJSLocalize.statementHasEmptyBranchErrorString().get() + : InspectionJSLocalize.statementHasEmptyBodyErrorString().get(); } @Nonnull @@ -70,7 +64,6 @@ public BaseInspectionVisitor buildVisitor() private class EmptyStatementVisitor extends BaseInspectionVisitor { - @Override public void visitJSDoWhileStatement(@Nonnull JSDoWhileStatement statement) { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/IncrementDecrementResultUsedJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/IncrementDecrementResultUsedJSInspection.java index ba584a71..d10d8254 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/IncrementDecrementResultUsedJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/IncrementDecrementResultUsedJSInspection.java @@ -2,37 +2,36 @@ import com.intellij.lang.javascript.JSTokenTypes; import com.intellij.lang.javascript.psi.*; -import consulo.annotation.access.RequiredReadAction; -import consulo.annotation.component.ExtensionImpl; -import consulo.language.psi.PsiElement; -import consulo.language.ast.IElementType; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; +import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.component.ExtensionImpl; +import consulo.language.ast.IElementType; +import consulo.language.psi.PsiElement; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class IncrementDecrementResultUsedJSInspection extends JavaScriptInspection { - @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("result.of.increment.or.decrement.used.display.name"); + return InspectionJSLocalize.resultOfIncrementOrDecrementUsedDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.CONFUSING_GROUP_NAME; } @RequiredReadAction - @Override - @Nullable + @Override + @Nullable protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("result.of.increment.or.decrement.expression.used.error.string"); + return InspectionJSLocalize.resultOfIncrementOrDecrementExpressionUsedErrorString().get(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/BreakStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/BreakStatementJSInspection.java index b42ff17b..349e8917 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/BreakStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/BreakStatementJSInspection.java @@ -3,45 +3,43 @@ import com.intellij.lang.javascript.psi.JSBreakStatement; import com.intellij.lang.javascript.psi.JSCaseClause; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; - import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class BreakStatementJSInspection extends JavaScriptInspection { - @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("break.statement.display.name"); + return InspectionJSLocalize.breakStatementDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } @RequiredReadAction - @Override - @Nullable + @Override + @Nullable protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("break.statement.error.string"); + return InspectionJSLocalize.breakStatementErrorString().get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new Visitor(); } private static class Visitor extends BaseInspectionVisitor { - - @Override public void visitJSBreakStatement(@Nonnull JSBreakStatement statement) { + @Override + public void visitJSBreakStatement(@Nonnull JSBreakStatement statement) { super.visitJSBreakStatement(statement); if (statement.getParent() instanceof JSCaseClause) { return; diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/BreakStatementWithLabelJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/BreakStatementWithLabelJSInspection.java index e44c5bd4..70dd6321 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/BreakStatementWithLabelJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/BreakStatementWithLabelJSInspection.java @@ -2,39 +2,37 @@ import com.intellij.lang.javascript.psi.JSBreakStatement; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; - import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class BreakStatementWithLabelJSInspection extends JavaScriptInspection { - @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("break.statement.with.label.display.name"); + return InspectionJSLocalize.breakStatementWithLabelDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } @RequiredReadAction - @Override - @Nullable + @Override + @Nullable protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("break.statement.with.label.error.string"); + return InspectionJSLocalize.breakStatementWithLabelErrorString().get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new Visitor(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/ConditionalExpressionWithIdenticalBranchesJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/ConditionalExpressionWithIdenticalBranchesJSInspection.java index bd46b974..e4acf517 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/ConditionalExpressionWithIdenticalBranchesJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/ConditionalExpressionWithIdenticalBranchesJSInspection.java @@ -2,7 +2,11 @@ import com.intellij.lang.javascript.psi.JSConditionalExpression; import com.intellij.lang.javascript.psi.JSExpression; -import com.sixrr.inspectjs.*; +import com.sixrr.inspectjs.BaseInspectionVisitor; +import com.sixrr.inspectjs.InspectionJSFix; +import com.sixrr.inspectjs.JSGroupNames; +import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import com.sixrr.inspectjs.utils.EquivalenceChecker; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; @@ -17,40 +21,38 @@ public class ConditionalExpressionWithIdenticalBranchesJSInspection extends Java private InspectionJSFix fix = new CollapseConditional(); @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("conditional.expression.with.identical.branches.display.name"); + return InspectionJSLocalize.conditionalExpressionWithIdenticalBranchesDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } @RequiredReadAction - @Override - public String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("conditional.expression.with.identical.branches.error.string"); + @Override + public String buildErrorString(Object state, Object... args) { + return InspectionJSLocalize.conditionalExpressionWithIdenticalBranchesErrorString().get(); } @Override - public InspectionJSFix buildFix(PsiElement location, Object state) { + public InspectionJSFix buildFix(PsiElement location, Object state) { return fix; } private static class CollapseConditional extends InspectionJSFix { @Override - @Nonnull + @Nonnull public String getName() { - return InspectionJSBundle.message("collapse.conditional.expression.fix"); + return InspectionJSLocalize.collapseConditionalExpressionFix().get(); } @Override - public void doFix(Project project, ProblemDescriptor descriptor) - throws IncorrectOperationException { - final JSConditionalExpression expression = - (JSConditionalExpression) descriptor.getPsiElement(); + public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { + final JSConditionalExpression expression = (JSConditionalExpression) descriptor.getPsiElement(); final JSExpression thenExpression = expression.getThen(); assert thenExpression != null; @@ -60,13 +62,13 @@ public void doFix(Project project, ProblemDescriptor descriptor) } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new ConditionalExpressionWithIdenticalBranchesVisitor(); } private static class ConditionalExpressionWithIdenticalBranchesVisitor extends BaseInspectionVisitor { - - @Override public void visitJSConditionalExpression(JSConditionalExpression expression) { + @Override + public void visitJSConditionalExpression(JSConditionalExpression expression) { super.visitJSConditionalExpression(expression); final JSExpression thenExpression = expression.getThen(); final JSExpression elseExpression = expression.getElse(); diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/ConstantConditionalExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/ConstantConditionalExpressionJSInspection.java index 40a1dbd6..e334e535 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/ConstantConditionalExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/ConstantConditionalExpressionJSInspection.java @@ -2,51 +2,52 @@ import com.intellij.lang.javascript.psi.JSConditionalExpression; import com.intellij.lang.javascript.psi.JSExpression; +import com.sixrr.inspectjs.BaseInspectionVisitor; +import com.sixrr.inspectjs.InspectionJSFix; +import com.sixrr.inspectjs.JSGroupNames; +import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; +import com.sixrr.inspectjs.utils.BoolUtils; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; -import consulo.project.Project; +import consulo.language.editor.inspection.ProblemDescriptor; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; -import com.sixrr.inspectjs.*; -import com.sixrr.inspectjs.utils.BoolUtils; -import consulo.language.editor.inspection.ProblemDescriptor; +import consulo.project.Project; import jakarta.annotation.Nonnull; @ExtensionImpl -public class ConstantConditionalExpressionJSInspection - extends JavaScriptInspection { - +public class ConstantConditionalExpressionJSInspection extends JavaScriptInspection { @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("constant.conditional.expression.display.name"); + return InspectionJSLocalize.constantConditionalExpressionDisplayName().get(); } @Override - public boolean isEnabledByDefault() { + public boolean isEnabledByDefault() { return true; } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new ConstantConditionalExpressionVisitor(); } @RequiredReadAction - @Override - @Nonnull + @Override + @Nonnull public String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("constant.conditional.expression.error.string"); + return InspectionJSLocalize.constantConditionalExpressionErrorString().get(); } - static String calculateReplacementExpression( - JSConditionalExpression exp) { + static String calculateReplacementExpression(JSConditionalExpression exp) { final JSExpression thenExpression = exp.getThen(); final JSExpression elseExpression = exp.getElse(); final JSExpression condition = exp.getCondition(); @@ -60,34 +61,28 @@ static String calculateReplacementExpression( } @Override - public InspectionJSFix buildFix(PsiElement location, Object state) { + public InspectionJSFix buildFix(PsiElement location, Object state) { return new ConstantConditionalFix(); } private static class ConstantConditionalFix extends InspectionJSFix { - @Override - @Nonnull + @Nonnull public String getName() { - return InspectionJSBundle.message("simplify.fix"); + return InspectionJSLocalize.simplifyFix().get(); } @Override - public void doFix(Project project, ProblemDescriptor descriptor) - throws IncorrectOperationException { - final JSConditionalExpression expression = - (JSConditionalExpression) descriptor.getPsiElement(); - final String newExpression = - calculateReplacementExpression(expression); + public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { + final JSConditionalExpression expression = (JSConditionalExpression) descriptor.getPsiElement(); + final String newExpression = calculateReplacementExpression(expression); replaceExpression(expression, newExpression); } } - private static class ConstantConditionalExpressionVisitor - extends BaseInspectionVisitor { - - @Override public void visitJSConditionalExpression( - JSConditionalExpression expression) { + private static class ConstantConditionalExpressionVisitor extends BaseInspectionVisitor { + @Override + public void visitJSConditionalExpression(JSConditionalExpression expression) { super.visitJSConditionalExpression(expression); final JSExpression condition = expression.getCondition(); final JSExpression thenExpression = expression.getThen(); diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/ConstantIfStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/ConstantIfStatementJSInspection.java index 0cb6dee6..cc02f2a1 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/ConstantIfStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/ConstantIfStatementJSInspection.java @@ -3,7 +3,11 @@ import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.lang.javascript.psi.JSIfStatement; import com.intellij.lang.javascript.psi.JSStatement; -import com.sixrr.inspectjs.*; +import com.sixrr.inspectjs.BaseInspectionVisitor; +import com.sixrr.inspectjs.InspectionJSFix; +import com.sixrr.inspectjs.JSGroupNames; +import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import com.sixrr.inspectjs.utils.BoolUtils; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; @@ -11,63 +15,55 @@ import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; import consulo.project.Project; - import jakarta.annotation.Nonnull; @ExtensionImpl public class ConstantIfStatementJSInspection extends JavaScriptInspection { - @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message( - "constant.if.statement.display.name"); + return InspectionJSLocalize.constantIfStatementDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } @Override - public boolean isEnabledByDefault() { + public boolean isEnabledByDefault() { return true; } @RequiredReadAction - @Override - @Nonnull + @Override + @Nonnull protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message( - "constant.if.statement.problem.descriptor"); + return InspectionJSLocalize.constantIfStatementProblemDescriptor().get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new ConstantIfStatementVisitor(); } @Override - public InspectionJSFix buildFix(PsiElement location, Object state) { + public InspectionJSFix buildFix(PsiElement location, Object state) { return new ConstantIfStatementFix(); } private static class ConstantIfStatementFix extends InspectionJSFix { - @Override - @Nonnull + @Nonnull public String getName() { - return InspectionJSBundle.message( - "constant.conditional.expression.simplify.quickfix"); + return InspectionJSLocalize.constantConditionalExpressionSimplifyQuickfix().get(); } @Override - public void doFix(Project project, ProblemDescriptor descriptor) - throws IncorrectOperationException { + public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { final PsiElement ifKeyword = descriptor.getPsiElement(); - final JSIfStatement statement = - (JSIfStatement) ifKeyword.getParent(); + final JSIfStatement statement = (JSIfStatement) ifKeyword.getParent(); assert statement != null; final JSStatement thenBranch = statement.getThen(); final JSStatement elseBranch = statement.getElse(); @@ -83,20 +79,15 @@ public void doFix(Project project, ProblemDescriptor descriptor) } } - private static void replaceStatementWithUnwrapping( - JSStatement branch, JSIfStatement statement) - throws IncorrectOperationException { - { - final String elseText = branch.getText(); - replaceStatement(statement, elseText); - } + private static void replaceStatementWithUnwrapping(JSStatement branch, JSIfStatement statement) throws IncorrectOperationException { + final String elseText = branch.getText(); + replaceStatement(statement, elseText); } } - private static class ConstantIfStatementVisitor - extends BaseInspectionVisitor { - - @Override public void visitJSIfStatement(JSIfStatement statement) { + private static class ConstantIfStatementVisitor extends BaseInspectionVisitor { + @Override + public void visitJSIfStatement(JSIfStatement statement) { super.visitJSIfStatement(statement); final JSExpression condition = statement.getCondition(); if (condition == null) { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/ContinueStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/ContinueStatementJSInspection.java index 0a24c71a..f74f71bc 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/ContinueStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/ContinueStatementJSInspection.java @@ -5,6 +5,7 @@ import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; @@ -13,28 +14,27 @@ @ExtensionImpl public class ContinueStatementJSInspection extends JavaScriptInspection { - @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("continue.statement.display.name"); + return InspectionJSLocalize.continueStatementDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } @RequiredReadAction - @Override - @Nullable + @Override + @Nullable protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("continue.statement.error.string"); + return InspectionJSLocalize.continueStatementErrorString().get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new Visitor(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/ContinueStatementWithLabelJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/ContinueStatementWithLabelJSInspection.java index 78ce535d..750d9e81 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/ContinueStatementWithLabelJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/ContinueStatementWithLabelJSInspection.java @@ -2,45 +2,43 @@ import com.intellij.lang.javascript.psi.JSContinueStatement; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; - import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class ContinueStatementWithLabelJSInspection extends JavaScriptInspection { - @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("continue.statement.with.label.display.name"); + return InspectionJSLocalize.continueStatementWithLabelDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } @RequiredReadAction - @Override - @Nullable + @Override + @Nullable protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("continue.statement.with.label.error.string"); + return InspectionJSLocalize.continueStatementWithLabelErrorString().get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new Visitor(); } private static class Visitor extends BaseInspectionVisitor { - - @Override public void visitJSContinueStatement(@Nonnull JSContinueStatement statement) { + @Override + public void visitJSContinueStatement(@Nonnull JSContinueStatement statement) { super.visitJSContinueStatement(statement); if (statement.getLabel() == null) { return; diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/DefaultNotLastCaseInSwitchJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/DefaultNotLastCaseInSwitchJSInspection.java index 744a5af1..1f6ff470 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/DefaultNotLastCaseInSwitchJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/DefaultNotLastCaseInSwitchJSInspection.java @@ -6,42 +6,40 @@ import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import jakarta.annotation.Nonnull; @ExtensionImpl public class DefaultNotLastCaseInSwitchJSInspection extends JavaScriptInspection { - @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("default.not.last.case.in.switch.display.name"); + return InspectionJSLocalize.defaultNotLastCaseInSwitchDisplayName().get(); } @RequiredReadAction - @Override - @Nonnull + @Override + @Nonnull protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("default.branch.not.last.case.in.switch.error.string"); + return InspectionJSLocalize.defaultBranchNotLastCaseInSwitchErrorString().get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new DefaultNotLastCaseInSwitchVisitor(); } - private static class DefaultNotLastCaseInSwitchVisitor - extends BaseInspectionVisitor { - - @Override public void visitJSSwitchStatement( - @Nonnull JSSwitchStatement statement) { + private static class DefaultNotLastCaseInSwitchVisitor extends BaseInspectionVisitor { + @Override + public void visitJSSwitchStatement(@Nonnull JSSwitchStatement statement) { super.visitJSSwitchStatement(statement); final JSCaseClause[] caseClauses = statement.getCaseClauses(); if (caseClauses == null) { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/DuplicateConditionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/DuplicateConditionJSInspection.java index bfbf65de..60215888 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/DuplicateConditionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/DuplicateConditionJSInspection.java @@ -3,9 +3,9 @@ import com.intellij.lang.javascript.JSTokenTypes; import com.intellij.lang.javascript.psi.*; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import com.sixrr.inspectjs.utils.EquivalenceChecker; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; @@ -20,32 +20,31 @@ @ExtensionImpl public class DuplicateConditionJSInspection extends JavaScriptInspection { @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("duplicate.condition.in.if.statement.display.name"); + return InspectionJSLocalize.duplicateConditionInIfStatementDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } @RequiredReadAction - @Override - public String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("duplicate.condition.error.string"); + @Override + public String buildErrorString(Object state, Object... args) { + return InspectionJSLocalize.duplicateConditionErrorString().get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new DuplicateConditionVisitor(); } - private static class DuplicateConditionVisitor - extends BaseInspectionVisitor { - - @Override public void visitJSIfStatement(@Nonnull JSIfStatement statement) { + private static class DuplicateConditionVisitor extends BaseInspectionVisitor { + @Override + public void visitJSIfStatement(@Nonnull JSIfStatement statement) { super.visitJSIfStatement(statement); final PsiElement parent = statement.getParent(); if (parent instanceof JSIfStatement) { @@ -61,8 +60,7 @@ private static class DuplicateConditionVisitor if (numConditions < 2) { return; } - final JSExpression[] conditionArray = - conditions.toArray(new JSExpression[numConditions]); + final JSExpression[] conditionArray = conditions.toArray(new JSExpression[numConditions]); final boolean[] matched = new boolean[conditionArray.length]; Arrays.fill(matched, false); for (int i = 0; i < conditionArray.length; i++) { @@ -90,8 +88,7 @@ private static class DuplicateConditionVisitor } } - private void collectConditionsForIfStatement(JSIfStatement statement, - Set conditions) { + private void collectConditionsForIfStatement(JSIfStatement statement, Set conditions) { final JSExpression condition = statement.getCondition(); collectConditionsForExpression(condition, conditions); final JSStatement branch = statement.getElse(); @@ -104,13 +101,12 @@ private void collectConditionsForExpression(JSExpression condition, Set { - @Override public void visitJSForStatement(@Nonnull JSForStatement statement) { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/ForLoopThatDoesntUseLoopVariableJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/ForLoopThatDoesntUseLoopVariableJSInspection.java index 46f532ad..46cfa7ac 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/ForLoopThatDoesntUseLoopVariableJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/ForLoopThatDoesntUseLoopVariableJSInspection.java @@ -2,6 +2,7 @@ import com.intellij.lang.javascript.psi.*; import com.sixrr.inspectjs.*; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; @@ -9,70 +10,59 @@ import jakarta.annotation.Nonnull; @ExtensionImpl -public class ForLoopThatDoesntUseLoopVariableJSInspection - extends JavaScriptInspection { - +public class ForLoopThatDoesntUseLoopVariableJSInspection extends JavaScriptInspection { @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message( - "for.loop.not.use.loop.variable.display.name"); + return InspectionJSLocalize.forLoopNotUseLoopVariableDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.BUGS_GROUP_NAME; } @RequiredReadAction - @Override - @Nonnull + @Override + @Nonnull public String buildErrorString(Object state, Object... args) { final boolean condition = (Boolean) args[0]; final boolean update = (Boolean) args[1]; if (condition && update) { - return InspectionJSBundle.message( - "for.loop.not.use.loop.variable.problem.descriptor.both.condition.and.update"); + return InspectionJSLocalize.forLoopNotUseLoopVariableProblemDescriptorBothConditionAndUpdate().get(); } if (condition) { - return InspectionJSBundle.message( - "for.loop.not.use.loop.variable.problem.descriptor.condition"); + return InspectionJSLocalize.forLoopNotUseLoopVariableProblemDescriptorCondition().get(); } - return InspectionJSBundle.message( - "for.loop.not.use.loop.variable.problem.descriptor.update"); + return InspectionJSLocalize.forLoopNotUseLoopVariableProblemDescriptorUpdate().get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new ForLoopThatDoesntUseLoopVariableVisitor(); } //TODO: right now this only works with a variable declared in the for loop //TODO: make it work with an implicit declaration as well - private static class ForLoopThatDoesntUseLoopVariableVisitor - extends BaseInspectionVisitor { - - @Override public void visitJSForStatement(@Nonnull JSForStatement statement) { + private static class ForLoopThatDoesntUseLoopVariableVisitor extends BaseInspectionVisitor { + @Override + public void visitJSForStatement(@Nonnull JSForStatement statement) { super.visitJSForStatement(statement); if (conditionUsesInitializer(statement)) { if (!updateUsesInitializer(statement)) { - registerStatementError(statement, - Boolean.FALSE, Boolean.TRUE); + registerStatementError(statement, Boolean.FALSE, Boolean.TRUE); } } else { if (updateUsesInitializer(statement)) { - registerStatementError(statement, - Boolean.TRUE, Boolean.FALSE); + registerStatementError(statement, Boolean.TRUE, Boolean.FALSE); } else { - registerStatementError(statement, - Boolean.TRUE, Boolean.TRUE); + registerStatementError(statement, Boolean.TRUE, Boolean.TRUE); } } } - private static boolean conditionUsesInitializer( - JSForStatement statement) { + private static boolean conditionUsesInitializer(JSForStatement statement) { final JSExpression condition = statement.getCondition(); if (condition == null) { return true; @@ -105,8 +95,7 @@ private static boolean updateUsesInitializer(JSForStatement statement) { return expressionUsesVariable(update, variables[0]); } - private static boolean expressionUsesVariable(JSExpression expression, - JSVariable localVar) { + private static boolean expressionUsesVariable(JSExpression expression, JSVariable localVar) { final UseVisitor useVisitor = new UseVisitor(localVar); expression.accept(useVisitor); return useVisitor.isUsed(); @@ -114,7 +103,6 @@ private static boolean expressionUsesVariable(JSExpression expression, } private static class UseVisitor extends JSRecursiveElementVisitor { - private final JSVariable variable; private boolean used = false; diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/IfStatementWithIdenticalBranchesJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/IfStatementWithIdenticalBranchesJSInspection.java index 834dc95e..990e32f4 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/IfStatementWithIdenticalBranchesJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/IfStatementWithIdenticalBranchesJSInspection.java @@ -2,7 +2,11 @@ import com.intellij.lang.javascript.psi.JSIfStatement; import com.intellij.lang.javascript.psi.JSStatement; -import com.sixrr.inspectjs.*; +import com.sixrr.inspectjs.BaseInspectionVisitor; +import com.sixrr.inspectjs.InspectionJSFix; +import com.sixrr.inspectjs.JSGroupNames; +import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import com.sixrr.inspectjs.utils.EquivalenceChecker; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; @@ -10,7 +14,6 @@ import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; import consulo.project.Project; - import jakarta.annotation.Nonnull; @ExtensionImpl @@ -18,41 +21,39 @@ public class IfStatementWithIdenticalBranchesJSInspection extends JavaScriptInsp private InspectionJSFix fix = new CollapseIfFix(); @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("if.statement.with.identical.branches.display.name"); + return InspectionJSLocalize.ifStatementWithIdenticalBranchesDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } @RequiredReadAction - @Override - public String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("ref.statement.with.identical.branches.error.string"); + @Override + public String buildErrorString(Object state, Object... args) { + return InspectionJSLocalize.refStatementWithIdenticalBranchesErrorString().get(); } @Override - public InspectionJSFix buildFix(PsiElement location, Object state) { + public InspectionJSFix buildFix(PsiElement location, Object state) { return fix; } private static class CollapseIfFix extends InspectionJSFix { @Override - @Nonnull + @Nonnull public String getName() { - return InspectionJSBundle.message("collapse.if.statement.fix"); + return InspectionJSLocalize.collapseIfStatementFix().get(); } @Override - public void doFix(Project project, ProblemDescriptor descriptor) - throws IncorrectOperationException { + public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { final PsiElement identifier = descriptor.getPsiElement(); - final JSIfStatement statement = - (JSIfStatement) identifier.getParent(); + final JSIfStatement statement = (JSIfStatement) identifier.getParent(); assert statement != null; final JSStatement thenBranch = statement.getThen(); final String bodyText = thenBranch.getText(); @@ -61,7 +62,7 @@ public void doFix(Project project, ProblemDescriptor descriptor) } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new IfStatementWithIdenticalBranchesVisitor(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/IfStatementWithTooManyBranchesJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/IfStatementWithTooManyBranchesJSInspection.java index b892b7e9..87a8942d 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/IfStatementWithTooManyBranchesJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/IfStatementWithTooManyBranchesJSInspection.java @@ -3,14 +3,13 @@ import com.intellij.lang.javascript.psi.JSIfStatement; import com.intellij.lang.javascript.psi.JSStatement; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.inspection.InspectionToolState; import consulo.language.psi.PsiElement; - import jakarta.annotation.Nonnull; @ExtensionImpl @@ -20,7 +19,7 @@ public class IfStatementWithTooManyBranchesJSInspection extends JavaScriptInspec @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("if.statement.with.too.many.branches.display.name"); + return InspectionJSLocalize.ifStatementWithTooManyBranchesDisplayName().get(); } @Override @@ -43,7 +42,7 @@ protected String buildErrorString(Object state, Object... args) { final JSIfStatement statement = (JSIfStatement) args[0]; final int branches = calculateNumBranches(statement); - return InspectionJSBundle.message("if.statement.with.too.many.branches.error.string", branches); + return InspectionJSLocalize.ifStatementWithTooManyBranchesErrorString(branches).get(); } private static int calculateNumBranches(JSIfStatement statement) @@ -68,7 +67,6 @@ public BaseInspectionVisitor buildVisitor() private class Visitor extends BaseInspectionVisitor { - @Override public void visitJSIfStatement(@Nonnull JSIfStatement statement) { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/dom/DocumentWriteJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/dom/DocumentWriteJSInspection.java index 38b6ed0e..ea123f44 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/dom/DocumentWriteJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/dom/DocumentWriteJSInspection.java @@ -7,6 +7,7 @@ import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import jakarta.annotation.Nullable; @@ -16,34 +17,33 @@ @ExtensionImpl public class DocumentWriteJSInspection extends JavaScriptInspection { - @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("call.to.document.write.display.name"); + return InspectionJSLocalize.callToDocumentWriteDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.DOM_GROUP_NAME; } @RequiredReadAction - @Override - @Nullable + @Override + @Nullable protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("document.write.error.string"); + return InspectionJSLocalize.documentWriteErrorString().get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new Visitor(); } private static class Visitor extends BaseInspectionVisitor { - - @Override public void visitJSCallExpression(JSCallExpression jsCallExpression) { + @Override + public void visitJSCallExpression(JSCallExpression jsCallExpression) { super.visitJSCallExpression(jsCallExpression); final JSExpression methodExpression; try { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/exception/ContinueOrBreakFromFinallyBlockJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/exception/ContinueOrBreakFromFinallyBlockJSInspection.java index 7b61b766..5857e0b2 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/exception/ContinueOrBreakFromFinallyBlockJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/exception/ContinueOrBreakFromFinallyBlockJSInspection.java @@ -4,9 +4,9 @@ import com.intellij.lang.javascript.psi.JSContinueStatement; import com.intellij.lang.javascript.psi.JSStatement; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import com.sixrr.inspectjs.utils.ControlFlowUtils; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; @@ -14,38 +14,37 @@ @ExtensionImpl public class ContinueOrBreakFromFinallyBlockJSInspection extends JavaScriptInspection { - @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("continue.or.break.inside.finally.block.display.name"); + return InspectionJSLocalize.continueOrBreakInsideFinallyBlockDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.ERRORHANDLING_GROUP_NAME; } @Override - public boolean isEnabledByDefault() { + public boolean isEnabledByDefault() { return true; } @RequiredReadAction - @Override - public String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("continue.or.break.inside.finally.block.error.string"); + @Override + public String buildErrorString(Object state, Object... args) { + return InspectionJSLocalize.continueOrBreakInsideFinallyBlockErrorString().get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new Visitor(); } private static class Visitor extends BaseInspectionVisitor { - - @Override public void visitJSContinueStatement(@Nonnull JSContinueStatement statement) { + @Override + public void visitJSContinueStatement(@Nonnull JSContinueStatement statement) { super.visitJSContinueStatement(statement); if (!ControlFlowUtils.isInFinallyBlock(statement)) { return; @@ -60,7 +59,8 @@ private static class Visitor extends BaseInspectionVisitor { registerStatementError(statement); } - @Override public void visitJSBreakStatement(@Nonnull JSBreakStatement statement) { + @Override + public void visitJSBreakStatement(@Nonnull JSBreakStatement statement) { super.visitJSBreakStatement(statement); if (!ControlFlowUtils.isInFinallyBlock(statement)) { return; diff --git a/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyCatchBlockJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyCatchBlockJSInspection.java index 347de179..cf575d27 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyCatchBlockJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyCatchBlockJSInspection.java @@ -4,9 +4,9 @@ import com.intellij.lang.javascript.psi.JSStatement; import com.intellij.lang.javascript.psi.JSTryStatement; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import com.sixrr.inspectjs.utils.StatementUtils; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; @@ -16,33 +16,32 @@ @ExtensionImpl public class EmptyCatchBlockJSInspection extends JavaScriptInspection { - @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("empty.catch.block.display.name"); + return InspectionJSLocalize.emptyCatchBlockDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.ERRORHANDLING_GROUP_NAME; } @RequiredReadAction - @Override - @Nullable + @Override + @Nullable protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("empty.catch.block.error.string"); + return InspectionJSLocalize.emptyCatchBlockErrorString().get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new Visitor(); } - private static class Visitor extends BaseInspectionVisitor { - @Override public void visitJSTryStatement(JSTryStatement jsTryStatement) { + @Override + public void visitJSTryStatement(JSTryStatement jsTryStatement) { super.visitJSTryStatement(jsTryStatement); final JSCatchBlock catchBlock = jsTryStatement.getCatchBlock(); if (catchBlock == null) { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyFinallyBlockJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyFinallyBlockJSInspection.java index 7888493e..593bacb1 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyFinallyBlockJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyFinallyBlockJSInspection.java @@ -3,45 +3,44 @@ import com.intellij.lang.javascript.psi.JSStatement; import com.intellij.lang.javascript.psi.JSTryStatement; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import com.sixrr.inspectjs.utils.StatementUtils; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; - import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class EmptyFinallyBlockJSInspection extends JavaScriptInspection { - @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("empty.finally.block.display.name"); + return InspectionJSLocalize.emptyFinallyBlockDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.ERRORHANDLING_GROUP_NAME; } @RequiredReadAction - @Override - @Nullable + @Override + @Nullable protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("empty.finally.block.error.string"); + return InspectionJSLocalize.emptyFinallyBlockErrorString().get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new Visitor(); } private static class Visitor extends BaseInspectionVisitor { - @Override public void visitJSTryStatement(JSTryStatement jsTryStatement) { + @Override + public void visitJSTryStatement(JSTryStatement jsTryStatement) { super.visitJSTryStatement(jsTryStatement); final JSStatement finallyStatement = jsTryStatement.getFinallyStatement(); if (finallyStatement == null) { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyTryBlockJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyTryBlockJSInspection.java index 397dc04b..2855d572 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyTryBlockJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyTryBlockJSInspection.java @@ -3,45 +3,44 @@ import com.intellij.lang.javascript.psi.JSStatement; import com.intellij.lang.javascript.psi.JSTryStatement; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import com.sixrr.inspectjs.utils.StatementUtils; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; - import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class EmptyTryBlockJSInspection extends JavaScriptInspection { - @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("empty.try.block.display.name"); + return InspectionJSLocalize.emptyTryBlockDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.ERRORHANDLING_GROUP_NAME; } @RequiredReadAction - @Override - @Nullable + @Override + @Nullable protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("empty.try.block.error.string"); + return InspectionJSLocalize.emptyTryBlockErrorString().get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new Visitor(); } private static class Visitor extends BaseInspectionVisitor { - @Override public void visitJSTryStatement(JSTryStatement jsTryStatement) { + @Override + public void visitJSTryStatement(JSTryStatement jsTryStatement) { super.visitJSTryStatement(jsTryStatement); final JSStatement statement = jsTryStatement.getStatement(); if (statement == null) { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/exception/ExceptionCaughtLocallyJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/exception/ExceptionCaughtLocallyJSInspection.java index 047368e9..8faa83a5 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/exception/ExceptionCaughtLocallyJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/exception/ExceptionCaughtLocallyJSInspection.java @@ -8,6 +8,7 @@ import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.util.PsiTreeUtil; @@ -16,38 +17,37 @@ @ExtensionImpl public class ExceptionCaughtLocallyJSInspection extends JavaScriptInspection { - @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("exception.used.for.local.control.flow.display.name"); + return InspectionJSLocalize.exceptionUsedForLocalControlFlowDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.ERRORHANDLING_GROUP_NAME; } @Override - public boolean isEnabledByDefault() { + public boolean isEnabledByDefault() { return true; } @RequiredReadAction - @Override - public String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("exception.caught.locally.error.string"); + @Override + public String buildErrorString(Object state, Object... args) { + return InspectionJSLocalize.exceptionCaughtLocallyErrorString().get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new Visitor(); } private static class Visitor extends BaseInspectionVisitor { - - @Override public void visitJSThrowStatement(@Nonnull JSThrowStatement statement) { + @Override + public void visitJSThrowStatement(@Nonnull JSThrowStatement statement) { super.visitJSThrowStatement(statement); if (!isCaughtLocally(statement)) { return; diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/CyclomaticComplexityJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/CyclomaticComplexityJSInspection.java index 9970d2c7..d8b043f1 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/CyclomaticComplexityJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/CyclomaticComplexityJSInspection.java @@ -3,14 +3,13 @@ import com.intellij.lang.javascript.psi.JSBlockStatement; import com.intellij.lang.javascript.psi.JSFunction; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.inspection.InspectionToolState; import consulo.language.psi.PsiElement; - import jakarta.annotation.Nonnull; @ExtensionImpl @@ -27,7 +26,7 @@ public String getID() @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("overly.complex.function.display.name"); + return InspectionJSLocalize.overlyComplexFunctionDisplayName().get(); } @Override @@ -57,11 +56,11 @@ public String buildErrorString(Object state, Object... args) final int coupling = visitor.getComplexity(); if(functionHasIdentifier(function)) { - return InspectionJSBundle.message("function.ref.is.overly.complex.cyclomatic.complexity.error.string", coupling); + return InspectionJSLocalize.functionRefIsOverlyComplexCyclomaticComplexityErrorString(coupling).get(); } else { - return InspectionJSBundle.message("anonymous.function.is.overly.complex.cyclomatic.complexity.error.string", coupling); + return InspectionJSLocalize.anonymousFunctionIsOverlyComplexCyclomaticComplexityErrorString(coupling).get(); } } @@ -94,4 +93,3 @@ public void visitJSFunctionDeclaration(@Nonnull JSFunction function) } } } - diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleLoopsJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleLoopsJSInspection.java index a36c2d9c..51821b91 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleLoopsJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleLoopsJSInspection.java @@ -2,33 +2,32 @@ import com.intellij.lang.javascript.psi.JSBlockStatement; import com.intellij.lang.javascript.psi.JSFunction; -import consulo.annotation.access.RequiredReadAction; -import consulo.annotation.component.ExtensionImpl; -import consulo.language.psi.PsiElement; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; +import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.component.ExtensionImpl; +import consulo.language.psi.PsiElement; import jakarta.annotation.Nonnull; @ExtensionImpl public class FunctionWithMultipleLoopsJSInspection extends JavaScriptInspection { - @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("function.with.multiple.loops.display.name"); + return InspectionJSLocalize.functionWithMultipleLoopsDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.FUNCTIONMETRICS_GROUP_NAME; } @RequiredReadAction - @Override - public String buildErrorString(Object state, Object... args) { + @Override + public String buildErrorString(Object state, Object... args) { final JSFunction function = (JSFunction) ((PsiElement) args[0]).getParent(); assert function != null; final LoopCountVisitor visitor = new LoopCountVisitor(); @@ -37,10 +36,10 @@ public String buildErrorString(Object state, Object... args) { lastChild.accept(visitor); final int loopCount = visitor.getCount(); if (functionHasIdentifier(function)) { - return InspectionJSBundle.message("function.contains.multiple.loops.error.string", loopCount); + return InspectionJSLocalize.functionContainsMultipleLoopsErrorString(loopCount).get(); } else { - return InspectionJSBundle.message("anonymous.function.contains.multiple.loops.error.string", loopCount); + return InspectionJSLocalize.anonymousFunctionContainsMultipleLoopsErrorString(loopCount).get(); } } @@ -48,10 +47,9 @@ public String buildErrorString(Object state, Object... args) { public BaseInspectionVisitor buildVisitor() { return new Visitor(); } - private static class Visitor extends BaseInspectionVisitor { - - @Override public void visitJSFunctionDeclaration(@Nonnull JSFunction function) { + @Override + public void visitJSFunctionDeclaration(@Nonnull JSFunction function) { // note: no call to super final PsiElement lastChild = function.getLastChild(); if (!(lastChild instanceof JSBlockStatement)) { @@ -67,4 +65,3 @@ private static class Visitor extends BaseInspectionVisitor { } } } - diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleReturnPointsJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleReturnPointsJSInspection.java index c517eadd..a04d5687 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleReturnPointsJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleReturnPointsJSInspection.java @@ -1,12 +1,15 @@ package com.sixrr.inspectjs.functionmetrics; import com.intellij.lang.javascript.psi.*; -import com.sixrr.inspectjs.*; +import com.sixrr.inspectjs.BaseInspectionVisitor; +import com.sixrr.inspectjs.JSGroupNames; +import com.sixrr.inspectjs.JSRecursiveElementVisitor; +import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import com.sixrr.inspectjs.utils.ControlFlowUtils; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; - import jakarta.annotation.Nonnull; @ExtensionImpl @@ -22,7 +25,7 @@ public boolean isEnabledByDefault() @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("function.with.multiple.return.points.display.name"); + return InspectionJSLocalize.functionWithMultipleReturnPointsDisplayName().get(); } @Override @@ -41,11 +44,11 @@ public String buildErrorString(Object state, Object... args) final int returnPointCount = countReturnPoints(function); if(functionHasIdentifier(function)) { - return InspectionJSBundle.message("function.contains.multiple.return.points.error.string", returnPointCount); + return InspectionJSLocalize.functionContainsMultipleReturnPointsErrorString(returnPointCount).get(); } else { - return InspectionJSBundle.message("anonymous.function.contains.multiple.return.points.error.string", returnPointCount); + return InspectionJSLocalize.anonymousFunctionContainsMultipleReturnPointsErrorString(returnPointCount).get(); } } @@ -129,4 +132,3 @@ public int getReturnCount() } } } - diff --git a/inspections/src/main/java/com/sixrr/inspectjs/naming/FunctionNamingConventionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/naming/FunctionNamingConventionJSInspection.java index aa335ab6..70516e96 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/naming/FunctionNamingConventionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/naming/FunctionNamingConventionJSInspection.java @@ -2,16 +2,15 @@ import com.intellij.lang.javascript.psi.JSFunction; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.InspectionJSFix; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.fix.RenameFix; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.inspection.InspectionToolState; import consulo.language.psi.PsiElement; import consulo.language.psi.util.PsiTreeUtil; - import jakarta.annotation.Nonnull; @ExtensionImpl @@ -36,7 +35,7 @@ public InspectionToolState createStateProvider() @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("function.naming.convention.display.name"); + return InspectionJSLocalize.functionNamingConventionDisplayName().get(); } @Override @@ -68,13 +67,13 @@ public String buildErrorString(Object state, Object... args) assert functionName != null; if(functionName.length() < inspectionState.m_minLength) { - return InspectionJSBundle.message("function.name.is.too.short.error.string", functionName); + return InspectionJSLocalize.functionNameIsTooShortErrorString(functionName).get(); } else if(functionName.length() > inspectionState.m_maxLength) { - return InspectionJSBundle.message("function.name.is.too.long.error.string", functionName); + return InspectionJSLocalize.functionNameIsTooLongErrorString(functionName).get(); } - return InspectionJSBundle.message("function.name.doesnt.match.regex.error.string", functionName, inspectionState.m_regex); + return InspectionJSLocalize.functionNameDoesntMatchRegexErrorString(functionName, inspectionState.m_regex).get(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/style/ChainedEqualityJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/style/ChainedEqualityJSInspection.java index e21137a3..376cc56d 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/style/ChainedEqualityJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/style/ChainedEqualityJSInspection.java @@ -4,52 +4,48 @@ import com.intellij.lang.javascript.psi.JSBinaryExpression; import com.intellij.lang.javascript.psi.JSExpression; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; - import jakarta.annotation.Nonnull; @ExtensionImpl public class ChainedEqualityJSInspection extends JavaScriptInspection { - @Override - @Nonnull public String getID() { return "ChainedEqualityComparisonsJS"; } @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("chained.equality.display.name"); + return InspectionJSLocalize.chainedEqualityDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.STYLE_GROUP_NAME; } @RequiredReadAction - @Override - @Nonnull + @Override + @Nonnull public String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("chained.equality.error.string"); + return InspectionJSLocalize.chainedEqualityErrorString().get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new ChainedEqualityVisitor(); } private static class ChainedEqualityVisitor extends BaseInspectionVisitor { - - @Override public void visitJSBinaryExpression( - @Nonnull JSBinaryExpression expression) { + @Override + public void visitJSBinaryExpression(@Nonnull JSBinaryExpression expression) { super.visitJSBinaryExpression(expression); if (!(expression.getROperand() != null)) { return; @@ -67,11 +63,9 @@ private static class ChainedEqualityVisitor extends BaseInspectionVisitor { registerError(expression); } - private static boolean isEqualityComparison( - @Nonnull JSBinaryExpression expression) { + private static boolean isEqualityComparison(@Nonnull JSBinaryExpression expression) { final IElementType tokenType = expression.getOperationSign(); - return JSTokenTypes.EQEQ.equals(tokenType) || - JSTokenTypes.NE.equals(tokenType); + return JSTokenTypes.EQEQ.equals(tokenType) || JSTokenTypes.NE.equals(tokenType); } } } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/style/ChainedFunctionCallJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/style/ChainedFunctionCallJSInspection.java index 7c0bbfdf..677f419f 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/style/ChainedFunctionCallJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/style/ChainedFunctionCallJSInspection.java @@ -5,9 +5,9 @@ import com.intellij.lang.javascript.psi.JSParenthesizedExpression; import com.intellij.lang.javascript.psi.JSReferenceExpression; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import jakarta.annotation.Nonnull; @@ -32,8 +32,7 @@ public String getGroupDisplayName() @Nonnull public String getDisplayName() { - return InspectionJSBundle.message( - "chained.function.call.display.name"); + return InspectionJSLocalize.chainedFunctionCallDisplayName().get(); } @RequiredReadAction @@ -41,8 +40,7 @@ public String getDisplayName() @Nonnull protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message( - "chained.function.call.problem.descriptor"); + return InspectionJSLocalize.chainedFunctionCallProblemDescriptor().get(); } @Override @@ -51,17 +49,13 @@ public BaseInspectionVisitor buildVisitor() return new NestedMethodCallVisitor(); } - private static class NestedMethodCallVisitor extends BaseInspectionVisitor { - @Override - public void visitJSCallExpression( - @Nonnull JSCallExpression expression) + public void visitJSCallExpression(@Nonnull JSCallExpression expression) { super.visitJSCallExpression(expression); - final JSExpression reference = - expression.getMethodExpression(); + final JSExpression reference = expression.getMethodExpression(); if(!(reference instanceof JSReferenceExpression)) { return; @@ -87,10 +81,8 @@ private static boolean isCallExpression(JSExpression expression) } if(expression instanceof JSParenthesizedExpression) { - final JSParenthesizedExpression parenthesizedExpression = - (JSParenthesizedExpression) expression; - final JSExpression containedExpression = - parenthesizedExpression.getInnerExpression(); + final JSParenthesizedExpression parenthesizedExpression = (JSParenthesizedExpression) expression; + final JSExpression containedExpression = parenthesizedExpression.getInnerExpression(); return isCallExpression(containedExpression); } return false; diff --git a/inspections/src/main/java/com/sixrr/inspectjs/style/ConstantOnLHSOfComparisonJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/style/ConstantOnLHSOfComparisonJSInspection.java index 26ae5232..fcaa58f8 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/style/ConstantOnLHSOfComparisonJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/style/ConstantOnLHSOfComparisonJSInspection.java @@ -4,6 +4,7 @@ import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.lang.javascript.psi.JSLiteralExpression; import com.sixrr.inspectjs.*; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import com.sixrr.inspectjs.utils.ComparisonUtils; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; @@ -20,49 +21,48 @@ public class ConstantOnLHSOfComparisonJSInspection extends JavaScriptInspection private final SwapComparisonFix fix = new SwapComparisonFix(); @Override - @Nonnull + @Nonnull public String getID() { return "ConstantOnLefSideOfComparisonJS"; } @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("constant.on.left.side.of.comparison.display.name"); + return InspectionJSLocalize.constantOnLeftSideOfComparisonDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.STYLE_GROUP_NAME; } @RequiredReadAction - @Override - public String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("constant.on.left.side.of.comparison.error.string"); + @Override + public String buildErrorString(Object state, Object... args) { + return InspectionJSLocalize.constantOnLeftSideOfComparisonErrorString().get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new ConstantOnRHSOfComparisonVisitor(); } @Override - public InspectionJSFix buildFix(PsiElement location, Object state) { + public InspectionJSFix buildFix(PsiElement location, Object state) { return fix; } private static class SwapComparisonFix extends InspectionJSFix { @Override - @Nonnull + @Nonnull public String getName() { - return InspectionJSBundle.message("flip.comparison.fix"); + return InspectionJSLocalize.flipComparisonFix().get(); } @Override - public void doFix(Project project, ProblemDescriptor descriptor) - throws IncorrectOperationException { + public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { final JSBinaryExpression expression = (JSBinaryExpression) descriptor.getPsiElement(); final JSExpression rhs = expression.getROperand(); final JSExpression lhs = expression.getLOperand(); @@ -71,13 +71,11 @@ public void doFix(Project project, ProblemDescriptor descriptor) final String rhsText = rhs.getText(); final String flippedComparison = ComparisonUtils.getFlippedComparison(sign); final String lhsText = lhs.getText(); - replaceExpression(expression, - rhsText + ' ' + flippedComparison + ' ' + lhsText); + replaceExpression(expression, rhsText + ' ' + flippedComparison + ' ' + lhsText); } } private static class ConstantOnRHSOfComparisonVisitor extends BaseInspectionVisitor { - @Override public void visitJSBinaryExpression(@Nonnull JSBinaryExpression expression) { super.visitJSBinaryExpression(expression); if (!(expression.getROperand() != null)) { @@ -88,8 +86,7 @@ private static class ConstantOnRHSOfComparisonVisitor extends BaseInspectionVisi } final JSExpression lhs = expression.getLOperand(); final JSExpression rhs = expression.getROperand(); - if (!(lhs instanceof JSLiteralExpression) || - rhs instanceof JSLiteralExpression) { + if (!(lhs instanceof JSLiteralExpression) || rhs instanceof JSLiteralExpression) { return; } registerError(expression); diff --git a/inspections/src/main/java/com/sixrr/inspectjs/style/ConstantOnRHSOfComparisonJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/style/ConstantOnRHSOfComparisonJSInspection.java index 6018ff78..43ca4ecf 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/style/ConstantOnRHSOfComparisonJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/style/ConstantOnRHSOfComparisonJSInspection.java @@ -3,7 +3,11 @@ import com.intellij.lang.javascript.psi.JSBinaryExpression; import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.lang.javascript.psi.JSLiteralExpression; -import com.sixrr.inspectjs.*; +import com.sixrr.inspectjs.BaseInspectionVisitor; +import com.sixrr.inspectjs.InspectionJSFix; +import com.sixrr.inspectjs.JSGroupNames; +import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import com.sixrr.inspectjs.utils.ComparisonUtils; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; @@ -12,7 +16,6 @@ import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; import consulo.project.Project; - import jakarta.annotation.Nonnull; @ExtensionImpl @@ -20,49 +23,48 @@ public class ConstantOnRHSOfComparisonJSInspection extends JavaScriptInspection private final SwapComparisonFix fix = new SwapComparisonFix(); @Override - @Nonnull + @Nonnull public String getID() { return "ConstantOnRightSideOfComparisonJS"; } @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("constant.on.right.side.of.comparison.display.name"); + return InspectionJSLocalize.constantOnRightSideOfComparisonDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.STYLE_GROUP_NAME; } @RequiredReadAction - @Override - public String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("constant.on.right.side.of.comparison.error.string"); + @Override + public String buildErrorString(Object state, Object... args) { + return InspectionJSLocalize.constantOnRightSideOfComparisonErrorString().get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new ConstantOnRHSOfComparisonVisitor(); } @Override - public InspectionJSFix buildFix(PsiElement location, Object state) { + public InspectionJSFix buildFix(PsiElement location, Object state) { return fix; } private static class SwapComparisonFix extends InspectionJSFix { @Override - @Nonnull + @Nonnull public String getName() { - return InspectionJSBundle.message("flip.comparison.fix"); + return InspectionJSLocalize.flipComparisonFix().get(); } @Override - public void doFix(Project project, ProblemDescriptor descriptor) - throws IncorrectOperationException { + public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { final JSBinaryExpression expression = (JSBinaryExpression) descriptor.getPsiElement(); final JSExpression rhs = expression.getROperand(); final JSExpression lhs = expression.getLOperand(); @@ -71,14 +73,13 @@ public void doFix(Project project, ProblemDescriptor descriptor) final String rhsText = rhs.getText(); final String flippedComparison = ComparisonUtils.getFlippedComparison(sign); final String lhsText = lhs.getText(); - replaceExpression(expression, - rhsText + ' ' + flippedComparison + ' ' + lhsText); + replaceExpression(expression, rhsText + ' ' + flippedComparison + ' ' + lhsText); } } private static class ConstantOnRHSOfComparisonVisitor extends BaseInspectionVisitor { - - @Override public void visitJSBinaryExpression(@Nonnull JSBinaryExpression expression) { + @Override + public void visitJSBinaryExpression(@Nonnull JSBinaryExpression expression) { super.visitJSBinaryExpression(expression); if (!(expression.getROperand() != null)) { return; diff --git a/inspections/src/main/java/com/sixrr/inspectjs/validity/BadExpressionStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/validity/BadExpressionStatementJSInspection.java index faaaf425..2564d85a 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/validity/BadExpressionStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/validity/BadExpressionStatementJSInspection.java @@ -1,20 +1,20 @@ package com.sixrr.inspectjs.validity; -import consulo.annotation.component.ExtensionImpl; -import consulo.language.ast.ASTNode; import com.intellij.lang.javascript.JSTokenTypes; import com.intellij.lang.javascript.psi.*; -import consulo.language.psi.PsiFile; -import consulo.language.psi.ResolveResult; -import consulo.language.ast.IElementType; -import consulo.language.psi.util.PsiTreeUtil; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.component.ExtensionImpl; import consulo.javascript.ecmascript.psi.ES6ExportDefaultAssignment; +import consulo.language.ast.ASTNode; +import consulo.language.ast.IElementType; import consulo.language.psi.PsiElement; +import consulo.language.psi.PsiFile; +import consulo.language.psi.ResolveResult; +import consulo.language.psi.util.PsiTreeUtil; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; import org.jetbrains.annotations.NonNls; @@ -27,7 +27,7 @@ public class BadExpressionStatementJSInspection extends JavaScriptInspection @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("expression.statement.which.is.not.assignment.or.call.display.name"); + return InspectionJSLocalize.expressionStatementWhichIsNotAssignmentOrCallDisplayName().get(); } @Override @@ -48,7 +48,7 @@ public boolean isEnabledByDefault() @Nullable protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("expression.statement.is.not.assignment.or.call.error.string"); + return InspectionJSLocalize.expressionStatementIsNotAssignmentOrCallErrorString().get(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/validity/DebuggerStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/validity/DebuggerStatementJSInspection.java index e3f56ac5..bfceb191 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/validity/DebuggerStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/validity/DebuggerStatementJSInspection.java @@ -4,51 +4,49 @@ import com.intellij.lang.javascript.psi.JSExpressionStatement; import com.intellij.lang.javascript.psi.JSReferenceExpression; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import jakarta.annotation.Nonnull; -import org.jetbrains.annotations.NonNls; - import jakarta.annotation.Nullable; +import org.jetbrains.annotations.NonNls; @ExtensionImpl public class DebuggerStatementJSInspection extends JavaScriptInspection { - @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("debugger.statement.display.name"); + return InspectionJSLocalize.debuggerStatementDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.VALIDITY_GROUP_NAME; } @Override - public boolean isEnabledByDefault() { + public boolean isEnabledByDefault() { return false; } @RequiredReadAction - @Override - @Nullable + @Override + @Nullable protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("debugger.statement.error.string"); + return InspectionJSLocalize.debuggerStatementErrorString().get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new Visitor(); } private static class Visitor extends BaseInspectionVisitor { - - @Override public void visitJSExpressionStatement(JSExpressionStatement jsExpressionStatement) { + @Override + public void visitJSExpressionStatement(JSExpressionStatement jsExpressionStatement) { super.visitJSExpressionStatement(jsExpressionStatement); final JSExpression expression = jsExpressionStatement.getExpression(); diff --git a/inspections/src/main/java/com/sixrr/inspectjs/validity/DuplicateCaseLabelJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/validity/DuplicateCaseLabelJSInspection.java index fba8afb0..32b7b889 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/validity/DuplicateCaseLabelJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/validity/DuplicateCaseLabelJSInspection.java @@ -4,13 +4,12 @@ import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.lang.javascript.psi.JSSwitchStatement; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import com.sixrr.inspectjs.utils.EquivalenceChecker; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; - import jakarta.annotation.Nonnull; import java.util.Arrays; @@ -20,40 +19,39 @@ @ExtensionImpl public class DuplicateCaseLabelJSInspection extends JavaScriptInspection { @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("duplicate.case.label.display.name"); + return InspectionJSLocalize.duplicateCaseLabelDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.VALIDITY_GROUP_NAME; } @RequiredReadAction - @Override - public String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("duplicate.case.label.error.string"); + @Override + public String buildErrorString(Object state, Object... args) { + return InspectionJSLocalize.duplicateCaseLabelErrorString().get(); } @Override - public boolean isEnabledByDefault() { + public boolean isEnabledByDefault() { return true; } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new Visitor(); } - private static class Visitor - extends BaseInspectionVisitor { - - @Override public void visitJSSwitchStatement(@Nonnull JSSwitchStatement statement) { + private static class Visitor extends BaseInspectionVisitor { + @Override + public void visitJSSwitchStatement(@Nonnull JSSwitchStatement statement) { super.visitJSSwitchStatement(statement); - final Set conditions = new HashSet(); + final Set conditions = new HashSet<>(); collectCaseLabels(statement, conditions); final int numConditions = conditions.size(); if (numConditions < 2) { @@ -102,8 +100,7 @@ private static class Visitor } } - private static void collectCaseLabels(JSSwitchStatement statement, - Set conditions) { + private static void collectCaseLabels(JSSwitchStatement statement, Set conditions) { final JSCaseClause[] clauses = statement.getCaseClauses(); for (JSCaseClause clause : clauses) { if (!clause.isDefault()) { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/validity/DuplicatePropertyOnObjectJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/validity/DuplicatePropertyOnObjectJSInspection.java index 785d884c..feb3a510 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/validity/DuplicatePropertyOnObjectJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/validity/DuplicatePropertyOnObjectJSInspection.java @@ -3,12 +3,11 @@ import com.intellij.lang.javascript.psi.JSObjectLiteralExpression; import com.intellij.lang.javascript.psi.JSProperty; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; - import jakarta.annotation.Nonnull; import java.util.Arrays; @@ -16,37 +15,36 @@ @ExtensionImpl public class DuplicatePropertyOnObjectJSInspection extends JavaScriptInspection { @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("duplicate.property.on.object.literal.display.name"); + return InspectionJSLocalize.duplicatePropertyOnObjectLiteralDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.VALIDITY_GROUP_NAME; } @RequiredReadAction - @Override - public String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("duplicate.object.property.error.string"); + @Override + public String buildErrorString(Object state, Object... args) { + return InspectionJSLocalize.duplicateObjectPropertyErrorString().get(); } @Override - public boolean isEnabledByDefault() { + public boolean isEnabledByDefault() { return true; } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new Visitor(); } - private static class Visitor - extends BaseInspectionVisitor { - - @Override public void visitJSObjectLiteralExpression(JSObjectLiteralExpression jsObjectLiteralExpression) { + private static class Visitor extends BaseInspectionVisitor { + @Override + public void visitJSObjectLiteralExpression(JSObjectLiteralExpression jsObjectLiteralExpression) { super.visitJSObjectLiteralExpression(jsObjectLiteralExpression); final JSProperty[] properties = jsObjectLiteralExpression.getProperties(); final boolean[] matched = new boolean[properties.length]; @@ -75,8 +73,6 @@ private static class Visitor } } } - } - } } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/validity/FunctionWithInconsistentReturnsJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/validity/FunctionWithInconsistentReturnsJSInspection.java index 67d5a840..a36d628c 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/validity/FunctionWithInconsistentReturnsJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/validity/FunctionWithInconsistentReturnsJSInspection.java @@ -2,14 +2,17 @@ import com.intellij.lang.javascript.JavaScriptSupportLoader; import com.intellij.lang.javascript.psi.*; +import com.sixrr.inspectjs.BaseInspectionVisitor; +import com.sixrr.inspectjs.JSGroupNames; +import com.sixrr.inspectjs.JSRecursiveElementVisitor; +import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; +import com.sixrr.inspectjs.utils.ControlFlowUtils; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.language.editor.inspection.ProblemHighlightType; import consulo.language.psi.PsiElement; import consulo.language.psi.util.PsiTreeUtil; -import com.sixrr.inspectjs.*; -import com.sixrr.inspectjs.utils.ControlFlowUtils; -import consulo.language.editor.inspection.ProblemHighlightType; - import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @@ -21,7 +24,7 @@ public class FunctionWithInconsistentReturnsJSInspection extends JavaScriptInspe @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("function.with.inconsistent.returns.display.name"); + return InspectionJSLocalize.functionWithInconsistentReturnsDisplayName().get(); } @Override @@ -46,11 +49,11 @@ protected String buildErrorString(Object state, Object... args) assert function != null; if(functionHasIdentifier(function)) { - return InspectionJSBundle.message("function.has.inconsistent.return.points.error.string"); + return InspectionJSLocalize.functionHasInconsistentReturnPointsErrorString().get(); } else { - return InspectionJSBundle.message("anonymous.function.has.inconsistent.return.points.error.string"); + return InspectionJSLocalize.anonymousFunctionHasInconsistentReturnPointsErrorString().get(); } } From ed04f65124df7c6bc968cc9a52c9633027b1c322 Mon Sep 17 00:00:00 2001 From: UNV Date: Sun, 14 Jul 2024 17:00:49 +0300 Subject: [PATCH 029/150] Replacing Bundle with Localize (part 2). Making same indents within file. --- .../documentation/JSDocumentationBuilder.java | 9 +- .../javascript/lang/parsing/Parsing.java | 20 +- .../NestedAssignmentJSInspection.java | 28 +-- ...entWithOperatorAssignmentJSInspection.java | 68 +++--- .../SillyAssignmentJSInspection.java | 31 +-- ...ointlessBitwiseExpressionJSInspection.java | 27 +-- .../bitwise/ShiftOutOfRangeJSInspection.java | 42 ++-- .../bugs/InfiniteLoopJSInspection.java | 44 ++-- .../bugs/InfiniteRecursionJSInspection.java | 34 ++- ...tCircuitBooleanExpressionJSInspection.java | 59 ++--- .../ObjectAllocationIgnoredJSInspection.java | 31 +-- ...extLabelInSwitchStatementJSInspection.java | 34 ++- .../confusing/MagicNumberJSInspection.java | 77 +++--- ...atedConditionalExpressionJSInspection.java | 50 ++-- .../NegatedIfStatementJSInspection.java | 50 ++-- ...stedConditionalExpressionJSInspection.java | 22 +- .../confusing/NestedFunctionJSInspection.java | 11 +- .../confusing/OctalIntegerJSInspection.java | 36 ++- ...mplexArithmeticExpressionJSInspection.java | 6 +- ...yComplexBooleanExpressionJSInspection.java | 7 +- ...tlessArithmeticExpressionJSInspection.java | 74 +++--- ...ointlessBooleanExpressionJSInspection.java | 148 +++++------- .../control/LabeledStatementJSInspection.java | 21 +- ...opStatementThatDoesntLoopJSInspection.java | 51 ++-- .../NestedSwitchStatementJSInspection.java | 25 +- ...tementWithNoDefaultBranchJSInspection.java | 21 +- .../control/TailRecursionJSInspection.java | 18 +- .../TrivialConditionalJSInspection.java | 46 ++-- .../control/TrivialIfJSInspection.java | 227 ++++++------------ .../UnnecessaryContinueJSInspection.java | 61 +++-- .../control/UnnecessaryLabelJSInspection.java | 63 +++-- .../ReuseOfLocalVariableJSInspection.java | 34 +-- .../inspectjs/dom/InnerHTMLJSInspection.java | 23 +- .../dom/PlatformDetectionJSInspection.java | 18 +- .../ReturnFromFinallyBlockJSInspection.java | 25 +- .../ThrowFromFinallyBlockJSInspection.java | 29 ++- .../com/sixrr/inspectjs/fix/RenameFix.java | 29 +-- .../NestingDepthJSInspection.java | 23 +- .../ParametersPerFunctionJSInspection.java | 18 +- .../StatementsPerFunctionJSInspection.java | 18 +- ...ThreeNegationsPerFunctionJSInspection.java | 30 +-- ...lVariableNamingConventionJSInspection.java | 22 +- ...ParameterNamingConventionJSInspection.java | 15 +- .../style/NestedFunctionCallJSInspection.java | 29 +-- .../NonBlockStatementBodyJSInspection.java | 67 +++--- .../inspectjs/ui/RegExInputVerifier.java | 18 +- .../StringLiteralBreaksHTMLJSInspection.java | 31 ++- ...ionReferencesGlobalObjectJSInspection.java | 30 +-- .../javascript/JSParameterInfoHandler.java | 6 +- .../refactoring/JSBaseIntroduceHandler.java | 28 ++- 50 files changed, 813 insertions(+), 1121 deletions(-) diff --git a/base-impl/src/main/java/com/intellij/javascript/documentation/JSDocumentationBuilder.java b/base-impl/src/main/java/com/intellij/javascript/documentation/JSDocumentationBuilder.java index 31d14df2..2c10d265 100644 --- a/base-impl/src/main/java/com/intellij/javascript/documentation/JSDocumentationBuilder.java +++ b/base-impl/src/main/java/com/intellij/javascript/documentation/JSDocumentationBuilder.java @@ -24,15 +24,14 @@ import com.intellij.lang.javascript.index.JSSymbolUtil; import com.intellij.lang.javascript.psi.*; -import consulo.language.editor.CodeInsightBundle; +import consulo.language.editor.localize.CodeInsightLocalize; import consulo.language.psi.PsiElement; import consulo.util.io.URLUtil; import consulo.util.lang.StringUtil; +import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; import org.jetbrains.annotations.NonNls; -import jakarta.annotation.Nonnull; - import java.util.LinkedHashMap; import java.util.Map; import java.util.regex.Matcher; @@ -519,7 +518,7 @@ String getDoc() if(methodInfo.parameterInfoMap.size() > 0) { result.append("
"); - result.append(CodeInsightBundle.message("javadoc.parameters")); + result.append(CodeInsightLocalize.javadocParameters().get()); result.append("
"); } @@ -540,7 +539,7 @@ String getDoc() if(methodInfo.returnInfo.description.length() > 0) { result.append("
"); - result.append(CodeInsightBundle.message("javadoc.returns")); + result.append(CodeInsightLocalize.javadocReturns().get()); result.append("
"); result.append("
"); diff --git a/base-impl/src/main/java/consulo/javascript/lang/parsing/Parsing.java b/base-impl/src/main/java/consulo/javascript/lang/parsing/Parsing.java index ea68756d..e20f1062 100644 --- a/base-impl/src/main/java/consulo/javascript/lang/parsing/Parsing.java +++ b/base-impl/src/main/java/consulo/javascript/lang/parsing/Parsing.java @@ -43,14 +43,14 @@ public Parsing(C context) public boolean isContextKeyword(@Nonnull PsiBuilder builder, @Nonnull IElementType elementType) { - if(builder.getTokenType() == JSTokenTypes.IDENTIFIER) + if (builder.getTokenType() == JSTokenTypes.IDENTIFIER) { IElementType contextKeywordElementType = JavaScriptContextKeywordElementType.getKeywordByText(builder.getTokenText()); - if(contextKeywordElementType == null) + if (contextKeywordElementType == null) { return false; } - if(elementType == contextKeywordElementType) + if (elementType == contextKeywordElementType) { return true; } @@ -61,14 +61,14 @@ public boolean isContextKeyword(@Nonnull PsiBuilder builder, @Nonnull IElementTy @Nullable public IElementType isContextKeyword(@Nonnull PsiBuilder builder, @Nonnull TokenSet tokenSet) { - if(builder.getTokenType() == JSTokenTypes.IDENTIFIER) + if (builder.getTokenType() == JSTokenTypes.IDENTIFIER) { IElementType contextKeywordElementType = JavaScriptContextKeywordElementType.getKeywordByText(builder.getTokenText()); - if(contextKeywordElementType == null) + if (contextKeywordElementType == null) { return null; } - if(tokenSet.contains(contextKeywordElementType)) + if (tokenSet.contains(contextKeywordElementType)) { return contextKeywordElementType; } @@ -92,11 +92,11 @@ public void advanceContextKeyword(@Nonnull PsiBuilder builder, @Nonnull IElement public void advanceContextKeyword(@Nonnull PsiBuilder builder, @Nonnull TokenSet tokenSet) { IElementType elementType = isContextKeyword(builder, tokenSet); - if(elementType != null) + if (elementType != null) { - if(builder instanceof JavaScriptStrictParserBuilder) + if (builder instanceof JavaScriptStrictParserBuilder strictParserBuilder) { - ((JavaScriptStrictParserBuilder) builder).disableNonStrictRemap(builder.getCurrentOffset()); + strictParserBuilder.disableNonStrictRemap(builder.getCurrentOffset()); } builder.remapCurrentToken(elementType); builder.advanceLexer(); @@ -127,7 +127,7 @@ public static void buildTokenElement(IElementType type, PsiBuilder builder) public static boolean checkMatches(final PsiBuilder builder, final IElementType token, final LocalizeValue message) { - if(builder.getTokenType() == token) + if (builder.getTokenType() == token) { builder.advanceLexer(); return true; diff --git a/inspections/src/main/java/com/sixrr/inspectjs/assignment/NestedAssignmentJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/assignment/NestedAssignmentJSInspection.java index 245f3938..dd12889d 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/assignment/NestedAssignmentJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/assignment/NestedAssignmentJSInspection.java @@ -2,52 +2,46 @@ import com.intellij.lang.javascript.psi.JSAssignmentExpression; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; - import jakarta.annotation.Nonnull; @ExtensionImpl public class NestedAssignmentJSInspection extends JavaScriptInspection { - @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("nested.assignment.display.name"); + return InspectionJSLocalize.nestedAssignmentDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.ASSIGNMENT_GROUP_NAME; } @RequiredReadAction - @Override - @Nonnull + @Override + @Nonnull public String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("nested.assignment.error.string"); + return InspectionJSLocalize.nestedAssignmentErrorString().get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new NestedAssignmentVisitor(); } private static class NestedAssignmentVisitor extends BaseInspectionVisitor { - - @Override public void visitJSAssignmentExpression( - @Nonnull JSAssignmentExpression expression) { + @Override + public void visitJSAssignmentExpression(@Nonnull JSAssignmentExpression expression) { super.visitJSAssignmentExpression(expression); final PsiElement parent = expression.getParent(); - if (parent == null) { - return; - } - if (!(parent instanceof JSAssignmentExpression )) { + if (parent == null || !(parent instanceof JSAssignmentExpression)) { return; } registerError(expression); diff --git a/inspections/src/main/java/com/sixrr/inspectjs/assignment/ReplaceAssignmentWithOperatorAssignmentJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/assignment/ReplaceAssignmentWithOperatorAssignmentJSInspection.java index 1c89b27d..55941976 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/assignment/ReplaceAssignmentWithOperatorAssignmentJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/assignment/ReplaceAssignmentWithOperatorAssignmentJSInspection.java @@ -5,7 +5,11 @@ import com.intellij.lang.javascript.psi.JSBinaryExpression; import com.intellij.lang.javascript.psi.JSDefinitionExpression; import com.intellij.lang.javascript.psi.JSExpression; -import com.sixrr.inspectjs.*; +import com.sixrr.inspectjs.BaseInspectionVisitor; +import com.sixrr.inspectjs.InspectionJSFix; +import com.sixrr.inspectjs.JSGroupNames; +import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import com.sixrr.inspectjs.utils.EquivalenceChecker; import com.sixrr.inspectjs.utils.SideEffectChecker; import consulo.annotation.access.RequiredReadAction; @@ -19,38 +23,34 @@ import org.jetbrains.annotations.NonNls; @ExtensionImpl -public class ReplaceAssignmentWithOperatorAssignmentJSInspection - extends JavaScriptInspection { +public class ReplaceAssignmentWithOperatorAssignmentJSInspection extends JavaScriptInspection { @Override - @Nonnull + @Nonnull public String getID() { return "AssignmentReplaceableWithOperatorAssignmentJS"; } @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("assignment.replaceable.with.operator.assignment.display.name"); + return InspectionJSLocalize.assignmentReplaceableWithOperatorAssignmentDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.ASSIGNMENT_GROUP_NAME; } @RequiredReadAction - @Override - public String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message( - "assignment.replaceable.with.operator.assignment.error.string", - calculateReplacementExpression((JSAssignmentExpression) args[0])); + @Override + public String buildErrorString(Object state, Object... args) { + String expression = calculateReplacementExpression((JSAssignmentExpression)args[0]); + return InspectionJSLocalize.assignmentReplaceableWithOperatorAssignmentErrorString(expression).get(); } - private static String calculateReplacementExpression( - JSAssignmentExpression expression) { - final JSBinaryExpression rhs = - (JSBinaryExpression) expression.getROperand(); + private static String calculateReplacementExpression(JSAssignmentExpression expression) { + final JSBinaryExpression rhs = (JSBinaryExpression) expression.getROperand(); final JSExpression lhs = expression.getLOperand(); assert rhs != null; final IElementType sign = rhs.getOperationSign(); @@ -61,52 +61,44 @@ private static String calculateReplacementExpression( } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new ReplaceAssignmentWithOperatorAssignmentVisitor(); } @Override - public InspectionJSFix buildFix(PsiElement location, Object state) { - return new ReplaceAssignmentWithOperatorAssignmentFix( - (JSAssignmentExpression) location); + public InspectionJSFix buildFix(PsiElement location, Object state) { + return new ReplaceAssignmentWithOperatorAssignmentFix((JSAssignmentExpression) location); } - private static class ReplaceAssignmentWithOperatorAssignmentFix - extends InspectionJSFix { + private static class ReplaceAssignmentWithOperatorAssignmentFix extends InspectionJSFix { private final String m_name; - private ReplaceAssignmentWithOperatorAssignmentFix( - JSAssignmentExpression expression) { + private ReplaceAssignmentWithOperatorAssignmentFix(JSAssignmentExpression expression) { super(); - final JSBinaryExpression rhs = - (JSBinaryExpression) expression.getROperand(); + final JSBinaryExpression rhs = (JSBinaryExpression) expression.getROperand(); assert rhs != null; final IElementType sign = rhs.getOperationSign(); String signText = getTextForOperator(sign); - m_name = InspectionJSBundle.message("replace.with.operator.assign.fix", signText); + m_name = InspectionJSLocalize.replaceWithOperatorAssignFix(signText).get(); } @Override - @Nonnull + @Nonnull public String getName() { return m_name; } @Override - public void doFix(Project project, ProblemDescriptor descriptor) - throws IncorrectOperationException { - final JSAssignmentExpression expression = - (JSAssignmentExpression) descriptor.getPsiElement(); - final String newExpression = - calculateReplacementExpression(expression); + public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { + final JSAssignmentExpression expression = (JSAssignmentExpression) descriptor.getPsiElement(); + final String newExpression = calculateReplacementExpression(expression); replaceExpression(expression, newExpression); } } - private static class ReplaceAssignmentWithOperatorAssignmentVisitor - extends BaseInspectionVisitor { - - @Override public void visitJSAssignmentExpression(@Nonnull JSAssignmentExpression assignment) { + private static class ReplaceAssignmentWithOperatorAssignmentVisitor extends BaseInspectionVisitor { + @Override + public void visitJSAssignmentExpression(@Nonnull JSAssignmentExpression assignment) { super.visitJSAssignmentExpression(assignment); final IElementType sign = assignment.getOperationSign(); diff --git a/inspections/src/main/java/com/sixrr/inspectjs/assignment/SillyAssignmentJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/assignment/SillyAssignmentJSInspection.java index 2cf5f9c2..cc18347b 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/assignment/SillyAssignmentJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/assignment/SillyAssignmentJSInspection.java @@ -6,54 +6,49 @@ import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.lang.javascript.psi.JSReferenceExpression; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import com.sixrr.inspectjs.utils.EquivalenceChecker; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; import consulo.language.psi.PsiElement; - import jakarta.annotation.Nonnull; @ExtensionImpl -public class SillyAssignmentJSInspection - extends JavaScriptInspection { - - +public class SillyAssignmentJSInspection extends JavaScriptInspection { @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("silly.assignment.display.name"); + return InspectionJSLocalize.sillyAssignmentDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.ASSIGNMENT_GROUP_NAME; } @RequiredReadAction - @Override - public String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("silly.assignment.error.string"); + @Override + public String buildErrorString(Object state, Object... args) { + return InspectionJSLocalize.sillyAssignmentErrorString().get(); } @Override - public boolean isEnabledByDefault() { + public boolean isEnabledByDefault() { return true; } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new Visitor(); } - private static class Visitor - extends BaseInspectionVisitor { - - @Override public void visitJSAssignmentExpression(@Nonnull JSAssignmentExpression assignment) { + private static class Visitor extends BaseInspectionVisitor { + @Override + public void visitJSAssignmentExpression(@Nonnull JSAssignmentExpression assignment) { super.visitJSAssignmentExpression(assignment); final IElementType sign = assignment.getOperationSign(); diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bitwise/PointlessBitwiseExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bitwise/PointlessBitwiseExpressionJSInspection.java index 006e9fd3..0d3528ee 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bitwise/PointlessBitwiseExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bitwise/PointlessBitwiseExpressionJSInspection.java @@ -4,7 +4,11 @@ import com.intellij.lang.javascript.psi.JSBinaryExpression; import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.lang.javascript.psi.JSLiteralExpression; -import com.sixrr.inspectjs.*; +import com.sixrr.inspectjs.BaseInspectionVisitor; +import com.sixrr.inspectjs.InspectionJSFix; +import com.sixrr.inspectjs.JSGroupNames; +import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import com.sixrr.inspectjs.utils.ExpressionUtil; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; @@ -14,15 +18,15 @@ import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; import consulo.project.Project; - import jakarta.annotation.Nonnull; + import java.util.HashSet; import java.util.Set; @ExtensionImpl public class PointlessBitwiseExpressionJSInspection extends JavaScriptInspection { - static final Set bitwiseTokens = new HashSet(6); + static final Set bitwiseTokens = new HashSet<>(6); static { @@ -38,8 +42,7 @@ public class PointlessBitwiseExpressionJSInspection extends JavaScriptInspection @Nonnull public String getDisplayName() { - return InspectionJSBundle.message( - "pointless.bitwise.expression.display.name"); + return InspectionJSLocalize.pointlessBitwiseExpressionDisplayName().get(); } @Override @@ -55,9 +58,7 @@ public String getGroupDisplayName() public String buildErrorString(Object state, Object... args) { final String replacementExpression = calculateReplacementExpression((JSExpression) args[0], (PointlessBitwiseExpressionJSInspectionState) state); - return InspectionJSBundle.message( - "pointless.bitwise.expression.problem.descriptor", - replacementExpression); + return InspectionJSLocalize.pointlessBitwiseExpressionProblemDescriptor(replacementExpression).get(); } @Override @@ -159,8 +160,7 @@ public PointlessBitwiseFix(Object state) @Nonnull public String getName() { - return InspectionJSBundle.message( - "pointless.bitwise.expression.simplify.quickfix"); + return InspectionJSLocalize.pointlessBitwiseExpressionSimplifyQuickfix().get(); } @Override @@ -264,12 +264,11 @@ private boolean isZero(JSExpression expression, PointlessBitwiseExpressionJSInsp private boolean isAllOnes(JSExpression expression, PointlessBitwiseExpressionJSInspectionState state) { - if(state.m_ignoreExpressionsContainingConstants && !(expression instanceof JSLiteralExpression)) + if (state.m_ignoreExpressionsContainingConstants && !(expression instanceof JSLiteralExpression)) { return false; } - final Object value = - ExpressionUtil.computeConstantExpression(expression); - return value != null && value instanceof Integer && (Integer) value == 0xffffffff; + final Object value = ExpressionUtil.computeConstantExpression(expression); + return value instanceof Integer intValue && intValue == 0xffffffff; } } \ No newline at end of file diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bitwise/ShiftOutOfRangeJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bitwise/ShiftOutOfRangeJSInspection.java index 4db0ba49..6dfba585 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bitwise/ShiftOutOfRangeJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bitwise/ShiftOutOfRangeJSInspection.java @@ -3,60 +3,53 @@ import com.intellij.lang.javascript.JSTokenTypes; import com.intellij.lang.javascript.psi.JSBinaryExpression; import com.intellij.lang.javascript.psi.JSExpression; -import consulo.annotation.access.RequiredReadAction; -import consulo.annotation.component.ExtensionImpl; -import consulo.language.ast.IElementType; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import com.sixrr.inspectjs.utils.ExpressionUtil; +import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.component.ExtensionImpl; +import consulo.language.ast.IElementType; import jakarta.annotation.Nonnull; @ExtensionImpl public class ShiftOutOfRangeJSInspection extends JavaScriptInspection { - @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message( - "shift.operation.by.inappropriate.constant.display.name"); + return InspectionJSLocalize.shiftOperationByInappropriateConstantDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.BITWISE_GROUP_NAME; } @RequiredReadAction - @Override - @Nonnull + @Override + @Nonnull public String buildErrorString(Object state, Object... args) { final Integer value = (Integer) args[0]; - if (value > 0) { - return InspectionJSBundle.message( - "shift.operation.by.inappropriate.constant.problem.descriptor.too.large"); - } else { - return InspectionJSBundle.message( - "shift.operation.by.inappropriate.constant.problem.descriptor.negative"); - } + return value > 0 + ? InspectionJSLocalize.shiftOperationByInappropriateConstantProblemDescriptorTooLarge().get() + : InspectionJSLocalize.shiftOperationByInappropriateConstantProblemDescriptorNegative().get(); } @Override - public boolean isEnabledByDefault() { + public boolean isEnabledByDefault() { return true; } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new ShiftOutOfRange(); } private static class ShiftOutOfRange extends BaseInspectionVisitor { - - @Override public void visitJSBinaryExpression( - @Nonnull JSBinaryExpression expression) { + @Override + public void visitJSBinaryExpression(@Nonnull JSBinaryExpression expression) { super.visitJSBinaryExpression(expression); final IElementType tokenType = expression.getOperationSign(); if (tokenType == null || @@ -72,8 +65,7 @@ private static class ShiftOutOfRange extends BaseInspectionVisitor { if (!ExpressionUtil.isConstantExpression(rhs)) { return; } - final Object valueObject = - ExpressionUtil.computeConstantExpression(rhs); + final Object valueObject = ExpressionUtil.computeConstantExpression(rhs); if (!(valueObject instanceof Integer)) { return; } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bugs/InfiniteLoopJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bugs/InfiniteLoopJSInspection.java index 6e933a9f..a71f50f4 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bugs/InfiniteLoopJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bugs/InfiniteLoopJSInspection.java @@ -4,50 +4,47 @@ import com.intellij.lang.javascript.psi.JSForStatement; import com.intellij.lang.javascript.psi.JSWhileStatement; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import com.sixrr.inspectjs.utils.ControlFlowUtils; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; - import jakarta.annotation.Nonnull; @ExtensionImpl public class InfiniteLoopJSInspection extends JavaScriptInspection { - @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("infinite.loop.statement.display.name"); + return InspectionJSLocalize.infiniteLoopStatementDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.BUGS_GROUP_NAME; } @Override - public boolean isEnabledByDefault() { + public boolean isEnabledByDefault() { return true; } @RequiredReadAction - @Override - public String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("infinite.loop.error.string"); + @Override + public String buildErrorString(Object state, Object... args) { + return InspectionJSLocalize.infiniteLoopErrorString().get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new Visitor(); } private static class Visitor extends BaseInspectionVisitor { - - - @Override public void visitJSForStatement(@Nonnull JSForStatement statement) { + @Override + public void visitJSForStatement(@Nonnull JSForStatement statement) { super.visitJSForStatement(statement); if (ControlFlowUtils.statementMayCompleteNormally(statement)) { return; @@ -58,24 +55,21 @@ private static class Visitor extends BaseInspectionVisitor { registerStatementError(statement); } - @Override public void visitJSWhileStatement(@Nonnull JSWhileStatement statement) { - + @Override + public void visitJSWhileStatement(@Nonnull JSWhileStatement statement) { super.visitJSWhileStatement(statement); - if (ControlFlowUtils.statementMayCompleteNormally(statement)) { - return; - } - if (ControlFlowUtils.statementContainsReturn(statement)) { + if (ControlFlowUtils.statementMayCompleteNormally(statement) + || ControlFlowUtils.statementContainsReturn(statement)) { return; } registerStatementError(statement); } - @Override public void visitJSDoWhileStatement(@Nonnull JSDoWhileStatement statement) { + @Override + public void visitJSDoWhileStatement(@Nonnull JSDoWhileStatement statement) { super.visitJSDoWhileStatement(statement); - if (ControlFlowUtils.statementMayCompleteNormally(statement)) { - return; - } - if (ControlFlowUtils.statementContainsReturn(statement)) { + if (ControlFlowUtils.statementMayCompleteNormally(statement) + || ControlFlowUtils.statementContainsReturn(statement)) { return; } registerStatementError(statement); diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bugs/InfiniteRecursionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bugs/InfiniteRecursionJSInspection.java index 6edd655f..f0537276 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bugs/InfiniteRecursionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bugs/InfiniteRecursionJSInspection.java @@ -2,13 +2,12 @@ import com.intellij.lang.javascript.psi.JSFunction; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.logging.Logger; - import jakarta.annotation.Nonnull; @ExtensionImpl @@ -16,46 +15,41 @@ public class InfiniteRecursionJSInspection extends JavaScriptInspection { private static Logger logger = Logger.getInstance("ULVJS"); @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message( - "infinite.recursion.display.name"); + return InspectionJSLocalize.infiniteRecursionDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.BUGS_GROUP_NAME; } @RequiredReadAction - @Override - @Nonnull + @Override + @Nonnull public String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message( - "infinite.recursion.problem.descriptor"); + return InspectionJSLocalize.infiniteRecursionProblemDescriptor().get(); } @Override - public boolean isEnabledByDefault() { + public boolean isEnabledByDefault() { return true; } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new InfiniteRecursionVisitor(); } - private static class InfiniteRecursionVisitor - extends BaseInspectionVisitor { - - @Override public void visitJSFunctionDeclaration(@Nonnull JSFunction function) { + private static class InfiniteRecursionVisitor extends BaseInspectionVisitor { + @Override + public void visitJSFunctionDeclaration(@Nonnull JSFunction function) { super.visitJSFunctionDeclaration(function); - if (!RecursionUtils.functionMayRecurse(function)) { - return; - } - if (!RecursionUtils.functionDefinitelyRecurses(function)) { + if (!RecursionUtils.functionMayRecurse(function) + || !RecursionUtils.functionDefinitelyRecurses(function)) { return; } registerFunctionError(function); diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bugs/NonShortCircuitBooleanExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bugs/NonShortCircuitBooleanExpressionJSInspection.java index 7ce96288..b159e8e3 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bugs/NonShortCircuitBooleanExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bugs/NonShortCircuitBooleanExpressionJSInspection.java @@ -3,7 +3,11 @@ import com.intellij.lang.javascript.JSTokenTypes; import com.intellij.lang.javascript.psi.JSBinaryExpression; import com.intellij.lang.javascript.psi.JSExpression; -import com.sixrr.inspectjs.*; +import com.sixrr.inspectjs.BaseInspectionVisitor; +import com.sixrr.inspectjs.InspectionJSFix; +import com.sixrr.inspectjs.JSGroupNames; +import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; @@ -11,87 +15,72 @@ import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; import consulo.project.Project; - import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class NonShortCircuitBooleanExpressionJSInspection extends JavaScriptInspection { - @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("non.short.circuit.boolean.expression.display.name"); + return InspectionJSLocalize.nonShortCircuitBooleanExpressionDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.BUGS_GROUP_NAME; } @RequiredReadAction - @Override - @Nullable + @Override + @Nullable protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("non.short.circuit.boolean.expression.error.string"); + return InspectionJSLocalize.nonShortCircuitBooleanExpressionErrorString().get(); } @Override - public InspectionJSFix buildFix(PsiElement location, Object state) { + public InspectionJSFix buildFix(PsiElement location, Object state) { return new NonShortCircuitBooleanFix(); } - private static class NonShortCircuitBooleanFix - extends InspectionJSFix { - + private static class NonShortCircuitBooleanFix extends InspectionJSFix { @Override - @Nonnull + @Nonnull public String getName() { - return InspectionJSBundle.message("replace.with.short.circuit.expression.fix.string"); + return InspectionJSLocalize.replaceWithShortCircuitExpressionFixString().get(); } @Override - public void doFix(Project project, ProblemDescriptor descriptor) - throws IncorrectOperationException { - final JSBinaryExpression expression = - (JSBinaryExpression) descriptor.getPsiElement(); + public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { + final JSBinaryExpression expression = (JSBinaryExpression) descriptor.getPsiElement(); final JSExpression lhs = expression.getLOperand(); final JSExpression rhs = expression.getROperand(); final IElementType operationSign = expression.getOperationSign(); assert rhs != null; - final String newExpression = lhs.getText() + - getShortCircuitOperand(operationSign) + rhs.getText(); + final String newExpression = lhs.getText() + getShortCircuitOperand(operationSign) + rhs.getText(); replaceExpression(expression, newExpression); } private static String getShortCircuitOperand(IElementType tokenType) { - if (JSTokenTypes.AND.equals(tokenType)) { - return "&&"; - } else { - return "||"; - } + return JSTokenTypes.AND.equals(tokenType) ? "&&" : "||"; } - } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new NonShortCircuitBooleanVisitor(); } - private static class NonShortCircuitBooleanVisitor - extends BaseInspectionVisitor { - - @Override public void visitJSBinaryExpression( - @Nonnull JSBinaryExpression expression) { + private static class NonShortCircuitBooleanVisitor extends BaseInspectionVisitor { + @Override + public void visitJSBinaryExpression(@Nonnull JSBinaryExpression expression) { super.visitJSBinaryExpression(expression); if (!(expression.getROperand() != null)) { return; } final IElementType sign = expression.getOperationSign(); - if (!JSTokenTypes.AND.equals(sign) && - !JSTokenTypes.OR.equals(sign)) { + if (!JSTokenTypes.AND.equals(sign) && !JSTokenTypes.OR.equals(sign)) { return; } registerError(expression); diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bugs/ObjectAllocationIgnoredJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bugs/ObjectAllocationIgnoredJSInspection.java index db19d923..d074ac92 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bugs/ObjectAllocationIgnoredJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bugs/ObjectAllocationIgnoredJSInspection.java @@ -4,59 +4,54 @@ import com.intellij.lang.javascript.psi.JSExpressionStatement; import com.intellij.lang.javascript.psi.JSNewExpression; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; - import jakarta.annotation.Nonnull; @ExtensionImpl public class ObjectAllocationIgnoredJSInspection extends JavaScriptInspection { - @Override - @Nonnull + @Nonnull public String getID() { return "ObjectAllocationIgnored"; } @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("result.of.object.allocation.ignored.display.name"); + return InspectionJSLocalize.resultOfObjectAllocationIgnoredDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.BUGS_GROUP_NAME; } @RequiredReadAction - @Override - @Nonnull + @Override + @Nonnull protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("result.of.object.allocation.ignored.error.string"); + return InspectionJSLocalize.resultOfObjectAllocationIgnoredErrorString().get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new ObjectAllocationIgnoredVisitor(); } private static class ObjectAllocationIgnoredVisitor extends BaseInspectionVisitor { - - @Override public void visitJSExpressionStatement( - @Nonnull JSExpressionStatement statement) { + @Override + public void visitJSExpressionStatement(@Nonnull JSExpressionStatement statement) { super.visitJSExpressionStatement(statement); if (!(statement.getExpression()instanceof JSNewExpression)) { return; } - final JSNewExpression newExpression = - (JSNewExpression) statement.getExpression(); - final JSExpression methodExpression = - newExpression.getMethodExpression(); + final JSNewExpression newExpression = (JSNewExpression) statement.getExpression(); + final JSExpression methodExpression = newExpression.getMethodExpression(); if (methodExpression == null) { return; } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bugs/TextLabelInSwitchStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bugs/TextLabelInSwitchStatementJSInspection.java index 80554a31..e3909748 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bugs/TextLabelInSwitchStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bugs/TextLabelInSwitchStatementJSInspection.java @@ -4,47 +4,44 @@ import com.intellij.lang.javascript.psi.JSLabeledStatement; import com.intellij.lang.javascript.psi.JSStatement; import com.intellij.lang.javascript.psi.JSSwitchStatement; -import consulo.annotation.access.RequiredReadAction; -import consulo.annotation.component.ExtensionImpl; -import consulo.language.psi.PsiElement; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; +import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.component.ExtensionImpl; +import consulo.language.psi.PsiElement; import jakarta.annotation.Nonnull; @ExtensionImpl public class TextLabelInSwitchStatementJSInspection extends JavaScriptInspection { - @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("text.label.in.switch.statement.display.name"); + return InspectionJSLocalize.textLabelInSwitchStatementDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.BUGS_GROUP_NAME; } @RequiredReadAction - @Override - @Nonnull + @Override + @Nonnull public String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("text.label.in.switch.statement.error.string"); + return InspectionJSLocalize.textLabelInSwitchStatementErrorString().get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new TextLabelInSwitchStatementVisitor(); } - private static class TextLabelInSwitchStatementVisitor - extends BaseInspectionVisitor { - - @Override public void visitJSSwitchStatement( - @Nonnull JSSwitchStatement statement) { + private static class TextLabelInSwitchStatementVisitor extends BaseInspectionVisitor { + @Override + public void visitJSSwitchStatement(@Nonnull JSSwitchStatement statement) { super.visitJSSwitchStatement(statement); final JSCaseClause[] caseClauses = statement.getCaseClauses(); for (JSCaseClause caseClause : caseClauses) { @@ -59,8 +56,7 @@ private void checkForLabel(JSStatement statement) { if (!(statement instanceof JSLabeledStatement)) { return; } - final JSLabeledStatement labeledStatement = - (JSLabeledStatement) statement; + final JSLabeledStatement labeledStatement = (JSLabeledStatement) statement; final PsiElement label = labeledStatement.getLabelIdentifier(); registerError(label); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/MagicNumberJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/MagicNumberJSInspection.java index b3bb4367..be08800c 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/MagicNumberJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/MagicNumberJSInspection.java @@ -1,63 +1,59 @@ package com.sixrr.inspectjs.confusing; import com.intellij.lang.javascript.psi.*; -import consulo.annotation.access.RequiredReadAction; -import consulo.annotation.component.ExtensionImpl; -import consulo.language.psi.util.PsiTreeUtil; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; +import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.component.ExtensionImpl; import consulo.javascript.psi.JSSimpleLiteralExpression; import consulo.language.psi.PsiElement; -import org.jetbrains.annotations.NonNls; +import consulo.language.psi.util.PsiTreeUtil; import jakarta.annotation.Nonnull; +import org.jetbrains.annotations.NonNls; +import java.util.Collections; import java.util.HashSet; import java.util.Set; @ExtensionImpl public class MagicNumberJSInspection extends JavaScriptInspection { - - @NonNls private static final String[] s_specialCaseLiteralArray = - new String[]{ - "0", "1", "2", "3", "4", - "5", "6", "7", "8", "9", - "10", "0L", "1L", "2L", "0l", - "1l", "2l", "0.0", "1.0", "0.0F", - "1.0F", "0.0f", "1.0f" - }; + @NonNls + private static final String[] s_specialCaseLiteralArray = new String[]{ + "0", "1", "2", "3", "4", + "5", "6", "7", "8", "9", + "10", "0L", "1L", "2L", "0l", + "1l", "2l", "0.0", "1.0", "0.0F", + "1.0F", "0.0f", "1.0f" + }; /** * @noinspection StaticCollection */ - private static final Set s_specialCaseLiterals = - new HashSet(23); + private static final Set s_specialCaseLiterals = new HashSet<>(23); static { - for (String string : s_specialCaseLiteralArray) { - s_specialCaseLiterals.add(string); - } + Collections.addAll(s_specialCaseLiterals, s_specialCaseLiteralArray); } @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("magic.number.display.name"); + return InspectionJSLocalize.magicNumberDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.CONFUSING_GROUP_NAME; } @RequiredReadAction - @Override - @Nonnull + @Override + @Nonnull public String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message( - "magic.number.problem.descriptor"); + return InspectionJSLocalize.magicNumberProblemDescriptor().get(); } static boolean isSpecialCaseLiteral(String text) { @@ -65,28 +61,17 @@ static boolean isSpecialCaseLiteral(String text) { } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new MagicNumberVisitor(); } private static class MagicNumberVisitor extends BaseInspectionVisitor { - - @Override public void visitJSLiteralExpression( - @Nonnull JSSimpleLiteralExpression expression) { + @Override + public void visitJSLiteralExpression(@Nonnull JSSimpleLiteralExpression expression) { super.visitJSLiteralExpression(expression); final String text = expression.getText(); - if (text == null) { - return; - } - if(!isNumeric(text)) - { - return; - } - if (isSpecialCaseLiteral(text)) { - return; - } - if (isDeclaredConstant(expression)) { + if (text == null || !isNumeric(text) || isSpecialCaseLiteral(text) || isDeclaredConstant(expression)) { return; } final PsiElement parent = expression.getParent(); @@ -96,25 +81,23 @@ private static class MagicNumberVisitor extends BaseInspectionVisitor { registerError(expression); } } - } private static boolean isNumeric(String text) { - if(text.length()==0) + if (text.isEmpty()) { return false; } final char firstChar = text.charAt(0); return Character.isDigit(firstChar)|| firstChar == '.'; } + private static boolean isDeclaredConstant(JSLiteralExpression expression) { - final JSFunction containingFunction = - PsiTreeUtil.getParentOfType(expression, JSFunction.class); + final JSFunction containingFunction = PsiTreeUtil.getParentOfType(expression, JSFunction.class); if (containingFunction != null) { return false; } - final JSVarStatement varStatement = - PsiTreeUtil.getParentOfType(expression, JSVarStatement.class); + final JSVarStatement varStatement = PsiTreeUtil.getParentOfType(expression, JSVarStatement.class); if (varStatement == null) { return false; } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/NegatedConditionalExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/NegatedConditionalExpressionJSInspection.java index a3dd49c8..bbf64a2f 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/NegatedConditionalExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/NegatedConditionalExpressionJSInspection.java @@ -4,7 +4,11 @@ import com.intellij.lang.javascript.psi.JSBinaryExpression; import com.intellij.lang.javascript.psi.JSConditionalExpression; import com.intellij.lang.javascript.psi.JSExpression; -import com.sixrr.inspectjs.*; +import com.sixrr.inspectjs.BaseInspectionVisitor; +import com.sixrr.inspectjs.InspectionJSFix; +import com.sixrr.inspectjs.JSGroupNames; +import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import com.sixrr.inspectjs.utils.BoolUtils; import com.sixrr.inspectjs.utils.ParenthesesUtils; import consulo.annotation.access.RequiredReadAction; @@ -14,7 +18,6 @@ import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; import consulo.project.Project; - import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @@ -23,65 +26,59 @@ public class NegatedConditionalExpressionJSInspection extends JavaScriptInspecti private final NegatedConditionalFix fix = new NegatedConditionalFix(); @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("negated.conditional.expression.display.name"); + return InspectionJSLocalize.negatedConditionalExpressionDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.CONFUSING_GROUP_NAME; } @RequiredReadAction - @Override - @Nullable + @Override + @Nullable protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("negated.conditional.expression.error.string"); + return InspectionJSLocalize.negatedConditionalExpressionErrorString().get(); } @Override - protected InspectionJSFix buildFix(PsiElement location, Object state) { + protected InspectionJSFix buildFix(PsiElement location, Object state) { return fix; } private static class NegatedConditionalFix extends InspectionJSFix { @Override - @Nonnull + @Nonnull public String getName() { - return InspectionJSBundle.message("invert.condition.fix"); + return InspectionJSLocalize.invertConditionFix().get(); } @Override - public void doFix(Project project, - ProblemDescriptor descriptor) - throws IncorrectOperationException { - final JSConditionalExpression exp = - (JSConditionalExpression) descriptor.getPsiElement(); + public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { + final JSConditionalExpression exp = (JSConditionalExpression) descriptor.getPsiElement(); assert exp != null; - final JSExpression elseBranch = (JSExpression) exp.getElse(); + final JSExpression elseBranch = exp.getElse(); final JSExpression thenBranch = exp.getThen(); final JSExpression condition = exp.getCondition(); - final String negatedCondition = - BoolUtils.getNegatedExpressionText(condition); + final String negatedCondition = BoolUtils.getNegatedExpressionText(condition); assert elseBranch != null; assert thenBranch != null; - final String newStatement = - negatedCondition + '?' + elseBranch.getText() + ':' + - thenBranch.getText(); + final String newStatement = negatedCondition + '?' + elseBranch.getText() + ':' + thenBranch.getText(); replaceExpression(exp, newStatement); } } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new Visitor(); } private static class Visitor extends BaseInspectionVisitor { - - @Override public void visitJSConditionalExpression(JSConditionalExpression exp) { + @Override + public void visitJSConditionalExpression(JSConditionalExpression exp) { super.visitJSConditionalExpression(exp); JSExpression condition = exp.getCondition(); condition = ParenthesesUtils.stripExpression(condition); @@ -95,8 +92,7 @@ private boolean isNotEquals(JSExpression expression) { if (!(expression instanceof JSBinaryExpression)) { return false; } - final JSBinaryExpression binaryExpression = - (JSBinaryExpression) expression; + final JSBinaryExpression binaryExpression = (JSBinaryExpression) expression; final IElementType sign = binaryExpression.getOperationSign(); return JSTokenTypes.NE.equals(sign) ||JSTokenTypes.NEQEQ.equals(sign); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/NegatedIfStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/NegatedIfStatementJSInspection.java index 077d2a4c..be015db5 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/NegatedIfStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/NegatedIfStatementJSInspection.java @@ -5,7 +5,11 @@ import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.lang.javascript.psi.JSIfStatement; import com.intellij.lang.javascript.psi.JSStatement; -import com.sixrr.inspectjs.*; +import com.sixrr.inspectjs.BaseInspectionVisitor; +import com.sixrr.inspectjs.InspectionJSFix; +import com.sixrr.inspectjs.JSGroupNames; +import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import com.sixrr.inspectjs.utils.BoolUtils; import com.sixrr.inspectjs.utils.ParenthesesUtils; import consulo.annotation.access.RequiredReadAction; @@ -16,32 +20,31 @@ import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; import consulo.project.Project; -import org.jetbrains.annotations.NonNls; - import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; +import org.jetbrains.annotations.NonNls; @ExtensionImpl public class NegatedIfStatementJSInspection extends JavaScriptInspection { private final NegatedIfElseFix fix = new NegatedIfElseFix(); @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("negated.if.statement.display.name"); + return InspectionJSLocalize.negatedIfStatementDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.CONFUSING_GROUP_NAME; } @RequiredReadAction - @Override - @Nullable + @Override + @Nullable protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("negated.ref.statement.error.string"); + return InspectionJSLocalize.negatedRefStatementErrorString().get(); } @Override @@ -50,29 +53,26 @@ public BaseInspectionVisitor buildVisitor() { } @Override - protected InspectionJSFix buildFix(PsiElement location, Object state) { + protected InspectionJSFix buildFix(PsiElement location, Object state) { return fix; } private static class NegatedIfElseFix extends InspectionJSFix { - @Override - @Nonnull + @Nonnull public String getName() { - return InspectionJSBundle.message("invert.if.condition.fix"); + return InspectionJSLocalize.invertIfConditionFix().get(); } @Override - public void doFix(Project project, ProblemDescriptor descriptor) - throws IncorrectOperationException { + public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { final PsiElement ifToken = descriptor.getPsiElement(); final JSIfStatement ifStatement = (JSIfStatement) ifToken.getParent(); assert ifStatement != null; final JSStatement elseBranch = ifStatement.getElse(); final JSStatement thenBranch = ifStatement.getThen(); final JSExpression condition = ifStatement.getCondition(); - final String negatedCondition = - BoolUtils.getNegatedExpressionText(condition); + final String negatedCondition = BoolUtils.getNegatedExpressionText(condition); String elseText = elseBranch.getText(); final PsiElement lastChild = elseBranch.getLastChild(); if (lastChild instanceof PsiComment) { @@ -82,19 +82,17 @@ public void doFix(Project project, ProblemDescriptor descriptor) elseText += '\n'; } } - @NonNls final String newStatement = "if(" + negatedCondition + ')' + - elseText + " else " + thenBranch.getText(); + @NonNls final String newStatement = "if(" + negatedCondition + ')' + elseText + " else " + thenBranch.getText(); replaceStatement(ifStatement, newStatement); } } - private static class Visitor extends BaseInspectionVisitor { - - @Override public void visitJSIfStatement(JSIfStatement statement) { + private static class Visitor extends BaseInspectionVisitor { + @Override + public void visitJSIfStatement(JSIfStatement statement) { super.visitJSIfStatement(statement); final PsiElement parent = statement.getParent(); - if (parent instanceof JSIfStatement) { - final JSIfStatement parentStatement = (JSIfStatement) parent; + if (parent instanceof JSIfStatement parentStatement) { final JSStatement elseBranch = parentStatement.getElse(); if (statement.equals(elseBranch)) { return; @@ -104,7 +102,6 @@ private static class Visitor extends BaseInspectionVisitor { return; } - JSExpression condition = statement.getCondition(); condition = ParenthesesUtils.stripExpression(condition); if (condition == null || (!BoolUtils.isNegation(condition) && !isNotEquals(condition))) { @@ -117,8 +114,7 @@ private boolean isNotEquals(JSExpression expression) { if (!(expression instanceof JSBinaryExpression)) { return false; } - final JSBinaryExpression binaryExpression = - (JSBinaryExpression) expression; + final JSBinaryExpression binaryExpression = (JSBinaryExpression) expression; final IElementType sign = binaryExpression.getOperationSign(); return JSTokenTypes.NE.equals(sign) || JSTokenTypes.NEQEQ.equals(sign); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/NestedConditionalExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/NestedConditionalExpressionJSInspection.java index 86370e10..ac40b022 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/NestedConditionalExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/NestedConditionalExpressionJSInspection.java @@ -2,9 +2,9 @@ import com.intellij.lang.javascript.psi.JSConditionalExpression; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.util.PsiTreeUtil; @@ -13,36 +13,36 @@ @ExtensionImpl public class NestedConditionalExpressionJSInspection extends JavaScriptInspection { - @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("nested.conditional.expression.display.name"); + return InspectionJSLocalize.nestedConditionalExpressionDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.CONFUSING_GROUP_NAME; } @RequiredReadAction - @Override - @Nullable + @Override + @Nullable protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("nested.conditional.expression.error.string"); + return InspectionJSLocalize.nestedConditionalExpressionErrorString().get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new Visitor(); } private static class Visitor extends BaseInspectionVisitor { - @Override public void visitJSConditionalExpression(JSConditionalExpression jsConditionalExpression) { + @Override + public void visitJSConditionalExpression(JSConditionalExpression jsConditionalExpression) { super.visitJSConditionalExpression(jsConditionalExpression); final JSConditionalExpression containingConditionalExpression = - PsiTreeUtil.getParentOfType(jsConditionalExpression, JSConditionalExpression.class, true); + PsiTreeUtil.getParentOfType(jsConditionalExpression, JSConditionalExpression.class, true); if (containingConditionalExpression == null) { return; } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/NestedFunctionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/NestedFunctionJSInspection.java index cac0c708..8f6fbf60 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/NestedFunctionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/NestedFunctionJSInspection.java @@ -3,16 +3,15 @@ import com.intellij.lang.javascript.psi.JSFunction; import com.intellij.lang.javascript.psi.JSFunctionExpression; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.inspection.InspectionToolState; import consulo.language.psi.PsiElement; import consulo.language.psi.util.PsiTreeUtil; import jakarta.annotation.Nonnull; - import jakarta.annotation.Nullable; @ExtensionImpl @@ -22,7 +21,7 @@ public class NestedFunctionJSInspection extends JavaScriptInspection @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("nested.function.display.name"); + return InspectionJSLocalize.nestedFunctionDisplayName().get(); } @Override @@ -38,11 +37,11 @@ public String getGroupDisplayName() protected String buildErrorString(Object state, Object... args) { final JSFunction function = (JSFunction) ((PsiElement) args[0]).getParent(); - if(functionHasIdentifier(function)) + if (functionHasIdentifier(function)) { - return InspectionJSBundle.message("nested.function.error.string"); + return InspectionJSLocalize.nestedFunctionErrorString().get(); } - return InspectionJSBundle.message("nested.anonymous.function.error.string"); + return InspectionJSLocalize.nestedAnonymousFunctionErrorString().get(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/OctalIntegerJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/OctalIntegerJSInspection.java index deae7244..d3098271 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/OctalIntegerJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/OctalIntegerJSInspection.java @@ -1,55 +1,53 @@ package com.sixrr.inspectjs.confusing; -import consulo.annotation.access.RequiredReadAction; -import consulo.annotation.component.ExtensionImpl; -import consulo.javascript.psi.JSSimpleLiteralExpression; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; +import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.component.ExtensionImpl; +import consulo.javascript.psi.JSSimpleLiteralExpression; import jakarta.annotation.Nonnull; -import org.jetbrains.annotations.NonNls; import jakarta.annotation.Nullable; +import org.jetbrains.annotations.NonNls; @ExtensionImpl public class OctalIntegerJSInspection extends JavaScriptInspection { - @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("octal.integer.display.name"); + return InspectionJSLocalize.octalIntegerDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.CONFUSING_GROUP_NAME; } @RequiredReadAction - @Override - @Nullable + @Override + @Nullable protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("octal.integer.error.string"); + return InspectionJSLocalize.octalIntegerErrorString().get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new Visitor(); } private static class Visitor extends BaseInspectionVisitor { - - @Override public void visitJSLiteralExpression(JSSimpleLiteralExpression jsLiteralExpression) { + @Override + public void visitJSLiteralExpression(JSSimpleLiteralExpression jsLiteralExpression) { super.visitJSLiteralExpression(jsLiteralExpression); @NonNls final String text = jsLiteralExpression.getText(); - if(text.startsWith("0")&& !"0".equals(text) && - !text.startsWith("0x") &&!text.startsWith("0X") && - !text.contains(".") &&!text.contains("e")&&!text.contains("E")) + if (text.startsWith("0") && !"0".equals(text) + && !text.startsWith("0x") && !text.startsWith("0X") + && !text.contains(".") && !text.contains("e") && !text.contains("E")) { registerError(jsLiteralExpression); } } - } } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexArithmeticExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexArithmeticExpressionJSInspection.java index 01fa2167..2e258e51 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexArithmeticExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexArithmeticExpressionJSInspection.java @@ -3,9 +3,9 @@ import com.intellij.lang.javascript.JSTokenTypes; import com.intellij.lang.javascript.psi.*; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; @@ -23,7 +23,7 @@ public class OverlyComplexArithmeticExpressionJSInspection extends JavaScriptIns @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("overly.complex.arithmetic.expression.display.name"); + return InspectionJSLocalize.overlyComplexArithmeticExpressionDisplayName().get(); } @Override @@ -44,7 +44,7 @@ public InspectionToolState createStateProvider() @Override protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("overly.complex.arithmetic.expression.error.string"); + return InspectionJSLocalize.overlyComplexArithmeticExpressionErrorString().get(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexBooleanExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexBooleanExpressionJSInspection.java index a5f4510b..076f060d 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexBooleanExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexBooleanExpressionJSInspection.java @@ -6,15 +6,14 @@ import com.intellij.lang.javascript.psi.JSParenthesizedExpression; import com.intellij.lang.javascript.psi.JSPrefixExpression; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; import consulo.language.editor.inspection.InspectionToolState; import consulo.language.psi.PsiElement; - import jakarta.annotation.Nonnull; @ExtensionImpl @@ -24,7 +23,7 @@ public class OverlyComplexBooleanExpressionJSInspection extends JavaScriptInspec @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("overly.complex.boolean.expression.display.name"); + return InspectionJSLocalize.overlyComplexBooleanExpressionDisplayName().get(); } @Override @@ -51,7 +50,7 @@ protected boolean buildQuickFixesOnlyForOnTheFlyErrors() @Override protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("overly.complex.boolean.expression.error.string"); + return InspectionJSLocalize.overlyComplexBooleanExpressionErrorString().get(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/PointlessArithmeticExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/PointlessArithmeticExpressionJSInspection.java index ac3851b9..89ea75c6 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/PointlessArithmeticExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/PointlessArithmeticExpressionJSInspection.java @@ -1,55 +1,55 @@ package com.sixrr.inspectjs.confusing; -import consulo.annotation.access.RequiredReadAction; -import consulo.annotation.component.ExtensionImpl; -import consulo.language.editor.inspection.ProblemDescriptor; import com.intellij.lang.javascript.JSTokenTypes; import com.intellij.lang.javascript.psi.JSBinaryExpression; import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.lang.javascript.psi.JSLiteralExpression; -import consulo.language.psi.PsiElement; +import com.sixrr.inspectjs.BaseInspectionVisitor; +import com.sixrr.inspectjs.InspectionJSFix; +import com.sixrr.inspectjs.JSGroupNames; +import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; +import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; +import consulo.language.editor.inspection.ProblemDescriptor; +import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; -import com.sixrr.inspectjs.*; import consulo.project.Project; -import org.jetbrains.annotations.NonNls; import jakarta.annotation.Nonnull; +import org.jetbrains.annotations.NonNls; import java.util.HashSet; import java.util.Set; @ExtensionImpl -public class PointlessArithmeticExpressionJSInspection - extends JavaScriptInspection { - - +public class PointlessArithmeticExpressionJSInspection extends JavaScriptInspection { private final PointlessArithmeticFix fix = new PointlessArithmeticFix(); @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("pointless.arithmetic.expression.display.name"); + return InspectionJSLocalize.pointlessArithmeticExpressionDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.CONFUSING_GROUP_NAME; } @Override - public boolean isEnabledByDefault() { + public boolean isEnabledByDefault() { return true; } @RequiredReadAction - @Override - public String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("pointless.arithmetic.error.message", calculateReplacementExpression((JSExpression)args[0])); + @Override + public String buildErrorString(Object state, Object... args) { + return InspectionJSLocalize.pointlessArithmeticErrorMessage(calculateReplacementExpression((JSExpression)args[0])).get(); } - private String calculateReplacementExpression( - JSExpression expression) { + private String calculateReplacementExpression(JSExpression expression) { final JSBinaryExpression exp = (JSBinaryExpression) expression; final IElementType sign = exp.getOperationSign(); final JSExpression lhs = exp.getLOperand(); @@ -79,36 +79,32 @@ private String calculateReplacementExpression( } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new PointlessArithmeticVisitor(); } @Override - public InspectionJSFix buildFix(PsiElement location, Object state) { + public InspectionJSFix buildFix(PsiElement location, Object state) { return fix; } private class PointlessArithmeticFix extends InspectionJSFix { @Override - @Nonnull + @Nonnull public String getName() { - return InspectionJSBundle.message("simplify.fix"); + return InspectionJSLocalize.simplifyFix().get(); } @Override - public void doFix(Project project, ProblemDescriptor descriptor) - throws IncorrectOperationException { - final JSExpression expression = (JSExpression) descriptor - .getPsiElement(); - final String newExpression = - calculateReplacementExpression(expression); + public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { + final JSExpression expression = (JSExpression) descriptor.getPsiElement(); + final String newExpression = calculateReplacementExpression(expression); replaceExpression(expression, newExpression); } } private class PointlessArithmeticVisitor extends BaseInspectionVisitor { - private final Set arithmeticTokens = - new HashSet(4); + private final Set arithmeticTokens = new HashSet<>(4); { arithmeticTokens.add(JSTokenTypes.PLUS); @@ -117,8 +113,8 @@ private class PointlessArithmeticVisitor extends BaseInspectionVisitor { arithmeticTokens.add(JSTokenTypes.DIV); } - @Override public void visitJSBinaryExpression( - @Nonnull JSBinaryExpression expression) { + @Override + public void visitJSBinaryExpression(@Nonnull JSBinaryExpression expression) { super.visitJSBinaryExpression(expression); if (!(expression.getROperand() != null)) { return; @@ -158,13 +154,11 @@ private boolean subtractionExpressionIsPointless(JSExpression rhs) { return isZero(rhs); } - private boolean additionExpressionIsPointless(JSExpression lhs, - JSExpression rhs) { + private boolean additionExpressionIsPointless(JSExpression lhs, JSExpression rhs) { return (isZero(lhs) && !isString(rhs)) || (isZero(rhs) && !isString(lhs)); } - private boolean multiplyExpressionIsPointless(JSExpression lhs, - JSExpression rhs) { + private boolean multiplyExpressionIsPointless(JSExpression lhs, JSExpression rhs) { return isZero(lhs) || isZero(rhs) || isOne(lhs) || isOne(rhs); } @@ -185,10 +179,10 @@ private static boolean isZero(JSExpression expression) { text.equals("0l"); } - private static boolean isString(JSExpression expression) { + private static boolean isString(JSExpression expression) { if (expression instanceof JSLiteralExpression) { - final String s = expression.getText(); - return s.startsWith("'") || s.startsWith("\""); + final String s = expression.getText(); + return s.startsWith("'") || s.startsWith("\""); } return false; } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/PointlessBooleanExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/PointlessBooleanExpressionJSInspection.java index a240125f..a93405a6 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/PointlessBooleanExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/PointlessBooleanExpressionJSInspection.java @@ -1,63 +1,63 @@ package com.sixrr.inspectjs.confusing; -import consulo.annotation.access.RequiredReadAction; -import consulo.annotation.component.ExtensionImpl; -import consulo.language.editor.inspection.ProblemDescriptor; import com.intellij.lang.javascript.JSTokenTypes; import com.intellij.lang.javascript.psi.JSBinaryExpression; import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.lang.javascript.psi.JSLiteralExpression; import com.intellij.lang.javascript.psi.JSPrefixExpression; -import consulo.language.psi.PsiElement; -import consulo.language.ast.IElementType; -import consulo.language.util.IncorrectOperationException; -import com.sixrr.inspectjs.*; +import com.sixrr.inspectjs.BaseInspectionVisitor; +import com.sixrr.inspectjs.InspectionJSFix; +import com.sixrr.inspectjs.JSGroupNames; +import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import com.sixrr.inspectjs.utils.ComparisonUtils; import com.sixrr.inspectjs.utils.ParenthesesUtils; +import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.component.ExtensionImpl; +import consulo.language.ast.IElementType; +import consulo.language.editor.inspection.ProblemDescriptor; +import consulo.language.psi.PsiElement; +import consulo.language.util.IncorrectOperationException; import consulo.project.Project; -import org.jetbrains.annotations.NonNls; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; +import org.jetbrains.annotations.NonNls; import java.util.HashSet; import java.util.Set; @ExtensionImpl public class PointlessBooleanExpressionJSInspection extends JavaScriptInspection { - - private final BooleanLiteralComparisonFix fix = - new BooleanLiteralComparisonFix(); + private final BooleanLiteralComparisonFix fix = new BooleanLiteralComparisonFix(); @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("pointless.boolean.expression.display.name"); + return InspectionJSLocalize.pointlessBooleanExpressionDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } @Override - public boolean isEnabledByDefault() { + public boolean isEnabledByDefault() { return true; } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new PointlessBooleanExpressionVisitor(); } @RequiredReadAction - @Override - public String buildErrorString(Object state, Object... args) { - if ( args[0]instanceof JSBinaryExpression) { - return InspectionJSBundle.message("pointless.boolean.error.string", calculateSimplifiedBinaryExpression((JSBinaryExpression) args[0])); - } else { - return InspectionJSBundle.message("pointless.boolean.error.string", calculateSimplifiedPrefixExpression((JSPrefixExpression) args[0])); - } + @Override + public String buildErrorString(Object state, Object... args) { + return args[0] instanceof JSBinaryExpression binaryExpression + ? InspectionJSLocalize.pointlessBooleanErrorString(calculateSimplifiedBinaryExpression(binaryExpression)).get() + : InspectionJSLocalize.pointlessBooleanErrorString(calculateSimplifiedPrefixExpression((JSPrefixExpression)args[0])).get(); } @Nullable @@ -71,22 +71,12 @@ private String calculateSimplifiedBinaryExpression(JSBinaryExpression expression } final String rhsText = rhs.getText(); final String lhsText = lhs.getText(); - if (JSTokenTypes.ANDAND.equals(sign) || - JSTokenTypes.AND.equals(sign)) { - if (isTrue(lhs)) { - return rhsText; - } else { - return lhsText; - } - } else if (JSTokenTypes.OROR.equals(sign) || - JSTokenTypes.OR.equals(sign)) { - if (isFalse(lhs)) { - return rhsText; - } else { - return lhsText; - } - } else if (JSTokenTypes.XOR.equals(sign) || - JSTokenTypes.NE.equals(sign) /*|| // IMPORTANT: simplifiying !== changes code semantic + if (JSTokenTypes.ANDAND.equals(sign) || JSTokenTypes.AND.equals(sign)) { + return isTrue(lhs) ? rhsText : lhsText; + } else if (JSTokenTypes.OROR.equals(sign) || JSTokenTypes.OR.equals(sign)) { + return isFalse(lhs) ? rhsText : lhsText; + } else if (JSTokenTypes.XOR.equals(sign) || JSTokenTypes.NE.equals(sign) + /*|| // IMPORTANT: simplifiying !== changes code semantic sign.equals(JSTokenTypes.NEQEQ)*/) { if (isFalse(lhs)) { return rhsText; @@ -115,72 +105,54 @@ private String calculateSimplifiedBinaryExpression(JSBinaryExpression expression private static String createStringForNegatedExpression(JSExpression exp) { if (ComparisonUtils.isComparison(exp)) { - final JSBinaryExpression binaryExpression = - (JSBinaryExpression) exp; + final JSBinaryExpression binaryExpression = (JSBinaryExpression) exp; final IElementType sign = binaryExpression.getOperationSign(); - final String negatedComparison = - ComparisonUtils.getNegatedComparison(sign); + final String negatedComparison = ComparisonUtils.getNegatedComparison(sign); final JSExpression lhs = binaryExpression.getLOperand(); final JSExpression rhs = binaryExpression.getROperand(); assert rhs != null; return lhs.getText() + negatedComparison + rhs.getText(); } else { - if (ParenthesesUtils.getPrecendence(exp) > - ParenthesesUtils.PREFIX_PRECEDENCE) { - return "!(" + exp.getText() + ')'; - } else { - return '!' + exp.getText(); - } + return ParenthesesUtils.getPrecendence(exp) > ParenthesesUtils.PREFIX_PRECEDENCE + ? "!(" + exp.getText() + ')' + : '!' + exp.getText(); } } @NonNls private static String calculateSimplifiedPrefixExpression(JSPrefixExpression expression) { final JSExpression operand = expression.getExpression(); - if (isTrue(operand)) { - return "false"; - } else { - return "true"; - } + return isTrue(operand) ? "false" : "true"; } @Override - public InspectionJSFix buildFix(PsiElement location, Object state) { + public InspectionJSFix buildFix(PsiElement location, Object state) { return fix; } - private class BooleanLiteralComparisonFix - extends InspectionJSFix { + private class BooleanLiteralComparisonFix extends InspectionJSFix { @Override - @Nonnull + @Nonnull public String getName() { - return InspectionJSBundle.message("simplify.fix"); + return InspectionJSLocalize.simplifyFix().get(); } @Override - public void doFix(Project project, ProblemDescriptor descriptor) - throws IncorrectOperationException { + public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { final PsiElement element = descriptor.getPsiElement(); - if (element instanceof JSBinaryExpression) { - final JSBinaryExpression expression = - (JSBinaryExpression) element; - final String replacementString = - calculateSimplifiedBinaryExpression(expression); + if (element instanceof JSBinaryExpression expression) { + final String replacementString = calculateSimplifiedBinaryExpression(expression); replaceExpression(expression, replacementString); } else { - final JSPrefixExpression expression = - (JSPrefixExpression) element; - final String replacementString = - calculateSimplifiedPrefixExpression(expression); + final JSPrefixExpression expression = (JSPrefixExpression) element; + final String replacementString = calculateSimplifiedPrefixExpression(expression); replaceExpression(expression, replacementString); } } } - private class PointlessBooleanExpressionVisitor - extends BaseInspectionVisitor { - private final Set booleanTokens = - new HashSet(10); + private class PointlessBooleanExpressionVisitor extends BaseInspectionVisitor { + private final Set booleanTokens = new HashSet<>(10); { booleanTokens.add(JSTokenTypes.ANDAND); @@ -194,7 +166,8 @@ private class PointlessBooleanExpressionVisitor //booleanTokens.add(JSTokenTypes.NEQEQ); // !== has strict semantic so do not report it } - @Override public void visitJSBinaryExpression(@Nonnull JSBinaryExpression expression) { + @Override + public void visitJSBinaryExpression(@Nonnull JSBinaryExpression expression) { super.visitJSBinaryExpression(expression); if (!(expression.getROperand() != null)) { return; @@ -228,7 +201,8 @@ private class PointlessBooleanExpressionVisitor registerError(expression); } - @Override public void visitJSPrefixExpression(@Nonnull JSPrefixExpression expression) { + @Override + public void visitJSPrefixExpression(@Nonnull JSPrefixExpression expression) { super.visitJSPrefixExpression(expression); final IElementType sign = expression.getOperationSign(); if (sign == null) { @@ -242,23 +216,19 @@ private class PointlessBooleanExpressionVisitor } } - private static boolean equalityExpressionIsPointless(JSExpression lhs, - JSExpression rhs) { + private static boolean equalityExpressionIsPointless(JSExpression lhs, JSExpression rhs) { return isTrue(lhs) || isTrue(rhs) || isFalse(lhs) || isFalse(rhs); } - private static boolean andExpressionIsPointless(JSExpression lhs, - JSExpression rhs) { + private static boolean andExpressionIsPointless(JSExpression lhs, JSExpression rhs) { return isTrue(lhs) || isTrue(rhs); } - private static boolean orExpressionIsPointless(JSExpression lhs, - JSExpression rhs) { + private static boolean orExpressionIsPointless(JSExpression lhs, JSExpression rhs) { return isFalse(lhs) /*|| isFalse(rhs) // since variable can be undefined*/; } - private static boolean xorExpressionIsPointless(JSExpression lhs, - JSExpression rhs) { + private static boolean xorExpressionIsPointless(JSExpression lhs, JSExpression rhs) { return isTrue(lhs) || isTrue(rhs) || isFalse(lhs) || isFalse(rhs); } @@ -267,10 +237,7 @@ private static boolean notExpressionIsPointless(JSExpression arg) { } private static boolean isTrue(JSExpression expression) { - if (expression == null) { - return false; - } - if (!(expression instanceof JSLiteralExpression)) { + if (expression == null || !(expression instanceof JSLiteralExpression)) { return false; } @NonNls final String text = expression.getText(); @@ -278,10 +245,7 @@ private static boolean isTrue(JSExpression expression) { } private static boolean isFalse(JSExpression expression) { - if (expression == null) { - return false; - } - if (!(expression instanceof JSLiteralExpression)) { + if (expression == null || !(expression instanceof JSLiteralExpression)) { return false; } @NonNls final String text = expression.getText(); diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/LabeledStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/LabeledStatementJSInspection.java index 40f0f30a..619ccaad 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/LabeledStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/LabeledStatementJSInspection.java @@ -2,9 +2,9 @@ import com.intellij.lang.javascript.psi.JSLabeledStatement; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import jakarta.annotation.Nonnull; @@ -13,34 +13,33 @@ @ExtensionImpl public class LabeledStatementJSInspection extends JavaScriptInspection { - @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("labeled.statement.display.name"); + return InspectionJSLocalize.labeledStatementDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } @RequiredReadAction - @Override - @Nullable + @Override + @Nullable protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("statement.label.error.string"); + return InspectionJSLocalize.statementLabelErrorString().get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new Visitor(); } private static class Visitor extends BaseInspectionVisitor { - - @Override public void visitJSLabeledStatement(@Nonnull JSLabeledStatement statement) { + @Override + public void visitJSLabeledStatement(@Nonnull JSLabeledStatement statement) { super.visitJSLabeledStatement(statement); @NonNls final String label = statement.getLabel(); if("javascript".equals(label)) diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/LoopStatementThatDoesntLoopJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/LoopStatementThatDoesntLoopJSInspection.java index 83ffc86c..93f5bd3c 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/LoopStatementThatDoesntLoopJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/LoopStatementThatDoesntLoopJSInspection.java @@ -2,50 +2,47 @@ import com.intellij.lang.javascript.psi.*; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import com.sixrr.inspectjs.utils.ControlFlowUtils; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; - import jakarta.annotation.Nonnull; @ExtensionImpl public class LoopStatementThatDoesntLoopJSInspection extends JavaScriptInspection { - - @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("loop.statement.that.doesn.t.loop.display.name"); + return InspectionJSLocalize.loopStatementThatDoesnTLoopDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } @Override - public boolean isEnabledByDefault() { + public boolean isEnabledByDefault() { return true; } @RequiredReadAction - @Override - public String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("loop.statement.that.doesnt.loop.error.string"); + @Override + public String buildErrorString(Object state, Object... args) { + return InspectionJSLocalize.loopStatementThatDoesntLoopErrorString().get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new Visitor(); } private static class Visitor extends BaseInspectionVisitor { - - @Override public void visitJSForStatement(@Nonnull JSForStatement statement) { + @Override + public void visitJSForStatement(@Nonnull JSForStatement statement) { super.visitJSForStatement(statement); final JSStatement body = statement.getBody(); if (body == null) { @@ -60,7 +57,8 @@ private static class Visitor extends BaseInspectionVisitor { registerStatementError(statement); } - @Override public void visitJSForInStatement(@Nonnull JSForInStatement statement) { + @Override + public void visitJSForInStatement(@Nonnull JSForInStatement statement) { super.visitJSForInStatement(statement); final JSStatement body = statement.getBody(); if (body == null) { @@ -75,16 +73,13 @@ private static class Visitor extends BaseInspectionVisitor { registerStatementError(statement); } - @Override public void visitJSWhileStatement(@Nonnull JSWhileStatement statement) { + @Override + public void visitJSWhileStatement(@Nonnull JSWhileStatement statement) { super.visitJSWhileStatement(statement); final JSStatement body = statement.getBody(); - if (body == null) { - return; - } - if (ControlFlowUtils.statementMayCompleteNormally(body)) { - return; - } - if (ControlFlowUtils.statementIsContinueTarget(statement)) { + if (body == null + || ControlFlowUtils.statementMayCompleteNormally(body) + || ControlFlowUtils.statementIsContinueTarget(statement)) { return; } registerStatementError(statement); @@ -93,13 +88,9 @@ private static class Visitor extends BaseInspectionVisitor { @Override public void visitJSDoWhileStatement(@Nonnull JSDoWhileStatement statement) { super.visitJSDoWhileStatement(statement); final JSStatement body = statement.getBody(); - if (body == null) { - return; - } - if (ControlFlowUtils.statementMayCompleteNormally(body)) { - return; - } - if (ControlFlowUtils.statementIsContinueTarget(statement)) { + if (body == null + || ControlFlowUtils.statementMayCompleteNormally(body) + || ControlFlowUtils.statementIsContinueTarget(statement)) { return; } registerStatementError(statement); diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/NestedSwitchStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/NestedSwitchStatementJSInspection.java index d09fdc66..3ecc7cf0 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/NestedSwitchStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/NestedSwitchStatementJSInspection.java @@ -2,9 +2,9 @@ import com.intellij.lang.javascript.psi.JSSwitchStatement; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.util.PsiTreeUtil; @@ -13,41 +13,40 @@ @ExtensionImpl public class NestedSwitchStatementJSInspection extends JavaScriptInspection { - @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("nested.switch.statement.display.name"); + return InspectionJSLocalize.nestedSwitchStatementDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } @RequiredReadAction - @Override - @Nullable + @Override + @Nullable protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("nested.switch.statement.error.string"); + return InspectionJSLocalize.nestedSwitchStatementErrorString().get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new Visitor(); } private static class Visitor extends BaseInspectionVisitor { - @Override public void visitJSSwitchStatement(JSSwitchStatement jsSwitchStatement) { + @Override + public void visitJSSwitchStatement(JSSwitchStatement jsSwitchStatement) { super.visitJSSwitchStatement(jsSwitchStatement); final JSSwitchStatement containingSwitchStatement = - PsiTreeUtil.getParentOfType(jsSwitchStatement, JSSwitchStatement.class, true); - if (containingSwitchStatement ==null) { + PsiTreeUtil.getParentOfType(jsSwitchStatement, JSSwitchStatement.class, true); + if (containingSwitchStatement == null) { return; } registerStatementError(jsSwitchStatement); } - } } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/SwitchStatementWithNoDefaultBranchJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/SwitchStatementWithNoDefaultBranchJSInspection.java index 64882d6f..d789ea2b 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/SwitchStatementWithNoDefaultBranchJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/SwitchStatementWithNoDefaultBranchJSInspection.java @@ -3,44 +3,43 @@ import com.intellij.lang.javascript.psi.JSCaseClause; import com.intellij.lang.javascript.psi.JSSwitchStatement; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; - import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class SwitchStatementWithNoDefaultBranchJSInspection extends JavaScriptInspection { - @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("switch.statement.with.no.default.branch.display.name"); + return InspectionJSLocalize.switchStatementWithNoDefaultBranchDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } @RequiredReadAction - @Override - @Nullable + @Override + @Nullable protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("switch.statement.with.no.default.branch.error.string"); + return InspectionJSLocalize.switchStatementWithNoDefaultBranchErrorString().get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new Visitor(); } private static class Visitor extends BaseInspectionVisitor { - @Override public void visitJSSwitchStatement(JSSwitchStatement jsSwitchStatement) { + @Override + public void visitJSSwitchStatement(JSSwitchStatement jsSwitchStatement) { super.visitJSSwitchStatement(jsSwitchStatement); if (hasDefaultBranch(jsSwitchStatement)) { return; diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/TailRecursionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/TailRecursionJSInspection.java index 980ad6e6..48432219 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/TailRecursionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/TailRecursionJSInspection.java @@ -2,38 +2,34 @@ import com.intellij.lang.javascript.psi.*; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; import consulo.language.psi.util.PsiTreeUtil; - import jakarta.annotation.Nonnull; @ExtensionImpl public class TailRecursionJSInspection extends JavaScriptInspection { - @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message( - "tail.recursion.display.name"); + return InspectionJSLocalize.tailRecursionDisplayName().get(); } @RequiredReadAction - @Override - @Nonnull + @Override + @Nonnull protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message( - "tail.recursion.problem.descriptor"); + return InspectionJSLocalize.tailRecursionProblemDescriptor().get(); } /* diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/TrivialConditionalJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/TrivialConditionalJSInspection.java index 121565a7..1a70959a 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/TrivialConditionalJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/TrivialConditionalJSInspection.java @@ -3,7 +3,11 @@ import com.intellij.lang.javascript.psi.JSConditionalExpression; import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; -import com.sixrr.inspectjs.*; +import com.sixrr.inspectjs.BaseInspectionVisitor; +import com.sixrr.inspectjs.InspectionJSFix; +import com.sixrr.inspectjs.JSGroupNames; +import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import com.sixrr.inspectjs.utils.BoolUtils; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; @@ -15,43 +19,42 @@ import org.jetbrains.annotations.NonNls; @ExtensionImpl -public class TrivialConditionalJSInspection - extends JavaScriptInspection { +public class TrivialConditionalJSInspection extends JavaScriptInspection { private final TrivialConditionalFix fix = new TrivialConditionalFix(); @Override - @Nonnull + @Nonnull public String getID() { return "RedundantConditionalExpressionJS"; } @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("redundant.conditional.expression.display.name"); + return InspectionJSLocalize.redundantConditionalExpressionDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } @Override - public boolean isEnabledByDefault() { + public boolean isEnabledByDefault() { return true; } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new UnnecessaryConditionalExpressionVisitor(); } @RequiredReadAction - @Override - public String buildErrorString(Object state, Object... args) { + @Override + public String buildErrorString(Object state, Object... args) { final JSConditionalExpression exp = (JSConditionalExpression) args[0]; - return InspectionJSBundle.message("trivial.conditional.error.string", exp.getText(), calculateReplacementExpression(exp)); + return InspectionJSLocalize.trivialConditionalErrorString(exp.getText(), calculateReplacementExpression(exp)).get(); } private static String calculateReplacementExpression(JSConditionalExpression exp) { @@ -67,31 +70,28 @@ private static String calculateReplacementExpression(JSConditionalExpression exp } @Override - public InspectionJSFix buildFix(PsiElement location, Object state) { + public InspectionJSFix buildFix(PsiElement location, Object state) { return fix; } - private static class - TrivialConditionalFix extends InspectionJSFix { + private static class TrivialConditionalFix extends InspectionJSFix { @Override - @Nonnull + @Nonnull public String getName() { - return InspectionJSBundle.message("simplify.fix"); + return InspectionJSLocalize.simplifyFix().get(); } @Override - public void doFix(Project project, ProblemDescriptor descriptor) - throws IncorrectOperationException { + public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { final JSConditionalExpression expression = (JSConditionalExpression) descriptor.getPsiElement(); final String newExpression = calculateReplacementExpression(expression); replaceExpression(expression, newExpression); } } - private static class UnnecessaryConditionalExpressionVisitor - extends BaseInspectionVisitor { - - @Override public void visitJSConditionalExpression(JSConditionalExpression exp) { + private static class UnnecessaryConditionalExpressionVisitor extends BaseInspectionVisitor { + @Override + public void visitJSConditionalExpression(JSConditionalExpression exp) { super.visitJSConditionalExpression(exp); final JSExpression thenExpression = exp.getThen(); if (thenExpression == null) { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/TrivialIfJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/TrivialIfJSInspection.java index 9664939f..f552b298 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/TrivialIfJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/TrivialIfJSInspection.java @@ -2,7 +2,11 @@ import com.intellij.lang.javascript.JSTokenTypes; import com.intellij.lang.javascript.psi.*; -import com.sixrr.inspectjs.*; +import com.sixrr.inspectjs.BaseInspectionVisitor; +import com.sixrr.inspectjs.InspectionJSFix; +import com.sixrr.inspectjs.JSGroupNames; +import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import com.sixrr.inspectjs.utils.BoolUtils; import com.sixrr.inspectjs.utils.ConditionalUtils; import com.sixrr.inspectjs.utils.EquivalenceChecker; @@ -15,10 +19,8 @@ import consulo.language.psi.util.PsiTreeUtil; import consulo.language.util.IncorrectOperationException; import consulo.project.Project; -import org.jetbrains.annotations.NonNls; - import jakarta.annotation.Nonnull; - +import org.jetbrains.annotations.NonNls; @ExtensionImpl public class TrivialIfJSInspection extends JavaScriptInspection { @@ -31,51 +33,49 @@ public String getID() { } @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("redundant.if.statement.display.name"); + return InspectionJSLocalize.redundantIfStatementDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new TrivialIfVisitor(); } @Override - public boolean isEnabledByDefault() { + public boolean isEnabledByDefault() { return true; } @RequiredReadAction - @Override - public String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("trivial.if.error.string"); + @Override + public String buildErrorString(Object state, Object... args) { + return InspectionJSLocalize.trivialIfErrorString().get(); } @Override - public InspectionJSFix buildFix(PsiElement location, Object state) { + public InspectionJSFix buildFix(PsiElement location, Object state) { return fix; } private static class TrivialIfFix extends InspectionJSFix { @Override - @Nonnull + @Nonnull public String getName() { - return InspectionJSBundle.message("simplify.fix"); + return InspectionJSLocalize.simplifyFix().get(); } @Override - public void doFix(Project project, ProblemDescriptor descriptor) - throws IncorrectOperationException { + public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { final PsiElement ifKeywordElement = descriptor.getPsiElement(); - final JSIfStatement statement = - (JSIfStatement) ifKeywordElement.getParent(); + final JSIfStatement statement = (JSIfStatement) ifKeywordElement.getParent(); if (isSimplifiableAssignment(statement)) { replaceSimplifiableAssignment(statement); } else if (isSimplifiableReturn(statement)) { @@ -95,107 +95,74 @@ public void doFix(Project project, ProblemDescriptor descriptor) } } - private void replaceSimplifiableImplicitReturn(JSIfStatement statement) - throws IncorrectOperationException { + private void replaceSimplifiableImplicitReturn(JSIfStatement statement) throws IncorrectOperationException { final JSExpression condition = statement.getCondition(); final String conditionText = condition.getText(); - final PsiElement nextStatement = - PsiTreeUtil.skipSiblingsForward(statement, - new Class[]{ - PsiWhiteSpace.class}); + final PsiElement nextStatement = PsiTreeUtil.skipSiblingsForward(statement, new Class[]{PsiWhiteSpace.class}); @NonNls final String newStatement = "return " + conditionText + ';'; replaceStatement(statement, newStatement); assert nextStatement != null; deleteElement(nextStatement); } - private void repaceSimplifiableReturn(JSIfStatement statement) - throws IncorrectOperationException { + private void repaceSimplifiableReturn(JSIfStatement statement) throws IncorrectOperationException { final JSExpression condition = statement.getCondition(); final String conditionText = condition.getText(); @NonNls final String newStatement = "return " + conditionText + ';'; replaceStatement(statement, newStatement); } - private void replaceSimplifiableAssignment(JSIfStatement statement) - throws IncorrectOperationException { + private void replaceSimplifiableAssignment(JSIfStatement statement) throws IncorrectOperationException { final JSExpression condition = statement.getCondition(); final String conditionText = condition.getText(); final JSStatement thenBranch = statement.getThen(); - final JSExpressionStatement assignmentStatement = - (JSExpressionStatement) ConditionalUtils.stripBraces(thenBranch); - final JSAssignmentExpression assignmentExpression = - (JSAssignmentExpression) assignmentStatement.getExpression(); - final IElementType operator = - assignmentExpression.getOperationSign(); + final JSExpressionStatement assignmentStatement = (JSExpressionStatement) ConditionalUtils.stripBraces(thenBranch); + final JSAssignmentExpression assignmentExpression = (JSAssignmentExpression) assignmentStatement.getExpression(); + final IElementType operator = assignmentExpression.getOperationSign(); final String operatorText = getTextForOperator(operator); final JSExpression lhs = assignmentExpression.getLOperand(); final String lhsText = lhs.getText(); - replaceStatement(statement, - lhsText + operatorText + conditionText + ';'); + replaceStatement(statement, lhsText + operatorText + conditionText + ';'); } - private void replaceSimplifiableImplicitAssignment(JSIfStatement statement) - throws IncorrectOperationException { - final PsiElement prevStatement = - PsiTreeUtil.skipSiblingsBackward(statement, - new Class[]{ - PsiWhiteSpace.class}); + private void replaceSimplifiableImplicitAssignment(JSIfStatement statement) throws IncorrectOperationException { + final PsiElement prevStatement = PsiTreeUtil.skipSiblingsBackward(statement, new Class[]{PsiWhiteSpace.class}); if (prevStatement == null) { return; } final JSExpression condition = statement.getCondition(); final String conditionText = condition.getText(); final JSStatement thenBranch = statement.getThen(); - final JSExpressionStatement assignmentStatement = - (JSExpressionStatement) ConditionalUtils.stripBraces(thenBranch); - final JSAssignmentExpression assignmentExpression = - (JSAssignmentExpression) assignmentStatement.getExpression(); - final IElementType operator = - assignmentExpression.getOperationSign(); + final JSExpressionStatement assignmentStatement = (JSExpressionStatement) ConditionalUtils.stripBraces(thenBranch); + final JSAssignmentExpression assignmentExpression = (JSAssignmentExpression) assignmentStatement.getExpression(); + final IElementType operator = assignmentExpression.getOperationSign(); final JSExpression lhs = assignmentExpression.getLOperand(); final String lhsText = lhs.getText(); - replaceStatement(statement, - lhsText + operator + conditionText + ';'); + replaceStatement(statement, lhsText + operator + conditionText + ';'); deleteElement(prevStatement); } - private void replaceSimplifiableImplicitAssignmentNegated(JSIfStatement statement) - throws IncorrectOperationException { - final PsiElement prevStatement = - PsiTreeUtil.skipSiblingsBackward(statement, - new Class[]{ - PsiWhiteSpace.class}); - + private void replaceSimplifiableImplicitAssignmentNegated(JSIfStatement statement) throws IncorrectOperationException { + final PsiElement prevStatement = PsiTreeUtil.skipSiblingsBackward(statement, new Class[]{PsiWhiteSpace.class}); final JSExpression condition = statement.getCondition(); - final String conditionText = - BoolUtils.getNegatedExpressionText(condition); + final String conditionText = BoolUtils.getNegatedExpressionText(condition); final JSStatement thenBranch = statement.getThen(); - final JSExpressionStatement assignmentStatement = - (JSExpressionStatement) ConditionalUtils.stripBraces(thenBranch); - final JSAssignmentExpression assignmentExpression = - (JSAssignmentExpression) assignmentStatement.getExpression(); - final IElementType operator = - assignmentExpression.getOperationSign(); + final JSExpressionStatement assignmentStatement = (JSExpressionStatement) ConditionalUtils.stripBraces(thenBranch); + final JSAssignmentExpression assignmentExpression = (JSAssignmentExpression) assignmentStatement.getExpression(); + final IElementType operator = assignmentExpression.getOperationSign(); final String operatorText = getTextForOperator(operator); final JSExpression lhs = assignmentExpression.getLOperand(); final String lhsText = lhs.getText(); - replaceStatement(statement, - lhsText + operatorText + conditionText + ';'); + replaceStatement(statement, lhsText + operatorText + conditionText + ';'); assert prevStatement != null; deleteElement(prevStatement); } - private void replaceSimplifiableImplicitReturnNegated(JSIfStatement statement) - throws IncorrectOperationException { + private void replaceSimplifiableImplicitReturnNegated(JSIfStatement statement) throws IncorrectOperationException { final JSExpression condition = statement.getCondition(); - final String conditionText = - BoolUtils.getNegatedExpressionText(condition); - final PsiElement nextStatement = - PsiTreeUtil.skipSiblingsForward(statement, - new Class[]{ - PsiWhiteSpace.class}); + final String conditionText = BoolUtils.getNegatedExpressionText(condition); + final PsiElement nextStatement = PsiTreeUtil.skipSiblingsForward(statement, new Class[]{PsiWhiteSpace.class}); if (nextStatement == null) { return; } @@ -204,39 +171,31 @@ private void replaceSimplifiableImplicitReturnNegated(JSIfStatement statement) deleteElement(nextStatement); } - private void repaceSimplifiableReturnNegated(JSIfStatement statement) - throws IncorrectOperationException { + private void repaceSimplifiableReturnNegated(JSIfStatement statement) throws IncorrectOperationException { final JSExpression condition = statement.getCondition(); - final String conditionText = - BoolUtils.getNegatedExpressionText(condition); + final String conditionText = BoolUtils.getNegatedExpressionText(condition); @NonNls final String newStatement = "return " + conditionText + ';'; replaceStatement(statement, newStatement); } - private void replaceSimplifiableAssignmentNegated(JSIfStatement statement) - throws IncorrectOperationException { + private void replaceSimplifiableAssignmentNegated(JSIfStatement statement) throws IncorrectOperationException { final JSExpression condition = statement.getCondition(); - final String conditionText = - BoolUtils.getNegatedExpressionText(condition); + final String conditionText = BoolUtils.getNegatedExpressionText(condition); final JSStatement thenBranch = statement.getThen(); - final JSExpressionStatement assignmentStatement = - (JSExpressionStatement) ConditionalUtils.stripBraces(thenBranch); - final JSAssignmentExpression assignmentExpression = - (JSAssignmentExpression) assignmentStatement.getExpression(); - final IElementType operator = - assignmentExpression.getOperationSign(); + final JSExpressionStatement assignmentStatement = (JSExpressionStatement) ConditionalUtils.stripBraces(thenBranch); + final JSAssignmentExpression assignmentExpression = (JSAssignmentExpression) assignmentStatement.getExpression(); + final IElementType operator = assignmentExpression.getOperationSign(); final String operatorText = getTextForOperator(operator); final JSExpression lhs = assignmentExpression.getLOperand(); final String lhsText = lhs.getText(); - replaceStatement(statement, - lhsText + operatorText + conditionText + ';'); + replaceStatement(statement, lhsText + operatorText + conditionText + ';'); } } private static class TrivialIfVisitor extends BaseInspectionVisitor { - - @Override public void visitJSIfStatement(@Nonnull JSIfStatement ifStatement) { + @Override + public void visitJSIfStatement(@Nonnull JSIfStatement ifStatement) { super.visitJSIfStatement(ifStatement); final JSExpression condition = ifStatement.getCondition(); if (condition == null) { @@ -287,17 +246,13 @@ public static boolean isSimplifiableImplicitReturn(JSIfStatement ifStatement) { } JSStatement thenBranch = ifStatement.getThen(); thenBranch = ConditionalUtils.stripBraces(thenBranch); - final PsiElement nextStatement = - PsiTreeUtil.skipSiblingsForward(ifStatement, - new Class[]{ - PsiWhiteSpace.class}); + final PsiElement nextStatement = PsiTreeUtil.skipSiblingsForward(ifStatement, new Class[]{PsiWhiteSpace.class}); if (!(nextStatement instanceof JSStatement)) { return false; } final JSStatement elseBranch = (JSStatement) nextStatement; - return ConditionalUtils.isReturn(thenBranch, "true") - && ConditionalUtils.isReturn(elseBranch, "false"); + return ConditionalUtils.isReturn(thenBranch, "true") && ConditionalUtils.isReturn(elseBranch, "false"); } public static boolean isSimplifiableImplicitReturnNegated(JSIfStatement ifStatement) { @@ -307,16 +262,12 @@ public static boolean isSimplifiableImplicitReturnNegated(JSIfStatement ifStatem JSStatement thenBranch = ifStatement.getThen(); thenBranch = ConditionalUtils.stripBraces(thenBranch); - final PsiElement nextStatement = - PsiTreeUtil.skipSiblingsForward(ifStatement, - new Class[]{ - PsiWhiteSpace.class}); + final PsiElement nextStatement = PsiTreeUtil.skipSiblingsForward(ifStatement, new Class[]{PsiWhiteSpace.class}); if (!(nextStatement instanceof JSStatement)) { return false; } final JSStatement elseBranch = (JSStatement) nextStatement; - return ConditionalUtils.isReturn(thenBranch, "false") - && ConditionalUtils.isReturn(elseBranch, "true"); + return ConditionalUtils.isReturn(thenBranch, "false") && ConditionalUtils.isReturn(elseBranch, "true"); } public static boolean isSimplifiableReturn(JSIfStatement ifStatement) { @@ -324,8 +275,7 @@ public static boolean isSimplifiableReturn(JSIfStatement ifStatement) { thenBranch = ConditionalUtils.stripBraces(thenBranch); JSStatement elseBranch = ifStatement.getElse(); elseBranch = ConditionalUtils.stripBraces(elseBranch); - return ConditionalUtils.isReturn(thenBranch, "true") - && ConditionalUtils.isReturn(elseBranch, "false"); + return ConditionalUtils.isReturn(thenBranch, "true") && ConditionalUtils.isReturn(elseBranch, "false"); } public static boolean isSimplifiableReturnNegated(JSIfStatement ifStatement) { @@ -333,8 +283,7 @@ public static boolean isSimplifiableReturnNegated(JSIfStatement ifStatement) { thenBranch = ConditionalUtils.stripBraces(thenBranch); JSStatement elseBranch = ifStatement.getElse(); elseBranch = ConditionalUtils.stripBraces(elseBranch); - return ConditionalUtils.isReturn(thenBranch, "false") - && ConditionalUtils.isReturn(elseBranch, "true"); + return ConditionalUtils.isReturn(thenBranch, "false") && ConditionalUtils.isReturn(elseBranch, "true"); } public static boolean isSimplifiableAssignment(JSIfStatement ifStatement) { @@ -342,12 +291,9 @@ public static boolean isSimplifiableAssignment(JSIfStatement ifStatement) { thenBranch = ConditionalUtils.stripBraces(thenBranch); JSStatement elseBranch = ifStatement.getElse(); elseBranch = ConditionalUtils.stripBraces(elseBranch); - if (ConditionalUtils.isAssignment(thenBranch, "true") && - ConditionalUtils.isAssignment(elseBranch, "false")) { - final JSAssignmentExpression thenExpression = - (JSAssignmentExpression) ((JSExpressionStatement) thenBranch).getExpression(); - final JSAssignmentExpression elseExpression = - (JSAssignmentExpression) ((JSExpressionStatement) elseBranch).getExpression(); + if (ConditionalUtils.isAssignment(thenBranch, "true") && ConditionalUtils.isAssignment(elseBranch, "false")) { + final JSAssignmentExpression thenExpression = (JSAssignmentExpression) ((JSExpressionStatement) thenBranch).getExpression(); + final JSAssignmentExpression elseExpression = (JSAssignmentExpression) ((JSExpressionStatement) elseBranch).getExpression(); final IElementType thenSign = thenExpression.getOperationSign(); final IElementType elseSign = elseExpression.getOperationSign(); if (!thenSign.equals(elseSign)) { @@ -355,8 +301,7 @@ public static boolean isSimplifiableAssignment(JSIfStatement ifStatement) { } final JSExpression thenLhs = thenExpression.getLOperand(); final JSExpression elseLhs = elseExpression.getLOperand(); - return EquivalenceChecker.expressionsAreEquivalent(thenLhs, - elseLhs); + return EquivalenceChecker.expressionsAreEquivalent(thenLhs, elseLhs); } else { return false; } @@ -367,12 +312,9 @@ public static boolean isSimplifiableAssignmentNegated(JSIfStatement ifStatement) thenBranch = ConditionalUtils.stripBraces(thenBranch); JSStatement elseBranch = ifStatement.getElse(); elseBranch = ConditionalUtils.stripBraces(elseBranch); - if (ConditionalUtils.isAssignment(thenBranch, "false") && - ConditionalUtils.isAssignment(elseBranch, "true")) { - final JSAssignmentExpression thenExpression = - (JSAssignmentExpression) ((JSExpressionStatement) thenBranch).getExpression(); - final JSAssignmentExpression elseExpression = - (JSAssignmentExpression) ((JSExpressionStatement) elseBranch).getExpression(); + if (ConditionalUtils.isAssignment(thenBranch, "false") && ConditionalUtils.isAssignment(elseBranch, "true")) { + final JSAssignmentExpression thenExpression = (JSAssignmentExpression) ((JSExpressionStatement) thenBranch).getExpression(); + final JSAssignmentExpression elseExpression = (JSAssignmentExpression) ((JSExpressionStatement) elseBranch).getExpression(); final IElementType thenSign = thenExpression.getOperationSign(); final IElementType elseSign = elseExpression.getOperationSign(); if (!thenSign.equals(elseSign)) { @@ -380,8 +322,7 @@ public static boolean isSimplifiableAssignmentNegated(JSIfStatement ifStatement) } final JSExpression thenLhs = thenExpression.getLOperand(); final JSExpression elseLhs = elseExpression.getLOperand(); - return EquivalenceChecker.expressionsAreEquivalent(thenLhs, - elseLhs); + return EquivalenceChecker.expressionsAreEquivalent(thenLhs, elseLhs); } else { return false; } @@ -393,22 +334,16 @@ public static boolean isSimplifiableImplicitAssignment(JSIfStatement ifStatement } JSStatement thenBranch = ifStatement.getThen(); thenBranch = ConditionalUtils.stripBraces(thenBranch); - final PsiElement nextStatement = - PsiTreeUtil.skipSiblingsBackward(ifStatement, - new Class[]{ - PsiWhiteSpace.class}); + final PsiElement nextStatement = PsiTreeUtil.skipSiblingsBackward(ifStatement, new Class[]{PsiWhiteSpace.class}); if (!(nextStatement instanceof JSStatement)) { return false; } JSStatement elseBranch = (JSStatement) nextStatement; elseBranch = ConditionalUtils.stripBraces(elseBranch); - if (ConditionalUtils.isAssignment(thenBranch, "true") && - ConditionalUtils.isAssignment(elseBranch, "false")) { - final JSAssignmentExpression thenExpression = - (JSAssignmentExpression) ((JSExpressionStatement) thenBranch).getExpression(); - final JSAssignmentExpression elseExpression = - (JSAssignmentExpression) ((JSExpressionStatement) elseBranch).getExpression(); + if (ConditionalUtils.isAssignment(thenBranch, "true") && ConditionalUtils.isAssignment(elseBranch, "false")) { + final JSAssignmentExpression thenExpression = (JSAssignmentExpression) ((JSExpressionStatement) thenBranch).getExpression(); + final JSAssignmentExpression elseExpression = (JSAssignmentExpression) ((JSExpressionStatement) elseBranch).getExpression(); final IElementType thenSign = thenExpression.getOperationSign(); final IElementType elseSign = elseExpression.getOperationSign(); if (!thenSign.equals(elseSign)) { @@ -416,8 +351,7 @@ public static boolean isSimplifiableImplicitAssignment(JSIfStatement ifStatement } final JSExpression thenLhs = thenExpression.getLOperand(); final JSExpression elseLhs = elseExpression.getLOperand(); - return EquivalenceChecker.expressionsAreEquivalent(thenLhs, - elseLhs); + return EquivalenceChecker.expressionsAreEquivalent(thenLhs, elseLhs); } else { return false; } @@ -429,22 +363,16 @@ public static boolean isSimplifiableImplicitAssignmentNegated(JSIfStatement ifSt } JSStatement thenBranch = ifStatement.getThen(); thenBranch = ConditionalUtils.stripBraces(thenBranch); - final PsiElement nextStatement = - PsiTreeUtil.skipSiblingsBackward(ifStatement, - new Class[]{ - PsiWhiteSpace.class}); + final PsiElement nextStatement = PsiTreeUtil.skipSiblingsBackward(ifStatement, new Class[]{PsiWhiteSpace.class}); if (!(nextStatement instanceof JSStatement)) { return false; } JSStatement elseBranch = (JSStatement) nextStatement; elseBranch = ConditionalUtils.stripBraces(elseBranch); - if (ConditionalUtils.isAssignment(thenBranch, "false") && - ConditionalUtils.isAssignment(elseBranch, "true")) { - final JSAssignmentExpression thenExpression = - (JSAssignmentExpression) ((JSExpressionStatement) thenBranch).getExpression(); - final JSAssignmentExpression elseExpression = - (JSAssignmentExpression) ((JSExpressionStatement) elseBranch).getExpression(); + if (ConditionalUtils.isAssignment(thenBranch, "false") && ConditionalUtils.isAssignment(elseBranch, "true")) { + final JSAssignmentExpression thenExpression = (JSAssignmentExpression) ((JSExpressionStatement) thenBranch).getExpression(); + final JSAssignmentExpression elseExpression = (JSAssignmentExpression) ((JSExpressionStatement) elseBranch).getExpression(); final IElementType thenSign = thenExpression.getOperationSign(); final IElementType elseSign = elseExpression.getOperationSign(); if (!thenSign.equals(elseSign)) { @@ -452,8 +380,7 @@ public static boolean isSimplifiableImplicitAssignmentNegated(JSIfStatement ifSt } final JSExpression thenLhs = thenExpression.getLOperand(); final JSExpression elseLhs = elseExpression.getLOperand(); - return EquivalenceChecker.expressionsAreEquivalent(thenLhs, - elseLhs); + return EquivalenceChecker.expressionsAreEquivalent(thenLhs, elseLhs); } else { return false; } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryContinueJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryContinueJSInspection.java index 9858989a..99d122e5 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryContinueJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryContinueJSInspection.java @@ -1,7 +1,11 @@ package com.sixrr.inspectjs.control; import com.intellij.lang.javascript.psi.*; -import com.sixrr.inspectjs.*; +import com.sixrr.inspectjs.BaseInspectionVisitor; +import com.sixrr.inspectjs.InspectionJSFix; +import com.sixrr.inspectjs.JSGroupNames; +import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import com.sixrr.inspectjs.utils.ControlFlowUtils; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; @@ -16,69 +20,64 @@ public class UnnecessaryContinueJSInspection extends JavaScriptInspection { private final UnnecessaryContinueFix fix = new UnnecessaryContinueFix(); @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("unnecessary.continue.statement.display.name"); + return InspectionJSLocalize.unnecessaryContinueStatementDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } @Override - public boolean isEnabledByDefault() { + public boolean isEnabledByDefault() { return true; } @RequiredReadAction - @Override - public String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("unnecessary.continue.error.string"); + @Override + public String buildErrorString(Object state, Object... args) { + return InspectionJSLocalize.unnecessaryContinueErrorString().get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new Visitor(); } @Override - public InspectionJSFix buildFix(PsiElement location, Object state) { + public InspectionJSFix buildFix(PsiElement location, Object state) { return fix; } private static class UnnecessaryContinueFix extends InspectionJSFix { @Override - @Nonnull + @Nonnull public String getName() { - return InspectionJSBundle.message("remove.unnecessary.continue.fix"); + return InspectionJSLocalize.removeUnnecessaryContinueFix().get(); } @Override - public void doFix(Project project, ProblemDescriptor descriptor) - throws IncorrectOperationException { + public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { final PsiElement continueKeywordElement = descriptor.getPsiElement(); - final PsiElement continueStatement = - continueKeywordElement.getParent(); + final PsiElement continueStatement = continueKeywordElement.getParent(); assert continueStatement != null; deleteElement(continueStatement); } } - private static class Visitor - extends BaseInspectionVisitor { - - @Override public void visitJSContinueStatement(@Nonnull JSContinueStatement statement) { - - JSStatement continuedStatement = - statement.getStatementToContinue(); + private static class Visitor extends BaseInspectionVisitor { + @Override + public void visitJSContinueStatement(@Nonnull JSContinueStatement statement) { + JSStatement continuedStatement = statement.getStatementToContinue(); if (continuedStatement == null) { return; } - if(continuedStatement instanceof JSLabeledStatement) + if (continuedStatement instanceof JSLabeledStatement labeledStatement) { - continuedStatement = ((JSLabeledStatement)continuedStatement).getStatement(); + continuedStatement = labeledStatement.getStatement(); } if (!(continuedStatement instanceof JSLoopStatement)) { return; @@ -87,16 +86,12 @@ private static class Visitor if (body == null) { return; } - if (body instanceof JSBlockStatement) { - if (ControlFlowUtils.blockCompletesWithStatement((JSBlockStatement) body, - statement)) { - registerStatementError(statement); - } - } else { - if (ControlFlowUtils.statementCompletesWithStatement(body, - statement)) { + if (body instanceof JSBlockStatement blockStatement) { + if (ControlFlowUtils.blockCompletesWithStatement(blockStatement, statement)) { registerStatementError(statement); } + } else if (ControlFlowUtils.statementCompletesWithStatement(body, statement)) { + registerStatementError(statement); } } } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelJSInspection.java index a6a37150..b1104809 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelJSInspection.java @@ -1,71 +1,66 @@ package com.sixrr.inspectjs.control; -import consulo.annotation.access.RequiredReadAction; -import consulo.annotation.component.ExtensionImpl; -import consulo.language.editor.inspection.ProblemDescriptor; import com.intellij.lang.javascript.psi.JSBreakStatement; import com.intellij.lang.javascript.psi.JSContinueStatement; import com.intellij.lang.javascript.psi.JSLabeledStatement; import com.intellij.lang.javascript.psi.JSStatement; +import com.sixrr.inspectjs.*; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; +import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.component.ExtensionImpl; +import consulo.language.editor.inspection.ProblemDescriptor; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; -import com.sixrr.inspectjs.*; import consulo.project.Project; - import jakarta.annotation.Nonnull; @ExtensionImpl public class UnnecessaryLabelJSInspection extends JavaScriptInspection { - @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("unnecessary.label.display.name"); + return InspectionJSLocalize.unnecessaryLabelDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } @Override - public boolean isEnabledByDefault() { + public boolean isEnabledByDefault() { return true; } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new UnusedLabelVisitor(); } @RequiredReadAction - @Override - @Nonnull + @Override + @Nonnull protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("unnecessary.label.error.string"); - + return InspectionJSLocalize.unnecessaryLabelErrorString().get(); } @Override - public InspectionJSFix buildFix(PsiElement location, Object state) { + public InspectionJSFix buildFix(PsiElement location, Object state) { return new UnusedLabelFix(); } private static class UnusedLabelFix extends InspectionJSFix { - @Override - @Nonnull + @Nonnull public String getName() { - return InspectionJSBundle.message("remove.label.fix"); + return InspectionJSLocalize.removeLabelFix().get(); } @Override - public void doFix(Project project, ProblemDescriptor descriptor) - throws IncorrectOperationException { + public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { final PsiElement label = descriptor.getPsiElement(); - final JSLabeledStatement statement = - (JSLabeledStatement) label.getParent(); + final JSLabeledStatement statement = (JSLabeledStatement) label.getParent(); assert statement != null; final JSStatement labeledStatement = statement.getStatement(); if (labeledStatement == null) { @@ -77,18 +72,16 @@ public void doFix(Project project, ProblemDescriptor descriptor) } private static class UnusedLabelVisitor extends BaseInspectionVisitor { - - @Override public void visitJSLabeledStatement(JSLabeledStatement statement) { + @Override + public void visitJSLabeledStatement(JSLabeledStatement statement) { if (containsBreakOrContinueForLabel(statement)) { return; } - final PsiElement labelIdentifier = - statement.getLabelIdentifier(); + final PsiElement labelIdentifier = statement.getLabelIdentifier(); registerError(labelIdentifier); } - private static boolean containsBreakOrContinueForLabel( - JSLabeledStatement statement) { + private static boolean containsBreakOrContinueForLabel(JSLabeledStatement statement) { final LabelFinder labelFinder = new LabelFinder(statement); statement.accept(labelFinder); return labelFinder.jumpFound(); @@ -96,7 +89,6 @@ private static boolean containsBreakOrContinueForLabel( } private static class LabelFinder extends JSRecursiveElementVisitor { - private boolean found = false; private String label = null; @@ -106,14 +98,15 @@ private LabelFinder(JSLabeledStatement target) { label = labelIdentifier.getText(); } - @Override public void visitElement(@Nonnull PsiElement element) { + @Override + public void visitElement(@Nonnull PsiElement element) { if (!found) { super.visitElement(element); } } - @Override public void visitJSContinueStatement( - @Nonnull JSContinueStatement continueStatement) { + @Override + public void visitJSContinueStatement(@Nonnull JSContinueStatement continueStatement) { if (found) { return; } @@ -124,8 +117,8 @@ private LabelFinder(JSLabeledStatement target) { } } - @Override public void visitJSBreakStatement( - @Nonnull JSBreakStatement breakStatement) { + @Override + public void visitJSBreakStatement(@Nonnull JSBreakStatement breakStatement) { if (found) { return; } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/dataflow/ReuseOfLocalVariableJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/dataflow/ReuseOfLocalVariableJSInspection.java index 247c00c0..f2cf294b 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/dataflow/ReuseOfLocalVariableJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/dataflow/ReuseOfLocalVariableJSInspection.java @@ -3,29 +3,26 @@ import com.intellij.lang.javascript.JSTokenTypes; import com.intellij.lang.javascript.psi.*; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; import consulo.language.psi.PsiElement; import consulo.language.psi.PsiReference; import consulo.language.psi.util.PsiTreeUtil; - import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class ReuseOfLocalVariableJSInspection extends JavaScriptInspection { - @Override @Nonnull public String getDisplayName() { - return InspectionJSBundle.message( - "reuse.of.local.variable.display.name"); + return InspectionJSLocalize.reuseOfLocalVariableDisplayName().get(); } @Override @@ -40,24 +37,19 @@ public String getGroupDisplayName() @Nonnull public String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message( - "reuse.of.local.variable.problem.descriptor"); + return InspectionJSLocalize.reuseOfLocalVariableProblemDescriptor().get(); } - @Override public BaseInspectionVisitor buildVisitor() { return new ReuseOfLocalVariableVisitor(); } - private static class ReuseOfLocalVariableVisitor - extends BaseInspectionVisitor + private static class ReuseOfLocalVariableVisitor extends BaseInspectionVisitor { - @Override - public void visitJSAssignmentExpression( - @Nonnull JSAssignmentExpression assignment) + public void visitJSAssignmentExpression(@Nonnull JSAssignmentExpression assignment) { super.visitJSAssignmentExpression(assignment); if(assignment.getROperand() == null) @@ -119,8 +111,7 @@ public void visitJSAssignmentExpression( // that a variable is used in only one branch of a try statement return; } - final PsiElement assignmentBlock = - assignmentParent.getParent(); + final PsiElement assignmentBlock = assignmentParent.getParent(); if(assignmentBlock == null) { return; @@ -131,8 +122,7 @@ public void visitJSAssignmentExpression( return; } final JSStatement[] statements = variableBlock.getStatements(); - final PsiElement containingStatement = - getChildWhichContainsElement(variableBlock, assignment); + final PsiElement containingStatement = getChildWhichContainsElement(variableBlock, assignment); int statementPosition = -1; for(int i = 0; i < statements.length; i++) { @@ -156,8 +146,7 @@ public void visitJSAssignmentExpression( registerError(lhs); } - private static boolean loopExistsBetween( - JSAssignmentExpression assignment, JSBlockStatement block) + private static boolean loopExistsBetween(JSAssignmentExpression assignment, JSBlockStatement block) { PsiElement elementToTest = assignment; while(elementToTest != null) @@ -175,8 +164,7 @@ private static boolean loopExistsBetween( return false; } - private static boolean tryExistsBetween( - JSAssignmentExpression assignment, JSBlockStatement block) + private static boolean tryExistsBetween(JSAssignmentExpression assignment, JSBlockStatement block) { PsiElement elementToTest = assignment; while(elementToTest != null) @@ -198,9 +186,7 @@ private static boolean tryExistsBetween( * @noinspection AssignmentToMethodParameter */ @Nullable - public static PsiElement getChildWhichContainsElement( - @Nonnull JSBlockStatement ancestor, - @Nonnull PsiElement descendant) + public static PsiElement getChildWhichContainsElement(@Nonnull JSBlockStatement ancestor, @Nonnull PsiElement descendant) { PsiElement element = descendant; while(!element.equals(ancestor)) diff --git a/inspections/src/main/java/com/sixrr/inspectjs/dom/InnerHTMLJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/dom/InnerHTMLJSInspection.java index 3ddbdcd2..2b52ebfc 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/dom/InnerHTMLJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/dom/InnerHTMLJSInspection.java @@ -2,48 +2,47 @@ import com.intellij.lang.javascript.psi.JSReferenceExpression; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; - import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class InnerHTMLJSInspection extends JavaScriptInspection { - @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("use.of.innerhtml.property.display.name"); + return InspectionJSLocalize.useOfInnerhtmlPropertyDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.DOM_GROUP_NAME; } @RequiredReadAction - @Override - @Nullable + @Override + @Nullable protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("inner.html.error.string"); + return InspectionJSLocalize.innerHtmlErrorString().get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new Visitor(); } private static class Visitor extends BaseInspectionVisitor { @SuppressWarnings({"HardCodedStringLiteral"}) - @Override public void visitJSReferenceExpression(JSReferenceExpression expression) { + @Override + public void visitJSReferenceExpression(JSReferenceExpression expression) { super.visitJSReferenceExpression(expression); final String referenceName = expression.getReferencedName(); - if(!"innerHTML".equalsIgnoreCase(referenceName)) + if (!"innerHTML".equalsIgnoreCase(referenceName)) { return; } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/dom/PlatformDetectionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/dom/PlatformDetectionJSInspection.java index 8f3cf5c5..344990a9 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/dom/PlatformDetectionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/dom/PlatformDetectionJSInspection.java @@ -3,39 +3,37 @@ import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.lang.javascript.psi.JSReferenceExpression; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import jakarta.annotation.Nonnull; - import jakarta.annotation.Nullable; @ExtensionImpl public class PlatformDetectionJSInspection extends JavaScriptInspection { - @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("platform.detection.display.name"); + return InspectionJSLocalize.platformDetectionDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.DOM_GROUP_NAME; } @RequiredReadAction - @Override - @Nullable + @Override + @Nullable protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("platform.detection.error.string"); + return InspectionJSLocalize.platformDetectionErrorString().get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new Visitor(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/exception/ReturnFromFinallyBlockJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/exception/ReturnFromFinallyBlockJSInspection.java index a015acc3..05879706 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/exception/ReturnFromFinallyBlockJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/exception/ReturnFromFinallyBlockJSInspection.java @@ -2,54 +2,53 @@ import com.intellij.lang.javascript.psi.JSReturnStatement; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import com.sixrr.inspectjs.utils.ControlFlowUtils; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; - import jakarta.annotation.Nonnull; @ExtensionImpl public class ReturnFromFinallyBlockJSInspection extends JavaScriptInspection { @Override - @Nonnull + @Nonnull public String getID() { return "ReturnInsideFinallyBlockJS"; } @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("return.inside.finally.block.display.name"); + return InspectionJSLocalize.returnInsideFinallyBlockDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.ERRORHANDLING_GROUP_NAME; } @Override - public boolean isEnabledByDefault() { + public boolean isEnabledByDefault() { return true; } @RequiredReadAction - @Override - public String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("return.inside.finally.block.error.string"); + @Override + public String buildErrorString(Object state, Object... args) { + return InspectionJSLocalize.returnInsideFinallyBlockErrorString().get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new Visitor(); } private static class Visitor extends BaseInspectionVisitor { - - @Override public void visitJSReturnStatement(@Nonnull JSReturnStatement statement) { + @Override + public void visitJSReturnStatement(@Nonnull JSReturnStatement statement) { super.visitJSReturnStatement(statement); if (!ControlFlowUtils.isInFinallyBlock(statement)) { return; diff --git a/inspections/src/main/java/com/sixrr/inspectjs/exception/ThrowFromFinallyBlockJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/exception/ThrowFromFinallyBlockJSInspection.java index a58ddf57..403a6fc8 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/exception/ThrowFromFinallyBlockJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/exception/ThrowFromFinallyBlockJSInspection.java @@ -1,55 +1,54 @@ package com.sixrr.inspectjs.exception; -import jakarta.annotation.Nonnull; - import com.intellij.lang.javascript.psi.JSThrowStatement; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import com.sixrr.inspectjs.utils.ControlFlowUtils; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import jakarta.annotation.Nonnull; @ExtensionImpl public class ThrowFromFinallyBlockJSInspection extends JavaScriptInspection { @Override - @Nonnull + @Nonnull public String getID() { return "ThrowInsideFinallyBlockJS"; } @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("throw.inside.finally.block.display.name"); + return InspectionJSLocalize.throwInsideFinallyBlockDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.ERRORHANDLING_GROUP_NAME; } @Override - public boolean isEnabledByDefault() { + public boolean isEnabledByDefault() { return true; } @RequiredReadAction - @Override - public String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("throw.inside.finally.block.error.string"); + @Override + public String buildErrorString(Object state, Object... args) { + return InspectionJSLocalize.throwInsideFinallyBlockErrorString().get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new Visitor(); } private static class Visitor extends BaseInspectionVisitor { - - @Override public void visitJSThrowStatement(@Nonnull JSThrowStatement statement) { + @Override + public void visitJSThrowStatement(@Nonnull JSThrowStatement statement) { super.visitJSThrowStatement(statement); if (!ControlFlowUtils.isInFinallyBlock(statement)) { return; @@ -57,4 +56,4 @@ private static class Visitor extends BaseInspectionVisitor { registerStatementError(statement); } } -} \ No newline at end of file +} diff --git a/inspections/src/main/java/com/sixrr/inspectjs/fix/RenameFix.java b/inspections/src/main/java/com/sixrr/inspectjs/fix/RenameFix.java index 7e64ffab..77d3e9ef 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/fix/RenameFix.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/fix/RenameFix.java @@ -1,15 +1,15 @@ package com.sixrr.inspectjs.fix; -import consulo.language.editor.refactoring.RefactoringFactory; -import consulo.project.Project; +import com.sixrr.inspectjs.InspectionJSFix; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.dataContext.DataManager; import consulo.language.editor.inspection.ProblemDescriptor; -import consulo.language.psi.PsiElement; -import consulo.language.editor.refactoring.action.RefactoringActionHandlerFactory; -import consulo.language.editor.refactoring.action.RefactoringActionHandler; +import consulo.language.editor.refactoring.RefactoringFactory; import consulo.language.editor.refactoring.RenameRefactoring; -import com.sixrr.inspectjs.InspectionJSFix; -import com.sixrr.inspectjs.InspectionJSBundle; +import consulo.language.editor.refactoring.action.RefactoringActionHandler; +import consulo.language.editor.refactoring.action.RefactoringActionHandlerFactory; +import consulo.language.psi.PsiElement; +import consulo.project.Project; import jakarta.annotation.Nonnull; public class RenameFix extends InspectionJSFix { @@ -26,22 +26,19 @@ public RenameFix(String targetName) { } @Override - @Nonnull + @Nonnull public String getName() { - if (m_targetName == null) { - return InspectionJSBundle.message("rename.fix"); - } else { - return InspectionJSBundle.message("rename.to.fix", m_targetName); - } + return m_targetName == null + ? InspectionJSLocalize.renameFix().get() + : InspectionJSLocalize.renameToFix(m_targetName).get(); } @Override - public void doFix(Project project, ProblemDescriptor descriptor) { + public void doFix(Project project, ProblemDescriptor descriptor) { final PsiElement nameIdentifier = descriptor.getPsiElement(); final PsiElement elementToRename = nameIdentifier.getParent(); if (m_targetName == null) { - final RefactoringActionHandlerFactory factory = - RefactoringActionHandlerFactory.getInstance(); + final RefactoringActionHandlerFactory factory = RefactoringActionHandlerFactory.getInstance(); final RefactoringActionHandler renameHandler = factory.createRenameHandler(); renameHandler.invoke(project, new PsiElement[]{elementToRename}, DataManager.getInstance().getDataContext()); } else { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/NestingDepthJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/NestingDepthJSInspection.java index fc77aa9b..3abd5190 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/NestingDepthJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/NestingDepthJSInspection.java @@ -2,14 +2,13 @@ import com.intellij.lang.javascript.psi.JSFunction; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.inspection.InspectionToolState; import consulo.language.psi.PsiElement; - import jakarta.annotation.Nonnull; @ExtensionImpl @@ -26,7 +25,7 @@ public String getID() @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("overly.nested.function.display.name"); + return InspectionJSLocalize.overlyNestedFunctionDisplayName().get(); } @Override @@ -52,14 +51,9 @@ public String buildErrorString(Object state, Object... args) final NestingDepthVisitor visitor = new NestingDepthVisitor(); function.accept(visitor); final int nestingDepth = visitor.getMaximumDepth(); - if(functionHasIdentifier(function)) - { - return InspectionJSBundle.message("function.is.overly.nested.error.string", nestingDepth); - } - else - { - return InspectionJSBundle.message("anonymous.function.is.overly.nested.error.string", nestingDepth); - } + return functionHasIdentifier(function) + ? InspectionJSLocalize.functionIsOverlyNestedErrorString(nestingDepth).get() + : InspectionJSLocalize.anonymousFunctionIsOverlyNestedErrorString(nestingDepth).get(); } @Override @@ -70,7 +64,6 @@ public BaseInspectionVisitor buildVisitor() private class Visitor extends BaseInspectionVisitor { - @Override public void visitJSFunctionDeclaration(@Nonnull JSFunction function) { @@ -78,11 +71,9 @@ public void visitJSFunctionDeclaration(@Nonnull JSFunction function) function.accept(visitor); final int count = visitor.getMaximumDepth(); - if(count <= myState.getLimit()) - { - return; + if (count > myState.getLimit()) { + registerFunctionError(function); } - registerFunctionError(function); } } } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/ParametersPerFunctionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/ParametersPerFunctionJSInspection.java index e382b0e0..ec48c69f 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/ParametersPerFunctionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/ParametersPerFunctionJSInspection.java @@ -4,14 +4,13 @@ import com.intellij.lang.javascript.psi.JSParameter; import com.intellij.lang.javascript.psi.JSParameterList; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.inspection.InspectionToolState; import consulo.language.psi.PsiElement; - import jakarta.annotation.Nonnull; @ExtensionImpl @@ -28,7 +27,7 @@ public String getID() @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("function.with.too.many.parameters.display.name"); + return InspectionJSLocalize.functionWithTooManyParametersDisplayName().get(); } @Override @@ -54,14 +53,9 @@ public String buildErrorString(Object state, Object... args) final JSParameterList parameterList = function.getParameterList(); final JSParameter[] parameters = parameterList.getParameters(); final int numParameters = parameters.length; - if(functionHasIdentifier(function)) - { - return InspectionJSBundle.message("function.has.too.many.parameters.error.string", numParameters); - } - else - { - return InspectionJSBundle.message("anonymous.function.has.too.many.parameters.error.string", numParameters); - } + return functionHasIdentifier(function) + ? InspectionJSLocalize.functionHasTooManyParametersErrorString(numParameters).get() + : InspectionJSLocalize.anonymousFunctionHasTooManyParametersErrorString(numParameters).get(); } @Override @@ -72,7 +66,6 @@ public BaseInspectionVisitor buildVisitor() private class Visitor extends BaseInspectionVisitor { - @Override public void visitJSFunctionDeclaration(@Nonnull JSFunction function) { @@ -95,4 +88,3 @@ public void visitJSFunctionDeclaration(@Nonnull JSFunction function) } } } - diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/StatementsPerFunctionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/StatementsPerFunctionJSInspection.java index f03377d1..65e1cf21 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/StatementsPerFunctionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/StatementsPerFunctionJSInspection.java @@ -3,14 +3,13 @@ import com.intellij.lang.javascript.psi.JSBlockStatement; import com.intellij.lang.javascript.psi.JSFunction; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.inspection.InspectionToolState; import consulo.language.psi.PsiElement; - import jakarta.annotation.Nonnull; @ExtensionImpl @@ -27,7 +26,7 @@ public String getID() @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("overly.long.function.display.name"); + return InspectionJSLocalize.overlyLongFunctionDisplayName().get(); } @Override @@ -55,14 +54,9 @@ public String buildErrorString(Object state, Object... args) assert lastChild != null; lastChild.accept(visitor); final int coupling = visitor.getStatementCount(); - if(functionHasIdentifier(function)) - { - return InspectionJSBundle.message("function.is.overly.long.statement.error.string", coupling); - } - else - { - return InspectionJSBundle.message("anonymous.function.is.overly.long.statement.error.string", coupling); - } + return functionHasIdentifier(function) + ? InspectionJSLocalize.functionIsOverlyLongStatementErrorString(coupling).get() + : InspectionJSLocalize.anonymousFunctionIsOverlyLongStatementErrorString(coupling).get(); } @Override @@ -73,7 +67,6 @@ public BaseInspectionVisitor buildVisitor() private class Visitor extends BaseInspectionVisitor { - @Override public void visitJSFunctionDeclaration(@Nonnull JSFunction function) { @@ -95,4 +88,3 @@ public void visitJSFunctionDeclaration(@Nonnull JSFunction function) } } } - diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/ThreeNegationsPerFunctionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/ThreeNegationsPerFunctionJSInspection.java index bf44209b..3d319b7b 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/ThreeNegationsPerFunctionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/ThreeNegationsPerFunctionJSInspection.java @@ -3,39 +3,37 @@ import com.intellij.lang.javascript.psi.JSBlockStatement; import com.intellij.lang.javascript.psi.JSFunction; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; - import jakarta.annotation.Nonnull; @ExtensionImpl public class ThreeNegationsPerFunctionJSInspection extends JavaScriptInspection { - @Override - @Nonnull + @Nonnull public String getID() { return "FunctionWithMoreThanThreeNegationsJS"; } @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("function.with.more.than.three.negations.display.name"); + return InspectionJSLocalize.functionWithMoreThanThreeNegationsDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.FUNCTIONMETRICS_GROUP_NAME; } @RequiredReadAction - @Override - public String buildErrorString(Object state, Object... args) { + @Override + public String buildErrorString(Object state, Object... args) { final JSFunction function = (JSFunction) ((PsiElement) args[0]).getParent(); assert function != null; final PsiElement lastChild = function.getLastChild(); @@ -43,21 +41,19 @@ public String buildErrorString(Object state, Object... args) { assert lastChild != null; lastChild.accept(visitor); final int negationCount = visitor.getNegationCount(); - if (functionHasIdentifier(function)) { - return InspectionJSBundle.message("function.contains.too.many.negation.error.string", negationCount); - } else { - return InspectionJSBundle.message("anonymous.function.contains.too.many.negation.error.string", negationCount); - } + return functionHasIdentifier(function) + ? InspectionJSLocalize.functionContainsTooManyNegationErrorString(negationCount).get() + : InspectionJSLocalize.anonymousFunctionContainsTooManyNegationErrorString(negationCount).get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new Visitor(); } private static class Visitor extends BaseInspectionVisitor { - - @Override public void visitJSFunctionDeclaration(@Nonnull JSFunction function) { + @Override + public void visitJSFunctionDeclaration(@Nonnull JSFunction function) { final NegationCountVisitor visitor = new NegationCountVisitor(); final PsiElement lastChild = function.getLastChild(); if (!(lastChild instanceof JSBlockStatement)) { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/naming/LocalVariableNamingConventionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/naming/LocalVariableNamingConventionJSInspection.java index f1bd22e7..a2213e74 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/naming/LocalVariableNamingConventionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/naming/LocalVariableNamingConventionJSInspection.java @@ -3,15 +3,14 @@ import com.intellij.lang.javascript.psi.JSVarStatement; import com.intellij.lang.javascript.psi.JSVariable; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.InspectionJSFix; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.fix.RenameFix; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.inspection.InspectionToolState; import consulo.language.psi.PsiElement; - import jakarta.annotation.Nonnull; @ExtensionImpl @@ -29,7 +28,7 @@ public boolean isEnabledByDefault() @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("local.variable.naming.convention.display.name"); + return InspectionJSLocalize.localVariableNamingConventionDisplayName().get(); } @Override @@ -60,15 +59,15 @@ public String buildErrorString(Object state, Object... args) final JSVariable variable = (JSVariable) ((PsiElement) args[0]).getParent(); assert variable != null; final String variableName = variable.getName(); - if(variableName.length() < inspectionState.m_minLength) + if (variableName.length() < inspectionState.m_minLength) { - return InspectionJSBundle.message("variable.name.is.too.short.error.string"); + return InspectionJSLocalize.variableNameIsTooShortErrorString().get(); } - else if(variableName.length() > inspectionState.m_maxLength) + else if (variableName.length() > inspectionState.m_maxLength) { - return InspectionJSBundle.message("variable.name.is.too.long.error.string"); + return InspectionJSLocalize.variableNameIsTooLongErrorString().get(); } - return InspectionJSBundle.message("variable.name.doesnt.match.regex.error.string", inspectionState.m_regex); + return InspectionJSLocalize.variableNameDoesntMatchRegexErrorString(inspectionState.m_regex).get(); } @Nonnull @@ -91,20 +90,19 @@ public void visitJSVarStatement(JSVarStatement jsVarStatement) { super.visitJSVarStatement(jsVarStatement); final JSVariable[] variables = jsVarStatement.getVariables(); - for(JSVariable variable : variables) + for (JSVariable variable : variables) { final String name = variable.getName(); - if(name == null) + if (name == null) { continue; } - if(isValid(name, myState)) + if (isValid(name, myState)) { continue; } registerVariableError(variable); } } - } } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/naming/ParameterNamingConventionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/naming/ParameterNamingConventionJSInspection.java index 51e6add9..bdfdbc63 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/naming/ParameterNamingConventionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/naming/ParameterNamingConventionJSInspection.java @@ -5,15 +5,14 @@ import com.intellij.lang.javascript.psi.JSParameterList; import com.intellij.lang.javascript.psi.JSVariable; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.InspectionJSFix; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.fix.RenameFix; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.inspection.InspectionToolState; import consulo.language.psi.PsiElement; - import jakarta.annotation.Nonnull; @ExtensionImpl @@ -31,7 +30,7 @@ public boolean isEnabledByDefault() @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("function.parameter.naming.convention.display.name"); + return InspectionJSLocalize.functionParameterNamingConventionDisplayName().get(); } @Nonnull @@ -69,15 +68,15 @@ public String buildErrorString(Object state, Object... args) final JSParameter parameter = (JSParameter) ((PsiElement) args[0]).getParent(); assert parameter != null; final String parameterName = parameter.getName(); - if(parameterName.length() < inspectionState.m_minLength) + if (parameterName.length() < inspectionState.m_minLength) { - return InspectionJSBundle.message("parameter.name.is.too.short.error.string"); + return InspectionJSLocalize.parameterNameIsTooShortErrorString().get(); } - else if(parameterName.length() > inspectionState.m_maxLength) + else if (parameterName.length() > inspectionState.m_maxLength) { - return InspectionJSBundle.message("parameter.name.is.too.long.error.string"); + return InspectionJSLocalize.parameterNameIsTooLongErrorString().get(); } - return InspectionJSBundle.message("parameter.name.doesnt.match.regex.error.string", inspectionState.m_regex); + return InspectionJSLocalize.parameterNameDoesntMatchRegexErrorString(inspectionState.m_regex).get(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/style/NestedFunctionCallJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/style/NestedFunctionCallJSInspection.java index f158d5b7..83f37bc6 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/style/NestedFunctionCallJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/style/NestedFunctionCallJSInspection.java @@ -4,16 +4,14 @@ import com.intellij.lang.javascript.psi.JSCallExpression; import com.intellij.lang.javascript.psi.JSExpression; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; - import jakarta.annotation.Nonnull; - @ExtensionImpl public class NestedFunctionCallJSInspection extends JavaScriptInspection { @@ -34,8 +32,7 @@ public String getGroupDisplayName() @Nonnull public String getDisplayName() { - return InspectionJSBundle.message( - "nested.function.call.display.name"); + return InspectionJSLocalize.nestedFunctionCallDisplayName().get(); } @RequiredReadAction @@ -43,8 +40,7 @@ public String getDisplayName() @Nonnull protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message( - "nested.function.call.problem.descriptor"); + return InspectionJSLocalize.nestedFunctionCallProblemDescriptor().get(); } @Override @@ -55,30 +51,21 @@ public BaseInspectionVisitor buildVisitor() private static class NestedMethodCallVisitor extends BaseInspectionVisitor { - @Override - public void visitJSCallExpression( - @Nonnull JSCallExpression expression) + public void visitJSCallExpression(@Nonnull JSCallExpression expression) { super.visitJSCallExpression(expression); JSExpression outerExpression = expression; - while(outerExpression != null && - outerExpression.getParent() instanceof JSExpression) + while (outerExpression != null && outerExpression.getParent() instanceof JSExpression parentExpression) { - outerExpression = (JSExpression) outerExpression.getParent(); + outerExpression = parentExpression; } - if(outerExpression == null) + if (outerExpression == null) { return; } final PsiElement parent = outerExpression.getParent(); - if(!(parent instanceof JSArgumentList)) - { - return; - } - final PsiElement grandParent = parent.getParent(); - if(!(grandParent instanceof JSCallExpression)) - { + if (!(parent instanceof JSArgumentList && parent.getParent() instanceof JSCallExpression)) { return; } registerFunctionCallError(expression); diff --git a/inspections/src/main/java/com/sixrr/inspectjs/style/NonBlockStatementBodyJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/style/NonBlockStatementBodyJSInspection.java index 75b431ca..366a0606 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/style/NonBlockStatementBodyJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/style/NonBlockStatementBodyJSInspection.java @@ -1,14 +1,17 @@ package com.sixrr.inspectjs.style; import com.intellij.lang.javascript.psi.*; -import com.sixrr.inspectjs.*; +import com.sixrr.inspectjs.BaseInspectionVisitor; +import com.sixrr.inspectjs.InspectionJSFix; +import com.sixrr.inspectjs.JSGroupNames; +import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.inspection.ProblemDescriptor; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; import consulo.project.Project; - import jakarta.annotation.Nonnull; @ExtensionImpl @@ -16,51 +19,48 @@ public class NonBlockStatementBodyJSInspection extends JavaScriptInspection { private InspectionJSFix fix = new WrapBodyFix(); @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("non.block.statement.body.display.name"); + return InspectionJSLocalize.nonBlockStatementBodyDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.STYLE_GROUP_NAME; } @Override - public boolean isEnabledByDefault() { + public boolean isEnabledByDefault() { return false; } @RequiredReadAction - @Override - public String buildErrorString(Object state, Object... args) { - if (args[0] instanceof JSIfStatement) { - return InspectionJSBundle.message("non.block.branch.error.string"); - } else { - return InspectionJSBundle.message("non.block.body.error.string"); - } + @Override + public String buildErrorString(Object state, Object... args) { + return args[0] instanceof JSIfStatement + ? InspectionJSLocalize.nonBlockBranchErrorString().get() + : InspectionJSLocalize.nonBlockBodyErrorString().get(); } @Override - public InspectionJSFix buildFix(PsiElement location, Object state) { + public InspectionJSFix buildFix(PsiElement location, Object state) { return fix; } private static class WrapBodyFix extends InspectionJSFix { @Override - @Nonnull + @Nonnull public String getName() { - return InspectionJSBundle.message("wrap.statement.body.fix"); + return InspectionJSLocalize.wrapStatementBodyFix().get(); } @Override - public void doFix(Project project, ProblemDescriptor descriptor) - throws IncorrectOperationException { + public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { final PsiElement statementIdentifier = descriptor.getPsiElement(); final JSStatement statement = (JSStatement) statementIdentifier.getParent(); - if (statement instanceof JSLoopStatement) { - final JSStatement body = ((JSLoopStatement) statement).getBody(); + if (statement instanceof JSLoopStatement loopStatement) { + final JSStatement body = loopStatement.getBody(); wrapStatement(body); } else { final JSIfStatement ifStatement = (JSIfStatement) statement; @@ -82,13 +82,13 @@ private static void wrapStatement(JSStatement statement) throws IncorrectOperati } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new Visitor(); } private static class Visitor extends BaseInspectionVisitor { - - @Override public void visitJSDoWhileStatement(@Nonnull JSDoWhileStatement statement) { + @Override + public void visitJSDoWhileStatement(@Nonnull JSDoWhileStatement statement) { super.visitJSDoWhileStatement(statement); final JSStatement body = statement.getBody(); @@ -96,13 +96,14 @@ private static class Visitor extends BaseInspectionVisitor { return; } - if (!!(body instanceof JSBlockStatement)) { + if (body instanceof JSBlockStatement) { return; } registerStatementError(statement, statement); } - @Override public void visitJSWhileStatement(@Nonnull JSWhileStatement statement) { + @Override + public void visitJSWhileStatement(@Nonnull JSWhileStatement statement) { super.visitJSWhileStatement(statement); final JSStatement body = statement.getBody(); @@ -116,7 +117,8 @@ private static class Visitor extends BaseInspectionVisitor { registerStatementError(statement, statement); } - @Override public void visitJSForStatement(@Nonnull JSForStatement statement) { + @Override + public void visitJSForStatement(@Nonnull JSForStatement statement) { super.visitJSForStatement(statement); final JSStatement body = statement.getBody(); @@ -130,7 +132,8 @@ private static class Visitor extends BaseInspectionVisitor { registerStatementError(statement, statement); } - @Override public void visitJSForInStatement(@Nonnull JSForInStatement statement) { + @Override + public void visitJSForInStatement(@Nonnull JSForInStatement statement) { super.visitJSForInStatement(statement); final JSStatement body = statement.getBody(); @@ -144,7 +147,8 @@ private static class Visitor extends BaseInspectionVisitor { registerStatementError(statement, statement); } - @Override public void visitJSIfStatement(@Nonnull JSIfStatement statement) { + @Override + public void visitJSIfStatement(@Nonnull JSIfStatement statement) { super.visitJSIfStatement(statement); final JSStatement thenBranch = statement.getThen(); @@ -156,11 +160,8 @@ private static class Visitor extends BaseInspectionVisitor { } final JSStatement elseBranch = statement.getElse(); - if (elseBranch != null) { - if (!(elseBranch instanceof JSBlockStatement) && - !(elseBranch instanceof JSIfStatement)) { - registerStatementError(statement, statement); - } + if (elseBranch != null && !(elseBranch instanceof JSBlockStatement || elseBranch instanceof JSIfStatement)) { + registerStatementError(statement, statement); } } } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/ui/RegExInputVerifier.java b/inspections/src/main/java/com/sixrr/inspectjs/ui/RegExInputVerifier.java index 9cf1b118..6b206bb1 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/ui/RegExInputVerifier.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/ui/RegExInputVerifier.java @@ -1,32 +1,28 @@ package com.sixrr.inspectjs.ui; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.ui.ex.awt.Messages; -import com.sixrr.inspectjs.InspectionJSBundle; import javax.swing.*; import java.text.ParseException; public class RegExInputVerifier extends InputVerifier { @Override - public boolean verify(JComponent input) { + public boolean verify(JComponent input) { return true; } @Override - public boolean shouldYieldFocus(JComponent input) { - if (input instanceof JFormattedTextField) { - final JFormattedTextField ftf = (JFormattedTextField) input; + public boolean shouldYieldFocus(JComponent input) { + if (input instanceof JFormattedTextField ftf) { final JFormattedTextField.AbstractFormatter formatter = ftf.getFormatter(); if (formatter != null) { try { formatter.stringToValue(ftf.getText()); } catch (final ParseException e) { - SwingUtilities.invokeLater(new Runnable() { - @Override - public void run() { - Messages.showErrorDialog(e.getMessage(), InspectionJSBundle.message("malformed.naming.pattern.alert")); - } - }); + SwingUtilities.invokeLater( + () -> Messages.showErrorDialog(e.getMessage(), InspectionJSLocalize.malformedNamingPatternAlert().get()) + ); } } } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/validity/StringLiteralBreaksHTMLJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/validity/StringLiteralBreaksHTMLJSInspection.java index 86fb22fb..4f8b0aed 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/validity/StringLiteralBreaksHTMLJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/validity/StringLiteralBreaksHTMLJSInspection.java @@ -1,51 +1,49 @@ package com.sixrr.inspectjs.validity; -import consulo.annotation.access.RequiredReadAction; -import consulo.annotation.component.ExtensionImpl; -import consulo.javascript.psi.JSSimpleLiteralExpression; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; +import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.component.ExtensionImpl; +import consulo.javascript.psi.JSSimpleLiteralExpression; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class StringLiteralBreaksHTMLJSInspection extends JavaScriptInspection { - @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("string.literal.breaks.html.display.name"); + return InspectionJSLocalize.stringLiteralBreaksHtmlDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.VALIDITY_GROUP_NAME; } @Override - public boolean isEnabledByDefault() { + public boolean isEnabledByDefault() { return false; } @RequiredReadAction - @Override - @Nullable + @Override + @Nullable protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("string.literal.breaks.html.error.string"); + return InspectionJSLocalize.stringLiteralBreaksHtmlErrorString().get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new Visitor(); } private static class Visitor extends BaseInspectionVisitor { - - - @Override public void visitJSLiteralExpression(JSSimpleLiteralExpression jsLiteralExpression) { + @Override + public void visitJSLiteralExpression(JSSimpleLiteralExpression jsLiteralExpression) { super.visitJSLiteralExpression(jsLiteralExpression); final String text = jsLiteralExpression.getText(); if (!text.startsWith("\"") && !text.startsWith("'")) { @@ -55,6 +53,5 @@ private static class Visitor extends BaseInspectionVisitor { registerError(jsLiteralExpression); } } - } } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/validity/ThisExpressionReferencesGlobalObjectJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/validity/ThisExpressionReferencesGlobalObjectJSInspection.java index a718ea61..20e58f61 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/validity/ThisExpressionReferencesGlobalObjectJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/validity/ThisExpressionReferencesGlobalObjectJSInspection.java @@ -5,65 +5,61 @@ import com.intellij.lang.javascript.psi.JSObjectLiteralExpression; import com.intellij.lang.javascript.psi.JSThisExpression; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiFile; import consulo.language.psi.util.PsiTreeUtil; import consulo.xml.psi.xml.XmlAttributeValue; - import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class ThisExpressionReferencesGlobalObjectJSInspection extends JavaScriptInspection { - @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("this.expression.which.references.the.global.object.display.name"); + return InspectionJSLocalize.thisExpressionWhichReferencesTheGlobalObjectDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { return JSGroupNames.VALIDITY_GROUP_NAME; } @Override - public boolean isEnabledByDefault() { + public boolean isEnabledByDefault() { return true; } @RequiredReadAction - @Override - @Nullable + @Override + @Nullable protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("this.expression.references.global.object.error.string"); + return InspectionJSLocalize.thisExpressionReferencesGlobalObjectErrorString().get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new Visitor(); } private static class Visitor extends BaseInspectionVisitor { - - @Override public void visitJSThisExpression(JSThisExpression jsThisExpression) { + @Override + public void visitJSThisExpression(JSThisExpression jsThisExpression) { super.visitJSThisExpression(jsThisExpression); final JSObjectLiteralExpression containingObject = PsiTreeUtil.getParentOfType(jsThisExpression, JSObjectLiteralExpression.class); if (containingObject != null) { return; } - final JSFunction containingFunction = - PsiTreeUtil.getParentOfType(jsThisExpression, JSFunction.class); + final JSFunction containingFunction = PsiTreeUtil.getParentOfType(jsThisExpression, JSFunction.class); if (containingFunction != null) { return; } - final XmlAttributeValue containingAttribute = - PsiTreeUtil.getParentOfType(jsThisExpression, XmlAttributeValue.class); + final XmlAttributeValue containingAttribute = PsiTreeUtil.getParentOfType(jsThisExpression, XmlAttributeValue.class); if (containingAttribute != null) { return; } diff --git a/plugin/src/main/java/com/intellij/javascript/JSParameterInfoHandler.java b/plugin/src/main/java/com/intellij/javascript/JSParameterInfoHandler.java index e82ff321..aff26a6b 100644 --- a/plugin/src/main/java/com/intellij/javascript/JSParameterInfoHandler.java +++ b/plugin/src/main/java/com/intellij/javascript/JSParameterInfoHandler.java @@ -23,18 +23,18 @@ import consulo.javascript.language.JavaScriptLanguage; import consulo.language.Language; import consulo.language.ast.IElementType; -import consulo.language.editor.CodeInsightBundle; import consulo.language.editor.completion.lookup.LookupElement; import consulo.language.editor.completion.lookup.MutableLookupElement; +import consulo.language.editor.localize.CodeInsightLocalize; import consulo.language.editor.parameterInfo.*; import consulo.language.psi.PsiElement; import consulo.language.psi.PsiFile; import consulo.language.psi.ResolveResult; import consulo.language.psi.search.DefinitionsScopedSearch; import consulo.util.collection.ArrayUtil; - import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; + import java.util.*; /** @@ -251,7 +251,7 @@ SignatureInfo buildSignature(final JSParameter[] params, final boolean skipType, } else { - info.text = CodeInsightBundle.message("parameter.info.no.parameters"); + info.text = CodeInsightLocalize.parameterInfoNoParameters().get(); } return info; } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseIntroduceHandler.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseIntroduceHandler.java index ee97e355..93f366ff 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseIntroduceHandler.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseIntroduceHandler.java @@ -32,8 +32,8 @@ import consulo.document.util.TextRange; import consulo.language.editor.PsiEquivalenceUtil; import consulo.language.editor.highlight.HighlightManager; -import consulo.language.editor.refactoring.RefactoringBundle; import consulo.language.editor.refactoring.action.RefactoringActionHandler; +import consulo.language.editor.refactoring.localize.RefactoringLocalize; import consulo.language.editor.refactoring.util.CommonRefactoringUtil; import consulo.language.psi.PsiElement; import consulo.language.psi.PsiFile; @@ -46,11 +46,10 @@ import consulo.project.ui.wm.WindowManager; import consulo.ui.ex.awt.DialogWrapper; import consulo.undoRedo.CommandProcessor; +import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; import org.jetbrains.annotations.NonNls; -import jakarta.annotation.Nonnull; - import java.util.ArrayList; import java.util.List; @@ -339,10 +338,10 @@ private void doRefactoring(final Project project, final Editor editor, BaseIntro } } - final JSExpression refExpr = (JSExpression) JSChangeUtil.createExpressionFromText(project, settings.getVariableName()); + final JSExpression refExpr = JSChangeUtil.createExpressionFromText(project, settings.getVariableName()); if(replaceAllOccurences) { - List toHighight = new ArrayList(); + List toHighight = new ArrayList<>(); for(JSExpression occurence : occurrences) { if(occurence != expression || !replacedOriginal) @@ -368,10 +367,13 @@ else if(!replacedOriginal) } } - protected JSVarStatement prepareDeclaration(final String varDeclText, BaseIntroduceContext context, final Project project) throws IncorrectOperationException + protected JSVarStatement prepareDeclaration(final String varDeclText, BaseIntroduceContext context, final Project project) + throws IncorrectOperationException { - JSVarStatement declaration = (JSVarStatement) JSChangeUtil.createStatementFromText(project, varDeclText + " = 0" + JSChangeUtil.getSemicolon - (project)).getPsi(); + JSVarStatement declaration = (JSVarStatement) JSChangeUtil.createStatementFromText( + project, + varDeclText + " = 0" + JSChangeUtil.getSemicolon(project) + ).getPsi(); declaration.getVariables()[0].getInitializer().replace(context.expression); return declaration; } @@ -405,9 +407,9 @@ private static ArrayList highlightOccurences(Project project, HighlightManager highlightManager = HighlightManager.getInstance(project); EditorColorsManager colorsManager = EditorColorsManager.getInstance(); TextAttributes attributes = colorsManager.getGlobalScheme().getAttributes(EditorColors.SEARCH_RESULT_ATTRIBUTES); - ArrayList result = new ArrayList(); + ArrayList result = new ArrayList<>(); highlightManager.addOccurrenceHighlights(editor, occurences, attributes, true, result); - WindowManager.getInstance().getStatusBar(project).setInfo(RefactoringBundle.message("press.escape.to.remove.the.highlighting")); + WindowManager.getInstance().getStatusBar(project).setInfo(RefactoringLocalize.pressEscapeToRemoveTheHighlighting().get()); return result; } @@ -455,12 +457,12 @@ protected static JSElement findClassAnchor(final PsiElement expression) JSElement parent = PsiTreeUtil.getParentOfType(expression, JSFile.class, JSClass.class); - if(parent instanceof JSFile) + if (parent instanceof JSFile) { final PsiElement classRef = JSResolveUtil.getClassReferenceForXmlFromContext(parent); - if(classRef instanceof JSClass) + if (classRef instanceof JSClass jsClass) { - parent = (JSElement) classRef; + parent = jsClass; } } From bb6ca135e9ce3aac4ee6f738a12e41aa29a18f8e Mon Sep 17 00:00:00 2001 From: UNV Date: Mon, 15 Jul 2024 17:03:20 +0300 Subject: [PATCH 030/150] Replacing Bundle with Localize (part 3). Making same indents within file. --- .../com/sixrr/inspectjs/JSGroupNames.java | 29 +++-- .../AssignmentResultUsedJSInspection.java | 2 +- ...ignmentToForLoopParameterJSInspection.java | 2 +- ...gnmentToFunctionParameterJSInspection.java | 2 +- .../NestedAssignmentJSInspection.java | 2 +- ...entWithOperatorAssignmentJSInspection.java | 2 +- .../SillyAssignmentJSInspection.java | 2 +- .../bitwise/IncompatibleMaskJSInspection.java | 2 +- ...ointlessBitwiseExpressionJSInspection.java | 2 +- .../bitwise/ShiftOutOfRangeJSInspection.java | 2 +- .../bugs/DivideByZeroJSInspection.java | 2 +- ...ityComparisonWithCoercionJSInspection.java | 111 +++++++++--------- .../bugs/InfiniteLoopJSInspection.java | 2 +- .../bugs/InfiniteRecursionJSInspection.java | 2 +- ...tCircuitBooleanExpressionJSInspection.java | 2 +- .../ObjectAllocationIgnoredJSInspection.java | 2 +- ...extLabelInSwitchStatementJSInspection.java | 2 +- .../AnonymousFunctionJSInspection.java | 2 +- .../confusing/BlockStatementJSInspection.java | 2 +- .../confusing/CallerJSInspection.java | 2 +- .../CommaExpressionJSInspection.java | 2 +- .../ConditionalExpressionJSInspection.java | 2 +- ...usingFloatingPointLiteralJSInspection.java | 2 +- .../ConfusingPlusesOrMinusesJSInspection.java | 2 +- .../DynamicallyGeneratedCodeJSInspection.java | 2 +- .../EmptyStatementBodyJSInspection.java | 2 +- ...rementDecrementResultUsedJSInspection.java | 2 +- .../confusing/MagicNumberJSInspection.java | 2 +- ...atedConditionalExpressionJSInspection.java | 2 +- .../NegatedIfStatementJSInspection.java | 2 +- ...stedConditionalExpressionJSInspection.java | 2 +- .../confusing/NestedFunctionJSInspection.java | 2 +- .../confusing/OctalIntegerJSInspection.java | 2 +- ...mplexArithmeticExpressionJSInspection.java | 2 +- ...yComplexBooleanExpressionJSInspection.java | 2 +- ...tlessArithmeticExpressionJSInspection.java | 2 +- ...ointlessBooleanExpressionJSInspection.java | 2 +- .../confusing/VoidExpressionJSInspection.java | 25 ++-- .../confusing/WithStatementJSInspection.java | 24 ++-- .../control/BreakStatementJSInspection.java | 2 +- .../BreakStatementWithLabelJSInspection.java | 2 +- ...sionWithIdenticalBranchesJSInspection.java | 2 +- ...tantConditionalExpressionJSInspection.java | 2 +- .../ConstantIfStatementJSInspection.java | 2 +- .../ContinueStatementJSInspection.java | 2 +- ...ontinueStatementWithLabelJSInspection.java | 2 +- ...efaultNotLastCaseInSwitchJSInspection.java | 2 +- .../DuplicateConditionJSInspection.java | 2 +- ...lthroughInSwitchStatementJSInspection.java | 2 +- ...ForLoopReplaceableByWhileJSInspection.java | 2 +- ...ThatDoesntUseLoopVariableJSInspection.java | 2 +- ...mentWithIdenticalBranchesJSInspection.java | 2 +- ...tementWithTooManyBranchesJSInspection.java | 2 +- .../control/LabeledStatementJSInspection.java | 2 +- ...opStatementThatDoesntLoopJSInspection.java | 2 +- .../NestedSwitchStatementJSInspection.java | 2 +- ...tementWithNoDefaultBranchJSInspection.java | 2 +- .../control/TailRecursionJSInspection.java | 2 +- .../TrivialConditionalJSInspection.java | 2 +- .../control/TrivialIfJSInspection.java | 2 +- .../UnnecessaryContinueJSInspection.java | 2 +- .../control/UnnecessaryLabelJSInspection.java | 2 +- ...saryLabelOnBreakStatementJSInspection.java | 54 ++++----- ...yLabelOnContinueStatementJSInspection.java | 54 ++++----- .../UnnecessaryReturnJSInspection.java | 42 +++---- .../ReuseOfLocalVariableJSInspection.java | 2 +- .../UnnecessaryLocalVariableJSInspection.java | 76 ++++-------- .../dom/DocumentWriteJSInspection.java | 2 +- .../inspectjs/dom/InnerHTMLJSInspection.java | 2 +- .../dom/PlatformDetectionJSInspection.java | 2 +- .../XHTMLIncompatabilitiesJSInspection.java | 20 ++-- ...ueOrBreakFromFinallyBlockJSInspection.java | 2 +- .../EmptyCatchBlockJSInspection.java | 2 +- .../EmptyFinallyBlockJSInspection.java | 2 +- .../exception/EmptyTryBlockJSInspection.java | 2 +- .../ExceptionCaughtLocallyJSInspection.java | 2 +- .../ReturnFromFinallyBlockJSInspection.java | 2 +- .../ThrowFromFinallyBlockJSInspection.java | 2 +- .../UnusedCatchParameterJSInspection.java | 15 +-- .../CyclomaticComplexityJSInspection.java | 2 +- ...FunctionWithMultipleLoopsJSInspection.java | 2 +- ...nWithMultipleReturnPointsJSInspection.java | 2 +- .../NestingDepthJSInspection.java | 2 +- .../ParametersPerFunctionJSInspection.java | 2 +- .../StatementsPerFunctionJSInspection.java | 2 +- ...ThreeNegationsPerFunctionJSInspection.java | 2 +- .../FunctionNamingConventionJSInspection.java | 2 +- ...lVariableNamingConventionJSInspection.java | 2 +- ...ParameterNamingConventionJSInspection.java | 2 +- .../style/ChainedEqualityJSInspection.java | 2 +- .../ChainedFunctionCallJSInspection.java | 2 +- ...ConstantOnLHSOfComparisonJSInspection.java | 2 +- ...ConstantOnRHSOfComparisonJSInspection.java | 2 +- .../style/NestedFunctionCallJSInspection.java | 2 +- .../NonBlockStatementBodyJSInspection.java | 2 +- .../UnterminatedStatementJSInspection.java | 16 +-- .../BadExpressionStatementJSInspection.java | 2 +- .../DebuggerStatementJSInspection.java | 2 +- .../DuplicateCaseLabelJSInspection.java | 2 +- ...DuplicatePropertyOnObjectJSInspection.java | 2 +- ...onWithInconsistentReturnsJSInspection.java | 2 +- .../StringLiteralBreaksHTMLJSInspection.java | 2 +- ...ionReferencesGlobalObjectJSInspection.java | 2 +- .../validity/UnreachableCodeJSInspection.java | 30 ++--- 104 files changed, 319 insertions(+), 361 deletions(-) diff --git a/inspections/src/main/java/com/sixrr/inspectjs/JSGroupNames.java b/inspections/src/main/java/com/sixrr/inspectjs/JSGroupNames.java index 44a21e55..c8a36ebb 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/JSGroupNames.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/JSGroupNames.java @@ -1,17 +1,20 @@ package com.sixrr.inspectjs; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; +import consulo.localize.LocalizeValue; + public interface JSGroupNames { - String ERRORHANDLING_GROUP_NAME = InspectionJSBundle.message("error.handling.javascript.group.name"); - String CONTROL_FLOW_GROUP_NAME = InspectionJSBundle.message("control.flow.issues.javascript.group.name"); - String VALIDITY_GROUP_NAME = InspectionJSBundle.message("javascript.validity.issues.group.name"); - String CONFUSING_GROUP_NAME = InspectionJSBundle.message("potentially.confusing.code.constructs.javascript.group.name"); - String FUNCTIONMETRICS_GROUP_NAME = InspectionJSBundle.message("javascript.function.metrics.group.name"); - String ASSIGNMENT_GROUP_NAME = InspectionJSBundle.message("assignment.issues.javascript.group.name"); - String NAMING_CONVENTIONS_GROUP_NAME = InspectionJSBundle.message("naming.conventions.javascript.group.name"); - String STYLE_GROUP_NAME = InspectionJSBundle.message("code.style.issues.javascript.group.name"); - String DOM_GROUP_NAME = InspectionJSBundle.message("javascript.dom.issues.group.name"); - String BUGS_GROUP_NAME = InspectionJSBundle.message("probable.bugs.javascript.group.name"); - String MATURITY_GROUP_NAME = InspectionJSBundle.message("code.maturity.javascript.group.name"); - String DATA_FLOW_ISSUES = InspectionJSBundle.message("data.flow.issues.javascript.group.name"); - String BITWISE_GROUP_NAME = InspectionJSBundle.message("bitwise.issues.javascript.group.name"); + LocalizeValue ERRORHANDLING_GROUP_NAME = InspectionJSLocalize.errorHandlingJavascriptGroupName(); + LocalizeValue CONTROL_FLOW_GROUP_NAME = InspectionJSLocalize.controlFlowIssuesJavascriptGroupName(); + LocalizeValue VALIDITY_GROUP_NAME = InspectionJSLocalize.javascriptValidityIssuesGroupName(); + LocalizeValue CONFUSING_GROUP_NAME = InspectionJSLocalize.potentiallyConfusingCodeConstructsJavascriptGroupName(); + LocalizeValue FUNCTIONMETRICS_GROUP_NAME = InspectionJSLocalize.javascriptFunctionMetricsGroupName(); + LocalizeValue ASSIGNMENT_GROUP_NAME = InspectionJSLocalize.assignmentIssuesJavascriptGroupName(); + LocalizeValue NAMING_CONVENTIONS_GROUP_NAME = InspectionJSLocalize.namingConventionsJavascriptGroupName(); + LocalizeValue STYLE_GROUP_NAME = InspectionJSLocalize.codeStyleIssuesJavascriptGroupName(); + LocalizeValue DOM_GROUP_NAME = InspectionJSLocalize.javascriptDomIssuesGroupName(); + LocalizeValue BUGS_GROUP_NAME = InspectionJSLocalize.probableBugsJavascriptGroupName(); + LocalizeValue MATURITY_GROUP_NAME = InspectionJSLocalize.codeMaturityJavascriptGroupName(); + LocalizeValue DATA_FLOW_ISSUES = InspectionJSLocalize.dataFlowIssuesJavascriptGroupName(); + LocalizeValue BITWISE_GROUP_NAME = InspectionJSLocalize.bitwiseIssuesJavascriptGroupName(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentResultUsedJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentResultUsedJSInspection.java index 2f9e9ab3..92f8c41d 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentResultUsedJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentResultUsedJSInspection.java @@ -22,7 +22,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.ASSIGNMENT_GROUP_NAME; + return JSGroupNames.ASSIGNMENT_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentToForLoopParameterJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentToForLoopParameterJSInspection.java index bf643ad1..a00b8b22 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentToForLoopParameterJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentToForLoopParameterJSInspection.java @@ -24,7 +24,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.ASSIGNMENT_GROUP_NAME; + return JSGroupNames.ASSIGNMENT_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentToFunctionParameterJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentToFunctionParameterJSInspection.java index f869a6b4..22c5cbbf 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentToFunctionParameterJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentToFunctionParameterJSInspection.java @@ -24,7 +24,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.ASSIGNMENT_GROUP_NAME; + return JSGroupNames.ASSIGNMENT_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/assignment/NestedAssignmentJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/assignment/NestedAssignmentJSInspection.java index dd12889d..770a0455 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/assignment/NestedAssignmentJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/assignment/NestedAssignmentJSInspection.java @@ -21,7 +21,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.ASSIGNMENT_GROUP_NAME; + return JSGroupNames.ASSIGNMENT_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/assignment/ReplaceAssignmentWithOperatorAssignmentJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/assignment/ReplaceAssignmentWithOperatorAssignmentJSInspection.java index 55941976..a02c3790 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/assignment/ReplaceAssignmentWithOperatorAssignmentJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/assignment/ReplaceAssignmentWithOperatorAssignmentJSInspection.java @@ -39,7 +39,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.ASSIGNMENT_GROUP_NAME; + return JSGroupNames.ASSIGNMENT_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/assignment/SillyAssignmentJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/assignment/SillyAssignmentJSInspection.java index cc18347b..b5e60b18 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/assignment/SillyAssignmentJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/assignment/SillyAssignmentJSInspection.java @@ -27,7 +27,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.ASSIGNMENT_GROUP_NAME; + return JSGroupNames.ASSIGNMENT_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bitwise/IncompatibleMaskJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bitwise/IncompatibleMaskJSInspection.java index 885544ea..006b58fe 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bitwise/IncompatibleMaskJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bitwise/IncompatibleMaskJSInspection.java @@ -32,7 +32,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.BITWISE_GROUP_NAME; + return JSGroupNames.BITWISE_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bitwise/PointlessBitwiseExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bitwise/PointlessBitwiseExpressionJSInspection.java index 0d3528ee..5908c4f1 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bitwise/PointlessBitwiseExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bitwise/PointlessBitwiseExpressionJSInspection.java @@ -49,7 +49,7 @@ public String getDisplayName() @Nonnull public String getGroupDisplayName() { - return JSGroupNames.BITWISE_GROUP_NAME; + return JSGroupNames.BITWISE_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bitwise/ShiftOutOfRangeJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bitwise/ShiftOutOfRangeJSInspection.java index 6dfba585..f0bbf392 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bitwise/ShiftOutOfRangeJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bitwise/ShiftOutOfRangeJSInspection.java @@ -24,7 +24,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.BITWISE_GROUP_NAME; + return JSGroupNames.BITWISE_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bugs/DivideByZeroJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bugs/DivideByZeroJSInspection.java index e766a96f..327a6223 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bugs/DivideByZeroJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bugs/DivideByZeroJSInspection.java @@ -31,7 +31,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.BUGS_GROUP_NAME; + return JSGroupNames.BUGS_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bugs/EqualityComparisonWithCoercionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bugs/EqualityComparisonWithCoercionJSInspection.java index 37ecc722..be684bd7 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bugs/EqualityComparisonWithCoercionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bugs/EqualityComparisonWithCoercionJSInspection.java @@ -20,31 +20,30 @@ @ExtensionImpl public class EqualityComparisonWithCoercionJSInspection extends JavaScriptInspection { - - @Override + @Override @Nonnull - public String getID() { - return "EqualityComparisonWithCoercionJS"; - } + public String getID() { + return "EqualityComparisonWithCoercionJS"; + } - @Override + @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.equalityComparisonWithCoercionDisplayName().get(); - } + public String getDisplayName() { + return InspectionJSLocalize.equalityComparisonWithCoercionDisplayName().get(); + } - @Override + @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.BUGS_GROUP_NAME; - } + public String getGroupDisplayName() { + return JSGroupNames.BUGS_GROUP_NAME.get(); + } - @RequiredReadAction + @RequiredReadAction @Override @Nonnull - protected String buildErrorString(Object state, Object... args) { - return InspectionJSLocalize.equalityComparisonWithCoercionErrorString().get(); - } + protected String buildErrorString(Object state, Object... args) { + return InspectionJSLocalize.equalityComparisonWithCoercionErrorString().get(); + } @Override protected InspectionJSFix buildFix(PsiElement location, Object state) { @@ -59,7 +58,6 @@ protected InspectionJSFix buildFix(PsiElement location, Object state) { } private static class EqualityComparisonWithCoercionFix extends InspectionJSFix { - private final String sign; public EqualityComparisonWithCoercionFix(String sign) { @@ -73,8 +71,7 @@ public String getName() { } @Override - protected void doFix(Project project, ProblemDescriptor descriptor) - throws IncorrectOperationException { + protected void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { final JSBinaryExpression expression = (JSBinaryExpression) descriptor.getPsiElement(); final JSExpression lhs = expression.getLOperand(); final JSExpression rhs = expression.getROperand(); @@ -87,44 +84,42 @@ public BaseInspectionVisitor buildVisitor() { return new EqualityComparisonWithCoercionVisitor(); } - private static class EqualityComparisonWithCoercionVisitor extends BaseInspectionVisitor { - - @Override public void visitJSBinaryExpression( - @Nonnull JSBinaryExpression expression) { - super.visitJSBinaryExpression(expression); - final JSExpression lhs = expression.getLOperand(); - if (lhs == null) { - return; - } - final JSExpression rhs = expression.getROperand(); - if (rhs == null) { - return; - } - final IElementType tokenType = expression.getOperationSign(); - if (!JSTokenTypes.EQEQ.equals(tokenType) && - !JSTokenTypes.NE.equals(tokenType)) { - return; - } - if(!mayCauseCoercion(rhs) &&!mayCauseCoercion(lhs)) { + private static class EqualityComparisonWithCoercionVisitor extends BaseInspectionVisitor { + @Override + public void visitJSBinaryExpression(@Nonnull JSBinaryExpression expression) { + super.visitJSBinaryExpression(expression); + final JSExpression lhs = expression.getLOperand(); + if (lhs == null) { return; - } - registerError(expression); - } - } + } + final JSExpression rhs = expression.getROperand(); + if (rhs == null) { + return; + } + final IElementType tokenType = expression.getOperationSign(); + if (!JSTokenTypes.EQEQ.equals(tokenType) && !JSTokenTypes.NE.equals(tokenType)) { + return; + } + if(!mayCauseCoercion(rhs) &&!mayCauseCoercion(lhs)) { + return; + } + registerError(expression); + } + } - private static boolean mayCauseCoercion(JSExpression expression) { - @NonNls - final String text = expression.getText(); - return "0".equals(text) || - "0x0".equals(text) || - "0X0".equals(text) || - "0.0".equals(text) || - "0L".equals(text) || - "0l".equals(text) || - "null".equals(text) || - "undefined".equals(text) || - "true".equals(text) || - "false".equals(text) || - "''".equals(text); - } + private static boolean mayCauseCoercion(JSExpression expression) { + @NonNls + final String text = expression.getText(); + return "0".equals(text) || + "0x0".equals(text) || + "0X0".equals(text) || + "0.0".equals(text) || + "0L".equals(text) || + "0l".equals(text) || + "null".equals(text) || + "undefined".equals(text) || + "true".equals(text) || + "false".equals(text) || + "''".equals(text); + } } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bugs/InfiniteLoopJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bugs/InfiniteLoopJSInspection.java index a71f50f4..f93eba5b 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bugs/InfiniteLoopJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bugs/InfiniteLoopJSInspection.java @@ -23,7 +23,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.BUGS_GROUP_NAME; + return JSGroupNames.BUGS_GROUP_NAME.get(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bugs/InfiniteRecursionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bugs/InfiniteRecursionJSInspection.java index f0537276..fb15c7e0 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bugs/InfiniteRecursionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bugs/InfiniteRecursionJSInspection.java @@ -23,7 +23,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.BUGS_GROUP_NAME; + return JSGroupNames.BUGS_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bugs/NonShortCircuitBooleanExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bugs/NonShortCircuitBooleanExpressionJSInspection.java index b159e8e3..9731fe8e 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bugs/NonShortCircuitBooleanExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bugs/NonShortCircuitBooleanExpressionJSInspection.java @@ -29,7 +29,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.BUGS_GROUP_NAME; + return JSGroupNames.BUGS_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bugs/ObjectAllocationIgnoredJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bugs/ObjectAllocationIgnoredJSInspection.java index d074ac92..eb1ecf94 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bugs/ObjectAllocationIgnoredJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bugs/ObjectAllocationIgnoredJSInspection.java @@ -28,7 +28,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.BUGS_GROUP_NAME; + return JSGroupNames.BUGS_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bugs/TextLabelInSwitchStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bugs/TextLabelInSwitchStatementJSInspection.java index e3909748..7aeeff5d 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bugs/TextLabelInSwitchStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bugs/TextLabelInSwitchStatementJSInspection.java @@ -24,7 +24,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.BUGS_GROUP_NAME; + return JSGroupNames.BUGS_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/AnonymousFunctionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/AnonymousFunctionJSInspection.java index 5e589a5f..bd7ad3c9 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/AnonymousFunctionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/AnonymousFunctionJSInspection.java @@ -24,7 +24,7 @@ public String getDisplayName(){ @Override @Nonnull public String getGroupDisplayName(){ - return JSGroupNames.CONFUSING_GROUP_NAME; + return JSGroupNames.CONFUSING_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/BlockStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/BlockStatementJSInspection.java index 76599fe4..739d817f 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/BlockStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/BlockStatementJSInspection.java @@ -22,7 +22,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.CONFUSING_GROUP_NAME; + return JSGroupNames.CONFUSING_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/CallerJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/CallerJSInspection.java index 4574b1ec..329d273f 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/CallerJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/CallerJSInspection.java @@ -21,7 +21,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.CONFUSING_GROUP_NAME; + return JSGroupNames.CONFUSING_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/CommaExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/CommaExpressionJSInspection.java index 6ce167b4..476c4e0a 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/CommaExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/CommaExpressionJSInspection.java @@ -22,7 +22,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.CONFUSING_GROUP_NAME; + return JSGroupNames.CONFUSING_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConditionalExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConditionalExpressionJSInspection.java index 637dfebc..b5b176d4 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConditionalExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConditionalExpressionJSInspection.java @@ -30,7 +30,7 @@ public String getDisplayName() @Nonnull public String getGroupDisplayName() { - return JSGroupNames.CONFUSING_GROUP_NAME; + return JSGroupNames.CONFUSING_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConfusingFloatingPointLiteralJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConfusingFloatingPointLiteralJSInspection.java index 28a8a25f..c30c9fbd 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConfusingFloatingPointLiteralJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConfusingFloatingPointLiteralJSInspection.java @@ -28,7 +28,7 @@ public class ConfusingFloatingPointLiteralJSInspection extends JavaScriptInspect @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.CONFUSING_GROUP_NAME; + return JSGroupNames.CONFUSING_GROUP_NAME.get(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConfusingPlusesOrMinusesJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConfusingPlusesOrMinusesJSInspection.java index db9ec79b..65c1031e 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConfusingPlusesOrMinusesJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConfusingPlusesOrMinusesJSInspection.java @@ -26,7 +26,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.CONFUSING_GROUP_NAME; + return JSGroupNames.CONFUSING_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/DynamicallyGeneratedCodeJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/DynamicallyGeneratedCodeJSInspection.java index 044291a9..6ba53895 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/DynamicallyGeneratedCodeJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/DynamicallyGeneratedCodeJSInspection.java @@ -25,7 +25,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.CONFUSING_GROUP_NAME; + return JSGroupNames.CONFUSING_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/EmptyStatementBodyJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/EmptyStatementBodyJSInspection.java index 102e0b2e..cd394f19 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/EmptyStatementBodyJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/EmptyStatementBodyJSInspection.java @@ -31,7 +31,7 @@ public String getDisplayName() @Nonnull public String getGroupDisplayName() { - return JSGroupNames.CONFUSING_GROUP_NAME; + return JSGroupNames.CONFUSING_GROUP_NAME.get(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/IncrementDecrementResultUsedJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/IncrementDecrementResultUsedJSInspection.java index d10d8254..096e8cbb 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/IncrementDecrementResultUsedJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/IncrementDecrementResultUsedJSInspection.java @@ -24,7 +24,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.CONFUSING_GROUP_NAME; + return JSGroupNames.CONFUSING_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/MagicNumberJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/MagicNumberJSInspection.java index be08800c..b7e669be 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/MagicNumberJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/MagicNumberJSInspection.java @@ -46,7 +46,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.CONFUSING_GROUP_NAME; + return JSGroupNames.CONFUSING_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/NegatedConditionalExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/NegatedConditionalExpressionJSInspection.java index bbf64a2f..11b3e6de 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/NegatedConditionalExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/NegatedConditionalExpressionJSInspection.java @@ -34,7 +34,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.CONFUSING_GROUP_NAME; + return JSGroupNames.CONFUSING_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/NegatedIfStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/NegatedIfStatementJSInspection.java index be015db5..bf061fe3 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/NegatedIfStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/NegatedIfStatementJSInspection.java @@ -37,7 +37,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.CONFUSING_GROUP_NAME; + return JSGroupNames.CONFUSING_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/NestedConditionalExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/NestedConditionalExpressionJSInspection.java index ac40b022..01093511 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/NestedConditionalExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/NestedConditionalExpressionJSInspection.java @@ -22,7 +22,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.CONFUSING_GROUP_NAME; + return JSGroupNames.CONFUSING_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/NestedFunctionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/NestedFunctionJSInspection.java index 8f6fbf60..14f2a4ea 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/NestedFunctionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/NestedFunctionJSInspection.java @@ -28,7 +28,7 @@ public String getDisplayName() @Nonnull public String getGroupDisplayName() { - return JSGroupNames.CONFUSING_GROUP_NAME; + return JSGroupNames.CONFUSING_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/OctalIntegerJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/OctalIntegerJSInspection.java index d3098271..dd3465e5 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/OctalIntegerJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/OctalIntegerJSInspection.java @@ -22,7 +22,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.CONFUSING_GROUP_NAME; + return JSGroupNames.CONFUSING_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexArithmeticExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexArithmeticExpressionJSInspection.java index 2e258e51..e511953e 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexArithmeticExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexArithmeticExpressionJSInspection.java @@ -30,7 +30,7 @@ public String getDisplayName() @Nonnull public String getGroupDisplayName() { - return JSGroupNames.CONFUSING_GROUP_NAME; + return JSGroupNames.CONFUSING_GROUP_NAME.get(); } @Nonnull diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexBooleanExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexBooleanExpressionJSInspection.java index 076f060d..9960e2ce 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexBooleanExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexBooleanExpressionJSInspection.java @@ -30,7 +30,7 @@ public String getDisplayName() @Nonnull public String getGroupDisplayName() { - return JSGroupNames.CONFUSING_GROUP_NAME; + return JSGroupNames.CONFUSING_GROUP_NAME.get(); } @Nonnull diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/PointlessArithmeticExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/PointlessArithmeticExpressionJSInspection.java index 89ea75c6..6d562ef0 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/PointlessArithmeticExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/PointlessArithmeticExpressionJSInspection.java @@ -35,7 +35,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.CONFUSING_GROUP_NAME; + return JSGroupNames.CONFUSING_GROUP_NAME.get(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/PointlessBooleanExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/PointlessBooleanExpressionJSInspection.java index a93405a6..9c718127 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/PointlessBooleanExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/PointlessBooleanExpressionJSInspection.java @@ -39,7 +39,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME; + return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/VoidExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/VoidExpressionJSInspection.java index 2d2579d2..4b67ebb8 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/VoidExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/VoidExpressionJSInspection.java @@ -2,46 +2,45 @@ import com.intellij.lang.javascript.psi.JSPrefixExpression; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; -import org.jetbrains.annotations.NonNls; - import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; +import org.jetbrains.annotations.NonNls; @ExtensionImpl public class VoidExpressionJSInspection extends JavaScriptInspection { - @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("void.expression.display.name"); + return InspectionJSLocalize.voidExpressionDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { - return JSGroupNames.CONFUSING_GROUP_NAME; + return JSGroupNames.CONFUSING_GROUP_NAME.get(); } @RequiredReadAction - @Override - @Nullable + @Override + @Nullable protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("void.expression.error.string"); + return InspectionJSLocalize.voidExpressionErrorString().get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new Visitor(); } private static class Visitor extends BaseInspectionVisitor { - @Override public void visitJSPrefixExpression(JSPrefixExpression expression) { + @Override + public void visitJSPrefixExpression(JSPrefixExpression expression) { super.visitJSPrefixExpression(expression); final PsiElement firstChild = expression.getFirstChild(); if(firstChild == null) diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/WithStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/WithStatementJSInspection.java index f1838b75..943d63eb 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/WithStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/WithStatementJSInspection.java @@ -2,45 +2,43 @@ import com.intellij.lang.javascript.psi.JSWithStatement; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; - import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class WithStatementJSInspection extends JavaScriptInspection { - @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("with.statement.display.name"); + return InspectionJSLocalize.withStatementDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { - return JSGroupNames.CONFUSING_GROUP_NAME; + return JSGroupNames.CONFUSING_GROUP_NAME.get(); } @RequiredReadAction - @Override - @Nullable + @Override + @Nullable protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("with.expression.error.string"); + return InspectionJSLocalize.withExpressionErrorString().get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new Visitor(); } private static class Visitor extends BaseInspectionVisitor { - - @Override public void visitJSWithStatement(@Nonnull JSWithStatement statement) { + @Override + public void visitJSWithStatement(@Nonnull JSWithStatement statement) { super.visitJSWithStatement(statement); registerStatementError(statement); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/BreakStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/BreakStatementJSInspection.java index 349e8917..96b335bc 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/BreakStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/BreakStatementJSInspection.java @@ -22,7 +22,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME; + return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/BreakStatementWithLabelJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/BreakStatementWithLabelJSInspection.java index 70dd6321..8c46d114 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/BreakStatementWithLabelJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/BreakStatementWithLabelJSInspection.java @@ -21,7 +21,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME; + return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/ConditionalExpressionWithIdenticalBranchesJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/ConditionalExpressionWithIdenticalBranchesJSInspection.java index e4acf517..f1dd5375 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/ConditionalExpressionWithIdenticalBranchesJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/ConditionalExpressionWithIdenticalBranchesJSInspection.java @@ -29,7 +29,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME; + return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/ConstantConditionalExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/ConstantConditionalExpressionJSInspection.java index e334e535..454da65b 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/ConstantConditionalExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/ConstantConditionalExpressionJSInspection.java @@ -21,7 +21,7 @@ public class ConstantConditionalExpressionJSInspection extends JavaScriptInspect @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME; + return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/ConstantIfStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/ConstantIfStatementJSInspection.java index cc02f2a1..30110186 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/ConstantIfStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/ConstantIfStatementJSInspection.java @@ -28,7 +28,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME; + return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/ContinueStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/ContinueStatementJSInspection.java index f74f71bc..7f666f83 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/ContinueStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/ContinueStatementJSInspection.java @@ -23,7 +23,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME; + return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/ContinueStatementWithLabelJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/ContinueStatementWithLabelJSInspection.java index 750d9e81..fe810264 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/ContinueStatementWithLabelJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/ContinueStatementWithLabelJSInspection.java @@ -21,7 +21,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME; + return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/DefaultNotLastCaseInSwitchJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/DefaultNotLastCaseInSwitchJSInspection.java index 1f6ff470..05d7ea5d 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/DefaultNotLastCaseInSwitchJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/DefaultNotLastCaseInSwitchJSInspection.java @@ -16,7 +16,7 @@ public class DefaultNotLastCaseInSwitchJSInspection extends JavaScriptInspection @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME; + return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/DuplicateConditionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/DuplicateConditionJSInspection.java index 60215888..0c6644d4 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/DuplicateConditionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/DuplicateConditionJSInspection.java @@ -28,7 +28,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME; + return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/FallthroughInSwitchStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/FallthroughInSwitchStatementJSInspection.java index 08d4538d..14276956 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/FallthroughInSwitchStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/FallthroughInSwitchStatementJSInspection.java @@ -25,7 +25,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME; + return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/ForLoopReplaceableByWhileJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/ForLoopReplaceableByWhileJSInspection.java index f1309842..a98f2b71 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/ForLoopReplaceableByWhileJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/ForLoopReplaceableByWhileJSInspection.java @@ -40,7 +40,7 @@ public String getID() @Nonnull public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME; + return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/ForLoopThatDoesntUseLoopVariableJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/ForLoopThatDoesntUseLoopVariableJSInspection.java index 46cfa7ac..6eb6e85e 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/ForLoopThatDoesntUseLoopVariableJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/ForLoopThatDoesntUseLoopVariableJSInspection.java @@ -20,7 +20,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.BUGS_GROUP_NAME; + return JSGroupNames.BUGS_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/IfStatementWithIdenticalBranchesJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/IfStatementWithIdenticalBranchesJSInspection.java index 990e32f4..c8ee89f0 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/IfStatementWithIdenticalBranchesJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/IfStatementWithIdenticalBranchesJSInspection.java @@ -29,7 +29,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME; + return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/IfStatementWithTooManyBranchesJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/IfStatementWithTooManyBranchesJSInspection.java index 87a8942d..9143eaaa 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/IfStatementWithTooManyBranchesJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/IfStatementWithTooManyBranchesJSInspection.java @@ -26,7 +26,7 @@ public String getDisplayName() @Nonnull public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME; + return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); } @Nonnull diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/LabeledStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/LabeledStatementJSInspection.java index 619ccaad..c2952f68 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/LabeledStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/LabeledStatementJSInspection.java @@ -22,7 +22,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME; + return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/LoopStatementThatDoesntLoopJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/LoopStatementThatDoesntLoopJSInspection.java index 93f5bd3c..a927aab4 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/LoopStatementThatDoesntLoopJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/LoopStatementThatDoesntLoopJSInspection.java @@ -21,7 +21,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME; + return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/NestedSwitchStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/NestedSwitchStatementJSInspection.java index 3ecc7cf0..e9070b90 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/NestedSwitchStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/NestedSwitchStatementJSInspection.java @@ -22,7 +22,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME; + return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/SwitchStatementWithNoDefaultBranchJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/SwitchStatementWithNoDefaultBranchJSInspection.java index d789ea2b..71701535 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/SwitchStatementWithNoDefaultBranchJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/SwitchStatementWithNoDefaultBranchJSInspection.java @@ -22,7 +22,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME; + return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/TailRecursionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/TailRecursionJSInspection.java index 48432219..b26d2c19 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/TailRecursionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/TailRecursionJSInspection.java @@ -16,7 +16,7 @@ public class TailRecursionJSInspection extends JavaScriptInspection { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME; + return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/TrivialConditionalJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/TrivialConditionalJSInspection.java index 1a70959a..cd87e5f1 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/TrivialConditionalJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/TrivialConditionalJSInspection.java @@ -37,7 +37,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME; + return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/TrivialIfJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/TrivialIfJSInspection.java index f552b298..2b9d22f8 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/TrivialIfJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/TrivialIfJSInspection.java @@ -41,7 +41,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME; + return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryContinueJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryContinueJSInspection.java index 99d122e5..a51a7dfd 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryContinueJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryContinueJSInspection.java @@ -28,7 +28,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME; + return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelJSInspection.java index b1104809..46447904 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelJSInspection.java @@ -25,7 +25,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME; + return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelOnBreakStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelOnBreakStatementJSInspection.java index b6b66f3a..468c23d3 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelOnBreakStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelOnBreakStatementJSInspection.java @@ -4,7 +4,11 @@ import com.intellij.lang.javascript.psi.JSLoopStatement; import com.intellij.lang.javascript.psi.JSStatement; import com.intellij.lang.javascript.psi.JSSwitchStatement; -import com.sixrr.inspectjs.*; +import com.sixrr.inspectjs.BaseInspectionVisitor; +import com.sixrr.inspectjs.InspectionJSFix; +import com.sixrr.inspectjs.JSGroupNames; +import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.inspection.ProblemDescriptor; @@ -12,81 +16,75 @@ import consulo.language.psi.util.PsiTreeUtil; import consulo.language.util.IncorrectOperationException; import consulo.project.Project; - import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class UnnecessaryLabelOnBreakStatementJSInspection extends JavaScriptInspection { - private final UnnecessaryLabelOnBreakStatementFix fix = - new UnnecessaryLabelOnBreakStatementFix(); + private final UnnecessaryLabelOnBreakStatementFix fix = new UnnecessaryLabelOnBreakStatementFix(); @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("unnecessary.label.on.break.statement.display.name"); + return InspectionJSLocalize.unnecessaryLabelOnBreakStatementDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME; + return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); } @Override - public boolean isEnabledByDefault() { + public boolean isEnabledByDefault() { return true; } @Override - public InspectionJSFix buildFix(PsiElement location, Object state) { + public InspectionJSFix buildFix(PsiElement location, Object state) { return fix; } private static class UnnecessaryLabelOnBreakStatementFix extends InspectionJSFix { @Override - @Nonnull + @Nonnull public String getName() { - return InspectionJSBundle.message("remove.label.fix"); + return InspectionJSLocalize.removeLabelFix().get(); } @Override - public void doFix(Project project, ProblemDescriptor descriptor) - throws IncorrectOperationException { + public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { final PsiElement breakKeywordElement = descriptor.getPsiElement(); - final JSBreakStatement breakStatement = - (JSBreakStatement) breakKeywordElement.getParent(); + final JSBreakStatement breakStatement = (JSBreakStatement) breakKeywordElement.getParent(); replaceStatement(breakStatement, "break;"); } } + @RequiredReadAction - @Override - @Nullable + @Override + @Nullable protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("unnecessary.label.on.break.error.string"); + return InspectionJSLocalize.unnecessaryLabelOnBreakErrorString().get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new Visitor(); } private static class Visitor extends BaseInspectionVisitor { - @Override public void visitJSBreakStatement(@Nonnull JSBreakStatement statement) { + @Override + public void visitJSBreakStatement(@Nonnull JSBreakStatement statement) { super.visitJSBreakStatement(statement); if (statement.getLabel() == null) { return; } final JSStatement statementToBreak = statement.getStatementToBreak(); - if(statementToBreak == null) - { + if (statementToBreak == null) { return; } - final JSStatement containingStatement = - PsiTreeUtil.getParentOfType(statement, JSLoopStatement.class, - JSSwitchStatement.class); - if(containingStatement == null) - { + final JSStatement containingStatement = PsiTreeUtil.getParentOfType(statement, JSLoopStatement.class, JSSwitchStatement.class); + if (containingStatement == null) { return; } final PsiElement parent = containingStatement.getParent(); diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelOnContinueStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelOnContinueStatementJSInspection.java index 8b3ab4b5..5ef4c212 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelOnContinueStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelOnContinueStatementJSInspection.java @@ -3,7 +3,11 @@ import com.intellij.lang.javascript.psi.JSContinueStatement; import com.intellij.lang.javascript.psi.JSLoopStatement; import com.intellij.lang.javascript.psi.JSStatement; -import com.sixrr.inspectjs.*; +import com.sixrr.inspectjs.BaseInspectionVisitor; +import com.sixrr.inspectjs.InspectionJSFix; +import com.sixrr.inspectjs.JSGroupNames; +import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.inspection.ProblemDescriptor; @@ -11,85 +15,79 @@ import consulo.language.psi.util.PsiTreeUtil; import consulo.language.util.IncorrectOperationException; import consulo.project.Project; - import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class UnnecessaryLabelOnContinueStatementJSInspection extends JavaScriptInspection { - private final UnnecessaryLabelOnContinueStatementFix fix = - new UnnecessaryLabelOnContinueStatementFix(); + private final UnnecessaryLabelOnContinueStatementFix fix = new UnnecessaryLabelOnContinueStatementFix(); @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("unnecessary.label.on.continue.statement.display.name"); + return InspectionJSLocalize.unnecessaryLabelOnContinueStatementDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME; + return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); } @Override - public boolean isEnabledByDefault() { + public boolean isEnabledByDefault() { return true; } @RequiredReadAction - @Override - @Nullable + @Override + @Nullable protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("unnecessary.label.on.continue.error.string"); + return InspectionJSLocalize.unnecessaryLabelOnContinueErrorString().get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new Visitor(); } @Override - public InspectionJSFix buildFix(PsiElement location, Object state) { + public InspectionJSFix buildFix(PsiElement location, Object state) { return fix; } private static class UnnecessaryLabelOnContinueStatementFix extends InspectionJSFix { @Override - @Nonnull + @Nonnull public String getName() { - return InspectionJSBundle.message("remove.label.fix"); + return InspectionJSLocalize.removeLabelFix().get(); } @Override - public void doFix(Project project, ProblemDescriptor descriptor) - throws IncorrectOperationException { + public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { final PsiElement continueKeywordElement = descriptor.getPsiElement(); - final JSContinueStatement continueStatement = - (JSContinueStatement) continueKeywordElement.getParent(); + final JSContinueStatement continueStatement = (JSContinueStatement) continueKeywordElement.getParent(); replaceStatement(continueStatement, "continue;"); } } - private static class Visitor extends BaseInspectionVisitor { - @Override public void visitJSContinueStatement(@Nonnull JSContinueStatement statement) { + private static class Visitor extends BaseInspectionVisitor { + @Override + public void visitJSContinueStatement(@Nonnull JSContinueStatement statement) { super.visitJSContinueStatement(statement); if (statement.getLabel() == null) { return; } final JSStatement statementToContinue = statement.getStatementToContinue(); - if(statementToContinue == null) - { + if (statementToContinue == null) { return; } final JSLoopStatement containingLoop = PsiTreeUtil.getParentOfType(statement, JSLoopStatement.class); - if(containingLoop == null) - { + if (containingLoop == null) { return; } final PsiElement parent = containingLoop.getParent(); - if(!statementToContinue.equals(parent)) - { + if (!statementToContinue.equals(parent)) { return; } registerStatementError(statement); diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryReturnJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryReturnJSInspection.java index dc21bac3..1d20dbb3 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryReturnJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryReturnJSInspection.java @@ -1,7 +1,11 @@ package com.sixrr.inspectjs.control; import com.intellij.lang.javascript.psi.*; -import com.sixrr.inspectjs.*; +import com.sixrr.inspectjs.BaseInspectionVisitor; +import com.sixrr.inspectjs.InspectionJSFix; +import com.sixrr.inspectjs.JSGroupNames; +import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import com.sixrr.inspectjs.utils.ControlFlowUtils; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; @@ -17,54 +21,53 @@ public class UnnecessaryReturnJSInspection extends JavaScriptInspection { private final UnnecessaryReturnFix fix = new UnnecessaryReturnFix(); @Override - @Nonnull + @Nonnull public String getID() { return "UnnecessaryReturnStatementJS"; } @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("unnecessary.return.statement.display.name"); + return InspectionJSLocalize.unnecessaryReturnStatementDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME; + return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); } @Override - public boolean isEnabledByDefault() { + public boolean isEnabledByDefault() { return true; } @RequiredReadAction - @Override - public String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("unnecessary.return.error.string"); + @Override + public String buildErrorString(Object state, Object... args) { + return InspectionJSLocalize.unnecessaryReturnErrorString().get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new UnnecessaryReturnVisitor(); } @Override - public InspectionJSFix buildFix(PsiElement location, Object state) { + public InspectionJSFix buildFix(PsiElement location, Object state) { return fix; } private static class UnnecessaryReturnFix extends InspectionJSFix { @Override - @Nonnull + @Nonnull public String getName() { - return InspectionJSBundle.message("remove.unnecessary.return.fix"); + return InspectionJSLocalize.removeUnnecessaryReturnFix().get(); } @Override - public void doFix(Project project, ProblemDescriptor descriptor) - throws IncorrectOperationException { + public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { final PsiElement returnKeywordElement = descriptor.getPsiElement(); final PsiElement returnStatement = returnKeywordElement.getParent(); assert returnStatement != null; @@ -73,8 +76,8 @@ public void doFix(Project project, ProblemDescriptor descriptor) } private static class UnnecessaryReturnVisitor extends BaseInspectionVisitor { - - @Override public void visitJSReturnStatement(@Nonnull JSReturnStatement statement) { + @Override + public void visitJSReturnStatement(@Nonnull JSReturnStatement statement) { super.visitJSReturnStatement(statement); final JSExpression returnValue = statement.getExpression(); @@ -82,8 +85,7 @@ private static class UnnecessaryReturnVisitor extends BaseInspectionVisitor { { return; } - final JSFunction function = - PsiTreeUtil.getParentOfType(statement, JSFunction.class); + final JSFunction function = PsiTreeUtil.getParentOfType(statement, JSFunction.class); if (function == null) { return; } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/dataflow/ReuseOfLocalVariableJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/dataflow/ReuseOfLocalVariableJSInspection.java index f2cf294b..c41be56a 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/dataflow/ReuseOfLocalVariableJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/dataflow/ReuseOfLocalVariableJSInspection.java @@ -29,7 +29,7 @@ public String getDisplayName() @Nonnull public String getGroupDisplayName() { - return JSGroupNames.DATA_FLOW_ISSUES; + return JSGroupNames.DATA_FLOW_ISSUES.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/dataflow/UnnecessaryLocalVariableJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/dataflow/UnnecessaryLocalVariableJSInspection.java index cfa3e6d4..88706ac7 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/dataflow/UnnecessaryLocalVariableJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/dataflow/UnnecessaryLocalVariableJSInspection.java @@ -5,6 +5,7 @@ import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.inspection.InspectionToolState; @@ -21,15 +22,14 @@ public class UnnecessaryLocalVariableJSInspection extends JavaScriptInspection @Nonnull public String getDisplayName() { - return InspectionJSBundle.message( - "redundant.local.variable.display.name"); + return InspectionJSLocalize.redundantLocalVariableDisplayName().get(); } @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.DATA_FLOW_ISSUES; + return JSGroupNames.DATA_FLOW_ISSUES.get(); } @Nonnull @@ -50,8 +50,7 @@ public boolean isEnabledByDefault() @Nonnull public String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message( - "unnecessary.local.variable.problem.descriptor"); + return InspectionJSLocalize.unnecessaryLocalVariableProblemDescriptor().get(); } @Override @@ -75,7 +74,6 @@ public void visitJSVarStatement(@Nonnull JSVarStatement varStatement) final JSVariable[] variables = varStatement.getVariables(); for(JSVariable variable : variables) { - if(isCopyVariable(variable)) { registerVariableError(variable); @@ -121,8 +119,7 @@ private boolean isCopyVariable(JSVariable variable) { return false; } - final JSBlockStatement containingScope = - PsiTreeUtil.getParentOfType(variable, JSBlockStatement.class); + final JSBlockStatement containingScope = PsiTreeUtil.getParentOfType(variable, JSBlockStatement.class); if(containingScope == null || isClassMember(referent)) { return false; @@ -135,8 +132,7 @@ private boolean isCopyVariable(JSVariable variable) return false; } final JSVariable initialization = (JSVariable) referent; - final VariableAssignedVisitor visitor2 = - new VariableAssignedVisitor(initialization); + final VariableAssignedVisitor visitor2 = new VariableAssignedVisitor(initialization); containingScope.accept(visitor2); if(visitor2.isAssigned()) { @@ -154,8 +150,7 @@ private boolean isClassMember(final PsiElement referent) private boolean isImmediatelyReturned(JSVariable variable) { - final JSBlockStatement containingScope = - PsiTreeUtil.getParentOfType(variable, JSBlockStatement.class); + final JSBlockStatement containingScope = PsiTreeUtil.getParentOfType(variable, JSBlockStatement.class); if(containingScope == null) { return false; @@ -184,8 +179,7 @@ private boolean isImmediatelyReturned(JSVariable variable) { return false; } - final JSReturnStatement returnStatement = - (JSReturnStatement) nextStatement; + final JSReturnStatement returnStatement = (JSReturnStatement) nextStatement; final JSExpression returnValue = returnStatement.getExpression(); if(returnValue == null) { @@ -201,15 +195,12 @@ private boolean isImmediatelyReturned(JSVariable variable) private boolean isImmediatelyThrown(JSVariable variable) { - final JSBlockStatement containingScope = - PsiTreeUtil.getParentOfType(variable, JSBlockStatement.class); + final JSBlockStatement containingScope = PsiTreeUtil.getParentOfType(variable, JSBlockStatement.class); if(containingScope == null) { return false; } - final JSVarStatement declarationStatement = - PsiTreeUtil.getParentOfType(variable, - JSVarStatement.class); + final JSVarStatement declarationStatement = PsiTreeUtil.getParentOfType(variable, JSVarStatement.class); if(declarationStatement == null) { return false; @@ -231,8 +222,7 @@ private boolean isImmediatelyThrown(JSVariable variable) { return false; } - final JSThrowStatement throwStatement = - (JSThrowStatement) nextStatement; + final JSThrowStatement throwStatement = (JSThrowStatement) nextStatement; final JSExpression returnValue = throwStatement.getExpression(); if(returnValue == null) { @@ -248,15 +238,12 @@ private boolean isImmediatelyThrown(JSVariable variable) private boolean isImmediatelyAssigned(JSVariable variable) { - final JSBlockStatement containingScope = - PsiTreeUtil.getParentOfType(variable, JSBlockStatement.class); + final JSBlockStatement containingScope = PsiTreeUtil.getParentOfType(variable, JSBlockStatement.class); if(containingScope == null) { return false; } - final JSVarStatement declarationStatement = - PsiTreeUtil.getParentOfType(variable, - JSVarStatement.class); + final JSVarStatement declarationStatement = PsiTreeUtil.getParentOfType(variable, JSVarStatement.class); if(declarationStatement == null) { return false; @@ -280,16 +267,13 @@ private boolean isImmediatelyAssigned(JSVariable variable) { return false; } - final JSExpressionStatement expressionStatement = - (JSExpressionStatement) nextStatement; - final JSExpression expression = - expressionStatement.getExpression(); + final JSExpressionStatement expressionStatement = (JSExpressionStatement) nextStatement; + final JSExpression expression = expressionStatement.getExpression(); if(!(expression instanceof JSAssignmentExpression)) { return false; } - final JSAssignmentExpression assignmentExpression = - (JSAssignmentExpression) expression; + final JSAssignmentExpression assignmentExpression = (JSAssignmentExpression) expression; final JSExpression rhs = assignmentExpression.getROperand(); if(rhs == null) { @@ -299,8 +283,7 @@ private boolean isImmediatelyAssigned(JSVariable variable) { return false; } - final JSReferenceExpression reference = - (JSReferenceExpression) rhs; + final JSReferenceExpression reference = (JSReferenceExpression) rhs; final PsiElement referent = reference.resolve(); if(referent == null || !referent.equals(variable)) { @@ -313,8 +296,7 @@ private boolean isImmediatelyAssigned(JSVariable variable) } for(int i = followingStatementNumber; i < statements.length; i++) { - if(VariableAccessUtils.variableIsUsed(variable, - statements[i])) + if(VariableAccessUtils.variableIsUsed(variable, statements[i])) { return false; } @@ -322,18 +304,14 @@ private boolean isImmediatelyAssigned(JSVariable variable) return true; } - private boolean isImmediatelyAssignedAsDeclaration( - JSVariable variable) + private boolean isImmediatelyAssignedAsDeclaration(JSVariable variable) { - final JSBlockStatement containingScope = - PsiTreeUtil.getParentOfType(variable, JSBlockStatement.class); + final JSBlockStatement containingScope = PsiTreeUtil.getParentOfType(variable, JSBlockStatement.class); if(containingScope == null) { return false; } - final JSVarStatement declarationStatement = - PsiTreeUtil.getParentOfType(variable, - JSVarStatement.class); + final JSVarStatement declarationStatement = PsiTreeUtil.getParentOfType(variable, JSVarStatement.class); if(declarationStatement == null) { return false; @@ -357,15 +335,13 @@ private boolean isImmediatelyAssignedAsDeclaration( { return false; } - final JSVarStatement declaration = - (JSVarStatement) nextStatement; + final JSVarStatement declaration = (JSVarStatement) nextStatement; final JSVariable[] declarations = declaration.getVariables(); if(declarations.length != 1) { return false; } - final JSExpression rhs = - declarations[0].getInitializer(); + final JSExpression rhs = declarations[0].getInitializer(); if(rhs == null) { return false; @@ -381,8 +357,7 @@ private boolean isImmediatelyAssignedAsDeclaration( } for(int i = followingStatementNumber; i < statements.length; i++) { - if(VariableAccessUtils.variableIsUsed(variable, - statements[i])) + if(VariableAccessUtils.variableIsUsed(variable, statements[i])) { return false; } @@ -390,8 +365,7 @@ private boolean isImmediatelyAssignedAsDeclaration( return true; } - private boolean variableIsUsedInInnerFunction(JSBlockStatement block, - JSVariable variable) + private boolean variableIsUsedInInnerFunction(JSBlockStatement block, JSVariable variable) { final VariableUsedInInnerFunctionVisitor visitor = new VariableUsedInInnerFunctionVisitor(variable); block.accept(visitor); diff --git a/inspections/src/main/java/com/sixrr/inspectjs/dom/DocumentWriteJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/dom/DocumentWriteJSInspection.java index ea123f44..9d371f8a 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/dom/DocumentWriteJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/dom/DocumentWriteJSInspection.java @@ -26,7 +26,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.DOM_GROUP_NAME; + return JSGroupNames.DOM_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/dom/InnerHTMLJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/dom/InnerHTMLJSInspection.java index 2b52ebfc..c189fc65 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/dom/InnerHTMLJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/dom/InnerHTMLJSInspection.java @@ -21,7 +21,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.DOM_GROUP_NAME; + return JSGroupNames.DOM_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/dom/PlatformDetectionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/dom/PlatformDetectionJSInspection.java index 344990a9..2891d364 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/dom/PlatformDetectionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/dom/PlatformDetectionJSInspection.java @@ -22,7 +22,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.DOM_GROUP_NAME; + return JSGroupNames.DOM_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/dom/XHTMLIncompatabilitiesJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/dom/XHTMLIncompatabilitiesJSInspection.java index a044ec8f..0634f694 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/dom/XHTMLIncompatabilitiesJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/dom/XHTMLIncompatabilitiesJSInspection.java @@ -3,39 +3,37 @@ import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.lang.javascript.psi.JSReferenceExpression; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; - import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class XHTMLIncompatabilitiesJSInspection extends JavaScriptInspection { - @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("xhtml.incompatibilities.display.name"); + return InspectionJSLocalize.xhtmlIncompatibilitiesDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { - return JSGroupNames.DOM_GROUP_NAME; + return JSGroupNames.DOM_GROUP_NAME.get(); } @RequiredReadAction - @Override - @Nullable + @Override + @Nullable protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("xhtml.incompatabilities.error.string"); + return InspectionJSLocalize.xhtmlIncompatabilitiesErrorString().get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new Visitor(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/exception/ContinueOrBreakFromFinallyBlockJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/exception/ContinueOrBreakFromFinallyBlockJSInspection.java index 5857e0b2..89a3366c 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/exception/ContinueOrBreakFromFinallyBlockJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/exception/ContinueOrBreakFromFinallyBlockJSInspection.java @@ -23,7 +23,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.ERRORHANDLING_GROUP_NAME; + return JSGroupNames.ERRORHANDLING_GROUP_NAME.get(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyCatchBlockJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyCatchBlockJSInspection.java index cf575d27..5488f623 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyCatchBlockJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyCatchBlockJSInspection.java @@ -25,7 +25,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.ERRORHANDLING_GROUP_NAME; + return JSGroupNames.ERRORHANDLING_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyFinallyBlockJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyFinallyBlockJSInspection.java index 593bacb1..a23d13c3 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyFinallyBlockJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyFinallyBlockJSInspection.java @@ -23,7 +23,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.ERRORHANDLING_GROUP_NAME; + return JSGroupNames.ERRORHANDLING_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyTryBlockJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyTryBlockJSInspection.java index 2855d572..13fb461a 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyTryBlockJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyTryBlockJSInspection.java @@ -23,7 +23,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.ERRORHANDLING_GROUP_NAME; + return JSGroupNames.ERRORHANDLING_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/exception/ExceptionCaughtLocallyJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/exception/ExceptionCaughtLocallyJSInspection.java index 8faa83a5..a6b902fc 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/exception/ExceptionCaughtLocallyJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/exception/ExceptionCaughtLocallyJSInspection.java @@ -26,7 +26,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.ERRORHANDLING_GROUP_NAME; + return JSGroupNames.ERRORHANDLING_GROUP_NAME.get(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/exception/ReturnFromFinallyBlockJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/exception/ReturnFromFinallyBlockJSInspection.java index 05879706..5c3cb01f 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/exception/ReturnFromFinallyBlockJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/exception/ReturnFromFinallyBlockJSInspection.java @@ -27,7 +27,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.ERRORHANDLING_GROUP_NAME; + return JSGroupNames.ERRORHANDLING_GROUP_NAME.get(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/exception/ThrowFromFinallyBlockJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/exception/ThrowFromFinallyBlockJSInspection.java index 403a6fc8..cd5a42bb 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/exception/ThrowFromFinallyBlockJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/exception/ThrowFromFinallyBlockJSInspection.java @@ -27,7 +27,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.ERRORHANDLING_GROUP_NAME; + return JSGroupNames.ERRORHANDLING_GROUP_NAME.get(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/exception/UnusedCatchParameterJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/exception/UnusedCatchParameterJSInspection.java index 8f65e82f..84e74f8e 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/exception/UnusedCatchParameterJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/exception/UnusedCatchParameterJSInspection.java @@ -5,15 +5,14 @@ import com.intellij.lang.javascript.psi.JSStatement; import com.intellij.lang.javascript.psi.JSTryStatement; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.inspection.InspectionToolState; import consulo.language.psi.PsiComment; import consulo.language.psi.PsiElement; - import jakarta.annotation.Nonnull; @ExtensionImpl @@ -23,15 +22,14 @@ public class UnusedCatchParameterJSInspection extends JavaScriptInspection @Nonnull public String getDisplayName() { - return InspectionJSBundle.message( - "unused.catch.parameter.display.name"); + return InspectionJSLocalize.unusedCatchParameterDisplayName().get(); } @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.ERRORHANDLING_GROUP_NAME; + return JSGroupNames.ERRORHANDLING_GROUP_NAME.get(); } @Nonnull @@ -46,8 +44,7 @@ public InspectionToolState createStateProvider() @Nonnull protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message( - "unused.catch.parameter.problem.descriptor"); + return InspectionJSLocalize.unusedCatchParameterProblemDescriptor().get(); } @Override @@ -58,7 +55,6 @@ public BaseInspectionVisitor buildVisitor() private class EmptyCatchBlockVisitor extends BaseInspectionVisitor { - @Override public void visitJSTryStatement(@Nonnull JSTryStatement statement) { @@ -95,8 +91,7 @@ private void checkCatchSection(JSCatchBlock section) } } } - final CatchParameterUsedVisitor visitor = - new CatchParameterUsedVisitor(param); + final CatchParameterUsedVisitor visitor = new CatchParameterUsedVisitor(param); block.accept(visitor); if(!visitor.isUsed()) { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/CyclomaticComplexityJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/CyclomaticComplexityJSInspection.java index d8b043f1..17c41055 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/CyclomaticComplexityJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/CyclomaticComplexityJSInspection.java @@ -33,7 +33,7 @@ public String getDisplayName() @Nonnull public String getGroupDisplayName() { - return JSGroupNames.FUNCTIONMETRICS_GROUP_NAME; + return JSGroupNames.FUNCTIONMETRICS_GROUP_NAME.get(); } @Nonnull diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleLoopsJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleLoopsJSInspection.java index 51821b91..23b4cc0d 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleLoopsJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleLoopsJSInspection.java @@ -22,7 +22,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.FUNCTIONMETRICS_GROUP_NAME; + return JSGroupNames.FUNCTIONMETRICS_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleReturnPointsJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleReturnPointsJSInspection.java index a04d5687..faff94dc 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleReturnPointsJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleReturnPointsJSInspection.java @@ -32,7 +32,7 @@ public String getDisplayName() @Nonnull public String getGroupDisplayName() { - return JSGroupNames.FUNCTIONMETRICS_GROUP_NAME; + return JSGroupNames.FUNCTIONMETRICS_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/NestingDepthJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/NestingDepthJSInspection.java index 3abd5190..fc2448c6 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/NestingDepthJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/NestingDepthJSInspection.java @@ -32,7 +32,7 @@ public String getDisplayName() @Nonnull public String getGroupDisplayName() { - return JSGroupNames.FUNCTIONMETRICS_GROUP_NAME; + return JSGroupNames.FUNCTIONMETRICS_GROUP_NAME.get(); } @Nonnull diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/ParametersPerFunctionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/ParametersPerFunctionJSInspection.java index ec48c69f..58656d09 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/ParametersPerFunctionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/ParametersPerFunctionJSInspection.java @@ -34,7 +34,7 @@ public String getDisplayName() @Nonnull public String getGroupDisplayName() { - return JSGroupNames.FUNCTIONMETRICS_GROUP_NAME; + return JSGroupNames.FUNCTIONMETRICS_GROUP_NAME.get(); } @Nonnull diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/StatementsPerFunctionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/StatementsPerFunctionJSInspection.java index 65e1cf21..3091ffce 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/StatementsPerFunctionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/StatementsPerFunctionJSInspection.java @@ -33,7 +33,7 @@ public String getDisplayName() @Nonnull public String getGroupDisplayName() { - return JSGroupNames.FUNCTIONMETRICS_GROUP_NAME; + return JSGroupNames.FUNCTIONMETRICS_GROUP_NAME.get(); } @Nonnull diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/ThreeNegationsPerFunctionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/ThreeNegationsPerFunctionJSInspection.java index 3d319b7b..c523582f 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/ThreeNegationsPerFunctionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/ThreeNegationsPerFunctionJSInspection.java @@ -28,7 +28,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.FUNCTIONMETRICS_GROUP_NAME; + return JSGroupNames.FUNCTIONMETRICS_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/naming/FunctionNamingConventionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/naming/FunctionNamingConventionJSInspection.java index 70516e96..e0751bda 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/naming/FunctionNamingConventionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/naming/FunctionNamingConventionJSInspection.java @@ -42,7 +42,7 @@ public String getDisplayName() @Nonnull public String getGroupDisplayName() { - return JSGroupNames.NAMING_CONVENTIONS_GROUP_NAME; + return JSGroupNames.NAMING_CONVENTIONS_GROUP_NAME.get(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/naming/LocalVariableNamingConventionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/naming/LocalVariableNamingConventionJSInspection.java index a2213e74..c07480ec 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/naming/LocalVariableNamingConventionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/naming/LocalVariableNamingConventionJSInspection.java @@ -35,7 +35,7 @@ public String getDisplayName() @Nonnull public String getGroupDisplayName() { - return JSGroupNames.NAMING_CONVENTIONS_GROUP_NAME; + return JSGroupNames.NAMING_CONVENTIONS_GROUP_NAME.get(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/naming/ParameterNamingConventionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/naming/ParameterNamingConventionJSInspection.java index bdfdbc63..696ad7f1 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/naming/ParameterNamingConventionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/naming/ParameterNamingConventionJSInspection.java @@ -44,7 +44,7 @@ public InspectionToolState createStateProvider() @Nonnull public String getGroupDisplayName() { - return JSGroupNames.NAMING_CONVENTIONS_GROUP_NAME; + return JSGroupNames.NAMING_CONVENTIONS_GROUP_NAME.get(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/style/ChainedEqualityJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/style/ChainedEqualityJSInspection.java index 376cc56d..aee85d6f 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/style/ChainedEqualityJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/style/ChainedEqualityJSInspection.java @@ -28,7 +28,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.STYLE_GROUP_NAME; + return JSGroupNames.STYLE_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/style/ChainedFunctionCallJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/style/ChainedFunctionCallJSInspection.java index 677f419f..ef2f1183 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/style/ChainedFunctionCallJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/style/ChainedFunctionCallJSInspection.java @@ -25,7 +25,7 @@ public boolean isEnabledByDefault() @Nonnull public String getGroupDisplayName() { - return JSGroupNames.STYLE_GROUP_NAME; + return JSGroupNames.STYLE_GROUP_NAME.get(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/style/ConstantOnLHSOfComparisonJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/style/ConstantOnLHSOfComparisonJSInspection.java index fcaa58f8..28e554e3 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/style/ConstantOnLHSOfComparisonJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/style/ConstantOnLHSOfComparisonJSInspection.java @@ -35,7 +35,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.STYLE_GROUP_NAME; + return JSGroupNames.STYLE_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/style/ConstantOnRHSOfComparisonJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/style/ConstantOnRHSOfComparisonJSInspection.java index 43ca4ecf..26083608 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/style/ConstantOnRHSOfComparisonJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/style/ConstantOnRHSOfComparisonJSInspection.java @@ -37,7 +37,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.STYLE_GROUP_NAME; + return JSGroupNames.STYLE_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/style/NestedFunctionCallJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/style/NestedFunctionCallJSInspection.java index 83f37bc6..a22ccdfe 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/style/NestedFunctionCallJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/style/NestedFunctionCallJSInspection.java @@ -25,7 +25,7 @@ public boolean isEnabledByDefault() @Nonnull public String getGroupDisplayName() { - return JSGroupNames.STYLE_GROUP_NAME; + return JSGroupNames.STYLE_GROUP_NAME.get(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/style/NonBlockStatementBodyJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/style/NonBlockStatementBodyJSInspection.java index 366a0606..81b82d4f 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/style/NonBlockStatementBodyJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/style/NonBlockStatementBodyJSInspection.java @@ -27,7 +27,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.STYLE_GROUP_NAME; + return JSGroupNames.STYLE_GROUP_NAME.get(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/style/UnterminatedStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/style/UnterminatedStatementJSInspection.java index cb1499f7..8bb4904b 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/style/UnterminatedStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/style/UnterminatedStatementJSInspection.java @@ -1,7 +1,11 @@ package com.sixrr.inspectjs.style; import com.intellij.lang.javascript.psi.*; -import com.sixrr.inspectjs.*; +import com.sixrr.inspectjs.BaseInspectionVisitor; +import com.sixrr.inspectjs.InspectionJSFix; +import com.sixrr.inspectjs.JSGroupNames; +import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.inspection.ProblemDescriptor; @@ -13,7 +17,6 @@ import consulo.xml.psi.xml.XmlAttributeValue; import consulo.xml.psi.xml.XmlTagChild; import jakarta.annotation.Nonnull; - import jakarta.annotation.Nullable; @ExtensionImpl @@ -31,14 +34,14 @@ public boolean isEnabledByDefault() @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("unterminated.statement.display.name"); + return InspectionJSLocalize.unterminatedStatementDisplayName().get(); } @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.STYLE_GROUP_NAME; + return JSGroupNames.STYLE_GROUP_NAME.get(); } @RequiredReadAction @@ -46,7 +49,7 @@ public String getGroupDisplayName() @Nullable protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("unterminated.statement.error.string"); + return InspectionJSLocalize.unterminatedStatementErrorString().get(); } @Override @@ -67,7 +70,7 @@ private static class TerminateStatementFix extends InspectionJSFix @Nonnull public String getName() { - return InspectionJSBundle.message("terminate.statement.fix"); + return InspectionJSLocalize.terminateStatementFix().get(); } @Override @@ -89,7 +92,6 @@ public void doFix(Project project, ProblemDescriptor descriptor) throws Incorrec private static class Visitor extends BaseInspectionVisitor { - @Override public void visitJSExpressionStatement(JSExpressionStatement statement) { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/validity/BadExpressionStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/validity/BadExpressionStatementJSInspection.java index 2564d85a..8a1a3f0a 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/validity/BadExpressionStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/validity/BadExpressionStatementJSInspection.java @@ -34,7 +34,7 @@ public String getDisplayName() @Nonnull public String getGroupDisplayName() { - return JSGroupNames.VALIDITY_GROUP_NAME; + return JSGroupNames.VALIDITY_GROUP_NAME.get(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/validity/DebuggerStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/validity/DebuggerStatementJSInspection.java index bfceb191..0939d572 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/validity/DebuggerStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/validity/DebuggerStatementJSInspection.java @@ -24,7 +24,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.VALIDITY_GROUP_NAME; + return JSGroupNames.VALIDITY_GROUP_NAME.get(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/validity/DuplicateCaseLabelJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/validity/DuplicateCaseLabelJSInspection.java index 32b7b889..31162f5f 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/validity/DuplicateCaseLabelJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/validity/DuplicateCaseLabelJSInspection.java @@ -27,7 +27,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.VALIDITY_GROUP_NAME; + return JSGroupNames.VALIDITY_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/validity/DuplicatePropertyOnObjectJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/validity/DuplicatePropertyOnObjectJSInspection.java index feb3a510..ceeb3bc9 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/validity/DuplicatePropertyOnObjectJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/validity/DuplicatePropertyOnObjectJSInspection.java @@ -23,7 +23,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.VALIDITY_GROUP_NAME; + return JSGroupNames.VALIDITY_GROUP_NAME.get(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/validity/FunctionWithInconsistentReturnsJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/validity/FunctionWithInconsistentReturnsJSInspection.java index a36d628c..a5014a89 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/validity/FunctionWithInconsistentReturnsJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/validity/FunctionWithInconsistentReturnsJSInspection.java @@ -31,7 +31,7 @@ public String getDisplayName() @Nonnull public String getGroupDisplayName() { - return JSGroupNames.VALIDITY_GROUP_NAME; + return JSGroupNames.VALIDITY_GROUP_NAME.get(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/validity/StringLiteralBreaksHTMLJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/validity/StringLiteralBreaksHTMLJSInspection.java index 4f8b0aed..bb46f3d0 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/validity/StringLiteralBreaksHTMLJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/validity/StringLiteralBreaksHTMLJSInspection.java @@ -21,7 +21,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.VALIDITY_GROUP_NAME; + return JSGroupNames.VALIDITY_GROUP_NAME.get(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/validity/ThisExpressionReferencesGlobalObjectJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/validity/ThisExpressionReferencesGlobalObjectJSInspection.java index 20e58f61..0bc602d1 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/validity/ThisExpressionReferencesGlobalObjectJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/validity/ThisExpressionReferencesGlobalObjectJSInspection.java @@ -27,7 +27,7 @@ public String getDisplayName() { @Override @Nonnull public String getGroupDisplayName() { - return JSGroupNames.VALIDITY_GROUP_NAME; + return JSGroupNames.VALIDITY_GROUP_NAME.get(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/validity/UnreachableCodeJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/validity/UnreachableCodeJSInspection.java index beff78f7..9fceed01 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/validity/UnreachableCodeJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/validity/UnreachableCodeJSInspection.java @@ -3,60 +3,56 @@ import com.intellij.lang.javascript.psi.JSBlockStatement; import com.intellij.lang.javascript.psi.JSStatement; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; +import com.sixrr.inspectjs.localize.InspectionJSLocalize; import com.sixrr.inspectjs.utils.ControlFlowUtils; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; - import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class UnreachableCodeJSInspection extends JavaScriptInspection { - @Override - @Nonnull + @Nonnull public String getDisplayName() { - return InspectionJSBundle.message("unreachable.code.display.name"); + return InspectionJSLocalize.unreachableCodeDisplayName().get(); } @Override - @Nonnull + @Nonnull public String getGroupDisplayName() { - return JSGroupNames.VALIDITY_GROUP_NAME; + return JSGroupNames.VALIDITY_GROUP_NAME.get(); } @Override - public boolean isEnabledByDefault() { + public boolean isEnabledByDefault() { return true; } @RequiredReadAction - @Override - @Nullable + @Override + @Nullable protected String buildErrorString(Object state, Object... args) { - return InspectionJSBundle.message("unreachable.code.error.string"); + return InspectionJSLocalize.unreachableCodeErrorString().get(); } @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new Visitor(); } private static class Visitor extends BaseInspectionVisitor { - //TODO: this doesn't work at the top level - @Override public void visitJSBlock(JSBlockStatement statement) { + @Override + public void visitJSBlock(JSBlockStatement statement) { super.visitJSBlock(statement); final JSStatement[] statements = statement.getStatements(); for (int i = 0; i < statements.length-1; i++) { - if(!ControlFlowUtils.statementMayCompleteNormally(statements[i])) - { + if (!ControlFlowUtils.statementMayCompleteNormally(statements[i])) { registerStatementError(statements[i+1]); } - } } } From 8eb83a3c57d9db94d03d06cdba78db592df75fb0 Mon Sep 17 00:00:00 2001 From: UNV Date: Mon, 15 Jul 2024 21:12:56 +0300 Subject: [PATCH 031/150] Inlining JSIntention.getSuffixedDisplayName() and JSIntention.getText(Object...). --- .../idea/lang/javascript/intention/JSIntention.java | 13 +------------ .../intention/bool/JSDeMorgansLawIntention.java | 8 +++++--- .../intention/bool/JSFlipComparisonIntention.java | 13 +++++++------ .../intention/bool/JSFlipConjunctionIntention.java | 5 +++-- .../intention/bool/JSNegateComparisonIntention.java | 12 ++++-------- .../bool/JSRemoveBooleanEqualityIntention.java | 8 ++++---- .../intention/braces/JSAddBracesIntention.java | 8 ++++---- .../intention/braces/JSRemoveBracesIntention.java | 8 ++++---- .../constant/JSConstantSubexpressionIntention.java | 5 +++-- .../increment/JSExtractIncrementIntention.java | 8 ++++---- .../number/JSReplaceMultiplyWithShiftIntention.java | 9 +++++++-- .../number/JSReplaceShiftWithMultiplyIntention.java | 9 +++++++-- .../JSReplaceWithOperatorAssignmentIntention.java | 5 +++-- 13 files changed, 56 insertions(+), 55 deletions(-) diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSIntention.java index ea2bbc8b..50592ffc 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSIntention.java @@ -24,10 +24,9 @@ import consulo.language.util.IncorrectOperationException; import consulo.project.Project; import consulo.xml.psi.xml.XmlElement; -import org.jetbrains.annotations.NonNls; - import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; +import org.jetbrains.annotations.NonNls; public abstract class JSIntention extends PsiElementBaseIntentionAction { private static final String INTENTION_SUFFIX = "Intention"; @@ -101,14 +100,4 @@ protected String getTextKey(@NonNls Object... suffixes) { public String getText() { return JSIntentionBundle.message(this.getTextKey(DISPLAY_NAME)); } - - @SuppressWarnings({"UnresolvedPropertyKey"}) - public String getText(@NonNls Object... arguments) { - return JSIntentionBundle.message(this.getTextKey(DISPLAY_NAME), arguments); - } - - @SuppressWarnings({"UnresolvedPropertyKey"}) - protected String getSuffixedDisplayName(@NonNls String suffix, @NonNls Object... arguments) { - return JSIntentionBundle.message(this.getTextKey(DISPLAY_NAME, '.', suffix), arguments); - } } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSDeMorgansLawIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSDeMorgansLawIntention.java index 67590497..c4024d4f 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSDeMorgansLawIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSDeMorgansLawIntention.java @@ -24,14 +24,14 @@ import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; +import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.intention.JSMutablyNamedIntention; import org.intellij.idea.lang.javascript.psiutil.BoolUtils; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import org.jetbrains.annotations.NonNls; -import jakarta.annotation.Nonnull; - @ExtensionImpl @IntentionMetaData(ignoreId = "JSDeMorgansLawIntention", categories = { "JavaScript", @@ -53,7 +53,9 @@ protected String getTextForElement(PsiElement element) { final IElementType tokenType = ((JSBinaryExpression) element).getOperationSign(); - return this.getSuffixedDisplayName(tokenType.equals(JSTokenTypes.ANDAND) ? AND_SUFFIX : OR_SUFFIX); + return tokenType.equals(JSTokenTypes.ANDAND) + ? JSIntentionBundle.message("bool.de-morgans-law.display-name.ANDAND") + : JSIntentionBundle.message("bool.de-morgans-law.display-name.OROR"); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipComparisonIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipComparisonIntention.java index 94748537..68c52502 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipComparisonIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipComparisonIntention.java @@ -24,6 +24,7 @@ import consulo.language.util.IncorrectOperationException; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; +import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.intention.JSMutablyNamedIntention; import org.intellij.idea.lang.javascript.psiutil.ComparisonUtils; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; @@ -42,23 +43,23 @@ public String getTextForElement(PsiElement element) String operatorText = null; String flippedOperatorText = null; - if(exp != null) + if (exp != null) { operatorText = ComparisonUtils.getOperatorText(exp.getOperationSign()); flippedOperatorText = ComparisonUtils.getFlippedOperatorText(exp.getOperationSign()); } - if(exp == null) + if (exp == null) { - return this.getSuffixedDisplayName("unknown"); + return JSIntentionBundle.message("bool.flip-comparison.display-name.unknown"); } - else if(operatorText.equals(flippedOperatorText)) + else if (operatorText.equals(flippedOperatorText)) { - return this.getSuffixedDisplayName("equals", operatorText); + return JSIntentionBundle.message("bool.flip-comparison.display-name.equals", operatorText); } else { - return this.getSuffixedDisplayName("not-equals", operatorText, flippedOperatorText); + return JSIntentionBundle.message("bool.flip-comparison.display-name.not-equals", operatorText, flippedOperatorText); } } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipConjunctionIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipConjunctionIntention.java index 2317d749..efe30754 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipConjunctionIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipConjunctionIntention.java @@ -25,6 +25,7 @@ import consulo.language.util.IncorrectOperationException; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; +import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.intention.JSMutablyNamedIntention; import org.intellij.idea.lang.javascript.psiutil.BinaryOperatorUtils; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; @@ -42,8 +43,8 @@ protected String getTextForElement(PsiElement element) final JSBinaryExpression binaryExpression = (JSBinaryExpression) element; final IElementType sign = binaryExpression.getOperationSign(); - return this.getText(BinaryOperatorUtils.getOperatorText(sign)); - } + return JSIntentionBundle.message("bool.flip-conjunction.display-name", BinaryOperatorUtils.getOperatorText(sign)); + } @Override @Nonnull diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSNegateComparisonIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSNegateComparisonIntention.java index 6664739f..2cfc0455 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSNegateComparisonIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSNegateComparisonIntention.java @@ -24,6 +24,7 @@ import consulo.language.util.IncorrectOperationException; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; +import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.intention.JSMutablyNamedIntention; import org.intellij.idea.lang.javascript.psiutil.ComparisonUtils; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; @@ -50,14 +51,9 @@ public String getTextForElement(PsiElement element) negatedOperatorText = ComparisonUtils.getNegatedOperatorText(sign); } - if(operatorText.equals(negatedOperatorText)) - { - return this.getSuffixedDisplayName("equals", operatorText); - } - else - { - return this.getSuffixedDisplayName("not-equals", operatorText, negatedOperatorText); - } + return operatorText.equals(negatedOperatorText) + ? JSIntentionBundle.message("bool.negate-comparison.display-name.equals", operatorText) + : JSIntentionBundle.message("bool.negate-comparison.display-name.not-equals", operatorText, negatedOperatorText); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSRemoveBooleanEqualityIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSRemoveBooleanEqualityIntention.java index b5e54f06..7c399772 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSRemoveBooleanEqualityIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSRemoveBooleanEqualityIntention.java @@ -23,15 +23,15 @@ import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; +import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.intention.JSMutablyNamedIntention; import org.intellij.idea.lang.javascript.psiutil.BinaryOperatorUtils; import org.intellij.idea.lang.javascript.psiutil.BoolUtils; import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; -import jakarta.annotation.Nonnull; - @ExtensionImpl @IntentionMetaData(ignoreId = "JSRemoveBooleanEqualityIntention", categories = { "JavaScript", @@ -44,8 +44,8 @@ protected String getTextForElement(PsiElement element) { final JSBinaryExpression binaryExpression = (JSBinaryExpression) element; - return this.getText(BinaryOperatorUtils.getOperatorText(binaryExpression.getOperationSign())); - } + return JSIntentionBundle.message("bool.remove-boolean-equality.display-name", BinaryOperatorUtils.getOperatorText(binaryExpression.getOperationSign())); + } @Override @Nonnull diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSAddBracesIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSAddBracesIntention.java index ea715b5c..8ed525a3 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSAddBracesIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSAddBracesIntention.java @@ -21,13 +21,13 @@ import consulo.language.psi.PsiComment; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; +import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.intention.JSMutablyNamedIntention; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import org.jetbrains.annotations.NonNls; -import jakarta.annotation.Nonnull; - @ExtensionImpl @IntentionMetaData(ignoreId = "JSAddBracesIntention", categories = { "JavaScript", @@ -71,8 +71,8 @@ protected String getTextForElement(PsiElement element) keyword = firstChild.getText(); } - return this.getText(keyword); - } + return JSIntentionBundle.message("braces.add-braces.display-name", keyword); + } @Override protected void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSRemoveBracesIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSRemoveBracesIntention.java index 6bbec666..6408694c 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSRemoveBracesIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSRemoveBracesIntention.java @@ -22,6 +22,7 @@ import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; +import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.intention.JSMutablyNamedIntention; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import org.jetbrains.annotations.NonNls; @@ -70,12 +71,11 @@ protected String getTextForElement(PsiElement element) keyword = keywordChild.getText(); } - return this.getText(keyword); - } + return JSIntentionBundle.message("braces.remove-braces.display-name", keyword); + } @Override - protected void processIntention(@Nonnull PsiElement element) - throws IncorrectOperationException + protected void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException { final JSBlockStatement blockStatement = (JSBlockStatement) element; final JSStatement[] statements = blockStatement.getStatements(); diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantSubexpressionIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantSubexpressionIntention.java index 01e645da..95362b02 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantSubexpressionIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantSubexpressionIntention.java @@ -27,6 +27,7 @@ import consulo.util.lang.StringUtil; import jakarta.annotation.Nullable; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; +import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.intention.JSMutablyNamedIntention; import org.intellij.idea.lang.javascript.psiutil.BinaryOperatorUtils; import org.intellij.idea.lang.javascript.psiutil.ExpressionUtil; @@ -71,8 +72,8 @@ protected String getTextForElement(PsiElement element) assert (rhs != null); assert (leftSide != null); - return this.getText(leftSide.getText(), BinaryOperatorUtils.getOperatorText(operationSign), rhs.getText()); - } + return JSIntentionBundle.message("constant.constant-subexpression.display-name", leftSide.getText(),BinaryOperatorUtils.getOperatorText(operationSign),rhs.getText()); + } @Override public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/increment/JSExtractIncrementIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/increment/JSExtractIncrementIntention.java index d23d2e82..2245312c 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/increment/JSExtractIncrementIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/increment/JSExtractIncrementIntention.java @@ -21,12 +21,12 @@ import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; +import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.intention.JSMutablyNamedIntention; import org.intellij.idea.lang.javascript.psiutil.*; -import jakarta.annotation.Nonnull; - @ExtensionImpl @IntentionMetaData(ignoreId = "JSExtractIncrementIntention", categories = { "JavaScript", @@ -37,8 +37,8 @@ public class JSExtractIncrementIntention extends JSMutablyNamedIntention @Override public String getTextForElement(PsiElement element) { - return this.getText(BinaryOperatorUtils.getOperatorText(getOperationSign(element))); - } + return JSIntentionBundle.message("increment.extract-increment.display-name", BinaryOperatorUtils.getOperatorText(getOperationSign(element))); + } @Override @Nonnull diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceMultiplyWithShiftIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceMultiplyWithShiftIntention.java index 64bb725e..c70e69e4 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceMultiplyWithShiftIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceMultiplyWithShiftIntention.java @@ -23,6 +23,7 @@ import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; +import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.intention.JSMutablyNamedIntention; import org.intellij.idea.lang.javascript.psiutil.BinaryOperatorUtils; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; @@ -52,8 +53,12 @@ protected String getTextForElement(PsiElement element) operatorString = (tokenType.equals(JSTokenTypes.MULT) ? "<<" : ">>"); } - return this.getText(BinaryOperatorUtils.getOperatorText(tokenType), operatorString); - } + return JSIntentionBundle.message( + "number.replace-multiply-with-shift.display-name", + BinaryOperatorUtils.getOperatorText(tokenType), + operatorString + ); + } @Override @Nonnull diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceShiftWithMultiplyIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceShiftWithMultiplyIntention.java index 28a236d0..bf15b4fa 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceShiftWithMultiplyIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceShiftWithMultiplyIntention.java @@ -24,6 +24,7 @@ import consulo.language.util.IncorrectOperationException; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; +import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.intention.JSMutablyNamedIntention; import org.intellij.idea.lang.javascript.psiutil.BinaryOperatorUtils; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; @@ -51,8 +52,12 @@ protected String getTextForElement(PsiElement element) operatorString = (tokenType.equals(JSTokenTypes.LTLT) ? "*" : "/"); } - return this.getText(BinaryOperatorUtils.getOperatorText(tokenType), operatorString); - } + return JSIntentionBundle.message( + "number.replace-shift-with-multiply.display-name", + BinaryOperatorUtils.getOperatorText(tokenType), + operatorString + ); + } @Override @Nonnull diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/opassign/JSReplaceWithOperatorAssignmentIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/opassign/JSReplaceWithOperatorAssignmentIntention.java index 77035391..21988941 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/opassign/JSReplaceWithOperatorAssignmentIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/opassign/JSReplaceWithOperatorAssignmentIntention.java @@ -27,6 +27,7 @@ import consulo.language.util.IncorrectOperationException; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; +import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.intention.JSMutablyNamedIntention; import org.intellij.idea.lang.javascript.psiutil.*; @@ -45,8 +46,8 @@ public String getTextForElement(PsiElement element) assert (rhs != null); final IElementType sign = rhs.getOperationSign(); - return this.getText(BinaryOperatorUtils.getOperatorText(sign)); - } + return JSIntentionBundle.message("opassign.replace-with-operator-assignment.display-name", BinaryOperatorUtils.getOperatorText(sign)); + } @Override @Nonnull From 9287d8c87cab19436a4cf971d55d74cae0329741 Mon Sep 17 00:00:00 2001 From: UNV Date: Tue, 16 Jul 2024 01:03:36 +0300 Subject: [PATCH 032/150] Intention classes refactoring. --- .../bool/JSDeMorgansLawIntention.java | 42 ++-- .../bool/JSFlipComparisonIntention.java | 12 +- .../bool/JSFlipConjunctionIntention.java | 37 ++- .../bool/JSNegateComparisonIntention.java | 18 +- .../JSRemoveBooleanEqualityIntention.java | 44 ++-- .../braces/JSAddBracesIntention.java | 41 ++-- .../braces/JSRemoveBracesIntention.java | 22 +- .../JSChangeToCStyleCommentIntention.java | 59 ++--- .../JSChangeToEndOfLineCommentIntention.java | 37 ++- .../JSFlipConditionalIntention.java | 26 +-- .../JSConstantExpressionIntention.java | 48 ++-- .../JSConstantSubexpressionIntention.java | 87 +++---- .../JSExtractIncrementIntention.java | 48 ++-- ...DeclarationAndInitializationIntention.java | 35 +-- .../JSConvertIntegerToDecimalIntention.java | 17 +- .../JSConvertIntegerToHexIntention.java | 19 +- .../JSConvertIntegerToOctalIntention.java | 17 +- .../JSReplaceMultiplyWithShiftIntention.java | 88 +++---- .../JSReplaceShiftWithMultiplyIntention.java | 83 +++---- ...eplaceWithOperatorAssignmentIntention.java | 53 ++--- ...JSDoubleToSingleQuotedStringIntention.java | 27 +-- ...JSSingleToDoubleQuotedStringIntention.java | 28 +-- .../JSReplaceSwitchWithIfIntention.java | 215 ++++++++++-------- .../trivialif/JSSimplifyIfElseIntention.java | 38 ++-- .../trivialif/JSSplitElseIfIntention.java | 19 +- .../trivialif/JSSplitIfAndIntention.java | 51 ++--- .../trivialif/JSSplitIfOrIntention.java | 53 ++--- 27 files changed, 565 insertions(+), 699 deletions(-) diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSDeMorgansLawIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSDeMorgansLawIntention.java index c4024d4f..a79dae7d 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSDeMorgansLawIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSDeMorgansLawIntention.java @@ -19,6 +19,7 @@ import com.intellij.lang.javascript.psi.JSBinaryExpression; import com.intellij.lang.javascript.psi.JSElement; import com.intellij.lang.javascript.psi.JSExpression; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; import consulo.language.editor.intention.IntentionMetaData; @@ -33,28 +34,26 @@ import org.jetbrains.annotations.NonNls; @ExtensionImpl -@IntentionMetaData(ignoreId = "JSDeMorgansLawIntention", categories = { - "JavaScript", - "Boolean" -}, fileExtensions = "js") +@IntentionMetaData( + ignoreId = "JSDeMorgansLawIntention", + categories = {"JavaScript", "Boolean"}, + fileExtensions = "js" +) public class JSDeMorgansLawIntention extends JSMutablyNamedIntention { @NonNls private static final String AND_OPERATOR = "&&"; @NonNls private static final String OR_OPERATOR = "||"; - @NonNls - private static final String AND_SUFFIX = "ANDAND"; - @NonNls - private static final String OR_SUFFIX = "OROR"; @Override + @RequiredReadAction protected String getTextForElement(PsiElement element) { final IElementType tokenType = ((JSBinaryExpression) element).getOperationSign(); return tokenType.equals(JSTokenTypes.ANDAND) - ? JSIntentionBundle.message("bool.de-morgans-law.display-name.ANDAND") + ? JSIntentionBundle.message("bool.de-morgans-law.display-name.ANDAND") : JSIntentionBundle.message("bool.de-morgans-law.display-name.OROR"); } @@ -72,7 +71,7 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat final IElementType tokenType = exp.getOperationSign(); JSElement parent = (JSElement) exp.getParent(); - while(isConjunctionExpression(parent, tokenType)) + while (isConjunctionExpression(parent, tokenType)) { exp = (JSBinaryExpression) parent; assert (exp != null); @@ -84,8 +83,7 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat JSElementFactory.replaceExpressionWithNegatedExpressionString(exp, newExpression); } - private String convertConjunctionExpression(JSBinaryExpression exp, - IElementType tokenType) + private String convertConjunctionExpression(JSBinaryExpression exp, IElementType tokenType) { final String leftText = this.getOperandText(exp.getLOperand(), tokenType); final String rightText = this.getOperandText(exp.getROperand(), tokenType); @@ -96,22 +94,14 @@ private String convertConjunctionExpression(JSBinaryExpression exp, private String getOperandText(JSExpression operand, IElementType tokenType) { - return (isConjunctionExpression(operand, tokenType) - ? this.convertConjunctionExpression((JSBinaryExpression) operand, tokenType) - : BoolUtils.getNegatedExpressionText(operand)); + return isConjunctionExpression(operand, tokenType) + ? this.convertConjunctionExpression((JSBinaryExpression) operand, tokenType) + : BoolUtils.getNegatedExpressionText(operand); } - private static boolean isConjunctionExpression(JSElement exp, - IElementType conjunctionType) + @RequiredReadAction + private static boolean isConjunctionExpression(JSElement exp, IElementType conjunctionType) { - if(!(exp instanceof JSBinaryExpression)) - { - return false; - } - - final JSBinaryExpression binaryExpression = (JSBinaryExpression) exp; - final IElementType tokenType = binaryExpression.getOperationSign(); - - return tokenType.equals(conjunctionType); + return exp instanceof JSBinaryExpression binaryExpression && binaryExpression.getOperationSign().equals(conjunctionType); } } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipComparisonIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipComparisonIntention.java index 68c52502..157fdaf6 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipComparisonIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipComparisonIntention.java @@ -17,6 +17,7 @@ import com.intellij.lang.javascript.psi.JSBinaryExpression; import com.intellij.lang.javascript.psi.JSExpression; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; import consulo.language.editor.intention.IntentionMetaData; @@ -30,13 +31,15 @@ import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; @ExtensionImpl -@IntentionMetaData(ignoreId = "JSFlipComparisonIntention", categories = { - "JavaScript", - "Boolean" -}, fileExtensions = "js") +@IntentionMetaData( + ignoreId = "JSFlipComparisonIntention", + categories = {"JavaScript", "Boolean"}, + fileExtensions = "js" +) public class JSFlipComparisonIntention extends JSMutablyNamedIntention { @Override + @RequiredReadAction public String getTextForElement(PsiElement element) { final JSBinaryExpression exp = (JSBinaryExpression) element; @@ -71,6 +74,7 @@ public JSElementPredicate getElementPredicate() } @Override + @RequiredReadAction public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException { final JSBinaryExpression exp = (JSBinaryExpression) element; diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipConjunctionIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipConjunctionIntention.java index efe30754..54f9bb7c 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipConjunctionIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipConjunctionIntention.java @@ -18,6 +18,7 @@ import com.intellij.lang.javascript.psi.JSBinaryExpression; import com.intellij.lang.javascript.psi.JSElement; import com.intellij.lang.javascript.psi.JSExpression; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; import consulo.language.editor.intention.IntentionMetaData; @@ -31,13 +32,15 @@ import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; @ExtensionImpl -@IntentionMetaData(ignoreId = "JSFlipConjunctionIntention", categories = { - "JavaScript", - "Boolean" -}, fileExtensions = "js") +@IntentionMetaData( + ignoreId = "JSFlipConjunctionIntention", + categories = {"JavaScript", "Boolean"}, + fileExtensions = "js" +) public class JSFlipConjunctionIntention extends JSMutablyNamedIntention { @Override + @RequiredReadAction protected String getTextForElement(PsiElement element) { final JSBinaryExpression binaryExpression = (JSBinaryExpression) element; @@ -54,6 +57,7 @@ public JSElementPredicate getElementPredicate() } @Override + @RequiredReadAction public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException { final JSBinaryExpression binaryExpression = (JSBinaryExpression) element; @@ -62,7 +66,7 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat final IElementType sign = binaryExpression.getOperationSign(); JSElement parent = (JSElement) exp.getParent(); - while(isConjunctionExpression(parent, sign)) + while (isConjunctionExpression(parent, sign)) { exp = (JSExpression) parent; assert (exp != null); @@ -71,16 +75,16 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat JSElementFactory.replaceExpression(exp, this.flipExpression(exp, sign)); } - private String flipExpression(JSExpression exp, - IElementType conjunctionType) + @RequiredReadAction + private String flipExpression(JSExpression exp, IElementType conjunctionType) { - if(isConjunctionExpression(exp, conjunctionType)) + if (isConjunctionExpression(exp, conjunctionType)) { final JSBinaryExpression andExpression = (JSBinaryExpression) exp; return this.flipExpression(andExpression.getROperand(), conjunctionType) + ' ' + - BinaryOperatorUtils.getOperatorText(conjunctionType) + ' ' + - this.flipExpression(andExpression.getLOperand(), conjunctionType); + BinaryOperatorUtils.getOperatorText(conjunctionType) + ' ' + + this.flipExpression(andExpression.getLOperand(), conjunctionType); } else { @@ -88,16 +92,9 @@ private String flipExpression(JSExpression exp, } } - private static boolean isConjunctionExpression(JSElement expression, - IElementType conjunctionType) + @RequiredReadAction + private static boolean isConjunctionExpression(JSElement expression, IElementType conjunctionType) { - if(!(expression instanceof JSBinaryExpression)) - { - return false; - } - - final JSBinaryExpression binaryExpression = (JSBinaryExpression) expression; - - return binaryExpression.getOperationSign().equals(conjunctionType); + return expression instanceof JSBinaryExpression binaryExpression && binaryExpression.getOperationSign().equals(conjunctionType); } } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSNegateComparisonIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSNegateComparisonIntention.java index 2cfc0455..a13dcb06 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSNegateComparisonIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSNegateComparisonIntention.java @@ -17,6 +17,7 @@ import com.intellij.lang.javascript.psi.JSBinaryExpression; import com.intellij.lang.javascript.psi.JSExpression; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; import consulo.language.editor.intention.IntentionMetaData; @@ -30,20 +31,22 @@ import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; @ExtensionImpl -@IntentionMetaData(ignoreId = "JSNegateComparisonIntention", categories = { - "JavaScript", - "Boolean" -}, fileExtensions = "js") +@IntentionMetaData( + ignoreId = "JSNegateComparisonIntention", + categories = {"JavaScript", "Boolean"}, + fileExtensions = "js" +) public class JSNegateComparisonIntention extends JSMutablyNamedIntention { @Override + @RequiredReadAction public String getTextForElement(PsiElement element) { final JSBinaryExpression expression = (JSBinaryExpression) element; String operatorText = ""; String negatedOperatorText = ""; - if(expression != null) + if (expression != null) { final IElementType sign = expression.getOperationSign(); @@ -64,6 +67,7 @@ public JSElementPredicate getElementPredicate() } @Override + @RequiredReadAction public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException { final JSBinaryExpression exp = (JSBinaryExpression) element; @@ -75,8 +79,6 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat assert (rhs != null); - JSElementFactory.replaceExpressionWithNegatedExpressionString(exp, lhsText + - negatedOperator + - rhs.getText()); + JSElementFactory.replaceExpressionWithNegatedExpressionString(exp, lhsText + negatedOperator + rhs.getText()); } } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSRemoveBooleanEqualityIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSRemoveBooleanEqualityIntention.java index 7c399772..d170f695 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSRemoveBooleanEqualityIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSRemoveBooleanEqualityIntention.java @@ -33,10 +33,11 @@ import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; @ExtensionImpl -@IntentionMetaData(ignoreId = "JSRemoveBooleanEqualityIntention", categories = { - "JavaScript", - "Boolean" -}, fileExtensions = "js") +@IntentionMetaData( + ignoreId = "JSRemoveBooleanEqualityIntention", + categories = {"JavaScript", "Boolean"}, + fileExtensions = "js" +) public class JSRemoveBooleanEqualityIntention extends JSMutablyNamedIntention { @Override @@ -44,7 +45,10 @@ protected String getTextForElement(PsiElement element) { final JSBinaryExpression binaryExpression = (JSBinaryExpression) element; - return JSIntentionBundle.message("bool.remove-boolean-equality.display-name", BinaryOperatorUtils.getOperatorText(binaryExpression.getOperationSign())); + return JSIntentionBundle.message( + "bool.remove-boolean-equality.display-name", + BinaryOperatorUtils.getOperatorText(binaryExpression.getOperationSign()) + ); } @Override @@ -55,8 +59,7 @@ public JSElementPredicate getElementPredicate() } @Override - public void processIntention(@Nonnull PsiElement element) - throws IncorrectOperationException + public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException { final JSBinaryExpression exp = (JSBinaryExpression) element; final boolean isEquals = exp.getOperationSign().equals(JSTokenTypes.EQEQ); @@ -69,9 +72,9 @@ public void processIntention(@Nonnull PsiElement element) final String lhsText = lhs.getText(); final String rhsText = rhs.getText(); - if(BoolUtils.TRUE.equals(lhsText)) + if (BoolUtils.TRUE.equals(lhsText)) { - if(isEquals) + if (isEquals) { JSElementFactory.replaceExpression(exp, rhsText); } @@ -80,9 +83,9 @@ public void processIntention(@Nonnull PsiElement element) JSElementFactory.replaceExpressionWithNegatedExpression(rhs, exp); } } - else if(BoolUtils.FALSE.equals(lhsText)) + else if (BoolUtils.FALSE.equals(lhsText)) { - if(isEquals) + if (isEquals) { JSElementFactory.replaceExpressionWithNegatedExpression(rhs, exp); } @@ -91,9 +94,9 @@ else if(BoolUtils.FALSE.equals(lhsText)) JSElementFactory.replaceExpression(exp, rhsText); } } - else if(BoolUtils.TRUE.equals(rhsText)) + else if (BoolUtils.TRUE.equals(rhsText)) { - if(isEquals) + if (isEquals) { JSElementFactory.replaceExpression(exp, lhsText); } @@ -104,7 +107,7 @@ else if(BoolUtils.TRUE.equals(rhsText)) } else { - if(isEquals) + if (isEquals) { JSElementFactory.replaceExpressionWithNegatedExpression(lhs, exp); } @@ -120,19 +123,15 @@ private static class BooleanLiteralEqualityPredicate implements JSElementPredica @Override public boolean satisfiedBy(@Nonnull PsiElement element) { - if(!(element instanceof JSBinaryExpression)) + if (!(element instanceof JSBinaryExpression) || ErrorUtil.containsError(element)) { - return false; - } - if(ErrorUtil.containsError(element)) - { - return false; + return false; } final JSBinaryExpression expression = (JSBinaryExpression) element; final IElementType sign = expression.getOperationSign(); - if(!(sign.equals(JSTokenTypes.EQEQ) || sign.equals(JSTokenTypes.NE))) + if (!(sign.equals(JSTokenTypes.EQEQ) || sign.equals(JSTokenTypes.NE))) { return false; } @@ -140,8 +139,7 @@ public boolean satisfiedBy(@Nonnull PsiElement element) final JSExpression lhs = expression.getLOperand(); final JSExpression rhs = expression.getROperand(); - return (lhs != null && rhs != null && - (BoolUtils.isBooleanLiteral(lhs) || BoolUtils.isBooleanLiteral(rhs))); + return lhs != null && rhs != null && (BoolUtils.isBooleanLiteral(lhs) || BoolUtils.isBooleanLiteral(rhs)); } } } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSAddBracesIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSAddBracesIntention.java index 8ed525a3..cc7b712e 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSAddBracesIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSAddBracesIntention.java @@ -16,6 +16,7 @@ package org.intellij.idea.lang.javascript.intention.braces; import com.intellij.lang.javascript.psi.*; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiComment; @@ -29,13 +30,13 @@ import org.jetbrains.annotations.NonNls; @ExtensionImpl -@IntentionMetaData(ignoreId = "JSAddBracesIntention", categories = { - "JavaScript", - "Control Flow" -}, fileExtensions = "js") +@IntentionMetaData( + ignoreId = "JSAddBracesIntention", + categories = {"JavaScript", "Control Flow"}, + fileExtensions = "js" +) public class JSAddBracesIntention extends JSMutablyNamedIntention { - @NonNls private static final String IF_KEYWORD = "if"; @NonNls @@ -75,6 +76,7 @@ protected String getTextForElement(PsiElement element) } @Override + @RequiredReadAction protected void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException { if(!(element instanceof JSStatement)) @@ -84,16 +86,9 @@ protected void processIntention(@Nonnull PsiElement element) throws IncorrectOpe final JSStatement statement = (JSStatement) element; final JSElement parent = (JSElement) element.getParent(); final String text = element.getText(); - String newText; - - if(parent.getLastChild() instanceof PsiComment) - { - newText = '{' + text + "\n}"; - } - else - { - newText = '{' + text + '}'; - } + String newText = parent.getLastChild() instanceof PsiComment + ? '{' + text + "\n}" + : '{' + text + '}'; JSElementFactory.replaceStatement(statement, newText); } @@ -112,29 +107,23 @@ public boolean satisfiedBy(@Nonnull PsiElement element) } final PsiElement parentElement = element.getParent(); - if(!(parentElement instanceof JSElement)) + if (!(parentElement instanceof JSElement)) { return false; } final JSElement parent = (JSElement) parentElement; - if(parent instanceof JSIfStatement) + if (parent instanceof JSIfStatement ifStatement) { - final JSIfStatement ifStatement = (JSIfStatement) parent; - - return (!(element instanceof JSIfStatement && - element.equals(ifStatement.getElse()))); + return !(element instanceof JSIfStatement && element.equals(ifStatement.getElse())); } - if(parent instanceof JSForStatement || - parent instanceof JSForInStatement - ) + if (parent instanceof JSForStatement || parent instanceof JSForInStatement) { return element.equals(((JSLoopStatement) parent).getBody()); } - return (parent instanceof JSWhileStatement || - parent instanceof JSDoWhileStatement); + return parent instanceof JSWhileStatement || parent instanceof JSDoWhileStatement; } } } \ No newline at end of file diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSRemoveBracesIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSRemoveBracesIntention.java index 6408694c..bbf03e96 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSRemoveBracesIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSRemoveBracesIntention.java @@ -16,6 +16,7 @@ package org.intellij.idea.lang.javascript.intention.braces; import com.intellij.lang.javascript.psi.*; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiComment; @@ -30,10 +31,11 @@ import jakarta.annotation.Nonnull; @ExtensionImpl -@IntentionMetaData(ignoreId = "JSRemoveBracesIntention", categories = { - "JavaScript", - "Control Flow" -}, fileExtensions = "js") +@IntentionMetaData( + ignoreId = "JSRemoveBracesIntention", + categories = {"JavaScript", "Control Flow"}, + fileExtensions = "js" +) public class JSRemoveBracesIntention extends JSMutablyNamedIntention { @NonNls @@ -49,6 +51,7 @@ protected JSElementPredicate getElementPredicate() } @Override + @RequiredReadAction protected String getTextForElement(PsiElement element) { final JSElement parent = (JSElement) element.getParent(); @@ -61,7 +64,7 @@ protected String getTextForElement(PsiElement element) final JSIfStatement ifStatement = (JSIfStatement) parent; final JSStatement elseBranch = ifStatement.getElse(); - keyword = (element.equals(elseBranch) ? ELSE_KEYWORD : IF_KEYWORD); + keyword = element.equals(elseBranch) ? ELSE_KEYWORD : IF_KEYWORD; } else { @@ -75,6 +78,7 @@ protected String getTextForElement(PsiElement element) } @Override + @RequiredReadAction protected void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException { final JSBlockStatement blockStatement = (JSBlockStatement) element; @@ -95,9 +99,9 @@ protected void processIntention(@Nonnull PsiElement element) throws IncorrectOpe assert (sibling != null); sibling = sibling.getNextSibling(); - while(sibling != null && !sibling.equals(statement)) + while (sibling != null && !sibling.equals(statement)) { - if(sibling instanceof PsiComment) + if (sibling instanceof PsiComment) { grandParent.addBefore(sibling, parent); } @@ -106,7 +110,7 @@ protected void processIntention(@Nonnull PsiElement element) throws IncorrectOpe final PsiElement lastChild = blockStatement.getLastChild(); - if(lastChild instanceof PsiComment) + if (lastChild instanceof PsiComment) { final JSElement nextSibling = (JSElement) parent.getNextSibling(); @@ -122,7 +126,7 @@ public static class RemoveBracesPredicate implements JSElementPredicate @Override public boolean satisfiedBy(@Nonnull PsiElement element) { - if(!(element instanceof JSBlockStatement)) + if (!(element instanceof JSBlockStatement)) { return false; } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToCStyleCommentIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToCStyleCommentIntention.java index e4be30c6..e7c93406 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToCStyleCommentIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToCStyleCommentIntention.java @@ -16,6 +16,7 @@ package org.intellij.idea.lang.javascript.intention.comment; import com.intellij.lang.javascript.JSTokenTypes; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; import consulo.language.editor.intention.IntentionMetaData; @@ -32,13 +33,13 @@ import java.util.List; @ExtensionImpl -@IntentionMetaData(ignoreId = "JSChangeToCStyleCommentIntention", categories = { - "JavaScript", - "Comments" -}, fileExtensions = "js") +@IntentionMetaData( + ignoreId = "JSChangeToCStyleCommentIntention", + categories = {"JavaScript", "Comments"}, + fileExtensions = "js" +) public class JSChangeToCStyleCommentIntention extends JSIntention { - @Override @Nonnull protected JSElementPredicate getElementPredicate() @@ -47,15 +48,16 @@ protected JSElementPredicate getElementPredicate() } @Override + @RequiredReadAction public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException { PsiComment firstComment = (PsiComment) element; - while(true) + while (true) { final PsiElement prevComment = JSElementFactory.getNonWhiteSpaceSibling(firstComment, false); - if(!isEndOfLineComment(prevComment)) + if (!isEndOfLineComment(prevComment)) { break; } @@ -64,15 +66,15 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat } final StringBuilder buffer = new StringBuilder(getCommentContents(firstComment)); - final List elementsToDelete = new ArrayList(); + final List elementsToDelete = new ArrayList<>(); PsiElement nextComment = firstComment; - while(true) + while (true) { elementsToDelete.add(nextComment); nextComment = JSElementFactory.getNonWhiteSpaceSibling(nextComment, true); - if(!isEndOfLineComment(nextComment)) + if (!isEndOfLineComment(nextComment)) { break; } @@ -84,23 +86,16 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat elementsToDelete.add(prevSibling); buffer.append(prevSibling.getText()) // White space - .append(getCommentContents((PsiComment) nextComment)); + .append(getCommentContents((PsiComment) nextComment)); } final String text = StringUtil.replace(buffer.toString(), "*/", "* /"); - final String newCommentString; - - if(text.indexOf('\n') >= 0) - { - newCommentString = "/*\n" + text + "\n*/"; - } - else - { - newCommentString = "/*" + text + "*/"; - } + final String newCommentString = text.indexOf('\n') >= 0 + ? "/*\n" + text + "\n*/" + : "/*" + text + "*/"; JSElementFactory.addElementBefore(firstComment, newCommentString); - for(final PsiElement elementToDelete : elementsToDelete) + for (final PsiElement elementToDelete : elementsToDelete) { JSElementFactory.removeElement(elementToDelete); } @@ -108,17 +103,10 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat private static boolean isEndOfLineComment(PsiElement element) { - if(!(element instanceof PsiComment)) - { - return false; - } - - final PsiComment comment = (PsiComment) element; - final IElementType tokenType = comment.getTokenType(); - - return JSTokenTypes.END_OF_LINE_COMMENT.equals(tokenType); + return element instanceof PsiComment comment && JSTokenTypes.END_OF_LINE_COMMENT.equals(comment.getTokenType()); } + @RequiredReadAction private static String getCommentContents(PsiComment comment) { return comment.getText().substring(2); @@ -130,14 +118,7 @@ private static class EndOfLineCommentPredicate implements JSElementPredicate @Override public boolean satisfiedBy(@Nonnull PsiElement element) { - if(!(element instanceof PsiComment)) - { - return false; - } - - final IElementType type = ((PsiComment) element).getTokenType(); - - return JSTokenTypes.END_OF_LINE_COMMENT.equals(type); + return element instanceof PsiComment comment && JSTokenTypes.END_OF_LINE_COMMENT.equals(comment.getTokenType()); } } } \ No newline at end of file diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToEndOfLineCommentIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToEndOfLineCommentIntention.java index c841acc5..193873c3 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToEndOfLineCommentIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToEndOfLineCommentIntention.java @@ -31,10 +31,11 @@ import jakarta.annotation.Nonnull; @ExtensionImpl -@IntentionMetaData(ignoreId = "JSChangeToEndOfLineCommentIntention", categories = { - "JavaScript", - "Comments" -}, fileExtensions = "js") +@IntentionMetaData( + ignoreId = "JSChangeToEndOfLineCommentIntention", + categories = {"JavaScript", "Comments"}, + fileExtensions = "js" +) public class JSChangeToEndOfLineCommentIntention extends JSIntention { @Override @@ -58,15 +59,15 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat final String[] newComments = buildCommentStrings(lines); PsiElement currentElement = element; - for(int index = newComments.length; --index >= 0; ) + for (int index = newComments.length; --index >= 0; ) { - if(newComments[index].length() > 0) + if (newComments[index].length() > 0) { currentElement = JSElementFactory.addElementBefore(currentElement, "\n"); currentElement = JSElementFactory.addElementBefore(currentElement, newComments[index]); } } - if(whitespace != null) + if (whitespace != null) { JSElementFactory.removeElement(whitespace); } @@ -80,12 +81,12 @@ private static String[] buildCommentStrings(String[] lines) for(int i = lines.length - 1; i >= 0 && lastNonEmtpyLine == -1; i--) { final String line = lines[i].trim(); - if(line.length() != 0) + if (!line.isEmpty()) { lastNonEmtpyLine = i; } } - if(lastNonEmtpyLine == -1) + if (lastNonEmtpyLine == -1) { return new String[]{"//"}; } @@ -93,19 +94,19 @@ private static String[] buildCommentStrings(String[] lines) final StringBuilder buffer = new StringBuilder(); final String[] commentStrings = new String[lastNonEmtpyLine + 1]; - for(int i = 0; i <= lastNonEmtpyLine; i++) + for (int i = 0; i <= lastNonEmtpyLine; i++) { final String line = lines[i]; - if(line.trim().length() != 0) + if (line.trim().length() != 0) { buffer.replace(0, buffer.length(), "//"); - if(line.startsWith(" *")) + if (line.startsWith(" *")) { buffer.append(line.substring(2)); } - else if(line.startsWith("*")) + else if (line.startsWith("*")) { buffer.append(line.substring(1)); } @@ -122,11 +123,10 @@ else if(line.startsWith("*")) private static class CStyleCommentPredicate implements JSElementPredicate { - @Override public boolean satisfiedBy(@Nonnull PsiElement element) { - if(!(element instanceof PsiComment)) + if (!(element instanceof PsiComment)) { return false; } @@ -134,18 +134,17 @@ public boolean satisfiedBy(@Nonnull PsiElement element) final PsiComment comment = (PsiComment) element; final IElementType type = comment.getTokenType(); - if(!(JSTokenTypes.C_STYLE_COMMENT.equals(type) || JSTokenTypes.C_STYLE_COMMENT.equals(type))) + if (!(JSTokenTypes.C_STYLE_COMMENT.equals(type) || JSTokenTypes.C_STYLE_COMMENT.equals(type))) { return false; } final PsiElement sibling = TreeUtil.getNextLeaf(comment); - if(!(sibling instanceof PsiWhiteSpace)) + if (!(sibling instanceof PsiWhiteSpace)) { return false; } final String whitespaceText = sibling.getText(); - return (whitespaceText.indexOf((int) '\n') >= 0 || - whitespaceText.indexOf((int) '\r') >= 0); + return whitespaceText.indexOf((int) '\n') >= 0 || whitespaceText.indexOf((int) '\r') >= 0; } } } \ No newline at end of file diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipConditionalIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipConditionalIntention.java index 37cfbed0..4956d147 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipConditionalIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipConditionalIntention.java @@ -18,6 +18,7 @@ import com.intellij.lang.javascript.psi.JSConditionalExpression; import com.intellij.lang.javascript.psi.JSExpression; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; @@ -31,10 +32,11 @@ import jakarta.annotation.Nonnull; @ExtensionImpl -@IntentionMetaData(ignoreId = "JSFlipConditionalIntention", categories = { - "JavaScript", - "Conditional" -}, fileExtensions = "js") +@IntentionMetaData( + ignoreId = "JSFlipConditionalIntention", + categories = {"JavaScript", "Conditional"}, + fileExtensions = "js" +) public class JSFlipConditionalIntention extends JSIntention { @Override @@ -45,6 +47,7 @@ public JSElementPredicate getElementPredicate() } @Override + @RequiredReadAction public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException { final JSConditionalExpression exp = (JSConditionalExpression) element; @@ -56,7 +59,7 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat assert (thenExpression != null); final String newExpression = BoolUtils.getNegatedExpressionText(condition) + '?' + - elseExpression.getText() + ':' + thenExpression.getText(); + elseExpression.getText() + ':' + thenExpression.getText(); JSElementFactory.replaceExpression(exp, newExpression); } @@ -66,20 +69,13 @@ private static class FlipConditionalPredicate implements JSElementPredicate @Override public boolean satisfiedBy(@Nonnull PsiElement element) { - if(!(element instanceof JSConditionalExpression)) - { - return false; - } - if(ErrorUtil.containsError(element)) - { - return false; + if (!(element instanceof JSConditionalExpression) || ErrorUtil.containsError(element)) { + return false; } final JSConditionalExpression condition = (JSConditionalExpression) element; - return (condition.getCondition() != null && - condition.getThen() != null && - condition.getElse() != null); + return condition.getCondition() != null && condition.getThen() != null && condition.getElse() != null; } } } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantExpressionIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantExpressionIntention.java index 66aeda6a..33db3d3b 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantExpressionIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantExpressionIntention.java @@ -32,10 +32,11 @@ import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; @ExtensionImpl -@IntentionMetaData(ignoreId = "JSConstantExpressionIntention", categories = { - "JavaScript", - "Other" -}, fileExtensions = "js") +@IntentionMetaData( + ignoreId = "JSConstantExpressionIntention", + categories = {"JavaScript", "Other"}, + fileExtensions = "js" +) public class JSConstantExpressionIntention extends JSIntention { @Override @@ -52,9 +53,9 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat final Object value = ExpressionUtil.computeConstantExpression(expression); final String newExpression; - if(value instanceof String) + if (value instanceof String strValue) { - newExpression = '"' + StringUtil.escapeStringCharacters((String) value) + '"'; + newExpression = '"' + StringUtil.escapeStringCharacters(strValue) + '"'; } else { @@ -68,42 +69,23 @@ private static class ConstantExpressionPredicate implements JSElementPredicate @Override public boolean satisfiedBy(@Nonnull PsiElement element) { - if(!(element instanceof JSExpression)) + if (!(element instanceof JSExpression) || ErrorUtil.containsError(element)) { - return false; - } - if(ErrorUtil.containsError(element)) - { - return false; + return false; } final JSExpression expression = (JSExpression) element; - if(element instanceof JSLiteralExpression || - (element instanceof JSReferenceExpression && - ((JSReferenceExpression) element).getQualifier() != null - ) || - expression instanceof JSCallExpression - ) - { - return false; - } - if(!ExpressionUtil.isConstantExpression(expression)) - { - return false; - } - - if(ExpressionUtil.computeConstantExpression(expression) == null) - { + if (element instanceof JSLiteralExpression + || (element instanceof JSReferenceExpression referenceExpression && referenceExpression.getQualifier() != null) + || expression instanceof JSCallExpression + || !ExpressionUtil.isConstantExpression(expression) + || ExpressionUtil.computeConstantExpression(expression) == null) { return false; } final PsiElement parent = element.getParent(); - if(!(parent instanceof JSExpression)) - { - return true; - } - return (!ExpressionUtil.isConstantExpression((JSExpression) parent)); + return !(parent instanceof JSExpression parentExpression && ExpressionUtil.isConstantExpression(parentExpression)); } } } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantSubexpressionIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantSubexpressionIntention.java index 95362b02..8005adb8 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantSubexpressionIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantSubexpressionIntention.java @@ -19,6 +19,7 @@ import com.intellij.lang.javascript.psi.JSElement; import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.lang.javascript.psi.impl.JSChangeUtil; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; import consulo.language.editor.intention.IntentionMetaData; @@ -37,10 +38,11 @@ import jakarta.annotation.Nonnull; @ExtensionImpl -@IntentionMetaData(ignoreId = "JSConstantSubexpressionIntention", categories = { - "JavaScript", - "Other" -}, fileExtensions = "js") +@IntentionMetaData( + ignoreId = "JSConstantSubexpressionIntention", + categories = {"JavaScript", "Other"}, + fileExtensions = "js" +) public class JSConstantSubexpressionIntention extends JSMutablyNamedIntention { @Override @@ -51,31 +53,29 @@ protected JSElementPredicate getElementPredicate() } @Override + @RequiredReadAction protected String getTextForElement(PsiElement element) { final PsiElement parent = element.getParent(); final JSBinaryExpression binaryExpression = (JSBinaryExpression) (parent instanceof JSBinaryExpression ? parent : element); final JSExpression lhs = binaryExpression.getLOperand(); - final JSExpression leftSide; - - if(lhs instanceof JSBinaryExpression) - { - leftSide = ((JSBinaryExpression) lhs).getROperand(); - } - else - { - leftSide = lhs; - } + final JSExpression leftSide = lhs instanceof JSBinaryExpression lhsBinaryExpression ? lhsBinaryExpression.getROperand() : lhs; final IElementType operationSign = binaryExpression.getOperationSign(); final JSExpression rhs = binaryExpression.getROperand(); assert (rhs != null); assert (leftSide != null); - return JSIntentionBundle.message("constant.constant-subexpression.display-name", leftSide.getText(),BinaryOperatorUtils.getOperatorText(operationSign),rhs.getText()); + return JSIntentionBundle.message( + "constant.constant-subexpression.display-name", + leftSide.getText(), + BinaryOperatorUtils.getOperatorText(operationSign), + rhs.getText() + ); } @Override + @RequiredReadAction public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException { final PsiElement parent = element.getParent(); @@ -83,14 +83,13 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat String newExpression = ""; final Object constantValue; - if(expression instanceof JSBinaryExpression) + if (expression instanceof JSBinaryExpression) { final JSBinaryExpression binaryExpression = (JSBinaryExpression) expression; final JSExpression lhs = binaryExpression.getLOperand(); - if(lhs instanceof JSBinaryExpression) + if (lhs instanceof JSBinaryExpression lhsBinaryExpression) { - final JSBinaryExpression lhsBinaryExpression = (JSBinaryExpression) lhs; final JSExpression rightSide = lhsBinaryExpression.getROperand(); newExpression += getLeftSideText(lhsBinaryExpression); @@ -104,9 +103,9 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat constantValue = ExpressionUtil.computeConstantExpression(expression); } - if(constantValue instanceof String) + if (constantValue instanceof String strValue) { - newExpression += '"' + StringUtil.escapeStringCharacters(constantValue.toString()) + '"'; + newExpression += '"' + StringUtil.escapeStringCharacters(strValue) + '"'; } else { @@ -115,6 +114,7 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat JSElementFactory.replaceExpression(expression, newExpression); } + @RequiredReadAction private static String getLeftSideText(JSBinaryExpression binaryExpression) { return binaryExpression.getLOperand().getText() + @@ -130,20 +130,21 @@ private static String getLeftSideText(JSBinaryExpression binaryExpression) * @return the found common sub-expression if found, or null otherwise. */ @Nullable + @RequiredReadAction private static JSBinaryExpression getSubexpression(JSBinaryExpression expression) { final JSExpression rhs = expression.getROperand(); final IElementType sign = expression.getOperationSign(); final int parentPrecendence = ParenthesesUtils.getPrecendence(expression); - if(rhs == null) + if (rhs == null) { return null; } final JSExpression lhs = expression.getLOperand(); - if(!(lhs instanceof JSBinaryExpression)) + if (!(lhs instanceof JSBinaryExpression)) { return expression; } @@ -152,26 +153,17 @@ private static JSBinaryExpression getSubexpression(JSBinaryExpression expression final int childPrecendence = ParenthesesUtils.getPrecendence(lhsBinaryExpression); final JSExpression leftSide = lhsBinaryExpression.getROperand(); - if(leftSide == null) - { - return null; - } - - if(parentPrecendence > childPrecendence) + if (leftSide == null || parentPrecendence > childPrecendence) { - return null; + return null; } try { - final String subExpressionText = leftSide.getText() + BinaryOperatorUtils.getOperatorText(sign) + - rhs.getText(); - final JSExpression subExpression = JSChangeUtil.createExpressionFromText(expression.getProject(), - subExpressionText); - - return (JSBinaryExpression) subExpression; + final String subExpressionText = leftSide.getText() + BinaryOperatorUtils.getOperatorText(sign) + rhs.getText(); + return (JSBinaryExpression) JSChangeUtil.createExpressionFromText(expression.getProject(), subExpressionText); } - catch(Throwable ignore) + catch (Throwable ignore) { return null; } @@ -180,10 +172,10 @@ private static JSBinaryExpression getSubexpression(JSBinaryExpression expression private static class ConstantSubexpressionPredicate implements JSElementPredicate { @Override + @RequiredReadAction public boolean satisfiedBy(@Nonnull PsiElement element) { - if(!(element instanceof JSElement || - element.getPrevSibling() instanceof JSElement)) + if (!(element instanceof JSElement || element.getPrevSibling() instanceof JSElement)) { return false; } @@ -192,8 +184,7 @@ public boolean satisfiedBy(@Nonnull PsiElement element) if(!(parent instanceof JSBinaryExpression)) { - if(element instanceof JSBinaryExpression && - ((JSBinaryExpression) element).getLOperand() instanceof JSBinaryExpression) + if (element instanceof JSBinaryExpression binaryExpression && binaryExpression.getLOperand() instanceof JSBinaryExpression) { parent = element; } @@ -205,30 +196,24 @@ public boolean satisfiedBy(@Nonnull PsiElement element) final JSBinaryExpression binaryExpression = (JSBinaryExpression) parent; final JSBinaryExpression subexpression = getSubexpression(binaryExpression); - if(subexpression == null) + if (subexpression == null) { return false; } - if(binaryExpression.equals(subexpression) && - !isPartOfConstantExpression(binaryExpression)) + if (binaryExpression.equals(subexpression) && !isPartOfConstantExpression(binaryExpression)) { // handled by JSConstantExpressionIntention return false; } - if(!ExpressionUtil.isConstantExpression(subexpression)) - { - return false; - } - - return (ExpressionUtil.computeConstantExpression(subexpression) != null); + return ExpressionUtil.isConstantExpression(subexpression) + && ExpressionUtil.computeConstantExpression(subexpression) != null; } private static boolean isPartOfConstantExpression(JSBinaryExpression binaryExpression) { final PsiElement containingElement = binaryExpression.getParent(); - return (containingElement instanceof JSExpression && - ExpressionUtil.isConstantExpression((JSExpression) containingElement)); + return containingElement instanceof JSExpression expression && ExpressionUtil.isConstantExpression(expression); } } } \ No newline at end of file diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/increment/JSExtractIncrementIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/increment/JSExtractIncrementIntention.java index 2245312c..8bac99d0 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/increment/JSExtractIncrementIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/increment/JSExtractIncrementIntention.java @@ -16,6 +16,7 @@ package org.intellij.idea.lang.javascript.intention.increment; import com.intellij.lang.javascript.psi.*; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; import consulo.language.editor.intention.IntentionMetaData; @@ -28,10 +29,11 @@ import org.intellij.idea.lang.javascript.psiutil.*; @ExtensionImpl -@IntentionMetaData(ignoreId = "JSExtractIncrementIntention", categories = { - "JavaScript", - "Other" -}, fileExtensions = "js") +@IntentionMetaData( + ignoreId = "JSExtractIncrementIntention", + categories = {"JavaScript", "Other"}, + fileExtensions = "js" +) public class JSExtractIncrementIntention extends JSMutablyNamedIntention { @Override @@ -48,16 +50,18 @@ public JSElementPredicate getElementPredicate() } @Override + @RequiredReadAction public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException { final boolean isPostfix = (element instanceof JSPostfixExpression); - final JSExpression operand = (isPostfix ? ((JSPostfixExpression) element).getExpression() - : ((JSPrefixExpression) element).getExpression()); + final JSExpression operand = isPostfix + ? ((JSPostfixExpression) element).getExpression() + : ((JSPrefixExpression) element).getExpression(); final JSStatement statement = TreeUtil.getParentOfType(element, JSStatement.class); assert (statement != null); - if(isPostfix) + if (isPostfix) { JSElementFactory.addStatementAfter(statement, element.getText() + ';'); } @@ -68,11 +72,12 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat JSElementFactory.replaceExpression((JSExpression) element, operand.getText()); } + @RequiredReadAction private static IElementType getOperationSign(PsiElement element) { - return ((element instanceof JSPostfixExpression) - ? ((JSPostfixExpression) element).getOperationSign() - : ((JSPrefixExpression) element).getOperationSign()); + return element instanceof JSPostfixExpression postfixExpression + ? postfixExpression.getOperationSign() + : ((JSPrefixExpression) element).getOperationSign(); } private static class ExtractIncrementPredicate implements JSElementPredicate @@ -80,27 +85,16 @@ private static class ExtractIncrementPredicate implements JSElementPredicate @Override public boolean satisfiedBy(@Nonnull PsiElement element) { - if(!ExpressionUtil.isIncrementDecrementExpression(element)) - { - return false; - } - if(ErrorUtil.containsError(element)) - { - return false; - } - - final PsiElement parent = element.getParent(); - - if(parent instanceof JSExpressionStatement) - { - return false; + if (!ExpressionUtil.isIncrementDecrementExpression(element) + || ErrorUtil.containsError(element) + || element.getParent() instanceof JSExpressionStatement) { + return false; } final JSStatement containingStatement = TreeUtil.getParentOfType(element, JSStatement.class); - if(element instanceof JSPostfixExpression && - (containingStatement instanceof JSReturnStatement || - containingStatement instanceof JSThrowStatement)) + if (element instanceof JSPostfixExpression + && (containingStatement instanceof JSReturnStatement || containingStatement instanceof JSThrowStatement)) { return false; } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSSplitDeclarationAndInitializationIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSSplitDeclarationAndInitializationIntention.java index 3b83b734..ee941fc5 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSSplitDeclarationAndInitializationIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSSplitDeclarationAndInitializationIntention.java @@ -19,6 +19,7 @@ import com.intellij.lang.javascript.psi.*; import com.intellij.lang.javascript.psi.impl.JSPsiImplUtils; import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; @@ -35,10 +36,11 @@ import java.util.List; @ExtensionImpl -@IntentionMetaData(ignoreId = "JSSplitDeclarationAndInitializationIntention", categories = { - "JavaScript", - "Declaration" -}, fileExtensions = "js") +@IntentionMetaData( + ignoreId = "JSSplitDeclarationAndInitializationIntention", + categories = {"JavaScript", "Declaration"}, + fileExtensions = "js" +) public class JSSplitDeclarationAndInitializationIntention extends JSIntention { @NonNls @@ -52,32 +54,33 @@ protected JSElementPredicate getElementPredicate() } @Override + @RequiredReadAction public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException { assert (element instanceof JSVarStatement); final JSVarStatement varStatement = (JSVarStatement) element; StringBuilder declarationBuffer = new StringBuilder(); - List initializations = new ArrayList(); + List initializations = new ArrayList<>(); - for(JSVariable variable : varStatement.getVariables()) + for (JSVariable variable : varStatement.getVariables()) { - declarationBuffer.append((declarationBuffer.length() == 0) ? VAR_KEYWORD : ",") + declarationBuffer.append(declarationBuffer.isEmpty() ? VAR_KEYWORD : ",") .append(variable.getName()); String s = JSPsiImplUtils.getTypeFromDeclaration(variable); final PsiFile containingFile = element.getContainingFile(); - if(s == null && containingFile.getLanguage() == JavaScriptSupportLoader.ECMA_SCRIPT_L4) + if (s == null && containingFile.getLanguage() == JavaScriptSupportLoader.ECMA_SCRIPT_L4) { s = JSResolveUtil.getExpressionType(variable.getInitializer(), containingFile); } - if(s != null) + if (s != null) { declarationBuffer.append(":").append(s); } - if(variable.hasInitializer()) + if (variable.hasInitializer()) { initializations.add(variable.getName() + '=' + variable.getInitializer().getText() + ';'); } @@ -87,7 +90,7 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat // Do replacement. JSStatement newStatement = JSElementFactory.replaceStatement(varStatement, declarationBuffer.toString()); - for(final String initialization : initializations) + for (final String initialization : initializations) { newStatement = JSElementFactory.addStatementAfter(newStatement, initialization); } @@ -100,8 +103,8 @@ public boolean satisfiedBy(@Nonnull PsiElement element) { PsiElement elementParent; - if(!(element instanceof JSVarStatement) || - (elementParent = element.getParent()) instanceof JSForStatement || + if(!(element instanceof JSVarStatement) + || (elementParent = element.getParent()) instanceof JSForStatement || elementParent instanceof JSClass ) { @@ -109,14 +112,14 @@ public boolean satisfiedBy(@Nonnull PsiElement element) } final JSVarStatement varStatement = (JSVarStatement) element; - if(ErrorUtil.containsError(varStatement)) + if (ErrorUtil.containsError(varStatement)) { return false; } - for(JSVariable variable : varStatement.getVariables()) + for (JSVariable variable : varStatement.getVariables()) { - if(variable.hasInitializer()) + if (variable.hasInitializer()) { return true; } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToDecimalIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToDecimalIntention.java index 7552dde9..3d1fd970 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToDecimalIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToDecimalIntention.java @@ -16,7 +16,7 @@ package org.intellij.idea.lang.javascript.intention.number; import com.intellij.lang.javascript.psi.JSLiteralExpression; -import consulo.annotation.component.ExtensionImpl; +import consulo.annotation.access.RequiredReadAction;import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; @@ -28,10 +28,11 @@ import jakarta.annotation.Nonnull; @ExtensionImpl -@IntentionMetaData(ignoreId = "JSConvertIntegerToDecimalIntention", categories = { - "JavaScript", - "Numbers" -}, fileExtensions = "js") +@IntentionMetaData( + ignoreId = "JSConvertIntegerToDecimalIntention", + categories = {"JavaScript", "Numbers"}, + fileExtensions = "js" +) public class JSConvertIntegerToDecimalIntention extends JSIntention { @Override @@ -52,17 +53,17 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat private static class ConvertIntegerToDecimalPredicate implements JSElementPredicate { @Override + @RequiredReadAction public boolean satisfiedBy(@Nonnull PsiElement element) { - if(!(element instanceof JSLiteralExpression)) + if (!(element instanceof JSLiteralExpression)) { return false; } final String elementText = element.getText(); - return (NumberUtil.isHex(elementText) || - NumberUtil.isOctal(elementText)); + return NumberUtil.isHex(elementText) || NumberUtil.isOctal(elementText); } } } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToHexIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToHexIntention.java index 7b42bc59..4470a156 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToHexIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToHexIntention.java @@ -16,7 +16,7 @@ package org.intellij.idea.lang.javascript.intention.number; import com.intellij.lang.javascript.psi.JSLiteralExpression; -import consulo.annotation.component.ExtensionImpl; +import consulo.annotation.access.RequiredReadAction;import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; @@ -28,10 +28,11 @@ import jakarta.annotation.Nonnull; @ExtensionImpl -@IntentionMetaData(ignoreId = "JSConvertIntegerToHexIntention", categories = { - "JavaScript", - "Numbers" -}, fileExtensions = "js") +@IntentionMetaData( + ignoreId = "JSConvertIntegerToHexIntention", + categories = {"JavaScript", "Numbers"}, + fileExtensions = "js" +) public class JSConvertIntegerToHexIntention extends JSIntention { @Override @@ -52,14 +53,10 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat private static class ConvertIntegerToHexPredicate implements JSElementPredicate { @Override + @RequiredReadAction public boolean satisfiedBy(@Nonnull PsiElement element) { - if(!(element instanceof JSLiteralExpression)) - { - return false; - } - - return NumberUtil.isDecimal(element.getText()); + return element instanceof JSLiteralExpression && NumberUtil.isDecimal(element.getText()); } } } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToOctalIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToOctalIntention.java index bb29594b..ce16fbb8 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToOctalIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToOctalIntention.java @@ -16,7 +16,7 @@ package org.intellij.idea.lang.javascript.intention.number; import com.intellij.lang.javascript.psi.JSLiteralExpression; -import consulo.annotation.component.ExtensionImpl; +import consulo.annotation.access.RequiredReadAction;import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; @@ -28,10 +28,11 @@ import jakarta.annotation.Nonnull; @ExtensionImpl -@IntentionMetaData(ignoreId = "JSConvertIntegerToOctalIntention", categories = { - "JavaScript", - "Numbers" -}, fileExtensions = "js") +@IntentionMetaData( + ignoreId = "JSConvertIntegerToOctalIntention", + categories = {"JavaScript", "Numbers"}, + fileExtensions = "js" +) public class JSConvertIntegerToOctalIntention extends JSIntention { @Override @@ -52,6 +53,7 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat private static class ConvertIntegerToOctalPredicate implements JSElementPredicate { @Override + @RequiredReadAction public boolean satisfiedBy(@Nonnull PsiElement element) { if(!(element instanceof JSLiteralExpression)) @@ -61,10 +63,7 @@ public boolean satisfiedBy(@Nonnull PsiElement element) final String elementText = element.getText(); - return (NumberUtil.isHex(elementText) || - (NumberUtil.isDecimal(elementText) && - !NumberUtil.isOctal(elementText))); + return NumberUtil.isHex(elementText) || (NumberUtil.isDecimal(elementText) && !NumberUtil.isOctal(elementText)); } } - } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceMultiplyWithShiftIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceMultiplyWithShiftIntention.java index c70e69e4..f0907f09 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceMultiplyWithShiftIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceMultiplyWithShiftIntention.java @@ -17,6 +17,7 @@ import com.intellij.lang.javascript.JSTokenTypes; import com.intellij.lang.javascript.psi.*; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; import consulo.language.editor.intention.IntentionMetaData; @@ -32,25 +33,27 @@ import jakarta.annotation.Nonnull; @ExtensionImpl -@IntentionMetaData(ignoreId = "JSReplaceMultiplyWithShiftIntention", categories = { - "JavaScript", - "Shift" -}, fileExtensions = "js") +@IntentionMetaData( + ignoreId = "JSReplaceMultiplyWithShiftIntention", + categories = {"JavaScript", "Shift"}, + fileExtensions = "js" +) public class JSReplaceMultiplyWithShiftIntention extends JSMutablyNamedIntention { @Override + @RequiredReadAction protected String getTextForElement(PsiElement element) { final IElementType tokenType = ((JSBinaryExpression) element).getOperationSign(); final String operatorString; - if(element instanceof JSAssignmentExpression) + if (element instanceof JSAssignmentExpression) { - operatorString = (tokenType.equals(JSTokenTypes.MULTEQ) ? "<<=" : ">>="); + operatorString = tokenType.equals(JSTokenTypes.MULTEQ) ? "<<=" : ">>="; } else { - operatorString = (tokenType.equals(JSTokenTypes.MULT) ? "<<" : ">>"); + operatorString = tokenType.equals(JSTokenTypes.MULT) ? "<<" : ">>"; } return JSIntentionBundle.message( @@ -68,12 +71,12 @@ public JSElementPredicate getElementPredicate() } @Override - public void processIntention(@Nonnull PsiElement element) - throws IncorrectOperationException + @RequiredReadAction + public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException { - if(element instanceof JSAssignmentExpression) + if (element instanceof JSAssignmentExpression assignmentExpression) { - this.replaceMultiplyOrDivideAssignWithShiftAssign((JSAssignmentExpression) element); + this.replaceMultiplyOrDivideAssignWithShiftAssign(assignmentExpression); } else { @@ -81,28 +84,27 @@ public void processIntention(@Nonnull PsiElement element) } } - private void replaceMultiplyOrDivideAssignWithShiftAssign(JSAssignmentExpression exp) - throws IncorrectOperationException + @RequiredReadAction + private void replaceMultiplyOrDivideAssignWithShiftAssign(JSAssignmentExpression exp) throws IncorrectOperationException { final JSExpression lhs = exp.getLOperand(); final JSExpression rhs = exp.getROperand(); final IElementType tokenType = exp.getOperationSign(); - final String assignString = (tokenType.equals(JSTokenTypes.MULTEQ) ? "<<=" : ">>="); - final String expString = lhs.getText() + assignString + - ShiftUtils.getLogBase2(rhs); + final String assignString = JSTokenTypes.MULTEQ.equals(tokenType) ? "<<=" : ">>="; + final String expString = lhs.getText() + assignString + ShiftUtils.getLogBase2(rhs); JSElementFactory.replaceExpression(exp, expString); } - private void replaceMultiplyOrDivideWithShift(JSBinaryExpression exp) - throws IncorrectOperationException + @RequiredReadAction + private void replaceMultiplyOrDivideWithShift(JSBinaryExpression exp) throws IncorrectOperationException { JSExpression lhs = exp.getLOperand(); JSExpression rhs = exp.getROperand(); final IElementType tokenType = exp.getOperationSign(); - final String operatorString = (tokenType.equals(JSTokenTypes.MULT) ? "<<" : ">>"); + final String operatorString = JSTokenTypes.MULT.equals(tokenType) ? "<<" : ">>"; - if(ShiftUtils.isPowerOfTwo(lhs) && tokenType.equals(JSTokenTypes.MULT)) + if (ShiftUtils.isPowerOfTwo(lhs) && JSTokenTypes.MULT.equals(tokenType)) { JSExpression swap = lhs; @@ -114,13 +116,9 @@ private void replaceMultiplyOrDivideWithShift(JSBinaryExpression exp) String expString = lhsText + operatorString + ShiftUtils.getLogBase2(rhs); final JSElement parent = (JSElement) exp.getParent(); - if(parent != null && parent instanceof JSExpression) - { - if(!(parent instanceof JSParenthesizedExpression) && - ParenthesesUtils.getPrecendence((JSExpression) parent) < ParenthesesUtils.SHIFT_PRECENDENCE) - { - expString = '(' + expString + ')'; - } + if (parent != null && parent instanceof JSExpression parentExpression && !(parent instanceof JSParenthesizedExpression) + && ParenthesesUtils.getPrecendence(parentExpression) < ParenthesesUtils.SHIFT_PRECENDENCE) { + expString = '(' + expString + ')'; } JSElementFactory.replaceExpression(exp, expString); } @@ -128,46 +126,35 @@ private void replaceMultiplyOrDivideWithShift(JSBinaryExpression exp) private static class MultiplyByPowerOfTwoPredicate implements JSElementPredicate { @Override + @RequiredReadAction public boolean satisfiedBy(@Nonnull PsiElement element) { - if(element instanceof JSAssignmentExpression) - { - return isMultiplyByPowerOfTwo((JSAssignmentExpression) element); - } - else if(element instanceof JSBinaryExpression) - { - return isMultiplyByPowerOfTwo((JSBinaryExpression) element); - } - else - { - return false; - } + return element instanceof JSAssignmentExpression assignmentExpression + ? isMultiplyByPowerOfTwo(assignmentExpression) + : element instanceof JSBinaryExpression binaryExpression && isMultiplyByPowerOfTwo(binaryExpression); } + @RequiredReadAction private static boolean isMultiplyByPowerOfTwo(JSAssignmentExpression expression) { final IElementType operator = expression.getOperationSign(); - if(operator == null || !(operator.equals(JSTokenTypes.MULTEQ) || operator.equals(JSTokenTypes.DIVEQ))) + if (operator == null || !(operator.equals(JSTokenTypes.MULTEQ) || operator.equals(JSTokenTypes.DIVEQ))) { return false; } final JSExpression rightExpression = expression.getROperand(); - if(rightExpression == null) - { - return false; - } - - return ShiftUtils.isPowerOfTwo(rightExpression); + return rightExpression != null && ShiftUtils.isPowerOfTwo(rightExpression); } + @RequiredReadAction private static boolean isMultiplyByPowerOfTwo(JSBinaryExpression expression) { final IElementType operator = expression.getOperationSign(); - if(operator == null || !(operator.equals(JSTokenTypes.MULT) || operator.equals(JSTokenTypes.DIV))) + if (operator == null || !(operator.equals(JSTokenTypes.MULT) || operator.equals(JSTokenTypes.DIV))) { return false; } @@ -175,11 +162,8 @@ private static boolean isMultiplyByPowerOfTwo(JSBinaryExpression expression) final JSExpression leftOperand = expression.getLOperand(); final JSExpression rightOperand = expression.getROperand(); - if(leftOperand == null || rightOperand == null) - { - return false; - } - return (ShiftUtils.isPowerOfTwo(leftOperand) || ShiftUtils.isPowerOfTwo(rightOperand)); + return leftOperand != null && rightOperand != null + && (ShiftUtils.isPowerOfTwo(leftOperand) || ShiftUtils.isPowerOfTwo(rightOperand)); } } } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceShiftWithMultiplyIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceShiftWithMultiplyIntention.java index bf15b4fa..38d27e1d 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceShiftWithMultiplyIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceShiftWithMultiplyIntention.java @@ -17,6 +17,7 @@ import com.intellij.lang.javascript.JSTokenTypes; import com.intellij.lang.javascript.psi.*; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; import consulo.language.editor.intention.IntentionMetaData; @@ -31,25 +32,27 @@ import org.intellij.idea.lang.javascript.psiutil.ParenthesesUtils; @ExtensionImpl -@IntentionMetaData(ignoreId = "JSReplaceShiftWithMultiplyIntention", categories = { - "JavaScript", - "Shift" -}, fileExtensions = "js") +@IntentionMetaData( + ignoreId = "JSReplaceShiftWithMultiplyIntention", + categories = {"JavaScript", "Shift"}, + fileExtensions = "js" +) public class JSReplaceShiftWithMultiplyIntention extends JSMutablyNamedIntention { @Override + @RequiredReadAction protected String getTextForElement(PsiElement element) { final IElementType tokenType = ((JSBinaryExpression) element).getOperationSign(); final String operatorString; - if(element instanceof JSAssignmentExpression) + if (element instanceof JSAssignmentExpression) { - operatorString = (tokenType.equals(JSTokenTypes.LTLTEQ) ? "*=" : "/="); + operatorString = JSTokenTypes.LTLTEQ.equals(tokenType) ? "*=" : "/="; } else { - operatorString = (tokenType.equals(JSTokenTypes.LTLT) ? "*" : "/"); + operatorString = JSTokenTypes.LTLT.equals(tokenType) ? "*" : "/"; } return JSIntentionBundle.message( @@ -67,11 +70,12 @@ public JSElementPredicate getElementPredicate() } @Override + @RequiredReadAction public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException { - if(element instanceof JSAssignmentExpression) + if (element instanceof JSAssignmentExpression assignmentExpression) { - this.replaceShiftAssignWithMultiplyOrDivideAssign((JSAssignmentExpression) element); + this.replaceShiftAssignWithMultiplyOrDivideAssign(assignmentExpression); } else { @@ -80,37 +84,33 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat } } - private void replaceShiftAssignWithMultiplyOrDivideAssign(JSAssignmentExpression exp) - throws IncorrectOperationException + @RequiredReadAction + private void replaceShiftAssignWithMultiplyOrDivideAssign(JSAssignmentExpression exp) throws IncorrectOperationException { final JSExpression lhs = exp.getLOperand(); final JSExpression rhs = exp.getROperand(); final IElementType tokenType = exp.getOperationSign(); - final String assignString = ((tokenType.equals(JSTokenTypes.LTLTEQ)) ? "*=" : "/="); + final String assignString = JSTokenTypes.LTLTEQ.equals(tokenType) ? "*=" : "/="; final String expString = lhs.getText() + assignString + ShiftUtils.getExpBase2(rhs); JSElementFactory.replaceExpression(exp, expString); } - private void replaceShiftWithMultiplyOrDivide(JSBinaryExpression exp) - throws IncorrectOperationException + @RequiredReadAction + private void replaceShiftWithMultiplyOrDivide(JSBinaryExpression exp) throws IncorrectOperationException { final JSExpression lhs = exp.getLOperand(); final JSExpression rhs = exp.getROperand(); final IElementType tokenType = exp.getOperationSign(); - final String operatorString = ((tokenType.equals(JSTokenTypes.LTLT)) ? "*" : "/"); + final String operatorString = JSTokenTypes.LTLT.equals(tokenType) ? "*" : "/"; final String lhsText = ParenthesesUtils.getParenthesized(lhs, ParenthesesUtils.MULTIPLICATIVE_PRECENDENCE); String expString = lhsText + operatorString + ShiftUtils.getExpBase2(rhs); final JSElement parent = (JSElement) exp.getParent(); - if(parent != null && parent instanceof JSExpression) - { - if(!(parent instanceof JSParenthesizedExpression) && - ParenthesesUtils.getPrecendence((JSExpression) parent) < ParenthesesUtils.MULTIPLICATIVE_PRECENDENCE) - { - expString = '(' + expString + ')'; - } + if (parent != null && parent instanceof JSExpression parentExpression && !(parent instanceof JSParenthesizedExpression) + && ParenthesesUtils.getPrecendence(parentExpression) < ParenthesesUtils.MULTIPLICATIVE_PRECENDENCE) { + expString = '(' + expString + ')'; } JSElementFactory.replaceExpression(exp, expString); } @@ -118,55 +118,36 @@ private void replaceShiftWithMultiplyOrDivide(JSBinaryExpression exp) private static class ShiftByLiteralPredicate implements JSElementPredicate { @Override + @RequiredReadAction public boolean satisfiedBy(@Nonnull PsiElement element) { - if(element instanceof JSAssignmentExpression) - { - return this.isAssignmentShiftByLiteral((JSAssignmentExpression) element); - } - else if(element instanceof JSBinaryExpression) - { - return this.isBinaryShiftByLiteral((JSBinaryExpression) element); - } - else - { - return false; - } + return element instanceof JSAssignmentExpression assignmentExpression + ? this.isAssignmentShiftByLiteral(assignmentExpression) + : element instanceof JSBinaryExpression binaryExpression && this.isBinaryShiftByLiteral(binaryExpression); } + @RequiredReadAction private boolean isAssignmentShiftByLiteral(JSAssignmentExpression expression) { final IElementType tokenType = expression.getOperationSign(); - if(tokenType == null || - !(tokenType.equals(JSTokenTypes.LTLTEQ) || - tokenType.equals(JSTokenTypes.GTGTEQ) - ) - ) + if (tokenType == null || !(JSTokenTypes.LTLTEQ.equals(tokenType) || JSTokenTypes.GTGTEQ.equals(tokenType))) { return false; } final JSExpression rhs = expression.getROperand(); - if(rhs == null) - { - return false; - } - return ShiftUtils.isIntLiteral(rhs); + return rhs != null && ShiftUtils.isIntLiteral(rhs); } + @RequiredReadAction private boolean isBinaryShiftByLiteral(JSBinaryExpression expression) { final IElementType tokenType = expression.getOperationSign(); - if(!(tokenType.equals(JSTokenTypes.LTLT) || - tokenType.equals(JSTokenTypes.GTGT))) - { - return false; - } - - return ShiftUtils.isIntLiteral(expression.getROperand()); + return (JSTokenTypes.LTLT.equals(tokenType) || JSTokenTypes.GTGT.equals(tokenType)) + && ShiftUtils.isIntLiteral(expression.getROperand()); } } } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/opassign/JSReplaceWithOperatorAssignmentIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/opassign/JSReplaceWithOperatorAssignmentIntention.java index 21988941..ab639f7e 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/opassign/JSReplaceWithOperatorAssignmentIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/opassign/JSReplaceWithOperatorAssignmentIntention.java @@ -20,6 +20,7 @@ import com.intellij.lang.javascript.psi.JSBinaryExpression; import com.intellij.lang.javascript.psi.JSDefinitionExpression; import com.intellij.lang.javascript.psi.JSExpression; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; import consulo.language.editor.intention.IntentionMetaData; @@ -32,13 +33,15 @@ import org.intellij.idea.lang.javascript.psiutil.*; @ExtensionImpl -@IntentionMetaData(ignoreId = "JSReplaceWithOperatorAssignmentIntention", categories = { - "JavaScript", - "Other" -}, fileExtensions = "js") +@IntentionMetaData( + ignoreId = "JSReplaceWithOperatorAssignmentIntention", + categories = {"JavaScript", "Other"}, + fileExtensions = "js" +) public class JSReplaceWithOperatorAssignmentIntention extends JSMutablyNamedIntention { @Override + @RequiredReadAction public String getTextForElement(PsiElement element) { final JSAssignmentExpression exp = (JSAssignmentExpression) element; @@ -57,6 +60,7 @@ public JSElementPredicate getElementPredicate() } @Override + @RequiredReadAction public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException { final JSAssignmentExpression exp = (JSAssignmentExpression) element; @@ -77,58 +81,43 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat private static class Predicate implements JSElementPredicate { @Override + @RequiredReadAction public boolean satisfiedBy(@Nonnull PsiElement element) { - if(!(element instanceof JSAssignmentExpression)) - { - return false; - } - if(ErrorUtil.containsError(element)) - { - return false; + if (!(element instanceof JSAssignmentExpression) || ErrorUtil.containsError(element)) { + return false; } final JSAssignmentExpression assignment = (JSAssignmentExpression) element; final IElementType tokenType = assignment.getOperationSign(); - if(!JSTokenTypes.EQ.equals(tokenType)) + if (!JSTokenTypes.EQ.equals(tokenType)) { return false; } JSExpression lhs = assignment.getLOperand(); final JSExpression rhs = assignment.getROperand(); - if(lhs instanceof JSDefinitionExpression) - { - lhs = ((JSDefinitionExpression) lhs).getExpression(); - } - if(lhs == null || rhs == null) + if (lhs instanceof JSDefinitionExpression definitionExpression) { - return false; + lhs = definitionExpression.getExpression(); } - if(!(rhs instanceof JSBinaryExpression)) - { - return false; + if (lhs == null || !(rhs instanceof JSBinaryExpression)) { + return false; } final JSBinaryExpression binaryRhs = (JSBinaryExpression) rhs; final JSExpression rhsRhs = binaryRhs.getROperand(); final JSExpression rhsLhs = binaryRhs.getLOperand(); - if(rhsRhs == null) + if (rhsRhs == null) { return false; } final IElementType rhsTokenType = binaryRhs.getOperationSign(); - if(JSTokenTypes.OROR.equals(rhsTokenType) || - JSTokenTypes.ANDAND.equals(rhsTokenType)) - { - return false; - } - if(SideEffectChecker.mayHaveSideEffects(lhs)) - { - return false; - } - return EquivalenceChecker.expressionsAreEquivalent(lhs, rhsLhs); + return !JSTokenTypes.OROR.equals(rhsTokenType) + && !JSTokenTypes.ANDAND.equals(rhsTokenType) + && !SideEffectChecker.mayHaveSideEffects(lhs) + && EquivalenceChecker.expressionsAreEquivalent(lhs, rhsLhs); } } } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSDoubleToSingleQuotedStringIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSDoubleToSingleQuotedStringIntention.java index 4db8293e..a9411491 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSDoubleToSingleQuotedStringIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSDoubleToSingleQuotedStringIntention.java @@ -16,7 +16,7 @@ package org.intellij.idea.lang.javascript.intention.string; import com.intellij.lang.javascript.psi.JSLiteralExpression; -import consulo.annotation.component.ExtensionImpl; +import consulo.annotation.access.RequiredReadAction;import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; @@ -27,10 +27,11 @@ import jakarta.annotation.Nonnull; @ExtensionImpl -@IntentionMetaData(ignoreId = "JSDoubleToSingleQuotedStringIntention", categories = { - "JavaScript", - "Other" -}, fileExtensions = "js") +@IntentionMetaData( + ignoreId = "JSDoubleToSingleQuotedStringIntention", + categories = {"JavaScript", "Other"}, + fileExtensions = "js" +) public class JSDoubleToSingleQuotedStringIntention extends JSIntention { @Override @@ -41,6 +42,7 @@ protected JSElementPredicate getElementPredicate() } @Override + @RequiredReadAction public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException { final JSLiteralExpression stringLiteral = (JSLiteralExpression) element; @@ -54,11 +56,11 @@ static String changeQuotes(String stringLiteral) int simpleIndex = stringLiteral.lastIndexOf(StringUtil.SIMPLE_QUOTE); int doubleIndex = stringLiteral.lastIndexOf(StringUtil.DOUBLE_QUOTE, stringLiteral.length() - 2); - while(simpleIndex >= 0 || doubleIndex > 0) + while (simpleIndex >= 0 || doubleIndex > 0) { - if(simpleIndex > doubleIndex) + if (simpleIndex > doubleIndex) { - if(stringLiteral.charAt(simpleIndex - 1) != StringUtil.BACKSLASH) + if (stringLiteral.charAt(simpleIndex - 1) != StringUtil.BACKSLASH) { buffer.insert(simpleIndex, StringUtil.BACKSLASH); } @@ -66,7 +68,7 @@ static String changeQuotes(String stringLiteral) } else { - if(stringLiteral.charAt(doubleIndex - 1) == StringUtil.BACKSLASH) + if (stringLiteral.charAt(doubleIndex - 1) == StringUtil.BACKSLASH) { buffer.deleteCharAt(doubleIndex - 1); } @@ -81,15 +83,10 @@ static String changeQuotes(String stringLiteral) private static class DoubleToSingleQuotedStringPredicate implements JSElementPredicate { - @Override public boolean satisfiedBy(@Nonnull PsiElement element) { - if(!(element instanceof JSLiteralExpression)) - { - return false; - } - return StringUtil.isDoubleQuoteStringLiteral((JSLiteralExpression) element); + return element instanceof JSLiteralExpression literalExpression && StringUtil.isDoubleQuoteStringLiteral(literalExpression); } } } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSSingleToDoubleQuotedStringIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSSingleToDoubleQuotedStringIntention.java index fade7b3e..63c0b6f9 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSSingleToDoubleQuotedStringIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSSingleToDoubleQuotedStringIntention.java @@ -16,6 +16,7 @@ package org.intellij.idea.lang.javascript.intention.string; import com.intellij.lang.javascript.psi.JSLiteralExpression; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; @@ -27,10 +28,11 @@ import jakarta.annotation.Nonnull; @ExtensionImpl -@IntentionMetaData(ignoreId = "JSSingleToDoubleQuotedStringIntention", categories = { - "JavaScript", - "Other" -}, fileExtensions = "js") +@IntentionMetaData( + ignoreId = "JSSingleToDoubleQuotedStringIntention", + categories = {"JavaScript", "Other"}, + fileExtensions = "js" +) public class JSSingleToDoubleQuotedStringIntention extends JSIntention { @Override @@ -41,6 +43,7 @@ protected JSElementPredicate getElementPredicate() } @Override + @RequiredReadAction public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException { final JSLiteralExpression charLiteral = (JSLiteralExpression) element; @@ -54,11 +57,11 @@ static String changeQuotes(String charLiteral) int simpleIndex = charLiteral.lastIndexOf(StringUtil.SIMPLE_QUOTE, charLiteral.length() - 2); int doubleIndex = charLiteral.lastIndexOf(StringUtil.DOUBLE_QUOTE); - while(simpleIndex > 0 || doubleIndex >= 0) + while (simpleIndex > 0 || doubleIndex >= 0) { - if(simpleIndex > doubleIndex) + if (simpleIndex > doubleIndex) { - if(charLiteral.charAt(simpleIndex - 1) == StringUtil.BACKSLASH) + if (charLiteral.charAt(simpleIndex - 1) == StringUtil.BACKSLASH) { buffer.deleteCharAt(simpleIndex - 1); } @@ -66,7 +69,7 @@ static String changeQuotes(String charLiteral) } else { - if(charLiteral.charAt(doubleIndex - 1) != StringUtil.BACKSLASH) + if (charLiteral.charAt(doubleIndex - 1) != StringUtil.BACKSLASH) { buffer.insert(doubleIndex, StringUtil.BACKSLASH); } @@ -84,14 +87,7 @@ private static class SingleToDoubleQuotedStringPredicate implements JSElementPre @Override public boolean satisfiedBy(@Nonnull PsiElement element) { - if(!(element instanceof JSLiteralExpression)) - { - return false; - } - - final JSLiteralExpression expression = (JSLiteralExpression) element; - - return StringUtil.isSimpleQuoteStringLiteral(expression); + return element instanceof JSLiteralExpression expression && StringUtil.isSimpleQuoteStringLiteral(expression); } } } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceSwitchWithIfIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceSwitchWithIfIntention.java index 43c98e14..eac6bf5e 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceSwitchWithIfIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceSwitchWithIfIntention.java @@ -17,6 +17,7 @@ import com.intellij.lang.javascript.psi.*; import com.intellij.lang.javascript.psi.impl.JSChangeUtil; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.codeStyle.CodeStyleManager; import consulo.language.editor.intention.IntentionMetaData; @@ -33,13 +34,13 @@ import java.util.*; @ExtensionImpl -@IntentionMetaData(ignoreId = "JSReplaceSwitchWithIfIntention", categories = { - "JavaScript", - "Control Flow" -}, fileExtensions = "js") +@IntentionMetaData( + ignoreId = "JSReplaceSwitchWithIfIntention", + categories = {"JavaScript", "Control Flow"}, + fileExtensions = "js" +) public class JSReplaceSwitchWithIfIntention extends JSIntention { - @NonNls private static final String IF_PREFIX = "if ("; @NonNls @@ -63,6 +64,7 @@ public JSElementPredicate getElementPredicate() } @Override + @RequiredReadAction public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException { final JSSwitchStatement switchStatement = (JSSwitchStatement) element.getParent(); @@ -110,9 +112,9 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat .append(':'); } - final List openBranches = new ArrayList(); - final Set declaredVars = new HashSet(5); - final List allBranches = new ArrayList(); + final List openBranches = new ArrayList<>(); + final Set declaredVars = new HashSet<>(5); + final List allBranches = new ArrayList<>(); SwitchStatementBranch currentBranch = null; for(JSCaseClause caseClause : switchStatement.getCaseClauses()) @@ -157,27 +159,24 @@ else if(child instanceof JSStatement) // Processes case clause statements final JSStatement statement = (JSStatement) child; - if(statement instanceof JSVarStatement) + if (statement instanceof JSVarStatement) { - for(JSVariable variable : ((JSVarStatement) statement).getVariables()) - { - declaredVars.add(variable); - } + Collections.addAll(declaredVars, ((JSVarStatement)statement).getVariables()); } - else if(statement instanceof JSBlockStatement) + else if (statement instanceof JSBlockStatement) { - for(PsiElement blockElement : statement.getChildren()) + for (PsiElement blockElement : statement.getChildren()) { final boolean isJsElement = (blockElement instanceof JSElement); final boolean isWhiteSpace = (blockElement instanceof PsiWhiteSpace); - for(SwitchStatementBranch branch : openBranches) + for (SwitchStatementBranch branch : openBranches) { - if(isJsElement) + if (isJsElement) { branch.addStatement((JSElement) blockElement); } - else if(isWhiteSpace) + else if (isWhiteSpace) { branch.addWhiteSpace(blockElement); } @@ -190,13 +189,13 @@ else if(isWhiteSpace) } else { - for(SwitchStatementBranch branch : openBranches) + for (SwitchStatementBranch branch : openBranches) { branch.addStatement(statement); } } - if(!ControlFlowUtils.statementMayCompleteNormally(statement)) + if (!ControlFlowUtils.statementMayCompleteNormally(statement)) { currentBranch = null; } @@ -205,9 +204,9 @@ else if(isWhiteSpace) { final boolean isWhiteSpace = (child instanceof PsiWhiteSpace); - for(SwitchStatementBranch openBranch : openBranches) + for (SwitchStatementBranch openBranch : openBranches) { - if(isWhiteSpace) + if (isWhiteSpace) { openBranch.addWhiteSpace(child); } @@ -223,9 +222,9 @@ else if(isWhiteSpace) boolean firstBranch = true; SwitchStatementBranch defaultBranch = null; - for(SwitchStatementBranch branch : allBranches) + for (SwitchStatementBranch branch : allBranches) { - if(branch.isDefault()) + if (branch.isDefault()) { defaultBranch = branch; } @@ -235,24 +234,35 @@ else if(isWhiteSpace) final List bodyElements = branch.getBodyElements(); final Set pendingVariableDeclarations = branch.getPendingVariableDeclarations(); - dumpBranch(ifStatementBuffer, expressionText, - labels, bodyElements, firstBranch, - renameBreaks && CaseUtil.containsHiddenBreak(bodyElements), breakLabel, - pendingVariableDeclarations); + dumpBranch( + ifStatementBuffer, + expressionText, + labels, + bodyElements, + firstBranch, + renameBreaks && CaseUtil.containsHiddenBreak(bodyElements), + breakLabel, + pendingVariableDeclarations + ); firstBranch = false; } } - if(defaultBranch != null) + if (defaultBranch != null) { final List bodyElements = defaultBranch.getBodyElements(); final Set pendingVariableDeclarations = defaultBranch.getPendingVariableDeclarations(); - dumpDefaultBranch(ifStatementBuffer, bodyElements, - firstBranch, renameBreaks, breakLabel, - pendingVariableDeclarations); + dumpDefaultBranch( + ifStatementBuffer, + bodyElements, + firstBranch, + renameBreaks, + breakLabel, + pendingVariableDeclarations + ); } - if(hadSideEffects) + if (hadSideEffects) { final String ifStatementString = ifStatementBuffer.toString(); final JSStatement declarationStatement = (JSStatement) JSChangeUtil.createStatementFromText(element.getProject(), declarationString).getPsi(); @@ -272,72 +282,74 @@ else if(isWhiteSpace) } } - private static void dumpBranch(StringBuilder ifStatementString, - String expressionText, - List labels, - List bodyStatements, - boolean firstBranch, - boolean renameBreaks, - String breakLabel, - Set variableDecls) + @RequiredReadAction + private static void dumpBranch( + StringBuilder ifStatementString, + String expressionText, + List labels, + List bodyStatements, + boolean firstBranch, + boolean renameBreaks, + String breakLabel, + Set variableDecls + ) { - if(!firstBranch) + if (!firstBranch) { ifStatementString.append(ELSE_KEYWORD); } dumpLabels(ifStatementString, expressionText, labels); - dumpBody(ifStatementString, bodyStatements, renameBreaks, breakLabel, - variableDecls); + dumpBody(ifStatementString, bodyStatements, renameBreaks, breakLabel, variableDecls); } - private static void dumpDefaultBranch(StringBuilder ifStatementString, - List bodyStatements, - boolean firstBranch, - boolean renameBreaks, - String breakLabel, - Set variableDecls) + @RequiredReadAction + private static void dumpDefaultBranch( + StringBuilder ifStatementString, + List bodyStatements, + boolean firstBranch, + boolean renameBreaks, + String breakLabel, + Set variableDecls + ) { - if(!firstBranch) + if (!firstBranch) { ifStatementString.append(ELSE_KEYWORD); } - dumpBody(ifStatementString, bodyStatements, renameBreaks, breakLabel, - variableDecls); + dumpBody(ifStatementString, bodyStatements, renameBreaks, breakLabel, variableDecls); } - private static void dumpLabels(StringBuilder ifStatementString, - String expressionText, - List labels) + private static void dumpLabels(StringBuilder ifStatementString, String expressionText, List labels) { boolean firstLabel = true; ifStatementString.append(IF_PREFIX); - for(String label : labels) + for (String label : labels) { - if(!firstLabel) + if (!firstLabel) { ifStatementString.append("||"); } firstLabel = false; - ifStatementString.append(expressionText) - .append("==") - .append(label); + ifStatementString.append(expressionText).append("==").append(label); } ifStatementString.append(')'); } - private static void dumpBody(StringBuilder ifStatementString, - List bodyStatements, - boolean renameBreaks, - String breakLabel, - Set variableDecls) + @RequiredReadAction + private static void dumpBody( + StringBuilder ifStatementString, + List bodyStatements, + boolean renameBreaks, + String breakLabel, + Set variableDecls + ) { - ifStatementString.append('{'); - for(final JSVariable var : variableDecls) + for (final JSVariable var : variableDecls) { - if(CaseUtil.isUsedByStatementList(var, bodyStatements)) + if (CaseUtil.isUsedByStatementList(var, bodyStatements)) { ifStatementString.append(VAR_PREFIX) .append(var.getName()) @@ -345,9 +357,9 @@ private static void dumpBody(StringBuilder ifStatementString, } } - for(final PsiElement bodyStatement : bodyStatements) + for (final PsiElement bodyStatement : bodyStatements) { - if(!(bodyStatement instanceof JSBreakStatement)) + if (!(bodyStatement instanceof JSBreakStatement)) { appendElement(ifStatementString, bodyStatement, renameBreaks, breakLabel); @@ -356,50 +368,49 @@ private static void dumpBody(StringBuilder ifStatementString, ifStatementString.append('}'); } - private static void appendElement(StringBuilder ifStatementString, - PsiElement element, - boolean renameBreakElements, - String breakLabelString) + @RequiredReadAction + private static void appendElement( + StringBuilder ifStatementString, + PsiElement element, + boolean renameBreakElements, + String breakLabelString + ) { - if(!renameBreakElements) + if (!renameBreakElements) { final String text = element.getText(); ifStatementString.append(text); } - else if(element instanceof JSBreakStatement) + else if (element instanceof JSBreakStatement breakStatement) { - final String identifier = ((JSBreakStatement) element).getLabel(); + final String identifier = breakStatement.getLabel(); - if(identifier == null || identifier.length() == 0) + if (identifier == null || identifier.isEmpty()) { - ifStatementString.append(BREAK_KEYWORD) - .append(breakLabelString) - .append(';'); + ifStatementString.append(BREAK_KEYWORD).append(breakLabelString).append(';'); } else { - final String text = element.getText(); - ifStatementString.append(text); + ifStatementString.append(element.getText()); } } - else if(element instanceof JSBlockStatement) + else if (element instanceof JSBlockStatement) { - for(final PsiElement child : element.getChildren()) + for (final PsiElement child : element.getChildren()) { appendElement(ifStatementString, child, renameBreakElements, breakLabelString); } } - else if(element instanceof JSIfStatement) + else if (element instanceof JSIfStatement ifStatement) { - JSIfStatement ifStatement = (JSIfStatement) element; JSStatement elseBranch = ifStatement.getElse(); ifStatementString.append(IF_PREFIX) .append(ifStatement.getCondition().getText()) .append(IF_SUFFIX); appendElement(ifStatementString, ifStatement.getThen(), renameBreakElements, breakLabelString); - if(elseBranch != null) + if (elseBranch != null) { ifStatementString.append(ELSE); appendElement(ifStatementString, elseBranch, renameBreakElements, breakLabelString); @@ -419,28 +430,30 @@ public boolean satisfiedBy(@Nonnull PsiElement element) { final PsiElement parent = element.getParent(); - if(!(parent instanceof JSSwitchStatement)) + if (parent instanceof JSSwitchStatement switchStatement) { - return false; + if (ErrorUtil.containsError(switchStatement)) + { + return false; + } + + final JSExpression expression = switchStatement.getSwitchExpression(); + + return expression != null && expression.isValid(); } - final JSSwitchStatement switchStatement = (JSSwitchStatement) parent; - if(ErrorUtil.containsError(switchStatement)) + else { return false; } - - final JSExpression expression = switchStatement.getSwitchExpression(); - - return (expression != null && expression.isValid()); } } private static class SwitchStatementBranch { - private final Set pendingVariableDeclarations = new HashSet(5); - private final List labels = new ArrayList(2); - private final List bodyElements = new ArrayList(5); - private final List pendingWhiteSpace = new ArrayList(2); + private final Set pendingVariableDeclarations = new HashSet<>(5); + private final List labels = new ArrayList<>(2); + private final List bodyElements = new ArrayList<>(5); + private final List pendingWhiteSpace = new ArrayList<>(2); private boolean isDefault; private boolean hasStatements; diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSimplifyIfElseIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSimplifyIfElseIntention.java index 0b9176c3..63149a54 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSimplifyIfElseIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSimplifyIfElseIntention.java @@ -30,10 +30,11 @@ import jakarta.annotation.Nonnull; @ExtensionImpl -@IntentionMetaData(ignoreId = "JSSimplifyIfElseIntention", categories = { - "JavaScript", - "Control Flow" -}, fileExtensions = "js") +@IntentionMetaData( + ignoreId = "JSSimplifyIfElseIntention", + categories = {"JavaScript", "Control Flow"}, + fileExtensions = "js" +) public class JSSimplifyIfElseIntention extends JSIntention { @Override @@ -46,7 +47,7 @@ public JSElementPredicate getElementPredicate() @Override public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException { - final PsiElement statement = (element.getParent() instanceof JSIfStatement ? element.getParent() : element); + final PsiElement statement = element.getParent() instanceof JSIfStatement ? element.getParent() : element; ConditionalUtils.replaceAssignmentOrReturnIfSimplifiable((JSIfStatement) statement); } @@ -56,16 +57,16 @@ private static class SimplifyIfElsePredicate implements JSElementPredicate @Override public boolean satisfiedBy(@Nonnull PsiElement element) { - if(!(element instanceof JSElement)) + if (!(element instanceof JSElement)) { return false; } PsiElement parent = element.getParent(); - if(!(parent instanceof JSIfStatement)) + if (!(parent instanceof JSIfStatement)) { - if(element instanceof JSIfStatement) + if (element instanceof JSIfStatement) { parent = element; } @@ -74,7 +75,7 @@ public boolean satisfiedBy(@Nonnull PsiElement element) return false; } } - if(ErrorUtil.containsError(parent)) + if (ErrorUtil.containsError(parent)) { return false; } @@ -82,20 +83,19 @@ public boolean satisfiedBy(@Nonnull PsiElement element) final JSIfStatement ifStatement = (JSIfStatement) parent; final JSExpression condition = ifStatement.getCondition(); - if(condition == null || !condition.isValid()) + if (condition == null || !condition.isValid()) { return false; } - return (ConditionalUtils.isSimplifiableAssignment(ifStatement, false) || - ConditionalUtils.isSimplifiableAssignment(ifStatement, true) || - ConditionalUtils.isSimplifiableReturn(ifStatement, false) || - ConditionalUtils.isSimplifiableReturn(ifStatement, true) || - ConditionalUtils.isSimplifiableImplicitReturn(ifStatement, false) || - ConditionalUtils.isSimplifiableImplicitReturn(ifStatement, true) || - ConditionalUtils.isSimplifiableImplicitAssignment(ifStatement, false) || - ConditionalUtils.isSimplifiableImplicitAssignment(ifStatement, true)); - + return ConditionalUtils.isSimplifiableAssignment(ifStatement, false) + || ConditionalUtils.isSimplifiableAssignment(ifStatement, true) + || ConditionalUtils.isSimplifiableReturn(ifStatement, false) + || ConditionalUtils.isSimplifiableReturn(ifStatement, true) + || ConditionalUtils.isSimplifiableImplicitReturn(ifStatement, false) + || ConditionalUtils.isSimplifiableImplicitReturn(ifStatement, true) + || ConditionalUtils.isSimplifiableImplicitAssignment(ifStatement, false) + || ConditionalUtils.isSimplifiableImplicitAssignment(ifStatement, true); } } } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitElseIfIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitElseIfIntention.java index e78afee8..b3b153f6 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitElseIfIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitElseIfIntention.java @@ -17,7 +17,7 @@ import com.intellij.lang.javascript.psi.JSIfStatement; import com.intellij.lang.javascript.psi.JSStatement; -import consulo.annotation.component.ExtensionImpl; +import consulo.annotation.access.RequiredReadAction;import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; @@ -29,10 +29,11 @@ import jakarta.annotation.Nonnull; @ExtensionImpl -@IntentionMetaData(ignoreId = "JSSplitElseIfIntention", categories = { - "JavaScript", - "Control Flow" -}, fileExtensions = "js") +@IntentionMetaData( + ignoreId = "JSSplitElseIfIntention", + categories = {"JavaScript", "Control Flow"}, + fileExtensions = "js" +) public class JSSplitElseIfIntention extends JSIntention { @Override @@ -43,6 +44,7 @@ public JSElementPredicate getElementPredicate() } @Override + @RequiredReadAction public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException { final JSIfStatement parentStatement = (JSIfStatement) element.getParent(); @@ -62,22 +64,21 @@ public boolean satisfiedBy(@Nonnull PsiElement element) { final PsiElement parent = element.getParent(); - if(!(parent instanceof JSIfStatement)) + if (!(parent instanceof JSIfStatement)) { return false; } final JSIfStatement ifStatement = (JSIfStatement) parent; - if(ErrorUtil.containsError(ifStatement)) + if (ErrorUtil.containsError(ifStatement)) { return false; } final JSStatement thenBranch = ifStatement.getThen(); final JSStatement elseBranch = ifStatement.getElse(); - return (thenBranch != null && elseBranch != null && - elseBranch instanceof JSIfStatement); + return thenBranch != null && elseBranch != null && elseBranch instanceof JSIfStatement; } } } \ No newline at end of file diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfAndIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfAndIntention.java index 7dd47c43..f9a97ced 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfAndIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfAndIntention.java @@ -20,6 +20,7 @@ import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.lang.javascript.psi.JSIfStatement; import com.intellij.lang.javascript.psi.JSStatement; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; @@ -33,10 +34,11 @@ import org.jetbrains.annotations.NonNls; @ExtensionImpl -@IntentionMetaData(ignoreId = "JSSplitIfAndIntention", categories = { - "JavaScript", - "Control Flow" -}, fileExtensions = "js") +@IntentionMetaData( + ignoreId = "JSSplitIfAndIntention", + categories = {"JavaScript", "Control Flow"}, + fileExtensions = "js" +) public class JSSplitIfAndIntention extends JSIntention { @NonNls @@ -54,6 +56,7 @@ public JSElementPredicate getElementPredicate() } @Override + @RequiredReadAction public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException { final PsiElement jsElement = (element.getParent() instanceof JSIfStatement ? element.getParent() : element); @@ -71,29 +74,27 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat final JSStatement thenBranch = ifStatement.getThen(); final JSStatement elseBranch = ifStatement.getElse(); final String thenText = thenBranch.getText(); - final String elseText = ((elseBranch == null) ? null : elseBranch.getText()); - final int elseLength = ((elseBranch == null) ? 0 : elseText.length()); + final String elseText = (elseBranch == null) ? null : elseBranch.getText(); + final int elseLength = (elseBranch == null) ? 0 : elseText.length(); - assert (condition.getOperationSign().equals(JSTokenTypes.ANDAND)); + assert JSTokenTypes.ANDAND.equals(condition.getOperationSign()); final StringBuilder statement = new StringBuilder(ifStatement.getTextLength() + elseLength + 30); statement.append(IF_STATEMENT_PREFIX) - .append(lhsText) - .append(INNER_IF_STATEMENT_PREFIX) - .append(rhsText) - .append(')') - .append(thenText); - if(elseBranch != null) + .append(lhsText) + .append(INNER_IF_STATEMENT_PREFIX) + .append(rhsText) + .append(')') + .append(thenText); + if (elseBranch != null) { - statement.append(ELSE_KEYWORD) - .append(elseText); + statement.append(ELSE_KEYWORD).append(elseText); } statement.append('}'); - if(elseBranch != null) + if (elseBranch != null) { - statement.append(ELSE_KEYWORD) - .append(elseText); + statement.append(ELSE_KEYWORD).append(elseText); } JSElementFactory.replaceStatement(ifStatement, statement.toString()); @@ -102,13 +103,14 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat private static class SplitIfAndPredicate implements JSElementPredicate { @Override + @RequiredReadAction public boolean satisfiedBy(@Nonnull PsiElement element) { PsiElement parent = element.getParent(); - if(!(parent instanceof JSIfStatement)) + if (!(parent instanceof JSIfStatement)) { - if(element instanceof JSIfStatement) + if (element instanceof JSIfStatement) { parent = element; } @@ -121,13 +123,8 @@ public boolean satisfiedBy(@Nonnull PsiElement element) final JSIfStatement ifStatement = (JSIfStatement) parent; final JSExpression condition = ifStatement.getCondition(); - if(condition == null || ErrorUtil.containsError(condition)) - { - return false; - } - - return (condition instanceof JSBinaryExpression && - ((JSBinaryExpression) condition).getOperationSign().equals(JSTokenTypes.ANDAND)); + return condition != null && !ErrorUtil.containsError(condition) && condition instanceof JSBinaryExpression binaryExpression + && JSTokenTypes.ANDAND.equals(binaryExpression.getOperationSign()); } } } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfOrIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfOrIntention.java index 4ba0fa15..5617ce93 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfOrIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfOrIntention.java @@ -20,6 +20,7 @@ import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.lang.javascript.psi.JSIfStatement; import com.intellij.lang.javascript.psi.JSStatement; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; @@ -29,24 +30,17 @@ import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import org.intellij.idea.lang.javascript.psiutil.ParenthesesUtils; -import org.jetbrains.annotations.NonNls; import jakarta.annotation.Nonnull; @ExtensionImpl -@IntentionMetaData(ignoreId = "JSSplitIfOrIntention", categories = { - "JavaScript", - "Control Flow" -}, fileExtensions = "js") +@IntentionMetaData( + ignoreId = "JSSplitIfOrIntention", + categories = {"JavaScript", "Control Flow"}, + fileExtensions = "js" +) public class JSSplitIfOrIntention extends JSIntention { - @NonNls - private static final String IF_STATEMENT_PREFIX = "if ("; - @NonNls - private static final String ELSE_IF_STATEMENT_PREFIX = "else if ("; - @NonNls - private static final String ELSE_KEYWORD = "else "; - @Override @Nonnull public JSElementPredicate getElementPredicate() @@ -55,6 +49,7 @@ public JSElementPredicate getElementPredicate() } @Override + @RequiredReadAction public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException { final PsiElement jsElement = (element.getParent() instanceof JSIfStatement ? element.getParent() : element); @@ -73,22 +68,18 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat final JSStatement elseBranch = ifStatement.getElse(); final String thenText = thenBranch.getText(); - assert (condition.getOperationSign().equals(JSTokenTypes.OROR)); + assert JSTokenTypes.OROR.equals(condition.getOperationSign()); final StringBuilder statement = new StringBuilder(ifStatement.getTextLength()); - statement.append(IF_STATEMENT_PREFIX) - .append(lhsText) - .append(')') - .append(thenText) - .append(ELSE_IF_STATEMENT_PREFIX) - .append(rhsText) - .append(')') - .append(thenText); - if(elseBranch != null) + statement.append("if (").append(lhsText).append(')') + .append(thenText) + .append("else if (").append(rhsText).append(')') + .append(thenText); + + if (elseBranch != null) { - statement.append(ELSE_KEYWORD) - .append(elseBranch.getText()); + statement.append("else ").append(elseBranch.getText()); } JSElementFactory.replaceStatement(ifStatement, statement.toString()); @@ -97,13 +88,14 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat private static class SplitIfOrPredicate implements JSElementPredicate { @Override + @RequiredReadAction public boolean satisfiedBy(@Nonnull PsiElement element) { PsiElement parent = element.getParent(); - if(!(parent instanceof JSIfStatement)) + if (!(parent instanceof JSIfStatement)) { - if(element instanceof JSIfStatement) + if (element instanceof JSIfStatement) { parent = element; } @@ -116,13 +108,8 @@ public boolean satisfiedBy(@Nonnull PsiElement element) final JSIfStatement ifStatement = (JSIfStatement) parent; final JSExpression condition = ifStatement.getCondition(); - if(condition == null || ErrorUtil.containsError(condition)) - { - return false; - } - - return (condition instanceof JSBinaryExpression && - ((JSBinaryExpression) condition).getOperationSign().equals(JSTokenTypes.OROR)); + return condition != null && !ErrorUtil.containsError(condition) && condition instanceof JSBinaryExpression binaryExpression + && JSTokenTypes.OROR.equals(binaryExpression.getOperationSign()); } } } From 6b77409566101700621100029bd7504bb80ac28a Mon Sep 17 00:00:00 2001 From: UNV Date: Wed, 17 Jul 2024 19:13:59 +0300 Subject: [PATCH 033/150] Remaining Intention classes refactoring. --- .../lang/javascript/JSTokenTypes.java | 170 +++++++++-- .../intention/JSMutablyNamedIntention.java | 4 +- .../braces/JSAddBracesIntention.java | 34 +-- .../braces/JSRemoveBracesIntention.java | 33 +-- .../JSChangeToEndOfLineCommentIntention.java | 8 +- .../JSMoveCommentToSeparateLineIntention.java | 41 ++- .../conditional/JSFlipIfIntention.java | 44 ++- .../JSRemoveConditionalIntention.java | 34 +-- .../JSReplaceConditionalWithIfIntention.java | 9 +- ...DeclarationAndInitializationIntention.java | 75 +++-- ...DeclarationAndInitializationIntention.java | 4 +- .../JSMergeParallelForInLoopsIntention.java | 88 +++--- .../JSMergeParallelForLoopsIntention.java | 64 ++--- .../JSConvertIntegerToOctalIntention.java | 8 +- ...RemoveUnnecessaryParenthesesIntention.java | 52 ++-- ...inConcatenatedStringLiteralsIntention.java | 57 ++-- .../JSReplaceIfWithSwitchIntention.java | 271 ++++++++---------- .../JSReplaceSwitchWithIfIntention.java | 31 +- .../trivialif/JSMergeElseIfIntention.java | 60 +--- .../trivialif/JSMergeIfAndIntention.java | 35 +-- .../trivialif/JSMergeIfOrIntention.java | 118 +++----- .../JSMergeParallelIfsIntention.java | 68 ++--- .../JSRemoveRedundantElseIntention.java | 51 ++-- .../JSReplaceIfWithConditionalIntention.java | 131 ++++----- 24 files changed, 674 insertions(+), 816 deletions(-) diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/JSTokenTypes.java b/base-impl/src/main/java/com/intellij/lang/javascript/JSTokenTypes.java index 04641b25..79560473 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/JSTokenTypes.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/JSTokenTypes.java @@ -168,13 +168,13 @@ public void parseScriptExpression(JavaScriptParsingContext context, final PsiBui { PsiBuilder.Marker root = builder.mark(); Parsing.checkMatches(builder, JSTokenTypes.LBRACE, JavaScriptLocalize.javascriptParserMessageExpectedLbrace()); - if(builder.getTokenType() != JSTokenTypes.RBRACE) + if (builder.getTokenType() != JSTokenTypes.RBRACE) { context.getExpressionParsing().parseExpression(builder); } Parsing.checkMatches(builder, JSTokenTypes.RBRACE, JavaScriptLocalize.javascriptParserMessageExpectedRbrace()); - while(!builder.eof()) + while (!builder.eof()) { builder.advanceLexer(); } @@ -187,8 +187,25 @@ public void parseScriptExpression(JavaScriptParsingContext context, final PsiBui IElementType XML_ENTITY_REF = new JSElementType("XML_ENTITY_REF"); IElementType XML_TAG_WHITE_SPACE = new JSElementType("XML_TAG_WHITESPACE"); - TokenSet XML_TOKENS = TokenSet.create(XML_START_TAG_START, XML_START_TAG_LIST, XML_END_TAG_LIST, XML_END_TAG_START, XML_EMPTY_TAG_END, XML_NAME, XML_TAG_NAME, XML_ATTR_EQUAL, XML_ATTR_VALUE, - XML_ATTR_VALUE_START, XML_ATTR_VALUE_END, XML_TAG_END, XML_JS_SCRIPT, XML_TAG_CONTENT, XML_STYLE_COMMENT, XML_ENTITY_REF, XML_TAG_WHITE_SPACE); + TokenSet XML_TOKENS = TokenSet.create( + XML_ATTR_EQUAL, + XML_ATTR_VALUE, + XML_ATTR_VALUE_END, + XML_ATTR_VALUE_START, + XML_EMPTY_TAG_END, + XML_END_TAG_LIST, + XML_END_TAG_START, + XML_ENTITY_REF, + XML_JS_SCRIPT, + XML_NAME, + XML_START_TAG_LIST, + XML_START_TAG_START, + XML_STYLE_COMMENT, + XML_TAG_CONTENT, + XML_TAG_END, + XML_TAG_NAME, + XML_TAG_WHITE_SPACE + ); @Deprecated // FIXME [VISTALL] what the heck? maybe old jsp inject support @@ -202,17 +219,75 @@ public void parseScriptExpression(JavaScriptParsingContext context, final PsiBui IElementType NULL_KEYWORD = new JSElementType("NULL_KEYWORD"); IElementType UNDEFINED_KEYWORD = new JSElementType("UNDEFINED_KEYWORD"); - TokenSet JS_KEYWORDS = TokenSet.create(BREAK_KEYWORD, CASE_KEYWORD, CATCH_KEYWORD, CONST_KEYWORD, CONTINUE_KEYWORD, DELETE_KEYWORD, DEFAULT_KEYWORD, DO_KEYWORD, ELSE_KEYWORD, FINALLY_KEYWORD, - FOR_KEYWORD, FUNCTION_KEYWORD, IF_KEYWORD, IN_KEYWORD, INSTANCEOF_KEYWORD, NEW_KEYWORD, RETURN_KEYWORD, SWITCH_KEYWORD, THIS_KEYWORD, THROW_KEYWORD, TRY_KEYWORD, TYPEOF_KEYWORD, - VAR_KEYWORD, VOID_KEYWORD, WHILE_KEYWORD, WITH_KEYWORD, TRUE_KEYWORD, FALSE_KEYWORD, NULL_KEYWORD, UNDEFINED_KEYWORD, YIELD_KEYWORD, LET_KEYWORD); - - TokenSet JS2_KEYWORDS = TokenSet.create(INTERNAL_KEYWORD, DYNAMIC_KEYWORD, FINAL_KEYWORD, NATIVE_KEYWORD, VIRTUAL_KEYWORD, - CLASS_KEYWORD, EXTENDS_KEYWORD, IMPORT_KEYWORD, USE_KEYWORD, NAMESPACE_KEYWORD, OVERRIDE_KEYWORD, INCLUDE_KEYWORD, - SUPER_KEYWORD, IS_KEYWORD, AS_KEYWORD, GET_KEYWORD, SET_KEYWORD, EACH_KEYWORD, INT_KEYWORD, UINT_KEYWORD); + TokenSet JS_KEYWORDS = TokenSet.create( + BREAK_KEYWORD, + CASE_KEYWORD, + CATCH_KEYWORD, + CONST_KEYWORD, + CONTINUE_KEYWORD, + DELETE_KEYWORD, + DEFAULT_KEYWORD, + DO_KEYWORD, + ELSE_KEYWORD, + FALSE_KEYWORD, + FINALLY_KEYWORD, + FOR_KEYWORD, + FUNCTION_KEYWORD, + IF_KEYWORD, + IN_KEYWORD, + INSTANCEOF_KEYWORD, + LET_KEYWORD, + NEW_KEYWORD, + NULL_KEYWORD, + RETURN_KEYWORD, + SWITCH_KEYWORD, + THIS_KEYWORD, + THROW_KEYWORD, + TRUE_KEYWORD, + TRY_KEYWORD, + TYPEOF_KEYWORD, + UNDEFINED_KEYWORD, + VAR_KEYWORD, + VOID_KEYWORD, + WHILE_KEYWORD, + WITH_KEYWORD, + YIELD_KEYWORD + ); + + TokenSet JS2_KEYWORDS = TokenSet.create( + AS_KEYWORD, + CLASS_KEYWORD, + DYNAMIC_KEYWORD, + EACH_KEYWORD, + EXTENDS_KEYWORD, + FINAL_KEYWORD, + GET_KEYWORD, + INTERNAL_KEYWORD, + NATIVE_KEYWORD, + IMPORT_KEYWORD, + INT_KEYWORD, + IS_KEYWORD, + USE_KEYWORD, + NAMESPACE_KEYWORD, + OVERRIDE_KEYWORD, + INCLUDE_KEYWORD, + SET_KEYWORD, + SUPER_KEYWORD, + UINT_KEYWORD, + VIRTUAL_KEYWORD + ); TokenSet ECMASCRIPT6_KEYWORDS = TokenSet.create(EXPORT_KEYWORD, ENUM_KEYWORD, FROM_KEYWORD); - TokenSet ECMASCRIPT6_STRICT_KEYWORDS = TokenSet.create(PUBLIC_KEYWORD, PRIVATE_KEYWORD, PROTECTED_KEYWORD, PACKAGE_KEYWORD, IMPLEMENTS_KEYWORD, INTERFACE_KEYWORD, STATIC_KEYWORD); + TokenSet ECMASCRIPT6_STRICT_KEYWORDS = TokenSet.create( + IMPLEMENTS_KEYWORD, + INTERFACE_KEYWORD, + PACKAGE_KEYWORD, + PRIVATE_KEYWORD, + PROTECTED_KEYWORD, + PUBLIC_KEYWORD, + STATIC_KEYWORD + ); TokenSet KEYWORDS = TokenSet.orSet(JS_KEYWORDS, JS2_KEYWORDS, ECMASCRIPT6_KEYWORDS); @@ -291,13 +366,41 @@ public void parseScriptExpression(JavaScriptParsingContext context, final PsiBui IElementType CDATA_END = new JSElementType("CDATA_END"); // ]]> IElementType JSDOC_TAG_DATA = new JSElementType("JSDOC_TAG_DATA"); - TokenSet OPERATIONS = TokenSet.create(LT, GT, LE, GE, EQEQ, NE, EQEQEQ, NEQEQ, PLUS, MINUS, MULT, PERC, PLUSPLUS, MINUSMINUS, LTLT, GTGT, GTGTGT, AND, OR, XOR, EXCL, TILDE, ANDAND, OROR, QUEST, - COLON, EQ, PLUSEQ, MINUSEQ, MULTEQ, PERCEQ, LTLTEQ, GTGTEQ, GTGTGTEQ, ANDEQ, OREQ, XOREQ, DIV, DIVEQ, MULTMULT, COMMA, IS_KEYWORD, AS_KEYWORD, OR_OR_EQ, AND_AND_EQ, QUEST_QUEST_EQ, - MULT_MULT_EQ); + TokenSet OPERATIONS = TokenSet.create( + LT, GT, LE, GE, + EQEQ, NE, EQEQEQ, NEQEQ, + PLUS, MINUS, MULT, PERC, + PLUSPLUS, MINUSMINUS, LTLT, + GTGT, GTGTGT, AND, OR, XOR, + EXCL, TILDE, ANDAND, OROR, + QUEST, COLON, EQ, PLUSEQ, + MINUSEQ, MULTEQ, PERCEQ, LTLTEQ, + GTGTEQ, GTGTGTEQ, ANDEQ, OREQ, + XOREQ, DIV, DIVEQ, MULTMULT, + COMMA, IS_KEYWORD, AS_KEYWORD, + OR_OR_EQ, AND_AND_EQ, QUEST_QUEST_EQ, MULT_MULT_EQ + ); TokenSet ASSOC_OPERATIONS = TokenSet.create(PLUS, MULT, AND, OR, XOR, OROR, ANDAND); - TokenSet ASSIGNMENT_OPERATIONS = TokenSet.create(EQ, PLUSEQ, MINUSEQ, MULTEQ, PERCEQ, LTLTEQ, GTGTEQ, GTGTGTEQ, ANDEQ, OREQ, XOREQ, DIVEQ, OR_OR_EQ, AND_AND_EQ, QUEST_QUEST_EQ, MULT_MULT_EQ); + TokenSet ASSIGNMENT_OPERATIONS = TokenSet.create( + EQ, + PLUSEQ, + MINUSEQ, + MULTEQ, + PERCEQ, + LTLTEQ, + GTGTEQ, + GTGTGTEQ, + ANDEQ, + OREQ, + XOREQ, + DIVEQ, + OR_OR_EQ, + AND_AND_EQ, + QUEST_QUEST_EQ, + MULT_MULT_EQ + ); TokenSet EQUALITY_OPERATIONS = TokenSet.create(EQEQ, NE, EQEQEQ, NEQEQ); @@ -311,11 +414,33 @@ public void parseScriptExpression(JavaScriptParsingContext context, final PsiBui TokenSet UNARY_OPERATIONS = TokenSet.create(PLUS, MINUS, PLUSPLUS, MINUSMINUS, TILDE, EXCL, TYPEOF_KEYWORD, VOID_KEYWORD, DELETE_KEYWORD); - TokenSet COMMENTS = TokenSet.create(END_OF_LINE_COMMENT, DOC_COMMENT, C_STYLE_COMMENT, XML_STYLE_COMMENT, CDATA_START, CDATA_END, XML_STYLE_COMMENT_START, - JavaScriptHighlightingLexer.getTagContentTokenType(), XML_TAG_WHITE_SPACE, JSP_TEXT, JSDOC_TAG_DATA); - - TokenSet MODIFIERS = TokenSet.create(PUBLIC_KEYWORD, STATIC_KEYWORD, OVERRIDE_KEYWORD, PROTECTED_KEYWORD, PRIVATE_KEYWORD, INTERNAL_KEYWORD, DYNAMIC_KEYWORD, FINAL_KEYWORD, NATIVE_KEYWORD, - VIRTUAL_KEYWORD, EXPORT_KEYWORD); + TokenSet COMMENTS = TokenSet.create( + C_STYLE_COMMENT, + CDATA_START, + CDATA_END, + DOC_COMMENT, + END_OF_LINE_COMMENT, + JavaScriptHighlightingLexer.getTagContentTokenType(), + JSDOC_TAG_DATA, + JSP_TEXT, + XML_STYLE_COMMENT, + XML_STYLE_COMMENT_START, + XML_TAG_WHITE_SPACE + ); + + TokenSet MODIFIERS = TokenSet.create( + DYNAMIC_KEYWORD, + EXPORT_KEYWORD, + FINAL_KEYWORD, + INTERNAL_KEYWORD, + NATIVE_KEYWORD, + OVERRIDE_KEYWORD, + PROTECTED_KEYWORD, + PRIVATE_KEYWORD, + PUBLIC_KEYWORD, + STATIC_KEYWORD, + VIRTUAL_KEYWORD + ); TokenSet ACCESS_MODIFIERS = TokenSet.create(PUBLIC_KEYWORD, PROTECTED_KEYWORD, PRIVATE_KEYWORD, INTERNAL_KEYWORD); @@ -341,7 +466,8 @@ protected ASTNode doParseContents(@Nonnull ASTNode chameleon, @Nonnull PsiElemen final Language languageForParser = getLanguageForParser(psi); final LanguageVersion tempLanguageVersion = chameleon.getUserData(LanguageVersion.KEY); final LanguageVersion languageVersion = tempLanguageVersion == null ? psi.getLanguageVersion() : tempLanguageVersion; - final PsiBuilder builder = PsiBuilderFactory.getInstance().createBuilder(project, chameleon, createLexer(), languageForParser, languageVersion, chameleon.getChars()); + final PsiBuilder builder = PsiBuilderFactory.getInstance() + .createBuilder(project, chameleon, createLexer(), languageForParser, languageVersion, chameleon.getChars()); final JavaScriptParser parser = (JavaScriptParser) ParserDefinition.forLanguage(languageForParser).createParser(languageVersion); JavaScriptParsingContext parsingContext = parser.createParsingContext(); diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSMutablyNamedIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSMutablyNamedIntention.java index 37fe5a12..586bd636 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSMutablyNamedIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSMutablyNamedIntention.java @@ -32,7 +32,7 @@ public abstract class JSMutablyNamedIntention extends JSIntention @Nonnull public String getText() { - if(myText != null) + if (myText != null) { return myText; } @@ -43,7 +43,7 @@ public String getText() public boolean isAvailable(@Nonnull Project project, Editor editor, @Nullable PsiElement node) { final PsiElement element = findMatchingElement(node); - if(element != null) + if (element != null) { myText = getTextForElement(element); return true; diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSAddBracesIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSAddBracesIntention.java index cc7b712e..d40cce39 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSAddBracesIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSAddBracesIntention.java @@ -27,7 +27,6 @@ import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.intention.JSMutablyNamedIntention; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; -import org.jetbrains.annotations.NonNls; @ExtensionImpl @IntentionMetaData( @@ -37,11 +36,6 @@ ) public class JSAddBracesIntention extends JSMutablyNamedIntention { - @NonNls - private static final String IF_KEYWORD = "if"; - @NonNls - private static final String ELSE_KEYWORD = "else"; - @Override @Nonnull protected JSElementPredicate getElementPredicate() @@ -50,6 +44,7 @@ protected JSElementPredicate getElementPredicate() } @Override + @RequiredReadAction protected String getTextForElement(PsiElement element) { final JSElement parent = (JSElement) element.getParent(); @@ -57,12 +52,11 @@ protected String getTextForElement(PsiElement element) assert (parent != null); - if(parent instanceof JSIfStatement) + if (parent instanceof JSIfStatement ifStatement) { - final JSIfStatement ifStatement = (JSIfStatement) parent; final JSStatement elseBranch = ifStatement.getElse(); - keyword = (element.equals(elseBranch) ? ELSE_KEYWORD : IF_KEYWORD); + keyword = (element.equals(elseBranch) ? "else" : "if"); } else { @@ -79,11 +73,10 @@ protected String getTextForElement(PsiElement element) @RequiredReadAction protected void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException { - if(!(element instanceof JSStatement)) + if (!(element instanceof JSStatement statement)) { return; } - final JSStatement statement = (JSStatement) element; final JSElement parent = (JSElement) element.getParent(); final String text = element.getText(); String newText = parent.getLastChild() instanceof PsiComment @@ -95,23 +88,12 @@ protected void processIntention(@Nonnull PsiElement element) throws IncorrectOpe private static class AddBracesPredicate implements JSElementPredicate { @Override - public boolean satisfiedBy(@Nonnull PsiElement element) - { - if(!(element instanceof JSStatement)) - { - return false; - } - if(element instanceof JSBlockStatement) - { - return false; - } - - final PsiElement parentElement = element.getParent(); - if (!(parentElement instanceof JSElement)) - { + public boolean satisfiedBy(@Nonnull PsiElement element) { + if (!(element instanceof JSStatement) + || element instanceof JSBlockStatement + || !(element.getParent() instanceof JSElement parent)) { return false; } - final JSElement parent = (JSElement) parentElement; if (parent instanceof JSIfStatement ifStatement) { diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSRemoveBracesIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSRemoveBracesIntention.java index bbf03e96..7066c59a 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSRemoveBracesIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSRemoveBracesIntention.java @@ -22,13 +22,11 @@ import consulo.language.psi.PsiComment; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.intention.JSMutablyNamedIntention; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; -import org.jetbrains.annotations.NonNls; - -import jakarta.annotation.Nonnull; @ExtensionImpl @IntentionMetaData( @@ -38,11 +36,6 @@ ) public class JSRemoveBracesIntention extends JSMutablyNamedIntention { - @NonNls - private static final String IF_KEYWORD = "if"; - @NonNls - private static final String ELSE_KEYWORD = "else"; - @Override @Nonnull protected JSElementPredicate getElementPredicate() @@ -59,12 +52,11 @@ protected String getTextForElement(PsiElement element) assert (parent != null); - if(parent instanceof JSIfStatement) + if (parent instanceof JSIfStatement ifStatement) { - final JSIfStatement ifStatement = (JSIfStatement) parent; final JSStatement elseBranch = ifStatement.getElse(); - keyword = element.equals(elseBranch) ? ELSE_KEYWORD : IF_KEYWORD; + keyword = element.equals(elseBranch) ? "else" : "if"; } else { @@ -126,26 +118,21 @@ public static class RemoveBracesPredicate implements JSElementPredicate @Override public boolean satisfiedBy(@Nonnull PsiElement element) { - if (!(element instanceof JSBlockStatement)) + if (!(element instanceof JSBlockStatement blockStatement)) { return false; } - final JSBlockStatement blockStatement = (JSBlockStatement) element; final PsiElement parent = blockStatement.getParent(); - if(!(parent instanceof JSIfStatement || - parent instanceof JSWhileStatement || - parent instanceof JSDoWhileStatement || - parent instanceof JSForStatement || - parent instanceof JSForInStatement)) - { - return false; + return (parent instanceof JSIfStatement || parent instanceof JSWhileStatement || parent instanceof JSDoWhileStatement + || parent instanceof JSForStatement || parent instanceof JSForInStatement) + && isSingleNonVarStatement(blockStatement.getStatements()); } - final JSStatement[] statements = blockStatement.getStatements(); - - return (statements.length == 1 && !(statements[0] instanceof JSVarStatement)); + private boolean isSingleNonVarStatement(JSStatement[] statements) + { + return statements.length == 1 && !(statements[0] instanceof JSVarStatement); } } } \ No newline at end of file diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToEndOfLineCommentIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToEndOfLineCommentIntention.java index 193873c3..69dc738f 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToEndOfLineCommentIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToEndOfLineCommentIntention.java @@ -16,6 +16,7 @@ package org.intellij.idea.lang.javascript.intention.comment; import com.intellij.lang.javascript.JSTokenTypes; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; import consulo.language.editor.intention.IntentionMetaData; @@ -23,13 +24,12 @@ import consulo.language.psi.PsiElement; import consulo.language.psi.PsiWhiteSpace; import consulo.language.util.IncorrectOperationException; +import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import org.intellij.idea.lang.javascript.psiutil.TreeUtil; -import jakarta.annotation.Nonnull; - @ExtensionImpl @IntentionMetaData( ignoreId = "JSChangeToEndOfLineCommentIntention", @@ -46,6 +46,7 @@ protected JSElementPredicate getElementPredicate() } @Override + @RequiredReadAction public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException { final PsiElement parent = element.getParent(); @@ -78,7 +79,7 @@ private static String[] buildCommentStrings(String[] lines) { int lastNonEmtpyLine = -1; - for(int i = lines.length - 1; i >= 0 && lastNonEmtpyLine == -1; i--) + for (int i = lines.length - 1; i >= 0 && lastNonEmtpyLine == -1; i--) { final String line = lines[i].trim(); if (!line.isEmpty()) @@ -124,6 +125,7 @@ else if (line.startsWith("*")) private static class CStyleCommentPredicate implements JSElementPredicate { @Override + @RequiredReadAction public boolean satisfiedBy(@Nonnull PsiElement element) { if (!(element instanceof PsiComment)) diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSMoveCommentToSeparateLineIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSMoveCommentToSeparateLineIntention.java index 0b70d805..540e80ff 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSMoveCommentToSeparateLineIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSMoveCommentToSeparateLineIntention.java @@ -16,6 +16,7 @@ package org.intellij.idea.lang.javascript.intention.comment; import com.intellij.lang.javascript.JSTokenTypes; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; import consulo.language.editor.intention.IntentionMetaData; @@ -30,10 +31,11 @@ import org.intellij.idea.lang.javascript.psiutil.TreeUtil; @ExtensionImpl -@IntentionMetaData(ignoreId = "JSMoveCommentToSeparateLineIntention", categories = { - "JavaScript", - "Comments" -}, fileExtensions = "js") +@IntentionMetaData( + ignoreId = "JSMoveCommentToSeparateLineIntention", + categories = {"JavaScript", "Comments"}, + fileExtensions = "js" +) public class JSMoveCommentToSeparateLineIntention extends JSIntention { @Override @@ -44,20 +46,21 @@ protected JSElementPredicate getElementPredicate() } @Override + @RequiredReadAction public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException { final PsiComment selectedComment = (PsiComment) element; PsiElement elementToCheck = selectedComment; final PsiWhiteSpace whiteSpace; - while(true) + while (true) { elementToCheck = TreeUtil.getPrevLeaf(elementToCheck); - if(elementToCheck == null) + if (elementToCheck == null) { return; } - if(isLineBreakWhiteSpace(elementToCheck)) + if (isLineBreakWhiteSpace(elementToCheck)) { whiteSpace = (PsiWhiteSpace) elementToCheck; break; @@ -70,56 +73,52 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat JSElementFactory.removeElement(selectedComment); } + @RequiredReadAction private static boolean isLineBreakWhiteSpace(PsiElement element) { - return (element instanceof PsiWhiteSpace && - containsLineBreak(element.getText())); + return (element instanceof PsiWhiteSpace && containsLineBreak(element.getText())); } private static boolean containsLineBreak(String text) { - return (text.indexOf((int) '\n') >= 0 || - text.indexOf((int) '\r') >= 0); + return (text.indexOf((int) '\n') >= 0 || text.indexOf((int) '\r') >= 0); } private static class CommentOnLineWithSourcePredicate implements JSElementPredicate { - @Override + @RequiredReadAction public boolean satisfiedBy(@Nonnull PsiElement element) { - if(!(element instanceof PsiComment)) + if (!(element instanceof PsiComment)) { return false; } final PsiComment comment = (PsiComment) element; final IElementType type = comment.getTokenType(); - if(!(JSTokenTypes.C_STYLE_COMMENT.equals(type) || - JSTokenTypes.END_OF_LINE_COMMENT.equals(type))) + if (!(JSTokenTypes.C_STYLE_COMMENT.equals(type) || JSTokenTypes.END_OF_LINE_COMMENT.equals(type))) { return false; // can't move JSP comments } final PsiElement prevSibling = TreeUtil.getPrevLeaf(element); - if(!(prevSibling instanceof PsiWhiteSpace)) + if (!(prevSibling instanceof PsiWhiteSpace)) { return true; } final String prevSiblingText = prevSibling.getText(); - if(prevSiblingText.indexOf('\n') < 0 && - prevSiblingText.indexOf('\r') < 0) + if (prevSiblingText.indexOf('\n') < 0 && prevSiblingText.indexOf('\r') < 0) { return true; } final PsiElement nextSibling = TreeUtil.getNextLeaf(element); - if(!(nextSibling instanceof PsiWhiteSpace)) + if (!(nextSibling instanceof PsiWhiteSpace)) { return true; } final String nextSiblingText = nextSibling.getText(); - return (nextSiblingText.indexOf('\n') < 0 && - nextSiblingText.indexOf('\r') < 0); + return (nextSiblingText.indexOf('\n') < 0 && nextSiblingText.indexOf('\r') < 0); } } } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipIfIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipIfIntention.java index 64f9bb2b..8cdaf833 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipIfIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipIfIntention.java @@ -19,32 +19,26 @@ import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.lang.javascript.psi.JSIfStatement; import com.intellij.lang.javascript.psi.JSStatement; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; import org.intellij.idea.lang.javascript.psiutil.BoolUtils; import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; -import org.jetbrains.annotations.NonNls; - -import jakarta.annotation.Nonnull; @ExtensionImpl -@IntentionMetaData(ignoreId = "JSFlipIfIntention", categories = { - "JavaScript", - "Conditional" -}, fileExtensions = "js") +@IntentionMetaData( + ignoreId = "JSFlipIfIntention", + categories = {"JavaScript", "Conditional"}, + fileExtensions = "js" +) public class JSFlipIfIntention extends JSIntention { - - @NonNls - private static final String IF_PREFIX = "if ("; - @NonNls - private static final String ELSE_KEYWORD = "else "; - @Override @Nonnull public JSElementPredicate getElementPredicate() @@ -53,6 +47,7 @@ public JSElementPredicate getElementPredicate() } @Override + @RequiredReadAction public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException { final JSIfStatement exp = (JSIfStatement) element; @@ -60,13 +55,12 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat final JSStatement thenBranch = exp.getThen(); final JSStatement elseBranch = exp.getElse(); final String negatedText = BoolUtils.getNegatedExpressionText(condition); - final boolean emptyThenBranch = (thenBranch == null || - (thenBranch instanceof JSBlockStatement && - ((JSBlockStatement) thenBranch).getStatements().length == 0)); - final String thenText = (emptyThenBranch ? "" : ELSE_KEYWORD + thenBranch.getText()); - final String elseText = ((elseBranch == null) ? "{}" : elseBranch.getText()); + final boolean emptyThenBranch = + (thenBranch == null || (thenBranch instanceof JSBlockStatement blockStatement && blockStatement.getStatements().length == 0)); + final String thenText = emptyThenBranch ? "" : "else " + thenBranch.getText(); + final String elseText = elseBranch == null ? "{}" : elseBranch.getText(); - final String newStatement = IF_PREFIX + negatedText + ')' + elseText + thenText; + final String newStatement = "if (" + negatedText + ')' + elseText + thenText; JSElementFactory.replaceStatement(exp, newStatement); } @@ -76,15 +70,9 @@ private static class FlipIfPredicate implements JSElementPredicate @Override public boolean satisfiedBy(@Nonnull PsiElement element) { - if(!(element instanceof JSIfStatement) || - ErrorUtil.containsError(element)) - { - return false; - } - - final JSIfStatement condition = (JSIfStatement) element; - - return (condition.getCondition() != null); + return element instanceof JSIfStatement ifStatement + && !ErrorUtil.containsError(ifStatement) + && ifStatement.getCondition() != null; } } } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSRemoveConditionalIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSRemoveConditionalIntention.java index 9d97e5f6..c8f48b92 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSRemoveConditionalIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSRemoveConditionalIntention.java @@ -17,6 +17,7 @@ import com.intellij.lang.javascript.psi.JSConditionalExpression; import com.intellij.lang.javascript.psi.JSExpression; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; @@ -31,10 +32,11 @@ import jakarta.annotation.Nonnull; @ExtensionImpl -@IntentionMetaData(ignoreId = "JSRemoveConditionalIntention", categories = { - "JavaScript", - "Conditional" -}, fileExtensions = "js") +@IntentionMetaData( + ignoreId = "JSRemoveConditionalIntention", + categories = {"JavaScript", "Conditional"}, + fileExtensions = "js" +) public class JSRemoveConditionalIntention extends JSIntention { @Override @@ -45,6 +47,7 @@ public JSElementPredicate getElementPredicate() } @Override + @RequiredReadAction public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException { final JSConditionalExpression exp = (JSConditionalExpression) element; @@ -56,33 +59,26 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat final String thenExpressionText = thenExpression.getText(); final String newExpression; - newExpression = (thenExpressionText.equals(BoolUtils.TRUE) - ? condition.getText() - : BoolUtils.getNegatedExpressionText(condition)); + newExpression = thenExpressionText.equals(BoolUtils.TRUE) + ? condition.getText() + : BoolUtils.getNegatedExpressionText(condition); JSElementFactory.replaceExpression(exp, newExpression); } private static class RemoveConditionalPredicate implements JSElementPredicate { @Override + @RequiredReadAction public boolean satisfiedBy(@Nonnull PsiElement element) { - if(!(element instanceof JSConditionalExpression)) - { - return false; - } - if(ErrorUtil.containsError(element)) - { + if (!(element instanceof JSConditionalExpression condition && !ErrorUtil.containsError(element))) { return false; } - final JSConditionalExpression condition = (JSConditionalExpression) element; final JSExpression thenExpression = ParenthesesUtils.stripParentheses(condition.getThen()); final JSExpression elseExpression = ParenthesesUtils.stripParentheses(condition.getElse()); - if(condition.getCondition() == null || - thenExpression == null || - elseExpression == null) + if (condition.getCondition() == null || thenExpression == null || elseExpression == null) { return false; } @@ -90,8 +86,8 @@ public boolean satisfiedBy(@Nonnull PsiElement element) final String thenText = thenExpression.getText(); final String elseText = elseExpression.getText(); - return ((BoolUtils.TRUE.equals(elseText) && BoolUtils.FALSE.equals(thenText)) || - (BoolUtils.TRUE.equals(thenText) && BoolUtils.FALSE.equals(elseText))); + return (BoolUtils.TRUE.equals(elseText) && BoolUtils.FALSE.equals(thenText)) + || (BoolUtils.TRUE.equals(thenText) && BoolUtils.FALSE.equals(elseText)); } } } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSReplaceConditionalWithIfIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSReplaceConditionalWithIfIntention.java index 2b3c17d3..6e0f566e 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSReplaceConditionalWithIfIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSReplaceConditionalWithIfIntention.java @@ -27,10 +27,11 @@ import jakarta.annotation.Nonnull; @ExtensionImpl -@IntentionMetaData(ignoreId = "JSReplaceConditionalWithIfIntention", categories = { - "JavaScript", - "Conditional" -}, fileExtensions = "js") +@IntentionMetaData( + ignoreId = "JSReplaceConditionalWithIfIntention", + categories = {"JavaScript", "Conditional"}, + fileExtensions = "js" +) public class JSReplaceConditionalWithIfIntention extends JSIntention { @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSMergeDeclarationAndInitializationIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSMergeDeclarationAndInitializationIntention.java index c7f0fc62..8aa322f1 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSMergeDeclarationAndInitializationIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSMergeDeclarationAndInitializationIntention.java @@ -16,6 +16,7 @@ package org.intellij.idea.lang.javascript.intention.initialization; import com.intellij.lang.javascript.psi.*; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; @@ -26,20 +27,17 @@ import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; import org.intellij.idea.lang.javascript.psiutil.FindReferenceUtil; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; -import org.jetbrains.annotations.NonNls; import java.util.Iterator; @ExtensionImpl -@IntentionMetaData(ignoreId = "JSMergeDeclarationAndInitializationIntention", categories = { - "JavaScript", - "Declaration" -}, fileExtensions = "js") +@IntentionMetaData( + ignoreId = "JSMergeDeclarationAndInitializationIntention", + categories = {"JavaScript", "Declaration"}, + fileExtensions = "js" +) public class JSMergeDeclarationAndInitializationIntention extends JSIntention { - @NonNls - private static final String JS_VAR_PREFIX = "var "; - @Override @Nonnull protected JSElementPredicate getElementPredicate() @@ -48,6 +46,7 @@ protected JSElementPredicate getElementPredicate() } @Override + @RequiredReadAction public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException { assert (element instanceof JSVarStatement); @@ -55,39 +54,37 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat final JSVarStatement varStatement = (JSVarStatement) element; StringBuilder declarationBuffer = new StringBuilder(); - for(final JSVariable variable : varStatement.getVariables()) + for (final JSVariable variable : varStatement.getVariables()) { - if(variable.hasInitializer()) + if (variable.hasInitializer()) { - declarationBuffer.append((declarationBuffer.length() == 0) ? JS_VAR_PREFIX : ", ") - .append(variable.getName()) - .append(" = ") - .append(variable.getInitializer().getText()); + declarationBuffer.append(declarationBuffer.isEmpty() ? "var " : ", ") + .append(variable.getName()).append(" = ").append(variable.getInitializer().getText()); } else { - final Iterator referenceIterator = FindReferenceUtil.getReferencesAfter(variable, variable.getTextRange().getEndOffset()).iterator(); + final Iterator referenceIterator = + FindReferenceUtil.getReferencesAfter(variable, variable.getTextRange().getEndOffset()).iterator(); final JSReferenceExpression firstReference = (JSReferenceExpression) (referenceIterator.hasNext() ? referenceIterator.next() : null); - // final JSReferenceExpression firstReference = FindReferenceUtil.findFirstReference(variable); + //final JSReferenceExpression firstReference = FindReferenceUtil.findFirstReference(variable); - if(firstReference != null && - firstReference.getParent() instanceof JSDefinitionExpression) + if (firstReference != null && firstReference.getParent() instanceof JSDefinitionExpression definitionExpression) { - final JSExpressionStatement assignmentStatement = (JSExpressionStatement) firstReference.getParent().getParent().getParent(); + final JSExpressionStatement assignmentStatement = (JSExpressionStatement) definitionExpression.getParent().getParent(); // Replace assignment statement by var statement. - JSElementFactory.replaceStatement(assignmentStatement, JS_VAR_PREFIX + assignmentStatement.getText()); + JSElementFactory.replaceStatement(assignmentStatement, "var " + assignmentStatement.getText()); } else { - declarationBuffer.append((declarationBuffer.length() == 0) ? JS_VAR_PREFIX : ", ") + declarationBuffer.append((declarationBuffer.length() == 0) ? "var " : ", ") .append(variable.getName()); } } } // Do replacement. - if(declarationBuffer.length() == 0) + if (declarationBuffer.length() == 0) { JSElementFactory.removeElement(varStatement); } @@ -103,30 +100,26 @@ private static class Predicate implements JSElementPredicate @Override public boolean satisfiedBy(@Nonnull PsiElement element) { - if(!(element instanceof JSVarStatement)) - { - return false; - } - final JSVarStatement varStatement = (JSVarStatement) element; - if(ErrorUtil.containsError(varStatement)) - { + if (!(element instanceof JSVarStatement varStatement && !ErrorUtil.containsError(varStatement))) { return false; } - for(JSVariable variable : varStatement.getVariables()) + for (JSVariable variable : varStatement.getVariables()) { - if(!variable.hasInitializer()) - { - final Iterator referenceIterator = FindReferenceUtil.getReferencesAfter(variable, variable.getTextRange().getEndOffset()).iterator(); - final JSReferenceExpression firstReference = (JSReferenceExpression) (referenceIterator.hasNext() ? referenceIterator.next() : null); + if (variable.hasInitializer()) { + continue; + } - if(firstReference != null && - firstReference.getParent() instanceof JSDefinitionExpression && - firstReference.getParent().getParent() instanceof JSAssignmentExpression && - firstReference.getParent().getParent().getParent() instanceof JSExpressionStatement) - { - return true; - } + final Iterator referenceIterator = + FindReferenceUtil.getReferencesAfter(variable, variable.getTextRange().getEndOffset()).iterator(); + final JSReferenceExpression firstReference = (JSReferenceExpression) (referenceIterator.hasNext() ? referenceIterator.next() : null); + + if (firstReference != null + && firstReference.getParent() instanceof JSDefinitionExpression definitionExpression + && definitionExpression.getParent() instanceof JSAssignmentExpression assignmentExpression + && assignmentExpression.getParent() instanceof JSExpressionStatement) + { + return true; } } return false; diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSSplitDeclarationAndInitializationIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSSplitDeclarationAndInitializationIntention.java index ee941fc5..4cbb4361 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSSplitDeclarationAndInitializationIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSSplitDeclarationAndInitializationIntention.java @@ -25,13 +25,13 @@ import consulo.language.psi.PsiElement; import consulo.language.psi.PsiFile; import consulo.language.util.IncorrectOperationException; +import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import org.jetbrains.annotations.NonNls; -import jakarta.annotation.Nonnull; import java.util.ArrayList; import java.util.List; @@ -103,7 +103,7 @@ public boolean satisfiedBy(@Nonnull PsiElement element) { PsiElement elementParent; - if(!(element instanceof JSVarStatement) + if (!(element instanceof JSVarStatement) || (elementParent = element.getParent()) instanceof JSForStatement || elementParent instanceof JSClass ) diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForInLoopsIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForInLoopsIntention.java index 2f6c26a2..1a8d37f3 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForInLoopsIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForInLoopsIntention.java @@ -20,7 +20,7 @@ import com.intellij.lang.javascript.psi.JSForInStatement; import com.intellij.lang.javascript.psi.JSStatement; import com.intellij.lang.javascript.psi.JSVarStatement; -import consulo.annotation.component.ExtensionImpl; +import consulo.annotation.access.RequiredReadAction;import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.ASTNode; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; @@ -31,23 +31,17 @@ import org.intellij.idea.lang.javascript.psiutil.EquivalenceChecker; import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; -import org.jetbrains.annotations.NonNls; import jakarta.annotation.Nonnull; @ExtensionImpl -@IntentionMetaData(ignoreId = "JSMergeParallelForInLoopsIntention", categories = { - "JavaScript", - "Control Flow" -}, fileExtensions = "js") +@IntentionMetaData( + ignoreId = "JSMergeParallelForInLoopsIntention", + categories = {"JavaScript", "Control Flow"}, + fileExtensions = "js" +) public class JSMergeParallelForInLoopsIntention extends JSIntention { - - @NonNls - private static final String FOR_IN_PREFIX = "for ("; - @NonNls - private static final String FOR_IN_COLLECTION_PREFIX = " in "; - @Override @Nonnull public JSElementPredicate getElementPredicate() @@ -56,6 +50,7 @@ public JSElementPredicate getElementPredicate() } @Override + @RequiredReadAction public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException { final PsiElement nextElement = JSElementFactory.getNonWhiteSpaceSibling(element, true); @@ -71,9 +66,8 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat JSElementFactory.removeElement(secondStatement); } - private void mergeForInStatements(StringBuilder statementBuffer, - JSForInStatement firstStatement, - JSForInStatement secondStatement) + @RequiredReadAction + private void mergeForInStatements(StringBuilder statementBuffer, JSForInStatement firstStatement, JSForInStatement secondStatement) { final JSExpression variableExpression = getVariableExpression(firstStatement); final JSVarStatement declaration = firstStatement.getDeclarationStatement(); @@ -81,11 +75,11 @@ private void mergeForInStatements(StringBuilder statementBuffer, final JSStatement firstBody = firstStatement.getBody(); final JSStatement secondBody = secondStatement.getBody(); - statementBuffer.append(FOR_IN_PREFIX) - .append((declaration == null) ? variableExpression.getText() : declaration.getText()) - .append(FOR_IN_COLLECTION_PREFIX) - .append(collectionExpression.getText()) - .append(')'); + statementBuffer.append("for (") + .append((declaration == null) ? variableExpression.getText() : declaration.getText()) + .append(" in ") + .append(collectionExpression.getText()) + .append(')'); ControlFlowUtils.appendStatementsInSequence(statementBuffer, firstBody, secondBody); } @@ -94,59 +88,44 @@ private static class MergeParallelForInLoopsPredicate implements JSElementPredic @Override public boolean satisfiedBy(@Nonnull PsiElement element) { - if(!(element instanceof JSForInStatement) || ErrorUtil.containsError(element)) + if (!(element instanceof JSForInStatement forInStatement && !ErrorUtil.containsError(element))) { return false; } final PsiElement nextStatement = JSElementFactory.getNonWhiteSpaceSibling(element, true); - if(!(nextStatement instanceof JSForInStatement) || - ErrorUtil.containsError(nextStatement)) - { - return false; - } - - return forInStatementsCanBeMerged((JSForInStatement) element, - (JSForInStatement) nextStatement); + return nextStatement instanceof JSForInStatement nextForInStatement + && !ErrorUtil.containsError(nextStatement) + && forInStatementsCanBeMerged(forInStatement, nextForInStatement); } - public static boolean forInStatementsCanBeMerged(JSForInStatement statement1, - JSForInStatement statement2) + public static boolean forInStatementsCanBeMerged(JSForInStatement statement1, JSForInStatement statement2) { - - // final JSExpression firstVarExpression = statement1.getVariableExpression(); - // final JSExpression secondVarExpression = statement2.getVariableExpression(); final JSExpression firstVarExpression = getVariableExpression(statement1); final JSExpression secondVarExpression = getVariableExpression(statement2); - if(!EquivalenceChecker.expressionsAreEquivalent(firstVarExpression, - secondVarExpression)) + if (!EquivalenceChecker.expressionsAreEquivalent(firstVarExpression, secondVarExpression)) { return false; } final JSVarStatement firstDeclaration = statement1.getDeclarationStatement(); final JSVarStatement secondDeclaration = statement2.getDeclarationStatement(); - if(!EquivalenceChecker.statementsAreEquivalent(firstDeclaration, - secondDeclaration)) + if (!EquivalenceChecker.statementsAreEquivalent(firstDeclaration, secondDeclaration)) { return false; } - // final JSExpression firstCollection = statement1.getCollectionExpression(); - // final JSExpression secondCollection = statement2.getCollectionExpression(); final JSExpression firstCollection = getCollectionExpression(statement1); final JSExpression secondCollection = getCollectionExpression(statement2); - if(!EquivalenceChecker.expressionsAreEquivalent(firstCollection, - secondCollection)) + if (!EquivalenceChecker.expressionsAreEquivalent(firstCollection, secondCollection)) { return false; } final JSStatement firstBody = statement1.getBody(); final JSStatement secondBody = statement2.getBody(); - return (firstBody == null || secondBody == null || - ControlFlowUtils.canBeMerged(firstBody, secondBody)); + return firstBody == null || secondBody == null || ControlFlowUtils.canBeMerged(firstBody, secondBody); } } @@ -159,18 +138,18 @@ public static boolean forInStatementsCanBeMerged(JSForInStatement statement1, private static JSExpression getCollectionExpression(JSForInStatement forInStatement) { final ASTNode statementNode = forInStatement.getNode(); - ASTNode child = ((statementNode == null) ? null : statementNode.getFirstChildNode()); + ASTNode child = (statementNode == null) ? null : statementNode.getFirstChildNode(); boolean inPassed = false; - while(child != null) + while (child != null) { - if(child.getElementType() == JSTokenTypes.IN_KEYWORD) + if (child.getElementType() == JSTokenTypes.IN_KEYWORD) { inPassed = true; } - if(inPassed && child.getPsi() instanceof JSExpression) + if (inPassed && child.getPsi() instanceof JSExpression childExpression) { - return (JSExpression) child.getPsi(); + return childExpression; } child = child.getTreeNext(); } @@ -187,23 +166,22 @@ private static JSExpression getCollectionExpression(JSForInStatement forInStatem private static JSExpression getVariableExpression(JSForInStatement forInStatement) { final ASTNode statementNode = forInStatement.getNode(); - ASTNode child = ((statementNode == null) ? null : statementNode.getFirstChildNode()); + ASTNode child = (statementNode == null) ? null : statementNode.getFirstChildNode(); - while(child != null) + while (child != null) { - if(child.getElementType() == JSTokenTypes.IN_KEYWORD) + if (child.getElementType() == JSTokenTypes.IN_KEYWORD) { return null; } - if(child.getPsi() instanceof JSExpression) + if (child.getPsi() instanceof JSExpression childExpression) { - return (JSExpression) child.getPsi(); + return childExpression; } child = child.getTreeNext(); } return null; } - } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForLoopsIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForLoopsIntention.java index d0c6d1b4..d4da8774 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForLoopsIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForLoopsIntention.java @@ -19,6 +19,7 @@ import com.intellij.lang.javascript.psi.JSForStatement; import com.intellij.lang.javascript.psi.JSStatement; import com.intellij.lang.javascript.psi.JSVarStatement; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; @@ -29,20 +30,17 @@ import org.intellij.idea.lang.javascript.psiutil.EquivalenceChecker; import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; -import org.jetbrains.annotations.NonNls; import jakarta.annotation.Nonnull; @ExtensionImpl -@IntentionMetaData(ignoreId = "JSMergeParallelForLoopsIntention", categories = { - "JavaScript", - "Control Flow" -}, fileExtensions = "js") +@IntentionMetaData( + ignoreId = "JSMergeParallelForLoopsIntention", + categories = {"JavaScript", "Control Flow"}, + fileExtensions = "js" +) public class JSMergeParallelForLoopsIntention extends JSIntention { - @NonNls - private static final String FOR_STATEMENT_PREFIX = "for ("; - @Override @Nonnull public JSElementPredicate getElementPredicate() @@ -51,6 +49,7 @@ public JSElementPredicate getElementPredicate() } @Override + @RequiredReadAction public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException { final PsiElement nextElement = JSElementFactory.getNonWhiteSpaceSibling(element, true); @@ -66,9 +65,8 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat JSElementFactory.removeElement(secondStatement); } - private void mergeForStatements(StringBuilder statementBuffer, - JSForStatement firstStatement, - JSForStatement secondStatement) + @RequiredReadAction + private void mergeForStatements(StringBuilder statementBuffer, JSForStatement firstStatement, JSForStatement secondStatement) { final JSExpression initialization = firstStatement.getInitialization(); final JSVarStatement varStatement = firstStatement.getVarDeclaration(); @@ -77,13 +75,13 @@ private void mergeForStatements(StringBuilder statementBuffer, final JSStatement firstBody = firstStatement.getBody(); final JSStatement secondBody = secondStatement.getBody(); - statementBuffer.append(FOR_STATEMENT_PREFIX) - .append((initialization == null) ? varStatement.getText() : initialization.getText()) - .append(';') - .append(condition.getText()) - .append(';') - .append(update.getText()) - .append(')'); + statementBuffer.append("for (") + .append((initialization == null) ? varStatement.getText() : initialization.getText()) + .append(';') + .append(condition.getText()) + .append(';') + .append(update.getText()) + .append(')'); ControlFlowUtils.appendStatementsInSequence(statementBuffer, firstBody, secondBody); } @@ -92,61 +90,51 @@ private static class MergeParallelForLoopsPredicate implements JSElementPredicat @Override public boolean satisfiedBy(@Nonnull PsiElement element) { - if(!(element instanceof JSForStatement) || ErrorUtil.containsError(element)) + if (!(element instanceof JSForStatement forStatement && !ErrorUtil.containsError(forStatement))) { return false; } final PsiElement nextStatement = JSElementFactory.getNonWhiteSpaceSibling(element, true); - if(!(nextStatement instanceof JSForStatement) || ErrorUtil.containsError(nextStatement)) - { - return false; - } - - return forStatementsCanBeMerged((JSForStatement) element, - (JSForStatement) nextStatement); + return nextStatement instanceof JSForStatement nextForStatement + && !ErrorUtil.containsError(nextStatement) + && forStatementsCanBeMerged(forStatement, nextForStatement); } - public static boolean forStatementsCanBeMerged(JSForStatement statement1, - JSForStatement statement2) + public static boolean forStatementsCanBeMerged(JSForStatement statement1, JSForStatement statement2) { final JSExpression firstInitialization = statement1.getInitialization(); final JSExpression secondInitialization = statement2.getInitialization(); - if(!EquivalenceChecker.expressionsAreEquivalent(firstInitialization, - secondInitialization)) + if (!EquivalenceChecker.expressionsAreEquivalent(firstInitialization, secondInitialization)) { return false; } final JSVarStatement firstVarStatement = statement1.getVarDeclaration(); final JSVarStatement secondVarStatement = statement2.getVarDeclaration(); - if(!EquivalenceChecker.statementsAreEquivalent(firstVarStatement, - secondVarStatement)) + if (!EquivalenceChecker.statementsAreEquivalent(firstVarStatement, secondVarStatement)) { return false; } final JSExpression firstCondition = statement1.getCondition(); final JSExpression secondCondition = statement2.getCondition(); - if(!EquivalenceChecker.expressionsAreEquivalent(firstCondition, - secondCondition)) + if (!EquivalenceChecker.expressionsAreEquivalent(firstCondition, secondCondition)) { return false; } final JSExpression firstUpdate = statement1.getUpdate(); final JSExpression secondUpdate = statement2.getUpdate(); - if(!EquivalenceChecker.expressionsAreEquivalent(firstUpdate, - secondUpdate)) + if (!EquivalenceChecker.expressionsAreEquivalent(firstUpdate, secondUpdate)) { return false; } final JSStatement firstBody = statement1.getBody(); final JSStatement secondBody = statement2.getBody(); - return (firstBody == null || secondBody == null || - ControlFlowUtils.canBeMerged(firstBody, secondBody)); + return (firstBody == null || secondBody == null || ControlFlowUtils.canBeMerged(firstBody, secondBody)); } } } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToOctalIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToOctalIntention.java index ce16fbb8..6e5af520 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToOctalIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToOctalIntention.java @@ -16,17 +16,17 @@ package org.intellij.idea.lang.javascript.intention.number; import com.intellij.lang.javascript.psi.JSLiteralExpression; -import consulo.annotation.access.RequiredReadAction;import consulo.annotation.component.ExtensionImpl; +import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import org.intellij.idea.lang.javascript.psiutil.NumberUtil; -import jakarta.annotation.Nonnull; - @ExtensionImpl @IntentionMetaData( ignoreId = "JSConvertIntegerToOctalIntention", @@ -56,7 +56,7 @@ private static class ConvertIntegerToOctalPredicate implements JSElementPredicat @RequiredReadAction public boolean satisfiedBy(@Nonnull PsiElement element) { - if(!(element instanceof JSLiteralExpression)) + if (!(element instanceof JSLiteralExpression)) { return false; } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/parenthesis/JSRemoveUnnecessaryParenthesesIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/parenthesis/JSRemoveUnnecessaryParenthesesIntention.java index 10107559..cdd6c673 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/parenthesis/JSRemoveUnnecessaryParenthesesIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/parenthesis/JSRemoveUnnecessaryParenthesesIntention.java @@ -16,6 +16,7 @@ package org.intellij.idea.lang.javascript.intention.parenthesis; import com.intellij.lang.javascript.psi.*; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; import consulo.language.editor.intention.IntentionMetaData; @@ -30,10 +31,11 @@ import jakarta.annotation.Nonnull; @ExtensionImpl -@IntentionMetaData(ignoreId = "JSRemoveUnnecessaryParenthesesIntention", categories = { - "JavaScript", - "Other" -}, fileExtensions = "js") +@IntentionMetaData( + ignoreId = "JSRemoveUnnecessaryParenthesesIntention", + categories = {"JavaScript", "Other"}, + fileExtensions = "js" +) public class JSRemoveUnnecessaryParenthesesIntention extends JSIntention { @Override @@ -48,10 +50,9 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat { JSExpression exp = (JSExpression) element; - while(exp.getParent() instanceof JSExpression) + while (exp.getParent() instanceof JSExpression parentExp) { - exp = (JSExpression) exp.getParent(); - assert exp != null; + exp = parentExp; } final String newExpression = ParenthesesUtils.removeParentheses(exp); @@ -62,52 +63,41 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat private static class UnnecessaryParenthesesPredicate implements JSElementPredicate { @Override + @RequiredReadAction public boolean satisfiedBy(@Nonnull PsiElement element) { - if(!(element instanceof JSParenthesizedExpression)) + if (!(element instanceof JSParenthesizedExpression expression && !ErrorUtil.containsError(element))) { return false; } - if(ErrorUtil.containsError(element)) - { - return false; - } - - final JSParenthesizedExpression expression = (JSParenthesizedExpression) element; - final JSElement parent = (JSElement) expression.getParent(); - if(!(parent instanceof JSExpression)) + if (!(expression.getParent() instanceof JSExpression parentExpression)) { return true; } final JSExpression body = expression.getInnerExpression(); - if(body instanceof JSParenthesizedExpression) + if (body instanceof JSParenthesizedExpression) { return true; } - final int parentPrecendence = ParenthesesUtils.getPrecendence((JSExpression) parent); + final int parentPrecendence = ParenthesesUtils.getPrecendence(parentExpression); final int childPrecendence = ParenthesesUtils.getPrecendence(body); - if(parentPrecendence > childPrecendence) + if (parentPrecendence > childPrecendence) { - if(body instanceof JSFunctionExpression) - { - return false; - } - return true; + return !(body instanceof JSFunctionExpression); } - else if(parentPrecendence == childPrecendence) + else if (parentPrecendence == childPrecendence) { - if(parent instanceof JSBinaryExpression && - body instanceof JSBinaryExpression) + if (parentExpression instanceof JSBinaryExpression parentBinaryExpression + && body instanceof JSBinaryExpression bodyBinaryExpression) { - final IElementType parentOperator = ((JSBinaryExpression) parent).getOperationSign(); - final IElementType childOperator = ((JSBinaryExpression) body).getOperationSign(); - final JSBinaryExpression binaryExpression = (JSBinaryExpression) parent; - final JSExpression lhs = binaryExpression.getLOperand(); + final IElementType parentOperator = parentBinaryExpression.getOperationSign(); + final IElementType childOperator = bodyBinaryExpression.getOperationSign(); + final JSExpression lhs = parentBinaryExpression.getLOperand(); return (lhs.equals(expression) && parentOperator.equals(childOperator)); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSJoinConcatenatedStringLiteralsIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSJoinConcatenatedStringLiteralsIntention.java index 013a8a9b..668dc5bf 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSJoinConcatenatedStringLiteralsIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSJoinConcatenatedStringLiteralsIntention.java @@ -33,10 +33,11 @@ import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; @ExtensionImpl -@IntentionMetaData(ignoreId = "JSJoinConcatenatedStringLiteralsIntention", categories = { - "JavaScript", - "Other" -}, fileExtensions = "js") +@IntentionMetaData( + ignoreId = "JSJoinConcatenatedStringLiteralsIntention", + categories = {"JavaScript", "Other"}, + fileExtensions = "js" +) public class JSJoinConcatenatedStringLiteralsIntention extends JSIntention { @Override @@ -47,8 +48,8 @@ protected JSElementPredicate getElementPredicate() } @Override - public void processIntention(@Nonnull PsiElement element) - throws IncorrectOperationException + @RequiredReadAction + public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException { final JSBinaryExpression expression = (JSBinaryExpression) element; final JSExpression lhs = expression.getLOperand(); @@ -62,13 +63,13 @@ public void processIntention(@Nonnull PsiElement element) String rhsText = rhs.getText(); final String newExpression; - if(StringUtil.isSimpleQuoteStringLiteral(leftLiteral) && - StringUtil.isDoubleQuoteStringLiteral(rightLiteral)) + if (StringUtil.isSimpleQuoteStringLiteral(leftLiteral) + && StringUtil.isDoubleQuoteStringLiteral(rightLiteral)) { rhsText = JSDoubleToSingleQuotedStringIntention.changeQuotes(rhsText); } - else if(StringUtil.isDoubleQuoteStringLiteral(leftLiteral) && - StringUtil.isSimpleQuoteStringLiteral(rightLiteral)) + else if (StringUtil.isDoubleQuoteStringLiteral(leftLiteral) + && StringUtil.isSimpleQuoteStringLiteral(rightLiteral)) { rhsText = JSSingleToDoubleQuotedStringIntention.changeQuotes(rhsText); } @@ -80,41 +81,21 @@ else if(StringUtil.isDoubleQuoteStringLiteral(leftLiteral) && private static class StringConcatPredicate implements JSElementPredicate { @Override + @RequiredReadAction public boolean satisfiedBy(@Nonnull PsiElement element) { - if(!(element instanceof JSBinaryExpression)) - { - return false; - } - - final JSBinaryExpression expression = (JSBinaryExpression) element; - final IElementType sign = expression.getOperationSign(); - - if(!sign.equals(JSTokenTypes.PLUS)) - { - return false; - } - final JSExpression lhs = expression.getLOperand(); - final JSExpression rhs = expression.getROperand(); - - if(!isApplicableLiteral(lhs)) - { - return false; - } - if(!isApplicableLiteral(rhs)) - { - return false; - } - - return true; + return element instanceof JSBinaryExpression expression + && JSTokenTypes.PLUS.equals(expression.getOperationSign()) + && isApplicableLiteral(expression.getLOperand()) + && isApplicableLiteral(expression.getROperand()); } @RequiredReadAction private static boolean isApplicableLiteral(JSExpression lhs) { - return lhs != null && - lhs instanceof JSSimpleLiteralExpression && - JavaScriptTokenSets.STRING_LITERALS.contains(((JSSimpleLiteralExpression) lhs).getLiteralElementType()); + return lhs != null + && lhs instanceof JSSimpleLiteralExpression simpleLiteralExpression + && JavaScriptTokenSets.STRING_LITERALS.contains(simpleLiteralExpression.getLiteralElementType()); } } } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceIfWithSwitchIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceIfWithSwitchIntention.java index 847c76dc..14aeac2a 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceIfWithSwitchIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceIfWithSwitchIntention.java @@ -17,6 +17,7 @@ import com.intellij.lang.javascript.JSTokenTypes; import com.intellij.lang.javascript.psi.*; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; import consulo.language.editor.intention.IntentionMetaData; @@ -31,10 +32,11 @@ import java.util.*; @ExtensionImpl -@IntentionMetaData(ignoreId = "JSReplaceIfWithSwitchIntention", categories = { - "JavaScript", - "Control Flow" -}, fileExtensions = "js") +@IntentionMetaData( + ignoreId = "JSReplaceIfWithSwitchIntention", + categories = {"JavaScript", "Control Flow"}, + fileExtensions = "js" +) public class JSReplaceIfWithSwitchIntention extends JSIntention { @NonNls @@ -42,12 +44,8 @@ public class JSReplaceIfWithSwitchIntention extends JSIntention @NonNls private static final String DEFAULT_LABEL_NAME = "Label"; @NonNls - private static final String SWITCH_STATEMENT_PREFIX = "switch("; - @NonNls private static final String DEFAULT_CASE_CLAUSE_EXPRESSION = "default: "; @NonNls - private static final String CASE_EXPRESSION_PREFIX = "\ncase "; - @NonNls private static final String LABELED_BREAK_STATEMENT_PREFIX = "break "; @NonNls private static final String BREAK_STATEMENT = "\nbreak;"; @@ -60,8 +58,8 @@ public JSElementPredicate getElementPredicate() } @Override - public void processIntention(@Nonnull PsiElement element) - throws IncorrectOperationException + @RequiredReadAction + public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException { JSIfStatement ifStatement = (JSIfStatement) element.getParent(); @@ -71,23 +69,24 @@ public void processIntention(@Nonnull PsiElement element) JSStatement breakTarget = null; String labelString = ""; - if(ControlFlowUtils.statementContainsExitingBreak(ifStatement)) + if (ControlFlowUtils.statementContainsExitingBreak(ifStatement)) { JSElement ancestor = (JSElement) ifStatement.getParent(); - while(ancestor != null) + while (ancestor != null) { - if(ancestor instanceof JSForStatement || - ancestor instanceof JSForInStatement || - ancestor instanceof JSDoWhileStatement || - ancestor instanceof JSWhileStatement || - ancestor instanceof JSSwitchStatement) + if (ancestor instanceof JSForStatement + || ancestor instanceof JSForInStatement + || ancestor instanceof JSDoWhileStatement + || ancestor instanceof JSWhileStatement + || ancestor instanceof JSSwitchStatement) { breakTarget = (JSStatement) ancestor; break; } ancestor = (JSElement) ancestor.getParent(); } - if(breakTarget != null) + + if (breakTarget != null) { labelString = CaseUtil.findUniqueLabel(ifStatement, DEFAULT_LABEL_NAME); breaksNeedRelabeled = true; @@ -100,32 +99,27 @@ public void processIntention(@Nonnull PsiElement element) final StringBuilder switchStatementBuffer = new StringBuilder(1024); - switchStatementBuffer.append(SWITCH_STATEMENT_PREFIX) - .append(caseExpression.getText()) - .append(')') + switchStatementBuffer.append("switch(").append(caseExpression.getText()).append(')') .append('{'); - final List branches = new ArrayList(20); + final List branches = new ArrayList<>(20); - while(true) + while (true) { - final Set topLevelVariables = new HashSet(5); - final Set innerVariables = new HashSet(5); + final Set topLevelVariables = new HashSet<>(5); + final Set innerVariables = new HashSet<>(5); final JSExpression condition = ifStatement.getCondition(); final JSExpression[] labels = getValuesFromCondition(condition, caseExpression); final JSStatement thenBranch = ifStatement.getThen(); - DeclarationUtils.calculateVariablesDeclared(thenBranch, - topLevelVariables, - innerVariables, - true); + DeclarationUtils.calculateVariablesDeclared(thenBranch, topLevelVariables, innerVariables, true); final IfStatementBranch ifBranch = new IfStatementBranch(); ifBranch.setInnerVariables(innerVariables); ifBranch.setTopLevelVariables(topLevelVariables); ifBranch.setStatement(thenBranch); - for(final JSExpression label : labels) + for (final JSExpression label : labels) { ifBranch.addCondition(label.getText()); } @@ -133,21 +127,20 @@ public void processIntention(@Nonnull PsiElement element) final JSStatement elseBranch = ifStatement.getElse(); - if(elseBranch instanceof JSIfStatement) + if (elseBranch instanceof JSIfStatement elseIfStatement) { - ifStatement = (JSIfStatement) elseBranch; + ifStatement = elseIfStatement; } - else if(elseBranch == null) + else if (elseBranch == null) { break; } else { - final Set elseTopLevelVariables = new HashSet(5); - final Set elseInnerVariables = new HashSet(5); + final Set elseTopLevelVariables = new HashSet<>(5); + final Set elseInnerVariables = new HashSet<>(5); - DeclarationUtils.calculateVariablesDeclared(elseBranch, elseTopLevelVariables, - elseInnerVariables, true); + DeclarationUtils.calculateVariablesDeclared(elseBranch, elseTopLevelVariables, elseInnerVariables, true); final IfStatementBranch elseIfBranch = new IfStatementBranch(); @@ -160,30 +153,28 @@ else if(elseBranch == null) } } - for(IfStatementBranch branch : branches) + for (IfStatementBranch branch : branches) { boolean hasConflicts = false; - for(IfStatementBranch testBranch : branches) + for (IfStatementBranch testBranch : branches) { - if(branch.topLevelDeclarationsConfictWith(testBranch)) + if (branch.topLevelDeclarationsConfictWith(testBranch)) { hasConflicts = true; } } - final JSStatement branchStatement = (JSStatement) branch.getStatement(); + final JSStatement branchStatement = branch.getStatement(); - if(branch.isElse()) + if (branch.isElse()) { - dumpDefaultBranch(switchStatementBuffer, branchStatement, - hasConflicts, breaksNeedRelabeled, labelString); + dumpDefaultBranch(switchStatementBuffer, branchStatement, hasConflicts, breaksNeedRelabeled, labelString); } else { final List conditions = branch.getConditions(); - dumpBranch(switchStatementBuffer, conditions, branchStatement, - hasConflicts, breaksNeedRelabeled, labelString); + dumpBranch(switchStatementBuffer, conditions, branchStatement, hasConflicts, breaksNeedRelabeled, labelString); } } @@ -191,13 +182,12 @@ else if(elseBranch == null) final String switchStatementString = switchStatementBuffer.toString(); - if(breaksNeedRelabeled) + if (breaksNeedRelabeled) { final int length = switchStatementBuffer.length(); final StringBuilder out = new StringBuilder(length); - out.append(labelString) - .append(':'); + out.append(labelString).append(':'); termReplace(out, breakTarget, statementToReplace, switchStatementString); JSElementFactory.replaceStatement(breakTarget, out.toString()); } @@ -207,19 +197,17 @@ else if(elseBranch == null) } } - private static void termReplace(StringBuilder out, - JSElement target, - JSElement replace, - String stringToReplaceWith) + @RequiredReadAction + private static void termReplace(StringBuilder out, JSElement target, JSElement replace, String stringToReplaceWith) { - if(target.equals(replace)) + if (target.equals(replace)) { out.append(stringToReplaceWith); } - else if(target.getChildren().length != 0) + else if (target.getChildren().length != 0) { final JSElement[] children = (JSElement[]) target.getChildren(); - for(final JSElement child : children) + for (final JSElement child : children) { termReplace(out, child, replace, stringToReplaceWith); } @@ -231,97 +219,96 @@ else if(target.getChildren().length != 0) } } - private static JSExpression[] getValuesFromCondition(JSExpression condition, - JSExpression caseExpression) + @RequiredReadAction + private static JSExpression[] getValuesFromCondition(JSExpression condition, JSExpression caseExpression) { - final List values = new ArrayList(10); + final List values = new ArrayList<>(10); getValuesFromExpression(condition, caseExpression, values); return values.toArray(new JSExpression[values.size()]); } - private static void getValuesFromExpression(JSExpression expression, - JSExpression caseExpression, - List values) + @RequiredReadAction + private static void getValuesFromExpression(JSExpression expression, JSExpression caseExpression, List values) { - if(expression instanceof JSBinaryExpression) + if (expression instanceof JSBinaryExpression) { - final JSBinaryExpression binaryExpression = - (JSBinaryExpression) expression; + final JSBinaryExpression binaryExpression = (JSBinaryExpression) expression; final JSExpression lhs = binaryExpression.getLOperand(); final JSExpression rhs = binaryExpression.getROperand(); final IElementType tokenType = binaryExpression.getOperationSign(); - if(JSTokenTypes.OROR.equals(tokenType)) + if (JSTokenTypes.OROR.equals(tokenType)) { getValuesFromExpression(lhs, caseExpression, values); getValuesFromExpression(rhs, caseExpression, values); } + else if (EquivalenceChecker.expressionsAreEquivalent(caseExpression, rhs)) + { + values.add(lhs); + } else { - if(EquivalenceChecker.expressionsAreEquivalent(caseExpression, rhs)) - { - values.add(lhs); - } - else - { - values.add(rhs); - } + values.add(rhs); } } - else if(expression instanceof JSParenthesizedExpression) + else if (expression instanceof JSParenthesizedExpression parenExpression) { - final JSParenthesizedExpression parenExpression = (JSParenthesizedExpression) expression; final JSExpression contents = parenExpression.getInnerExpression(); getValuesFromExpression(contents, caseExpression, values); } } - private static void dumpBranch(StringBuilder switchStatementString, - List labels, - JSStatement body, - boolean wrap, - boolean renameBreaks, - String breakLabelName) + @RequiredReadAction + private static void dumpBranch( + StringBuilder switchStatementString, + List labels, + JSStatement body, + boolean wrap, + boolean renameBreaks, + String breakLabelName + ) { dumpLabels(switchStatementString, labels); dumpBody(switchStatementString, body, wrap, renameBreaks, breakLabelName); } - private static void dumpDefaultBranch(StringBuilder switchStatementString, - JSStatement body, - boolean wrap, - boolean renameBreaks, - String breakLabelName) + @RequiredReadAction + private static void dumpDefaultBranch( + StringBuilder switchStatementString, + JSStatement body, + boolean wrap, + boolean renameBreaks, + String breakLabelName + ) { switchStatementString.append(DEFAULT_CASE_CLAUSE_EXPRESSION); dumpBody(switchStatementString, body, wrap, renameBreaks, breakLabelName); } - private static void dumpLabels(StringBuilder switchStatementString, - List labels) + private static void dumpLabels(StringBuilder switchStatementString, List labels) { - for(String label : labels) + for (String label : labels) { - switchStatementString.append(CASE_EXPRESSION_PREFIX); - switchStatementString.append(label); - switchStatementString.append(": "); + switchStatementString.append("\ncase ").append(label).append(": "); } } - private static void dumpBody(StringBuilder switchStatementString, - JSStatement bodyStatement, - boolean wrap, - boolean renameBreaks, - String breakLabelName) + @RequiredReadAction + private static void dumpBody( + StringBuilder switchStatementString, + JSStatement bodyStatement, + boolean wrap, + boolean renameBreaks, + String breakLabelName + ) { - if(bodyStatement instanceof JSBlockStatement) + if (bodyStatement instanceof JSBlockStatement) { - if(wrap) + if (wrap) { - appendElement(switchStatementString, bodyStatement, - renameBreaks, breakLabelName); + appendElement(switchStatementString, bodyStatement, renameBreaks, breakLabelName); } else { @@ -332,41 +319,42 @@ private static void dumpBody(StringBuilder switchStatementString, } else { - if(wrap) + if (wrap) { switchStatementString.append('{'); - appendElement(switchStatementString, bodyStatement, - renameBreaks, breakLabelName); + appendElement(switchStatementString, bodyStatement, renameBreaks, breakLabelName); switchStatementString.append('}'); } else { - appendElement(switchStatementString, bodyStatement, - renameBreaks, breakLabelName); + appendElement(switchStatementString, bodyStatement, renameBreaks, breakLabelName); } } - if(ControlFlowUtils.statementMayCompleteNormally(bodyStatement)) + if (ControlFlowUtils.statementMayCompleteNormally(bodyStatement)) { switchStatementString.append(BREAK_STATEMENT); } switchStatementString.append('\n'); } - private static void appendElement(StringBuilder switchStatementString, - JSElement element, - boolean renameBreakElements, - String breakLabelString) + @RequiredReadAction + private static void appendElement( + StringBuilder switchStatementString, + JSElement element, + boolean renameBreakElements, + String breakLabelString + ) { final String text = element.getText(); - if(!renameBreakElements) + if (!renameBreakElements) { switchStatementString.append(text); } - else if(element instanceof JSBreakStatement) + else if (element instanceof JSBreakStatement breakStatement) { - final String identifier = ((JSBreakStatement) element).getLabel(); - if(identifier == null || identifier.length() == 0) + final String identifier = breakStatement.getLabel(); + if (identifier == null || identifier.isEmpty()) { switchStatementString.append(LABELED_BREAK_STATEMENT_PREFIX); switchStatementString.append(breakLabelString); @@ -377,14 +365,12 @@ else if(element instanceof JSBreakStatement) switchStatementString.append(text); } } - else if(element instanceof JSBlockStatement || - element instanceof JSIfStatement) + else if (element instanceof JSBlockStatement || element instanceof JSIfStatement) { final JSElement[] children = (JSElement[]) element.getChildren(); - for(final JSElement child : children) + for (final JSElement child : children) { - appendElement(switchStatementString, child, renameBreakElements, - breakLabelString); + appendElement(switchStatementString, child, renameBreakElements, breakLabelString); } } else @@ -395,34 +381,22 @@ else if(element instanceof JSBlockStatement || private static class IfToSwitchPredicate implements JSElementPredicate { - @Override + @RequiredReadAction public boolean satisfiedBy(@Nonnull PsiElement element) { - final PsiElement parent = element.getParent(); - if(!(parent instanceof JSIfStatement)) - { - return false; - } - final String text = element.getText(); - if(!IF_KEYWORD.equals(text)) - { - return false; - } - final JSIfStatement statement = (JSIfStatement) parent; - if(ErrorUtil.containsError(statement)) - { - return false; - } - return (CaseUtil.getCaseExpression(statement) != null); + return element.getParent() instanceof JSIfStatement statement + && IF_KEYWORD.equals(element.getText()) + && !ErrorUtil.containsError(statement) + && CaseUtil.getCaseExpression(statement) != null; } } private static class IfStatementBranch { - private final List conditions = new ArrayList(3); - private Set topLevelVariables = new HashSet(3); - private Set innerVariables = new HashSet(3); + private final List conditions = new ArrayList<>(3); + private Set topLevelVariables = new HashSet<>(3); + private Set innerVariables = new HashSet<>(3); private JSStatement statement; private boolean isElse; @@ -458,12 +432,12 @@ public void setElse() public void setTopLevelVariables(Set topLevelVariables) { - this.topLevelVariables = new HashSet(topLevelVariables); + this.topLevelVariables = new HashSet<>(topLevelVariables); } public void setInnerVariables(Set innerVariables) { - this.innerVariables = new HashSet(innerVariables); + this.innerVariables = new HashSet<>(innerVariables); } private Set getTopLevelVariables() @@ -481,16 +455,15 @@ public boolean topLevelDeclarationsConfictWith(IfStatementBranch testBranch) final Set innerVariables = testBranch.getInnerVariables(); final Set topLevel = testBranch.getTopLevelVariables(); - return (hasNonEmptyIntersection(this.topLevelVariables, topLevel) || - hasNonEmptyIntersection(this.topLevelVariables, innerVariables)); + return hasNonEmptyIntersection(this.topLevelVariables, topLevel) + || hasNonEmptyIntersection(this.topLevelVariables, innerVariables); } - private static boolean hasNonEmptyIntersection(Set set1, - Set set2) + private static boolean hasNonEmptyIntersection(Set set1, Set set2) { - for(final String set1Element : set1) + for (final String set1Element : set1) { - if(set2.contains(set1Element)) + if (set2.contains(set1Element)) { return true; } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceSwitchWithIfIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceSwitchWithIfIntention.java index eac6bf5e..aa0e8339 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceSwitchWithIfIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceSwitchWithIfIntention.java @@ -25,12 +25,12 @@ import consulo.language.psi.PsiManager; import consulo.language.psi.PsiWhiteSpace; import consulo.language.util.IncorrectOperationException; +import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; import org.intellij.idea.lang.javascript.psiutil.*; import org.jetbrains.annotations.NonNls; -import jakarta.annotation.Nonnull; import java.util.*; @ExtensionImpl @@ -78,7 +78,7 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat final String declarationString; final String expressionText; - if(hadSideEffects) + if (hadSideEffects) { final String variableName = "i"; // TODO JavaCodeStyleManager.getInstance(switchExpression.getProject()).suggestUniqueVariableName("i", switchExpression, true); @@ -93,9 +93,9 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat boolean renameBreaks = false; - for(JSCaseClause caseClause : switchStatement.getCaseClauses()) + for (JSCaseClause caseClause : switchStatement.getCaseClauses()) { - if(CaseUtil.containsHiddenBreak(caseClause)) + if (CaseUtil.containsHiddenBreak(caseClause)) { renameBreaks = true; break; @@ -105,11 +105,10 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat final StringBuilder ifStatementBuffer = new StringBuilder(1024); String breakLabel = null; - if(renameBreaks) + if (renameBreaks) { breakLabel = CaseUtil.findUniqueLabel(switchStatement, DEFAULT_LABEL_NAME); - ifStatementBuffer.append(breakLabel) - .append(':'); + ifStatementBuffer.append(breakLabel).append(':'); } final List openBranches = new ArrayList<>(); @@ -117,15 +116,15 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat final List allBranches = new ArrayList<>(); SwitchStatementBranch currentBranch = null; - for(JSCaseClause caseClause : switchStatement.getCaseClauses()) + for (JSCaseClause caseClause : switchStatement.getCaseClauses()) { final PsiElement[] caseClauseChildren = caseClause.getChildren(); - for(PsiElement child : caseClauseChildren) + for (PsiElement child : caseClauseChildren) { - if(child == caseClauseChildren[0]) + if (child == caseClauseChildren[0]) { - if(currentBranch == null) + if (currentBranch == null) { openBranches.clear(); currentBranch = new SwitchStatementBranch(); @@ -133,20 +132,20 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat allBranches.add(currentBranch); openBranches.add(currentBranch); } - else if(currentBranch.hasStatements()) + else if (currentBranch.hasStatements()) { currentBranch = new SwitchStatementBranch(); allBranches.add(currentBranch); openBranches.add(currentBranch); } - if(caseClause.isDefault()) + if (caseClause.isDefault()) { currentBranch.setDefault(); } } - if(child instanceof JSExpression) + if (child instanceof JSExpression) { // Processes case clause expression final JSExpression value = ParenthesesUtils.stripParentheses(caseClause.getCaseExpression()); @@ -154,7 +153,7 @@ else if(currentBranch.hasStatements()) assert (currentBranch != null); currentBranch.addLabel(value.getText()); } - else if(child instanceof JSStatement) + else if (child instanceof JSStatement) { // Processes case clause statements final JSStatement statement = (JSStatement) child; @@ -482,7 +481,7 @@ private void addElement(PsiElement element) public void addWhiteSpace(PsiElement whiteSpace) { - if(this.bodyElements.size() > 0) + if (this.bodyElements.size() > 0) { this.pendingWhiteSpace.add(whiteSpace); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeElseIfIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeElseIfIntention.java index 86cd6107..d48f5458 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeElseIfIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeElseIfIntention.java @@ -31,10 +31,11 @@ import jakarta.annotation.Nonnull; @ExtensionImpl -@IntentionMetaData(ignoreId = "JSMergeElseIfIntention", categories = { - "JavaScript", - "Control Flow" -}, fileExtensions = "js") +@IntentionMetaData( + ignoreId = "JSMergeElseIfIntention", + categories = {"JavaScript", "Control Flow"}, + fileExtensions = "js" +) public class JSMergeElseIfIntention extends JSIntention { @Override @@ -62,48 +63,17 @@ private static class MergeElseIfPredicate implements JSElementPredicate @Override public boolean satisfiedBy(@Nonnull PsiElement element) { - if(!(element instanceof JSElement)) - { - return false; - } - - final PsiElement parent = element.getParent(); - - if(!(parent instanceof JSIfStatement)) - { - return false; - } - - final JSIfStatement ifStatement = (JSIfStatement) parent; - - if(ErrorUtil.containsError(ifStatement)) - { - return false; - } - - final JSStatement thenBranch = ifStatement.getThen(); - final JSStatement elseBranch = ifStatement.getElse(); - - if(thenBranch == null) - { - return false; - } - if(elseBranch == null) - { - return false; - } - if(!(elseBranch instanceof JSBlockStatement)) - { - return false; - } - - final JSStatement[] statements = ((JSBlockStatement) elseBranch).getStatements(); + return element instanceof JSElement + && element.getParent() instanceof JSIfStatement ifStatement + && !ErrorUtil.containsError(ifStatement) + && ifStatement.getThen() != null + && ifStatement.getElse() instanceof JSBlockStatement elseBlock + && isSingleIfStatement(elseBlock.getStatements()); + } - if(statements.length != 1) - { - return false; - } - return (statements[0] != null && statements[0] instanceof JSIfStatement); + private boolean isSingleIfStatement(JSStatement[] statements) + { + return statements.length == 1 && statements[0] instanceof JSIfStatement; } } } \ No newline at end of file diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfAndIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfAndIntention.java index 40e917ab..c6379381 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfAndIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfAndIntention.java @@ -19,6 +19,7 @@ import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.lang.javascript.psi.JSIfStatement; import com.intellij.lang.javascript.psi.JSStatement; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; @@ -34,10 +35,11 @@ import jakarta.annotation.Nonnull; @ExtensionImpl -@IntentionMetaData(ignoreId = "JSMergeIfAndIntention", categories = { - "JavaScript", - "Control Flow" -}, fileExtensions = "js") +@IntentionMetaData( + ignoreId = "JSMergeIfAndIntention", + categories = {"JavaScript", "Control Flow"}, + fileExtensions = "js" +) public class JSMergeIfAndIntention extends JSIntention { @NonNls @@ -51,6 +53,7 @@ public JSElementPredicate getElementPredicate() } @Override + @RequiredReadAction public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException { assert (element.getParent() != null); @@ -63,8 +66,7 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat final String childConditionText = ParenthesesUtils.getParenthesized(childCondition, ParenthesesUtils.AND_PRECENDENCE); final String parentConditionText = ParenthesesUtils.getParenthesized(parentCondition, ParenthesesUtils.AND_PRECENDENCE); final JSStatement childThenBranch = childStatement.getThen(); - final String statement = IF_STATEMENT_PREFIX + parentConditionText + " && " + childConditionText + ')' + - childThenBranch.getText(); + final String statement = IF_STATEMENT_PREFIX + parentConditionText + " && " + childConditionText + ')' + childThenBranch.getText(); JSElementFactory.replaceStatement(parentStatement, statement); } @@ -75,16 +77,16 @@ private static class MergeIfAndPredicate implements JSElementPredicate @Override public boolean satisfiedBy(@Nonnull PsiElement element) { - if(!(element instanceof JSElement)) + if (!(element instanceof JSElement)) { return false; } PsiElement parent = element.getParent(); - if(!(parent instanceof JSIfStatement)) + if (!(parent instanceof JSIfStatement)) { - if(element instanceof JSIfStatement) + if (element instanceof JSIfStatement) { parent = element; } @@ -96,7 +98,7 @@ public boolean satisfiedBy(@Nonnull PsiElement element) final JSIfStatement ifStatement = (JSIfStatement) parent; - if(ErrorUtil.containsError(ifStatement)) + if (ErrorUtil.containsError(ifStatement)) { return false; } @@ -104,18 +106,7 @@ public boolean satisfiedBy(@Nonnull PsiElement element) final JSStatement thenBranch = ConditionalUtils.stripBraces(ifStatement.getThen()); final JSStatement elseBranch = ConditionalUtils.stripBraces(ifStatement.getElse()); - if(thenBranch == null || elseBranch != null) - { - return false; - } - if(!(thenBranch instanceof JSIfStatement)) - { - return false; - } - - final JSIfStatement childIfStatement = (JSIfStatement) thenBranch; - - return (childIfStatement.getElse() == null); + return elseBranch == null && thenBranch instanceof JSIfStatement childIfStatement && childIfStatement.getElse() == null; } } } \ No newline at end of file diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfOrIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfOrIntention.java index 06edb2e0..e87736b5 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfOrIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfOrIntention.java @@ -19,6 +19,7 @@ import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.lang.javascript.psi.JSIfStatement; import com.intellij.lang.javascript.psi.JSStatement; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; @@ -26,22 +27,17 @@ import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; import org.intellij.idea.lang.javascript.psiutil.*; -import org.jetbrains.annotations.NonNls; import jakarta.annotation.Nonnull; @ExtensionImpl -@IntentionMetaData(ignoreId = "JSMergeIfOrIntention", categories = { - "JavaScript", - "Control Flow" -}, fileExtensions = "js") +@IntentionMetaData( + ignoreId = "JSMergeIfOrIntention", + categories = {"JavaScript", "Control Flow"}, + fileExtensions = "js" +) public class JSMergeIfOrIntention extends JSIntention { - @NonNls - private static final String IF_STATEMENT_PREFIX = "if ("; - @NonNls - private static final String ELSE_KEYWORD = "else "; - @Override @Nonnull public JSElementPredicate getElementPredicate() @@ -50,11 +46,12 @@ public JSElementPredicate getElementPredicate() } @Override + @RequiredReadAction public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException { assert (element instanceof JSElement); JSElement jsElement = (JSElement) element; - if(MergeIfOrPredicate.isMergableExplicitIf(jsElement)) + if (MergeIfOrPredicate.isMergableExplicitIf(jsElement)) { replaceMergeableExplicitIf(jsElement); } @@ -64,6 +61,7 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat } } + @RequiredReadAction private static void replaceMergeableExplicitIf(JSElement token) throws IncorrectOperationException { final JSIfStatement parentStatement = (JSIfStatement) (token.getParent() instanceof JSIfStatement ? token.getParent() : token); @@ -76,26 +74,20 @@ private static void replaceMergeableExplicitIf(JSElement token) throws Incorrect final String childConditionText = ParenthesesUtils.getParenthesized(childCondition, ParenthesesUtils.OR_PRECENDENCE); final String parentConditionText = ParenthesesUtils.getParenthesized(condition, ParenthesesUtils.OR_PRECENDENCE); final JSStatement parentThenBranch = parentStatement.getThen(); - final String parentThenBranchText = parentThenBranch.getText(); - final StringBuilder statement = new StringBuilder(IF_STATEMENT_PREFIX) - .append(parentConditionText) - .append(" || ") - .append(childConditionText) - .append(')') - .append(parentThenBranchText); + final StringBuilder statement = + new StringBuilder("if (").append(parentConditionText).append(" || ").append(childConditionText).append(')') + .append(parentThenBranch.getText()); final JSStatement childElseBranch = childStatement.getElse(); - if(childElseBranch != null) + if (childElseBranch != null) { - final String childElseBranchText = childElseBranch.getText(); - - statement.append(ELSE_KEYWORD) - .append(childElseBranchText); + statement.append("else ").append(childElseBranch.getText()); } JSElementFactory.replaceStatement(parentStatement, statement.toString()); } + @RequiredReadAction private static void replaceMergeableImplicitIf(JSElement token) throws IncorrectOperationException { final JSIfStatement parentStatement = (JSIfStatement) (token.getParent() instanceof JSIfStatement ? token.getParent() : token); @@ -110,17 +102,16 @@ private static void replaceMergeableImplicitIf(JSElement token) throws Incorrect final String parentConditionText = ParenthesesUtils.getParenthesized(condition, ParenthesesUtils.OR_PRECENDENCE); final JSStatement parentThenBranch = parentStatement.getThen(); final JSStatement childElseBranch = childStatement.getElse(); - StringBuilder statement = new StringBuilder(IF_STATEMENT_PREFIX) - .append(parentConditionText) - .append(" || ") - .append(childConditionText) - .append(')') - .append(parentThenBranch.getText()); - - if(childElseBranch != null) + StringBuilder statement = new StringBuilder("if (") + .append(parentConditionText) + .append(" || ") + .append(childConditionText) + .append(')') + .append(parentThenBranch.getText()); + + if (childElseBranch != null) { - statement.append(ELSE_KEYWORD) - .append(childElseBranch.getText()); + statement.append("else ").append(childElseBranch.getText()); } JSElementFactory.replaceStatement(parentStatement, statement.toString()); @@ -132,23 +123,17 @@ private static class MergeIfOrPredicate implements JSElementPredicate @Override public boolean satisfiedBy(@Nonnull PsiElement element) { - if(!(element instanceof JSElement)) - { - return false; - } - - final JSElement jsElement = (JSElement) element; - - return (isMergableExplicitIf(jsElement) || isMergableImplicitIf(jsElement)); + return element instanceof JSElement jsElement + && (isMergableExplicitIf(jsElement) || isMergableImplicitIf(jsElement)); } public static boolean isMergableExplicitIf(JSElement element) { PsiElement parent = element.getParent(); - if(!(parent instanceof JSIfStatement)) + if (!(parent instanceof JSIfStatement)) { - if(element instanceof JSIfStatement) + if (element instanceof JSIfStatement) { parent = element; } @@ -160,36 +145,25 @@ public static boolean isMergableExplicitIf(JSElement element) final JSIfStatement ifStatement = (JSIfStatement) parent; - if(ErrorUtil.containsError(ifStatement)) - { - return false; - } - - final JSStatement thenBranch = ifStatement.getThen(); - final JSStatement elseBranch = ifStatement.getElse(); - - if(thenBranch == null || elseBranch == null) - { - return false; - } - if(!(elseBranch instanceof JSIfStatement)) + if (ErrorUtil.containsError(ifStatement)) { return false; } - final JSIfStatement childIfStatement = (JSIfStatement) elseBranch; - final JSStatement childThenBranch = childIfStatement.getThen(); + final JSStatement thenBranch = ifStatement.getThen(), elseBranch = ifStatement.getElse(); - return EquivalenceChecker.statementsAreEquivalent(thenBranch, childThenBranch); + return thenBranch != null + && elseBranch instanceof JSIfStatement childIfStatement + && EquivalenceChecker.statementsAreEquivalent(thenBranch, childIfStatement.getThen()); } private static boolean isMergableImplicitIf(JSElement element) { PsiElement parent = element.getParent(); - if(!(parent instanceof JSIfStatement)) + if (!(parent instanceof JSIfStatement)) { - if(element instanceof JSIfStatement) + if (element instanceof JSIfStatement) { parent = element; } @@ -200,30 +174,16 @@ private static boolean isMergableImplicitIf(JSElement element) } final JSIfStatement ifStatement = (JSIfStatement) parent; - final JSStatement thenBranch = ifStatement.getThen(); - final JSStatement elseBranch = ifStatement.getElse(); - - if(thenBranch == null || elseBranch != null) - { - return false; - } + final JSStatement thenBranch = ifStatement.getThen(), elseBranch = ifStatement.getElse(); - if(ControlFlowUtils.statementMayCompleteNormally(thenBranch)) - { + if (thenBranch == null || elseBranch != null || ControlFlowUtils.statementMayCompleteNormally(thenBranch)) { return false; } final PsiElement nextStatement = JSElementFactory.getNonWhiteSpaceSibling(ifStatement, true); - if(!(nextStatement instanceof JSIfStatement)) - { - return false; - } - - final JSIfStatement childIfStatement = (JSIfStatement) nextStatement; - final JSStatement childThenBranch = childIfStatement.getThen(); - - return EquivalenceChecker.statementsAreEquivalent(thenBranch, childThenBranch); + return nextStatement instanceof JSIfStatement childIfStatement + && EquivalenceChecker.statementsAreEquivalent(thenBranch, childIfStatement.getThen()); } } } \ No newline at end of file diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeParallelIfsIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeParallelIfsIntention.java index bd19fb6b..f6ce3bd5 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeParallelIfsIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeParallelIfsIntention.java @@ -18,6 +18,7 @@ import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.lang.javascript.psi.JSIfStatement; import com.intellij.lang.javascript.psi.JSStatement; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; @@ -28,22 +29,17 @@ import org.intellij.idea.lang.javascript.psiutil.EquivalenceChecker; import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; -import org.jetbrains.annotations.NonNls; import jakarta.annotation.Nonnull; @ExtensionImpl -@IntentionMetaData(ignoreId = "JSMergeParallelIfsIntention", categories = { - "JavaScript", - "Control Flow" -}, fileExtensions = "js") +@IntentionMetaData( + ignoreId = "JSMergeParallelIfsIntention", + categories = {"JavaScript", "Control Flow"}, + fileExtensions = "js" +) public class JSMergeParallelIfsIntention extends JSIntention { - @NonNls - private static final String IF_STATEMENT_PREFIX = "if ("; - @NonNls - private static final String ELSE_KEYWORD = "else "; - @Override @Nonnull public JSElementPredicate getElementPredicate() @@ -52,6 +48,7 @@ public JSElementPredicate getElementPredicate() } @Override + @RequiredReadAction public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException { final PsiElement nextElement = JSElementFactory.getNonWhiteSpaceSibling(element, true); @@ -67,9 +64,8 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat JSElementFactory.removeElement(secondStatement); } - private void mergeIfStatements(StringBuilder statementBuffer, - JSIfStatement firstStatement, - JSIfStatement secondStatement) + @RequiredReadAction + private void mergeIfStatements(StringBuilder statementBuffer, JSIfStatement firstStatement, JSIfStatement secondStatement) { final JSExpression condition = firstStatement.getCondition(); final JSStatement firstThenBranch = firstStatement.getThen(); @@ -77,22 +73,17 @@ private void mergeIfStatements(StringBuilder statementBuffer, final JSStatement firstElseBranch = firstStatement.getElse(); final JSStatement secondElseBranch = secondStatement.getElse(); - statementBuffer.append(IF_STATEMENT_PREFIX) - .append(condition.getText()) - .append(')'); + statementBuffer.append("if (").append(condition.getText()).append(')'); ControlFlowUtils.appendStatementsInSequence(statementBuffer, firstThenBranch, secondThenBranch); - if(firstElseBranch != null || secondElseBranch != null) + if (firstElseBranch != null || secondElseBranch != null) { - statementBuffer.append(ELSE_KEYWORD); - if(firstElseBranch instanceof JSIfStatement && - secondElseBranch instanceof JSIfStatement && - MergeParallelIfsPredicate.ifStatementsCanBeMerged((JSIfStatement) firstElseBranch, - (JSIfStatement) secondElseBranch)) + statementBuffer.append("else "); + if (firstElseBranch instanceof JSIfStatement firstIfStatement + && secondElseBranch instanceof JSIfStatement secondIfStatement + && MergeParallelIfsPredicate.ifStatementsCanBeMerged(firstIfStatement, secondIfStatement)) { - this.mergeIfStatements(statementBuffer, - (JSIfStatement) firstElseBranch, - (JSIfStatement) secondElseBranch); + this.mergeIfStatements(statementBuffer, firstIfStatement, secondIfStatement); } else { @@ -106,46 +97,41 @@ private static class MergeParallelIfsPredicate implements JSElementPredicate @Override public boolean satisfiedBy(@Nonnull PsiElement element) { - if(!(element instanceof JSIfStatement) || ErrorUtil.containsError(element)) + if (!(element instanceof JSIfStatement ifStatement && !ErrorUtil.containsError(element))) { return false; } final PsiElement nextStatement = JSElementFactory.getNonWhiteSpaceSibling(element, true); - if(!(nextStatement instanceof JSIfStatement) || ErrorUtil.containsError(nextStatement)) - { - return false; - } - - return ifStatementsCanBeMerged((JSIfStatement) element, - (JSIfStatement) nextStatement); + return nextStatement instanceof JSIfStatement nextIfStatement + && !ErrorUtil.containsError(nextStatement) + && ifStatementsCanBeMerged(ifStatement, nextIfStatement); } - public static boolean ifStatementsCanBeMerged(JSIfStatement statement1, - JSIfStatement statement2) + public static boolean ifStatementsCanBeMerged(JSIfStatement statement1, JSIfStatement statement2) { final JSStatement thenBranch = statement1.getThen(); final JSStatement elseBranch = statement1.getElse(); - if(thenBranch == null) + if (thenBranch == null) { return false; } final JSExpression firstCondition = statement1.getCondition(); final JSExpression secondCondition = statement2.getCondition(); - if(!EquivalenceChecker.expressionsAreEquivalent(firstCondition, - secondCondition)) + if (!EquivalenceChecker.expressionsAreEquivalent(firstCondition, secondCondition)) { return false; } + final JSStatement nextThenBranch = statement2.getThen(); - if(!ControlFlowUtils.canBeMerged(thenBranch, nextThenBranch)) + if (!ControlFlowUtils.canBeMerged(thenBranch, nextThenBranch)) { return false; } + final JSStatement nextElseBranch = statement2.getElse(); - return (elseBranch == null || nextElseBranch == null || - ControlFlowUtils.canBeMerged(elseBranch, nextElseBranch)); + return (elseBranch == null || nextElseBranch == null || ControlFlowUtils.canBeMerged(elseBranch, nextElseBranch)); } } } \ No newline at end of file diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSRemoveRedundantElseIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSRemoveRedundantElseIntention.java index 6afc6e36..7440961c 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSRemoveRedundantElseIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSRemoveRedundantElseIntention.java @@ -19,6 +19,7 @@ import com.intellij.lang.javascript.psi.JSIfStatement; import com.intellij.lang.javascript.psi.JSReturnStatement; import com.intellij.lang.javascript.psi.JSStatement; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; @@ -28,18 +29,15 @@ import org.intellij.idea.lang.javascript.intention.JSIntention; import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; -import org.jetbrains.annotations.NonNls; @ExtensionImpl -@IntentionMetaData(ignoreId = "JSRemoveRedundantElseIntention", categories = { - "JavaScript", - "Control Flow" -}, fileExtensions = "js") +@IntentionMetaData( + ignoreId = "JSRemoveRedundantElseIntention", + categories = {"JavaScript", "Control Flow"}, + fileExtensions = "js" +) public class JSRemoveRedundantElseIntention extends JSIntention { - @NonNls - private static final String IF_STATEMENT_PREFIX = "if ("; - @Override @Nonnull public JSElementPredicate getElementPredicate() @@ -48,6 +46,7 @@ public JSElementPredicate getElementPredicate() } @Override + @RequiredReadAction public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException { final JSIfStatement ifStatement = (JSIfStatement) element; @@ -57,11 +56,11 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat assert (thenBranch != null); assert (elseBranch != null); - final String newIfText = IF_STATEMENT_PREFIX + ifStatement.getCondition().getText() + ')' + thenBranch.getText(); + final String newIfText = "if (" + ifStatement.getCondition().getText() + ')' + thenBranch.getText(); final String elseText = elseBranch.getText(); - final String newStatement = (elseBranch instanceof JSBlockStatement - ? elseText.substring(elseText.indexOf('{') + 1, elseText.lastIndexOf('}') - 1).trim() - : elseText); + final String newStatement = elseBranch instanceof JSBlockStatement + ? elseText.substring(elseText.indexOf('{') + 1, elseText.lastIndexOf('}') - 1).trim() + : elseText; JSElementFactory.addStatementAfter(ifStatement, newStatement); JSElementFactory.replaceStatement(ifStatement, newIfText); @@ -72,42 +71,28 @@ private static class RemoveRedundantElsePredicate implements JSElementPredicate @Override public boolean satisfiedBy(@Nonnull PsiElement element) { - if(!(element instanceof JSIfStatement)) - { - return false; - } - - final JSIfStatement ifStatement = (JSIfStatement) element; - - if(ErrorUtil.containsError(ifStatement)) - { + if (!(element instanceof JSIfStatement ifStatement && !ErrorUtil.containsError(ifStatement)) + || ifStatement.getElse() == null) { return false; } - final JSStatement elseBranch = ifStatement.getElse(); JSStatement thenBranch = ifStatement.getThen(); - - if(elseBranch == null) - { - return false; - } - - while(thenBranch != null && thenBranch instanceof JSBlockStatement) + while (thenBranch instanceof JSBlockStatement thenBlockStatement) { - JSStatement[] thenStatements = ((JSBlockStatement) thenBranch).getStatements(); + JSStatement[] thenStatements = thenBlockStatement.getStatements(); - if(thenStatements.length == 0) + if (thenStatements.length == 0) { return true; } - else if(thenStatements.length > 1) + else if (thenStatements.length > 1) { return false; } thenBranch = thenStatements[0]; } - return (thenBranch != null && thenBranch instanceof JSReturnStatement); + return thenBranch instanceof JSReturnStatement; } } } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSReplaceIfWithConditionalIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSReplaceIfWithConditionalIntention.java index cb239fde..48863dc3 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSReplaceIfWithConditionalIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSReplaceIfWithConditionalIntention.java @@ -16,6 +16,7 @@ package org.intellij.idea.lang.javascript.intention.trivialif; import com.intellij.lang.javascript.psi.*; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; import consulo.language.editor.intention.IntentionMetaData; @@ -29,14 +30,13 @@ import org.jetbrains.annotations.NonNls; @ExtensionImpl -@IntentionMetaData(ignoreId = "JSReplaceIfWithConditionalIntention", categories = { - "JavaScript", - "Conditional" -}, fileExtensions = "js") +@IntentionMetaData( + ignoreId = "JSReplaceIfWithConditionalIntention", + categories = {"JavaScript", "Conditional"}, + fileExtensions = "js" +) public class JSReplaceIfWithConditionalIntention extends JSIntention { - private static final char TERNARY_QUESTION = '?'; - private static final char TERNARY_SEMICOLON = ':'; @NonNls private static final String RETURN_KEYWORD = "return "; @@ -48,13 +48,14 @@ public JSElementPredicate getElementPredicate() } @Override + @RequiredReadAction public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException { final JSIfStatement ifStatement = (JSIfStatement) (element.getParent() instanceof JSIfStatement ? element.getParent() : element); assert (ifStatement != null); - if(ReplaceIfWithConditionalPredicate.isReplaceableAssignment(ifStatement)) + if (ReplaceIfWithConditionalPredicate.isReplaceableAssignment(ifStatement)) { final StringBuilder newStatement = new StringBuilder(); @@ -62,7 +63,7 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat newStatement.append(';'); JSElementFactory.replaceStatement(ifStatement, newStatement.toString()); } - else if(ReplaceIfWithConditionalPredicate.isReplaceableReturn(ifStatement)) + else if (ReplaceIfWithConditionalPredicate.isReplaceableReturn(ifStatement)) { final StringBuilder newStatement = new StringBuilder(RETURN_KEYWORD); @@ -70,7 +71,7 @@ else if(ReplaceIfWithConditionalPredicate.isReplaceableReturn(ifStatement)) newStatement.append(';'); JSElementFactory.replaceStatement(ifStatement, newStatement.toString()); } - else if(ReplaceIfWithConditionalPredicate.isReplaceableImplicitReturn(ifStatement)) + else if (ReplaceIfWithConditionalPredicate.isReplaceableImplicitReturn(ifStatement)) { final JSExpression condition = ifStatement.getCondition(); final JSReturnStatement thenBranch = (JSReturnStatement) ConditionalUtils.stripBraces(ifStatement.getThen()); @@ -78,13 +79,14 @@ else if(ReplaceIfWithConditionalPredicate.isReplaceableImplicitReturn(ifStatemen final String newStatement = getImplicitReturnReplacement(condition, thenBranch, elseBranch); JSElementFactory.replaceStatement(ifStatement, newStatement); - if(elseBranch != null) + if (elseBranch != null) { JSElementFactory.removeElement(elseBranch); } } } + @RequiredReadAction private static void getAssignmentReplacement(StringBuilder buffer, JSIfStatement ifStatement) { final JSExpression condition = ifStatement.getCondition(); @@ -97,13 +99,13 @@ private static void getAssignmentReplacement(StringBuilder buffer, JSIfStatement assert (thenRhs != null); buffer.append(thenAssign.getLOperand().getText()) - .append(operator) - .append(ParenthesesUtils.getParenthesized(condition, ParenthesesUtils.CONDITIONAL_PRECENDENCE)) - .append(TERNARY_QUESTION) - .append(ParenthesesUtils.getParenthesized(thenRhs, ParenthesesUtils.CONDITIONAL_PRECENDENCE)) - .append(TERNARY_SEMICOLON); + .append(operator) + .append(ParenthesesUtils.getParenthesized(condition, ParenthesesUtils.CONDITIONAL_PRECENDENCE)) + .append('?') + .append(ParenthesesUtils.getParenthesized(thenRhs, ParenthesesUtils.CONDITIONAL_PRECENDENCE)) + .append(':'); - if(elseBranch instanceof JSIfStatement) + if (elseBranch instanceof JSIfStatement) { getAssignmentReplacement(buffer, (JSIfStatement) elseBranch); return; @@ -124,23 +126,20 @@ private static void getReturnReplacement(StringBuilder buffer, JSIfStatement ifS final JSReturnStatement thenReturn = (JSReturnStatement) ConditionalUtils.stripBraces(thenBranch); final JSStatement elseBranch = ifStatement.getElse(); - buffer.append(ParenthesesUtils.getParenthesized(ifStatement.getCondition(), - ParenthesesUtils.CONDITIONAL_PRECENDENCE)) - .append(TERNARY_QUESTION) - .append(ParenthesesUtils.getParenthesized(thenReturn.getExpression(), - ParenthesesUtils.CONDITIONAL_PRECENDENCE)) - .append(TERNARY_SEMICOLON); + buffer.append(ParenthesesUtils.getParenthesized(ifStatement.getCondition(), ParenthesesUtils.CONDITIONAL_PRECENDENCE)) + .append('?') + .append(ParenthesesUtils.getParenthesized(thenReturn.getExpression(), ParenthesesUtils.CONDITIONAL_PRECENDENCE)) + .append(':'); - if(elseBranch instanceof JSIfStatement) + if (elseBranch instanceof JSIfStatement elseIfStatement) { - getReturnReplacement(buffer, (JSIfStatement) elseBranch); + getReturnReplacement(buffer, elseIfStatement); return; } final JSReturnStatement elseReturn = (JSReturnStatement) ConditionalUtils.stripBraces(elseBranch); - buffer.append(ParenthesesUtils.getParenthesized(elseReturn.getExpression(), - ParenthesesUtils.CONDITIONAL_PRECENDENCE)); + buffer.append(ParenthesesUtils.getParenthesized(elseReturn.getExpression(), ParenthesesUtils.CONDITIONAL_PRECENDENCE)); } private static String getImplicitReturnReplacement(JSExpression condition, JSReturnStatement thenBranch, JSReturnStatement elseBranch) @@ -155,7 +154,7 @@ private static String getImplicitReturnReplacement(JSExpression condition, JSRet final String elseValue = ParenthesesUtils.getParenthesized(elseReturnValue, ParenthesesUtils.CONDITIONAL_PRECENDENCE); final String conditionText = ParenthesesUtils.getParenthesized(condition, ParenthesesUtils.CONDITIONAL_PRECENDENCE); - return RETURN_KEYWORD + conditionText + TERNARY_QUESTION + thenValue + TERNARY_SEMICOLON + elseValue + ';'; + return RETURN_KEYWORD + conditionText + '?' + thenValue + ':' + elseValue + ';'; } private static class ReplaceIfWithConditionalPredicate implements JSElementPredicate @@ -163,16 +162,16 @@ private static class ReplaceIfWithConditionalPredicate implements JSElementPredi @Override public boolean satisfiedBy(@Nonnull PsiElement element) { - if(!(element instanceof JSElement)) + if (!(element instanceof JSElement)) { return false; } PsiElement parent = element.getParent(); - if(!(parent instanceof JSIfStatement)) + if (!(parent instanceof JSIfStatement)) { - if(element instanceof JSIfStatement) + if (element instanceof JSIfStatement) { parent = element; } @@ -182,7 +181,7 @@ public boolean satisfiedBy(@Nonnull PsiElement element) } } - if(ErrorUtil.containsError(parent)) + if (ErrorUtil.containsError(parent)) { return false; } @@ -190,39 +189,29 @@ public boolean satisfiedBy(@Nonnull PsiElement element) final JSIfStatement ifStatement = (JSIfStatement) parent; final JSExpression condition = ifStatement.getCondition(); - if(condition == null || !condition.isValid()) + if (condition == null || !condition.isValid()) { return false; } - if(isReplaceableAssignment(ifStatement)) - { - return true; - } - if(isReplaceableReturn(ifStatement)) - { - return true; - } - return isReplaceableImplicitReturn(ifStatement); + return isReplaceableAssignment(ifStatement) + || isReplaceableReturn(ifStatement) + || isReplaceableImplicitReturn(ifStatement); } public static boolean isReplaceableImplicitReturn(JSIfStatement ifStatement) { final PsiElement nextStatement = JSElementFactory.getNonWhiteSpaceSibling(ifStatement, true); - if(!(nextStatement instanceof JSReturnStatement)) + if (!(nextStatement instanceof JSReturnStatement nextReturnStatement)) { return false; } final JSStatement thenBranch = ConditionalUtils.stripBraces(ifStatement.getThen()); - if(!(thenBranch instanceof JSReturnStatement)) - { - return false; - } - - return (((JSReturnStatement) thenBranch).getExpression() != null && - ((JSReturnStatement) nextStatement).getExpression() != null); + return thenBranch instanceof JSReturnStatement thenReturnStatement + && thenReturnStatement.getExpression() != null + && nextReturnStatement.getExpression() != null; } public static boolean isReplaceableReturn(JSIfStatement ifStatement) @@ -230,49 +219,47 @@ public static boolean isReplaceableReturn(JSIfStatement ifStatement) final JSStatement thenBranch = ConditionalUtils.stripBraces(ifStatement.getThen()); final JSStatement elseBranch = ConditionalUtils.stripBraces(ifStatement.getElse()); - if(!(thenBranch instanceof JSReturnStatement)) + if (!(thenBranch instanceof JSReturnStatement thenReturnStatement)) { return false; } - if(elseBranch instanceof JSIfStatement) + if (elseBranch instanceof JSIfStatement elseIfStatement) { - return isReplaceableReturn((JSIfStatement) elseBranch); - } - if(!(elseBranch instanceof JSReturnStatement)) - { - return false; + return isReplaceableReturn(elseIfStatement); } - return (((JSReturnStatement) thenBranch).getExpression() != null && - ((JSReturnStatement) elseBranch).getExpression() != null); - + return elseBranch instanceof JSReturnStatement elseReturnStatement + && thenReturnStatement.getExpression() != null + && elseReturnStatement.getExpression() != null; } + @RequiredReadAction public static boolean isReplaceableAssignment(JSIfStatement ifStatement) { final JSStatement thenBranch = ConditionalUtils.stripBraces(ifStatement.getThen()); - if(thenBranch == null) + if (thenBranch == null) { return false; } - if(!ConditionalUtils.isAssignment(thenBranch)) + if (!ConditionalUtils.isAssignment(thenBranch)) { return false; } final JSStatement elseBranch = ConditionalUtils.stripBraces(ifStatement.getElse()); - if(elseBranch == null) + if (elseBranch == null) { return false; } - if(elseBranch instanceof JSIfStatement) + + if (elseBranch instanceof JSIfStatement elseIfStatement) { - return isReplaceableAssignment((JSIfStatement) elseBranch); + return isReplaceableAssignment(elseIfStatement); } - if(!ConditionalUtils.isAssignment(elseBranch)) + if (!ConditionalUtils.isAssignment(elseBranch)) { return false; } @@ -282,27 +269,23 @@ public static boolean isReplaceableAssignment(JSIfStatement ifStatement) final IElementType thenSign = thenExpression.getOperationSign(); final IElementType elseSign = elseExpression.getOperationSign(); - if(!thenSign.equals(elseSign)) + if (!thenSign.equals(elseSign)) { return false; } final JSExpression thenLhs = thenExpression.getLOperand(); - if(thenExpression.getROperand() == null) - { - return false; - } - if(elseExpression.getROperand() == null || - elseExpression.getLOperand() == null) - { + if (thenExpression.getROperand() == null + || elseExpression.getROperand() == null + || elseExpression.getLOperand() == null) { return false; } final JSExpression thenRhs = thenExpression.getROperand(); assert thenRhs != null; final JSExpression elseRhs = elseExpression.getROperand(); - if(elseRhs == null) + if (elseRhs == null) { return false; } From f0b2949ba2e5da20492c2186e7deaac19118db59 Mon Sep 17 00:00:00 2001 From: UNV Date: Wed, 17 Jul 2024 19:39:10 +0300 Subject: [PATCH 034/150] Improving readability after Intention refactoring. --- .../JSRemoveConditionalIntention.java | 28 +++++----- ...DeclarationAndInitializationIntention.java | 34 ++++++------- .../JSMergeParallelForInLoopsIntention.java | 13 ++--- .../JSMergeParallelForLoopsIntention.java | 13 ++--- ...RemoveUnnecessaryParenthesesIntention.java | 51 ++++++++----------- .../trivialif/JSMergeIfOrIntention.java | 9 ++-- .../JSMergeParallelIfsIntention.java | 13 ++--- .../JSRemoveRedundantElseIntention.java | 35 +++++++------ .../trivialif/JSSplitIfAndIntention.java | 4 +- .../trivialif/JSSplitIfOrIntention.java | 4 +- 10 files changed, 92 insertions(+), 112 deletions(-) diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSRemoveConditionalIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSRemoveConditionalIntention.java index c8f48b92..352e4d4f 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSRemoveConditionalIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSRemoveConditionalIntention.java @@ -71,23 +71,23 @@ private static class RemoveConditionalPredicate implements JSElementPredicate @RequiredReadAction public boolean satisfiedBy(@Nonnull PsiElement element) { - if (!(element instanceof JSConditionalExpression condition && !ErrorUtil.containsError(element))) { - return false; - } - - final JSExpression thenExpression = ParenthesesUtils.stripParentheses(condition.getThen()); - final JSExpression elseExpression = ParenthesesUtils.stripParentheses(condition.getElse()); - - if (condition.getCondition() == null || thenExpression == null || elseExpression == null) + if (element instanceof JSConditionalExpression condition && !ErrorUtil.containsError(element)) { - return false; - } + final JSExpression thenExpression = ParenthesesUtils.stripParentheses(condition.getThen()); + final JSExpression elseExpression = ParenthesesUtils.stripParentheses(condition.getElse()); + + if (condition.getCondition() == null || thenExpression == null || elseExpression == null) + { + return false; + } - final String thenText = thenExpression.getText(); - final String elseText = elseExpression.getText(); + final String thenText = thenExpression.getText(); + final String elseText = elseExpression.getText(); - return (BoolUtils.TRUE.equals(elseText) && BoolUtils.FALSE.equals(thenText)) - || (BoolUtils.TRUE.equals(thenText) && BoolUtils.FALSE.equals(elseText)); + return (BoolUtils.TRUE.equals(elseText) && BoolUtils.FALSE.equals(thenText)) + || (BoolUtils.TRUE.equals(thenText) && BoolUtils.FALSE.equals(elseText)); + } + return false; } } } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSMergeDeclarationAndInitializationIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSMergeDeclarationAndInitializationIntention.java index 8aa322f1..b0315b3f 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSMergeDeclarationAndInitializationIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSMergeDeclarationAndInitializationIntention.java @@ -98,28 +98,28 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat private static class Predicate implements JSElementPredicate { @Override + @RequiredReadAction public boolean satisfiedBy(@Nonnull PsiElement element) { - if (!(element instanceof JSVarStatement varStatement && !ErrorUtil.containsError(varStatement))) { - return false; - } - - for (JSVariable variable : varStatement.getVariables()) + if (element instanceof JSVarStatement varStatement && !ErrorUtil.containsError(varStatement)) { - if (variable.hasInitializer()) { - continue; - } + for (JSVariable variable : varStatement.getVariables()) + { + if (variable.hasInitializer()) { + continue; + } - final Iterator referenceIterator = - FindReferenceUtil.getReferencesAfter(variable, variable.getTextRange().getEndOffset()).iterator(); - final JSReferenceExpression firstReference = (JSReferenceExpression) (referenceIterator.hasNext() ? referenceIterator.next() : null); + final Iterator referenceIterator = + FindReferenceUtil.getReferencesAfter(variable, variable.getTextRange().getEndOffset()).iterator(); + final JSReferenceExpression firstReference = + (JSReferenceExpression)(referenceIterator.hasNext() ? referenceIterator.next() : null); - if (firstReference != null - && firstReference.getParent() instanceof JSDefinitionExpression definitionExpression - && definitionExpression.getParent() instanceof JSAssignmentExpression assignmentExpression - && assignmentExpression.getParent() instanceof JSExpressionStatement) - { - return true; + if (firstReference != null + && firstReference.getParent() instanceof JSDefinitionExpression definitionExpression + && definitionExpression.getParent() instanceof JSAssignmentExpression assignmentExpression + && assignmentExpression.getParent() instanceof JSExpressionStatement) { + return true; + } } } return false; diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForInLoopsIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForInLoopsIntention.java index 1a8d37f3..f33934bc 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForInLoopsIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForInLoopsIntention.java @@ -88,15 +88,10 @@ private static class MergeParallelForInLoopsPredicate implements JSElementPredic @Override public boolean satisfiedBy(@Nonnull PsiElement element) { - if (!(element instanceof JSForInStatement forInStatement && !ErrorUtil.containsError(element))) - { - return false; - } - - final PsiElement nextStatement = JSElementFactory.getNonWhiteSpaceSibling(element, true); - - return nextStatement instanceof JSForInStatement nextForInStatement - && !ErrorUtil.containsError(nextStatement) + return element instanceof JSForInStatement forInStatement + && !ErrorUtil.containsError(element) + && JSElementFactory.getNonWhiteSpaceSibling(element, true) instanceof JSForInStatement nextForInStatement + && !ErrorUtil.containsError(nextForInStatement) && forInStatementsCanBeMerged(forInStatement, nextForInStatement); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForLoopsIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForLoopsIntention.java index d4da8774..237d0c3b 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForLoopsIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForLoopsIntention.java @@ -90,15 +90,10 @@ private static class MergeParallelForLoopsPredicate implements JSElementPredicat @Override public boolean satisfiedBy(@Nonnull PsiElement element) { - if (!(element instanceof JSForStatement forStatement && !ErrorUtil.containsError(forStatement))) - { - return false; - } - - final PsiElement nextStatement = JSElementFactory.getNonWhiteSpaceSibling(element, true); - - return nextStatement instanceof JSForStatement nextForStatement - && !ErrorUtil.containsError(nextStatement) + return element instanceof JSForStatement forStatement + && !ErrorUtil.containsError(forStatement) + && JSElementFactory.getNonWhiteSpaceSibling(element, true) instanceof JSForStatement nextForStatement + && !ErrorUtil.containsError(nextForStatement) && forStatementsCanBeMerged(forStatement, nextForStatement); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/parenthesis/JSRemoveUnnecessaryParenthesesIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/parenthesis/JSRemoveUnnecessaryParenthesesIntention.java index cdd6c673..8195af84 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/parenthesis/JSRemoveUnnecessaryParenthesesIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/parenthesis/JSRemoveUnnecessaryParenthesesIntention.java @@ -66,50 +66,39 @@ private static class UnnecessaryParenthesesPredicate implements JSElementPredica @RequiredReadAction public boolean satisfiedBy(@Nonnull PsiElement element) { - if (!(element instanceof JSParenthesizedExpression expression && !ErrorUtil.containsError(element))) + if (element instanceof JSParenthesizedExpression expression && !ErrorUtil.containsError(element)) { - return false; - } - - if (!(expression.getParent() instanceof JSExpression parentExpression)) - { - return true; - } + if (!(expression.getParent() instanceof JSExpression parentExpression)) + { + return true; + } - final JSExpression body = expression.getInnerExpression(); + final JSExpression body = expression.getInnerExpression(); - if (body instanceof JSParenthesizedExpression) - { - return true; - } + if (body instanceof JSParenthesizedExpression) + { + return true; + } - final int parentPrecendence = ParenthesesUtils.getPrecendence(parentExpression); - final int childPrecendence = ParenthesesUtils.getPrecendence(body); + final int parentPrecendence = ParenthesesUtils.getPrecendence(parentExpression); + final int childPrecendence = ParenthesesUtils.getPrecendence(body); - if (parentPrecendence > childPrecendence) - { - return !(body instanceof JSFunctionExpression); - } - else if (parentPrecendence == childPrecendence) - { - if (parentExpression instanceof JSBinaryExpression parentBinaryExpression + if (parentPrecendence > childPrecendence) + { + return !(body instanceof JSFunctionExpression); + } + else if (parentPrecendence == childPrecendence + && parentExpression instanceof JSBinaryExpression parentBinaryExpression && body instanceof JSBinaryExpression bodyBinaryExpression) { final IElementType parentOperator = parentBinaryExpression.getOperationSign(); final IElementType childOperator = bodyBinaryExpression.getOperationSign(); final JSExpression lhs = parentBinaryExpression.getLOperand(); - return (lhs.equals(expression) && parentOperator.equals(childOperator)); + return lhs.equals(expression) && parentOperator.equals(childOperator); } - else - { - return false; - } - } - else - { - return false; } + return false; } } } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfOrIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfOrIntention.java index e87736b5..0f32cdf5 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfOrIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfOrIntention.java @@ -74,9 +74,12 @@ private static void replaceMergeableExplicitIf(JSElement token) throws Incorrect final String childConditionText = ParenthesesUtils.getParenthesized(childCondition, ParenthesesUtils.OR_PRECENDENCE); final String parentConditionText = ParenthesesUtils.getParenthesized(condition, ParenthesesUtils.OR_PRECENDENCE); final JSStatement parentThenBranch = parentStatement.getThen(); - final StringBuilder statement = - new StringBuilder("if (").append(parentConditionText).append(" || ").append(childConditionText).append(')') - .append(parentThenBranch.getText()); + final StringBuilder statement = new StringBuilder("if (") + .append(parentConditionText) + .append(" || ") + .append(childConditionText) + .append(')') + .append(parentThenBranch.getText()); final JSStatement childElseBranch = childStatement.getElse(); if (childElseBranch != null) diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeParallelIfsIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeParallelIfsIntention.java index f6ce3bd5..cfd25c3f 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeParallelIfsIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeParallelIfsIntention.java @@ -97,15 +97,10 @@ private static class MergeParallelIfsPredicate implements JSElementPredicate @Override public boolean satisfiedBy(@Nonnull PsiElement element) { - if (!(element instanceof JSIfStatement ifStatement && !ErrorUtil.containsError(element))) - { - return false; - } - - final PsiElement nextStatement = JSElementFactory.getNonWhiteSpaceSibling(element, true); - - return nextStatement instanceof JSIfStatement nextIfStatement - && !ErrorUtil.containsError(nextStatement) + return element instanceof JSIfStatement ifStatement + && !ErrorUtil.containsError(element) + && JSElementFactory.getNonWhiteSpaceSibling(element, true) instanceof JSIfStatement nextIfStatement + && !ErrorUtil.containsError(nextIfStatement) && ifStatementsCanBeMerged(ifStatement, nextIfStatement); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSRemoveRedundantElseIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSRemoveRedundantElseIntention.java index 7440961c..8e56eaf1 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSRemoveRedundantElseIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSRemoveRedundantElseIntention.java @@ -71,28 +71,27 @@ private static class RemoveRedundantElsePredicate implements JSElementPredicate @Override public boolean satisfiedBy(@Nonnull PsiElement element) { - if (!(element instanceof JSIfStatement ifStatement && !ErrorUtil.containsError(ifStatement)) - || ifStatement.getElse() == null) { - return false; - } - - JSStatement thenBranch = ifStatement.getThen(); - while (thenBranch instanceof JSBlockStatement thenBlockStatement) + if (element instanceof JSIfStatement ifStatement && !ErrorUtil.containsError(ifStatement) && ifStatement.getElse() != null) { - JSStatement[] thenStatements = thenBlockStatement.getStatements(); - - if (thenStatements.length == 0) - { - return true; - } - else if (thenStatements.length > 1) + JSStatement thenBranch = ifStatement.getThen(); + while (thenBranch instanceof JSBlockStatement thenBlockStatement) { - return false; + JSStatement[] thenStatements = thenBlockStatement.getStatements(); + + if (thenStatements.length == 0) + { + return true; + } + else if (thenStatements.length > 1) + { + return false; + } + thenBranch = thenStatements[0]; } - thenBranch = thenStatements[0]; - } - return thenBranch instanceof JSReturnStatement; + return thenBranch instanceof JSReturnStatement; + } + return false; } } } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfAndIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfAndIntention.java index f9a97ced..d95dd5ad 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfAndIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfAndIntention.java @@ -123,7 +123,9 @@ public boolean satisfiedBy(@Nonnull PsiElement element) final JSIfStatement ifStatement = (JSIfStatement) parent; final JSExpression condition = ifStatement.getCondition(); - return condition != null && !ErrorUtil.containsError(condition) && condition instanceof JSBinaryExpression binaryExpression + return condition != null + && !ErrorUtil.containsError(condition) + && condition instanceof JSBinaryExpression binaryExpression && JSTokenTypes.ANDAND.equals(binaryExpression.getOperationSign()); } } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfOrIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfOrIntention.java index 5617ce93..00dfa536 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfOrIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfOrIntention.java @@ -108,7 +108,9 @@ public boolean satisfiedBy(@Nonnull PsiElement element) final JSIfStatement ifStatement = (JSIfStatement) parent; final JSExpression condition = ifStatement.getCondition(); - return condition != null && !ErrorUtil.containsError(condition) && condition instanceof JSBinaryExpression binaryExpression + return condition != null + && !ErrorUtil.containsError(condition) + && condition instanceof JSBinaryExpression binaryExpression && JSTokenTypes.OROR.equals(binaryExpression.getOperationSign()); } } From d25b8da13ad9fa7736a05306be01089c3bd101e5 Mon Sep 17 00:00:00 2001 From: UNV Date: Wed, 17 Jul 2024 23:52:27 +0300 Subject: [PATCH 035/150] =?UTF-8?q?Reworking=20JSIntention.getText()=20?= =?UTF-8?q?=E2=80=94=20direct=20call=20to=20JSIntentionBundle.message()=20?= =?UTF-8?q?with=20constant=20key=20instead=20of=20key=20calculation.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lang/javascript/intention/JSIntention.java | 12 +++--------- .../intention/bool/JSDeMorgansLawIntention.java | 5 +++++ .../bool/JSFlipComparisonIntention.java | 5 +++++ .../bool/JSFlipConjunctionIntention.java | 5 +++++ .../bool/JSNegateComparisonIntention.java | 5 +++++ .../bool/JSRemoveBooleanEqualityIntention.java | 5 +++++ .../intention/braces/JSAddBracesIntention.java | 5 +++++ .../braces/JSRemoveBracesIntention.java | 5 +++++ .../JSChangeToCStyleCommentIntention.java | 6 ++++++ .../JSChangeToEndOfLineCommentIntention.java | 6 ++++++ .../JSMoveCommentToSeparateLineIntention.java | 6 ++++++ .../conditional/JSFlipConditionalIntention.java | 6 ++++++ .../intention/conditional/JSFlipIfIntention.java | 6 ++++++ .../JSRemoveConditionalIntention.java | 8 +++++++- .../JSReplaceConditionalWithIfIntention.java | 6 ++++++ .../constant/JSConstantExpressionIntention.java | 6 ++++++ .../JSConstantSubexpressionIntention.java | 5 +++++ .../increment/JSExtractIncrementIntention.java | 5 +++++ ...rgeDeclarationAndInitializationIntention.java | 6 ++++++ ...litDeclarationAndInitializationIntention.java | 6 ++++++ .../loop/JSMergeParallelForInLoopsIntention.java | 6 ++++++ .../loop/JSMergeParallelForLoopsIntention.java | 6 ++++++ .../JSConvertIntegerToDecimalIntention.java | 6 ++++++ .../number/JSConvertIntegerToHexIntention.java | 6 ++++++ .../number/JSConvertIntegerToOctalIntention.java | 6 ++++++ .../JSReplaceMultiplyWithShiftIntention.java | 5 +++++ .../JSReplaceShiftWithMultiplyIntention.java | 5 +++++ ...JSReplaceWithOperatorAssignmentIntention.java | 5 +++++ .../JSRemoveUnnecessaryParenthesesIntention.java | 16 ++++++++++++---- .../JSDoubleToSingleQuotedStringIntention.java | 6 ++++++ ...SJoinConcatenatedStringLiteralsIntention.java | 6 ++++++ .../JSSingleToDoubleQuotedStringIntention.java | 6 ++++++ .../JSReplaceIfWithSwitchIntention.java | 6 ++++++ .../JSReplaceSwitchWithIfIntention.java | 6 ++++++ .../trivialif/JSMergeElseIfIntention.java | 6 ++++++ .../trivialif/JSMergeIfAndIntention.java | 10 ++++++---- .../trivialif/JSMergeIfOrIntention.java | 6 ++++++ .../trivialif/JSMergeParallelIfsIntention.java | 6 ++++++ .../JSRemoveRedundantElseIntention.java | 6 ++++++ .../JSReplaceIfWithConditionalIntention.java | 12 +++++++----- .../trivialif/JSSimplifyIfElseIntention.java | 6 ++++++ .../trivialif/JSSplitElseIfIntention.java | 6 ++++++ .../trivialif/JSSplitIfAndIntention.java | 6 ++++++ .../trivialif/JSSplitIfOrIntention.java | 6 ++++++ 44 files changed, 257 insertions(+), 23 deletions(-) diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSIntention.java index 50592ffc..16a5b83a 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSIntention.java @@ -87,17 +87,11 @@ public boolean startInWriteAction() { return true; } - protected String getTextKey(@NonNls Object... suffixes) { - return JSIntentionBundle.getKey(this.getClass().getName().substring(PACKAGE_NAME.length() + 1).replace("JS", ""), - INTENTION_SUFFIX, - null, - suffixes); - } - @Override - @SuppressWarnings({"UnresolvedPropertyKey"}) @Nonnull public String getText() { - return JSIntentionBundle.message(this.getTextKey(DISPLAY_NAME)); + return getBasicText(); } + + protected abstract String getBasicText(); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSDeMorgansLawIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSDeMorgansLawIntention.java index a79dae7d..0701b01a 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSDeMorgansLawIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSDeMorgansLawIntention.java @@ -46,6 +46,11 @@ public class JSDeMorgansLawIntention extends JSMutablyNamedIntention @NonNls private static final String OR_OPERATOR = "||"; + @Override + protected String getBasicText() { + return JSIntentionBundle.message("bool.de-morgans-law.family-name"); + } + @Override @RequiredReadAction protected String getTextForElement(PsiElement element) diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipComparisonIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipComparisonIntention.java index 157fdaf6..45bdeef4 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipComparisonIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipComparisonIntention.java @@ -38,6 +38,11 @@ ) public class JSFlipComparisonIntention extends JSMutablyNamedIntention { + @Override + protected String getBasicText() { + return JSIntentionBundle.message("bool.flip-comparison.family-name"); + } + @Override @RequiredReadAction public String getTextForElement(PsiElement element) diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipConjunctionIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipConjunctionIntention.java index 54f9bb7c..0222659b 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipConjunctionIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipConjunctionIntention.java @@ -39,6 +39,11 @@ ) public class JSFlipConjunctionIntention extends JSMutablyNamedIntention { + @Override + protected String getBasicText() { + return JSIntentionBundle.message("bool.flip-conjunction.family-name"); + } + @Override @RequiredReadAction protected String getTextForElement(PsiElement element) diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSNegateComparisonIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSNegateComparisonIntention.java index a13dcb06..f7e628c8 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSNegateComparisonIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSNegateComparisonIntention.java @@ -38,6 +38,11 @@ ) public class JSNegateComparisonIntention extends JSMutablyNamedIntention { + @Override + protected String getBasicText() { + return JSIntentionBundle.message("bool.negate-comparison.family-name"); + } + @Override @RequiredReadAction public String getTextForElement(PsiElement element) diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSRemoveBooleanEqualityIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSRemoveBooleanEqualityIntention.java index d170f695..9ea71667 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSRemoveBooleanEqualityIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSRemoveBooleanEqualityIntention.java @@ -40,6 +40,11 @@ ) public class JSRemoveBooleanEqualityIntention extends JSMutablyNamedIntention { + @Override + protected String getBasicText() { + return JSIntentionBundle.message("bool.remove-boolean-equality.family-name"); + } + @Override protected String getTextForElement(PsiElement element) { diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSAddBracesIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSAddBracesIntention.java index d40cce39..653658b2 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSAddBracesIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSAddBracesIntention.java @@ -43,6 +43,11 @@ protected JSElementPredicate getElementPredicate() return new AddBracesPredicate(); } + @Override + protected String getBasicText() { + return JSIntentionBundle.message("braces.add-braces.family-name"); + } + @Override @RequiredReadAction protected String getTextForElement(PsiElement element) diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSRemoveBracesIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSRemoveBracesIntention.java index 7066c59a..e21e07e4 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSRemoveBracesIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSRemoveBracesIntention.java @@ -36,6 +36,11 @@ ) public class JSRemoveBracesIntention extends JSMutablyNamedIntention { + @Override + protected String getBasicText() { + return JSIntentionBundle.message("braces.remove-braces.family-name"); + } + @Override @Nonnull protected JSElementPredicate getElementPredicate() diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToCStyleCommentIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToCStyleCommentIntention.java index e7c93406..443af3de 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToCStyleCommentIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToCStyleCommentIntention.java @@ -26,6 +26,7 @@ import consulo.util.lang.StringUtil; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; +import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import jakarta.annotation.Nonnull; @@ -40,6 +41,11 @@ ) public class JSChangeToCStyleCommentIntention extends JSIntention { + @Override + protected String getBasicText() { + return JSIntentionBundle.message("comment.change-to-cstyle-comment.display-name"); + } + @Override @Nonnull protected JSElementPredicate getElementPredicate() diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToEndOfLineCommentIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToEndOfLineCommentIntention.java index 69dc738f..5f864938 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToEndOfLineCommentIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToEndOfLineCommentIntention.java @@ -27,6 +27,7 @@ import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; +import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import org.intellij.idea.lang.javascript.psiutil.TreeUtil; @@ -38,6 +39,11 @@ ) public class JSChangeToEndOfLineCommentIntention extends JSIntention { + @Override + protected String getBasicText() { + return JSIntentionBundle.message("comment.change-to-end-of-line-comment.display-name"); + } + @Override @Nonnull protected JSElementPredicate getElementPredicate() diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSMoveCommentToSeparateLineIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSMoveCommentToSeparateLineIntention.java index 540e80ff..de0f4027 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSMoveCommentToSeparateLineIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSMoveCommentToSeparateLineIntention.java @@ -27,6 +27,7 @@ import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; +import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import org.intellij.idea.lang.javascript.psiutil.TreeUtil; @@ -38,6 +39,11 @@ ) public class JSMoveCommentToSeparateLineIntention extends JSIntention { + @Override + protected String getBasicText() { + return JSIntentionBundle.message("comment.move-comment-to-separate-line.display-name"); + } + @Override @Nonnull protected JSElementPredicate getElementPredicate() diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipConditionalIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipConditionalIntention.java index 4956d147..717e15cc 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipConditionalIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipConditionalIntention.java @@ -25,6 +25,7 @@ import consulo.language.util.IncorrectOperationException; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; +import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.BoolUtils; import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; @@ -39,6 +40,11 @@ ) public class JSFlipConditionalIntention extends JSIntention { + @Override + protected String getBasicText() { + return JSIntentionBundle.message("conditional.flip-conditional.display-name"); + } + @Override @Nonnull public JSElementPredicate getElementPredicate() diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipIfIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipIfIntention.java index 8cdaf833..8c8f0cea 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipIfIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipIfIntention.java @@ -27,6 +27,7 @@ import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; +import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.BoolUtils; import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; @@ -39,6 +40,11 @@ ) public class JSFlipIfIntention extends JSIntention { + @Override + protected String getBasicText() { + return JSIntentionBundle.message("conditional.flip-if.display-name"); + } + @Override @Nonnull public JSElementPredicate getElementPredicate() diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSRemoveConditionalIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSRemoveConditionalIntention.java index 352e4d4f..7d15424d 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSRemoveConditionalIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSRemoveConditionalIntention.java @@ -24,6 +24,7 @@ import consulo.language.util.IncorrectOperationException; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; +import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.BoolUtils; import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; @@ -39,6 +40,11 @@ ) public class JSRemoveConditionalIntention extends JSIntention { + @Override + protected String getBasicText() { + return JSIntentionBundle.message("conditional.remove-conditional.display-name"); + } + @Override @Nonnull public JSElementPredicate getElementPredicate() @@ -74,7 +80,7 @@ public boolean satisfiedBy(@Nonnull PsiElement element) if (element instanceof JSConditionalExpression condition && !ErrorUtil.containsError(element)) { final JSExpression thenExpression = ParenthesesUtils.stripParentheses(condition.getThen()); - final JSExpression elseExpression = ParenthesesUtils.stripParentheses(condition.getElse()); + final JSExpression elseExpression = ParenthesesUtils.stripParentheses(condition.getElse()); if (condition.getCondition() == null || thenExpression == null || elseExpression == null) { diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSReplaceConditionalWithIfIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSReplaceConditionalWithIfIntention.java index 6e0f566e..f5a53f36 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSReplaceConditionalWithIfIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSReplaceConditionalWithIfIntention.java @@ -22,6 +22,7 @@ import consulo.language.util.IncorrectOperationException; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; +import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.ConditionalUtils; import jakarta.annotation.Nonnull; @@ -34,6 +35,11 @@ ) public class JSReplaceConditionalWithIfIntention extends JSIntention { + @Override + protected String getBasicText() { + return JSIntentionBundle.message("conditional.replace-conditional-with-if.display-name"); + } + @Override @Nonnull public JSElementPredicate getElementPredicate() diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantExpressionIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantExpressionIntention.java index 33db3d3b..4cf7b102 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantExpressionIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantExpressionIntention.java @@ -27,6 +27,7 @@ import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; +import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; import org.intellij.idea.lang.javascript.psiutil.ExpressionUtil; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; @@ -39,6 +40,11 @@ ) public class JSConstantExpressionIntention extends JSIntention { + @Override + protected String getBasicText() { + return JSIntentionBundle.message("constant.constant-expression.display-name"); + } + @Override @Nonnull protected JSElementPredicate getElementPredicate() diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantSubexpressionIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantSubexpressionIntention.java index 8005adb8..cff7a6bf 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantSubexpressionIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantSubexpressionIntention.java @@ -52,6 +52,11 @@ protected JSElementPredicate getElementPredicate() return new ConstantSubexpressionPredicate(); } + @Override + protected String getBasicText() { + return JSIntentionBundle.message("constant.constant-subexpression.family-name"); + } + @Override @RequiredReadAction protected String getTextForElement(PsiElement element) diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/increment/JSExtractIncrementIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/increment/JSExtractIncrementIntention.java index 8bac99d0..7e395914 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/increment/JSExtractIncrementIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/increment/JSExtractIncrementIntention.java @@ -36,6 +36,11 @@ ) public class JSExtractIncrementIntention extends JSMutablyNamedIntention { + @Override + protected String getBasicText() { + return JSIntentionBundle.message("increment.extract-increment.family-name"); + } + @Override public String getTextForElement(PsiElement element) { diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSMergeDeclarationAndInitializationIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSMergeDeclarationAndInitializationIntention.java index b0315b3f..89cbddba 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSMergeDeclarationAndInitializationIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSMergeDeclarationAndInitializationIntention.java @@ -24,6 +24,7 @@ import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; +import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; import org.intellij.idea.lang.javascript.psiutil.FindReferenceUtil; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; @@ -38,6 +39,11 @@ ) public class JSMergeDeclarationAndInitializationIntention extends JSIntention { + @Override + protected String getBasicText() { + return JSIntentionBundle.message("initialization.merge-declaration-and-initialization.display-name"); + } + @Override @Nonnull protected JSElementPredicate getElementPredicate() diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSSplitDeclarationAndInitializationIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSSplitDeclarationAndInitializationIntention.java index 4cbb4361..d2b4264b 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSSplitDeclarationAndInitializationIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSSplitDeclarationAndInitializationIntention.java @@ -28,6 +28,7 @@ import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; +import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import org.jetbrains.annotations.NonNls; @@ -46,6 +47,11 @@ public class JSSplitDeclarationAndInitializationIntention extends JSIntention @NonNls private static final String VAR_KEYWORD = "var "; + @Override + protected String getBasicText() { + return JSIntentionBundle.message("initialization.split-declaration-and-initialization.display-name"); + } + @Override @Nonnull protected JSElementPredicate getElementPredicate() diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForInLoopsIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForInLoopsIntention.java index f33934bc..b6150d0d 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForInLoopsIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForInLoopsIntention.java @@ -27,6 +27,7 @@ import consulo.language.util.IncorrectOperationException; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; +import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.ControlFlowUtils; import org.intellij.idea.lang.javascript.psiutil.EquivalenceChecker; import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; @@ -42,6 +43,11 @@ ) public class JSMergeParallelForInLoopsIntention extends JSIntention { + @Override + protected String getBasicText() { + return JSIntentionBundle.message("loop.merge-parallel-for-in-loops.display-name"); + } + @Override @Nonnull public JSElementPredicate getElementPredicate() diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForLoopsIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForLoopsIntention.java index 237d0c3b..67979209 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForLoopsIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForLoopsIntention.java @@ -26,6 +26,7 @@ import consulo.language.util.IncorrectOperationException; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; +import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.ControlFlowUtils; import org.intellij.idea.lang.javascript.psiutil.EquivalenceChecker; import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; @@ -41,6 +42,11 @@ ) public class JSMergeParallelForLoopsIntention extends JSIntention { + @Override + protected String getBasicText() { + return JSIntentionBundle.message("loop.merge-parallel-for-loops.display-name"); + } + @Override @Nonnull public JSElementPredicate getElementPredicate() diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToDecimalIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToDecimalIntention.java index 3d1fd970..3b85f4bf 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToDecimalIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToDecimalIntention.java @@ -22,6 +22,7 @@ import consulo.language.util.IncorrectOperationException; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; +import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import org.intellij.idea.lang.javascript.psiutil.NumberUtil; @@ -35,6 +36,11 @@ ) public class JSConvertIntegerToDecimalIntention extends JSIntention { + @Override + protected String getBasicText() { + return JSIntentionBundle.message("number.convert-integer-to-decimal.display-name"); + } + @Override @Nonnull public JSElementPredicate getElementPredicate() diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToHexIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToHexIntention.java index 4470a156..c6075c00 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToHexIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToHexIntention.java @@ -22,6 +22,7 @@ import consulo.language.util.IncorrectOperationException; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; +import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import org.intellij.idea.lang.javascript.psiutil.NumberUtil; @@ -35,6 +36,11 @@ ) public class JSConvertIntegerToHexIntention extends JSIntention { + @Override + protected String getBasicText() { + return JSIntentionBundle.message("number.convert-integer-to-hex.display-name"); + } + @Override @Nonnull public JSElementPredicate getElementPredicate() diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToOctalIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToOctalIntention.java index 6e5af520..0fce97cf 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToOctalIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToOctalIntention.java @@ -24,6 +24,7 @@ import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; +import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import org.intellij.idea.lang.javascript.psiutil.NumberUtil; @@ -35,6 +36,11 @@ ) public class JSConvertIntegerToOctalIntention extends JSIntention { + @Override + protected String getBasicText() { + return JSIntentionBundle.message("number.convert-integer-to-octal.display-name"); + } + @Override @Nonnull public JSElementPredicate getElementPredicate() diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceMultiplyWithShiftIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceMultiplyWithShiftIntention.java index f0907f09..38b15527 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceMultiplyWithShiftIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceMultiplyWithShiftIntention.java @@ -40,6 +40,11 @@ ) public class JSReplaceMultiplyWithShiftIntention extends JSMutablyNamedIntention { + @Override + protected String getBasicText() { + return JSIntentionBundle.message("number.replace-multiply-with-shift.family-name"); + } + @Override @RequiredReadAction protected String getTextForElement(PsiElement element) diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceShiftWithMultiplyIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceShiftWithMultiplyIntention.java index 38d27e1d..a2f57855 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceShiftWithMultiplyIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceShiftWithMultiplyIntention.java @@ -39,6 +39,11 @@ ) public class JSReplaceShiftWithMultiplyIntention extends JSMutablyNamedIntention { + @Override + protected String getBasicText() { + return JSIntentionBundle.message("number.replace-shift-with-multiply.family-name"); + } + @Override @RequiredReadAction protected String getTextForElement(PsiElement element) diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/opassign/JSReplaceWithOperatorAssignmentIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/opassign/JSReplaceWithOperatorAssignmentIntention.java index ab639f7e..c00eeece 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/opassign/JSReplaceWithOperatorAssignmentIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/opassign/JSReplaceWithOperatorAssignmentIntention.java @@ -40,6 +40,11 @@ ) public class JSReplaceWithOperatorAssignmentIntention extends JSMutablyNamedIntention { + @Override + protected String getBasicText() { + return JSIntentionBundle.message("opassign.replace-with-operator-assignment.family-name"); + } + @Override @RequiredReadAction public String getTextForElement(PsiElement element) diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/parenthesis/JSRemoveUnnecessaryParenthesesIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/parenthesis/JSRemoveUnnecessaryParenthesesIntention.java index 8195af84..f45bcc31 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/parenthesis/JSRemoveUnnecessaryParenthesesIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/parenthesis/JSRemoveUnnecessaryParenthesesIntention.java @@ -15,21 +15,24 @@ */ package org.intellij.idea.lang.javascript.intention.parenthesis; -import com.intellij.lang.javascript.psi.*; +import com.intellij.lang.javascript.psi.JSBinaryExpression; +import com.intellij.lang.javascript.psi.JSExpression; +import com.intellij.lang.javascript.psi.JSFunctionExpression; +import com.intellij.lang.javascript.psi.JSParenthesizedExpression; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; +import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import org.intellij.idea.lang.javascript.psiutil.ParenthesesUtils; -import jakarta.annotation.Nonnull; - @ExtensionImpl @IntentionMetaData( ignoreId = "JSRemoveUnnecessaryParenthesesIntention", @@ -38,6 +41,11 @@ ) public class JSRemoveUnnecessaryParenthesesIntention extends JSIntention { + @Override + protected String getBasicText() { + return JSIntentionBundle.message("parenthesis.remove-unnecessary-parentheses.display-name"); + } + @Override @Nonnull public JSElementPredicate getElementPredicate() @@ -70,7 +78,7 @@ public boolean satisfiedBy(@Nonnull PsiElement element) { if (!(expression.getParent() instanceof JSExpression parentExpression)) { - return true; + return true; } final JSExpression body = expression.getInnerExpression(); diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSDoubleToSingleQuotedStringIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSDoubleToSingleQuotedStringIntention.java index a9411491..f6faae5b 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSDoubleToSingleQuotedStringIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSDoubleToSingleQuotedStringIntention.java @@ -22,6 +22,7 @@ import consulo.language.util.IncorrectOperationException; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; +import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import jakarta.annotation.Nonnull; @@ -34,6 +35,11 @@ ) public class JSDoubleToSingleQuotedStringIntention extends JSIntention { + @Override + protected String getBasicText() { + return JSIntentionBundle.message("string.double-to-single-quoted-string.display-name"); + } + @Override @Nonnull protected JSElementPredicate getElementPredicate() diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSJoinConcatenatedStringLiteralsIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSJoinConcatenatedStringLiteralsIntention.java index 668dc5bf..43799a11 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSJoinConcatenatedStringLiteralsIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSJoinConcatenatedStringLiteralsIntention.java @@ -30,6 +30,7 @@ import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; +import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; @ExtensionImpl @@ -40,6 +41,11 @@ ) public class JSJoinConcatenatedStringLiteralsIntention extends JSIntention { + @Override + protected String getBasicText() { + return JSIntentionBundle.message("string.join-concatenated-string-literals.display-name"); + } + @Override @Nonnull protected JSElementPredicate getElementPredicate() diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSSingleToDoubleQuotedStringIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSSingleToDoubleQuotedStringIntention.java index 63c0b6f9..a379401d 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSSingleToDoubleQuotedStringIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSSingleToDoubleQuotedStringIntention.java @@ -23,6 +23,7 @@ import consulo.language.util.IncorrectOperationException; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; +import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import jakarta.annotation.Nonnull; @@ -35,6 +36,11 @@ ) public class JSSingleToDoubleQuotedStringIntention extends JSIntention { + @Override + protected String getBasicText() { + return JSIntentionBundle.message("string.single-to-double-quoted-string.display-name"); + } + @Override @Nonnull protected JSElementPredicate getElementPredicate() diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceIfWithSwitchIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceIfWithSwitchIntention.java index 14aeac2a..4af9ee58 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceIfWithSwitchIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceIfWithSwitchIntention.java @@ -26,6 +26,7 @@ import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; +import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.*; import org.jetbrains.annotations.NonNls; @@ -50,6 +51,11 @@ public class JSReplaceIfWithSwitchIntention extends JSIntention @NonNls private static final String BREAK_STATEMENT = "\nbreak;"; + @Override + protected String getBasicText() { + return JSIntentionBundle.message("switchtoif.replace-if-with-switch.display-name"); + } + @Override @Nonnull public JSElementPredicate getElementPredicate() diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceSwitchWithIfIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceSwitchWithIfIntention.java index aa0e8339..39ac33aa 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceSwitchWithIfIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceSwitchWithIfIntention.java @@ -28,6 +28,7 @@ import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; +import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.*; import org.jetbrains.annotations.NonNls; @@ -56,6 +57,11 @@ public class JSReplaceSwitchWithIfIntention extends JSIntention @NonNls private static final String DEFAULT_LABEL_NAME = "Label"; + @Override + protected String getBasicText() { + return JSIntentionBundle.message("switchtoif.replace-switch-with-if.display-name"); + } + @Override @Nonnull public JSElementPredicate getElementPredicate() diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeElseIfIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeElseIfIntention.java index d48f5458..f36c5ef8 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeElseIfIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeElseIfIntention.java @@ -25,6 +25,7 @@ import consulo.language.util.IncorrectOperationException; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; +import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; @@ -38,6 +39,11 @@ ) public class JSMergeElseIfIntention extends JSIntention { + @Override + protected String getBasicText() { + return JSIntentionBundle.message("trivialif.merge-else-if.display-name"); + } + @Override @Nonnull public JSElementPredicate getElementPredicate() diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfAndIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfAndIntention.java index c6379381..219954f1 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfAndIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfAndIntention.java @@ -26,11 +26,11 @@ import consulo.language.util.IncorrectOperationException; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; +import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.ConditionalUtils; import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import org.intellij.idea.lang.javascript.psiutil.ParenthesesUtils; -import org.jetbrains.annotations.NonNls; import jakarta.annotation.Nonnull; @@ -42,8 +42,10 @@ ) public class JSMergeIfAndIntention extends JSIntention { - @NonNls - private static final String IF_STATEMENT_PREFIX = "if ("; + @Override + protected String getBasicText() { + return JSIntentionBundle.message("trivialif.merge-if-and.display-name"); + } @Override @Nonnull @@ -66,7 +68,7 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat final String childConditionText = ParenthesesUtils.getParenthesized(childCondition, ParenthesesUtils.AND_PRECENDENCE); final String parentConditionText = ParenthesesUtils.getParenthesized(parentCondition, ParenthesesUtils.AND_PRECENDENCE); final JSStatement childThenBranch = childStatement.getThen(); - final String statement = IF_STATEMENT_PREFIX + parentConditionText + " && " + childConditionText + ')' + childThenBranch.getText(); + final String statement = "if (" + parentConditionText + " && " + childConditionText + ')' + childThenBranch.getText(); JSElementFactory.replaceStatement(parentStatement, statement); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfOrIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfOrIntention.java index 0f32cdf5..1fa8b844 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfOrIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfOrIntention.java @@ -26,6 +26,7 @@ import consulo.language.util.IncorrectOperationException; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; +import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.*; import jakarta.annotation.Nonnull; @@ -38,6 +39,11 @@ ) public class JSMergeIfOrIntention extends JSIntention { + @Override + protected String getBasicText() { + return JSIntentionBundle.message("trivialif.merge-if-or.display-name"); + } + @Override @Nonnull public JSElementPredicate getElementPredicate() diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeParallelIfsIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeParallelIfsIntention.java index cfd25c3f..5efae060 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeParallelIfsIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeParallelIfsIntention.java @@ -25,6 +25,7 @@ import consulo.language.util.IncorrectOperationException; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; +import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.ControlFlowUtils; import org.intellij.idea.lang.javascript.psiutil.EquivalenceChecker; import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; @@ -40,6 +41,11 @@ ) public class JSMergeParallelIfsIntention extends JSIntention { + @Override + protected String getBasicText() { + return JSIntentionBundle.message("trivialif.merge-parallel-ifs.display-name"); + } + @Override @Nonnull public JSElementPredicate getElementPredicate() diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSRemoveRedundantElseIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSRemoveRedundantElseIntention.java index 8e56eaf1..4182bb92 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSRemoveRedundantElseIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSRemoveRedundantElseIntention.java @@ -27,6 +27,7 @@ import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; +import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; @@ -38,6 +39,11 @@ ) public class JSRemoveRedundantElseIntention extends JSIntention { + @Override + protected String getBasicText() { + return JSIntentionBundle.message("trivialif.remove-redundant-else.display-name"); + } + @Override @Nonnull public JSElementPredicate getElementPredicate() diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSReplaceIfWithConditionalIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSReplaceIfWithConditionalIntention.java index 48863dc3..9490a788 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSReplaceIfWithConditionalIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSReplaceIfWithConditionalIntention.java @@ -26,8 +26,8 @@ import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; +import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.*; -import org.jetbrains.annotations.NonNls; @ExtensionImpl @IntentionMetaData( @@ -37,8 +37,10 @@ ) public class JSReplaceIfWithConditionalIntention extends JSIntention { - @NonNls - private static final String RETURN_KEYWORD = "return "; + @Override + protected String getBasicText() { + return JSIntentionBundle.message("trivialif.replace-if-with-conditional.display-name"); + } @Override @Nonnull @@ -65,7 +67,7 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat } else if (ReplaceIfWithConditionalPredicate.isReplaceableReturn(ifStatement)) { - final StringBuilder newStatement = new StringBuilder(RETURN_KEYWORD); + final StringBuilder newStatement = new StringBuilder("return "); getReturnReplacement(newStatement, ifStatement); newStatement.append(';'); @@ -154,7 +156,7 @@ private static String getImplicitReturnReplacement(JSExpression condition, JSRet final String elseValue = ParenthesesUtils.getParenthesized(elseReturnValue, ParenthesesUtils.CONDITIONAL_PRECENDENCE); final String conditionText = ParenthesesUtils.getParenthesized(condition, ParenthesesUtils.CONDITIONAL_PRECENDENCE); - return RETURN_KEYWORD + conditionText + '?' + thenValue + ':' + elseValue + ';'; + return "return " + conditionText + '?' + thenValue + ':' + elseValue + ';'; } private static class ReplaceIfWithConditionalPredicate implements JSElementPredicate diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSimplifyIfElseIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSimplifyIfElseIntention.java index 63149a54..67bc5f94 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSimplifyIfElseIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSimplifyIfElseIntention.java @@ -24,6 +24,7 @@ import consulo.language.util.IncorrectOperationException; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; +import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.ConditionalUtils; import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; @@ -37,6 +38,11 @@ ) public class JSSimplifyIfElseIntention extends JSIntention { + @Override + protected String getBasicText() { + return JSIntentionBundle.message("trivialif.simplify-if-else.display-name"); + } + @Override @Nonnull public JSElementPredicate getElementPredicate() diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitElseIfIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitElseIfIntention.java index b3b153f6..9fe75aa3 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitElseIfIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitElseIfIntention.java @@ -23,6 +23,7 @@ import consulo.language.util.IncorrectOperationException; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; +import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; @@ -36,6 +37,11 @@ ) public class JSSplitElseIfIntention extends JSIntention { + @Override + protected String getBasicText() { + return JSIntentionBundle.message("trivialif.split-else-if.display-name"); + } + @Override @Nonnull public JSElementPredicate getElementPredicate() diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfAndIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfAndIntention.java index d95dd5ad..cfb66ea3 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfAndIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfAndIntention.java @@ -28,6 +28,7 @@ import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; +import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import org.intellij.idea.lang.javascript.psiutil.ParenthesesUtils; @@ -48,6 +49,11 @@ public class JSSplitIfAndIntention extends JSIntention @NonNls private static final String ELSE_KEYWORD = "else "; + @Override + protected String getBasicText() { + return JSIntentionBundle.message("trivialif.split-if-and.display-name"); + } + @Override @Nonnull public JSElementPredicate getElementPredicate() diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfOrIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfOrIntention.java index 00dfa536..1b57b4d9 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfOrIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfOrIntention.java @@ -27,6 +27,7 @@ import consulo.language.util.IncorrectOperationException; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; +import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import org.intellij.idea.lang.javascript.psiutil.ParenthesesUtils; @@ -41,6 +42,11 @@ ) public class JSSplitIfOrIntention extends JSIntention { + @Override + protected String getBasicText() { + return JSIntentionBundle.message("trivialif.split-if-or.display-name"); + } + @Override @Nonnull public JSElementPredicate getElementPredicate() From b98c3400deddd4064b9a90b7b4e90752f8a81a3b Mon Sep 17 00:00:00 2001 From: UNV Date: Thu, 18 Jul 2024 12:07:26 +0300 Subject: [PATCH 036/150] Intention fixes after code-review. --- .../javascript/intention/JSIntention.java | 6 +----- .../intention/JSMutablyNamedIntention.java | 9 ++++----- .../bool/JSDeMorgansLawIntention.java | 4 +++- .../bool/JSFlipComparisonIntention.java | 4 +++- .../bool/JSFlipConjunctionIntention.java | 4 +++- .../bool/JSNegateComparisonIntention.java | 4 +++- .../JSRemoveBooleanEqualityIntention.java | 4 +++- .../braces/JSAddBracesIntention.java | 6 ++++-- .../braces/JSRemoveBracesIntention.java | 4 +++- .../JSChangeToCStyleCommentIntention.java | 4 +++- .../JSChangeToEndOfLineCommentIntention.java | 4 +++- .../JSMoveCommentToSeparateLineIntention.java | 4 +++- .../JSFlipConditionalIntention.java | 4 +++- .../conditional/JSFlipIfIntention.java | 4 +++- .../JSRemoveConditionalIntention.java | 4 +++- .../JSReplaceConditionalWithIfIntention.java | 4 +++- .../JSConstantExpressionIntention.java | 4 +++- .../JSConstantSubexpressionIntention.java | 6 ++++-- .../JSExtractIncrementIntention.java | 4 +++- ...DeclarationAndInitializationIntention.java | 4 +++- ...DeclarationAndInitializationIntention.java | 4 +++- .../JSMergeParallelForInLoopsIntention.java | 4 +++- .../JSMergeParallelForLoopsIntention.java | 4 +++- .../JSConvertIntegerToDecimalIntention.java | 4 +++- .../JSConvertIntegerToHexIntention.java | 4 +++- .../JSConvertIntegerToOctalIntention.java | 4 +++- .../JSReplaceMultiplyWithShiftIntention.java | 4 +++- .../JSReplaceShiftWithMultiplyIntention.java | 4 +++- ...eplaceWithOperatorAssignmentIntention.java | 4 +++- ...RemoveUnnecessaryParenthesesIntention.java | 4 +++- ...JSDoubleToSingleQuotedStringIntention.java | 4 +++- ...inConcatenatedStringLiteralsIntention.java | 4 +++- ...JSSingleToDoubleQuotedStringIntention.java | 4 +++- .../JSReplaceIfWithSwitchIntention.java | 4 +++- .../JSReplaceSwitchWithIfIntention.java | 4 +++- .../trivialif/JSMergeElseIfIntention.java | 4 +++- .../trivialif/JSMergeIfAndIntention.java | 4 +++- .../trivialif/JSMergeIfOrIntention.java | 4 +++- .../JSMergeParallelIfsIntention.java | 4 +++- .../JSRemoveRedundantElseIntention.java | 4 +++- .../JSReplaceIfWithConditionalIntention.java | 4 +++- .../trivialif/JSSimplifyIfElseIntention.java | 4 +++- .../trivialif/JSSplitElseIfIntention.java | 4 +++- .../trivialif/JSSplitIfAndIntention.java | 20 +++++++------------ .../trivialif/JSSplitIfOrIntention.java | 4 +++- 45 files changed, 140 insertions(+), 67 deletions(-) diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSIntention.java index 16a5b83a..af5f9e0d 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSIntention.java @@ -89,9 +89,5 @@ public boolean startInWriteAction() { @Override @Nonnull - public String getText() { - return getBasicText(); - } - - protected abstract String getBasicText(); + public abstract String getText(); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSMutablyNamedIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSMutablyNamedIntention.java index 586bd636..f28b31cb 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSMutablyNamedIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSMutablyNamedIntention.java @@ -32,13 +32,12 @@ public abstract class JSMutablyNamedIntention extends JSIntention @Nonnull public String getText() { - if (myText != null) - { - return myText; - } - return super.getText(); + return myText != null ? myText : getBasicText(); } + @Nonnull + protected abstract String getBasicText(); + @Override public boolean isAvailable(@Nonnull Project project, Editor editor, @Nullable PsiElement node) { diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSDeMorgansLawIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSDeMorgansLawIntention.java index 0701b01a..76492915 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSDeMorgansLawIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSDeMorgansLawIntention.java @@ -47,7 +47,9 @@ public class JSDeMorgansLawIntention extends JSMutablyNamedIntention private static final String OR_OPERATOR = "||"; @Override - protected String getBasicText() { + @Nonnull + public String getText() + { return JSIntentionBundle.message("bool.de-morgans-law.family-name"); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipComparisonIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipComparisonIntention.java index 45bdeef4..35f96cae 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipComparisonIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipComparisonIntention.java @@ -38,8 +38,10 @@ ) public class JSFlipComparisonIntention extends JSMutablyNamedIntention { + @Nonnull @Override - protected String getBasicText() { + protected String getBasicText() + { return JSIntentionBundle.message("bool.flip-comparison.family-name"); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipConjunctionIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipConjunctionIntention.java index 0222659b..a1f65eb8 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipConjunctionIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipConjunctionIntention.java @@ -39,8 +39,10 @@ ) public class JSFlipConjunctionIntention extends JSMutablyNamedIntention { + @Nonnull @Override - protected String getBasicText() { + protected String getBasicText() + { return JSIntentionBundle.message("bool.flip-conjunction.family-name"); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSNegateComparisonIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSNegateComparisonIntention.java index f7e628c8..e0aeb5e2 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSNegateComparisonIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSNegateComparisonIntention.java @@ -38,8 +38,10 @@ ) public class JSNegateComparisonIntention extends JSMutablyNamedIntention { + @Nonnull @Override - protected String getBasicText() { + protected String getBasicText() + { return JSIntentionBundle.message("bool.negate-comparison.family-name"); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSRemoveBooleanEqualityIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSRemoveBooleanEqualityIntention.java index 9ea71667..b386d2f3 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSRemoveBooleanEqualityIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSRemoveBooleanEqualityIntention.java @@ -40,8 +40,10 @@ ) public class JSRemoveBooleanEqualityIntention extends JSMutablyNamedIntention { + @Nonnull @Override - protected String getBasicText() { + protected String getBasicText() + { return JSIntentionBundle.message("bool.remove-boolean-equality.family-name"); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSAddBracesIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSAddBracesIntention.java index 653658b2..efbce779 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSAddBracesIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSAddBracesIntention.java @@ -43,8 +43,10 @@ protected JSElementPredicate getElementPredicate() return new AddBracesPredicate(); } - @Override - protected String getBasicText() { + @Nonnull + @Override + protected String getBasicText() + { return JSIntentionBundle.message("braces.add-braces.family-name"); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSRemoveBracesIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSRemoveBracesIntention.java index e21e07e4..42811dd1 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSRemoveBracesIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSRemoveBracesIntention.java @@ -36,8 +36,10 @@ ) public class JSRemoveBracesIntention extends JSMutablyNamedIntention { + @Nonnull @Override - protected String getBasicText() { + protected String getBasicText() + { return JSIntentionBundle.message("braces.remove-braces.family-name"); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToCStyleCommentIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToCStyleCommentIntention.java index 443af3de..f62299d3 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToCStyleCommentIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToCStyleCommentIntention.java @@ -42,7 +42,9 @@ public class JSChangeToCStyleCommentIntention extends JSIntention { @Override - protected String getBasicText() { + @Nonnull + public String getText() + { return JSIntentionBundle.message("comment.change-to-cstyle-comment.display-name"); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToEndOfLineCommentIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToEndOfLineCommentIntention.java index 5f864938..2c6e95c8 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToEndOfLineCommentIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToEndOfLineCommentIntention.java @@ -40,7 +40,9 @@ public class JSChangeToEndOfLineCommentIntention extends JSIntention { @Override - protected String getBasicText() { + @Nonnull + public String getText() + { return JSIntentionBundle.message("comment.change-to-end-of-line-comment.display-name"); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSMoveCommentToSeparateLineIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSMoveCommentToSeparateLineIntention.java index de0f4027..67b0c4a1 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSMoveCommentToSeparateLineIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSMoveCommentToSeparateLineIntention.java @@ -40,7 +40,9 @@ public class JSMoveCommentToSeparateLineIntention extends JSIntention { @Override - protected String getBasicText() { + @Nonnull + public String getText() + { return JSIntentionBundle.message("comment.move-comment-to-separate-line.display-name"); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipConditionalIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipConditionalIntention.java index 717e15cc..c553c11b 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipConditionalIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipConditionalIntention.java @@ -41,7 +41,9 @@ public class JSFlipConditionalIntention extends JSIntention { @Override - protected String getBasicText() { + @Nonnull + public String getText() + { return JSIntentionBundle.message("conditional.flip-conditional.display-name"); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipIfIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipIfIntention.java index 8c8f0cea..e65c5368 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipIfIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipIfIntention.java @@ -41,7 +41,9 @@ public class JSFlipIfIntention extends JSIntention { @Override - protected String getBasicText() { + @Nonnull + public String getText() + { return JSIntentionBundle.message("conditional.flip-if.display-name"); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSRemoveConditionalIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSRemoveConditionalIntention.java index 7d15424d..8ef06e4a 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSRemoveConditionalIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSRemoveConditionalIntention.java @@ -41,7 +41,9 @@ public class JSRemoveConditionalIntention extends JSIntention { @Override - protected String getBasicText() { + @Nonnull + public String getText() + { return JSIntentionBundle.message("conditional.remove-conditional.display-name"); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSReplaceConditionalWithIfIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSReplaceConditionalWithIfIntention.java index f5a53f36..542de20b 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSReplaceConditionalWithIfIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSReplaceConditionalWithIfIntention.java @@ -36,7 +36,9 @@ public class JSReplaceConditionalWithIfIntention extends JSIntention { @Override - protected String getBasicText() { + @Nonnull + public String getText() + { return JSIntentionBundle.message("conditional.replace-conditional-with-if.display-name"); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantExpressionIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantExpressionIntention.java index 4cf7b102..22f12b9a 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantExpressionIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantExpressionIntention.java @@ -41,7 +41,9 @@ public class JSConstantExpressionIntention extends JSIntention { @Override - protected String getBasicText() { + @Nonnull + public String getText() + { return JSIntentionBundle.message("constant.constant-expression.display-name"); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantSubexpressionIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantSubexpressionIntention.java index cff7a6bf..14822720 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantSubexpressionIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantSubexpressionIntention.java @@ -52,8 +52,10 @@ protected JSElementPredicate getElementPredicate() return new ConstantSubexpressionPredicate(); } - @Override - protected String getBasicText() { + @Nonnull + @Override + protected String getBasicText() + { return JSIntentionBundle.message("constant.constant-subexpression.family-name"); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/increment/JSExtractIncrementIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/increment/JSExtractIncrementIntention.java index 7e395914..207991f1 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/increment/JSExtractIncrementIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/increment/JSExtractIncrementIntention.java @@ -37,7 +37,9 @@ public class JSExtractIncrementIntention extends JSMutablyNamedIntention { @Override - protected String getBasicText() { + @Nonnull + protected String getBasicText() + { return JSIntentionBundle.message("increment.extract-increment.family-name"); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSMergeDeclarationAndInitializationIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSMergeDeclarationAndInitializationIntention.java index 89cbddba..b5c78155 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSMergeDeclarationAndInitializationIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSMergeDeclarationAndInitializationIntention.java @@ -40,7 +40,9 @@ public class JSMergeDeclarationAndInitializationIntention extends JSIntention { @Override - protected String getBasicText() { + @Nonnull + public String getText() + { return JSIntentionBundle.message("initialization.merge-declaration-and-initialization.display-name"); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSSplitDeclarationAndInitializationIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSSplitDeclarationAndInitializationIntention.java index d2b4264b..8acf9b02 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSSplitDeclarationAndInitializationIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSSplitDeclarationAndInitializationIntention.java @@ -48,7 +48,9 @@ public class JSSplitDeclarationAndInitializationIntention extends JSIntention private static final String VAR_KEYWORD = "var "; @Override - protected String getBasicText() { + @Nonnull + public String getText() + { return JSIntentionBundle.message("initialization.split-declaration-and-initialization.display-name"); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForInLoopsIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForInLoopsIntention.java index b6150d0d..6a065081 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForInLoopsIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForInLoopsIntention.java @@ -44,7 +44,9 @@ public class JSMergeParallelForInLoopsIntention extends JSIntention { @Override - protected String getBasicText() { + @Nonnull + public String getText() + { return JSIntentionBundle.message("loop.merge-parallel-for-in-loops.display-name"); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForLoopsIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForLoopsIntention.java index 67979209..7a517424 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForLoopsIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForLoopsIntention.java @@ -43,7 +43,9 @@ public class JSMergeParallelForLoopsIntention extends JSIntention { @Override - protected String getBasicText() { + @Nonnull + public String getText() + { return JSIntentionBundle.message("loop.merge-parallel-for-loops.display-name"); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToDecimalIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToDecimalIntention.java index 3b85f4bf..d0e7585e 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToDecimalIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToDecimalIntention.java @@ -37,7 +37,9 @@ public class JSConvertIntegerToDecimalIntention extends JSIntention { @Override - protected String getBasicText() { + @Nonnull + public String getText() + { return JSIntentionBundle.message("number.convert-integer-to-decimal.display-name"); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToHexIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToHexIntention.java index c6075c00..5f138df4 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToHexIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToHexIntention.java @@ -37,7 +37,9 @@ public class JSConvertIntegerToHexIntention extends JSIntention { @Override - protected String getBasicText() { + @Nonnull + public String getText() + { return JSIntentionBundle.message("number.convert-integer-to-hex.display-name"); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToOctalIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToOctalIntention.java index 0fce97cf..9b777eda 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToOctalIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToOctalIntention.java @@ -37,7 +37,9 @@ public class JSConvertIntegerToOctalIntention extends JSIntention { @Override - protected String getBasicText() { + @Nonnull + public String getText() + { return JSIntentionBundle.message("number.convert-integer-to-octal.display-name"); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceMultiplyWithShiftIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceMultiplyWithShiftIntention.java index 38b15527..68073578 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceMultiplyWithShiftIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceMultiplyWithShiftIntention.java @@ -40,8 +40,10 @@ ) public class JSReplaceMultiplyWithShiftIntention extends JSMutablyNamedIntention { + @Nonnull @Override - protected String getBasicText() { + protected String getBasicText() + { return JSIntentionBundle.message("number.replace-multiply-with-shift.family-name"); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceShiftWithMultiplyIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceShiftWithMultiplyIntention.java index a2f57855..97fbd731 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceShiftWithMultiplyIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceShiftWithMultiplyIntention.java @@ -39,8 +39,10 @@ ) public class JSReplaceShiftWithMultiplyIntention extends JSMutablyNamedIntention { + @Nonnull @Override - protected String getBasicText() { + protected String getBasicText() + { return JSIntentionBundle.message("number.replace-shift-with-multiply.family-name"); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/opassign/JSReplaceWithOperatorAssignmentIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/opassign/JSReplaceWithOperatorAssignmentIntention.java index c00eeece..4ed1416b 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/opassign/JSReplaceWithOperatorAssignmentIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/opassign/JSReplaceWithOperatorAssignmentIntention.java @@ -40,8 +40,10 @@ ) public class JSReplaceWithOperatorAssignmentIntention extends JSMutablyNamedIntention { + @Nonnull @Override - protected String getBasicText() { + protected String getBasicText() + { return JSIntentionBundle.message("opassign.replace-with-operator-assignment.family-name"); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/parenthesis/JSRemoveUnnecessaryParenthesesIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/parenthesis/JSRemoveUnnecessaryParenthesesIntention.java index f45bcc31..20fbea32 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/parenthesis/JSRemoveUnnecessaryParenthesesIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/parenthesis/JSRemoveUnnecessaryParenthesesIntention.java @@ -42,7 +42,9 @@ public class JSRemoveUnnecessaryParenthesesIntention extends JSIntention { @Override - protected String getBasicText() { + @Nonnull + public String getText() + { return JSIntentionBundle.message("parenthesis.remove-unnecessary-parentheses.display-name"); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSDoubleToSingleQuotedStringIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSDoubleToSingleQuotedStringIntention.java index f6faae5b..869040a4 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSDoubleToSingleQuotedStringIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSDoubleToSingleQuotedStringIntention.java @@ -36,7 +36,9 @@ public class JSDoubleToSingleQuotedStringIntention extends JSIntention { @Override - protected String getBasicText() { + @Nonnull + public String getText() + { return JSIntentionBundle.message("string.double-to-single-quoted-string.display-name"); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSJoinConcatenatedStringLiteralsIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSJoinConcatenatedStringLiteralsIntention.java index 43799a11..32e8caee 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSJoinConcatenatedStringLiteralsIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSJoinConcatenatedStringLiteralsIntention.java @@ -42,7 +42,9 @@ public class JSJoinConcatenatedStringLiteralsIntention extends JSIntention { @Override - protected String getBasicText() { + @Nonnull + public String getText() + { return JSIntentionBundle.message("string.join-concatenated-string-literals.display-name"); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSSingleToDoubleQuotedStringIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSSingleToDoubleQuotedStringIntention.java index a379401d..3084ba6c 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSSingleToDoubleQuotedStringIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSSingleToDoubleQuotedStringIntention.java @@ -37,7 +37,9 @@ public class JSSingleToDoubleQuotedStringIntention extends JSIntention { @Override - protected String getBasicText() { + @Nonnull + public String getText() + { return JSIntentionBundle.message("string.single-to-double-quoted-string.display-name"); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceIfWithSwitchIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceIfWithSwitchIntention.java index 4af9ee58..50d77834 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceIfWithSwitchIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceIfWithSwitchIntention.java @@ -52,7 +52,9 @@ public class JSReplaceIfWithSwitchIntention extends JSIntention private static final String BREAK_STATEMENT = "\nbreak;"; @Override - protected String getBasicText() { + @Nonnull + public String getText() + { return JSIntentionBundle.message("switchtoif.replace-if-with-switch.display-name"); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceSwitchWithIfIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceSwitchWithIfIntention.java index 39ac33aa..a39644a9 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceSwitchWithIfIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceSwitchWithIfIntention.java @@ -58,7 +58,9 @@ public class JSReplaceSwitchWithIfIntention extends JSIntention private static final String DEFAULT_LABEL_NAME = "Label"; @Override - protected String getBasicText() { + @Nonnull + public String getText() + { return JSIntentionBundle.message("switchtoif.replace-switch-with-if.display-name"); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeElseIfIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeElseIfIntention.java index f36c5ef8..d3fc5f83 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeElseIfIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeElseIfIntention.java @@ -40,7 +40,9 @@ public class JSMergeElseIfIntention extends JSIntention { @Override - protected String getBasicText() { + @Nonnull + public String getText() + { return JSIntentionBundle.message("trivialif.merge-else-if.display-name"); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfAndIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfAndIntention.java index 219954f1..b57acdff 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfAndIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfAndIntention.java @@ -43,7 +43,9 @@ public class JSMergeIfAndIntention extends JSIntention { @Override - protected String getBasicText() { + @Nonnull + public String getText() + { return JSIntentionBundle.message("trivialif.merge-if-and.display-name"); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfOrIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfOrIntention.java index 1fa8b844..ac672568 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfOrIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfOrIntention.java @@ -40,7 +40,9 @@ public class JSMergeIfOrIntention extends JSIntention { @Override - protected String getBasicText() { + @Nonnull + public String getText() + { return JSIntentionBundle.message("trivialif.merge-if-or.display-name"); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeParallelIfsIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeParallelIfsIntention.java index 5efae060..94f529da 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeParallelIfsIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeParallelIfsIntention.java @@ -42,7 +42,9 @@ public class JSMergeParallelIfsIntention extends JSIntention { @Override - protected String getBasicText() { + @Nonnull + public String getText() + { return JSIntentionBundle.message("trivialif.merge-parallel-ifs.display-name"); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSRemoveRedundantElseIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSRemoveRedundantElseIntention.java index 4182bb92..c0b3d59e 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSRemoveRedundantElseIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSRemoveRedundantElseIntention.java @@ -40,7 +40,9 @@ public class JSRemoveRedundantElseIntention extends JSIntention { @Override - protected String getBasicText() { + @Nonnull + public String getText() + { return JSIntentionBundle.message("trivialif.remove-redundant-else.display-name"); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSReplaceIfWithConditionalIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSReplaceIfWithConditionalIntention.java index 9490a788..e6935052 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSReplaceIfWithConditionalIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSReplaceIfWithConditionalIntention.java @@ -38,7 +38,9 @@ public class JSReplaceIfWithConditionalIntention extends JSIntention { @Override - protected String getBasicText() { + @Nonnull + public String getText() + { return JSIntentionBundle.message("trivialif.replace-if-with-conditional.display-name"); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSimplifyIfElseIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSimplifyIfElseIntention.java index 67bc5f94..180a1814 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSimplifyIfElseIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSimplifyIfElseIntention.java @@ -38,8 +38,10 @@ ) public class JSSimplifyIfElseIntention extends JSIntention { + @Nonnull @Override - protected String getBasicText() { + public String getText() + { return JSIntentionBundle.message("trivialif.simplify-if-else.display-name"); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitElseIfIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitElseIfIntention.java index 9fe75aa3..545d9a26 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitElseIfIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitElseIfIntention.java @@ -38,7 +38,9 @@ public class JSSplitElseIfIntention extends JSIntention { @Override - protected String getBasicText() { + @Nonnull + public String getText() + { return JSIntentionBundle.message("trivialif.split-else-if.display-name"); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfAndIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfAndIntention.java index cfb66ea3..b99d964b 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfAndIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfAndIntention.java @@ -32,7 +32,6 @@ import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import org.intellij.idea.lang.javascript.psiutil.ParenthesesUtils; -import org.jetbrains.annotations.NonNls; @ExtensionImpl @IntentionMetaData( @@ -42,15 +41,10 @@ ) public class JSSplitIfAndIntention extends JSIntention { - @NonNls - private static final String IF_STATEMENT_PREFIX = "if ("; - @NonNls - private static final String INNER_IF_STATEMENT_PREFIX = ") {\n if ("; - @NonNls - private static final String ELSE_KEYWORD = "else "; - @Override - protected String getBasicText() { + @Nonnull + public String getText() + { return JSIntentionBundle.message("trivialif.split-if-and.display-name"); } @@ -87,20 +81,20 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat final StringBuilder statement = new StringBuilder(ifStatement.getTextLength() + elseLength + 30); - statement.append(IF_STATEMENT_PREFIX) + statement.append("if (") .append(lhsText) - .append(INNER_IF_STATEMENT_PREFIX) + .append(") {\n if (") .append(rhsText) .append(')') .append(thenText); if (elseBranch != null) { - statement.append(ELSE_KEYWORD).append(elseText); + statement.append("else ").append(elseText); } statement.append('}'); if (elseBranch != null) { - statement.append(ELSE_KEYWORD).append(elseText); + statement.append("else ").append(elseText); } JSElementFactory.replaceStatement(ifStatement, statement.toString()); diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfOrIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfOrIntention.java index 1b57b4d9..e693b5e2 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfOrIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfOrIntention.java @@ -43,7 +43,9 @@ public class JSSplitIfOrIntention extends JSIntention { @Override - protected String getBasicText() { + @Nonnull + public String getText() + { return JSIntentionBundle.message("trivialif.split-if-or.display-name"); } From 8e019872b4985c786880c73b2cda6dc8638c8884 Mon Sep 17 00:00:00 2001 From: UNV Date: Thu, 18 Jul 2024 12:20:25 +0300 Subject: [PATCH 037/150] Compilation fix for JSDeMorgansLawIntention. --- .../lang/javascript/intention/bool/JSDeMorgansLawIntention.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSDeMorgansLawIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSDeMorgansLawIntention.java index 76492915..202c2828 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSDeMorgansLawIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSDeMorgansLawIntention.java @@ -48,7 +48,7 @@ public class JSDeMorgansLawIntention extends JSMutablyNamedIntention @Override @Nonnull - public String getText() + protected String getBasicText() { return JSIntentionBundle.message("bool.de-morgans-law.family-name"); } From 6a2807d05826c2ad616a44f4a01030a8cda005ca Mon Sep 17 00:00:00 2001 From: UNV Date: Fri, 19 Jul 2024 13:54:24 +0300 Subject: [PATCH 038/150] Removed unused properties from JavaScriptIntentionBundle.properties, renamed used ones in order to exclude dashes. --- .../bool/JSDeMorgansLawIntention.java | 19 +- .../bool/JSFlipComparisonIntention.java | 8 +- .../bool/JSFlipConjunctionIntention.java | 4 +- .../bool/JSNegateComparisonIntention.java | 6 +- .../JSRemoveBooleanEqualityIntention.java | 4 +- .../braces/JSAddBracesIntention.java | 4 +- .../braces/JSRemoveBracesIntention.java | 4 +- .../JSChangeToCStyleCommentIntention.java | 2 +- .../JSChangeToEndOfLineCommentIntention.java | 2 +- .../JSMoveCommentToSeparateLineIntention.java | 2 +- .../JSFlipConditionalIntention.java | 2 +- .../conditional/JSFlipIfIntention.java | 2 +- .../JSRemoveConditionalIntention.java | 2 +- .../JSReplaceConditionalWithIfIntention.java | 2 +- .../JSConstantExpressionIntention.java | 2 +- .../JSConstantSubexpressionIntention.java | 4 +- .../JSExtractIncrementIntention.java | 4 +- ...DeclarationAndInitializationIntention.java | 2 +- ...DeclarationAndInitializationIntention.java | 2 +- .../JSMergeParallelForInLoopsIntention.java | 2 +- .../JSMergeParallelForLoopsIntention.java | 2 +- .../JSConvertIntegerToDecimalIntention.java | 2 +- .../JSConvertIntegerToHexIntention.java | 2 +- .../JSConvertIntegerToOctalIntention.java | 2 +- .../JSReplaceMultiplyWithShiftIntention.java | 4 +- .../JSReplaceShiftWithMultiplyIntention.java | 4 +- ...eplaceWithOperatorAssignmentIntention.java | 4 +- ...RemoveUnnecessaryParenthesesIntention.java | 2 +- ...JSDoubleToSingleQuotedStringIntention.java | 2 +- ...inConcatenatedStringLiteralsIntention.java | 2 +- ...JSSingleToDoubleQuotedStringIntention.java | 2 +- .../JSReplaceIfWithSwitchIntention.java | 2 +- .../JSReplaceSwitchWithIfIntention.java | 2 +- .../trivialif/JSMergeElseIfIntention.java | 2 +- .../trivialif/JSMergeIfAndIntention.java | 2 +- .../trivialif/JSMergeIfOrIntention.java | 2 +- .../JSMergeParallelIfsIntention.java | 2 +- .../JSRemoveRedundantElseIntention.java | 2 +- .../JSReplaceIfWithConditionalIntention.java | 2 +- .../trivialif/JSSimplifyIfElseIntention.java | 2 +- .../trivialif/JSSplitElseIfIntention.java | 2 +- .../trivialif/JSSplitIfAndIntention.java | 2 +- .../trivialif/JSSplitIfOrIntention.java | 2 +- .../JavaScriptIntentionBundle.properties | 163 +++++++----------- 44 files changed, 123 insertions(+), 171 deletions(-) diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSDeMorgansLawIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSDeMorgansLawIntention.java index 202c2828..1e208c6e 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSDeMorgansLawIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSDeMorgansLawIntention.java @@ -31,7 +31,6 @@ import org.intellij.idea.lang.javascript.intention.JSMutablyNamedIntention; import org.intellij.idea.lang.javascript.psiutil.BoolUtils; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; -import org.jetbrains.annotations.NonNls; @ExtensionImpl @IntentionMetaData( @@ -41,16 +40,11 @@ ) public class JSDeMorgansLawIntention extends JSMutablyNamedIntention { - @NonNls - private static final String AND_OPERATOR = "&&"; - @NonNls - private static final String OR_OPERATOR = "||"; - @Override @Nonnull protected String getBasicText() { - return JSIntentionBundle.message("bool.de-morgans-law.family-name"); + return JSIntentionBundle.message("bool.de.morgans.law"); } @Override @@ -59,9 +53,9 @@ protected String getTextForElement(PsiElement element) { final IElementType tokenType = ((JSBinaryExpression) element).getOperationSign(); - return tokenType.equals(JSTokenTypes.ANDAND) - ? JSIntentionBundle.message("bool.de-morgans-law.display-name.ANDAND") - : JSIntentionBundle.message("bool.de-morgans-law.display-name.OROR"); + return JSTokenTypes.ANDAND.equals(tokenType) + ? JSIntentionBundle.message("bool.de.morgans.law.and.to.or") + : JSIntentionBundle.message("bool.de.morgans.law.or.to.and"); } @Override @@ -72,6 +66,7 @@ public JSElementPredicate getElementPredicate() } @Override + @RequiredReadAction public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException { JSBinaryExpression exp = (JSBinaryExpression) element; @@ -90,15 +85,17 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat JSElementFactory.replaceExpressionWithNegatedExpressionString(exp, newExpression); } + @RequiredReadAction private String convertConjunctionExpression(JSBinaryExpression exp, IElementType tokenType) { final String leftText = this.getOperandText(exp.getLOperand(), tokenType); final String rightText = this.getOperandText(exp.getROperand(), tokenType); - final String flippedConjunction = (tokenType.equals(JSTokenTypes.ANDAND) ? OR_OPERATOR : AND_OPERATOR); + final String flippedConjunction = tokenType.equals(JSTokenTypes.ANDAND) ? "||" : "&&"; return leftText + flippedConjunction + rightText; } + @RequiredReadAction private String getOperandText(JSExpression operand, IElementType tokenType) { return isConjunctionExpression(operand, tokenType) diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipComparisonIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipComparisonIntention.java index 35f96cae..20c0078e 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipComparisonIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipComparisonIntention.java @@ -42,7 +42,7 @@ public class JSFlipComparisonIntention extends JSMutablyNamedIntention @Override protected String getBasicText() { - return JSIntentionBundle.message("bool.flip-comparison.family-name"); + return JSIntentionBundle.message("bool.flip.comparison"); } @Override @@ -61,15 +61,15 @@ public String getTextForElement(PsiElement element) if (exp == null) { - return JSIntentionBundle.message("bool.flip-comparison.display-name.unknown"); + return JSIntentionBundle.message("bool.flip.comparison.unknown"); } else if (operatorText.equals(flippedOperatorText)) { - return JSIntentionBundle.message("bool.flip-comparison.display-name.equals", operatorText); + return JSIntentionBundle.message("bool.flip.comparison.equals", operatorText); } else { - return JSIntentionBundle.message("bool.flip-comparison.display-name.not-equals", operatorText, flippedOperatorText); + return JSIntentionBundle.message("bool.flip.comparison.not.equals", operatorText, flippedOperatorText); } } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipConjunctionIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipConjunctionIntention.java index a1f65eb8..66ef9eb0 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipConjunctionIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipConjunctionIntention.java @@ -43,7 +43,7 @@ public class JSFlipConjunctionIntention extends JSMutablyNamedIntention @Override protected String getBasicText() { - return JSIntentionBundle.message("bool.flip-conjunction.family-name"); + return JSIntentionBundle.message("bool.flip.conjunction"); } @Override @@ -53,7 +53,7 @@ protected String getTextForElement(PsiElement element) final JSBinaryExpression binaryExpression = (JSBinaryExpression) element; final IElementType sign = binaryExpression.getOperationSign(); - return JSIntentionBundle.message("bool.flip-conjunction.display-name", BinaryOperatorUtils.getOperatorText(sign)); + return JSIntentionBundle.message("bool.flip.conjunction.message", BinaryOperatorUtils.getOperatorText(sign)); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSNegateComparisonIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSNegateComparisonIntention.java index e0aeb5e2..bb4c2f52 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSNegateComparisonIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSNegateComparisonIntention.java @@ -42,7 +42,7 @@ public class JSNegateComparisonIntention extends JSMutablyNamedIntention @Override protected String getBasicText() { - return JSIntentionBundle.message("bool.negate-comparison.family-name"); + return JSIntentionBundle.message("bool.negate.comparison"); } @Override @@ -62,8 +62,8 @@ public String getTextForElement(PsiElement element) } return operatorText.equals(negatedOperatorText) - ? JSIntentionBundle.message("bool.negate-comparison.display-name.equals", operatorText) - : JSIntentionBundle.message("bool.negate-comparison.display-name.not-equals", operatorText, negatedOperatorText); + ? JSIntentionBundle.message("bool.negate.comparison.equals", operatorText) + : JSIntentionBundle.message("bool.negate.comparison.not.equals", operatorText, negatedOperatorText); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSRemoveBooleanEqualityIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSRemoveBooleanEqualityIntention.java index b386d2f3..6c8c5433 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSRemoveBooleanEqualityIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSRemoveBooleanEqualityIntention.java @@ -44,7 +44,7 @@ public class JSRemoveBooleanEqualityIntention extends JSMutablyNamedIntention @Override protected String getBasicText() { - return JSIntentionBundle.message("bool.remove-boolean-equality.family-name"); + return JSIntentionBundle.message("bool.remove.boolean.equality"); } @Override @@ -53,7 +53,7 @@ protected String getTextForElement(PsiElement element) final JSBinaryExpression binaryExpression = (JSBinaryExpression) element; return JSIntentionBundle.message( - "bool.remove-boolean-equality.display-name", + "bool.remove.boolean.equality.message", BinaryOperatorUtils.getOperatorText(binaryExpression.getOperationSign()) ); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSAddBracesIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSAddBracesIntention.java index efbce779..f5dddd9b 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSAddBracesIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSAddBracesIntention.java @@ -47,7 +47,7 @@ protected JSElementPredicate getElementPredicate() @Override protected String getBasicText() { - return JSIntentionBundle.message("braces.add-braces.family-name"); + return JSIntentionBundle.message("braces.add"); } @Override @@ -73,7 +73,7 @@ protected String getTextForElement(PsiElement element) keyword = firstChild.getText(); } - return JSIntentionBundle.message("braces.add-braces.display-name", keyword); + return JSIntentionBundle.message("braces.add.message", keyword); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSRemoveBracesIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSRemoveBracesIntention.java index 42811dd1..aaa6f12d 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSRemoveBracesIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSRemoveBracesIntention.java @@ -40,7 +40,7 @@ public class JSRemoveBracesIntention extends JSMutablyNamedIntention @Override protected String getBasicText() { - return JSIntentionBundle.message("braces.remove-braces.family-name"); + return JSIntentionBundle.message("braces.remove"); } @Override @@ -73,7 +73,7 @@ protected String getTextForElement(PsiElement element) keyword = keywordChild.getText(); } - return JSIntentionBundle.message("braces.remove-braces.display-name", keyword); + return JSIntentionBundle.message("braces.remove.message", keyword); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToCStyleCommentIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToCStyleCommentIntention.java index f62299d3..63b5d761 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToCStyleCommentIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToCStyleCommentIntention.java @@ -45,7 +45,7 @@ public class JSChangeToCStyleCommentIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("comment.change-to-cstyle-comment.display-name"); + return JSIntentionBundle.message("comment.change.to.cstyle.comment"); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToEndOfLineCommentIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToEndOfLineCommentIntention.java index 2c6e95c8..8208fa96 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToEndOfLineCommentIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToEndOfLineCommentIntention.java @@ -43,7 +43,7 @@ public class JSChangeToEndOfLineCommentIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("comment.change-to-end-of-line-comment.display-name"); + return JSIntentionBundle.message("comment.change.to.end.of.line.comment"); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSMoveCommentToSeparateLineIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSMoveCommentToSeparateLineIntention.java index 67b0c4a1..d0f14acb 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSMoveCommentToSeparateLineIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSMoveCommentToSeparateLineIntention.java @@ -43,7 +43,7 @@ public class JSMoveCommentToSeparateLineIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("comment.move-comment-to-separate-line.display-name"); + return JSIntentionBundle.message("comment.move.comment.to.separate.line"); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipConditionalIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipConditionalIntention.java index c553c11b..39b176b8 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipConditionalIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipConditionalIntention.java @@ -44,7 +44,7 @@ public class JSFlipConditionalIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("conditional.flip-conditional.display-name"); + return JSIntentionBundle.message("conditional.flip.conditional"); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipIfIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipIfIntention.java index e65c5368..db450f86 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipIfIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipIfIntention.java @@ -44,7 +44,7 @@ public class JSFlipIfIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("conditional.flip-if.display-name"); + return JSIntentionBundle.message("conditional.flip.if"); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSRemoveConditionalIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSRemoveConditionalIntention.java index 8ef06e4a..ac447872 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSRemoveConditionalIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSRemoveConditionalIntention.java @@ -44,7 +44,7 @@ public class JSRemoveConditionalIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("conditional.remove-conditional.display-name"); + return JSIntentionBundle.message("conditional.remove.conditional"); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSReplaceConditionalWithIfIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSReplaceConditionalWithIfIntention.java index 542de20b..61ee6594 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSReplaceConditionalWithIfIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSReplaceConditionalWithIfIntention.java @@ -39,7 +39,7 @@ public class JSReplaceConditionalWithIfIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("conditional.replace-conditional-with-if.display-name"); + return JSIntentionBundle.message("conditional.replace.conditional.with.if"); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantExpressionIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantExpressionIntention.java index 22f12b9a..7de3a84c 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantExpressionIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantExpressionIntention.java @@ -44,7 +44,7 @@ public class JSConstantExpressionIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("constant.constant-expression.display-name"); + return JSIntentionBundle.message("constant.compute.expression"); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantSubexpressionIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantSubexpressionIntention.java index 14822720..8d6a8c10 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantSubexpressionIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantSubexpressionIntention.java @@ -56,7 +56,7 @@ protected JSElementPredicate getElementPredicate() @Override protected String getBasicText() { - return JSIntentionBundle.message("constant.constant-subexpression.family-name"); + return JSIntentionBundle.message("constant.compute.subexpression"); } @Override @@ -74,7 +74,7 @@ protected String getTextForElement(PsiElement element) assert (leftSide != null); return JSIntentionBundle.message( - "constant.constant-subexpression.display-name", + "constant.compute.subexpression.message", leftSide.getText(), BinaryOperatorUtils.getOperatorText(operationSign), rhs.getText() diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/increment/JSExtractIncrementIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/increment/JSExtractIncrementIntention.java index 207991f1..6a8b84df 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/increment/JSExtractIncrementIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/increment/JSExtractIncrementIntention.java @@ -40,13 +40,13 @@ public class JSExtractIncrementIntention extends JSMutablyNamedIntention @Nonnull protected String getBasicText() { - return JSIntentionBundle.message("increment.extract-increment.family-name"); + return JSIntentionBundle.message("increment.extract"); } @Override public String getTextForElement(PsiElement element) { - return JSIntentionBundle.message("increment.extract-increment.display-name", BinaryOperatorUtils.getOperatorText(getOperationSign(element))); + return JSIntentionBundle.message("increment.extract.message", BinaryOperatorUtils.getOperatorText(getOperationSign(element))); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSMergeDeclarationAndInitializationIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSMergeDeclarationAndInitializationIntention.java index b5c78155..6d49931a 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSMergeDeclarationAndInitializationIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSMergeDeclarationAndInitializationIntention.java @@ -43,7 +43,7 @@ public class JSMergeDeclarationAndInitializationIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("initialization.merge-declaration-and-initialization.display-name"); + return JSIntentionBundle.message("initialization.merge.declaration.and.initialization"); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSSplitDeclarationAndInitializationIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSSplitDeclarationAndInitializationIntention.java index 8acf9b02..587dc36b 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSSplitDeclarationAndInitializationIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSSplitDeclarationAndInitializationIntention.java @@ -51,7 +51,7 @@ public class JSSplitDeclarationAndInitializationIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("initialization.split-declaration-and-initialization.display-name"); + return JSIntentionBundle.message("initialization.split.declaration.and.initialization"); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForInLoopsIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForInLoopsIntention.java index 6a065081..df2c82b9 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForInLoopsIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForInLoopsIntention.java @@ -47,7 +47,7 @@ public class JSMergeParallelForInLoopsIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("loop.merge-parallel-for-in-loops.display-name"); + return JSIntentionBundle.message("loop.merge.parallel.for.in.loops"); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForLoopsIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForLoopsIntention.java index 7a517424..81f29ced 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForLoopsIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForLoopsIntention.java @@ -46,7 +46,7 @@ public class JSMergeParallelForLoopsIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("loop.merge-parallel-for-loops.display-name"); + return JSIntentionBundle.message("loop.merge.parallel.for.loops"); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToDecimalIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToDecimalIntention.java index d0e7585e..f52aaedf 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToDecimalIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToDecimalIntention.java @@ -40,7 +40,7 @@ public class JSConvertIntegerToDecimalIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("number.convert-integer-to-decimal.display-name"); + return JSIntentionBundle.message("number.convert.integer.to.decimal"); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToHexIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToHexIntention.java index 5f138df4..c7202128 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToHexIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToHexIntention.java @@ -40,7 +40,7 @@ public class JSConvertIntegerToHexIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("number.convert-integer-to-hex.display-name"); + return JSIntentionBundle.message("number.convert.integer.to.hex"); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToOctalIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToOctalIntention.java index 9b777eda..5e2dde56 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToOctalIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToOctalIntention.java @@ -40,7 +40,7 @@ public class JSConvertIntegerToOctalIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("number.convert-integer-to-octal.display-name"); + return JSIntentionBundle.message("number.convert.integer.to.octal"); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceMultiplyWithShiftIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceMultiplyWithShiftIntention.java index 68073578..6fe48ee2 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceMultiplyWithShiftIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceMultiplyWithShiftIntention.java @@ -44,7 +44,7 @@ public class JSReplaceMultiplyWithShiftIntention extends JSMutablyNamedIntention @Override protected String getBasicText() { - return JSIntentionBundle.message("number.replace-multiply-with-shift.family-name"); + return JSIntentionBundle.message("number.replace.multiply.with.shift"); } @Override @@ -64,7 +64,7 @@ protected String getTextForElement(PsiElement element) } return JSIntentionBundle.message( - "number.replace-multiply-with-shift.display-name", + "number.replace.multiply.with.shift.message", BinaryOperatorUtils.getOperatorText(tokenType), operatorString ); diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceShiftWithMultiplyIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceShiftWithMultiplyIntention.java index 97fbd731..f9d158cd 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceShiftWithMultiplyIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceShiftWithMultiplyIntention.java @@ -43,7 +43,7 @@ public class JSReplaceShiftWithMultiplyIntention extends JSMutablyNamedIntention @Override protected String getBasicText() { - return JSIntentionBundle.message("number.replace-shift-with-multiply.family-name"); + return JSIntentionBundle.message("number.replace.shift.with.multiply"); } @Override @@ -63,7 +63,7 @@ protected String getTextForElement(PsiElement element) } return JSIntentionBundle.message( - "number.replace-shift-with-multiply.display-name", + "number.replace.shift.with.multiply.message", BinaryOperatorUtils.getOperatorText(tokenType), operatorString ); diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/opassign/JSReplaceWithOperatorAssignmentIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/opassign/JSReplaceWithOperatorAssignmentIntention.java index 4ed1416b..4683a0dd 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/opassign/JSReplaceWithOperatorAssignmentIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/opassign/JSReplaceWithOperatorAssignmentIntention.java @@ -44,7 +44,7 @@ public class JSReplaceWithOperatorAssignmentIntention extends JSMutablyNamedInte @Override protected String getBasicText() { - return JSIntentionBundle.message("opassign.replace-with-operator-assignment.family-name"); + return JSIntentionBundle.message("opassign.replace.with.operator.assignment"); } @Override @@ -56,7 +56,7 @@ public String getTextForElement(PsiElement element) assert (rhs != null); final IElementType sign = rhs.getOperationSign(); - return JSIntentionBundle.message("opassign.replace-with-operator-assignment.display-name", BinaryOperatorUtils.getOperatorText(sign)); + return JSIntentionBundle.message("opassign.replace.with.operator.assignment.message", BinaryOperatorUtils.getOperatorText(sign)); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/parenthesis/JSRemoveUnnecessaryParenthesesIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/parenthesis/JSRemoveUnnecessaryParenthesesIntention.java index 20fbea32..65931e45 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/parenthesis/JSRemoveUnnecessaryParenthesesIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/parenthesis/JSRemoveUnnecessaryParenthesesIntention.java @@ -45,7 +45,7 @@ public class JSRemoveUnnecessaryParenthesesIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("parenthesis.remove-unnecessary-parentheses.display-name"); + return JSIntentionBundle.message("parenthesis.remove.unnecessary.parentheses"); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSDoubleToSingleQuotedStringIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSDoubleToSingleQuotedStringIntention.java index 869040a4..65f6dcdd 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSDoubleToSingleQuotedStringIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSDoubleToSingleQuotedStringIntention.java @@ -39,7 +39,7 @@ public class JSDoubleToSingleQuotedStringIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("string.double-to-single-quoted-string.display-name"); + return JSIntentionBundle.message("string.double.quoted.to.single.quoted"); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSJoinConcatenatedStringLiteralsIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSJoinConcatenatedStringLiteralsIntention.java index 32e8caee..feb758e0 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSJoinConcatenatedStringLiteralsIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSJoinConcatenatedStringLiteralsIntention.java @@ -45,7 +45,7 @@ public class JSJoinConcatenatedStringLiteralsIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("string.join-concatenated-string-literals.display-name"); + return JSIntentionBundle.message("string.join.concatenated.string.literals"); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSSingleToDoubleQuotedStringIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSSingleToDoubleQuotedStringIntention.java index 3084ba6c..90518881 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSSingleToDoubleQuotedStringIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSSingleToDoubleQuotedStringIntention.java @@ -40,7 +40,7 @@ public class JSSingleToDoubleQuotedStringIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("string.single-to-double-quoted-string.display-name"); + return JSIntentionBundle.message("string.single.to.double.quoted.string"); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceIfWithSwitchIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceIfWithSwitchIntention.java index 50d77834..38fa03b1 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceIfWithSwitchIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceIfWithSwitchIntention.java @@ -55,7 +55,7 @@ public class JSReplaceIfWithSwitchIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("switchtoif.replace-if-with-switch.display-name"); + return JSIntentionBundle.message("switchtoif.replace.if.with.switch"); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceSwitchWithIfIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceSwitchWithIfIntention.java index a39644a9..ee765ad7 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceSwitchWithIfIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceSwitchWithIfIntention.java @@ -61,7 +61,7 @@ public class JSReplaceSwitchWithIfIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("switchtoif.replace-switch-with-if.display-name"); + return JSIntentionBundle.message("switchtoif.replace.switch.with.if"); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeElseIfIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeElseIfIntention.java index d3fc5f83..aaefd27e 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeElseIfIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeElseIfIntention.java @@ -43,7 +43,7 @@ public class JSMergeElseIfIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("trivialif.merge-else-if.display-name"); + return JSIntentionBundle.message("trivialif.merge.else.if"); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfAndIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfAndIntention.java index b57acdff..703911ad 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfAndIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfAndIntention.java @@ -46,7 +46,7 @@ public class JSMergeIfAndIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("trivialif.merge-if-and.display-name"); + return JSIntentionBundle.message("trivialif.merge.if.and"); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfOrIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfOrIntention.java index ac672568..fc3622b4 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfOrIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfOrIntention.java @@ -43,7 +43,7 @@ public class JSMergeIfOrIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("trivialif.merge-if-or.display-name"); + return JSIntentionBundle.message("trivialif.merge.if.or"); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeParallelIfsIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeParallelIfsIntention.java index 94f529da..e494d11b 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeParallelIfsIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeParallelIfsIntention.java @@ -45,7 +45,7 @@ public class JSMergeParallelIfsIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("trivialif.merge-parallel-ifs.display-name"); + return JSIntentionBundle.message("trivialif.merge.parallel.ifs"); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSRemoveRedundantElseIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSRemoveRedundantElseIntention.java index c0b3d59e..3bf9082a 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSRemoveRedundantElseIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSRemoveRedundantElseIntention.java @@ -43,7 +43,7 @@ public class JSRemoveRedundantElseIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("trivialif.remove-redundant-else.display-name"); + return JSIntentionBundle.message("trivialif.remove.redundant.else"); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSReplaceIfWithConditionalIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSReplaceIfWithConditionalIntention.java index e6935052..e6b2f202 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSReplaceIfWithConditionalIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSReplaceIfWithConditionalIntention.java @@ -41,7 +41,7 @@ public class JSReplaceIfWithConditionalIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("trivialif.replace-if-with-conditional.display-name"); + return JSIntentionBundle.message("trivialif.replace.if.with.conditional"); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSimplifyIfElseIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSimplifyIfElseIntention.java index 180a1814..382de82c 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSimplifyIfElseIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSimplifyIfElseIntention.java @@ -42,7 +42,7 @@ public class JSSimplifyIfElseIntention extends JSIntention @Override public String getText() { - return JSIntentionBundle.message("trivialif.simplify-if-else.display-name"); + return JSIntentionBundle.message("trivialif.simplify.if.else"); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitElseIfIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitElseIfIntention.java index 545d9a26..1a49f326 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitElseIfIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitElseIfIntention.java @@ -41,7 +41,7 @@ public class JSSplitElseIfIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("trivialif.split-else-if.display-name"); + return JSIntentionBundle.message("trivialif.split.else.if"); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfAndIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfAndIntention.java index b99d964b..c4633a44 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfAndIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfAndIntention.java @@ -45,7 +45,7 @@ public class JSSplitIfAndIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("trivialif.split-if-and.display-name"); + return JSIntentionBundle.message("trivialif.split.if.and"); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfOrIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfOrIntention.java index e693b5e2..fb2ab850 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfOrIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfOrIntention.java @@ -46,7 +46,7 @@ public class JSSplitIfOrIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("trivialif.split-if-or.display-name"); + return JSIntentionBundle.message("trivialif.split.if.or"); } @Override diff --git a/intentions/src/main/resources/org/intellij/idea/lang/javascript/intention/JavaScriptIntentionBundle.properties b/intentions/src/main/resources/org/intellij/idea/lang/javascript/intention/JavaScriptIntentionBundle.properties index fafa58fb..fdf14ba2 100644 --- a/intentions/src/main/resources/org/intellij/idea/lang/javascript/intention/JavaScriptIntentionBundle.properties +++ b/intentions/src/main/resources/org/intellij/idea/lang/javascript/intention/JavaScriptIntentionBundle.properties @@ -1,104 +1,59 @@ -plugin.test.processing = Processing intention: {0} -plugin.test.title = Testing JSIntentionPowerPack plugin... -plugin.test.summary = {0} completed, {1} failed ({2} due to detection, {3} due to fix) -plugin.intention.untested = Intention {0} not tested. - -plugin.category.numbers = JavaScript/Numbers -plugin.category.boolean = JavaScript/Boolean -plugin.category.conditional = JavaScript/Conditional Operator -plugin.category.shift = JavaScript/Shift Operation -plugin.category.declaration = JavaScript/Declaration -plugin.category.comments = JavaScript/Comments -plugin.category.control-flow = JavaScript/Control Flow -plugin.category.other = JavaScript/Other - -bool.de-morgans-law.display-name.ANDAND = Replace && with || -bool.de-morgans-law.display-name.OROR = Replace || with && -bool.de-morgans-law.family-name = DeMorgan Law -bool.flip-comparison.display-name.equals = Flip {0} -bool.flip-comparison.display-name.not-equals = Flip {0} to {1} -bool.flip-comparison.display-name.unknown = Flip Comparison -bool.flip-comparison.family-name = Flip Comparison -bool.flip-conjunction.display-name = Flip {0} -bool.flip-conjunction.family-name = Flip Conjunction Operands -bool.negate-comparison.display-name.equals = Negate {0} -bool.negate-comparison.display-name.not-equals = Negate {0} to {1} -bool.negate-comparison.family-name = Negate Comparison -bool.remove-boolean-equality.display-name = Simplify {0} -bool.remove-boolean-equality.family-name = Remove Boolean Equality -braces.add-braces.display-name = Add braces from ''{0}'' statement -braces.add-braces.family-name = Add Braces -braces.remove-braces.display-name = Remove braces from ''{0}'' statement -braces.remove-braces.family-name = Remove Braces -comment.change-to-cstyle-comment.display-name = Replace with C-style comment -comment.change-to-cstyle-comment.family-name = Replace With C-Style Comment -comment.change-to-end-of-line-comment.display-name = Replace with end-of-line comment -comment.change-to-end-of-line-comment.family-name = Replace With End Of Line Comment -comment.move-comment-to-separate-line.display-name = Move comment to separate line -comment.move-comment-to-separate-line.family-name = Move Comment To Separate Line -conditional.flip-conditional.display-name = Flip ?: -conditional.flip-conditional.family-name = Flip Conditional -conditional.flip-if.display-name = Flip if-else -conditional.flip-if.family-name = Flip If -conditional.remove-conditional.display-name = Simplify ?: -conditional.remove-conditional.family-name = Remove Pointless Conditional -conditional.replace-conditional-with-if.display-name = Replace ?: with if-else -conditional.replace-conditional-with-if.family-name = Replace Conditional With If Else -constant.constant-expression.display-name = Compute constant value -constant.constant-expression.family-name = Compute Constant Value -constant.constant-subexpression.display-name = Compute constant value of {0} {1} {2} -constant.constant-subexpression.family-name = Compute Constant Value For Subexpression -increment.extract-increment.display-name = Extract {0} -increment.extract-increment.family-name = Extract Increment -initialization.merge-declaration-and-initialization.display-name = Merge declaration and initialization -initialization.merge-declaration-and-initialization.family-name = Merge Declaration And Initialization -initialization.split-declaration-and-initialization.display-name = Split into declaration and initialization -initialization.split-declaration-and-initialization.family-name = Split Declaration And Initialization -loop.merge-parallel-for-loops.display-name = Merge 'for' loops -loop.merge-parallel-for-loops.family-name = Merge Parallel For Loops -loop.merge-parallel-for-in-loops.display-name = Merge 'for-in' loops -loop.merge-parallel-for-in-loops.family-name = Merge Parallel For-In Loops -number.convert-integer-to-decimal.display-name = Convert to decimal -number.convert-integer-to-decimal.family-name = Convert To Decimal -number.convert-integer-to-hex.display-name = Convert to hex -number.convert-integer-to-hex.family-name = Convert To Hexadecimal -number.convert-integer-to-octal.display-name = Convert to octal -number.convert-integer-to-octal.family-name = Convert To Octal -number.replace-multiply-with-shift.display-name = Replace {0} with {1} -number.replace-multiply-with-shift.family-name = Replace Multiply with Shift -number.replace-shift-with-multiply.display-name = Replace {0} with {1} -number.replace-shift-with-multiply.family-name = Replace Shift with Multiply -opassign.replace-with-operator-assignment.display-name = Replace = with {0}= -opassign.replace-with-operator-assignment.family-name = Replace Assignment With Operator Assignment -parenthesis.remove-unnecessary-parentheses.display-name = Remove unnecessary parentheses -parenthesis.remove-unnecessary-parentheses.family-name = Remove Unnecessary Parentheses -string.double-to-single-quoted-string.display-name = Replace double-quoted string with single-quoted string -string.double-to-single-quoted-string.family-name = Replace Double-Quoted String with Single-Quoted String -string.join-concatenated-string-literals.display-name = Join concatenated String literals -string.join-concatenated-string-literals.family-name = Join Concatenated String Literals -string.single-to-double-quoted-string.display-name = Replace single-quoted string with double-quoted string -string.single-to-double-quoted-string.family-name = Replace Single-Quoted String with Double-Quoted String -switchtoif.replace-if-with-switch.display-name = Replace if with switch -switchtoif.replace-if-with-switch.family-name = Replace If With Switch -switchtoif.replace-switch-with-if.display-name = Replace switch with if -switchtoif.replace-switch-with-if.family-name = Replace Switch With If -trivialif.merge-else-if.display-name = Merge else-if -trivialif.merge-else-if.family-name = Merge Else If -trivialif.merge-if-and.display-name = Merge 'if's -trivialif.merge-if-and.family-name = Merge Nested Ifs To ANDed Condition -trivialif.merge-if-or.display-name = Merge 'if's -trivialif.merge-if-or.family-name = Merge Equivalent Ifs To ORed Condition -trivialif.merge-parallel-ifs.display-name = Merge 'if's -trivialif.merge-parallel-ifs.family-name = Merge Parallel Ifs -trivialif.remove-redundant-else.display-name = Remove redundant else -trivialif.remove-redundant-else.family-name = Remove Redundant Else -trivialif.replace-if-with-conditional.display-name = Replace if-else with ?: -trivialif.replace-if-with-conditional.family-name = Replace If Else With Conditional -trivialif.simplify-if-else.display-name = Simplify if-else -trivialif.simplify-if-else.family-name = Simplify If Else -trivialif.split-else-if.display-name = Split else-if -trivialif.split-else-if.family-name = Split Else If -trivialif.split-if-and.display-name = Split AND-ed if -trivialif.split-if-and.family-name = Split ANDed Condition To Nested Ifs -trivialif.split-if-or.display-name = Split OR-ed if -trivialif.split-if-or.family-name = Split ORed Condition To Equivalent Ifs +bool.de.morgans.law = DeMorgan law +bool.de.morgans.law.and.to.or = Replace && with || +bool.de.morgans.law.or.to.and = Replace || with && +bool.flip.comparison = Flip comparison +bool.flip.comparison.equals = Flip {0} +bool.flip.comparison.not.equals = Flip {0} to {1} +bool.flip.comparison.unknown = Flip comparison +bool.flip.conjunction = Flip conjunction operands +bool.flip.conjunction.message = Flip {0} +bool.negate.comparison = Negate comparison +bool.negate.comparison.equals = Negate {0} +bool.negate.comparison.not.equals = Negate {0} to {1} +bool.remove.boolean.equality = Remove boolean equality +bool.remove.boolean.equality.message = Simplify {0} +braces.add = Add braces +braces.add.message = Add braces from ''{0}'' statement +braces.remove = Remove braces +braces.remove.message = Remove braces from ''{0}'' statement +comment.change.to.cstyle.comment = Replace with C-style comment +comment.change.to.end.of.line.comment = Replace with end-of-line comment +comment.move.comment.to.separate.line = Move comment to separate line +conditional.flip.conditional = Flip ?: +conditional.flip.if = Flip if-else +conditional.remove.conditional = Simplify ?: +conditional.replace.conditional.with.if = Replace ?: with if-else +constant.compute.expression = Compute constant value +constant.compute.subexpression = Compute constant value for subexpression +constant.compute.subexpression.message = Compute constant value of {0} {1} {2} +increment.extract = Extract increment +increment.extract.message = Extract {0} +initialization.merge.declaration.and.initialization = Merge declaration and initialization +initialization.split.declaration.and.initialization = Split into declaration and initialization +loop.merge.parallel.for.loops = Merge 'for' loops +loop.merge.parallel.for.in.loops = Merge 'for-in' loops +number.convert.integer.to.decimal = Convert to decimal +number.convert.integer.to.hex = Convert to hex +number.convert.integer.to.octal = Convert to octal +number.replace.multiply.with.shift = Replace multiply with shift +number.replace.multiply.with.shift.message = Replace {0} with {1} +number.replace.shift.with.multiply = Replace shift with multiply +number.replace.shift.with.multiply.message = Replace {0} with {1} +opassign.replace.with.operator.assignment = Replace assignment with operator assignment +opassign.replace.with.operator.assignment.message = Replace = with {0}= +parenthesis.remove.unnecessary.parentheses = Remove unnecessary parentheses +string.double.quoted.to.single.quoted = Replace double-quoted string with single-quoted string +string.join.concatenated.string.literals = Join concatenated String literals +string.single.to.double.quoted.string = Replace single-quoted string with double-quoted string +switchtoif.replace.if.with.switch = Replace if with switch +switchtoif.replace.switch.with.if = Replace switch with if +trivialif.merge.else.if = Merge else-if +trivialif.merge.if.and = Merge 'if's +trivialif.merge.if.or = Merge 'if's +trivialif.merge.parallel.ifs = Merge 'if's +trivialif.remove.redundant.else = Remove redundant else +trivialif.replace.if.with.conditional = Replace if-else with ?: +trivialif.simplify.if.else = Simplify if-else +trivialif.split.else.if = Split else-if +trivialif.split.if.and = Split AND-ed if +trivialif.split.if.or = Split OR-ed if From fa454813e467e1ed38924b630411a4ee2a20274c Mon Sep 17 00:00:00 2001 From: UNV Date: Fri, 19 Jul 2024 16:14:55 +0300 Subject: [PATCH 039/150] Replacing JSIntentionBundle with JSIntentionLocalize. --- intentions/pom.xml | 18 +++ .../intention/JSIntentionBundle.java | 6 + .../intention/JSMutablyNamedIntention.java | 9 +- .../bool/JSDeMorgansLawIntention.java | 13 +- .../bool/JSFlipComparisonIntention.java | 15 +-- .../bool/JSFlipConjunctionIntention.java | 13 +- .../bool/JSNegateComparisonIntention.java | 13 +- .../JSRemoveBooleanEqualityIntention.java | 16 +-- .../braces/JSAddBracesIntention.java | 13 +- .../braces/JSRemoveBracesIntention.java | 11 +- .../JSChangeToCStyleCommentIntention.java | 7 +- .../JSChangeToEndOfLineCommentIntention.java | 4 +- .../JSMoveCommentToSeparateLineIntention.java | 4 +- .../JSFlipConditionalIntention.java | 7 +- .../conditional/JSFlipIfIntention.java | 4 +- .../JSRemoveConditionalIntention.java | 7 +- .../JSReplaceConditionalWithIfIntention.java | 7 +- .../JSConstantExpressionIntention.java | 4 +- .../JSConstantSubexpressionIntention.java | 19 ++- .../JSExtractIncrementIntention.java | 16 +-- ...DeclarationAndInitializationIntention.java | 4 +- ...DeclarationAndInitializationIntention.java | 4 +- .../JSMergeParallelForInLoopsIntention.java | 10 +- .../JSMergeParallelForLoopsIntention.java | 7 +- .../JSConvertIntegerToDecimalIntention.java | 10 +- .../JSConvertIntegerToHexIntention.java | 10 +- .../JSConvertIntegerToOctalIntention.java | 4 +- .../JSReplaceMultiplyWithShiftIntention.java | 20 ++- .../JSReplaceShiftWithMultiplyIntention.java | 17 ++- ...eplaceWithOperatorAssignmentIntention.java | 13 +- ...RemoveUnnecessaryParenthesesIntention.java | 4 +- ...JSDoubleToSingleQuotedStringIntention.java | 10 +- ...inConcatenatedStringLiteralsIntention.java | 5 +- ...JSSingleToDoubleQuotedStringIntention.java | 7 +- .../JSReplaceIfWithSwitchIntention.java | 4 +- .../JSReplaceSwitchWithIfIntention.java | 4 +- .../trivialif/JSMergeElseIfIntention.java | 7 +- .../trivialif/JSMergeIfAndIntention.java | 7 +- .../trivialif/JSMergeIfOrIntention.java | 7 +- .../JSMergeParallelIfsIntention.java | 7 +- .../JSRemoveRedundantElseIntention.java | 4 +- .../JSReplaceIfWithConditionalIntention.java | 4 +- .../trivialif/JSSimplifyIfElseIntention.java | 7 +- .../trivialif/JSSplitElseIfIntention.java | 10 +- .../trivialif/JSSplitIfAndIntention.java | 4 +- .../trivialif/JSSplitIfOrIntention.java | 7 +- ...ascript.intention.JSIntentionLocalize.yaml | 118 ++++++++++++++++++ 47 files changed, 327 insertions(+), 194 deletions(-) create mode 100644 intentions/src/main/resources/LOCALIZE-LIB/en_US/consulo.javascript.intention.JSIntentionLocalize.yaml diff --git a/intentions/pom.xml b/intentions/pom.xml index 3f3bf736..deac49a9 100644 --- a/intentions/pom.xml +++ b/intentions/pom.xml @@ -40,6 +40,24 @@ + + + + consulo.maven + maven-consulo-plugin + true + + + generate-sources + + generate-localize + + + + + + + ${project.groupId} diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSIntentionBundle.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSIntentionBundle.java index 6cca6e24..3f7e2d30 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSIntentionBundle.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSIntentionBundle.java @@ -15,13 +15,19 @@ */ package org.intellij.idea.lang.javascript.intention; +import consulo.annotation.DeprecationInfo; +import consulo.annotation.internal.MigratedExtensionsTo; import consulo.application.CommonBundle; +import consulo.javascript.intention.localize.JSIntentionLocalize; import org.intellij.idea.lang.javascript.JSAbstractBundle; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.PropertyKey; import java.util.ResourceBundle; +@Deprecated +@DeprecationInfo("Use JSIntentionLocalize") +@MigratedExtensionsTo(JSIntentionLocalize.class) public class JSIntentionBundle extends JSAbstractBundle { diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSMutablyNamedIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSMutablyNamedIntention.java index f28b31cb..6066e071 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSMutablyNamedIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSMutablyNamedIntention.java @@ -17,6 +17,7 @@ import consulo.codeEditor.Editor; import consulo.language.psi.PsiElement; +import consulo.localize.LocalizeValue; import consulo.project.Project; import jakarta.annotation.Nonnull; @@ -26,17 +27,17 @@ public abstract class JSMutablyNamedIntention extends JSIntention { private String myText; - protected abstract String getTextForElement(PsiElement element); + protected abstract LocalizeValue getTextForElement(PsiElement element); @Override @Nonnull public String getText() { - return myText != null ? myText : getBasicText(); + return myText != null ? myText : getBasicText().get(); } @Nonnull - protected abstract String getBasicText(); + protected abstract LocalizeValue getBasicText(); @Override public boolean isAvailable(@Nonnull Project project, Editor editor, @Nullable PsiElement node) @@ -44,7 +45,7 @@ public boolean isAvailable(@Nonnull Project project, Editor editor, @Nullable Ps final PsiElement element = findMatchingElement(node); if (element != null) { - myText = getTextForElement(element); + myText = getTextForElement(element).get(); return true; } else diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSDeMorgansLawIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSDeMorgansLawIntention.java index 1e208c6e..8fec4573 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSDeMorgansLawIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSDeMorgansLawIntention.java @@ -21,13 +21,14 @@ import com.intellij.lang.javascript.psi.JSExpression; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.javascript.intention.localize.JSIntentionLocalize; import consulo.language.ast.IElementType; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; -import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.intention.JSMutablyNamedIntention; import org.intellij.idea.lang.javascript.psiutil.BoolUtils; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; @@ -42,20 +43,20 @@ public class JSDeMorgansLawIntention extends JSMutablyNamedIntention { @Override @Nonnull - protected String getBasicText() + protected LocalizeValue getBasicText() { - return JSIntentionBundle.message("bool.de.morgans.law"); + return JSIntentionLocalize.boolDeMorgansLaw(); } @Override @RequiredReadAction - protected String getTextForElement(PsiElement element) + protected LocalizeValue getTextForElement(PsiElement element) { final IElementType tokenType = ((JSBinaryExpression) element).getOperationSign(); return JSTokenTypes.ANDAND.equals(tokenType) - ? JSIntentionBundle.message("bool.de.morgans.law.and.to.or") - : JSIntentionBundle.message("bool.de.morgans.law.or.to.and"); + ? JSIntentionLocalize.boolDeMorgansLawAndToOr() + : JSIntentionLocalize.boolDeMorgansLawOrToAnd(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipComparisonIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipComparisonIntention.java index 20c0078e..9226b11c 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipComparisonIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipComparisonIntention.java @@ -19,13 +19,14 @@ import com.intellij.lang.javascript.psi.JSExpression; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.javascript.intention.localize.JSIntentionLocalize; import consulo.language.ast.IElementType; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; -import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.intention.JSMutablyNamedIntention; import org.intellij.idea.lang.javascript.psiutil.ComparisonUtils; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; @@ -40,14 +41,14 @@ public class JSFlipComparisonIntention extends JSMutablyNamedIntention { @Nonnull @Override - protected String getBasicText() + protected LocalizeValue getBasicText() { - return JSIntentionBundle.message("bool.flip.comparison"); + return JSIntentionLocalize.boolFlipComparison(); } @Override @RequiredReadAction - public String getTextForElement(PsiElement element) + public LocalizeValue getTextForElement(PsiElement element) { final JSBinaryExpression exp = (JSBinaryExpression) element; String operatorText = null; @@ -61,15 +62,15 @@ public String getTextForElement(PsiElement element) if (exp == null) { - return JSIntentionBundle.message("bool.flip.comparison.unknown"); + return JSIntentionLocalize.boolFlipComparisonUnknown(); } else if (operatorText.equals(flippedOperatorText)) { - return JSIntentionBundle.message("bool.flip.comparison.equals", operatorText); + return JSIntentionLocalize.boolFlipComparisonEquals(operatorText); } else { - return JSIntentionBundle.message("bool.flip.comparison.not.equals", operatorText, flippedOperatorText); + return JSIntentionLocalize.boolFlipComparisonNotEquals(operatorText, flippedOperatorText); } } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipConjunctionIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipConjunctionIntention.java index 66ef9eb0..8fba5912 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipConjunctionIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipConjunctionIntention.java @@ -20,13 +20,14 @@ import com.intellij.lang.javascript.psi.JSExpression; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.javascript.intention.localize.JSIntentionLocalize; import consulo.language.ast.IElementType; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; -import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.intention.JSMutablyNamedIntention; import org.intellij.idea.lang.javascript.psiutil.BinaryOperatorUtils; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; @@ -41,20 +42,20 @@ public class JSFlipConjunctionIntention extends JSMutablyNamedIntention { @Nonnull @Override - protected String getBasicText() + protected LocalizeValue getBasicText() { - return JSIntentionBundle.message("bool.flip.conjunction"); + return JSIntentionLocalize.boolFlipConjunction(); } @Override @RequiredReadAction - protected String getTextForElement(PsiElement element) + protected LocalizeValue getTextForElement(PsiElement element) { final JSBinaryExpression binaryExpression = (JSBinaryExpression) element; final IElementType sign = binaryExpression.getOperationSign(); - return JSIntentionBundle.message("bool.flip.conjunction.message", BinaryOperatorUtils.getOperatorText(sign)); - } + return JSIntentionLocalize.boolFlipConjunctionMessage(BinaryOperatorUtils.getOperatorText(sign)); + } @Override @Nonnull diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSNegateComparisonIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSNegateComparisonIntention.java index bb4c2f52..613a087f 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSNegateComparisonIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSNegateComparisonIntention.java @@ -19,13 +19,14 @@ import com.intellij.lang.javascript.psi.JSExpression; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.javascript.intention.localize.JSIntentionLocalize; import consulo.language.ast.IElementType; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; -import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.intention.JSMutablyNamedIntention; import org.intellij.idea.lang.javascript.psiutil.ComparisonUtils; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; @@ -40,14 +41,14 @@ public class JSNegateComparisonIntention extends JSMutablyNamedIntention { @Nonnull @Override - protected String getBasicText() + protected LocalizeValue getBasicText() { - return JSIntentionBundle.message("bool.negate.comparison"); + return JSIntentionLocalize.boolNegateComparison(); } @Override @RequiredReadAction - public String getTextForElement(PsiElement element) + public LocalizeValue getTextForElement(PsiElement element) { final JSBinaryExpression expression = (JSBinaryExpression) element; String operatorText = ""; @@ -62,8 +63,8 @@ public String getTextForElement(PsiElement element) } return operatorText.equals(negatedOperatorText) - ? JSIntentionBundle.message("bool.negate.comparison.equals", operatorText) - : JSIntentionBundle.message("bool.negate.comparison.not.equals", operatorText, negatedOperatorText); + ? JSIntentionLocalize.boolNegateComparisonEquals(operatorText) + : JSIntentionLocalize.boolNegateComparisonNotEquals(operatorText, negatedOperatorText); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSRemoveBooleanEqualityIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSRemoveBooleanEqualityIntention.java index 6c8c5433..dceaa107 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSRemoveBooleanEqualityIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSRemoveBooleanEqualityIntention.java @@ -18,14 +18,16 @@ import com.intellij.lang.javascript.JSTokenTypes; import com.intellij.lang.javascript.psi.JSBinaryExpression; import com.intellij.lang.javascript.psi.JSExpression; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.javascript.intention.localize.JSIntentionLocalize; import consulo.language.ast.IElementType; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; -import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.intention.JSMutablyNamedIntention; import org.intellij.idea.lang.javascript.psiutil.BinaryOperatorUtils; import org.intellij.idea.lang.javascript.psiutil.BoolUtils; @@ -42,21 +44,21 @@ public class JSRemoveBooleanEqualityIntention extends JSMutablyNamedIntention { @Nonnull @Override - protected String getBasicText() + protected LocalizeValue getBasicText() { - return JSIntentionBundle.message("bool.remove.boolean.equality"); + return JSIntentionLocalize.boolRemoveBooleanEquality(); } @Override - protected String getTextForElement(PsiElement element) + @RequiredReadAction + protected LocalizeValue getTextForElement(PsiElement element) { final JSBinaryExpression binaryExpression = (JSBinaryExpression) element; - return JSIntentionBundle.message( - "bool.remove.boolean.equality.message", + return JSIntentionLocalize.boolRemoveBooleanEqualityMessage( BinaryOperatorUtils.getOperatorText(binaryExpression.getOperationSign()) ); - } + } @Override @Nonnull diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSAddBracesIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSAddBracesIntention.java index f5dddd9b..3e5b4cca 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSAddBracesIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSAddBracesIntention.java @@ -18,13 +18,14 @@ import com.intellij.lang.javascript.psi.*; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.javascript.intention.localize.JSIntentionLocalize; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiComment; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; -import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.intention.JSMutablyNamedIntention; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; @@ -44,15 +45,15 @@ protected JSElementPredicate getElementPredicate() } @Nonnull - @Override - protected String getBasicText() + @Override + protected LocalizeValue getBasicText() { - return JSIntentionBundle.message("braces.add"); + return JSIntentionLocalize.bracesAdd(); } @Override @RequiredReadAction - protected String getTextForElement(PsiElement element) + protected LocalizeValue getTextForElement(PsiElement element) { final JSElement parent = (JSElement) element.getParent(); final String keyword; @@ -73,7 +74,7 @@ protected String getTextForElement(PsiElement element) keyword = firstChild.getText(); } - return JSIntentionBundle.message("braces.add.message", keyword); + return JSIntentionLocalize.bracesAddMessage(keyword); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSRemoveBracesIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSRemoveBracesIntention.java index aaa6f12d..f0045628 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSRemoveBracesIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSRemoveBracesIntention.java @@ -18,13 +18,14 @@ import com.intellij.lang.javascript.psi.*; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.javascript.intention.localize.JSIntentionLocalize; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiComment; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; -import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.intention.JSMutablyNamedIntention; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; @@ -38,9 +39,9 @@ public class JSRemoveBracesIntention extends JSMutablyNamedIntention { @Nonnull @Override - protected String getBasicText() + protected LocalizeValue getBasicText() { - return JSIntentionBundle.message("braces.remove"); + return JSIntentionLocalize.bracesRemove(); } @Override @@ -52,7 +53,7 @@ protected JSElementPredicate getElementPredicate() @Override @RequiredReadAction - protected String getTextForElement(PsiElement element) + protected LocalizeValue getTextForElement(PsiElement element) { final JSElement parent = (JSElement) element.getParent(); final String keyword; @@ -73,7 +74,7 @@ protected String getTextForElement(PsiElement element) keyword = keywordChild.getText(); } - return JSIntentionBundle.message("braces.remove.message", keyword); + return JSIntentionLocalize.bracesRemoveMessage(keyword); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToCStyleCommentIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToCStyleCommentIntention.java index 63b5d761..5be7c53a 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToCStyleCommentIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToCStyleCommentIntention.java @@ -18,18 +18,17 @@ import com.intellij.lang.javascript.JSTokenTypes; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; -import consulo.language.ast.IElementType; +import consulo.javascript.intention.localize.JSIntentionLocalize; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiComment; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; import consulo.util.lang.StringUtil; +import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; -import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; -import jakarta.annotation.Nonnull; import java.util.ArrayList; import java.util.List; @@ -45,7 +44,7 @@ public class JSChangeToCStyleCommentIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("comment.change.to.cstyle.comment"); + return JSIntentionLocalize.commentChangeToCstyleComment().get(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToEndOfLineCommentIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToEndOfLineCommentIntention.java index 8208fa96..d63de048 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToEndOfLineCommentIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToEndOfLineCommentIntention.java @@ -18,6 +18,7 @@ import com.intellij.lang.javascript.JSTokenTypes; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.javascript.intention.localize.JSIntentionLocalize; import consulo.language.ast.IElementType; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiComment; @@ -27,7 +28,6 @@ import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; -import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import org.intellij.idea.lang.javascript.psiutil.TreeUtil; @@ -43,7 +43,7 @@ public class JSChangeToEndOfLineCommentIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("comment.change.to.end.of.line.comment"); + return JSIntentionLocalize.commentChangeToEndOfLineComment().get(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSMoveCommentToSeparateLineIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSMoveCommentToSeparateLineIntention.java index d0f14acb..a488f675 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSMoveCommentToSeparateLineIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSMoveCommentToSeparateLineIntention.java @@ -18,6 +18,7 @@ import com.intellij.lang.javascript.JSTokenTypes; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.javascript.intention.localize.JSIntentionLocalize; import consulo.language.ast.IElementType; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiComment; @@ -27,7 +28,6 @@ import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; -import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import org.intellij.idea.lang.javascript.psiutil.TreeUtil; @@ -43,7 +43,7 @@ public class JSMoveCommentToSeparateLineIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("comment.move.comment.to.separate.line"); + return JSIntentionLocalize.commentMoveCommentToSeparateLine().get(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipConditionalIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipConditionalIntention.java index 39b176b8..8ab1fd29 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipConditionalIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipConditionalIntention.java @@ -20,18 +20,17 @@ import com.intellij.lang.javascript.psi.JSExpression; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.javascript.intention.localize.JSIntentionLocalize; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; -import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.BoolUtils; import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; -import jakarta.annotation.Nonnull; - @ExtensionImpl @IntentionMetaData( ignoreId = "JSFlipConditionalIntention", @@ -44,7 +43,7 @@ public class JSFlipConditionalIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("conditional.flip.conditional"); + return JSIntentionLocalize.conditionalFlipConditional().get(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipIfIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipIfIntention.java index db450f86..f08449d2 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipIfIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipIfIntention.java @@ -21,13 +21,13 @@ import com.intellij.lang.javascript.psi.JSStatement; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.javascript.intention.localize.JSIntentionLocalize; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; -import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.BoolUtils; import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; @@ -44,7 +44,7 @@ public class JSFlipIfIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("conditional.flip.if"); + return JSIntentionLocalize.conditionalFlipIf().get(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSRemoveConditionalIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSRemoveConditionalIntention.java index ac447872..24aadbf2 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSRemoveConditionalIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSRemoveConditionalIntention.java @@ -19,19 +19,18 @@ import com.intellij.lang.javascript.psi.JSExpression; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.javascript.intention.localize.JSIntentionLocalize; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; -import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.BoolUtils; import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import org.intellij.idea.lang.javascript.psiutil.ParenthesesUtils; -import jakarta.annotation.Nonnull; - @ExtensionImpl @IntentionMetaData( ignoreId = "JSRemoveConditionalIntention", @@ -44,7 +43,7 @@ public class JSRemoveConditionalIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("conditional.remove.conditional"); + return JSIntentionLocalize.conditionalRemoveConditional().get(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSReplaceConditionalWithIfIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSReplaceConditionalWithIfIntention.java index 61ee6594..6615b723 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSReplaceConditionalWithIfIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSReplaceConditionalWithIfIntention.java @@ -17,16 +17,15 @@ import com.intellij.lang.javascript.psi.JSConditionalExpression; import consulo.annotation.component.ExtensionImpl; +import consulo.javascript.intention.localize.JSIntentionLocalize; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; -import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.ConditionalUtils; -import jakarta.annotation.Nonnull; - @ExtensionImpl @IntentionMetaData( ignoreId = "JSReplaceConditionalWithIfIntention", @@ -39,7 +38,7 @@ public class JSReplaceConditionalWithIfIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("conditional.replace.conditional.with.if"); + return JSIntentionLocalize.conditionalReplaceConditionalWithIf().get(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantExpressionIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantExpressionIntention.java index 7de3a84c..f6501bef 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantExpressionIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantExpressionIntention.java @@ -20,6 +20,7 @@ import com.intellij.lang.javascript.psi.JSLiteralExpression; import com.intellij.lang.javascript.psi.JSReferenceExpression; import consulo.annotation.component.ExtensionImpl; +import consulo.javascript.intention.localize.JSIntentionLocalize; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; @@ -27,7 +28,6 @@ import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; -import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; import org.intellij.idea.lang.javascript.psiutil.ExpressionUtil; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; @@ -44,7 +44,7 @@ public class JSConstantExpressionIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("constant.compute.expression"); + return JSIntentionLocalize.constantComputeExpression().get(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantSubexpressionIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantSubexpressionIntention.java index 8d6a8c10..6f93443d 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantSubexpressionIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantSubexpressionIntention.java @@ -21,22 +21,22 @@ import com.intellij.lang.javascript.psi.impl.JSChangeUtil; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.javascript.intention.localize.JSIntentionLocalize; import consulo.language.ast.IElementType; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import consulo.util.lang.StringUtil; +import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; -import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.intention.JSMutablyNamedIntention; import org.intellij.idea.lang.javascript.psiutil.BinaryOperatorUtils; import org.intellij.idea.lang.javascript.psiutil.ExpressionUtil; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import org.intellij.idea.lang.javascript.psiutil.ParenthesesUtils; -import jakarta.annotation.Nonnull; - @ExtensionImpl @IntentionMetaData( ignoreId = "JSConstantSubexpressionIntention", @@ -53,15 +53,15 @@ protected JSElementPredicate getElementPredicate() } @Nonnull - @Override - protected String getBasicText() + @Override + protected LocalizeValue getBasicText() { - return JSIntentionBundle.message("constant.compute.subexpression"); + return JSIntentionLocalize.constantComputeSubexpression(); } @Override @RequiredReadAction - protected String getTextForElement(PsiElement element) + protected LocalizeValue getTextForElement(PsiElement element) { final PsiElement parent = element.getParent(); final JSBinaryExpression binaryExpression = (JSBinaryExpression) (parent instanceof JSBinaryExpression ? parent : element); @@ -73,13 +73,12 @@ protected String getTextForElement(PsiElement element) assert (rhs != null); assert (leftSide != null); - return JSIntentionBundle.message( - "constant.compute.subexpression.message", + return JSIntentionLocalize.constantComputeSubexpressionMessage( leftSide.getText(), BinaryOperatorUtils.getOperatorText(operationSign), rhs.getText() ); - } + } @Override @RequiredReadAction diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/increment/JSExtractIncrementIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/increment/JSExtractIncrementIntention.java index 6a8b84df..13d4a36f 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/increment/JSExtractIncrementIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/increment/JSExtractIncrementIntention.java @@ -18,13 +18,14 @@ import com.intellij.lang.javascript.psi.*; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.javascript.intention.localize.JSIntentionLocalize; import consulo.language.ast.IElementType; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; -import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.intention.JSMutablyNamedIntention; import org.intellij.idea.lang.javascript.psiutil.*; @@ -38,16 +39,17 @@ public class JSExtractIncrementIntention extends JSMutablyNamedIntention { @Override @Nonnull - protected String getBasicText() + protected LocalizeValue getBasicText() { - return JSIntentionBundle.message("increment.extract"); + return JSIntentionLocalize.incrementExtract(); } @Override - public String getTextForElement(PsiElement element) + @RequiredReadAction + public LocalizeValue getTextForElement(PsiElement element) { - return JSIntentionBundle.message("increment.extract.message", BinaryOperatorUtils.getOperatorText(getOperationSign(element))); - } + return JSIntentionLocalize.incrementExtractMessage(BinaryOperatorUtils.getOperatorText(getOperationSign(element))); + } @Override @Nonnull @@ -100,7 +102,7 @@ public boolean satisfiedBy(@Nonnull PsiElement element) final JSStatement containingStatement = TreeUtil.getParentOfType(element, JSStatement.class); - if (element instanceof JSPostfixExpression + if (element instanceof JSPostfixExpression && (containingStatement instanceof JSReturnStatement || containingStatement instanceof JSThrowStatement)) { return false; diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSMergeDeclarationAndInitializationIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSMergeDeclarationAndInitializationIntention.java index 6d49931a..5e289fb7 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSMergeDeclarationAndInitializationIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSMergeDeclarationAndInitializationIntention.java @@ -18,13 +18,13 @@ import com.intellij.lang.javascript.psi.*; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.javascript.intention.localize.JSIntentionLocalize; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; -import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; import org.intellij.idea.lang.javascript.psiutil.FindReferenceUtil; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; @@ -43,7 +43,7 @@ public class JSMergeDeclarationAndInitializationIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("initialization.merge.declaration.and.initialization"); + return JSIntentionLocalize.initializationMergeDeclarationAndInitialization().get(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSSplitDeclarationAndInitializationIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSSplitDeclarationAndInitializationIntention.java index 587dc36b..ba22fd5a 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSSplitDeclarationAndInitializationIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSSplitDeclarationAndInitializationIntention.java @@ -21,6 +21,7 @@ import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.javascript.intention.localize.JSIntentionLocalize; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.psi.PsiFile; @@ -28,7 +29,6 @@ import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; -import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import org.jetbrains.annotations.NonNls; @@ -51,7 +51,7 @@ public class JSSplitDeclarationAndInitializationIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("initialization.split.declaration.and.initialization"); + return JSIntentionLocalize.initializationSplitDeclarationAndInitialization().get(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForInLoopsIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForInLoopsIntention.java index df2c82b9..f9b0f767 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForInLoopsIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForInLoopsIntention.java @@ -20,21 +20,21 @@ import com.intellij.lang.javascript.psi.JSForInStatement; import com.intellij.lang.javascript.psi.JSStatement; import com.intellij.lang.javascript.psi.JSVarStatement; -import consulo.annotation.access.RequiredReadAction;import consulo.annotation.component.ExtensionImpl; +import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.component.ExtensionImpl; +import consulo.javascript.intention.localize.JSIntentionLocalize; import consulo.language.ast.ASTNode; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; -import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.ControlFlowUtils; import org.intellij.idea.lang.javascript.psiutil.EquivalenceChecker; import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; -import jakarta.annotation.Nonnull; - @ExtensionImpl @IntentionMetaData( ignoreId = "JSMergeParallelForInLoopsIntention", @@ -47,7 +47,7 @@ public class JSMergeParallelForInLoopsIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("loop.merge.parallel.for.in.loops"); + return JSIntentionLocalize.loopMergeParallelForInLoops().get(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForLoopsIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForLoopsIntention.java index 81f29ced..6436814a 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForLoopsIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForLoopsIntention.java @@ -21,19 +21,18 @@ import com.intellij.lang.javascript.psi.JSVarStatement; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.javascript.intention.localize.JSIntentionLocalize; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; -import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.ControlFlowUtils; import org.intellij.idea.lang.javascript.psiutil.EquivalenceChecker; import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; -import jakarta.annotation.Nonnull; - @ExtensionImpl @IntentionMetaData( ignoreId = "JSMergeParallelForLoopsIntention", @@ -46,7 +45,7 @@ public class JSMergeParallelForLoopsIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("loop.merge.parallel.for.loops"); + return JSIntentionLocalize.loopMergeParallelForLoops().get(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToDecimalIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToDecimalIntention.java index f52aaedf..ec7b5edd 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToDecimalIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToDecimalIntention.java @@ -16,18 +16,18 @@ package org.intellij.idea.lang.javascript.intention.number; import com.intellij.lang.javascript.psi.JSLiteralExpression; -import consulo.annotation.access.RequiredReadAction;import consulo.annotation.component.ExtensionImpl; +import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.component.ExtensionImpl; +import consulo.javascript.intention.localize.JSIntentionLocalize; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; -import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import org.intellij.idea.lang.javascript.psiutil.NumberUtil; -import jakarta.annotation.Nonnull; - @ExtensionImpl @IntentionMetaData( ignoreId = "JSConvertIntegerToDecimalIntention", @@ -40,7 +40,7 @@ public class JSConvertIntegerToDecimalIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("number.convert.integer.to.decimal"); + return JSIntentionLocalize.numberConvertIntegerToDecimal().get(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToHexIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToHexIntention.java index c7202128..cd795521 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToHexIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToHexIntention.java @@ -16,18 +16,18 @@ package org.intellij.idea.lang.javascript.intention.number; import com.intellij.lang.javascript.psi.JSLiteralExpression; -import consulo.annotation.access.RequiredReadAction;import consulo.annotation.component.ExtensionImpl; +import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.component.ExtensionImpl; +import consulo.javascript.intention.localize.JSIntentionLocalize; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; -import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import org.intellij.idea.lang.javascript.psiutil.NumberUtil; -import jakarta.annotation.Nonnull; - @ExtensionImpl @IntentionMetaData( ignoreId = "JSConvertIntegerToHexIntention", @@ -40,7 +40,7 @@ public class JSConvertIntegerToHexIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("number.convert.integer.to.hex"); + return JSIntentionLocalize.numberConvertIntegerToHex().get(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToOctalIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToOctalIntention.java index 5e2dde56..e64e0c98 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToOctalIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToOctalIntention.java @@ -18,13 +18,13 @@ import com.intellij.lang.javascript.psi.JSLiteralExpression; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.javascript.intention.localize.JSIntentionLocalize; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; -import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import org.intellij.idea.lang.javascript.psiutil.NumberUtil; @@ -40,7 +40,7 @@ public class JSConvertIntegerToOctalIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("number.convert.integer.to.octal"); + return JSIntentionLocalize.numberConvertIntegerToOctal().get(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceMultiplyWithShiftIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceMultiplyWithShiftIntention.java index 6fe48ee2..91d0be9e 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceMultiplyWithShiftIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceMultiplyWithShiftIntention.java @@ -19,19 +19,19 @@ import com.intellij.lang.javascript.psi.*; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.javascript.intention.localize.JSIntentionLocalize; import consulo.language.ast.IElementType; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; +import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; -import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.intention.JSMutablyNamedIntention; import org.intellij.idea.lang.javascript.psiutil.BinaryOperatorUtils; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import org.intellij.idea.lang.javascript.psiutil.ParenthesesUtils; -import jakarta.annotation.Nonnull; - @ExtensionImpl @IntentionMetaData( ignoreId = "JSReplaceMultiplyWithShiftIntention", @@ -42,14 +42,14 @@ public class JSReplaceMultiplyWithShiftIntention extends JSMutablyNamedIntention { @Nonnull @Override - protected String getBasicText() + protected LocalizeValue getBasicText() { - return JSIntentionBundle.message("number.replace.multiply.with.shift"); + return JSIntentionLocalize.numberReplaceMultiplyWithShift(); } @Override @RequiredReadAction - protected String getTextForElement(PsiElement element) + protected LocalizeValue getTextForElement(PsiElement element) { final IElementType tokenType = ((JSBinaryExpression) element).getOperationSign(); final String operatorString; @@ -63,12 +63,8 @@ protected String getTextForElement(PsiElement element) operatorString = tokenType.equals(JSTokenTypes.MULT) ? "<<" : ">>"; } - return JSIntentionBundle.message( - "number.replace.multiply.with.shift.message", - BinaryOperatorUtils.getOperatorText(tokenType), - operatorString - ); - } + return JSIntentionLocalize.numberReplaceMultiplyWithShiftMessage(BinaryOperatorUtils.getOperatorText(tokenType), operatorString); + } @Override @Nonnull diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceShiftWithMultiplyIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceShiftWithMultiplyIntention.java index f9d158cd..5b9e4956 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceShiftWithMultiplyIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceShiftWithMultiplyIntention.java @@ -19,13 +19,14 @@ import com.intellij.lang.javascript.psi.*; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.javascript.intention.localize.JSIntentionLocalize; import consulo.language.ast.IElementType; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; -import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.intention.JSMutablyNamedIntention; import org.intellij.idea.lang.javascript.psiutil.BinaryOperatorUtils; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; @@ -41,14 +42,14 @@ public class JSReplaceShiftWithMultiplyIntention extends JSMutablyNamedIntention { @Nonnull @Override - protected String getBasicText() + protected LocalizeValue getBasicText() { - return JSIntentionBundle.message("number.replace.shift.with.multiply"); + return JSIntentionLocalize.numberReplaceShiftWithMultiply(); } @Override @RequiredReadAction - protected String getTextForElement(PsiElement element) + protected LocalizeValue getTextForElement(PsiElement element) { final IElementType tokenType = ((JSBinaryExpression) element).getOperationSign(); final String operatorString; @@ -62,12 +63,8 @@ protected String getTextForElement(PsiElement element) operatorString = JSTokenTypes.LTLT.equals(tokenType) ? "*" : "/"; } - return JSIntentionBundle.message( - "number.replace.shift.with.multiply.message", - BinaryOperatorUtils.getOperatorText(tokenType), - operatorString - ); - } + return JSIntentionLocalize.numberReplaceShiftWithMultiplyMessage(BinaryOperatorUtils.getOperatorText(tokenType), operatorString); + } @Override @Nonnull diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/opassign/JSReplaceWithOperatorAssignmentIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/opassign/JSReplaceWithOperatorAssignmentIntention.java index 4683a0dd..1d065d56 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/opassign/JSReplaceWithOperatorAssignmentIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/opassign/JSReplaceWithOperatorAssignmentIntention.java @@ -22,13 +22,14 @@ import com.intellij.lang.javascript.psi.JSExpression; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.javascript.intention.localize.JSIntentionLocalize; import consulo.language.ast.IElementType; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; -import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.intention.JSMutablyNamedIntention; import org.intellij.idea.lang.javascript.psiutil.*; @@ -42,22 +43,22 @@ public class JSReplaceWithOperatorAssignmentIntention extends JSMutablyNamedInte { @Nonnull @Override - protected String getBasicText() + protected LocalizeValue getBasicText() { - return JSIntentionBundle.message("opassign.replace.with.operator.assignment"); + return JSIntentionLocalize.opassignReplaceWithOperatorAssignment(); } @Override @RequiredReadAction - public String getTextForElement(PsiElement element) + public LocalizeValue getTextForElement(PsiElement element) { final JSAssignmentExpression exp = (JSAssignmentExpression) element; final JSBinaryExpression rhs = (JSBinaryExpression) exp.getROperand(); assert (rhs != null); final IElementType sign = rhs.getOperationSign(); - return JSIntentionBundle.message("opassign.replace.with.operator.assignment.message", BinaryOperatorUtils.getOperatorText(sign)); - } + return JSIntentionLocalize.opassignReplaceWithOperatorAssignmentMessage(BinaryOperatorUtils.getOperatorText(sign)); + } @Override @Nonnull diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/parenthesis/JSRemoveUnnecessaryParenthesesIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/parenthesis/JSRemoveUnnecessaryParenthesesIntention.java index 65931e45..319185a8 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/parenthesis/JSRemoveUnnecessaryParenthesesIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/parenthesis/JSRemoveUnnecessaryParenthesesIntention.java @@ -21,6 +21,7 @@ import com.intellij.lang.javascript.psi.JSParenthesizedExpression; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.javascript.intention.localize.JSIntentionLocalize; import consulo.language.ast.IElementType; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; @@ -28,7 +29,6 @@ import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; -import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import org.intellij.idea.lang.javascript.psiutil.ParenthesesUtils; @@ -45,7 +45,7 @@ public class JSRemoveUnnecessaryParenthesesIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("parenthesis.remove.unnecessary.parentheses"); + return JSIntentionLocalize.parenthesisRemoveUnnecessaryParentheses().get(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSDoubleToSingleQuotedStringIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSDoubleToSingleQuotedStringIntention.java index 65f6dcdd..e001b08f 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSDoubleToSingleQuotedStringIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSDoubleToSingleQuotedStringIntention.java @@ -16,17 +16,17 @@ package org.intellij.idea.lang.javascript.intention.string; import com.intellij.lang.javascript.psi.JSLiteralExpression; -import consulo.annotation.access.RequiredReadAction;import consulo.annotation.component.ExtensionImpl; +import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.component.ExtensionImpl; +import consulo.javascript.intention.localize.JSIntentionLocalize; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; -import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; -import jakarta.annotation.Nonnull; - @ExtensionImpl @IntentionMetaData( ignoreId = "JSDoubleToSingleQuotedStringIntention", @@ -39,7 +39,7 @@ public class JSDoubleToSingleQuotedStringIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("string.double.quoted.to.single.quoted"); + return JSIntentionLocalize.stringDoubleQuotedToSingleQuoted().get(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSJoinConcatenatedStringLiteralsIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSJoinConcatenatedStringLiteralsIntention.java index feb758e0..54e28fb0 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSJoinConcatenatedStringLiteralsIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSJoinConcatenatedStringLiteralsIntention.java @@ -21,16 +21,15 @@ import com.intellij.lang.javascript.psi.JSLiteralExpression; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.javascript.intention.localize.JSIntentionLocalize; import consulo.javascript.lang.JavaScriptTokenSets; import consulo.javascript.psi.JSSimpleLiteralExpression; -import consulo.language.ast.IElementType; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; -import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; @ExtensionImpl @@ -45,7 +44,7 @@ public class JSJoinConcatenatedStringLiteralsIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("string.join.concatenated.string.literals"); + return JSIntentionLocalize.stringJoinConcatenatedStringLiterals().get(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSSingleToDoubleQuotedStringIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSSingleToDoubleQuotedStringIntention.java index 90518881..4cba562e 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSSingleToDoubleQuotedStringIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSSingleToDoubleQuotedStringIntention.java @@ -18,16 +18,15 @@ import com.intellij.lang.javascript.psi.JSLiteralExpression; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.javascript.intention.localize.JSIntentionLocalize; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; -import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; -import jakarta.annotation.Nonnull; - @ExtensionImpl @IntentionMetaData( ignoreId = "JSSingleToDoubleQuotedStringIntention", @@ -40,7 +39,7 @@ public class JSSingleToDoubleQuotedStringIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("string.single.to.double.quoted.string"); + return JSIntentionLocalize.stringSingleToDoubleQuotedString().get(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceIfWithSwitchIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceIfWithSwitchIntention.java index 38fa03b1..19f4eb8e 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceIfWithSwitchIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceIfWithSwitchIntention.java @@ -19,6 +19,7 @@ import com.intellij.lang.javascript.psi.*; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.javascript.intention.localize.JSIntentionLocalize; import consulo.language.ast.IElementType; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; @@ -26,7 +27,6 @@ import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; -import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.*; import org.jetbrains.annotations.NonNls; @@ -55,7 +55,7 @@ public class JSReplaceIfWithSwitchIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("switchtoif.replace.if.with.switch"); + return JSIntentionLocalize.switchtoifReplaceIfWithSwitch().get(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceSwitchWithIfIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceSwitchWithIfIntention.java index ee765ad7..74c42692 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceSwitchWithIfIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceSwitchWithIfIntention.java @@ -19,6 +19,7 @@ import com.intellij.lang.javascript.psi.impl.JSChangeUtil; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.javascript.intention.localize.JSIntentionLocalize; import consulo.language.codeStyle.CodeStyleManager; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; @@ -28,7 +29,6 @@ import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; -import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.*; import org.jetbrains.annotations.NonNls; @@ -61,7 +61,7 @@ public class JSReplaceSwitchWithIfIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("switchtoif.replace.switch.with.if"); + return JSIntentionLocalize.switchtoifReplaceSwitchWithIf().get(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeElseIfIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeElseIfIntention.java index aaefd27e..324958a5 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeElseIfIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeElseIfIntention.java @@ -20,17 +20,16 @@ import com.intellij.lang.javascript.psi.JSIfStatement; import com.intellij.lang.javascript.psi.JSStatement; import consulo.annotation.component.ExtensionImpl; +import consulo.javascript.intention.localize.JSIntentionLocalize; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; -import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; -import jakarta.annotation.Nonnull; - @ExtensionImpl @IntentionMetaData( ignoreId = "JSMergeElseIfIntention", @@ -43,7 +42,7 @@ public class JSMergeElseIfIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("trivialif.merge.else.if"); + return JSIntentionLocalize.trivialifMergeElseIf().get(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfAndIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfAndIntention.java index 703911ad..bbec21bc 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfAndIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfAndIntention.java @@ -21,19 +21,18 @@ import com.intellij.lang.javascript.psi.JSStatement; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.javascript.intention.localize.JSIntentionLocalize; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; -import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.ConditionalUtils; import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import org.intellij.idea.lang.javascript.psiutil.ParenthesesUtils; -import jakarta.annotation.Nonnull; - @ExtensionImpl @IntentionMetaData( ignoreId = "JSMergeIfAndIntention", @@ -46,7 +45,7 @@ public class JSMergeIfAndIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("trivialif.merge.if.and"); + return JSIntentionLocalize.trivialifMergeIfAnd().get(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfOrIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfOrIntention.java index fc3622b4..ff3f942a 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfOrIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfOrIntention.java @@ -21,16 +21,15 @@ import com.intellij.lang.javascript.psi.JSStatement; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.javascript.intention.localize.JSIntentionLocalize; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; -import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.*; -import jakarta.annotation.Nonnull; - @ExtensionImpl @IntentionMetaData( ignoreId = "JSMergeIfOrIntention", @@ -43,7 +42,7 @@ public class JSMergeIfOrIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("trivialif.merge.if.or"); + return JSIntentionLocalize.trivialifMergeIfOr().get(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeParallelIfsIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeParallelIfsIntention.java index e494d11b..70927bb1 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeParallelIfsIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeParallelIfsIntention.java @@ -20,19 +20,18 @@ import com.intellij.lang.javascript.psi.JSStatement; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.javascript.intention.localize.JSIntentionLocalize; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; -import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.ControlFlowUtils; import org.intellij.idea.lang.javascript.psiutil.EquivalenceChecker; import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; -import jakarta.annotation.Nonnull; - @ExtensionImpl @IntentionMetaData( ignoreId = "JSMergeParallelIfsIntention", @@ -45,7 +44,7 @@ public class JSMergeParallelIfsIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("trivialif.merge.parallel.ifs"); + return JSIntentionLocalize.trivialifMergeParallelIfs().get(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSRemoveRedundantElseIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSRemoveRedundantElseIntention.java index 3bf9082a..fb77e24c 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSRemoveRedundantElseIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSRemoveRedundantElseIntention.java @@ -21,13 +21,13 @@ import com.intellij.lang.javascript.psi.JSStatement; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.javascript.intention.localize.JSIntentionLocalize; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; -import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; @@ -43,7 +43,7 @@ public class JSRemoveRedundantElseIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("trivialif.remove.redundant.else"); + return JSIntentionLocalize.trivialifRemoveRedundantElse().get(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSReplaceIfWithConditionalIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSReplaceIfWithConditionalIntention.java index e6b2f202..64e90852 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSReplaceIfWithConditionalIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSReplaceIfWithConditionalIntention.java @@ -18,6 +18,7 @@ import com.intellij.lang.javascript.psi.*; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.javascript.intention.localize.JSIntentionLocalize; import consulo.language.ast.IElementType; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; @@ -26,7 +27,6 @@ import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; -import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.*; @ExtensionImpl @@ -41,7 +41,7 @@ public class JSReplaceIfWithConditionalIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("trivialif.replace.if.with.conditional"); + return JSIntentionLocalize.trivialifReplaceIfWithConditional().get(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSimplifyIfElseIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSimplifyIfElseIntention.java index 382de82c..55ef2555 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSimplifyIfElseIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSimplifyIfElseIntention.java @@ -19,17 +19,16 @@ import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.lang.javascript.psi.JSIfStatement; import consulo.annotation.component.ExtensionImpl; +import consulo.javascript.intention.localize.JSIntentionLocalize; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; -import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.ConditionalUtils; import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; -import jakarta.annotation.Nonnull; - @ExtensionImpl @IntentionMetaData( ignoreId = "JSSimplifyIfElseIntention", @@ -42,7 +41,7 @@ public class JSSimplifyIfElseIntention extends JSIntention @Override public String getText() { - return JSIntentionBundle.message("trivialif.simplify.if.else"); + return JSIntentionLocalize.trivialifSimplifyIfElse().get(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitElseIfIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitElseIfIntention.java index 1a49f326..efce24d0 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitElseIfIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitElseIfIntention.java @@ -17,18 +17,18 @@ import com.intellij.lang.javascript.psi.JSIfStatement; import com.intellij.lang.javascript.psi.JSStatement; -import consulo.annotation.access.RequiredReadAction;import consulo.annotation.component.ExtensionImpl; +import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.component.ExtensionImpl; +import consulo.javascript.intention.localize.JSIntentionLocalize; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; -import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; -import jakarta.annotation.Nonnull; - @ExtensionImpl @IntentionMetaData( ignoreId = "JSSplitElseIfIntention", @@ -41,7 +41,7 @@ public class JSSplitElseIfIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("trivialif.split.else.if"); + return JSIntentionLocalize.trivialifSplitElseIf().get(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfAndIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfAndIntention.java index c4633a44..a3871a5a 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfAndIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfAndIntention.java @@ -22,13 +22,13 @@ import com.intellij.lang.javascript.psi.JSStatement; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.javascript.intention.localize.JSIntentionLocalize; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; -import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import org.intellij.idea.lang.javascript.psiutil.ParenthesesUtils; @@ -45,7 +45,7 @@ public class JSSplitIfAndIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("trivialif.split.if.and"); + return JSIntentionLocalize.trivialifSplitIfAnd().get(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfOrIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfOrIntention.java index fb2ab850..0487eb49 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfOrIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfOrIntention.java @@ -22,18 +22,17 @@ import com.intellij.lang.javascript.psi.JSStatement; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.javascript.intention.localize.JSIntentionLocalize; import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; -import org.intellij.idea.lang.javascript.intention.JSIntentionBundle; import org.intellij.idea.lang.javascript.psiutil.ErrorUtil; import org.intellij.idea.lang.javascript.psiutil.JSElementFactory; import org.intellij.idea.lang.javascript.psiutil.ParenthesesUtils; -import jakarta.annotation.Nonnull; - @ExtensionImpl @IntentionMetaData( ignoreId = "JSSplitIfOrIntention", @@ -46,7 +45,7 @@ public class JSSplitIfOrIntention extends JSIntention @Nonnull public String getText() { - return JSIntentionBundle.message("trivialif.split.if.or"); + return JSIntentionLocalize.trivialifSplitIfOr().get(); } @Override diff --git a/intentions/src/main/resources/LOCALIZE-LIB/en_US/consulo.javascript.intention.JSIntentionLocalize.yaml b/intentions/src/main/resources/LOCALIZE-LIB/en_US/consulo.javascript.intention.JSIntentionLocalize.yaml new file mode 100644 index 00000000..512e713a --- /dev/null +++ b/intentions/src/main/resources/LOCALIZE-LIB/en_US/consulo.javascript.intention.JSIntentionLocalize.yaml @@ -0,0 +1,118 @@ +bool.de.morgans.law: + text: DeMorgan law +bool.de.morgans.law.and.to.or: + text: Replace && with || +bool.de.morgans.law.or.to.and: + text: Replace || with && +bool.flip.comparison: + text: Flip comparison +bool.flip.comparison.equals: + text: Flip {0} +bool.flip.comparison.not.equals: + text: Flip {0} to {1} +bool.flip.comparison.unknown: + text: Flip comparison +bool.flip.conjunction: + text: Flip conjunction operands +bool.flip.conjunction.message: + text: Flip {0} +bool.negate.comparison: + text: Negate comparison +bool.negate.comparison.equals: + text: Negate {0} +bool.negate.comparison.not.equals: + text: Negate {0} to {1} +bool.remove.boolean.equality: + text: Remove boolean equality +bool.remove.boolean.equality.message: + text: Simplify {0} +braces.add: + text: Add braces +braces.add.message: + text: Add braces from ''{0}'' statement +braces.remove: + text: Remove braces +braces.remove.message: + text: Remove braces from ''{0}'' statement +comment.change.to.cstyle.comment: + text: Replace with C-style comment +comment.change.to.end.of.line.comment: + text: Replace with end-of-line comment +comment.move.comment.to.separate.line: + text: Move comment to separate line +conditional.flip.conditional: + text: 'Flip ?:' +conditional.flip.if: + text: Flip if-else +conditional.remove.conditional: + text: 'Simplify ?:' +conditional.replace.conditional.with.if: + text: 'Replace ?: with if-else' +constant.compute.expression: + text: Compute constant value +constant.compute.subexpression: + text: Compute constant value for subexpression +constant.compute.subexpression.message: + text: Compute constant value of {0} {1} {2} +increment.extract: + text: Extract increment +increment.extract.message: + text: Extract {0} +initialization.merge.declaration.and.initialization: + text: Merge declaration and initialization +initialization.split.declaration.and.initialization: + text: Split into declaration and initialization +loop.merge.parallel.for.loops: + text: Merge 'for' loops +loop.merge.parallel.for.in.loops: + text: Merge 'for-in' loops +number.convert.integer.to.decimal: + text: Convert to decimal +number.convert.integer.to.hex: + text: Convert to hex +number.convert.integer.to.octal: + text: Convert to octal +number.replace.multiply.with.shift: + text: Replace multiply with shift +number.replace.multiply.with.shift.message: + text: Replace {0} with {1} +number.replace.shift.with.multiply: + text: Replace shift with multiply +number.replace.shift.with.multiply.message: + text: Replace {0} with {1} +opassign.replace.with.operator.assignment: + text: Replace assignment with operator assignment +opassign.replace.with.operator.assignment.message: + text: Replace = with {0}= +parenthesis.remove.unnecessary.parentheses: + text: Remove unnecessary parentheses +string.double.quoted.to.single.quoted: + text: Replace double-quoted string with single-quoted string +string.join.concatenated.string.literals: + text: Join concatenated String literals +string.single.to.double.quoted.string: + text: Replace single-quoted string with double-quoted string +switchtoif.replace.if.with.switch: + text: Replace if with switch +switchtoif.replace.switch.with.if: + text: Replace switch with if +trivialif.merge.else.if: + text: Merge else-if +trivialif.merge.if.and: + text: Merge 'if's +trivialif.merge.if.or: + text: Merge 'if's +trivialif.merge.parallel.ifs: + text: Merge 'if's +trivialif.remove.redundant.else: + text: Remove redundant else +trivialif.replace.if.with.conditional: + text: 'Replace if-else with ?:' +trivialif.simplify.if.else: + text: Simplify if-else +trivialif.split.else.if: + text: Split else-if +trivialif.split.if.and: + text: Split AND-ed if +trivialif.split.if.or: + text: Split OR-ed if From 82d0092774743655d99178ae52f1081b8bfe47f3 Mon Sep 17 00:00:00 2001 From: UNV Date: Fri, 19 Jul 2024 17:16:57 +0300 Subject: [PATCH 040/150] Removing deprecated Bundle classes and properties. --- .../javascript/language/JavaScriptBundle.java | 50 --- .../messages/JavaScriptBundle.properties | 284 ------------------ .../sixrr/inspectjs/InspectionJSBundle.java | 18 -- .../ContinueStatementJSInspection.java | 1 - ...efaultNotLastCaseInSwitchJSInspection.java | 1 - .../UnnecessaryLocalVariableJSInspection.java | 1 - .../dom/DocumentWriteJSInspection.java | 1 - .../ExceptionCaughtLocallyJSInspection.java | 1 - .../inspectjs/InspectionJSBundle.properties | 278 ----------------- .../intention/JSIntentionBundle.java | 47 --- .../JavaScriptIntentionBundle.properties | 59 ---- 11 files changed, 741 deletions(-) delete mode 100644 base-api/src/main/java/consulo/javascript/language/JavaScriptBundle.java delete mode 100644 base-api/src/main/resources/messages/JavaScriptBundle.properties delete mode 100644 inspections/src/main/java/com/sixrr/inspectjs/InspectionJSBundle.java delete mode 100644 inspections/src/main/resources/com/sixrr/inspectjs/InspectionJSBundle.properties delete mode 100644 intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSIntentionBundle.java delete mode 100644 intentions/src/main/resources/org/intellij/idea/lang/javascript/intention/JavaScriptIntentionBundle.properties diff --git a/base-api/src/main/java/consulo/javascript/language/JavaScriptBundle.java b/base-api/src/main/java/consulo/javascript/language/JavaScriptBundle.java deleted file mode 100644 index e99945a8..00000000 --- a/base-api/src/main/java/consulo/javascript/language/JavaScriptBundle.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright 2000-2005 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package consulo.javascript.language; - -import consulo.annotation.DeprecationInfo; -import consulo.annotation.internal.MigratedExtensionsTo; -import consulo.javascript.localize.JavaScriptLocalize; -import org.jetbrains.annotations.NonNls; -import org.jetbrains.annotations.PropertyKey; -import consulo.component.util.localize.AbstractBundle; - -@Deprecated(forRemoval = true) -@DeprecationInfo("Use JavaScriptLocalize") -@MigratedExtensionsTo(JavaScriptLocalize.class) -public class JavaScriptBundle extends AbstractBundle -{ - @NonNls - public static final String BUNDLE = "messages.JavaScriptBundle"; - - private static final JavaScriptBundle ourInstance = new JavaScriptBundle(); - - private JavaScriptBundle() - { - super(BUNDLE); - } - - public static String message(@PropertyKey(resourceBundle = BUNDLE) String key) - { - return ourInstance.getMessage(key); - } - - public static String message(@PropertyKey(resourceBundle = BUNDLE) String key, Object... params) - { - return ourInstance.getMessage(key, params); - } -} diff --git a/base-api/src/main/resources/messages/JavaScriptBundle.properties b/base-api/src/main/resources/messages/JavaScriptBundle.properties deleted file mode 100644 index e16ad614..00000000 --- a/base-api/src/main/resources/messages/JavaScriptBundle.properties +++ /dev/null @@ -1,284 +0,0 @@ -javascript.filetype.description=JavaScript files -typescript.filetype.description=TypeScript files - -#language terms -javascript.language.term.function=function -javascript.language.term.class=class -javascript.language.term.namespace=namespace -javascript.language.term.parameter=parameter -javascript.language.term.property=property -javascript.language.term.variable=variable -javascript.language.term.value=value -javascript.language.term.tag=tag -javascript.language.term.label=label -javascript.language.term.prototype=prototype - -#parser error messages -javascript.parser.message.expected.expression=expression expected -javascript.parser.message.expected.xml.element=xml element expected -javascript.parser.property.expected=property expected -javascript.parser.message.expected.lbrace={ expected -javascript.parser.message.expected.rbrace=} expected -javascript.parser.message.expected.identifier.string.literal.or.numeric.literal=identifier or string literal or numeric literal expected -javascript.parser.message.expected.colon=: expected -javascript.parser.message.expected.semicolon=; expected -javascript.parser.message.expected.rbracket=] expected -javascript.parser.message.expected.lparen=( expected -javascript.parser.message.expected.rparen=) expected -javascript.parser.message.expected.name=name expected -javascript.parser.message.expected.comma.or.rparen=, or ) expected -javascript.parser.message.expected.function.name=function name expected -javascript.parser.message.expected.formal.parameter.name=formal parameter name expected -javascript.parser.message.expected.statement=statement expected -javascript.parser.message.expected.parameter.name=parameter name expected -javascript.parser.message.expected.catch.or.default=catch or default expected -javascript.parser.message.expected.forloop.left.hand.side.expression.or.variable.declaration=left hand side expression or variable declaration expected before 'in' -javascript.parser.message.expected.forloop.in.or.semicolon='in' or ; expected -javascript.parser.message.expected.forloop.in.of.or.semicolon='in', 'of' or ; expected -javascript.parser.message.expected.while.keyword=while expected -javascript.parser.message.expected.comma=, expected -javascript.parser.message.expected.variable.name=variable name expected -javascript.parser.message.missing.rbrace=missing } -javascript.parser.message.unexpected.end.of.file=unexpected end of file -javascript.parser.message.unclosed.string.literal=Unclosed string literal - -#validation messages -javascript.validation.message.duplicate.declaration=Duplicate declaration -javascript.validation.message.assignment.to.const=Attempt to assign to const variable -javascript.validation.message.arguments.out.of.function=Using function arguments object outside function -javascript.validation.message.must.be.lvalue=Must be lvalue -javascript.validation.message.const.variable.without.initializer.=const variable without initializer. It won't be possible to assign meaningful value later. -javascript.validation.message.continue.without.target=Cannot determine target for 'continue' -javascript.validation.message.break.without.target=Cannot determine target for 'break' -javascript.validation.message.return.outside.function.definition='return' outside function definition -javascript.validation.message.duplicate.label=Duplicate label - -#surround with names -javascript.surround.with.do.while=do / while -javascript.surround.with.for=for -javascript.surround.with.if=if -javascript.surround.with.if.else=if / else -javascript.surround.with.parenthesis=(expr) -javascript.surround.with.try.catch=try / catch -javascript.surround.with.try.finally=try / finally -javascript.surround.with.try.catch.finally=try / catch / finally -javascript.surround.with.while=while -javascript.surround.with.with=with -javascript.surround.with.function=function -javascript.surround.with.function.expression=function expression - -javascript.introduce.variable.title=Introduce Variable -javascript.introduce.variable.error.no.expression.selected=Cannot introduce variable.\nSelection does not form an expression. -javascript.introduce.variable.name.prompt=&Name: -javascript.introduce.variable.replace.all.occurrences=Replace &all occurrences ({0} occurrences found) -javascript.introduce.variable.invalid.name=Please enter a valid name. -javascript.introduce.variable.variable.already.exists=Variable with name {0} already exists in the scope. -javascript.introduce.variable.function.already.exists=Function with name {0} already exists in the scope. - -javascript.introduce.field.title=Introduce Field -javascript.introduce.field.error.no.expression.selected=Cannot introduce field.\nSelection does not form an expression. -javascript.introduce.constant.title=Introduce Constant -javascript.introduce.constant.error.no.expression.selected=Cannot introduce constant.\nSelection does not form an expression. -javascript.introduce.constant.error.not.constant.expression.selected=Cannot introduce constant.\nSelection is not constant expression. - -#Highlighting categories -javascript.keyword=Keyword -javascript.string=String -javascript.number=Number -javascript.linecomment=Line comment -javascript.doccomment=Doc comment -javascript.blockcomment=Block comment -javascript.regexp=Regular expression -javascript.operation=Operation -javascript.parens=Parenthesis -javascript.brackets=Brackets -javascript.braces=Braces -javascript.semicolon=Semicolon -javascript.badcharacter=Bad character -javascript.docmarkup=Documentation markup -javascript.doctag=Documentation tag -javascript.valid.string.escape=Valid string escape -javascript.invalid.string.escape=Invalid string escape -javascript.comma=Comma -javascript.dot=Dot - -building.index.message=Building JavaScript indices -loading.index.message=Loading JavaScript indices - -#errors with intentions -javascript.unresolved.function.name.message=Unresolved function or method {0}() #loc -javascript.unresolved.variable.name.message=Unresolved variable {0} #loc -javascript.unresolved.type.name.message=Unresolved type {0} #loc -javascript.unresolved.variable.or.type.name.message=Unresolved variable or type {0} #loc -javascript.unresolved.variable.or.type.name.message2=Unresolved variable or type {0} -javascript.undeclared.variable.name.message=Variable {0} implicitly declared #loc -javascript.create.function.intention.name=Create Function {0} -javascript.create.variable.intention.name=Create Variable {0} -javascript.create.constant.intention.name=Create Constant {0} -javascript.declare.variable.intention.name=Insert Var Declaration for {0} -javascript.create.namespace.intention.name=Create Namespace {0} -javascript.create.property.intention.name=Create Field {0} -javascript.create.constant.field.intention.name=Create Constant Field {0} -javascript.create.method.intention.name=Create Method {0} -javascript.create.get.property.intention.name=Create Get Property {0} -javascript.create.set.property.intention.name=Create Set Property {0} -javascript.create.function.intention.family=Create JavaScript Function or Method -javascript.create.variable.intention.family=Create JavaScript Variable Or Property -js.inspection.group.name=JavaScript -js.unresolved.variable.inspection.name=Unresolved JavaScript variable -js.undeclared.variable.inspection.name=Implicitly declared JavaScript variable -js.duplicated.declaration.inspection.name=Duplicated JavaScript declaration -js.unused.local.symbol.inspection.name=Unused JavaScript local symbol -js.unresolved.function.inspection.name=Unresolved JavaScript function -js.deprecated.symbols.inspection.name=Deprecated JavaScript symbol -javascript.parser.message.expected.typename=* or type name expected -javascript.parser.message.expected.name.or.lbrace=Expected package name or { -javascript.parser.message.expected.function.var.class.interface.namespace=Expected function, variable, class, interface or namespace declaration -interface.function.declaration.should.have.no.body=Interface functions declaration should have no body -javascript.parser.message.expected.namespace=Namespace keyword expected -javascript.parser.message.expected.string.literal=String literal expected -javascript.parser.message.expected.xml=xml context keyword expected -javascript.parser.message.expected.equal=expected = -javascript.parser.message.expected.lbrace.or.lbracket={ or [ expected -javascript.parser.message.expected.eof=End of file expected -javascript.deprecated.symbol.used.name.message=Deprecated symbol used, consult docs for better alternative #loc -js.classname.macro.description=jsClassName() -js.methodname.macro.description=jsMethodName() -js.unused.parameter=Unused parameter -js.unused.function.declaration=Unused function declaration -js.unused.local.variable=Unused local variable declaration -js.unused.symbol.remove=Remove unused symbol -javascript.parser.message.expected.identifier=Expected identifier -javascript.parser.message.expected.instanceof=Expected instanceof -javascript.parser.message.expected.value=value expected -javascript.parser.message.expected.identifer.or.value=Identifier or value expected -js.show.overriding.markers.inspection.name=Shows function overriding markers in JavaScript -js.untyped.declaration.inspection.name=Declaration with no type -js.untyped.variable.problem=Variable {0} has no type -js.untyped.function.problem=Function {0} has no return type -js.untyped.declaration.problem.addtype.fix=Add Type to Declaration -invalid.identifier.value=invalid identifier value -javascript.validation.message.this.referenced.from.static.context='this' referenced in static context -javascript.validation.message.super.referenced.without.class.instance.context='super' referenced without class instance context -javascript.validation.message.super.referenced.from.static.context='super' referenced in static context -javascript.validation.message.function.override.without.override.modifier=Method overrides method in superclass {0} without override keyword -javascript.language.term.attribute.value=Attribute value -javascript.validation.message.class.should.be.in.file=Class ''{0}'' should be defined in file ''{1}'' -javascript.validation.message.function.should.be.in.file=Function ''{0}'' should be defined in file ''{1}'' -javascript.validation.message.namespace.should.be.in.file=Namespace ''{0}'' should be defined in file ''{1}'' -javascript.validation.message.variable.should.be.in.file=Variable ''{0}'' should be defined in file ''{1}'' -javascript.validation.message.incorrect.package.name=Package name ''{0}'' does not correspond to file path ''{1}'' -javascript.fix.package.name=Set package name to ''{0}'' -javascript.fix.add.override.modifier=Add override modifier -js.code.style.tab.name=JavaScript / ECMAScript / ActionScript -to.indent.package.statement.children=&Indent package statement children -javascript.formatting.options.panel.title=Formatting options -preview.panel.title=Preview - -javascript.validation.message.interface.members.cannot.have.access.modifiers=Interface members cannot have access modifiers -javascript.template.context.type=Java Sc&ript -flex.import.class=Import Class {0} -flex.import.function=Import Function {0} -interface.should.have.no.variable.declarations=Interface should have no variable declarations -javascript.validation.message.implements.for.interface.not.allowed=Implements list is not allowed for interface -javascript.validation.message.interface.name.expected.here=Interface name expected here -javascript.validation.message.class.name.expected.here=Class name expected here -javascript.validation.message.circular.dependency=Circular dependency -javascript.fix.remove.circular.dependency=Remove circular dependency -javascript.validation.message.more.than.one.externally.visible.symbol=More than one externally visible symbol defined in file -javascript.validation.message.interface.method.not.implemented=Method {0} from interface {1} is not implemented -javascript.fix.remove.externally.visible.symbol=Remove externally visible symbol -javascript.fix.implement.methods=Implement Methods -javascript.parameter=Parameter -javascript.local.variable=Local variable -javascript.global.variable=Global variable -javascript.global.function=Global function -javascript.static.member.function=Static member function -javascript.static.member.variable=Static member variable -javascript.instance.member.variable=Instance member variable -javascript.instance.member.function=Instance member function -javascript.create.class.intention.name=Create Class {0} -javascript.create.interface.intention.name=Create Interface {0} -create.class.dialog.title=Create Class -create.interface.dialog.title=Create Interface -choose.class.title=Choose Class -javascript.fix.remove.override.modifier=Remove override modifier -javascript.validation.message.function.override.for.object.method=Method inherited from Object does not need override -javascript.validation.message.function.override.without.parent.method=Method does not override method from super class -javascript.parser.message.expected.lt=Expected > - -generate.constructor.fields.chooser.title=Choose Fields to Initialize by Constructor -generate.getter.setter.chooser.title=Select Fields to Generate Getters and Setters -generate.to.string.chooser.title=Select Fields to Use in toString function -generate.getter.fields.chooser.title=Select Fields to Generate Getters -generate.setter.fields.chooser.title=Select Fields to Generate Setters -methods.to.implement.chooser.title=Select Methods to Implement -methods.to.override.chooser.title=Select Methods to Override -use.semicolon.to.terminate.statement=Use &semicolon to terminate statements -javascript.validation.unused.import=Unused import -javascript.fix.optimize.imports=Optimize imports -javascript.parser.message.expected.doc.tag.value=Expected doc tag value -javascript.validation.message.incorrect.tag.value=Incorrect Tag Value -javascript.validation.message.incorrect.parameter.name=Incorrect parameter name -javascript.parser.message.expected.doc.tag.name=Expected doc tag name -javascript.invalid.number.of.parameters=Invalid number of parameters, expected {0} -javascript.argument.type.mismatch=Argument type {1} is not assignable to parameter type {0} -javascript.initializer.type.mismatch=Initializer type {1} is not assignable to variable type {0} -javascript.binary.operand.type.mismatch=Binary operation argument type {1} is not assignable to type {0} -javascript.incorrect.variable.type.mismatch=Variable type {1} is not assignable to type {0} -javascript.term.does.not.evaluate.to.function=Method expression is not of Function type -javascript.term.does.not.evaluate.to.function2=Property can not be invoked as function -javascript.term.does.not.evaluate.to.function2.fix=Remove argument list -javascript.assigned.expression.type.mismatch=Assigned expression type {1} is not assignable to type {0} -javascript.returned.expression.type.mismatch=Returned expression type {1} is not assignable to type {0} -javascript.insert.cast.fix=Insert cast -javascript.introduce.constant.error.not.available.in.javascript.code=Introduce Constant is not available in JavaScript code -javascript.introduce.field.error.not.available.in.javascript.code=Introduce Field is not available in JavaScript code -javascript.extract.method.title=Extract Function -javascript.validation.message.function.override.incompatible.access.modifier=Incompatible override, should have ''{0}'' access modifier -javascript.validation.message.function.override.incompatible.signature=Incompatible override, should have signature ''{0}'' -javascript.validation.message.function.override.incompatible.signature2=Incompatible override, should have return type ''{0}'' -javascript.validation.message.interface.method.invalid.access.modifier=Incompatible implementation, should have 'public' access modifier -javascript.validation.message.interface.method.invalid.signature=Incompatible implementation, should have signature ''{0}'' -javascript.validation.message.interface.method.invalid.signature2=Incompatible implementation, should have return type ''{0}'' -javascript.validation.message.duplicated.catch.block=Duplicated catch block #loc -javascript.validation.message.duplicated.catch.block.fix=Remove duplicated catch block -javascript.validation.message.return.value.of.type.is.required=Return value of type {0} is required -javascript.validation.message.constructor.in.mxml.is.not.allowed=Constructor is not allowed for MXML class -javascript.fix.remove.constructor=Remove constructor -javascript.validation.message.package.shouldbe.first.statement=Package should be first statement in file -javascript.metadata=Metadata -javascript.validation.message.file.should.be.under.source.root=Object is located in file out of source root, certain functionality will not be available -javascript.validation.message.unneeded.comma=Unneeded comma -javascript.validation.message.remove.unneeded.comma.fix=Remove unneeded comma -javascript.create.event.handler.intention.name=Create Event Handler {0} -javascript.validation.message.missed.super.constructor.call=Missed superclass's constructor invokation -javascript.fix.create.constructor.invoke.super=Create constructor matching super -javascript.fix.create.invoke.super=Insert super class constructor invokation -javascript.interface.can.not.be.instantiated.message=Interface can not be instantiated -javascript.validation.message.set.method.should.be.void.or.without.type=Return type of a setter definition must be unspecified or void -javascript.validation.message.set.method.should.have.one.parameter=A setter definition must have exactly one parameter -javascript.validation.message.get.method.should.have.no.parameter=A getter definition must have no parameters -javascript.validation.message.get.method.should.be.valid.type=Return type of a getter definition should not be {0} -javascript.validation.message.access.modifier.allowed.only.for.class.members=Access modifier allowed for class members only -javascript.validation.message.namespace.allowed.only.for.class.members=Namespace allowed for class members only -javascript.validation.message.access.modifier.allowed.only.for.package.members=Only public / internal modifiers allowed for package members -javascript.validation.message.use.namespace.reference.or.access.modifier=Use namespace OR access modifier -javascript.fix.remove.access.modifier=Remove access modifier -javascript.fix.remove.namespace.reference=Remove namespace reference -javascript.incorrect.array.type.in.forin=Array key type should be String -javascript.validation.message.unexpected.type.for.rest.parameter=Rest parameter should have no type -javascript.fix.remove.type.reference=Remove type reference -javascript.validation.message.parameter.is.not.allowed.after.rest.parameter=No parameter is allowed after rest parameter -javascript.fix.remove.parameter=Remove parameter -javascript.fix.remove.initializer=Remove initializer -javascript.validation.message.parameter.should.be.initialized=Parameter should be initialized -javascript.validation.message.rest.parameter.should.not.be.initialized=Rest parameter should not be initialized -javascript.validation.message.nested.classes.are.not.allowed=Nested classes are not allowed -generate.getter.fields.bindable.properties=&Bindable properties -javascript.language.term.package=package -javascript.validation.message.arguments.with.rest.parameter='arguments' object is not available when using rest parameter - -action.JavaScript.File.text=JavaScript File - -this.feature.is.not.supported.by.current.language=''{0}'' is not supported by current language version \ No newline at end of file diff --git a/inspections/src/main/java/com/sixrr/inspectjs/InspectionJSBundle.java b/inspections/src/main/java/com/sixrr/inspectjs/InspectionJSBundle.java deleted file mode 100644 index 911db83c..00000000 --- a/inspections/src/main/java/com/sixrr/inspectjs/InspectionJSBundle.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.sixrr.inspectjs; - -import consulo.application.CommonBundle; -import org.jetbrains.annotations.PropertyKey; - -import java.util.ResourceBundle; - -public class InspectionJSBundle { - private static final ResourceBundle ourBundle = - ResourceBundle.getBundle("com.sixrr.inspectjs.InspectionJSBundle"); - - private InspectionJSBundle() { - } - - public static String message(@PropertyKey(resourceBundle = "com.sixrr.inspectjs.InspectionJSBundle")String key, Object... params) { - return CommonBundle.message(ourBundle, key, params); - } -} diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/ContinueStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/ContinueStatementJSInspection.java index 7f666f83..d67138cc 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/ContinueStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/ContinueStatementJSInspection.java @@ -2,7 +2,6 @@ import com.intellij.lang.javascript.psi.JSContinueStatement; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; import com.sixrr.inspectjs.localize.InspectionJSLocalize; diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/DefaultNotLastCaseInSwitchJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/DefaultNotLastCaseInSwitchJSInspection.java index 05d7ea5d..4b7b8bd4 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/DefaultNotLastCaseInSwitchJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/DefaultNotLastCaseInSwitchJSInspection.java @@ -3,7 +3,6 @@ import com.intellij.lang.javascript.psi.JSCaseClause; import com.intellij.lang.javascript.psi.JSSwitchStatement; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; import com.sixrr.inspectjs.localize.InspectionJSLocalize; diff --git a/inspections/src/main/java/com/sixrr/inspectjs/dataflow/UnnecessaryLocalVariableJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/dataflow/UnnecessaryLocalVariableJSInspection.java index 88706ac7..85482f78 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/dataflow/UnnecessaryLocalVariableJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/dataflow/UnnecessaryLocalVariableJSInspection.java @@ -2,7 +2,6 @@ import com.intellij.lang.javascript.psi.*; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; import com.sixrr.inspectjs.localize.InspectionJSLocalize; diff --git a/inspections/src/main/java/com/sixrr/inspectjs/dom/DocumentWriteJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/dom/DocumentWriteJSInspection.java index 9d371f8a..92519597 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/dom/DocumentWriteJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/dom/DocumentWriteJSInspection.java @@ -4,7 +4,6 @@ import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.lang.javascript.psi.JSReferenceExpression; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; import com.sixrr.inspectjs.localize.InspectionJSLocalize; diff --git a/inspections/src/main/java/com/sixrr/inspectjs/exception/ExceptionCaughtLocallyJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/exception/ExceptionCaughtLocallyJSInspection.java index a6b902fc..75aeae59 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/exception/ExceptionCaughtLocallyJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/exception/ExceptionCaughtLocallyJSInspection.java @@ -5,7 +5,6 @@ import com.intellij.lang.javascript.psi.JSThrowStatement; import com.intellij.lang.javascript.psi.JSTryStatement; import com.sixrr.inspectjs.BaseInspectionVisitor; -import com.sixrr.inspectjs.InspectionJSBundle; import com.sixrr.inspectjs.JSGroupNames; import com.sixrr.inspectjs.JavaScriptInspection; import com.sixrr.inspectjs.localize.InspectionJSLocalize; diff --git a/inspections/src/main/resources/com/sixrr/inspectjs/InspectionJSBundle.properties b/inspections/src/main/resources/com/sixrr/inspectjs/InspectionJSBundle.properties deleted file mode 100644 index 01076546..00000000 --- a/inspections/src/main/resources/com/sixrr/inspectjs/InspectionJSBundle.properties +++ /dev/null @@ -1,278 +0,0 @@ -result.of.assignment.used.displayName=Result of assignment used -result.of.assignment.expression.used.error.string=Result of assignment expression used #loc -assignment.to.for.loop.parameter.display.name=Assignment to 'for' loop parameter -assignment.to.for.loop.parameter.error.string=Assignment to for-loop parameter #ref #loc -assignment.to.function.parameter.display.name=Assignment to function parameter -assignment.to.function.parameter.error.string=Assignment to function parameter '#ref' #loc -nested.assignment.display.name=Nested assignment -nested.assignment.error.string=Nested assignment #ref #loc -assignment.replaceable.with.operator.assignment.display.name=Assignment replaceable with operator assignment -assignment.replaceable.with.operator.assignment.error.string=#ref could be simplified to {0} #loc -silly.assignment.display.name=Variable is assigned to itself -silly.assignment.error.string=Variable is assigned to itself #loc -divide.by.zero.display.name=Divide by zero -division.by.zero.error.string=Division by zero #loc -equality.comparison.with.coercion.display.name=Equality comparison which may cause unexpected coercion -equality.comparison.with.coercion.error.string=Comparison #ref may cause unexpected type coercion #loc -equality.comparison.with.coercion.fix=Replace with ''{0}'' -non.short.circuit.boolean.expression.display.name=Non short-circuit boolean expression -non.short.circuit.boolean.expression.error.string=Non short-circuit boolean expression #loc -replace.with.short.circuit.expression.fix.string=Replace with short circuit expression -result.of.object.allocation.ignored.display.name=Result of object allocation ignored -result.of.object.allocation.ignored.error.string=Result of new #ref() is ignored #loc -text.label.in.switch.statement.display.name=Text label in 'switch' statement -text.label.in.switch.statement.error.string=Text label #ref: in 'switch' statement #loc -anonymous.function.display.name=Anonymous function -anonymous.function.error.string=Anonymous #ref #loc -unnecessary.block.statement.display.name=Unnecessary 'block' statement -comma.expression.display.name=Comma expression -conditional.expression.display.name=Conditional expression -statement.with.empty.body.display.name=Statement with empty body -result.of.increment.or.decrement.used.display.name=Result of increment or decrement used -negated.conditional.expression.display.name=Negated conditional expression -negated.if.statement.display.name=Negated 'if' statement -nested.conditional.expression.display.name=Nested conditional expression -nested.function.display.name=Nested function -octal.integer.display.name=Octal Integer -overly.complex.arithmetic.expression.display.name=Overly complex arithmetic expression -overly.complex.boolean.expression.display.name=Overly complex boolean expression -pointless.arithmetic.expression.display.name=Pointless arithmetic expression -pointless.boolean.expression.display.name=Pointless boolean expression -void.expression.display.name='void' expression -with.statement.display.name='with' statement -break.statement.display.name='break' statement -break.statement.with.label.display.name='break' statement with label -conditional.expression.with.identical.branches.display.name=Conditional expression with identical branches -constant.conditional.expression.display.name=Constant conditional expression -continue.statement.display.name='continue' statement -continue.statement.with.label.display.name='continue' statement with label -default.not.last.case.in.switch.display.name='default' not last case in 'switch' -duplicate.condition.in.if.statement.display.name=Duplicate condition in 'if' statement -fall.through.in.switch.statement.display.name=Fall-through in 'switch' statement -if.statement.with.identical.branches.display.name='if' statement with identical branches -if.statement.with.too.many.branches.display.name='if' statement with too many branches -infinite.loop.statement.display.name=Infinite loop statement -labeled.statement.display.name=Labeled statement -loop.statement.that.doesn.t.loop.display.name=Loop statement that doesn't loop -nested.switch.statement.display.name=Nested 'switch' statement -switch.statement.with.no.default.branch.display.name='switch' statement with no default branch -redundant.conditional.expression.display.name=Redundant conditional expression -redundant.if.statement.display.name=Redundant 'if' statement -unnecessary.continue.statement.display.name=Unnecessary 'continue' statement -unnecessary.label.display.name=Unnecessary label -unnecessary.label.on.break.statement.display.name=Unnecessary label on 'break' statement -unnecessary.label.on.continue.statement.display.name=Unnecessary label on 'continue' statement -unnecessary.return.statement.display.name=Unnecessary 'return' statement -call.to.document.write.display.name=Call to 'document.write()' -use.of.innerhtml.property.display.name=Use of 'innerHTML' property -platform.detection.display.name=Platform detection -xhtml.incompatibilities.display.name=XHTML incompatibilities -continue.or.break.inside.finally.block.display.name='continue' or 'break' inside 'finally' block -empty.catch.block.display.name=Empty 'catch' block -empty.finally.block.display.name=Empty 'finally' block -empty.try.block.display.name=Empty 'try' block -exception.used.for.local.control.flow.display.name=Exception used for local control-flow -return.inside.finally.block.display.name='return' inside 'finally' block -throw.inside.finally.block.display.name='throw' inside 'finally' block -overly.complex.function.display.name=Overly complex function -function.with.multiple.loops.display.name=Function with multiple loops -function.with.multiple.return.points.display.name=Function with multiple return points -overly.nested.function.display.name=Overly nested function -nesting.depth.limit=Nesting depth limit: -function.with.too.many.parameters.display.name=Function with too many parameters -function.parameter.limit=Function parameter limit: -overly.long.function.display.name=Overly long function -maximum.statements.per.function=Maximum statements per function: -function.with.more.than.three.negations.display.name=Function with more than three negations -function.naming.convention.display.name=Function naming convention -local.variable.naming.convention.display.name=Local variable naming convention -function.parameter.naming.convention.display.name=Function parameter naming convention -expression.statement.which.is.not.assignment.or.call.display.name=Expression statement which is not assignment or call -debugger.statement.display.name='debugger' statement -duplicate.case.label.display.name=Duplicate case label -duplicate.property.on.object.literal.display.name=Duplicate property on object literal -function.with.inconsistent.returns.display.name=Function with inconsistent returns -reserved.word.used.as.name.display.name=Reserved word used as name -this.expression.which.references.the.global.object.display.name='this' expression which references the global object -unreachable.code.display.name=Unreachable code -chained.equality.display.name=Chained equality -constant.on.right.side.of.comparison.display.name=Constant on right side of comparison -constant.on.left.side.of.comparison.display.name=Constant on left side of comparison -non.block.statement.body.display.name=Non-block statement body -unterminated.statement.display.name=Unterminated statement -terminate.statement.fix=Terminate statement -unnecessary.block.statement.error.string=Unnecessary block statement #loc -comma.expression.error.string=Comma expression #loc -conditional.expression.error.string=Conditional expression #loc -statement.has.empty.branch.error.string=#ref statement has empty branch #loc -statement.has.empty.body.error.string=#ref statement has empty body #loc -include.statement.bodies.that.are.empty.code.blocks.parameter=Include statement bodies that are empty code blocks -result.of.increment.or.decrement.expression.used.error.string=Result of increment or decrement expression used #loc -negated.conditional.expression.error.string=Negated conditional expression #loc -invert.condition.fix=Invert condition -negated.ref.statement.error.string=Negated '#ref' statement #loc -invert.if.condition.fix=Invert If Condition -nested.conditional.expression.error.string=Nested conditional expression #loc -nested.function.error.string=Nested function '#ref' #loc -nested.anonymous.function.error.string=Nested #ref #loc -include.anonymous.functions.parameter=Include anonymous functions -octal.integer.error.string=Octal integer '#ref' #loc -maximum.number.of.terms.parameter=Maximum number of terms: -overly.complex.arithmetic.expression.error.string=Overly complex arithmetic expression #loc -pointless.arithmetic.error.message=#ref can be replaced with {0} #loc -simplify.fix=Simplify -pointless.boolean.error.string=#ref can be simplified to {0} #loc -void.expression.error.string='#ref' expression #loc -with.expression.error.string='#ref' statement #loc -break.statement.error.string='#ref' statement #loc -break.statement.with.label.error.string='#ref' statement with label #loc -conditional.expression.with.identical.branches.error.string=Conditional expression #ref with identical branches #loc -constant.conditional.expression.error.string=#ref can be simplified #loc -continue.statement.error.string='#ref' statement #loc -continue.statement.with.label.error.string='#ref' statement with label #loc -default.branch.not.last.case.in.switch.error.string=#ref branch not last case in 'switch' #loc -duplicate.condition.error.string=Duplicate condition #ref #loc -fall.through.in.switch.statement.error.string=Fall-through in 'switch' statement #loc -ref.statement.with.identical.branches.error.string=#ref statement with identical branches #loc -collapse.if.statement.fix=Collapse 'if' statement -maximum.number.of.branches.parameter=Maximum number of branches: -if.statement.with.too.many.branches.error.string=''#ref'' has too many branches ({0}) #loc -infinite.loop.error.string=#ref statement cannot complete without throwing an exception #loc -statement.label.error.string=Statement label '#ref' #loc -loop.statement.that.doesnt.loop.error.string=#ref statement doesn't loop #loc -nested.switch.statement.error.string=Nested '#ref' statement #loc -switch.statement.with.no.default.branch.error.string='#ref' statement with no default branch #loc -trivial.conditional.error.string=''{0}'' can be simplified to ''{1}'' #loc -trivial.if.error.string=#ref statement can be simplified #loc -unnecessary.continue.error.string=#ref is unnecessary as the last statement in a loop #loc -unnecessary.label.error.string=Unnecessary label #ref #loc -remove.label.fix=Remove label -unnecessary.label.on.break.error.string='#ref' statement with unnecessary label #loc -unnecessary.label.on.continue.error.string='#ref' statement with unnecessary label #loc -unnecessary.return.error.string=#ref is unnecessary as the last statement in a function with no return value #loc -document.write.error.string=Call to '#ref()' #loc -inner.html.error.string=use of '#ref' property #loc -platform.detection.error.string='#ref' probably used for platform detection #loc -xhtml.incompatabilities.error.string='#ref' may produce inconsistent results for XHTML documents #loc -continue.or.break.inside.finally.block.error.string='#ref' inside 'finally' block #loc -empty.catch.block.error.string=Empty '#ref' block #loc -empty.finally.block.error.string=Empty 'finally' block #loc -empty.try.block.error.string=Empty '#ref' block #loc -exception.caught.locally.error.string='#ref' of exception caught locally #loc -return.inside.finally.block.error.string='#ref' inside 'finally' block #loc -throw.inside.finally.block.error.string='#ref' inside 'finally' block #loc -rename.fix=Rename -rename.to.fix=Rename to ''{0}'' -function.complexity.limit.parameter=Function complexity limit: -function.ref.is.overly.complex.cyclomatic.complexity.error.string=function ''#ref'' is overly complex (cyclomatic complexity = {0}) #loc -anonymous.function.is.overly.complex.cyclomatic.complexity.error.string=#ref is overly complex (cyclomatic complexity = {0}) #loc -function.contains.multiple.loops.error.string=function ''#ref'' contains {0} loops #loc -anonymous.function.contains.multiple.loops.error.string=#ref contains {0} loops #loc -function.contains.multiple.return.points.error.string=function ''#ref'' has {0} return points #loc -anonymous.function.contains.multiple.return.points.error.string=#ref has {0} return points #loc -function.is.overly.nested.error.string=function ''#ref'' is overly nested (maximum nesting depth = {0}) #loc -anonymous.function.is.overly.nested.error.string=#ref is overly nested (maximum nesting depth = {0}) #loc -function.has.too.many.parameters.error.string=function ''#ref'' has too many parameters (parameter count = {0}) #loc -anonymous.function.has.too.many.parameters.error.string=#ref has too many parameters (parameter count = {0}) #loc -function.is.overly.long.statement.error.string=function ''#ref'' is overly long (statement count = {0}) #loc -anonymous.function.is.overly.long.statement.error.string=#ref is overly long (statement count = {0}) #loc -function.contains.too.many.negation.error.string=function ''#ref'' contains {0} negations #loc -anonymous.function.contains.too.many.negation.error.string=#ref contains {0} negations #loc -function.name.is.too.short.error.string=Function name ''{0}'' is too short #loc -function.name.is.too.long.error.string=Function name ''{0}''is too long #loc -function.name.doesnt.match.regex.error.string=Function name ''{0}'' doesn''t match regex ''{1}'' #loc -variable.name.is.too.short.error.string=Variable name '#ref' is too short #loc -variable.name.is.too.long.error.string=Variable name '#ref' is too long #loc -variable.name.doesnt.match.regex.error.string=Variable name ''#ref'' doesn''t match regex ''{0}'' #loc -parameter.name.is.too.short.error.string=Parameter name '#ref' is too short #loc -parameter.name.is.too.long.error.string=Parameter name '#ref' is too long #loc -parameter.name.doesnt.match.regex.error.string=Parameter name ''#ref'' doesn''t match regex ''{0}'' #loc -chained.equality.error.string=Chained equality comparison #ref #loc -constant.on.left.side.of.comparison.error.string=#ref: constant on left side of comparison #loc -constant.on.right.side.of.comparison.error.string=#ref: constant on right side of comparison #loc -flip.comparison.fix=Flip comparison -non.block.branch.error.string=#ref statement has non-block branch #loc -non.block.body.error.string=#ref statement has non-block body #loc -unterminated.statement.error.string=Unterminated statement #loc -expression.statement.is.not.assignment.or.call.error.string=Expression statement is not assignment or call #loc -debugger.statement.error.string='#ref' statement #loc -duplicate.case.label.error.string=Duplicate case label #ref #loc -duplicate.object.property.error.string=Duplicate object property #ref #loc -function.has.inconsistent.return.points.error.string=function '#ref' has inconsistent return points #loc -anonymous.function.has.inconsistent.return.points.error.string=#ref has inconsistent return points #loc -reserved.word.used.as.name.error.string=Reserved word '#ref' used as name -this.expression.references.global.object.error.string=Top-level '#ref' expression #loc -unreachable.code.error.string=Unreachable code #loc -malformed.naming.pattern.alert=Malformed Naming Pattern -replace.with.operator.assign.fix=Replace = with {0}= -overly.complex.boolean.expression.error.string=Overly complex boolean expression #loc -collapse.conditional.expression.fix=Collapse conditional expression -remove.unnecessary.continue.fix=Remove unnecessary continue -remove.unnecessary.return.fix=Remove unnecessary return -pattern.parameter=Pattern: -min.length.parameter=Min Length: -max.length.parameter=Max Length: -wrap.statement.body.fix=Wrap statement body -error.handling.javascript.group.name=Error handling -control.flow.issues.javascript.group.name=Control flow issues -javascript.validity.issues.group.name=JavaScript validity issues -potentially.confusing.code.constructs.javascript.group.name=Potentially confusing code constructs -javascript.function.metrics.group.name=JavaScript function metrics -assignment.issues.javascript.group.name=Assignment issues -naming.conventions.javascript.group.name=Naming conventions -code.style.issues.javascript.group.name=Code style issues -javascript.dom.issues.group.name=JavaScript DOM issues -probable.bugs.javascript.group.name=Probable Bugs -code.maturity.javascript.group.name=Code Maturity -confusing.floating.point.literal.display.name=Confusing floating point literal -confusing.floating.point.literal.problem.descriptor=Confusing floating point literal #ref #loc -confusing.pluses.or.minuses.display.name=Confusing sequence of '+' or '-' -confusing.pluses.or.minuses.error.string=Sequence of '+' or '-' may change meaning if whitespace removed #loc -confusing.floating.point.literal.change.quickfix=Change To canonical form -string.literal.breaks.html.display.name=String literal which breaks HTML parsing -string.literal.breaks.html.error.string=String literal #ref may break HTML parsers -for.loop.not.use.loop.variable.display.name='for' loop where update or condition does not use loop variable -for.loop.not.use.loop.variable.problem.descriptor.condition=#ref statement has condition which does not use the for loop variable #loc -for.loop.not.use.loop.variable.problem.descriptor.update=#ref statement has update which does not use the for loop variable #loc -for.loop.not.use.loop.variable.problem.descriptor.both.condition.and.update=#ref statement has condition and update which do not use the for loop variable #loc -unused.catch.parameter.display.name=Unused 'catch' parameter -unused.catch.parameter.problem.descriptor=Unused catch parameter #ref #loc -unused.catch.parameter.ignore.catch.option=Ignore catch blocks containing comments -tail.recursion.display.name=Tail recursion -tail.recursion.problem.descriptor=Tail recursion #loc -redundant.local.variable.display.name=Redundant local variable -data.flow.issues.javascript.group.name=Data flow issues -bitwise.issues.javascript.group.name=Bitwise operation issues -redundant.local.variable.ignore.option=Ignore immediately returned or thrown variables -unnecessary.local.variable.problem.descriptor=Unnecessary local variable -reuse.of.local.variable.display.name=Reuse of local variable -reuse.of.local.variable.problem.descriptor=Reuse of local variable #ref #loc -infinite.recursion.display.name=Infinite recursion -infinite.recursion.problem.descriptor=Function #ref recurses infinitely, and can only end by throwing an exception #loc -constant.if.statement.problem.descriptor=#ref statement can be simplified #loc -constant.if.statement.display.name=Constant if statement -constant.conditional.expression.simplify.quickfix=Simplify -caller.error.string=Use of '#ref' property #loc -caller.display.name=Use of 'caller' property -dynamically.generated.code.error.string=Function '#ref' indicative of dynamically generated code #loc -dynamically.generated.code.display.name=Execution of dynamically generated JavaScript -for.loop.replaceable.by.while.problem.descriptor=#ref loop may be replaced by 'while' loop #loc -for.loop.replaceable.by.while.display.name='for' loop may be replaced by 'while' loop -for.loop.replaceable.by.while.replace.quickfix=Replace with 'while' -for.loop.replaceable.by.while.ignore.option=Ignore 'infinite' for loops without conditions -nested.function.call.display.name=Nested function call -nested.function.call.problem.descriptor=Nested call to function '#ref' #loc -chained.function.call.display.name=Chained function call -chained.function.call.problem.descriptor=Chained call to function '#ref' #loc -magic.number.display.name=Magic number -magic.number.problem.descriptor=Magic number '#ref' #loc -incompatible.mask.operation.display.name=Incompatible bitwise mask operation -incompatible.mask.operation.problem.descriptor.always.false=#ref is always false #loc -incompatible.mask.operation.problem.descriptor.always.true=#ref is always true #loc -pointless.bitwise.expression.display.name=Pointless bitwise expression -pointless.bitwise.expression.ignore.option=Ignore named constant in determinining pointless expressions -pointless.bitwise.expression.problem.descriptor=#ref can be replaced with ''{0}'' #loc -pointless.bitwise.expression.simplify.quickfix=Simplify -shift.operation.by.inappropriate.constant.display.name=Shift operation by inappropriate constant -shift.operation.by.inappropriate.constant.problem.descriptor.too.large=Shift operation #ref by overly large constant value #loc -shift.operation.by.inappropriate.constant.problem.descriptor.negative=Shift operation #ref by negative constant value #loc diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSIntentionBundle.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSIntentionBundle.java deleted file mode 100644 index 3f7e2d30..00000000 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSIntentionBundle.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright 2005-2006 Olivier Descout - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.intellij.idea.lang.javascript.intention; - -import consulo.annotation.DeprecationInfo; -import consulo.annotation.internal.MigratedExtensionsTo; -import consulo.application.CommonBundle; -import consulo.javascript.intention.localize.JSIntentionLocalize; -import org.intellij.idea.lang.javascript.JSAbstractBundle; -import org.jetbrains.annotations.NonNls; -import org.jetbrains.annotations.PropertyKey; - -import java.util.ResourceBundle; - -@Deprecated -@DeprecationInfo("Use JSIntentionLocalize") -@MigratedExtensionsTo(JSIntentionLocalize.class) -public class JSIntentionBundle extends JSAbstractBundle -{ - - @NonNls - private static final String bundleClassName = "org.intellij.idea.lang.javascript.intention.JavaScriptIntentionBundle"; - private static final ResourceBundle ourBundle = ResourceBundle.getBundle(bundleClassName); - - private JSIntentionBundle() - { - } - - public static String message(@PropertyKey(resourceBundle = bundleClassName) String key, - Object... params) - { - return CommonBundle.message(ourBundle, key, params); - } -} diff --git a/intentions/src/main/resources/org/intellij/idea/lang/javascript/intention/JavaScriptIntentionBundle.properties b/intentions/src/main/resources/org/intellij/idea/lang/javascript/intention/JavaScriptIntentionBundle.properties deleted file mode 100644 index fdf14ba2..00000000 --- a/intentions/src/main/resources/org/intellij/idea/lang/javascript/intention/JavaScriptIntentionBundle.properties +++ /dev/null @@ -1,59 +0,0 @@ -bool.de.morgans.law = DeMorgan law -bool.de.morgans.law.and.to.or = Replace && with || -bool.de.morgans.law.or.to.and = Replace || with && -bool.flip.comparison = Flip comparison -bool.flip.comparison.equals = Flip {0} -bool.flip.comparison.not.equals = Flip {0} to {1} -bool.flip.comparison.unknown = Flip comparison -bool.flip.conjunction = Flip conjunction operands -bool.flip.conjunction.message = Flip {0} -bool.negate.comparison = Negate comparison -bool.negate.comparison.equals = Negate {0} -bool.negate.comparison.not.equals = Negate {0} to {1} -bool.remove.boolean.equality = Remove boolean equality -bool.remove.boolean.equality.message = Simplify {0} -braces.add = Add braces -braces.add.message = Add braces from ''{0}'' statement -braces.remove = Remove braces -braces.remove.message = Remove braces from ''{0}'' statement -comment.change.to.cstyle.comment = Replace with C-style comment -comment.change.to.end.of.line.comment = Replace with end-of-line comment -comment.move.comment.to.separate.line = Move comment to separate line -conditional.flip.conditional = Flip ?: -conditional.flip.if = Flip if-else -conditional.remove.conditional = Simplify ?: -conditional.replace.conditional.with.if = Replace ?: with if-else -constant.compute.expression = Compute constant value -constant.compute.subexpression = Compute constant value for subexpression -constant.compute.subexpression.message = Compute constant value of {0} {1} {2} -increment.extract = Extract increment -increment.extract.message = Extract {0} -initialization.merge.declaration.and.initialization = Merge declaration and initialization -initialization.split.declaration.and.initialization = Split into declaration and initialization -loop.merge.parallel.for.loops = Merge 'for' loops -loop.merge.parallel.for.in.loops = Merge 'for-in' loops -number.convert.integer.to.decimal = Convert to decimal -number.convert.integer.to.hex = Convert to hex -number.convert.integer.to.octal = Convert to octal -number.replace.multiply.with.shift = Replace multiply with shift -number.replace.multiply.with.shift.message = Replace {0} with {1} -number.replace.shift.with.multiply = Replace shift with multiply -number.replace.shift.with.multiply.message = Replace {0} with {1} -opassign.replace.with.operator.assignment = Replace assignment with operator assignment -opassign.replace.with.operator.assignment.message = Replace = with {0}= -parenthesis.remove.unnecessary.parentheses = Remove unnecessary parentheses -string.double.quoted.to.single.quoted = Replace double-quoted string with single-quoted string -string.join.concatenated.string.literals = Join concatenated String literals -string.single.to.double.quoted.string = Replace single-quoted string with double-quoted string -switchtoif.replace.if.with.switch = Replace if with switch -switchtoif.replace.switch.with.if = Replace switch with if -trivialif.merge.else.if = Merge else-if -trivialif.merge.if.and = Merge 'if's -trivialif.merge.if.or = Merge 'if's -trivialif.merge.parallel.ifs = Merge 'if's -trivialif.remove.redundant.else = Remove redundant else -trivialif.replace.if.with.conditional = Replace if-else with ?: -trivialif.simplify.if.else = Simplify if-else -trivialif.split.else.if = Split else-if -trivialif.split.if.and = Split AND-ed if -trivialif.split.if.or = Split OR-ed if From 9212640ed2b4edd204bd5d88886dcf1e37fe6bf5 Mon Sep 17 00:00:00 2001 From: UNV Date: Sat, 20 Jul 2024 18:53:02 +0300 Subject: [PATCH 041/150] Removing reference to JavaScriptBundle from plugin.xml and *.form. --- .../lang/javascript/impl/formatter/JSCodeStylePanel.form | 8 ++++---- .../introduceConstant/JSIntroduceConstant.form | 2 +- .../impl/refactoring/introduceField/JSIntroduceField.form | 2 +- .../introduceVariable/JSIntroduceVariable.form | 2 +- plugin/src/main/resources/META-INF/plugin.xml | 3 +-- 5 files changed, 8 insertions(+), 9 deletions(-) diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSCodeStylePanel.form b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSCodeStylePanel.form index a0967b44..600734de 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSCodeStylePanel.form +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSCodeStylePanel.form @@ -14,14 +14,14 @@ - + - + @@ -37,7 +37,7 @@ - + @@ -102,7 +102,7 @@ - + diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceConstant/JSIntroduceConstant.form b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceConstant/JSIntroduceConstant.form index 163b8f68..4f561f5f 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceConstant/JSIntroduceConstant.form +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceConstant/JSIntroduceConstant.form @@ -15,7 +15,7 @@ - + diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceField/JSIntroduceField.form b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceField/JSIntroduceField.form index 8f07f9cb..8084f9b3 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceField/JSIntroduceField.form +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceField/JSIntroduceField.form @@ -130,7 +130,7 @@ - + diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceVariable/JSIntroduceVariable.form b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceVariable/JSIntroduceVariable.form index 8d2b3c62..88aa7510 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceVariable/JSIntroduceVariable.form +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceVariable/JSIntroduceVariable.form @@ -15,7 +15,7 @@ - + diff --git a/plugin/src/main/resources/META-INF/plugin.xml b/plugin/src/main/resources/META-INF/plugin.xml index de3e1796..35fa9759 100644 --- a/plugin/src/main/resources/META-INF/plugin.xml +++ b/plugin/src/main/resources/META-INF/plugin.xml @@ -1,5 +1,5 @@ - 4.0.0 - - consulo - arch.ide-api-provided - 3-SNAPSHOT - - + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 + + consulo + arch.ide-api-provided + 3-SNAPSHOT + + - consulo.plugin - consulo.javascript-intentions - 3-SNAPSHOT - jar + consulo.plugin + consulo.javascript-intentions + 3-SNAPSHOT + jar - - - consulo - https://maven.consulo.io/repository/snapshots/ - - true - interval:60 - - - + + + consulo + https://maven.consulo.io/repository/snapshots/ + + true + interval:60 + + + - - - - consulo.maven - maven-consulo-plugin - true - - - generate-sources - - generate-localize - - - - - - + + + + consulo.maven + maven-consulo-plugin + true + + + generate-sources + + generate-localize + + + + + + - - - ${project.groupId} - consulo.javascript-base.impl - ${project.version} - + + + ${project.groupId} + consulo.javascript-base.impl + ${project.version} + - - ${project.groupId} - com.intellij.xml - ${project.version} - provided - - + + ${project.groupId} + com.intellij.xml + ${project.version} + provided + + \ No newline at end of file From 21a058ee5224d50d9300f34fb0e4f32533db249b Mon Sep 17 00:00:00 2001 From: UNV Date: Fri, 6 Sep 2024 11:43:07 +0300 Subject: [PATCH 068/150] Code reformat of validation package using IJ4 code style. --- .../impl/validation/BaseCreateMethodsFix.java | 451 ++-- .../impl/validation/ImplementMethodsFix.java | 86 +- .../ImplementedMethodProcessor.java | 290 +-- .../impl/validation/JSAnnotatingVisitor.java | 2299 +++++++++-------- .../impl/validation/JSAnnotatorFactory.java | 25 +- 5 files changed, 1557 insertions(+), 1594 deletions(-) diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/BaseCreateMethodsFix.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/BaseCreateMethodsFix.java index 85ba6f7c..d4076a1a 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/BaseCreateMethodsFix.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/BaseCreateMethodsFix.java @@ -51,253 +51,208 @@ /** * @author Maxim.Mossienko - * Date: Jul 17, 2008 - * Time: 9:39:02 PM + * Date: Jul 17, 2008 + * Time: 9:39:02 PM */ -public abstract class BaseCreateMethodsFix -{ - private final Set elementsToProcess = new LinkedHashSet(); - protected final JSClass myJsClass; - protected PsiElement anchor; - - public BaseCreateMethodsFix(final JSClass jsClass) - { - myJsClass = jsClass; - } - - public void invoke(@Nonnull final Project project, final Editor editor, final PsiFile file) throws IncorrectOperationException - { - evalAnchor(editor, file); - for(T e : getElementsToProcess()) - { - anchor = doAddOneMethod(project, buildFunctionText(e), anchor); - } - } - - protected void evalAnchor(final Editor editor, final PsiFile file) - { - anchor = null; - final PsiElement at = file.findElementAt(editor.getCaretModel().getOffset()); - PsiElement parent; - - if(at != null && ((parent = at.getParent()) == myJsClass || (parent instanceof JSFile && myJsClass.getParent().getContainingFile() == parent - .getContext().getContainingFile()))) - { - final ASTNode atNode = at.getNode(); - if(atNode.getElementType() == JSTokenTypes.RBRACE) - { - return; - } - - for(ASTNode node = atNode; node != null; node = node.getTreeNext()) - { - if(node.getElementType() == JSTokenTypes.LBRACE) - { - return; - } - } - anchor = at; - } - } - - protected PsiElement doAddOneMethod(final Project project, final String functionText, PsiElement anchor) throws IncorrectOperationException - { - if(functionText != null && functionText.length() > 0) - { - PsiElement element = JSChangeUtil.createJSTreeFromText(project, functionText).getPsi(); - if(element instanceof PsiWhiteSpace) - { - element = element.getNextSibling(); - } - - boolean defaultAdd = true; - - if(anchor != null && anchor.isValid()) - { - String anchorText; - - if(!(anchor instanceof PsiWhiteSpace) || ((anchorText = anchor.getText()).indexOf("") == -1)) - { - defaultAdd = false; - anchor = anchor.getParent().addAfter(element, anchor); - } - } - - if(defaultAdd) - { - anchor = myJsClass.add(element); - } - } - - return anchor; - } - - public String buildFunctionText(final T fun) - { - final JSAttributeList attributeList = fun.getAttributeList(); - String attrText = attributeList != null ? attributeList.getText() : ""; - - attrText = buildFunctionAttrText(attrText, attributeList, fun); - - final JSFunction function = fun instanceof JSFunction ? (JSFunction) fun : null; - final JSVariable var = fun instanceof JSVariable ? (JSVariable) fun : null; - assert var != null || function != null; - - final JSParameterList parameterList = (function != null) ? function.getParameterList() : null; - final String typeString = importType(function != null ? function.getReturnTypeString() : var.getTypeString(), fun); - @NonNls String functionText = attrText; - if(functionText.length() > 0) - { - functionText += " "; - } - functionText += "function "; - - functionText += buildFunctionKind(fun); - - functionText += buildName(fun) + " " + buildParameterList(parameterList, fun); - if(typeString != null) - { - functionText += ":" + buildReturnType(typeString); - } - - functionText += buildFunctionBodyText(typeString, parameterList, fun); - return functionText; - } - - protected - @NonNls - String buildReturnType(final String typeString) - { - return typeString; - } - - protected String importType(final String s, T fun) - { - if(s == null) - { - return null; - } - if(fun instanceof JSFunction) - { - final String resolvedTypeName = JSImportHandlingUtil.resolveTypeName(s, fun); - - if(!resolvedTypeName.equals(s)) - { - ImportUtils.doImport(myJsClass, resolvedTypeName); - } - } - return s; - } - - protected String buildParameterList(final JSParameterList parameterList, final T fun) - { - if(parameterList != null) - { - for(JSParameter param : parameterList.getParameters()) - { - final String s = param.getTypeString(); - if(s != null) - { - importType(s, fun); - } - } - } - return (parameterList != null ? parameterList.getText() : "()"); - } - - protected String buildName(final T fun) - { - return fun.getName(); - } - - protected - @NonNls - String buildFunctionKind(final T fun) - { - if(fun instanceof JSFunction) - { - final JSFunction function = (JSFunction) fun; - if(function.isGetProperty()) - { - return "get "; - } - else if(function.isSetProperty()) - { - return "set "; - } - } - return ""; - } - - protected - @NonNls - String buildFunctionBodyText(@NonNls String retType, final JSParameterList parameterList, final T func) - { - return " {}"; - } - - protected - @NonNls - String buildFunctionAttrText(@NonNls String attrText, final JSAttributeList attributeList, final T function) - { - attrText = attrText.replace("native", "").trim(); - return attrText; - } - - public void addElementToProcess(final T function) - { - elementsToProcess.add(function); - } - - public void addElementsToProcessFrom(final Collection selectedElements) - { - for(JSNamedElementNode el : selectedElements) - { - addElementToProcess((T) el.getPsiElement()); - } - } - - public Set getElementsToProcess() - { - final T[] objects = (T[]) elementsToProcess.toArray(new JSNamedElement[elementsToProcess.size()]); - final Comparator tComparator = new Comparator() - { - @Override - public int compare(final T o1, final T o2) - { - return o1.getTextOffset() - o2.getTextOffset(); - } - }; - - final int size = elementsToProcess.size(); - final LinkedHashSet result = new LinkedHashSet(size); - final List objectsFromSameFile = new ArrayList(); - PsiFile containingFile = null; - - for(int i = 0; i < size; ++i) - { - final T object = objects[i]; - final PsiFile currentContainingFile = object.getContainingFile(); - - if(currentContainingFile != containingFile) - { - if(containingFile != null) - { - Collections.sort(objectsFromSameFile, tComparator); - result.addAll(objectsFromSameFile); - objectsFromSameFile.clear(); - } - containingFile = currentContainingFile; - } - - objectsFromSameFile.add(object); - } - - Collections.sort(objectsFromSameFile, tComparator); - result.addAll(objectsFromSameFile); - - elementsToProcess.clear(); - elementsToProcess.addAll(result); - return elementsToProcess; - } +public abstract class BaseCreateMethodsFix { + private final Set elementsToProcess = new LinkedHashSet<>(); + protected final JSClass myJsClass; + protected PsiElement anchor; + + public BaseCreateMethodsFix(final JSClass jsClass) { + myJsClass = jsClass; + } + + public void invoke(@Nonnull final Project project, final Editor editor, final PsiFile file) throws IncorrectOperationException { + evalAnchor(editor, file); + for (T e : getElementsToProcess()) { + anchor = doAddOneMethod(project, buildFunctionText(e), anchor); + } + } + + protected void evalAnchor(final Editor editor, final PsiFile file) { + anchor = null; + final PsiElement at = file.findElementAt(editor.getCaretModel().getOffset()); + PsiElement parent; + + if (at != null && ((parent = at.getParent()) == myJsClass || (parent instanceof JSFile && myJsClass.getParent() + .getContainingFile() == parent + .getContext().getContainingFile()))) { + final ASTNode atNode = at.getNode(); + if (atNode.getElementType() == JSTokenTypes.RBRACE) { + return; + } + + for (ASTNode node = atNode; node != null; node = node.getTreeNext()) { + if (node.getElementType() == JSTokenTypes.LBRACE) { + return; + } + } + anchor = at; + } + } + + protected PsiElement doAddOneMethod(final Project project, final String functionText, PsiElement anchor) + throws IncorrectOperationException { + if (functionText != null && functionText.length() > 0) { + PsiElement element = JSChangeUtil.createJSTreeFromText(project, functionText).getPsi(); + if (element instanceof PsiWhiteSpace) { + element = element.getNextSibling(); + } + + boolean defaultAdd = true; + + if (anchor != null && anchor.isValid()) { + String anchorText; + + if (!(anchor instanceof PsiWhiteSpace) + || ((anchorText = anchor.getText()).indexOf("") == -1)) { + defaultAdd = false; + anchor = anchor.getParent().addAfter(element, anchor); + } + } + + if (defaultAdd) { + anchor = myJsClass.add(element); + } + } + + return anchor; + } + + public String buildFunctionText(final T fun) { + final JSAttributeList attributeList = fun.getAttributeList(); + String attrText = attributeList != null ? attributeList.getText() : ""; + + attrText = buildFunctionAttrText(attrText, attributeList, fun); + + final JSFunction function = fun instanceof JSFunction ? (JSFunction)fun : null; + final JSVariable var = fun instanceof JSVariable ? (JSVariable)fun : null; + assert var != null || function != null; + + final JSParameterList parameterList = (function != null) ? function.getParameterList() : null; + final String typeString = importType(function != null ? function.getReturnTypeString() : var.getTypeString(), fun); + @NonNls String functionText = attrText; + if (functionText.length() > 0) { + functionText += " "; + } + functionText += "function "; + + functionText += buildFunctionKind(fun); + + functionText += buildName(fun) + " " + buildParameterList(parameterList, fun); + if (typeString != null) { + functionText += ":" + buildReturnType(typeString); + } + + functionText += buildFunctionBodyText(typeString, parameterList, fun); + return functionText; + } + + protected + @NonNls + String buildReturnType(final String typeString) { + return typeString; + } + + protected String importType(final String s, T fun) { + if (s == null) { + return null; + } + if (fun instanceof JSFunction) { + final String resolvedTypeName = JSImportHandlingUtil.resolveTypeName(s, fun); + + if (!resolvedTypeName.equals(s)) { + ImportUtils.doImport(myJsClass, resolvedTypeName); + } + } + return s; + } + + protected String buildParameterList(final JSParameterList parameterList, final T fun) { + if (parameterList != null) { + for (JSParameter param : parameterList.getParameters()) { + final String s = param.getTypeString(); + if (s != null) { + importType(s, fun); + } + } + } + return (parameterList != null ? parameterList.getText() : "()"); + } + + protected String buildName(final T fun) { + return fun.getName(); + } + + protected + @NonNls + String buildFunctionKind(final T fun) { + if (fun instanceof JSFunction) { + final JSFunction function = (JSFunction)fun; + if (function.isGetProperty()) { + return "get "; + } + else if (function.isSetProperty()) { + return "set "; + } + } + return ""; + } + + protected + @NonNls + String buildFunctionBodyText(@NonNls String retType, final JSParameterList parameterList, final T func) { + return " {}"; + } + + protected + @NonNls + String buildFunctionAttrText(@NonNls String attrText, final JSAttributeList attributeList, final T function) { + attrText = attrText.replace("native", "").trim(); + return attrText; + } + + public void addElementToProcess(final T function) { + elementsToProcess.add(function); + } + + public void addElementsToProcessFrom(final Collection selectedElements) { + for (JSNamedElementNode el : selectedElements) { + addElementToProcess((T)el.getPsiElement()); + } + } + + public Set getElementsToProcess() { + final T[] objects = (T[])elementsToProcess.toArray(new JSNamedElement[elementsToProcess.size()]); + final Comparator tComparator = (o1, o2) -> o1.getTextOffset() - o2.getTextOffset(); + + final int size = elementsToProcess.size(); + final LinkedHashSet result = new LinkedHashSet<>(size); + final List objectsFromSameFile = new ArrayList<>(); + PsiFile containingFile = null; + + for (int i = 0; i < size; ++i) { + final T object = objects[i]; + final PsiFile currentContainingFile = object.getContainingFile(); + + if (currentContainingFile != containingFile) { + if (containingFile != null) { + Collections.sort(objectsFromSameFile, tComparator); + result.addAll(objectsFromSameFile); + objectsFromSameFile.clear(); + } + containingFile = currentContainingFile; + } + + objectsFromSameFile.add(object); + } + + Collections.sort(objectsFromSameFile, tComparator); + result.addAll(objectsFromSameFile); + + elementsToProcess.clear(); + elementsToProcess.addAll(result); + return elementsToProcess; + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/ImplementMethodsFix.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/ImplementMethodsFix.java index ae32dc65..cce7e54e 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/ImplementMethodsFix.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/ImplementMethodsFix.java @@ -35,56 +35,56 @@ * Time: 9:39:02 PM */ public class ImplementMethodsFix extends BaseCreateMethodsFix implements SyntheticIntentionAction { - public ImplementMethodsFix(final JSClass jsClass) { - super(jsClass); - } - - @Override - @Nonnull - public String getText() { - return JavaScriptLocalize.javascriptFixImplementMethods().get(); - } + public ImplementMethodsFix(final JSClass jsClass) { + super(jsClass); + } - @Override - public boolean isAvailable(@Nonnull final Project project, final Editor editor, final PsiFile file) { - return myJsClass.isValid(); - } + @Override + @Nonnull + public String getText() { + return JavaScriptLocalize.javascriptFixImplementMethods().get(); + } - @Override - protected - @NonNls - String buildFunctionAttrText(@NonNls String attrText, final JSAttributeList attributeList, final JSFunction function) { - attrText = super.buildFunctionAttrText(attrText, attributeList, function); - if (attributeList == null || attributeList.getAccessType() != JSAttributeList.AccessType.PUBLIC) { - attrText = "public"; + @Override + public boolean isAvailable(@Nonnull final Project project, final Editor editor, final PsiFile file) { + return myJsClass.isValid(); } - return attrText; - } - @Override - protected String buildFunctionBodyText(final String retType, final JSParameterList parameterList, final JSFunction func) { - @NonNls String s = "{\n"; - if (retType != null && !"void".equals(retType)) { - s += "return " + defaultValueOfType(retType) + JSChangeUtil.getSemicolon(func.getProject()) + "\n"; + @Override + protected + @NonNls + String buildFunctionAttrText(@NonNls String attrText, final JSAttributeList attributeList, final JSFunction function) { + attrText = super.buildFunctionAttrText(attrText, attributeList, function); + if (attributeList == null || attributeList.getAccessType() != JSAttributeList.AccessType.PUBLIC) { + attrText = "public"; + } + return attrText; } - s += "}"; - return s; - } - private static - @NonNls - String defaultValueOfType(final @NonNls String retType) { - if ("int".equals(retType) || "uint".equals(retType) || "Number".equals(retType)) { - return "0"; + @Override + protected String buildFunctionBodyText(final String retType, final JSParameterList parameterList, final JSFunction func) { + @NonNls String s = "{\n"; + if (retType != null && !"void".equals(retType)) { + s += "return " + defaultValueOfType(retType) + JSChangeUtil.getSemicolon(func.getProject()) + "\n"; + } + s += "}"; + return s; } - if ("Boolean".equals(retType)) { - return "false"; + + private static + @NonNls + String defaultValueOfType(final @NonNls String retType) { + if ("int".equals(retType) || "uint".equals(retType) || "Number".equals(retType)) { + return "0"; + } + if ("Boolean".equals(retType)) { + return "false"; + } + return "null"; } - return "null"; - } - @Override - public boolean startInWriteAction() { - return true; - } + @Override + public boolean startInWriteAction() { + return true; + } } \ No newline at end of file diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/ImplementedMethodProcessor.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/ImplementedMethodProcessor.java index 0ed4ceda..bb6238d9 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/ImplementedMethodProcessor.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/ImplementedMethodProcessor.java @@ -32,161 +32,139 @@ /** * @author Maxim.Mossienko - * Date: Jul 17, 2008 - * Time: 9:50:49 PM + * Date: Jul 17, 2008 + * Time: 9:50:49 PM */ -public abstract class ImplementedMethodProcessor extends JSResolveUtil.CollectMethodsToImplementProcessor -{ - protected final JSClass myJsClass; - - public ImplementedMethodProcessor(final JSClass jsClass) - { - super(null, null); - myJsClass = jsClass; - } - - @Override - protected boolean process(final ResolveProcessor processor) - { - Map functions = null; - - for(PsiElement _function : processor.getResults()) - { - if(!(_function instanceof JSFunction)) - { - continue; - } - final JSFunction function = (JSFunction) _function; - final String name = function.getName(); - - if(functions == null) - { - functions = collectAllVisibleClassFunctions(myJsClass, null, new Function() - { - @Override - public Boolean apply(final JSFunction jsFunction) - { - final JSAttributeList attributeList = jsFunction.getAttributeList(); - PsiElement parentClass = JSResolveUtil.findParent(jsFunction); - if((attributeList == null || attributeList.getAccessType() != JSAttributeList.AccessType.PUBLIC) && myJsClass != parentClass) - { - return Boolean.FALSE; - } - return Boolean.TRUE; - } - }); - } - - JSFunction o = findFunctionWithTheSameKind(functions, function, name); - - if(o == null) - { - if(function.isGetProperty() || function.isSetProperty()) - { - JSVariable var = myJsClass.findFieldByName(name); - if(var != null) - { - JSAttributeList attributeList = var.getAttributeList(); - if(attributeList != null && attributeList.getAccessType() == JSAttributeList.AccessType.PUBLIC) - { - continue; // implicit get and set methods - } - } - } - addNonimplementedFunction(function); - } - else - { - addImplementedFunction(function, o); - } - } - return true; - } - - protected void addImplementedFunction(final JSFunction interfaceFunction, final JSFunction implementationFunction) - { - } - - public static JSFunction findFunctionWithTheSameKind(final Map functions, final JSFunction function, final String name) - { - Object o = functions.get(name); - if(o instanceof JSFunction && ((JSFunction) o).getKind() != function.getKind()) - { - o = null; - } - else if(o instanceof JSFunction[]) - { - final JSFunction[] jsFunctions = (JSFunction[]) o; - o = null; - for(JSFunction fun : jsFunctions) - { - if(fun.getKind() == function.getKind()) - { - o = fun; - break; - } - } - } - return (JSFunction) o; - } - - public static Map collectAllVisibleClassFunctions(JSClass jsClass, Map _functions, - final @Nullable Function filter) - { - final Map functions = _functions != null ? _functions : new LinkedHashMap(); - jsClass.processDeclarations(new ResolveProcessor(null) - { - { - setToProcessHierarchy(true); - setLocalResolve(true); - } - - @Override - public boolean execute(final PsiElement element, final ResolveState state) - { - if(element instanceof JSFunction) - { - final JSFunction function = (JSFunction) element; - if(function.isConstructor()) - { - return true; // SWC stubs have constructor methods :( - } - - final JSAttributeList attributeList = function.getAttributeList(); - if(attributeList != null && attributeList.getAccessType() == JSAttributeList.AccessType.PRIVATE) - { - return true; - } - - Boolean filterValue; - if(filter != null && (filterValue = filter.apply(function)) != null && !filterValue.booleanValue()) - { - return true; - } - final String s = function.getName(); - final Object function1 = functions.get(s); - - if(function1 == null) - { - functions.put(s, function); - } - else if(function1 instanceof JSFunction) - { - final JSFunction function2 = (JSFunction) function1; - if(findFunctionWithTheSameKind(functions, function, s) == null) - { - functions.put(s, new JSFunction[]{ - function2, - function - }); - } - } - } - return true; - } - }, ResolveState.initial(), jsClass, jsClass); - return functions; - } - - protected abstract void addNonimplementedFunction(final JSFunction function); +public abstract class ImplementedMethodProcessor extends JSResolveUtil.CollectMethodsToImplementProcessor { + protected final JSClass myJsClass; + + public ImplementedMethodProcessor(final JSClass jsClass) { + super(null, null); + myJsClass = jsClass; + } + + @Override + protected boolean process(final ResolveProcessor processor) { + Map functions = null; + + for (PsiElement _function : processor.getResults()) { + if (!(_function instanceof JSFunction)) { + continue; + } + final JSFunction function = (JSFunction)_function; + final String name = function.getName(); + + if (functions == null) { + functions = collectAllVisibleClassFunctions( + myJsClass, + null, + jsFunction -> { + final JSAttributeList attributeList = jsFunction.getAttributeList(); + PsiElement parentClass = JSResolveUtil.findParent(jsFunction); + if ((attributeList == null || attributeList.getAccessType() != JSAttributeList.AccessType.PUBLIC) + && myJsClass != parentClass) { + return Boolean.FALSE; + } + return Boolean.TRUE; + } + ); + } + + JSFunction o = findFunctionWithTheSameKind(functions, function, name); + + if (o == null) { + if (function.isGetProperty() || function.isSetProperty()) { + JSVariable var = myJsClass.findFieldByName(name); + if (var != null) { + JSAttributeList attributeList = var.getAttributeList(); + if (attributeList != null && attributeList.getAccessType() == JSAttributeList.AccessType.PUBLIC) { + continue; // implicit get and set methods + } + } + } + addNonimplementedFunction(function); + } + else { + addImplementedFunction(function, o); + } + } + return true; + } + + protected void addImplementedFunction(final JSFunction interfaceFunction, final JSFunction implementationFunction) { + } + + public static JSFunction findFunctionWithTheSameKind( + final Map functions, + final JSFunction function, + final String name + ) { + Object o = functions.get(name); + if (o instanceof JSFunction && ((JSFunction)o).getKind() != function.getKind()) { + o = null; + } + else if (o instanceof JSFunction[]) { + final JSFunction[] jsFunctions = (JSFunction[])o; + o = null; + for (JSFunction fun : jsFunctions) { + if (fun.getKind() == function.getKind()) { + o = fun; + break; + } + } + } + return (JSFunction)o; + } + + public static Map collectAllVisibleClassFunctions( + JSClass jsClass, Map _functions, + final @Nullable Function filter + ) { + final Map functions = _functions != null ? _functions : new LinkedHashMap<>(); + jsClass.processDeclarations(new ResolveProcessor(null) { + { + setToProcessHierarchy(true); + setLocalResolve(true); + } + + @Override + public boolean execute(final PsiElement element, final ResolveState state) { + if (element instanceof JSFunction) { + final JSFunction function = (JSFunction)element; + if (function.isConstructor()) { + return true; // SWC stubs have constructor methods :( + } + + final JSAttributeList attributeList = function.getAttributeList(); + if (attributeList != null && attributeList.getAccessType() == JSAttributeList.AccessType.PRIVATE) { + return true; + } + + Boolean filterValue; + if (filter != null && (filterValue = filter.apply(function)) != null && !filterValue.booleanValue()) { + return true; + } + final String s = function.getName(); + final Object function1 = functions.get(s); + + if (function1 == null) { + functions.put(s, function); + } + else if (function1 instanceof JSFunction) { + final JSFunction function2 = (JSFunction)function1; + if (findFunctionWithTheSameKind(functions, function, s) == null) { + functions.put(s, new JSFunction[]{ + function2, + function + }); + } + } + } + return true; + } + }, ResolveState.initial(), jsClass, jsClass); + return functions; + } + + protected abstract void addNonimplementedFunction(final JSFunction function); } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatingVisitor.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatingVisitor.java index 7e675836..5131091a 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatingVisitor.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatingVisitor.java @@ -57,980 +57,1011 @@ import org.jetbrains.annotations.NonNls; import jakarta.annotation.Nonnull; + import java.util.*; /** * @by max, maxim.mossienko */ public class JSAnnotatingVisitor extends JSElementVisitor implements Annotator { - private AnnotationHolder myHolder; - - @Override - public synchronized void annotate(PsiElement psiElement, AnnotationHolder holder) { - myHolder = holder; - psiElement.accept(this); - myHolder = null; - } - - @Override - public void visitJSAttributeNameValuePair(final JSAttributeNameValuePair attributeNameValuePair) { - checkReferences(attributeNameValuePair, HighlightSeverity.ERROR); - } - - @Override - public void visitJSIncludeDirective(final JSIncludeDirective includeDirective) { - checkReferences(includeDirective, HighlightSeverity.ERROR); - } - - @Override - public void visitJSLiteralExpression(JSSimpleLiteralExpression node) { - checkReferences(node, HighlightSeverity.ERROR); - } - - @RequiredReadAction - private void checkReferences(final PsiElement includeDirective, HighlightSeverity kind) { - for (PsiReference ref : includeDirective.getReferences()) { - if (!ref.isSoft() && hasBadResolve(ref)) { - final TextRange elementRange = ref.getElement().getTextRange(); - final TextRange textRange = ref.getRangeInElement(); - - final TextRange range = new TextRange( - elementRange.getStartOffset() + textRange.getStartOffset(), - elementRange.getStartOffset() + textRange.getEndOffset() - ); - final LocalizeValue value = ((EmptyResolveMessageProvider) ref).buildUnresolvedMessage(ref.getCanonicalText()); - AnnotationBuilder builder = myHolder.newAnnotation(kind, value); - builder = builder.range(range); - - if (ref instanceof LocalQuickFixProvider localQuickFixProvider) { - for (LocalQuickFix fix : localQuickFixProvider.getQuickFixes()) { - if (fix instanceof IntentionAction intentionAction) { - builder = builder.withFix(intentionAction); - } - } - } - builder.create(); - } - } - } + private AnnotationHolder myHolder; - private boolean hasBadResolve(final PsiReference ref) { - if (ref instanceof PsiPolyVariantReference psiPolyVariantReference) { - return psiPolyVariantReference.multiResolve(false).length == 0; + @Override + public synchronized void annotate(PsiElement psiElement, AnnotationHolder holder) { + myHolder = holder; + psiElement.accept(this); + myHolder = null; } - return ref.resolve() == null; - } - - @Override - public void visitJSCallExpression(final JSCallExpression node) { - final JSExpression methodExpression = node.getMethodExpression(); - if (methodExpression instanceof JSLiteralExpression) { - myHolder.createErrorAnnotation(methodExpression, JavaScriptLocalize.javascriptParserMessageExpectedFunctionName().get()); - } - } - - @Override - public void visitJSDocTagValue(final JSDocTagValue tagValue) { - checkReferences(tagValue, HighlightSeverity.WARNING); - } - - @Override - public void visitJSDocTag(final JSDocTag tagValue) { - checkReferences(tagValue, HighlightSeverity.WARNING); - } - - @Override - public void visitJSReferenceList(final JSReferenceList referenceList) { - final JSClass jsClass = (JSClass)referenceList.getParent(); - if (JSResolveUtil.isArtificialClassUsedForReferenceList(jsClass)) { - return; // implements="MyInterface" in mxml has artificial class created + @Override + public void visitJSAttributeNameValuePair(final JSAttributeNameValuePair attributeNameValuePair) { + checkReferences(attributeNameValuePair, HighlightSeverity.ERROR); } - final boolean withinExtends = jsClass.getExtendsList() == referenceList; - final boolean withinImplements = jsClass.getImplementsList() == referenceList; + @Override + public void visitJSIncludeDirective(final JSIncludeDirective includeDirective) { + checkReferences(includeDirective, HighlightSeverity.ERROR); + } - if (withinImplements && jsClass.isInterface()) { - myHolder.createErrorAnnotation(referenceList, - JavaScriptLocalize.javascriptValidationMessageImplementsForInterfaceNotAllowed().get() - ); - return; + @Override + public void visitJSLiteralExpression(JSSimpleLiteralExpression node) { + checkReferences(node, HighlightSeverity.ERROR); } - final Map nameToExprMap = new HashMap(); + @RequiredReadAction + private void checkReferences(final PsiElement includeDirective, HighlightSeverity kind) { + for (PsiReference ref : includeDirective.getReferences()) { + if (!ref.isSoft() && hasBadResolve(ref)) { + final TextRange elementRange = ref.getElement().getTextRange(); + final TextRange textRange = ref.getRangeInElement(); - final JSReferenceExpression[] referenceExpressions = referenceList.getExpressions(); - if (referenceExpressions != null) { - for (JSReferenceExpression expr : referenceExpressions) { - final String s = expr.getReferencedName(); - if (s != null) { - nameToExprMap.put(s, expr); + final TextRange range = new TextRange( + elementRange.getStartOffset() + textRange.getStartOffset(), + elementRange.getStartOffset() + textRange.getEndOffset() + ); + final LocalizeValue value = ((EmptyResolveMessageProvider)ref).buildUnresolvedMessage(ref.getCanonicalText()); + AnnotationBuilder builder = myHolder.newAnnotation(kind, value); + builder = builder.range(range); + + if (ref instanceof LocalQuickFixProvider localQuickFixProvider) { + for (LocalQuickFix fix : localQuickFixProvider.getQuickFixes()) { + if (fix instanceof IntentionAction intentionAction) { + builder = builder.withFix(intentionAction); + } + } + } + builder.create(); + } } - } } - for (JSClass clazz : referenceList.getReferencedClasses()) { - final boolean b = clazz.isInterface(); - final JSReferenceExpression expr = nameToExprMap.get(clazz.getName()); - - if (!b && withinImplements) { - myHolder.createErrorAnnotation(expr, JavaScriptLocalize.javascriptValidationMessageInterfaceNameExpectedHere().get()); - } - else if (withinExtends && b != jsClass.isInterface()) { - myHolder.createErrorAnnotation( - expr, - !b - ? JavaScriptLocalize.javascriptValidationMessageInterfaceNameExpectedHere().get() - : JavaScriptLocalize.javascriptValidationMessageClassNameExpectedHere().get() - ); - } - if (clazz == jsClass) { - myHolder.createErrorAnnotation(expr, JavaScriptLocalize.javascriptValidationMessageCircularDependency().get()) - .registerFix(new RemoveASTNodeFix(referenceList.getNode(), JavaScriptLocalize.javascriptFixRemoveCircularDependency())); - } + private boolean hasBadResolve(final PsiReference ref) { + if (ref instanceof PsiPolyVariantReference psiPolyVariantReference) { + return psiPolyVariantReference.multiResolve(false).length == 0; + } + return ref.resolve() == null; } - if (withinImplements) { - checkImplementedMethods(jsClass, new SimpleErrorReportingClient()); + @Override + public void visitJSCallExpression(final JSCallExpression node) { + final JSExpression methodExpression = node.getMethodExpression(); + + if (methodExpression instanceof JSLiteralExpression) { + myHolder.createErrorAnnotation(methodExpression, JavaScriptLocalize.javascriptParserMessageExpectedFunctionName().get()); + } } - } - public interface ErrorReportingClient { - enum ProblemKind { - ERROR, - WARNING + @Override + public void visitJSDocTagValue(final JSDocTagValue tagValue) { + checkReferences(tagValue, HighlightSeverity.WARNING); } - void reportError(final ASTNode nameIdentifier, final String s, ProblemKind kind, final IntentionAction implementMethodsFix); + @Override + public void visitJSDocTag(final JSDocTag tagValue) { + checkReferences(tagValue, HighlightSeverity.WARNING); + } - void reportError(final PsiElement nameIdentifier, final String s, ProblemKind kind, final IntentionAction implementMethodsFix); - } + @Override + public void visitJSReferenceList(final JSReferenceList referenceList) { + final JSClass jsClass = (JSClass)referenceList.getParent(); + if (JSResolveUtil.isArtificialClassUsedForReferenceList(jsClass)) { + return; // implements="MyInterface" in mxml has artificial class created + } - public static void checkImplementedMethods(final JSClass jsClass, final ErrorReportingClient reportingClient) { - final JSResolveUtil.CollectMethodsToImplementProcessor implementedMethodProcessor = new ImplementedMethodProcessor(jsClass) { - ImplementMethodsFix implementMethodsFix = null; + final boolean withinExtends = jsClass.getExtendsList() == referenceList; + final boolean withinImplements = jsClass.getImplementsList() == referenceList; - @Override - protected void addNonimplementedFunction(final JSFunction function) { - final PsiElement node = myJsClass.getNameIdentifier(); - if (node == null) { - return; - } - if (implementMethodsFix == null) { - implementMethodsFix = new ImplementMethodsFix(myJsClass); - } - implementMethodsFix.addElementToProcess(function); - reportingClient.reportError( - node, - JavaScriptLocalize.javascriptValidationMessageInterfaceMethodNotImplemented( - function.getName(), - ((JSClass)JSResolveUtil.findParent(function)).getQualifiedName() - ).get(), - ErrorReportingClient.ProblemKind.ERROR, - implementMethodsFix - ); - } - - @Override - protected void addImplementedFunction(final JSFunction interfaceFunction, final JSFunction implementationFunction) { - final JSAttributeList attributeList = implementationFunction.getAttributeList(); - if (attributeList == null || attributeList.getAccessType() != JSAttributeList.AccessType.PUBLIC) { - final ASTNode node = findElementForAccessModifierError(implementationFunction, attributeList); - reportingClient.reportError( - node, - JavaScriptLocalize.javascriptValidationMessageInterfaceMethodInvalidAccessModifier().get(), - ErrorReportingClient.ProblemKind.ERROR, - null - // TODO: quickfix - ); + if (withinImplements && jsClass.isInterface()) { + myHolder.createErrorAnnotation( + referenceList, + JavaScriptLocalize.javascriptValidationMessageImplementsForInterfaceNotAllowed().get() + ); + return; } - final SignatureMatchResult incompatibleSignature = checkCompatibleSignature(implementationFunction, interfaceFunction); + final Map nameToExprMap = new HashMap(); - if (incompatibleSignature != SignatureMatchResult.COMPATIBLE_SIGNATURE) { - PsiElement parent = JSResolveUtil.findParent(implementationFunction); - if (parent instanceof JSFile) { - parent = JSResolveUtil.getClassReferenceForXmlFromContext(parent); - } + final JSReferenceExpression[] referenceExpressions = referenceList.getExpressions(); + if (referenceExpressions != null) { + for (JSReferenceExpression expr : referenceExpressions) { + final String s = expr.getReferencedName(); + if (s != null) { + nameToExprMap.put(s, expr); + } + } + } - if (parent != myJsClass) { - // some parent incorrectly implements method from our interface - addNonimplementedFunction(interfaceFunction); - return; - } + for (JSClass clazz : referenceList.getReferencedClasses()) { + final boolean b = clazz.isInterface(); + final JSReferenceExpression expr = nameToExprMap.get(clazz.getName()); - if (incompatibleSignature == SignatureMatchResult.PARAMETERS_DIFFERS) { - final JSParameterList parameterList = implementationFunction.getParameterList(); - final JSParameterList expectedParameterList = interfaceFunction.getParameterList(); - reportingClient.reportError( - parameterList.getNode(), - JavaScriptLocalize.javascriptValidationMessageInterfaceMethodInvalidSignature( - expectedParameterList != null ? expectedParameterList.getText() : "()" - ).get(), - ErrorReportingClient.ProblemKind.ERROR, - null - ); // TODO: quickfix - } - else if (incompatibleSignature == SignatureMatchResult.RETURN_TYPE_DIFFERS) { - PsiElement implementationReturnTypeExpr = implementationFunction.getReturnTypeElement(); - PsiElement interfaceReturnTypeExpr = interfaceFunction.getReturnTypeElement(); - reportingClient.reportError( - implementationReturnTypeExpr != null ? implementationReturnTypeExpr : implementationFunction.getNameIdentifier(), - JavaScriptLocalize.javascriptValidationMessageInterfaceMethodInvalidSignature2( - interfaceReturnTypeExpr != null ? interfaceReturnTypeExpr.getText() : "*" - ).get(), - ErrorReportingClient.ProblemKind.ERROR, - null - ); // TODO: quickfix - } + if (!b && withinImplements) { + myHolder.createErrorAnnotation(expr, JavaScriptLocalize.javascriptValidationMessageInterfaceNameExpectedHere().get()); + } + else if (withinExtends && b != jsClass.isInterface()) { + myHolder.createErrorAnnotation( + expr, + !b + ? JavaScriptLocalize.javascriptValidationMessageInterfaceNameExpectedHere().get() + : JavaScriptLocalize.javascriptValidationMessageClassNameExpectedHere().get() + ); + } + if (clazz == jsClass) { + myHolder.createErrorAnnotation(expr, JavaScriptLocalize.javascriptValidationMessageCircularDependency().get()) + .registerFix(new RemoveASTNodeFix(referenceList.getNode(), JavaScriptLocalize.javascriptFixRemoveCircularDependency())); + } + } + + if (withinImplements) { + checkImplementedMethods(jsClass, new SimpleErrorReportingClient()); } - } - }; - JSResolveUtil.processInterfaceMethods(jsClass, implementedMethodProcessor); - } - - private static ASTNode findElementForAccessModifierError(final @Nonnull JSFunction o, final JSAttributeList attributeList) { - if (attributeList != null) { - final PsiElement accessTypeElement = attributeList.findAccessTypeElement(); - if (accessTypeElement != null) { - return accessTypeElement.getNode(); - } } - PsiElement nameIdentifier = o.getNameIdentifier(); - return nameIdentifier == null ? null : nameIdentifier.getNode(); - } - @Override - public void visitJSAttributeList(JSAttributeList attributeList) { - PsiElement parentForCheckingNsOrAccessModifier = null; + public interface ErrorReportingClient { + enum ProblemKind { + ERROR, + WARNING + } - PsiElement namespaceElement = attributeList.getNamespaceElement(); - PsiElement accessTypeElement = attributeList.findAccessTypeElement(); - PsiElement namespaceOrAccessModifierElement = namespaceElement; + void reportError(final ASTNode nameIdentifier, final String s, ProblemKind kind, final IntentionAction implementMethodsFix); + + void reportError(final PsiElement nameIdentifier, final String s, ProblemKind kind, final IntentionAction implementMethodsFix); + } + + public static void checkImplementedMethods(final JSClass jsClass, final ErrorReportingClient reportingClient) { + final JSResolveUtil.CollectMethodsToImplementProcessor implementedMethodProcessor = new ImplementedMethodProcessor(jsClass) { + ImplementMethodsFix implementMethodsFix = null; + + @Override + protected void addNonimplementedFunction(final JSFunction function) { + final PsiElement node = myJsClass.getNameIdentifier(); + if (node == null) { + return; + } + if (implementMethodsFix == null) { + implementMethodsFix = new ImplementMethodsFix(myJsClass); + } + implementMethodsFix.addElementToProcess(function); + reportingClient.reportError( + node, + JavaScriptLocalize.javascriptValidationMessageInterfaceMethodNotImplemented( + function.getName(), + ((JSClass)JSResolveUtil.findParent(function)).getQualifiedName() + ).get(), + ErrorReportingClient.ProblemKind.ERROR, + implementMethodsFix + ); + } - if (namespaceOrAccessModifierElement == null) { - namespaceOrAccessModifierElement = accessTypeElement; - } - else if (accessTypeElement != null) { - myHolder.createErrorAnnotation( - namespaceOrAccessModifierElement, - JavaScriptLocalize.javascriptValidationMessageUseNamespaceReferenceOrAccessModifier().get() - ) - .registerFix(new RemoveASTNodeFix( - namespaceOrAccessModifierElement.getNode(), - JavaScriptLocalize.javascriptFixRemoveNamespaceReference() - )); - - myHolder.createErrorAnnotation( - accessTypeElement, - JavaScriptLocalize.javascriptValidationMessageUseNamespaceReferenceOrAccessModifier().get() - ) - .registerFix(new RemoveASTNodeFix(accessTypeElement.getNode(), JavaScriptLocalize.javascriptFixRemoveNamespaceReference())); + @Override + protected void addImplementedFunction(final JSFunction interfaceFunction, final JSFunction implementationFunction) { + final JSAttributeList attributeList = implementationFunction.getAttributeList(); + if (attributeList == null || attributeList.getAccessType() != JSAttributeList.AccessType.PUBLIC) { + final ASTNode node = findElementForAccessModifierError(implementationFunction, attributeList); + reportingClient.reportError( + node, + JavaScriptLocalize.javascriptValidationMessageInterfaceMethodInvalidAccessModifier().get(), + ErrorReportingClient.ProblemKind.ERROR, + null + // TODO: quickfix + ); + } + + final SignatureMatchResult incompatibleSignature = checkCompatibleSignature(implementationFunction, interfaceFunction); + + if (incompatibleSignature != SignatureMatchResult.COMPATIBLE_SIGNATURE) { + PsiElement parent = JSResolveUtil.findParent(implementationFunction); + if (parent instanceof JSFile) { + parent = JSResolveUtil.getClassReferenceForXmlFromContext(parent); + } + + if (parent != myJsClass) { + // some parent incorrectly implements method from our interface + addNonimplementedFunction(interfaceFunction); + return; + } + + if (incompatibleSignature == SignatureMatchResult.PARAMETERS_DIFFERS) { + final JSParameterList parameterList = implementationFunction.getParameterList(); + final JSParameterList expectedParameterList = interfaceFunction.getParameterList(); + reportingClient.reportError( + parameterList.getNode(), + JavaScriptLocalize.javascriptValidationMessageInterfaceMethodInvalidSignature( + expectedParameterList != null ? expectedParameterList.getText() : "()" + ).get(), + ErrorReportingClient.ProblemKind.ERROR, + null + ); // TODO: quickfix + } + else if (incompatibleSignature == SignatureMatchResult.RETURN_TYPE_DIFFERS) { + PsiElement implementationReturnTypeExpr = implementationFunction.getReturnTypeElement(); + PsiElement interfaceReturnTypeExpr = interfaceFunction.getReturnTypeElement(); + reportingClient.reportError( + implementationReturnTypeExpr != null + ? implementationReturnTypeExpr + : implementationFunction.getNameIdentifier(), + JavaScriptLocalize.javascriptValidationMessageInterfaceMethodInvalidSignature2( + interfaceReturnTypeExpr != null ? interfaceReturnTypeExpr.getText() : "*" + ).get(), + ErrorReportingClient.ProblemKind.ERROR, + null + ); // TODO: quickfix + } + } + } + }; + JSResolveUtil.processInterfaceMethods(jsClass, implementedMethodProcessor); } - if (namespaceOrAccessModifierElement != null) { - parentForCheckingNsOrAccessModifier = JSResolveUtil.findParent(attributeList.getParent()); - if (!(parentForCheckingNsOrAccessModifier instanceof JSClass)) { - String typeElementText; - boolean nodeUnderPackage; - - if (((!(nodeUnderPackage = (parentForCheckingNsOrAccessModifier instanceof JSPackageStatement)) - && (!(parentForCheckingNsOrAccessModifier instanceof JSFile) - || attributeList.getAccessType() != JSAttributeList.AccessType.PACKAGE_LOCAL)) - || (!"public".equals(typeElementText = namespaceOrAccessModifierElement.getText())) - && !"internal".equals(typeElementText))) { - boolean nsRef = namespaceOrAccessModifierElement instanceof JSReferenceExpression; - myHolder.createErrorAnnotation( - namespaceOrAccessModifierElement, - nodeUnderPackage ? - JavaScriptLocalize.javascriptValidationMessageAccessModifierAllowedOnlyForPackageMembers().get() - : nsRef - ? JavaScriptLocalize.javascriptValidationMessageNamespaceAllowedOnlyForClassMembers().get() - : JavaScriptLocalize.javascriptValidationMessageAccessModifierAllowedOnlyForClassMembers().get() - ) - .registerFix(new RemoveASTNodeFix( - namespaceOrAccessModifierElement.getNode(), - nsRef ? JavaScriptLocalize.javascriptFixRemoveNamespaceReference() : JavaScriptLocalize.javascriptFixRemoveAccessModifier() - )); - } - } - else if (((JSClass)parentForCheckingNsOrAccessModifier).isInterface()) { - if (attributeList.getAccessType() != JSAttributeList.AccessType.PACKAGE_LOCAL - || attributeList.getNode().findChildByType(JSTokenTypes.INTERNAL_KEYWORD) != null - ) { - final ASTNode astNode = attributeList.getNode().findChildByType(JSTokenTypes.ACCESS_MODIFIERS); - final Annotation annotation = myHolder.createErrorAnnotation( - astNode, - JavaScriptLocalize.javascriptValidationMessageInterfaceMembersCannotHaveAccessModifiers().get() - ); - - annotation.registerFix(new RemoveASTNodeFix(astNode, JavaScriptLocalize.javascriptFixRemoveAccessModifier())); - } - } + private static ASTNode findElementForAccessModifierError(final @Nonnull JSFunction o, final JSAttributeList attributeList) { + if (attributeList != null) { + final PsiElement accessTypeElement = attributeList.findAccessTypeElement(); + if (accessTypeElement != null) { + return accessTypeElement.getNode(); + } + } + PsiElement nameIdentifier = o.getNameIdentifier(); + return nameIdentifier == null ? null : nameIdentifier.getNode(); } - } - @Override - public void visitJSReferenceExpression(final JSReferenceExpression node) { - final PsiElement parent = node.getParent(); + @Override + public void visitJSAttributeList(JSAttributeList attributeList) { + PsiElement parentForCheckingNsOrAccessModifier = null; - if (parent instanceof JSNamedElement namedElement) { - final PsiElement nameIdentifier = namedElement.getNameIdentifier(); + PsiElement namespaceElement = attributeList.getNamespaceElement(); + PsiElement accessTypeElement = attributeList.findAccessTypeElement(); + PsiElement namespaceOrAccessModifierElement = namespaceElement; - if (nameIdentifier != null && nameIdentifier == node) { - if (parent instanceof JSPackageStatement packageStatement) { - checkPackageStatement(packageStatement); + if (namespaceOrAccessModifierElement == null) { + namespaceOrAccessModifierElement = accessTypeElement; } - else if (!(parent instanceof JSImportStatement) && parent.getParent() instanceof JSPackageStatement) { - checkNamedObjectIsInCorrespondingFile(namedElement); + else if (accessTypeElement != null) { + myHolder.createErrorAnnotation( + namespaceOrAccessModifierElement, + JavaScriptLocalize.javascriptValidationMessageUseNamespaceReferenceOrAccessModifier().get() + ) + .registerFix(new RemoveASTNodeFix( + namespaceOrAccessModifierElement.getNode(), + JavaScriptLocalize.javascriptFixRemoveNamespaceReference() + )); + + myHolder.createErrorAnnotation( + accessTypeElement, + JavaScriptLocalize.javascriptValidationMessageUseNamespaceReferenceOrAccessModifier().get() + ) + .registerFix(new RemoveASTNodeFix(accessTypeElement.getNode(), JavaScriptLocalize.javascriptFixRemoveNamespaceReference())); } - else if (parent instanceof JSFunction function) { - if (function.isConstructor()) { - final JSClass clazz; - if (parent.getParent() instanceof JSClass jsClass) { - clazz = jsClass; + + if (namespaceOrAccessModifierElement != null) { + parentForCheckingNsOrAccessModifier = JSResolveUtil.findParent(attributeList.getParent()); + if (!(parentForCheckingNsOrAccessModifier instanceof JSClass)) { + String typeElementText; + boolean nodeUnderPackage; + + if (((!(nodeUnderPackage = (parentForCheckingNsOrAccessModifier instanceof JSPackageStatement)) + && (!(parentForCheckingNsOrAccessModifier instanceof JSFile) + || attributeList.getAccessType() != JSAttributeList.AccessType.PACKAGE_LOCAL)) + || (!"public".equals(typeElementText = namespaceOrAccessModifierElement.getText())) + && !"internal".equals(typeElementText))) { + boolean nsRef = namespaceOrAccessModifierElement instanceof JSReferenceExpression; + myHolder.createErrorAnnotation( + namespaceOrAccessModifierElement, + nodeUnderPackage ? + JavaScriptLocalize.javascriptValidationMessageAccessModifierAllowedOnlyForPackageMembers().get() + : nsRef + ? JavaScriptLocalize.javascriptValidationMessageNamespaceAllowedOnlyForClassMembers().get() + : JavaScriptLocalize.javascriptValidationMessageAccessModifierAllowedOnlyForClassMembers().get() + ) + .registerFix(new RemoveASTNodeFix( + namespaceOrAccessModifierElement.getNode(), + nsRef + ? JavaScriptLocalize.javascriptFixRemoveNamespaceReference() + : JavaScriptLocalize.javascriptFixRemoveAccessModifier() + )); + } } - else { - assert parent.getParent() instanceof JSFile; - clazz = JSResolveUtil.getXmlBackedClass((JSFile)parent.getParent()); - assert clazz != null; + else if (((JSClass)parentForCheckingNsOrAccessModifier).isInterface()) { + if (attributeList.getAccessType() != JSAttributeList.AccessType.PACKAGE_LOCAL + || attributeList.getNode().findChildByType(JSTokenTypes.INTERNAL_KEYWORD) != null + ) { + final ASTNode astNode = attributeList.getNode().findChildByType(JSTokenTypes.ACCESS_MODIFIERS); + final Annotation annotation = myHolder.createErrorAnnotation( + astNode, + JavaScriptLocalize.javascriptValidationMessageInterfaceMembersCannotHaveAccessModifiers().get() + ); + + annotation.registerFix(new RemoveASTNodeFix(astNode, JavaScriptLocalize.javascriptFixRemoveAccessModifier())); + } } + } + } - checkMissedSuperCall(node, function, clazz); - } - else if (function.isSetProperty()) { - String typeString = function.getReturnTypeString(); - - if (typeString != null && !"void".equals(typeString)) { - // TODO: fix! - myHolder.createErrorAnnotation( - function.getReturnTypeElement(), - JavaScriptLocalize.javascriptValidationMessageSetMethodShouldBeVoidOrWithoutType().get() - ); + @Override + public void visitJSReferenceExpression(final JSReferenceExpression node) { + final PsiElement parent = node.getParent(); + + if (parent instanceof JSNamedElement namedElement) { + final PsiElement nameIdentifier = namedElement.getNameIdentifier(); + + if (nameIdentifier != null && nameIdentifier == node) { + if (parent instanceof JSPackageStatement packageStatement) { + checkPackageStatement(packageStatement); + } + else if (!(parent instanceof JSImportStatement) && parent.getParent() instanceof JSPackageStatement) { + checkNamedObjectIsInCorrespondingFile(namedElement); + } + else if (parent instanceof JSFunction function) { + if (function.isConstructor()) { + final JSClass clazz; + if (parent.getParent() instanceof JSClass jsClass) { + clazz = jsClass; + } + else { + assert parent.getParent() instanceof JSFile; + clazz = JSResolveUtil.getXmlBackedClass((JSFile)parent.getParent()); + assert clazz != null; + } + + checkMissedSuperCall(node, function, clazz); + } + else if (function.isSetProperty()) { + String typeString = function.getReturnTypeString(); + + if (typeString != null && !"void".equals(typeString)) { + // TODO: fix! + myHolder.createErrorAnnotation( + function.getReturnTypeElement(), + JavaScriptLocalize.javascriptValidationMessageSetMethodShouldBeVoidOrWithoutType().get() + ); + } + + JSParameterList parameterList = function.getParameterList(); + if (parameterList != null && parameterList.getParameters().length != 1) { + // TODO: fix! + myHolder.createErrorAnnotation( + parameterList, + JavaScriptLocalize.javascriptValidationMessageSetMethodShouldHaveOneParameter().get() + ); + } + } + else if (function.isGetProperty()) { + String typeString = function.getReturnTypeString(); + + if (typeString == null || "void".equals(typeString)) { + // TODO: fix! + myHolder.createErrorAnnotation( + typeString != null ? function.getReturnTypeElement() : nameIdentifier, + JavaScriptLocalize + .javascriptValidationMessageGetMethodShouldBeValidType(typeString != null ? typeString : "empty").get() + ); + } + + JSParameterList parameterList = function.getParameterList(); + if (parameterList != null && parameterList.getParameters().length != 0) { + // TODO: fix! + myHolder.createErrorAnnotation( + parameterList, + JavaScriptLocalize.javascriptValidationMessageGetMethodShouldHaveNoParameter().get() + ); + } + } + } + + if (parent instanceof JSClass jsClass) { + final JSFunction constructor = jsClass.findFunctionByName(jsClass.getName()); + if (constructor == null) { + checkMissedSuperCall(node, constructor, jsClass); + } + + PsiElement clazzParent = jsClass.getParent(); + if (!(clazzParent instanceof JSPackageStatement || clazzParent instanceof JSFile)) { + myHolder.createErrorAnnotation( + node, + JavaScriptLocalize.javascriptValidationMessageNestedClassesAreNotAllowed().get() + ); + } + } } + } - JSParameterList parameterList = function.getParameterList(); - if (parameterList != null && parameterList.getParameters().length != 1) { - // TODO: fix! - myHolder.createErrorAnnotation( - parameterList, - JavaScriptLocalize.javascriptValidationMessageSetMethodShouldHaveOneParameter().get() - ); + if (node.getQualifier() == null && !(parent instanceof JSCallExpression) && "arguments".equals(node.getText())) { + JSFunction fun = PsiTreeUtil.getParentOfType(node, JSFunction.class); + if (fun == null) { + myHolder.createErrorAnnotation(node, JavaScriptLocalize.javascriptValidationMessageArgumentsOutOfFunction().get()); } - } - else if (function.isGetProperty()) { - String typeString = function.getReturnTypeString(); - - if (typeString == null || "void".equals(typeString)) { - // TODO: fix! - myHolder.createErrorAnnotation( - typeString != null ? function.getReturnTypeElement() : nameIdentifier, - JavaScriptLocalize.javascriptValidationMessageGetMethodShouldBeValidType(typeString != null ? typeString : "empty").get() - ); + else { + JSParameterList parameterList = fun.getParameterList(); + if (parameterList != null) { + for (JSParameter p : parameterList.getParameters()) { + if (p.isRest()) { + myHolder.createErrorAnnotation( + node, + JavaScriptLocalize.javascriptValidationMessageArgumentsWithRestParameter().get() + ); + } + } + } } + } + } - JSParameterList parameterList = function.getParameterList(); - if (parameterList != null && parameterList.getParameters().length != 0) { - // TODO: fix! - myHolder.createErrorAnnotation( - parameterList, - JavaScriptLocalize.javascriptValidationMessageGetMethodShouldHaveNoParameter().get() - ); - } - } + private void checkMissedSuperCall(JSReferenceExpression node, JSFunction constructor, JSClass jsClass) { + if (jsClass.isInterface()) { + return; } + JSFunction nontrivialSuperClassConstructor = getNontrivialSuperClassConstructor(jsClass); - if (parent instanceof JSClass jsClass) { - final JSFunction constructor = jsClass.findFunctionByName(jsClass.getName()); - if (constructor == null) { - checkMissedSuperCall(node, constructor, jsClass); - } + if (nontrivialSuperClassConstructor != null) { + Annotation annotation = null; - PsiElement clazzParent = jsClass.getParent(); - if (!(clazzParent instanceof JSPackageStatement || clazzParent instanceof JSFile)) { - myHolder.createErrorAnnotation(node, JavaScriptLocalize.javascriptValidationMessageNestedClassesAreNotAllowed().get()); - } + if (!hasSuperConstructorCall(constructor)) { + annotation = + myHolder.createErrorAnnotation(node, JavaScriptLocalize.javascriptValidationMessageMissedSuperConstructorCall().get()); + } + + if (annotation != null) { + if (constructor == null) { + annotation.registerFix(new AddConstructorAndSuperInvokationFix(node, nontrivialSuperClassConstructor)); + } + else { + annotation.registerFix(new AddSuperInvokationFix(node, nontrivialSuperClassConstructor)); + } + } } - } } - if (node.getQualifier() == null && !(parent instanceof JSCallExpression) && "arguments".equals(node.getText())) { - JSFunction fun = PsiTreeUtil.getParentOfType(node, JSFunction.class); - if (fun == null) { - myHolder.createErrorAnnotation(node, JavaScriptLocalize.javascriptValidationMessageArgumentsOutOfFunction().get()); - } - else { - JSParameterList parameterList = fun.getParameterList(); - if (parameterList != null) { - for (JSParameter p : parameterList.getParameters()) { - if (p.isRest()) { - myHolder.createErrorAnnotation( - node, - JavaScriptLocalize.javascriptValidationMessageArgumentsWithRestParameter().get() - ); + private boolean hasSuperConstructorCall(JSFunction jsFunction) { + if (jsFunction == null) { + return false; + } + final JSSourceElement[] body = (jsFunction).getBody(); + final JSStatement[] statements = body.length > 0 ? ((JSBlockStatement)body[0]).getStatements() : JSStatement.EMPTY; + + for (JSStatement st : statements) { + if (st instanceof JSExpressionStatement expressionStatement + && expressionStatement.getExpression() instanceof JSCallExpression callExpression + && callExpression.getMethodExpression() instanceof JSSuperExpression) { + return true; } - } } - } - } - } - private void checkMissedSuperCall(JSReferenceExpression node, JSFunction constructor, JSClass jsClass) { - if (jsClass.isInterface()) { - return; + return false; } - JSFunction nontrivialSuperClassConstructor = getNontrivialSuperClassConstructor(jsClass); - if (nontrivialSuperClassConstructor != null) { - Annotation annotation = null; + public static JSFunction getNontrivialSuperClassConstructor(JSClass clazz) { + final JSClass[] classes = clazz.getSuperClasses(); - if (!hasSuperConstructorCall(constructor)) { - annotation = - myHolder.createErrorAnnotation(node, JavaScriptLocalize.javascriptValidationMessageMissedSuperConstructorCall().get()); - } + if (classes.length > 0) { + final JSFunction constructor = classes[0].findFunctionByName(classes[0].getName()); - if (annotation != null) { - if (constructor == null) { - annotation.registerFix(new AddConstructorAndSuperInvokationFix(node, nontrivialSuperClassConstructor)); - } - else { - annotation.registerFix(new AddSuperInvokationFix(node, nontrivialSuperClassConstructor)); + if (constructor != null) { + final JSParameter[] jsParameters = constructor.getParameterList().getParameters(); + boolean hasRequiredParameters = false; + for (JSParameter p : jsParameters) { + if (!p.isRest() && !p.hasInitializer()) { + hasRequiredParameters = true; + break; + } + } + return hasRequiredParameters ? constructor : null; + } } - } - } - } - private boolean hasSuperConstructorCall(JSFunction jsFunction) { - if (jsFunction == null) { - return false; + return null; } - final JSSourceElement[] body = (jsFunction).getBody(); - final JSStatement[] statements = body.length > 0 ? ((JSBlockStatement)body[0]).getStatements() : JSStatement.EMPTY; - for (JSStatement st : statements) { - if (st instanceof JSExpressionStatement expressionStatement - && expressionStatement.getExpression() instanceof JSCallExpression callExpression - && callExpression.getMethodExpression() instanceof JSSuperExpression) { - return true; - } - } - - return false; - } + @Override + public void visitJSParameterList(JSParameterList node) { + boolean foundRest = false; + boolean initializerPresent = false; - public static JSFunction getNontrivialSuperClassConstructor(JSClass clazz) { - final JSClass[] classes = clazz.getSuperClasses(); + for (JSParameter parameter : node.getParameters()) { + JSExpression initializer = parameter.getInitializer(); + boolean hasInitializer = initializer != null; - if (classes.length > 0) { - final JSFunction constructor = classes[0].findFunctionByName(classes[0].getName()); + if (hasInitializer && !initializerPresent) { + initializerPresent = true; + } + else if (!hasInitializer && initializerPresent && !parameter.isRest()) { + myHolder.createErrorAnnotation( + parameter, + JavaScriptLocalize.javascriptValidationMessageParameterShouldBeInitialized().get() + ) + .registerFix(new RemoveASTNodeFix(parameter.getNode(), JavaScriptLocalize.javascriptFixRemoveParameter())); + } + else if (hasInitializer && parameter.isRest()) { + myHolder.createErrorAnnotation( + parameter, + JavaScriptLocalize.javascriptValidationMessageRestParameterShouldNotBeInitialized().get() + ) + .registerFix(new RemoveASTNodeFix( + JavaScriptLocalize.javascriptFixRemoveInitializer(), + getNodesBefore(initializer, JSTokenTypes.EQ) + )); + } - if (constructor != null) { - final JSParameter[] jsParameters = constructor.getParameterList().getParameters(); - boolean hasRequiredParameters = false; - for (JSParameter p : jsParameters) { - if (!p.isRest() && !p.hasInitializer()) { - hasRequiredParameters = true; - break; - } + if (parameter.isRest() && !foundRest) { + foundRest = true; + PsiElement typeElement = parameter.getTypeElement(); + if (typeElement != null && !"Array".equals(typeElement.getText())) { + myHolder.createErrorAnnotation( + typeElement, + JavaScriptLocalize.javascriptValidationMessageUnexpectedTypeForRestParameter().get() + ) + .registerFix(new RemoveASTNodeFix( + JavaScriptLocalize.javascriptFixRemoveTypeReference(), + getNodesBefore(typeElement, JSTokenTypes.COLON) + )); + } + } + else if (foundRest) { + myHolder.createErrorAnnotation( + parameter, + JavaScriptLocalize.javascriptValidationMessageParameterIsNotAllowedAfterRestParameter().get() + ) + .registerFix(new RemoveASTNodeFix(parameter.getNode(), JavaScriptLocalize.javascriptFixRemoveParameter())); + } } - return hasRequiredParameters ? constructor : null; - } - } - - return null; - } - - @Override - public void visitJSParameterList(JSParameterList node) { - boolean foundRest = false; - boolean initializerPresent = false; - - for (JSParameter parameter : node.getParameters()) { - JSExpression initializer = parameter.getInitializer(); - boolean hasInitializer = initializer != null; - - if (hasInitializer && !initializerPresent) { - initializerPresent = true; - } - else if (!hasInitializer && initializerPresent && !parameter.isRest()) { - myHolder.createErrorAnnotation(parameter, JavaScriptLocalize.javascriptValidationMessageParameterShouldBeInitialized().get()) - .registerFix(new RemoveASTNodeFix(parameter.getNode(), JavaScriptLocalize.javascriptFixRemoveParameter())); - } - else if (hasInitializer && parameter.isRest()) { - myHolder.createErrorAnnotation( - parameter, - JavaScriptLocalize.javascriptValidationMessageRestParameterShouldNotBeInitialized().get() - ) - .registerFix(new RemoveASTNodeFix( - JavaScriptLocalize.javascriptFixRemoveInitializer(), - getNodesBefore(initializer, JSTokenTypes.EQ) - )); - } - - if (parameter.isRest() && !foundRest) { - foundRest = true; - PsiElement typeElement = parameter.getTypeElement(); - if (typeElement != null && !"Array".equals(typeElement.getText())) { - myHolder.createErrorAnnotation( - typeElement, - JavaScriptLocalize.javascriptValidationMessageUnexpectedTypeForRestParameter().get() - ) - .registerFix(new RemoveASTNodeFix( - JavaScriptLocalize.javascriptFixRemoveTypeReference(), - getNodesBefore(typeElement, JSTokenTypes.COLON) - )); - } - } - else if (foundRest) { - myHolder.createErrorAnnotation( - parameter, - JavaScriptLocalize.javascriptValidationMessageParameterIsNotAllowedAfterRestParameter().get() - ) - .registerFix(new RemoveASTNodeFix(parameter.getNode(), JavaScriptLocalize.javascriptFixRemoveParameter())); - } } - } - private static ASTNode[] getNodesBefore(PsiElement initializer, IElementType eq) { - List nodes = new ArrayList<>(); - PsiElement element = initializer.getPrevSibling(); - PsiElement lastElement = element; + private static ASTNode[] getNodesBefore(PsiElement initializer, IElementType eq) { + List nodes = new ArrayList<>(); + PsiElement element = initializer.getPrevSibling(); + PsiElement lastElement = element; - if (element instanceof PsiWhiteSpace) { - nodes.add(element.getNode()); - lastElement = element.getPrevSibling(); - } + if (element instanceof PsiWhiteSpace) { + nodes.add(element.getNode()); + lastElement = element.getPrevSibling(); + } - if (lastElement != null && lastElement.getNode().getElementType() == eq) { - nodes.add(lastElement.getNode()); - } + if (lastElement != null && lastElement.getNode().getElementType() == eq) { + nodes.add(lastElement.getNode()); + } - nodes.add(initializer.getNode()); - return nodes.toArray(new ASTNode[nodes.size()]); - } - - @Override - public void visitJSPackageStatement(final JSPackageStatement packageStatement) { - for (PsiElement el = packageStatement.getPrevSibling(); el != null; el = el.getPrevSibling()) { - if (!(el instanceof PsiWhiteSpace || el instanceof PsiComment)) { - myHolder.createErrorAnnotation( - packageStatement.getFirstChild().getNode(), - JavaScriptLocalize.javascriptValidationMessagePackageShouldbeFirstStatement().get() - ); - break; - } - } - final PsiElement node = packageStatement.getNameIdentifier(); - if (node == null) { - checkPackageStatement(packageStatement); + nodes.add(initializer.getNode()); + return nodes.toArray(new ASTNode[nodes.size()]); } - } - @Override - public void visitJSAssignmentExpression(final JSAssignmentExpression expression) { - JSExpression lExpr = expression.getLOperand(); - if (lExpr == null) { - return; - } - if (lExpr instanceof JSDefinitionExpression definitionExpression) { - lExpr = definitionExpression.getExpression(); + @Override + public void visitJSPackageStatement(final JSPackageStatement packageStatement) { + for (PsiElement el = packageStatement.getPrevSibling(); el != null; el = el.getPrevSibling()) { + if (!(el instanceof PsiWhiteSpace || el instanceof PsiComment)) { + myHolder.createErrorAnnotation( + packageStatement.getFirstChild().getNode(), + JavaScriptLocalize.javascriptValidationMessagePackageShouldbeFirstStatement().get() + ); + break; + } + } + final PsiElement node = packageStatement.getNameIdentifier(); + if (node == null) { + checkPackageStatement(packageStatement); + } } - if (lExpr instanceof JSReferenceExpression lRefExpr) { - PsiElement resolved = lRefExpr.resolve(); - if (resolved instanceof JSVariable variable && variable.isConst()) { - myHolder.createErrorAnnotation(lExpr, JavaScriptLocalize.javascriptValidationMessageAssignmentToConst().get()); - } - } + @Override + public void visitJSAssignmentExpression(final JSAssignmentExpression expression) { + JSExpression lExpr = expression.getLOperand(); + if (lExpr == null) { + return; + } + if (lExpr instanceof JSDefinitionExpression definitionExpression) { + lExpr = definitionExpression.getExpression(); + } - if (!JSUtils.isLHSExpression(lExpr)) { - myHolder.createErrorAnnotation(lExpr, JavaScriptLocalize.javascriptValidationMessageMustBeLvalue().get()); - } - } - - @Override - public void visitJSArrayLiteralExpression(final JSArrayLiteralExpression node) { - final PsiElement lastChild = node.getLastChild(); - PsiElement child = lastChild != null ? lastChild.getPrevSibling() : null; - if (child instanceof PsiWhiteSpace) { - child = child.getPrevSibling(); - } - ASTNode childNode; + if (lExpr instanceof JSReferenceExpression lRefExpr) { + PsiElement resolved = lRefExpr.resolve(); + if (resolved instanceof JSVariable variable && variable.isConst()) { + myHolder.createErrorAnnotation(lExpr, JavaScriptLocalize.javascriptValidationMessageAssignmentToConst().get()); + } + } - if (child != null && (childNode = child.getNode()) != null && childNode.getElementType() == JSTokenTypes.COMMA) { - final Annotation annotation = - myHolder.createWarningAnnotation(child, JavaScriptLocalize.javascriptValidationMessageUnneededComma().get()); - annotation.registerFix(new RemoveASTNodeFix(childNode, JavaScriptLocalize.javascriptValidationMessageRemoveUnneededCommaFix())); + if (!JSUtils.isLHSExpression(lExpr)) { + myHolder.createErrorAnnotation(lExpr, JavaScriptLocalize.javascriptValidationMessageMustBeLvalue().get()); + } } - } - - @Override - public void visitJSTryStatement(final JSTryStatement node) { - final JSCatchBlock[] blocks = node.getAllCatchBlocks(); - - if (blocks.length > 1) { - final Set typeToCatch = new HashSet<>(); - for (JSCatchBlock block : blocks) { - final JSParameter p = block.getParameter(); - if (p == null) { - continue; + @Override + public void visitJSArrayLiteralExpression(final JSArrayLiteralExpression node) { + final PsiElement lastChild = node.getLastChild(); + PsiElement child = lastChild != null ? lastChild.getPrevSibling() : null; + if (child instanceof PsiWhiteSpace) { + child = child.getPrevSibling(); } + ASTNode childNode; - String s = p.getTypeString(); - if (s == null) { - s = ""; + if (child != null && (childNode = child.getNode()) != null && childNode.getElementType() == JSTokenTypes.COMMA) { + final Annotation annotation = + myHolder.createWarningAnnotation(child, JavaScriptLocalize.javascriptValidationMessageUnneededComma().get()); + annotation.registerFix(new RemoveASTNodeFix(childNode, JavaScriptLocalize.javascriptValidationMessageRemoveUnneededCommaFix())); } + } - if (typeToCatch.contains(s)) { - final Annotation annotation = - myHolder.createErrorAnnotation(block, JavaScriptLocalize.javascriptValidationMessageDuplicatedCatchBlock().get()); - annotation.registerFix(new RemoveASTNodeFix( - block.getNode(), - JavaScriptLocalize.javascriptValidationMessageDuplicatedCatchBlockFix() - )); - } - else { - typeToCatch.add(s); + @Override + public void visitJSTryStatement(final JSTryStatement node) { + final JSCatchBlock[] blocks = node.getAllCatchBlocks(); + + if (blocks.length > 1) { + final Set typeToCatch = new HashSet<>(); + + for (JSCatchBlock block : blocks) { + final JSParameter p = block.getParameter(); + if (p == null) { + continue; + } + + String s = p.getTypeString(); + if (s == null) { + s = ""; + } + + if (typeToCatch.contains(s)) { + final Annotation annotation = + myHolder.createErrorAnnotation(block, JavaScriptLocalize.javascriptValidationMessageDuplicatedCatchBlock().get()); + annotation.registerFix(new RemoveASTNodeFix( + block.getNode(), + JavaScriptLocalize.javascriptValidationMessageDuplicatedCatchBlockFix() + )); + } + else { + typeToCatch.add(s); + } + } } - } - } - } - - @Override - public void visitJSVariable(final JSVariable var) { - if (var.isConst() && var.getInitializer() == null) { - if (var.getParent() instanceof JSVarStatement varStatement && varStatement.getParent() instanceof JSForInStatement) { - return; - } - - JSAttributeList attributeList = var.getAttributeList(); - if (attributeList == null || attributeList.getAttributesByName("Embed").length == 0) { - myHolder.createWarningAnnotation( - var, - JavaScriptLocalize.javascriptValidationMessageConstVariableWithoutInitializer().get() - ); - } } - if (var.getParent().getParent() instanceof JSPackageStatement) { - checkNamedObjectIsInCorrespondingFile(var); - } - } + @Override + public void visitJSVariable(final JSVariable var) { + if (var.isConst() && var.getInitializer() == null) { + if (var.getParent() instanceof JSVarStatement varStatement && varStatement.getParent() instanceof JSForInStatement) { + return; + } - @Override - public void visitJSContinueStatement(final JSContinueStatement node) { - if (node.getStatementToContinue() == null) { - myHolder.createErrorAnnotation(node, JavaScriptLocalize.javascriptValidationMessageContinueWithoutTarget().get()); - } - } + JSAttributeList attributeList = var.getAttributeList(); + if (attributeList == null || attributeList.getAttributesByName("Embed").length == 0) { + myHolder.createWarningAnnotation( + var, + JavaScriptLocalize.javascriptValidationMessageConstVariableWithoutInitializer().get() + ); + } + } - @Override - public void visitJSBreakStatement(final JSBreakStatement node) { - if (node.getStatementToBreak() == null) { - myHolder.createErrorAnnotation(node, JavaScriptLocalize.javascriptValidationMessageBreakWithoutTarget().get()); - } - } - - @Override - public void visitJSThisExpression(final JSThisExpression node) { - checkClassReferenceInStaticContext(node, JavaScriptLocalize.javascriptValidationMessageThisReferencedFromStaticContext()); - } - - private void checkClassReferenceInStaticContext( - final JSExpression node, - LocalizeValue message - ) { - PsiElement element = PsiTreeUtil.getParentOfType( - node, - JSFunction.class, - JSFile.class, - JSClass.class, - JSObjectLiteralExpression.class, - XmlTagChild.class - ); - - if (element instanceof JSFunction function) { - final JSAttributeList attributeList = function.getAttributeList(); - if (attributeList != null && attributeList.hasModifier(JSAttributeList.ModifierType.STATIC)) { - myHolder.createErrorAnnotation(node, message.get()); - return; - } + if (var.getParent().getParent() instanceof JSPackageStatement) { + checkNamedObjectIsInCorrespondingFile(var); + } } - if (!(node instanceof JSSuperExpression)) { - return; + @Override + public void visitJSContinueStatement(final JSContinueStatement node) { + if (node.getStatementToContinue() == null) { + myHolder.createErrorAnnotation(node, JavaScriptLocalize.javascriptValidationMessageContinueWithoutTarget().get()); + } } - PsiElement elementParent = element != null ? element.getParent() : null; - if (element == null || !(elementParent instanceof JSClass || elementParent instanceof JSFile && elementParent.getContext() != null)) { - myHolder.createErrorAnnotation(node, JavaScriptLocalize.javascriptValidationMessageSuperReferencedWithoutClassInstanceContext().get()); - } - } - - @Override - public void visitJSSuperExpression(final JSSuperExpression node) { - checkClassReferenceInStaticContext(node, JavaScriptLocalize.javascriptValidationMessageSuperReferencedFromStaticContext()); - } - - @Override - public void visitJSFunctionDeclaration(final JSFunction node) { - final PsiElement nameIdentifier = node.getNameIdentifier(); - if (nameIdentifier == null) { - return; + @Override + public void visitJSBreakStatement(final JSBreakStatement node) { + if (node.getStatementToBreak() == null) { + myHolder.createErrorAnnotation(node, JavaScriptLocalize.javascriptValidationMessageBreakWithoutTarget().get()); + } } - PsiElement parent = node.getParent(); - if (parent instanceof JSFile file) { - parent = JSResolveUtil.getClassReferenceForXmlFromContext(file); + @Override + public void visitJSThisExpression(final JSThisExpression node) { + checkClassReferenceInStaticContext(node, JavaScriptLocalize.javascriptValidationMessageThisReferencedFromStaticContext()); + } - if (parent instanceof JSClass jsClass && node.getName().equals(jsClass.getName()) - && JavaScriptSupportLoader.isFlexMxmFile(parent.getContainingFile())) { - final Annotation annotation = myHolder.createErrorAnnotation( - nameIdentifier, - JavaScriptLocalize.javascriptValidationMessageConstructorInMxmlIsNotAllowed().get() + private void checkClassReferenceInStaticContext( + final JSExpression node, + LocalizeValue message + ) { + PsiElement element = PsiTreeUtil.getParentOfType( + node, + JSFunction.class, + JSFile.class, + JSClass.class, + JSObjectLiteralExpression.class, + XmlTagChild.class ); - annotation.registerFix(new RemoveASTNodeFix(node.getNode(), JavaScriptLocalize.javascriptFixRemoveConstructor())); - } + if (element instanceof JSFunction function) { + final JSAttributeList attributeList = function.getAttributeList(); + if (attributeList != null && attributeList.hasModifier(JSAttributeList.ModifierType.STATIC)) { + myHolder.createErrorAnnotation(node, message.get()); + return; + } + } + + if (!(node instanceof JSSuperExpression)) { + return; + } + + PsiElement elementParent = element != null ? element.getParent() : null; + if (element == null + || !(elementParent instanceof JSClass || elementParent instanceof JSFile && elementParent.getContext() != null)) { + myHolder.createErrorAnnotation( + node, + JavaScriptLocalize.javascriptValidationMessageSuperReferencedWithoutClassInstanceContext().get() + ); + } } - if (parent instanceof JSPackageStatement) { - checkNamedObjectIsInCorrespondingFile(node); + @Override + public void visitJSSuperExpression(final JSSuperExpression node) { + checkClassReferenceInStaticContext(node, JavaScriptLocalize.javascriptValidationMessageSuperReferencedFromStaticContext()); } - if (parent instanceof JSClass clazz && !node.isConstructor()) { - final JSAttributeList attributeList = node.getAttributeList(); + @Override + public void visitJSFunctionDeclaration(final JSFunction node) { + final PsiElement nameIdentifier = node.getNameIdentifier(); + if (nameIdentifier == null) { + return; + } + PsiElement parent = node.getParent(); - if (attributeList == null || (!attributeList.hasModifier(JSAttributeList.ModifierType.STATIC) && (attributeList.getAccessType() != JSAttributeList - .AccessType.PRIVATE || attributeList.hasModifier(JSAttributeList.ModifierType.OVERRIDE)))) { - final String qName = clazz.getQualifiedName(); - final boolean hasOverride = attributeList != null ? attributeList.hasModifier(JSAttributeList.ModifierType.OVERRIDE) : false; + if (parent instanceof JSFile file) { + parent = JSResolveUtil.getClassReferenceForXmlFromContext(file); - final Ref set = new Ref<>(); - boolean b = JSResolveUtil.iterateType(node, parent, qName, (processor, scope, className) -> { - if (qName == className || (qName != null && qName.equals(className))) { - return true; - } - set.set((JSFunction)processor.getResult()); - if ("Object".equals(className)) { - if (hasOverride && !attributeList.hasModifier(JSAttributeList.ModifierType.NATIVE)) { /*native modifier is written always*/ - final ASTNode astNode = attributeList.getNode().findChildByType(JSTokenTypes.OVERRIDE_KEYWORD); + if (parent instanceof JSClass jsClass && node.getName().equals(jsClass.getName()) + && JavaScriptSupportLoader.isFlexMxmFile(parent.getContainingFile())) { final Annotation annotation = myHolder.createErrorAnnotation( - astNode, - JavaScriptLocalize.javascriptValidationMessageFunctionOverrideForObjectMethod().get() + nameIdentifier, + JavaScriptLocalize.javascriptValidationMessageConstructorInMxmlIsNotAllowed().get() ); - annotation.registerFix(new RemoveASTNodeFix(astNode, JavaScriptLocalize.javascriptFixRemoveOverrideModifier())); - } - return false; + annotation.registerFix(new RemoveASTNodeFix(node.getNode(), JavaScriptLocalize.javascriptFixRemoveConstructor())); } - else if (!hasOverride) { - final Annotation annotation = myHolder.createErrorAnnotation( - nameIdentifier, - JavaScriptLocalize.javascriptValidationMessageFunctionOverrideWithoutOverrideModifier(className).get() - ); - - annotation.registerFix(new AddOverrideIntentionAction(node)); - } - return false; - }); - - if (b && hasOverride) { - final ASTNode astNode = attributeList.getNode().findChildByType(JSTokenTypes.OVERRIDE_KEYWORD); - final Annotation annotation = myHolder.createErrorAnnotation( - astNode, - JavaScriptLocalize.javascriptValidationMessageFunctionOverrideWithoutParentMethod().get() - ); - - annotation.registerFix(new RemoveASTNodeFix(astNode, JavaScriptLocalize.javascriptFixRemoveOverrideModifier())); - } - - if (!b && hasOverride) { - final JSFunction override = set.get(); - final JSAttributeList overrideAttrList = override.getAttributeList(); - String overrideNs = null; - - if ((overrideAttrList == null && (attributeList.getAccessType() != JSAttributeList.AccessType.PACKAGE_LOCAL)) || - (overrideAttrList != null && attributeList.getAccessType() != overrideAttrList.getAccessType()) || - overrideAttrList != null && (overrideNs = - overrideAttrList.getNamespace()) != null && !overrideNs.equals(attributeList.getNamespace())) { - final Annotation annotation1 = myHolder.createErrorAnnotation( - findElementForAccessModifierError(node, attributeList), - JavaScriptLocalize.javascriptValidationMessageFunctionOverrideIncompatibleAccessModifier( - overrideNs != null ? overrideNs : ( - overrideAttrList != null - ? overrideAttrList.getAccessType().toString() - : JSAttributeList.AccessType.PACKAGE_LOCAL.toString() - ).toLowerCase() - ).get() - ); + } - // TODO: quickfix - //annotation.registerFix( - // new RemoveASTNodeFix(astNode,"javascript.fix.remove.override.modifier") - //); - } + if (parent instanceof JSPackageStatement) { + checkNamedObjectIsInCorrespondingFile(node); + } - final SignatureMatchResult incompatibleSignature = checkCompatibleSignature(node, override); + if (parent instanceof JSClass clazz && !node.isConstructor()) { + final JSAttributeList attributeList = node.getAttributeList(); + + if (attributeList == null || (!attributeList.hasModifier(JSAttributeList.ModifierType.STATIC) + && (attributeList.getAccessType() != JSAttributeList.AccessType.PRIVATE + || attributeList.hasModifier(JSAttributeList.ModifierType.OVERRIDE)))) { + final String qName = clazz.getQualifiedName(); + final boolean hasOverride = + attributeList != null ? attributeList.hasModifier(JSAttributeList.ModifierType.OVERRIDE) : false; + + final Ref set = new Ref<>(); + boolean b = JSResolveUtil.iterateType(node, parent, qName, (processor, scope, className) -> { + if (qName == className || (qName != null && qName.equals(className))) { + return true; + } + set.set((JSFunction)processor.getResult()); + if ("Object".equals(className)) { + if (hasOverride && !attributeList.hasModifier(JSAttributeList.ModifierType.NATIVE)) { /*native modifier is written always*/ + final ASTNode astNode = attributeList.getNode().findChildByType(JSTokenTypes.OVERRIDE_KEYWORD); + final Annotation annotation = myHolder.createErrorAnnotation( + astNode, + JavaScriptLocalize.javascriptValidationMessageFunctionOverrideForObjectMethod().get() + ); + + annotation.registerFix(new RemoveASTNodeFix(astNode, JavaScriptLocalize.javascriptFixRemoveOverrideModifier())); + } + return false; + } + else if (!hasOverride) { + final Annotation annotation = myHolder.createErrorAnnotation( + nameIdentifier, + JavaScriptLocalize.javascriptValidationMessageFunctionOverrideWithoutOverrideModifier(className).get() + ); + + annotation.registerFix(new AddOverrideIntentionAction(node)); + } + return false; + }); + + if (b && hasOverride) { + final ASTNode astNode = attributeList.getNode().findChildByType(JSTokenTypes.OVERRIDE_KEYWORD); + final Annotation annotation = myHolder.createErrorAnnotation( + astNode, + JavaScriptLocalize.javascriptValidationMessageFunctionOverrideWithoutParentMethod().get() + ); + + annotation.registerFix(new RemoveASTNodeFix(astNode, JavaScriptLocalize.javascriptFixRemoveOverrideModifier())); + } + + if (!b && hasOverride) { + final JSFunction override = set.get(); + final JSAttributeList overrideAttrList = override.getAttributeList(); + String overrideNs = null; + + if ((overrideAttrList == null && (attributeList.getAccessType() != JSAttributeList.AccessType.PACKAGE_LOCAL)) || + (overrideAttrList != null && attributeList.getAccessType() != overrideAttrList.getAccessType()) || + overrideAttrList != null && (overrideNs = + overrideAttrList.getNamespace()) != null && !overrideNs.equals(attributeList.getNamespace())) { + final Annotation annotation1 = myHolder.createErrorAnnotation( + findElementForAccessModifierError(node, attributeList), + JavaScriptLocalize.javascriptValidationMessageFunctionOverrideIncompatibleAccessModifier( + overrideNs != null ? overrideNs : ( + overrideAttrList != null + ? overrideAttrList.getAccessType() + : JSAttributeList.AccessType.PACKAGE_LOCAL + ).toString().toLowerCase() + ).get() + ); + + // TODO: quickfix + //annotation.registerFix( + // new RemoveASTNodeFix(astNode,"javascript.fix.remove.override.modifier") + //); + } + + final SignatureMatchResult incompatibleSignature = checkCompatibleSignature(node, override); + + if (incompatibleSignature == SignatureMatchResult.PARAMETERS_DIFFERS) { + final JSParameterList nodeParameterList = node.getParameterList(); + final JSParameterList overrideParameterList = override.getParameterList(); + + final Annotation annotation = myHolder.createErrorAnnotation( + nodeParameterList != null ? nodeParameterList : node.getNameIdentifier(), + JavaScriptLocalize.javascriptValidationMessageFunctionOverrideIncompatibleSignature( + overrideParameterList != null ? overrideParameterList.getText() : "()" + ).get() + ); + + // TODO: quickfix + //annotation.registerFix( + // new RemoveASTNodeFix(astNode,"javascript.fix.remove.override.modifier") + //); + } + else if (incompatibleSignature == SignatureMatchResult.RETURN_TYPE_DIFFERS) { + PsiElement returnTypeExpr = node.getReturnTypeElement(); + PsiElement overrideReturnTypeExpr = override.getReturnTypeElement(); + final Annotation annotation = myHolder.createErrorAnnotation( + returnTypeExpr != null ? returnTypeExpr : node.getNameIdentifier(), + JavaScriptLocalize.javascriptValidationMessageFunctionOverrideIncompatibleSignature2( + overrideReturnTypeExpr != null ? overrideReturnTypeExpr.getText() : "*" + ).get() + ); + + // TODO: quickfix + //annotation.registerFix( + // new RemoveASTNodeFix(astNode,"javascript.fix.remove.override.modifier") + //); + } + } + } + } + } - if (incompatibleSignature == SignatureMatchResult.PARAMETERS_DIFFERS) { - final JSParameterList nodeParameterList = node.getParameterList(); - final JSParameterList overrideParameterList = override.getParameterList(); + enum SignatureMatchResult { + PARAMETERS_DIFFERS, + RETURN_TYPE_DIFFERS, + COMPATIBLE_SIGNATURE + } + + private static SignatureMatchResult checkCompatibleSignature(final JSFunction fun, final JSFunction override) { + JSParameterList nodeParameterList = fun.getParameterList(); + JSParameterList overrideParameterList = override.getParameterList(); + final JSParameter[] parameters = nodeParameterList != null ? nodeParameterList.getParameters() : JSParameter.EMPTY_ARRAY; + final JSParameter[] overrideParameters = + overrideParameterList != null ? overrideParameterList.getParameters() : JSParameter.EMPTY_ARRAY; + + SignatureMatchResult result = + parameters.length != overrideParameters.length ? SignatureMatchResult.PARAMETERS_DIFFERS : SignatureMatchResult + .COMPATIBLE_SIGNATURE; + + if (result == SignatureMatchResult.COMPATIBLE_SIGNATURE) { + for (int i = 0; i < parameters.length; ++i) { + if (!compatibleType( + overrideParameters[i].getTypeString(), + parameters[i].getTypeString(), + overrideParameterList, + nodeParameterList + ) || overrideParameters[i].hasInitializer() != parameters[i].hasInitializer()) { + result = SignatureMatchResult.PARAMETERS_DIFFERS; + break; + } + } + } - final Annotation annotation = myHolder.createErrorAnnotation( - nodeParameterList != null ? nodeParameterList : node.getNameIdentifier(), - JavaScriptLocalize.javascriptValidationMessageFunctionOverrideIncompatibleSignature( - overrideParameterList != null ? overrideParameterList.getText() : "()" - ).get() - ); + if (result == SignatureMatchResult.COMPATIBLE_SIGNATURE) { + if (!compatibleType(override.getReturnTypeString(), fun.getReturnTypeString(), override, fun)) { + result = SignatureMatchResult.RETURN_TYPE_DIFFERS; + } + } + return result; + } - // TODO: quickfix - //annotation.registerFix( - // new RemoveASTNodeFix(astNode,"javascript.fix.remove.override.modifier") - //); - } - else if (incompatibleSignature == SignatureMatchResult.RETURN_TYPE_DIFFERS) { - PsiElement returnTypeExpr = node.getReturnTypeElement(); - PsiElement overrideReturnTypeExpr = override.getReturnTypeElement(); - final Annotation annotation = myHolder.createErrorAnnotation( - returnTypeExpr != null ? returnTypeExpr : node.getNameIdentifier(), - JavaScriptLocalize.javascriptValidationMessageFunctionOverrideIncompatibleSignature2( - overrideReturnTypeExpr != null ? overrideReturnTypeExpr.getText() : "*" - ).get() - ); + private static boolean compatibleType( + String overrideParameterType, + String parameterType, + PsiElement overrideContext, + PsiElement funContext + ) { + // TODO: This should be more accurate + if (overrideParameterType != null && !overrideParameterType.equals(parameterType)) { + parameterType = JSImportHandlingUtil.resolveTypeName(parameterType, funContext); + overrideParameterType = JSImportHandlingUtil.resolveTypeName(overrideParameterType, overrideContext); - // TODO: quickfix - //annotation.registerFix( - // new RemoveASTNodeFix(astNode,"javascript.fix.remove.override.modifier") - //); - } + return overrideParameterType.equals(parameterType); + } + else if (overrideParameterType == null && parameterType != null && !"*".equals(parameterType)) { + return false; } - } - } - } - - enum SignatureMatchResult { - PARAMETERS_DIFFERS, - RETURN_TYPE_DIFFERS, - COMPATIBLE_SIGNATURE - } - - private static SignatureMatchResult checkCompatibleSignature(final JSFunction fun, final JSFunction override) { - JSParameterList nodeParameterList = fun.getParameterList(); - JSParameterList overrideParameterList = override.getParameterList(); - final JSParameter[] parameters = nodeParameterList != null ? nodeParameterList.getParameters() : JSParameter.EMPTY_ARRAY; - final JSParameter[] overrideParameters = - overrideParameterList != null ? overrideParameterList.getParameters() : JSParameter.EMPTY_ARRAY; - - SignatureMatchResult result = - parameters.length != overrideParameters.length ? SignatureMatchResult.PARAMETERS_DIFFERS : SignatureMatchResult - .COMPATIBLE_SIGNATURE; - - if (result == SignatureMatchResult.COMPATIBLE_SIGNATURE) { - for (int i = 0; i < parameters.length; ++i) { - if (!compatibleType(overrideParameters[i].getTypeString(), parameters[i].getTypeString(), overrideParameterList, - nodeParameterList) || overrideParameters[i].hasInitializer() != parameters[i].hasInitializer()) { - result = SignatureMatchResult.PARAMETERS_DIFFERS; - break; - } - } - } - if (result == SignatureMatchResult.COMPATIBLE_SIGNATURE) { - if (!compatibleType(override.getReturnTypeString(), fun.getReturnTypeString(), override, fun)) { - result = SignatureMatchResult.RETURN_TYPE_DIFFERS; - } - } - return result; - } - - private static boolean compatibleType(String overrideParameterType, - String parameterType, - PsiElement overrideContext, - PsiElement funContext) { - // TODO: This should be more accurate - if (overrideParameterType != null && !overrideParameterType.equals(parameterType)) { - parameterType = JSImportHandlingUtil.resolveTypeName(parameterType, funContext); - overrideParameterType = JSImportHandlingUtil.resolveTypeName(overrideParameterType, overrideContext); - - return overrideParameterType.equals(parameterType); - } - else if (overrideParameterType == null && parameterType != null && !"*".equals(parameterType)) { - return false; + return true; } - return true; - } - - @Override - public void visitJSReturnStatement(final JSReturnStatement node) { - final PsiElement element = PsiTreeUtil.getParentOfType( - node, - JSFunction.class, - XmlTagChild.class, - XmlAttributeValue.class, - JSFile.class, - JavaScriptLambdaExpression.class - ); - if ((element instanceof JSFile && !(element.getContext() instanceof PsiLanguageInjectionHost)) - || (element instanceof XmlTagChild && !(element.getParent() instanceof XmlAttributeValue))) { - myHolder.createErrorAnnotation(node, JavaScriptLocalize.javascriptValidationMessageReturnOutsideFunctionDefinition().get()); - } + @Override + public void visitJSReturnStatement(final JSReturnStatement node) { + final PsiElement element = PsiTreeUtil.getParentOfType( + node, + JSFunction.class, + XmlTagChild.class, + XmlAttributeValue.class, + JSFile.class, + JavaScriptLambdaExpression.class + ); + if ((element instanceof JSFile && !(element.getContext() instanceof PsiLanguageInjectionHost)) + || (element instanceof XmlTagChild && !(element.getParent() instanceof XmlAttributeValue))) { + myHolder.createErrorAnnotation(node, JavaScriptLocalize.javascriptValidationMessageReturnOutsideFunctionDefinition().get()); + } - if (element instanceof JSFunction function) { - final @NonNls String typeString = function.getReturnTypeString(); - if (typeString != null && !"void".equals(typeString) && node.getExpression() == null) { - myHolder.createErrorAnnotation(node, JavaScriptLocalize.javascriptValidationMessageReturnValueOfTypeIsRequired(typeString).get()); - } - } - } - - @Override - public void visitJSLabeledStatement(final JSLabeledStatement node) { - final String label = node.getLabel(); - if (label != null) { - PsiElement run = node.getParent(); - while (run != null) { - if (run instanceof JSLabeledStatement labeledStatement) { - if (label.equals(labeledStatement.getLabel())) { - myHolder.createErrorAnnotation(node.getLabelIdentifier(), JavaScriptLocalize.javascriptValidationMessageDuplicateLabel().get()); - break; - } + if (element instanceof JSFunction function) { + final @NonNls String typeString = function.getReturnTypeString(); + if (typeString != null && !"void".equals(typeString) && node.getExpression() == null) { + myHolder.createErrorAnnotation( + node, + JavaScriptLocalize.javascriptValidationMessageReturnValueOfTypeIsRequired(typeString).get() + ); + } } + } - if (run instanceof JSFunction) { - break; + @Override + public void visitJSLabeledStatement(final JSLabeledStatement node) { + final String label = node.getLabel(); + if (label != null) { + PsiElement run = node.getParent(); + while (run != null) { + if (run instanceof JSLabeledStatement labeledStatement) { + if (label.equals(labeledStatement.getLabel())) { + myHolder.createErrorAnnotation( + node.getLabelIdentifier(), + JavaScriptLocalize.javascriptValidationMessageDuplicateLabel().get() + ); + break; + } + } + + if (run instanceof JSFunction) { + break; + } + run = run.getParent(); + } } - run = run.getParent(); - } } - } - private void checkNamedObjectIsInCorrespondingFile(final JSNamedElement aClass) { - final PsiFile containingFile = aClass.getContainingFile(); + private void checkNamedObjectIsInCorrespondingFile(final JSNamedElement aClass) { + final PsiFile containingFile = aClass.getContainingFile(); - if (containingFile.getContext() != null) { - return; - } - final VirtualFile file = containingFile.getVirtualFile(); - - if (file != null && !file.getNameWithoutExtension().equals(aClass.getName())) { - final PsiElement node = aClass.getNameIdentifier(); - - if (node != null) { - final String name = aClass.getName(); - String nameWithExtension = name + "." + file.getExtension(); - final LocalizeValue message = aClass instanceof JSClass - ? JavaScriptLocalize.javascriptValidationMessageClassShouldBeInFile(name, nameWithExtension) - : aClass instanceof JSNamespaceDeclaration - ? JavaScriptLocalize.javascriptValidationMessageNamespaceShouldBeInFile(name, nameWithExtension) - : aClass instanceof JSVariable - ? JavaScriptLocalize.javascriptValidationMessageVariableShouldBeInFile(name, nameWithExtension) - : JavaScriptLocalize.javascriptValidationMessageFunctionShouldBeInFile(name, nameWithExtension); - final Annotation annotation = myHolder.createErrorAnnotation(node, message.get()); - - annotation.registerFix(new RenameFileFix(nameWithExtension)); + if (containingFile.getContext() != null) { + return; + } + final VirtualFile file = containingFile.getVirtualFile(); + + if (file != null && !file.getNameWithoutExtension().equals(aClass.getName())) { + final PsiElement node = aClass.getNameIdentifier(); + + if (node != null) { + final String name = aClass.getName(); + String nameWithExtension = name + "." + file.getExtension(); + final LocalizeValue message = aClass instanceof JSClass + ? JavaScriptLocalize.javascriptValidationMessageClassShouldBeInFile(name, nameWithExtension) + : aClass instanceof JSNamespaceDeclaration + ? JavaScriptLocalize.javascriptValidationMessageNamespaceShouldBeInFile(name, nameWithExtension) + : aClass instanceof JSVariable + ? JavaScriptLocalize.javascriptValidationMessageVariableShouldBeInFile(name, nameWithExtension) + : JavaScriptLocalize.javascriptValidationMessageFunctionShouldBeInFile(name, nameWithExtension); + final Annotation annotation = myHolder.createErrorAnnotation(node, message.get()); + + annotation.registerFix(new RenameFileFix(nameWithExtension)); /*annotation.registerFix(new RenamePublicClassFix(aClass) { final String text; final String familyName; @@ -1052,353 +1083,355 @@ public String getFamilyName() { return familyName; } }); */ - } + } + } + + checkFileUnderSourceRoot(aClass, new SimpleErrorReportingClient()); } - checkFileUnderSourceRoot(aClass, new SimpleErrorReportingClient()); - } + private String getTerm(String message) { + String term = message.substring(0, message.indexOf(' ')); + return term; + } - private String getTerm(String message) { - String term = message.substring(0, message.indexOf(' ')); - return term; - } + public static void checkFileUnderSourceRoot(final JSNamedElement aClass, ErrorReportingClient client) { + PsiElement nameIdentifier = aClass.getNameIdentifier(); + if (nameIdentifier == null) { + nameIdentifier = aClass.getFirstChild(); + } - public static void checkFileUnderSourceRoot(final JSNamedElement aClass, ErrorReportingClient client) { - PsiElement nameIdentifier = aClass.getNameIdentifier(); - if (nameIdentifier == null) { - nameIdentifier = aClass.getFirstChild(); + final PsiFile containingFile = aClass.getContainingFile(); + final VirtualFile file = containingFile.getVirtualFile(); + if (file == null) { + return; + } + final VirtualFile rootForFile = + ProjectRootManager.getInstance(containingFile.getProject()).getFileIndex().getSourceRootForFile(file); + + if (rootForFile == null) { + client.reportError( + nameIdentifier.getNode(), + JavaScriptLocalize.javascriptValidationMessageFileShouldBeUnderSourceRoot().get(), + ErrorReportingClient.ProblemKind.WARNING, + null + ); + } } - final PsiFile containingFile = aClass.getContainingFile(); - final VirtualFile file = containingFile.getVirtualFile(); - if (file == null) { - return; - } - final VirtualFile rootForFile = ProjectRootManager.getInstance(containingFile.getProject()).getFileIndex().getSourceRootForFile(file); - - if (rootForFile == null) { - client.reportError( - nameIdentifier.getNode(), - JavaScriptLocalize.javascriptValidationMessageFileShouldBeUnderSourceRoot().get(), - ErrorReportingClient.ProblemKind.WARNING, - null - ); + private void checkPackageStatement(final JSPackageStatement packageStatement) { + final String s = packageStatement.getQualifiedName(); + + final PsiFile containingFile = packageStatement.getContainingFile(); + final String expected = JSResolveUtil.getExpectedPackageNameFromFile( + containingFile.getVirtualFile(), + containingFile.getProject(), + true + ); + + if (expected != null && ((s == null && expected.length() != 0) || (s != null && !expected.equals(s)))) { + final PsiElement nameIdentifier = packageStatement.getNameIdentifier(); + final Annotation annotation = myHolder.createErrorAnnotation( + nameIdentifier != null ? nameIdentifier : packageStatement.getFirstChild(), + JavaScriptLocalize.javascriptValidationMessageIncorrectPackageName(s, expected).get() + ); + annotation.registerFix(new SyntheticIntentionAction() { + @Override + @Nonnull + public String getText() { + return JavaScriptLocalize.javascriptFixPackageName(expected).get(); + } + + @Override + public boolean isAvailable(@Nonnull final Project project, final Editor editor, final PsiFile file) { + return packageStatement.isValid(); + } + + @Override + public void invoke(@Nonnull final Project project, final Editor editor, final PsiFile file) + throws IncorrectOperationException { + JSPackageStatementImpl.doChangeName(project, packageStatement, expected); + } + + @Override + public boolean startInWriteAction() { + return true; + } + }); + } + + final Set elements = new HashSet<>(); + + for (JSSourceElement statement : packageStatement.getStatements()) { + if (statement instanceof JSNamedElement namedElement && !(statement instanceof JSImportStatement)) { + elements.add(namedElement); + } + } + + if (elements.size() > 1) { + for (JSNamedElement el : elements) { + final PsiElement nameIdentifier = el.getNameIdentifier(); + myHolder.createErrorAnnotation( + nameIdentifier != null ? nameIdentifier : el.getFirstChild(), + JavaScriptLocalize.javascriptValidationMessageMoreThanOneExternallyVisibleSymbol().get() + ) + .registerFix(new RemoveASTNodeFix(el.getNode(), JavaScriptLocalize.javascriptFixRemoveExternallyVisibleSymbol())); + } + } + + checkFileUnderSourceRoot(packageStatement, new SimpleErrorReportingClient()); } - } - - private void checkPackageStatement(final JSPackageStatement packageStatement) { - final String s = packageStatement.getQualifiedName(); - - final PsiFile containingFile = packageStatement.getContainingFile(); - final String expected = JSResolveUtil.getExpectedPackageNameFromFile( - containingFile.getVirtualFile(), - containingFile.getProject(), - true - ); - - if (expected != null && ((s == null && expected.length() != 0) || (s != null && !expected.equals(s)))) { - final PsiElement nameIdentifier = packageStatement.getNameIdentifier(); - final Annotation annotation = myHolder.createErrorAnnotation( - nameIdentifier != null ? nameIdentifier : packageStatement.getFirstChild(), - JavaScriptLocalize.javascriptValidationMessageIncorrectPackageName(s, expected).get() - ); - annotation.registerFix(new SyntheticIntentionAction() { + + public static class RemoveASTNodeFix implements SyntheticIntentionAction, LocalQuickFix { + private final ASTNode[] myAstNodes; + private final LocalizeValue myProp; + + public RemoveASTNodeFix(final ASTNode astNode, LocalizeValue prop) { + this(prop, astNode); + } + + public RemoveASTNodeFix(LocalizeValue prop, final ASTNode... astNodes) { + myProp = prop; + myAstNodes = astNodes; + } + @Override @Nonnull public String getText() { - return JavaScriptLocalize.javascriptFixPackageName(expected).get(); + return myProp.get(); } @Override - public boolean isAvailable(@Nonnull final Project project, final Editor editor, final PsiFile file) { - return packageStatement.isValid(); + @Nonnull + public String getName() { + return getText(); } @Override - public void invoke(@Nonnull final Project project, final Editor editor, final PsiFile file) throws IncorrectOperationException { - JSPackageStatementImpl.doChangeName(project, packageStatement, expected); + @Nonnull + public String getFamilyName() { + return getText(); } @Override - public boolean startInWriteAction() { - return true; + public void applyFix(@Nonnull Project project, @Nonnull ProblemDescriptor descriptor) { + invoke(project, null, descriptor.getPsiElement().getContainingFile()); } - }); - } - - final Set elements = new HashSet<>(); - - for (JSSourceElement statement : packageStatement.getStatements()) { - if (statement instanceof JSNamedElement namedElement && !(statement instanceof JSImportStatement)) { - elements.add(namedElement); - } - } - if (elements.size() > 1) { - for (JSNamedElement el : elements) { - final PsiElement nameIdentifier = el.getNameIdentifier(); - myHolder.createErrorAnnotation( - nameIdentifier != null ? nameIdentifier : el.getFirstChild(), - JavaScriptLocalize.javascriptValidationMessageMoreThanOneExternallyVisibleSymbol().get() - ) - .registerFix(new RemoveASTNodeFix(el.getNode(), JavaScriptLocalize.javascriptFixRemoveExternallyVisibleSymbol())); - } - } + @Override + public boolean isAvailable(@Nonnull final Project project, final Editor editor, final PsiFile file) { + for (ASTNode astNode : myAstNodes) { + if (!astNode.getPsi().isValid()) { + return false; + } + } - checkFileUnderSourceRoot(packageStatement, new SimpleErrorReportingClient()); - } + return true; + } - public static class RemoveASTNodeFix implements SyntheticIntentionAction, LocalQuickFix { - private final ASTNode[] myAstNodes; - private final LocalizeValue myProp; + @Override + public void invoke(@Nonnull final Project project, final Editor editor, final PsiFile file) throws IncorrectOperationException { + if (!FileModificationService.getInstance().prepareFileForWrite(file)) { + return; + } + for (ASTNode astNode : myAstNodes) { + if (astNode.getPsi().isValid()) { + astNode.getPsi().delete(); + } + } + } - public RemoveASTNodeFix(final ASTNode astNode, LocalizeValue prop) { - this(prop, astNode); + @Override + public boolean startInWriteAction() { + return true; + } } - public RemoveASTNodeFix(LocalizeValue prop, final ASTNode... astNodes) { - myProp = prop; - myAstNodes = astNodes; - } + private static class AddOverrideIntentionAction implements SyntheticIntentionAction { + private final JSFunction myNode; - @Override - @Nonnull - public String getText() { - return myProp.get(); - } + public AddOverrideIntentionAction(final JSFunction node) { + myNode = node; + } - @Override - @Nonnull - public String getName() { - return getText(); - } + @Override + @Nonnull + public String getText() { + return JavaScriptLocalize.javascriptFixAddOverrideModifier().get(); + } - @Override - @Nonnull - public String getFamilyName() { - return getText(); - } + @Override + public boolean isAvailable(@Nonnull final Project project, final Editor editor, final PsiFile file) { + return myNode.isValid(); + } - @Override - public void applyFix(@Nonnull Project project, @Nonnull ProblemDescriptor descriptor) { - invoke(project, null, descriptor.getPsiElement().getContainingFile()); - } + @Override + public void invoke(@Nonnull final Project project, final Editor editor, final PsiFile file) throws IncorrectOperationException { + if (!FileModificationService.getInstance().prepareFileForWrite(file)) { + return; + } + final ASTNode fromText = JSChangeUtil.createJSTreeFromText(project, "override class A {}"); + final JSAttributeList jsAttributeList = myNode.getAttributeList(); + final JSAttributeList createdAttrList = ((JSClass)fromText.getPsi()).getAttributeList(); - @Override - public boolean isAvailable(@Nonnull final Project project, final Editor editor, final PsiFile file) { - for (ASTNode astNode : myAstNodes) { - if (!astNode.getPsi().isValid()) { - return false; + if (jsAttributeList != null) { + jsAttributeList.add(createdAttrList.getFirstChild()); + } + else { + myNode.addBefore(createdAttrList, myNode.getFirstChild()); + } } - } - return true; - } - - @Override - public void invoke(@Nonnull final Project project, final Editor editor, final PsiFile file) throws IncorrectOperationException { - if (!FileModificationService.getInstance().prepareFileForWrite(file)) { - return; - } - for (ASTNode astNode : myAstNodes) { - if (astNode.getPsi().isValid()) { - astNode.getPsi().delete(); - } - } + @Override + public boolean startInWriteAction() { + return true; + } } - @Override - public boolean startInWriteAction() { - return true; - } - } + private class SimpleErrorReportingClient implements ErrorReportingClient { + @Override + public void reportError(final ASTNode nameIdentifier, final String s, ProblemKind kind, final IntentionAction implementMethodsFix) { + final Annotation annotation = kind == ProblemKind.ERROR + ? myHolder.createErrorAnnotation(nameIdentifier, s) + : myHolder.createWarningAnnotation(nameIdentifier, s); - private static class AddOverrideIntentionAction implements SyntheticIntentionAction { - private final JSFunction myNode; + if (implementMethodsFix != null) { + annotation.registerFix(implementMethodsFix); + } + } - public AddOverrideIntentionAction(final JSFunction node) { - myNode = node; + @Override + public void reportError(PsiElement nameIdentifier, String s, ProblemKind kind, IntentionAction implementMethodsFix) { + final Annotation annotation = kind == ProblemKind.ERROR + ? myHolder.createErrorAnnotation(nameIdentifier, s) + : myHolder.createWarningAnnotation(nameIdentifier, s); + if (implementMethodsFix != null) { + annotation.registerFix(implementMethodsFix); + } + } } - @Override - @Nonnull - public String getText() { - return JavaScriptLocalize.javascriptFixAddOverrideModifier().get(); - } + private static class AddSuperInvokationFix implements SyntheticIntentionAction { + private final JSReferenceExpression node; + private final JSFunction superConstructor; - @Override - public boolean isAvailable(@Nonnull final Project project, final Editor editor, final PsiFile file) { - return myNode.isValid(); - } + public AddSuperInvokationFix(JSReferenceExpression node, JSFunction superConstructor) { + this.node = node; + this.superConstructor = superConstructor; + } - @Override - public void invoke(@Nonnull final Project project, final Editor editor, final PsiFile file) throws IncorrectOperationException { - if (!FileModificationService.getInstance().prepareFileForWrite(file)) { - return; - } - final ASTNode fromText = JSChangeUtil.createJSTreeFromText(project, "override class A {}"); - final JSAttributeList jsAttributeList = myNode.getAttributeList(); - final JSAttributeList createdAttrList = ((JSClass)fromText.getPsi()).getAttributeList(); - - if (jsAttributeList != null) { - jsAttributeList.add(createdAttrList.getFirstChild()); - } - else { - myNode.addBefore(createdAttrList, myNode.getFirstChild()); - } - } + @Override + @Nonnull + public String getText() { + return JavaScriptLocalize.javascriptFixCreateInvokeSuper().get(); + } - @Override - public boolean startInWriteAction() { - return true; - } - } + @Override + public boolean isAvailable(@Nonnull Project project, Editor editor, PsiFile file) { + return superConstructor.isValid() && node.isValid(); + } - private class SimpleErrorReportingClient implements ErrorReportingClient { - @Override - public void reportError(final ASTNode nameIdentifier, final String s, ProblemKind kind, final IntentionAction implementMethodsFix) { - final Annotation annotation = kind == ProblemKind.ERROR - ? myHolder.createErrorAnnotation(nameIdentifier, s) - : myHolder.createWarningAnnotation(nameIdentifier, s); - - if (implementMethodsFix != null) { - annotation.registerFix(implementMethodsFix); - } - } + @Override + public void invoke(@Nonnull Project project, Editor editor, PsiFile file) throws IncorrectOperationException { + if (!FileModificationService.getInstance().prepareFileForWrite(file)) { + return; + } + Template t = TemplateManager.getInstance(project).createTemplate("", ""); + t.setToReformat(true); + + t.addTextSegment("super("); + boolean first = true; + for (JSParameter p : superConstructor.getParameterList().getParameters()) { + if (p.isRest()) { + break; + } + if (!first) { + t.addTextSegment(", "); + } + first = false; + MacroCallNode node = new MacroCallNode(new CompleteMacro()); + t.addVariable(p.getName(), node, node, true); + } + t.addTextSegment(")"); + String s = JSChangeUtil.getSemicolon(project); + if (s.length() > 0) { + t.addTextSegment(s); + } - @Override - public void reportError(PsiElement nameIdentifier, String s, ProblemKind kind, IntentionAction implementMethodsFix) { - final Annotation annotation = kind == ProblemKind.ERROR - ? myHolder.createErrorAnnotation(nameIdentifier, s) - : myHolder.createWarningAnnotation(nameIdentifier, s); - if (implementMethodsFix != null) { - annotation.registerFix(implementMethodsFix); - } - } - } + JSFunction fun = PsiTreeUtil.getParentOfType(node, JSFunction.class); + JSSourceElement[] body = fun != null ? fun.getBody() : JSSourceElement.EMPTY_ARRAY; - private static class AddSuperInvokationFix implements SyntheticIntentionAction { - private final JSReferenceExpression node; - private final JSFunction superConstructor; + if (body.length > 0 && body[0] instanceof JSBlockStatement blockStatement) { + PsiElement firstChild = blockStatement.getFirstChild(); + editor.getCaretModel().moveToOffset(firstChild.getTextRange().getEndOffset()); + TemplateManager.getInstance(project).startTemplate(editor, t); + } + } - public AddSuperInvokationFix(JSReferenceExpression node, JSFunction superConstructor) { - this.node = node; - this.superConstructor = superConstructor; + @Override + public boolean startInWriteAction() { + return false; + } } - @Override - @Nonnull - public String getText() { - return JavaScriptLocalize.javascriptFixCreateInvokeSuper().get(); - } + private static class AddConstructorAndSuperInvokationFix implements SyntheticIntentionAction { + private final JSReferenceExpression node; + private final JSFunction superConstructor; - @Override - public boolean isAvailable(@Nonnull Project project, Editor editor, PsiFile file) { - return superConstructor.isValid() && node.isValid(); - } + AddConstructorAndSuperInvokationFix(JSReferenceExpression _node, JSFunction _superCall) { + node = _node; + superConstructor = _superCall; + } - @Override - public void invoke(@Nonnull Project project, Editor editor, PsiFile file) throws IncorrectOperationException { - if (!FileModificationService.getInstance().prepareFileForWrite(file)) { - return; - } - Template t = TemplateManager.getInstance(project).createTemplate("", ""); - t.setToReformat(true); - - t.addTextSegment("super("); - boolean first = true; - for (JSParameter p : superConstructor.getParameterList().getParameters()) { - if (p.isRest()) { - break; - } - if (!first) { - t.addTextSegment(", "); - } - first = false; - MacroCallNode node = new MacroCallNode(new CompleteMacro()); - t.addVariable(p.getName(), node, node, true); - } - t.addTextSegment(")"); - String s = JSChangeUtil.getSemicolon(project); - if (s.length() > 0) { - t.addTextSegment(s); - } - - JSFunction fun = PsiTreeUtil.getParentOfType(node, JSFunction.class); - JSSourceElement[] body = fun != null ? fun.getBody() : JSSourceElement.EMPTY_ARRAY; - - if (body.length > 0 && body[0] instanceof JSBlockStatement blockStatement) { - PsiElement firstChild = blockStatement.getFirstChild(); - editor.getCaretModel().moveToOffset(firstChild.getTextRange().getEndOffset()); - TemplateManager.getInstance(project).startTemplate(editor, t); - } - } + @Override + @Nonnull + public String getText() { + return JavaScriptLocalize.javascriptFixCreateConstructorInvokeSuper().get(); + } - @Override - public boolean startInWriteAction() { - return false; - } - } + @Override + public boolean isAvailable(@Nonnull Project project, Editor editor, PsiFile file) { + return node.isValid() && superConstructor.isValid(); + } - private static class AddConstructorAndSuperInvokationFix implements SyntheticIntentionAction { - private final JSReferenceExpression node; - private final JSFunction superConstructor; + @Override + public void invoke(@Nonnull Project project, Editor editor, PsiFile file) throws IncorrectOperationException { + if (!FileModificationService.getInstance().prepareFileForWrite(file)) { + return; + } + final JSClass jsClass = PsiTreeUtil.getParentOfType(node, JSClass.class); + if (jsClass == null) { + return; + } + final JSAttributeList attributeList = jsClass.getAttributeList(); + String fun = ""; - AddConstructorAndSuperInvokationFix(JSReferenceExpression _node, JSFunction _superCall) { - node = _node; - superConstructor = _superCall; - } + if (attributeList != null && attributeList.getAccessType() == JSAttributeList.AccessType.PUBLIC) { + fun += "public "; + } - @Override - @Nonnull - public String getText() { - return JavaScriptLocalize.javascriptFixCreateConstructorInvokeSuper().get(); - } + fun += "function "; - @Override - public boolean isAvailable(@Nonnull Project project, Editor editor, PsiFile file) { - return node.isValid() && superConstructor.isValid(); - } + final JSParameterList parameterList = superConstructor.getParameterList(); + fun += jsClass.getName() + parameterList.getText() + "{\n"; + fun += "super("; + int i = 0; - @Override - public void invoke(@Nonnull Project project, Editor editor, PsiFile file) throws IncorrectOperationException { - if (!FileModificationService.getInstance().prepareFileForWrite(file)) { - return; - } - final JSClass jsClass = PsiTreeUtil.getParentOfType(node, JSClass.class); - if (jsClass == null) { - return; - } - final JSAttributeList attributeList = jsClass.getAttributeList(); - String fun = ""; - - if (attributeList != null && attributeList.getAccessType() == JSAttributeList.AccessType.PUBLIC) { - fun += "public "; - } - - fun += "function "; - - final JSParameterList parameterList = superConstructor.getParameterList(); - fun += jsClass.getName() + parameterList.getText() + "{\n"; - fun += "super("; - int i = 0; - - for (JSParameter p : parameterList.getParameters()) { - if (i != 0) { - fun += ","; - } - ++i; - fun += p.getName(); - } - fun += ")" + JSChangeUtil.getSemicolon(project); - fun += "\n}"; - - jsClass.add(JSChangeUtil.createJSTreeFromText(project, fun).getPsi()); - } + for (JSParameter p : parameterList.getParameters()) { + if (i != 0) { + fun += ","; + } + ++i; + fun += p.getName(); + } + fun += ")" + JSChangeUtil.getSemicolon(project); + fun += "\n}"; - @Override - public boolean startInWriteAction() { - return true; + jsClass.add(JSChangeUtil.createJSTreeFromText(project, fun).getPsi()); + } + + @Override + public boolean startInWriteAction() { + return true; + } } - } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatorFactory.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatorFactory.java index be889e39..dea1c82f 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatorFactory.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatorFactory.java @@ -14,19 +14,16 @@ * @since 29-Aug-22 */ @ExtensionImpl -public class JSAnnotatorFactory implements AnnotatorFactory -{ - @Nullable - @Override - public Annotator createAnnotator() - { - return new JSAnnotatingVisitor(); - } +public class JSAnnotatorFactory implements AnnotatorFactory { + @Nullable + @Override + public Annotator createAnnotator() { + return new JSAnnotatingVisitor(); + } - @Nonnull - @Override - public Language getLanguage() - { - return JavaScriptLanguage.INSTANCE; - } + @Nonnull + @Override + public Language getLanguage() { + return JavaScriptLanguage.INSTANCE; + } } From 6cec3660c84e95ee4ef0bfd402cad220208d9918 Mon Sep 17 00:00:00 2001 From: UNV Date: Sun, 8 Sep 2024 00:37:04 +0300 Subject: [PATCH 069/150] Code reformat of "generation" package using IJ4 code style. --- .../impl/generation/BaseJSGenerateAction.java | 81 +- .../generation/BaseJSGenerateHandler.java | 239 +++--- .../impl/generation/JSNamedElementNode.java | 139 ++-- .../JavaScriptGenerateAccessorHandler.java | 700 ++++++++---------- .../JavaScriptGenerateConstructorAction.java | 16 +- .../JavaScriptGenerateGetAccessorAction.java | 16 +- ...avaScriptGenerateGetSetAccessorAction.java | 17 +- .../JavaScriptGenerateSetAccessorAction.java | 16 +- .../JavaScriptGenerateToStringAction.java | 16 +- .../JavaScriptImplementMethodsHandler.java | 44 +- .../JavaScriptOverrideMethodsHandler.java | 154 ++-- .../impl/generation/OverrideMethodsFix.java | 126 ++-- 12 files changed, 712 insertions(+), 852 deletions(-) diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/BaseJSGenerateAction.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/BaseJSGenerateAction.java index 49571634..afd0be70 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/BaseJSGenerateAction.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/BaseJSGenerateAction.java @@ -32,58 +32,49 @@ /** * @author Maxim.Mossienko - * Date: Jul 19, 2008 - * Time: 7:04:37 PM + * Date: Jul 19, 2008 + * Time: 7:04:37 PM */ -abstract class BaseJSGenerateAction extends AnAction -{ - @Override - public void actionPerformed(final AnActionEvent e) - { - Editor editor = e.getData(PlatformDataKeys.EDITOR); - PsiFile psifile = e.getData(LangDataKeys.PSI_FILE); - Project project = e.getData(PlatformDataKeys.PROJECT); +abstract class BaseJSGenerateAction extends AnAction { + @Override + public void actionPerformed(final AnActionEvent e) { + Editor editor = e.getData(PlatformDataKeys.EDITOR); + PsiFile psifile = e.getData(LangDataKeys.PSI_FILE); + Project project = e.getData(PlatformDataKeys.PROJECT); - final VirtualFile file = e.getData(PlatformDataKeys.VIRTUAL_FILE); - if(JavaScriptSupportLoader.isFlexMxmFile(file)) - { - editor = BaseCodeInsightAction.getInjectedEditor(project, editor); - psifile = PsiUtilBase.getPsiFileInEditor(editor, project); - } + final VirtualFile file = e.getData(PlatformDataKeys.VIRTUAL_FILE); + if (JavaScriptSupportLoader.isFlexMxmFile(file)) { + editor = BaseCodeInsightAction.getInjectedEditor(project, editor); + psifile = PsiUtilBase.getPsiFileInEditor(editor, project); + } - new JavaScriptGenerateAccessorHandler(getGenerationMode()).invoke(project, editor, psifile); - } + new JavaScriptGenerateAccessorHandler(getGenerationMode()).invoke(project, editor, psifile); + } - protected abstract - @Nonnull - JavaScriptGenerateAccessorHandler.GenerationMode getGenerationMode(); + @Nonnull + protected abstract JavaScriptGenerateAccessorHandler.GenerationMode getGenerationMode(); - @Override - public void update(final AnActionEvent e) - { - final VirtualFile file = e.getData(PlatformDataKeys.VIRTUAL_FILE); + @Override + public void update(final AnActionEvent e) { + final VirtualFile file = e.getData(PlatformDataKeys.VIRTUAL_FILE); - boolean status = false; + boolean status = false; - if(file != null) - { - if(file.getFileType() == JavaScriptFileType.INSTANCE) - { - final Editor editor = e.getData(PlatformDataKeys.EDITOR); - final PsiFile psifile = e.getData(LangDataKeys.PSI_FILE); + if (file != null) { + if (file.getFileType() == JavaScriptFileType.INSTANCE) { + final Editor editor = e.getData(PlatformDataKeys.EDITOR); + final PsiFile psifile = e.getData(LangDataKeys.PSI_FILE); - if(editor != null && psifile != null) - { - status = psifile.getLanguage() == JavaScriptSupportLoader.ECMA_SCRIPT_L4; - } - } - else if(JavaScriptSupportLoader.isFlexMxmFile(file)) - { - status = true; - } - } + if (editor != null && psifile != null) { + status = psifile.getLanguage() == JavaScriptSupportLoader.ECMA_SCRIPT_L4; + } + } + else if (JavaScriptSupportLoader.isFlexMxmFile(file)) { + status = true; + } + } - e.getPresentation().setEnabled(status); - e.getPresentation().setVisible(status); - } + e.getPresentation().setEnabled(status); + e.getPresentation().setVisible(status); + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/BaseJSGenerateHandler.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/BaseJSGenerateHandler.java index 539eca69..4ee1927c 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/BaseJSGenerateHandler.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/BaseJSGenerateHandler.java @@ -39,138 +39,119 @@ import consulo.undoRedo.CommandProcessor; import jakarta.annotation.Nonnull; + import javax.swing.*; import java.util.ArrayList; import java.util.Collection; import java.util.List; -abstract class BaseJSGenerateHandler implements LanguageCodeInsightActionHandler -{ - @Nonnull - @Override - public Language getLanguage() - { - return JavaScriptLanguage.INSTANCE; - } - - @Override - public void invoke(final Project project, final Editor editor, final PsiFile file) - { - JSClass clazz = findClass(file, editor); - - if(clazz == null) - { - return; - } - - final Collection candidates = new ArrayList(); - collectCandidates(clazz, candidates); - - MemberChooserBuilder builder = MemberChooserBuilder.create(candidates.toArray(new JSNamedElementNode[candidates.size()])); - if(canHaveEmptySelectedElements()) - { - builder.withEmptySelection(); - } - - builder.withTitle(getTitle()); - builder.showAsync(project, dataHolder -> - { - List data = dataHolder.getUserData(ClassMember.KEY_OF_LIST); - - run(clazz, data, project, editor, file); - }); - } - - private void run(JSClass clazz, Collection selectedElements, Project project, Editor editor, PsiFile file) - { - final JSClass jsClass = clazz; - final Collection selectedElements1 = selectedElements; - Runnable runnable = new Runnable() - { - @Override - public void run() - { - ApplicationManager.getApplication().runWriteAction(new Runnable() - { - @Override - public void run() - { - try - { - final BaseCreateMethodsFix createMethodsFix = createFix(jsClass); - createMethodsFix.addElementsToProcessFrom(selectedElements1); - createMethodsFix.invoke(project, editor, file); - } - catch(IncorrectOperationException ex) - { - Logger.getInstance(getClass().getName()).error(ex); - } - } - }); - } - }; - - CommandProcessor processor = CommandProcessor.getInstance(); - if(processor.hasCurrentCommand()) - { - processor.executeCommand(project, runnable, getClass().getName(), null); - } - else - { - runnable.run(); - } - } - - protected void appendOwnOptions(List jComponentList) - { - } - - protected boolean canHaveEmptySelectedElements() - { - return false; - } - - static JSClass findClass(PsiFile file, Editor editor) - { - final PsiElement at = file.findElementAt(editor.getCaretModel().getOffset()); - if(at == null) - { - return null; - } - - JSClass clazz = PsiTreeUtil.getParentOfType(at, JSClass.class); - if(clazz == null) - { - final PsiFile containingFile = at.getContainingFile(); - final PsiElement element = JSResolveUtil.getClassReferenceForXmlFromContext(containingFile); - if(element instanceof JSClass) - { - clazz = (JSClass) element; - } - } - else if(JSResolveUtil.isArtificialClassUsedForReferenceList(clazz)) - { - clazz = null; - } - - return clazz; - } - - protected abstract LocalizeValue getTitle(); - - protected abstract BaseCreateMethodsFix createFix(JSClass clazz); - - protected abstract void collectCandidates(final JSClass clazz, final Collection candidates); - - @Override - public boolean startInWriteAction() - { - return false; - } - - @Override - public boolean isValidFor(final Editor editor, final PsiFile file) - { - return true; - } +abstract class BaseJSGenerateHandler implements LanguageCodeInsightActionHandler { + @Nonnull + @Override + public Language getLanguage() { + return JavaScriptLanguage.INSTANCE; + } + + @Override + public void invoke(final Project project, final Editor editor, final PsiFile file) { + JSClass clazz = findClass(file, editor); + + if (clazz == null) { + return; + } + + final Collection candidates = new ArrayList<>(); + collectCandidates(clazz, candidates); + + MemberChooserBuilder builder = + MemberChooserBuilder.create(candidates.toArray(new JSNamedElementNode[candidates.size()])); + if (canHaveEmptySelectedElements()) { + builder.withEmptySelection(); + } + + builder.withTitle(getTitle()); + builder.showAsync( + project, + dataHolder -> { + List data = dataHolder.getUserData(ClassMember.KEY_OF_LIST); + + run(clazz, data, project, editor, file); + } + ); + } + + private void run(JSClass clazz, Collection selectedElements, Project project, Editor editor, PsiFile file) { + final JSClass jsClass = clazz; + final Collection selectedElements1 = selectedElements; + Runnable runnable = new Runnable() { + @Override + public void run() { + ApplicationManager.getApplication().runWriteAction(new Runnable() { + @Override + public void run() { + try { + final BaseCreateMethodsFix createMethodsFix = createFix(jsClass); + createMethodsFix.addElementsToProcessFrom(selectedElements1); + createMethodsFix.invoke(project, editor, file); + } + catch (IncorrectOperationException ex) { + Logger.getInstance(getClass().getName()).error(ex); + } + } + }); + } + }; + + CommandProcessor processor = CommandProcessor.getInstance(); + if (processor.hasCurrentCommand()) { + processor.executeCommand(project, runnable, getClass().getName(), null); + } + else { + runnable.run(); + } + } + + protected void appendOwnOptions(List jComponentList) { + } + + protected boolean canHaveEmptySelectedElements() { + return false; + } + + static JSClass findClass(PsiFile file, Editor editor) { + final PsiElement at = file.findElementAt(editor.getCaretModel().getOffset()); + if (at == null) { + return null; + } + + JSClass clazz = PsiTreeUtil.getParentOfType(at, JSClass.class); + if (clazz == null) { + final PsiFile containingFile = at.getContainingFile(); + final PsiElement element = JSResolveUtil.getClassReferenceForXmlFromContext(containingFile); + if (element instanceof JSClass) { + clazz = (JSClass)element; + } + } + else if (JSResolveUtil.isArtificialClassUsedForReferenceList(clazz)) { + clazz = null; + } + + return clazz; + } + + protected abstract LocalizeValue getTitle(); + + protected abstract BaseCreateMethodsFix createFix(JSClass clazz); + + protected abstract void collectCandidates(final JSClass clazz, final Collection candidates); + + @Override + public boolean startInWriteAction() { + return false; + } + + @Override + public boolean isValidFor(final Editor editor, final PsiFile file) { + return true; + } } \ No newline at end of file diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JSNamedElementNode.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JSNamedElementNode.java index 8c498b1a..b1eb09da 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JSNamedElementNode.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JSNamedElementNode.java @@ -33,91 +33,74 @@ * Date: Jul 17, 2008 * Time: 8:55:57 PM */ -public class JSNamedElementNode extends PsiElementMemberChooserObject implements ClassMember -{ - public JSNamedElementNode(JSNamedElement node) - { - super(node, buildTextFor(node), buildIcon(node)); - } +public class JSNamedElementNode extends PsiElementMemberChooserObject implements ClassMember { + public JSNamedElementNode(JSNamedElement node) { + super(node, buildTextFor(node), buildIcon(node)); + } - private static Image buildIcon(final JSNamedElement node) - { - Image icon = IconDescriptorUpdaters.getIcon(node, 0); + private static Image buildIcon(final JSNamedElement node) { + Image icon = IconDescriptorUpdaters.getIcon(node, 0); - if(node instanceof JSFunction) - { - final JSFunction function = (JSFunction) node; - final Image accessIcon; + if (node instanceof JSFunction) { + final JSFunction function = (JSFunction)node; + final Image accessIcon; - if(function.isGetProperty()) - { - accessIcon = AllIcons.Nodes.Read_access; - } - else if(function.isSetProperty()) - { - accessIcon = AllIcons.Nodes.Write_access; - } - else - { - accessIcon = null; - } + if (function.isGetProperty()) { + accessIcon = AllIcons.Nodes.Read_access; + } + else if (function.isSetProperty()) { + accessIcon = AllIcons.Nodes.Write_access; + } + else { + accessIcon = null; + } - if(accessIcon != null) - { - icon = ImageEffects.appendRight(icon, accessIcon); - } - } - return icon; - } + if (accessIcon != null) { + icon = ImageEffects.appendRight(icon, accessIcon); + } + } + return icon; + } - private static String buildTextFor(final JSNamedElement node) - { - String text = node.getName(); + private static String buildTextFor(final JSNamedElement node) { + String text = node.getName(); - if(node instanceof JSFunction) - { - final JSFunction function = (JSFunction) node; - text += "("; - final JSParameterList parameterList = function.getParameterList(); + if (node instanceof JSFunction) { + final JSFunction function = (JSFunction)node; + text += "("; + final JSParameterList parameterList = function.getParameterList(); - if(parameterList != null) - { - boolean first = true; - for(JSParameter p : parameterList.getParameters()) - { - if(!first) - { - text += ", "; - } - first = false; - text += JSParameterInfoHandler.getSignatureForParameter(p, false); - } - } + if (parameterList != null) { + boolean first = true; + for (JSParameter p : parameterList.getParameters()) { + if (!first) { + text += ", "; + } + first = false; + text += JSParameterInfoHandler.getSignatureForParameter(p, false); + } + } - text += ")"; - final String typeString = function.getReturnTypeString(); - if(typeString != null) - { - text += ":" + typeString; - } - } - else if(node instanceof JSVariable) - { - final JSVariable var = (JSVariable) node; - final String typeString = var.getTypeString(); - if(typeString != null) - { - text += ":" + typeString; - } - } - return text; - } + text += ")"; + final String typeString = function.getReturnTypeString(); + if (typeString != null) { + text += ":" + typeString; + } + } + else if (node instanceof JSVariable) { + final JSVariable var = (JSVariable)node; + final String typeString = var.getTypeString(); + if (typeString != null) { + text += ":" + typeString; + } + } + return text; + } - @Override - public MemberChooserObject getParentNodeDelegate() - { - final PsiElement element = getPsiElement(); - PsiElement parent = JSResolveUtil.findParent(element); - return new JSNamedElementNode((JSNamedElement) parent); - } + @Override + public MemberChooserObject getParentNodeDelegate() { + final PsiElement element = getPsiElement(); + PsiElement parent = JSResolveUtil.findParent(element); + return new JSNamedElementNode((JSNamedElement)parent); + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptGenerateAccessorHandler.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptGenerateAccessorHandler.java index 17d30834..a2de0331 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptGenerateAccessorHandler.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptGenerateAccessorHandler.java @@ -38,6 +38,7 @@ import org.jetbrains.annotations.NonNls; import jakarta.annotation.Nonnull; + import javax.swing.*; import java.util.*; @@ -46,377 +47,332 @@ * Date: Jul 19, 2008 * Time: 1:11:10 AM */ -class JavaScriptGenerateAccessorHandler extends BaseJSGenerateHandler -{ - private GenerationMode mode; - private JCheckBox myCreateBindableProperties; - - static enum GenerationMode - { - GETTERS, - SETTERS, - GETTERS_AND_SETTERS, - CONSTRUCTOR, - TOSTRING - } - - JavaScriptGenerateAccessorHandler(GenerationMode _mode) - { - mode = _mode; - } - - @Override - protected LocalizeValue getTitle() - { - return mode == GenerationMode.GETTERS - ? JavaScriptLocalize.generateGetterFieldsChooserTitle() - : mode == GenerationMode.SETTERS - ? JavaScriptLocalize.generateSetterFieldsChooserTitle() - : mode == GenerationMode.GETTERS_AND_SETTERS - ? JavaScriptLocalize.generateGetterSetterChooserTitle() - : mode == GenerationMode.TOSTRING - ? JavaScriptLocalize.generateToStringChooserTitle() - : JavaScriptLocalize.generateConstructorFieldsChooserTitle(); - } - - @Override - protected void appendOwnOptions(List jComponentList) - { - super.appendOwnOptions(jComponentList); - if(mode == GenerationMode.GETTERS || mode == GenerationMode.GETTERS_AND_SETTERS || mode == GenerationMode.SETTERS) - { - if(!ApplicationManager.getApplication().isUnitTestMode()) - { - myCreateBindableProperties = new NonFocusableCheckBox(JavaScriptLocalize.generateGetterFieldsBindableProperties().get()); - jComponentList.add(myCreateBindableProperties); - } - } - } - - @Override - protected BaseCreateMethodsFix createFix(final JSClass jsClass) - { - if(mode == GenerationMode.GETTERS_AND_SETTERS) - { - return new BaseCreateMethodsFix(jsClass) - { - private boolean toCreateBindableProperties = myCreateBindableProperties != null ? myCreateBindableProperties.isSelected() : ApplicationManager - .getApplication().isUnitTestMode(); - final MyBaseCreateMethodsFix generateGetterFix = new MyBaseCreateMethodsFix(GenerationMode.GETTERS, jsClass, toCreateBindableProperties); - final MyBaseCreateMethodsFix generateSetterFix = new MyBaseCreateMethodsFix(GenerationMode.SETTERS, jsClass, toCreateBindableProperties); - - @Override - public void invoke(@Nonnull final Project project, final Editor editor, final PsiFile file) throws IncorrectOperationException - { - evalAnchor(editor, file); - - for(JSVariable e : getElementsToProcess()) - { - anchor = doAddOneMethod(project, generateGetterFix.buildFunctionText(e), anchor); - anchor = doAddOneMethod(project, generateSetterFix.buildFunctionText(e), anchor); - } - } - }; - } - else if(mode == GenerationMode.CONSTRUCTOR) - { - return new BaseCreateMethodsFix(jsClass) - { - @Override - public void invoke(@Nonnull final Project project, final Editor editor, final PsiFile file) throws IncorrectOperationException - { - final JSCodeStyleSettings codeStyleSettings = CodeStyleSettingsManager.getSettings(project).getCustomSettings(JSCodeStyleSettings.class); - evalAnchor(editor, file); - @NonNls String functionText = "public function " + jsClass.getName() + "("; - @NonNls String initialization = ""; - boolean first = true; - final String semicolon = JSChangeUtil.getSemicolon(project); - - Set toProcess = getElementsToProcess(); - Iterator variableIterator = toProcess.iterator(); - boolean hadSuperClassConstructorInitializationBefore = false; - - while(variableIterator.hasNext()) - { - JSVariable var = variableIterator.next(); - if(!first) - { - functionText += ", "; - } - - first = false; - - final String name = var.getName(); - String parameterName = transformVarNameToAccessorName(name, codeStyleSettings); - - final String typeString = var.getTypeString(); - functionText += parameterName + (typeString != null ? ":" + typeString : ""); - - if(JSResolveUtil.findParent(var) == jsClass) - { - if(hadSuperClassConstructorInitializationBefore) - { - initialization += ")" + semicolon + "\n"; - hadSuperClassConstructorInitializationBefore = false; - } - initialization += (parameterName.equals(name) ? "this." : "") + name + " = " + parameterName + semicolon + "\n"; - } - else - { - if(hadSuperClassConstructorInitializationBefore) - { - initialization += ", "; - } - else - { - initialization += "super("; - } - initialization += parameterName; - hadSuperClassConstructorInitializationBefore = true; - } - } - - if(hadSuperClassConstructorInitializationBefore) - { - initialization += ")" + semicolon + "\n"; - } - functionText += ") {\n"; - functionText += initialization; - functionText += "}"; - doAddOneMethod(project, functionText, anchor); - } - - @Override - public Set getElementsToProcess() - { - LinkedHashSet vars = new LinkedHashSet(); - JSFunction nontrivialSuperClassConstructor = JSAnnotatingVisitor.getNontrivialSuperClassConstructor(jsClass); - - if(nontrivialSuperClassConstructor != null) - { - vars.addAll(Arrays.asList(nontrivialSuperClassConstructor.getParameterList().getParameters())); - } - vars.addAll(super.getElementsToProcess()); - return vars; - } - }; - } - else if(mode == GenerationMode.TOSTRING) - { - return new BaseCreateMethodsFix(jsClass) - { - @Override - public void invoke(@Nonnull final Project project, final Editor editor, final PsiFile file) throws IncorrectOperationException - { - evalAnchor(editor, file); - - final boolean[] needOverride = new boolean[1]; - JSResolveUtil.processOverrides(jsClass, new JSResolveUtil.OverrideHandler() - { - @Override - public boolean process(final ResolveProcessor processor, final PsiElement scope, final String className) - { - needOverride[0] = !"Object".equals(className); - return false; - } - }, "toString", null, myJsClass); - - @NonNls String functionText = "public " + (needOverride[0] ? "override " : "") + "function toString():String {\nreturn " + - (needOverride[0] ? "super.toString() + \"" : "\"" + jsClass.getName()) + "{"; - final String semicolon = JSChangeUtil.getSemicolon(project); - - boolean first = true; - - for(JSVariable var : getElementsToProcess()) - { - if(!first) - { - functionText += " + \","; - } - first = false; - - functionText += var.getName() + "=\" + String(" + var.getName() + ")"; - } - - functionText += "+\"}\"" + semicolon + "\n}"; - doAddOneMethod(project, functionText, anchor); - } - }; - } - - return new MyBaseCreateMethodsFix(mode, jsClass, myCreateBindableProperties != null ? myCreateBindableProperties.isSelected() : false); - } - - - @Override - protected void collectCandidates(final JSClass clazz, final Collection candidates) - { - final LinkedHashMap candidatesMap = new LinkedHashMap(); - final JSCodeStyleSettings codeStyleSettings = CodeStyleSettingsManager.getSettings(clazz.getProject()).getCustomSettings(JSCodeStyleSettings - .class); - final ResolveProcessor processor = new ResolveProcessor(null) - { - { - setToProcessMembers(true); - setToProcessHierarchy(false); - setLocalResolve(true); - } - - @Override - public boolean execute(final PsiElement element, final ResolveState state) - { - final JSNamedElement namedElement = (JSNamedElement) element; - if(!(element instanceof JSVariable)) - { - if(element instanceof JSFunction) - { - final JSFunction function = (JSFunction) element; - if(mode == GenerationMode.GETTERS && function.isGetProperty() || mode == GenerationMode.SETTERS && function.isSetProperty()) - { - candidatesMap.put(function.getName(), function); - } - - } - return true; - } - else if(((JSVariable) element).isConst()) - { - return true; - } - - final String name = namedElement.getName(); - final String accessorName = transformVarNameToAccessorName(name, codeStyleSettings); - if(/*!name.equals(accessorName) &&*/ !candidatesMap.containsKey(accessorName)) - { - candidatesMap.put(accessorName, namedElement); - } - return true; - } - }; - - clazz.processDeclarations(processor, ResolveState.initial(), clazz, clazz); - for(JSNamedElement n : candidatesMap.values()) - { - if(n instanceof JSVariable) - { - candidates.add(new JSNamedElementNode(n)); - } - } - } - - private static class MyBaseCreateMethodsFix extends BaseCreateMethodsFix - { - private GenerationMode myMode; - private JSCodeStyleSettings codeStyleSettings; - private boolean bindableProperties; - private static final String PARAMETER_NAME = "value"; - - public MyBaseCreateMethodsFix(final GenerationMode mode, final JSClass jsClass, boolean _bindableProperties) - { - super(jsClass); - this.myMode = mode; - codeStyleSettings = CodeStyleSettingsManager.getSettings(jsClass.getProject()).getCustomSettings(JSCodeStyleSettings.class); - bindableProperties = _bindableProperties; - } - - @Override - protected String buildFunctionBodyText(final String retType, final JSParameterList parameterList, final JSVariable func) - { - final String semicolon = codeStyleSettings.USE_SEMICOLON_AFTER_STATEMENT ? ";" : ""; - String varName = func.getName(); - if(myMode == GenerationMode.SETTERS) - { - String checkNeedEvent = ""; - String dispatchEvent = ""; - if(bindableProperties) - { - String eventName = getEventName(transformVarNameToAccessorName(varName, codeStyleSettings)); - dispatchEvent = "\ndispatchEvent(new Event(\"" + eventName + "\"))" + semicolon; - checkNeedEvent = "if(" + varName + "==" + PARAMETER_NAME + ") return" + semicolon + "\n"; - } - return "{\n" + checkNeedEvent + varName + "=" + PARAMETER_NAME + semicolon + dispatchEvent + "\n}"; - } - else if(myMode == GenerationMode.GETTERS) - { - return "{\nreturn " + varName + semicolon + "\n}"; - } - return " {}"; - } - - @Override - protected String buildFunctionAttrText(final String attrText, final JSAttributeList attributeList, final JSVariable function) - { - String baseText = "public" + (attributeList != null && attributeList.hasModifier(JSAttributeList.ModifierType.STATIC) ? " static" : ""); - - if(bindableProperties && myMode == GenerationMode.GETTERS) - { - baseText = "[Bindable(event=\"" + getEventName(transformVarNameToAccessorName(function.getName(), codeStyleSettings)) + "\")]\n" + baseText; - } - - return baseText; - } - - private static String getEventName(String name) - { - return name + "Changed"; - } - - @Override - protected String buildFunctionKind(final JSVariable fun) - { - if(myMode == GenerationMode.GETTERS) - { - return "get "; - } - if(myMode == GenerationMode.SETTERS) - { - return "set "; - } - return super.buildFunctionKind(fun); - } - - @Override - protected String buildReturnType(final String typeString) - { - if(myMode == GenerationMode.SETTERS) - { - return "void"; - } - return super.buildReturnType(typeString); - } - - @Override - protected String buildName(final JSVariable fun) - { - return transformVarNameToAccessorName(super.buildName(fun), codeStyleSettings); - } - - @Override - protected String buildParameterList(final JSParameterList parameterList, final JSVariable fun) - { - if(myMode == GenerationMode.SETTERS) - { - final String s = fun.getTypeString(); - return "(" + PARAMETER_NAME + (s != null ? ":" + s : "") + ")"; - } - return (parameterList != null ? parameterList.getText() : "()"); - } - } - - private static String transformVarNameToAccessorName(String s, final JSCodeStyleSettings codeStyleSettings) - { - if(StringUtil.startsWith(s, codeStyleSettings.FIELD_PREFIX)) - { - s = s.substring(codeStyleSettings.FIELD_PREFIX.length()); - } - s = codeStyleSettings.PROPERTY_PREFIX + s; - return s; - } - - @Override - protected boolean canHaveEmptySelectedElements() - { - return mode == GenerationMode.CONSTRUCTOR; - } +class JavaScriptGenerateAccessorHandler extends BaseJSGenerateHandler { + private GenerationMode mode; + private JCheckBox myCreateBindableProperties; + + static enum GenerationMode { + GETTERS, + SETTERS, + GETTERS_AND_SETTERS, + CONSTRUCTOR, + TOSTRING + } + + JavaScriptGenerateAccessorHandler(GenerationMode _mode) { + mode = _mode; + } + + @Override + protected LocalizeValue getTitle() { + return mode == GenerationMode.GETTERS + ? JavaScriptLocalize.generateGetterFieldsChooserTitle() + : mode == GenerationMode.SETTERS + ? JavaScriptLocalize.generateSetterFieldsChooserTitle() + : mode == GenerationMode.GETTERS_AND_SETTERS + ? JavaScriptLocalize.generateGetterSetterChooserTitle() + : mode == GenerationMode.TOSTRING + ? JavaScriptLocalize.generateToStringChooserTitle() + : JavaScriptLocalize.generateConstructorFieldsChooserTitle(); + } + + @Override + protected void appendOwnOptions(List jComponentList) { + super.appendOwnOptions(jComponentList); + if (mode == GenerationMode.GETTERS || mode == GenerationMode.GETTERS_AND_SETTERS || mode == GenerationMode.SETTERS) { + if (!ApplicationManager.getApplication().isUnitTestMode()) { + myCreateBindableProperties = new NonFocusableCheckBox(JavaScriptLocalize.generateGetterFieldsBindableProperties().get()); + jComponentList.add(myCreateBindableProperties); + } + } + } + + @Override + protected BaseCreateMethodsFix createFix(final JSClass jsClass) { + if (mode == GenerationMode.GETTERS_AND_SETTERS) { + return new BaseCreateMethodsFix(jsClass) { + private boolean toCreateBindableProperties = myCreateBindableProperties != null + ? myCreateBindableProperties.isSelected() + : ApplicationManager.getApplication().isUnitTestMode(); + final MyBaseCreateMethodsFix generateGetterFix = + new MyBaseCreateMethodsFix(GenerationMode.GETTERS, jsClass, toCreateBindableProperties); + final MyBaseCreateMethodsFix generateSetterFix = + new MyBaseCreateMethodsFix(GenerationMode.SETTERS, jsClass, toCreateBindableProperties); + + @Override + public void invoke(@Nonnull final Project project, final Editor editor, final PsiFile file) + throws IncorrectOperationException { + evalAnchor(editor, file); + + for (JSVariable e : getElementsToProcess()) { + anchor = doAddOneMethod(project, generateGetterFix.buildFunctionText(e), anchor); + anchor = doAddOneMethod(project, generateSetterFix.buildFunctionText(e), anchor); + } + } + }; + } + else if (mode == GenerationMode.CONSTRUCTOR) { + return new BaseCreateMethodsFix(jsClass) { + @Override + public void invoke(@Nonnull final Project project, final Editor editor, final PsiFile file) + throws IncorrectOperationException { + final JSCodeStyleSettings codeStyleSettings = + CodeStyleSettingsManager.getSettings(project).getCustomSettings(JSCodeStyleSettings.class); + evalAnchor(editor, file); + @NonNls String functionText = "public function " + jsClass.getName() + "("; + @NonNls String initialization = ""; + boolean first = true; + final String semicolon = JSChangeUtil.getSemicolon(project); + + Set toProcess = getElementsToProcess(); + Iterator variableIterator = toProcess.iterator(); + boolean hadSuperClassConstructorInitializationBefore = false; + + while (variableIterator.hasNext()) { + JSVariable var = variableIterator.next(); + if (!first) { + functionText += ", "; + } + + first = false; + + final String name = var.getName(); + String parameterName = transformVarNameToAccessorName(name, codeStyleSettings); + + final String typeString = var.getTypeString(); + functionText += parameterName + (typeString != null ? ":" + typeString : ""); + + if (JSResolveUtil.findParent(var) == jsClass) { + if (hadSuperClassConstructorInitializationBefore) { + initialization += ")" + semicolon + "\n"; + hadSuperClassConstructorInitializationBefore = false; + } + initialization += (parameterName.equals(name) ? "this." : "") + name + " = " + parameterName + semicolon + "\n"; + } + else { + if (hadSuperClassConstructorInitializationBefore) { + initialization += ", "; + } + else { + initialization += "super("; + } + initialization += parameterName; + hadSuperClassConstructorInitializationBefore = true; + } + } + + if (hadSuperClassConstructorInitializationBefore) { + initialization += ")" + semicolon + "\n"; + } + functionText += ") {\n"; + functionText += initialization; + functionText += "}"; + doAddOneMethod(project, functionText, anchor); + } + + @Override + public Set getElementsToProcess() { + LinkedHashSet vars = new LinkedHashSet(); + JSFunction nontrivialSuperClassConstructor = JSAnnotatingVisitor.getNontrivialSuperClassConstructor(jsClass); + + if (nontrivialSuperClassConstructor != null) { + vars.addAll(Arrays.asList(nontrivialSuperClassConstructor.getParameterList().getParameters())); + } + vars.addAll(super.getElementsToProcess()); + return vars; + } + }; + } + else if (mode == GenerationMode.TOSTRING) { + return new BaseCreateMethodsFix(jsClass) { + @Override + public void invoke(@Nonnull final Project project, final Editor editor, final PsiFile file) + throws IncorrectOperationException { + evalAnchor(editor, file); + + final boolean[] needOverride = new boolean[1]; + JSResolveUtil.processOverrides( + jsClass, + (processor, scope, className) -> { + needOverride[0] = !"Object".equals(className); + return false; + }, "toString", null, myJsClass + ); + + @NonNls String functionText = + "public " + (needOverride[0] ? "override " : "") + "function toString():String {\nreturn " + + (needOverride[0] ? "super.toString() + \"" : "\"" + jsClass.getName()) + "{"; + final String semicolon = JSChangeUtil.getSemicolon(project); + + boolean first = true; + + for (JSVariable var : getElementsToProcess()) { + if (!first) { + functionText += " + \","; + } + first = false; + + functionText += var.getName() + "=\" + String(" + var.getName() + ")"; + } + + functionText += "+\"}\"" + semicolon + "\n}"; + doAddOneMethod(project, functionText, anchor); + } + }; + } + + return new MyBaseCreateMethodsFix( + mode, + jsClass, + myCreateBindableProperties != null ? myCreateBindableProperties.isSelected() : false + ); + } + + + @Override + protected void collectCandidates(final JSClass clazz, final Collection candidates) { + final LinkedHashMap candidatesMap = new LinkedHashMap<>(); + final JSCodeStyleSettings codeStyleSettings = + CodeStyleSettingsManager.getSettings(clazz.getProject()).getCustomSettings(JSCodeStyleSettings.class); + final ResolveProcessor processor = new ResolveProcessor(null) { + { + setToProcessMembers(true); + setToProcessHierarchy(false); + setLocalResolve(true); + } + + @Override + public boolean execute(final PsiElement element, final ResolveState state) { + final JSNamedElement namedElement = (JSNamedElement)element; + if (!(element instanceof JSVariable)) { + if (element instanceof JSFunction) { + final JSFunction function = (JSFunction)element; + if (mode == GenerationMode.GETTERS && function.isGetProperty() + || mode == GenerationMode.SETTERS && function.isSetProperty()) { + candidatesMap.put(function.getName(), function); + } + + } + return true; + } + else if (((JSVariable)element).isConst()) { + return true; + } + + final String name = namedElement.getName(); + final String accessorName = transformVarNameToAccessorName(name, codeStyleSettings); + if (/*!name.equals(accessorName) &&*/ !candidatesMap.containsKey(accessorName)) { + candidatesMap.put(accessorName, namedElement); + } + return true; + } + }; + + clazz.processDeclarations(processor, ResolveState.initial(), clazz, clazz); + for (JSNamedElement n : candidatesMap.values()) { + if (n instanceof JSVariable) { + candidates.add(new JSNamedElementNode(n)); + } + } + } + + private static class MyBaseCreateMethodsFix extends BaseCreateMethodsFix { + private GenerationMode myMode; + private JSCodeStyleSettings codeStyleSettings; + private boolean bindableProperties; + private static final String PARAMETER_NAME = "value"; + + public MyBaseCreateMethodsFix(final GenerationMode mode, final JSClass jsClass, boolean _bindableProperties) { + super(jsClass); + this.myMode = mode; + codeStyleSettings = CodeStyleSettingsManager.getSettings(jsClass.getProject()).getCustomSettings(JSCodeStyleSettings.class); + bindableProperties = _bindableProperties; + } + + @Override + protected String buildFunctionBodyText(final String retType, final JSParameterList parameterList, final JSVariable func) { + final String semicolon = codeStyleSettings.USE_SEMICOLON_AFTER_STATEMENT ? ";" : ""; + String varName = func.getName(); + if (myMode == GenerationMode.SETTERS) { + String checkNeedEvent = ""; + String dispatchEvent = ""; + if (bindableProperties) { + String eventName = getEventName(transformVarNameToAccessorName(varName, codeStyleSettings)); + dispatchEvent = "\ndispatchEvent(new Event(\"" + eventName + "\"))" + semicolon; + checkNeedEvent = "if(" + varName + "==" + PARAMETER_NAME + ") return" + semicolon + "\n"; + } + return "{\n" + checkNeedEvent + varName + "=" + PARAMETER_NAME + semicolon + dispatchEvent + "\n}"; + } + else if (myMode == GenerationMode.GETTERS) { + return "{\nreturn " + varName + semicolon + "\n}"; + } + return " {}"; + } + + @Override + protected String buildFunctionAttrText(final String attrText, final JSAttributeList attributeList, final JSVariable function) { + String baseText = + "public" + (attributeList != null && attributeList.hasModifier(JSAttributeList.ModifierType.STATIC) ? " static" : ""); + + if (bindableProperties && myMode == GenerationMode.GETTERS) { + baseText = "[Bindable(event=\"" + getEventName(transformVarNameToAccessorName( + function.getName(), + codeStyleSettings + )) + "\")]\n" + baseText; + } + + return baseText; + } + + private static String getEventName(String name) { + return name + "Changed"; + } + + @Override + protected String buildFunctionKind(final JSVariable fun) { + if (myMode == GenerationMode.GETTERS) { + return "get "; + } + if (myMode == GenerationMode.SETTERS) { + return "set "; + } + return super.buildFunctionKind(fun); + } + + @Override + protected String buildReturnType(final String typeString) { + if (myMode == GenerationMode.SETTERS) { + return "void"; + } + return super.buildReturnType(typeString); + } + + @Override + protected String buildName(final JSVariable fun) { + return transformVarNameToAccessorName(super.buildName(fun), codeStyleSettings); + } + + @Override + protected String buildParameterList(final JSParameterList parameterList, final JSVariable fun) { + if (myMode == GenerationMode.SETTERS) { + final String s = fun.getTypeString(); + return "(" + PARAMETER_NAME + (s != null ? ":" + s : "") + ")"; + } + return (parameterList != null ? parameterList.getText() : "()"); + } + } + + private static String transformVarNameToAccessorName(String s, final JSCodeStyleSettings codeStyleSettings) { + if (StringUtil.startsWith(s, codeStyleSettings.FIELD_PREFIX)) { + s = s.substring(codeStyleSettings.FIELD_PREFIX.length()); + } + s = codeStyleSettings.PROPERTY_PREFIX + s; + return s; + } + + @Override + protected boolean canHaveEmptySelectedElements() { + return mode == GenerationMode.CONSTRUCTOR; + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptGenerateConstructorAction.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptGenerateConstructorAction.java index b785ad13..7a424ee7 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptGenerateConstructorAction.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptGenerateConstructorAction.java @@ -18,14 +18,12 @@ /** * @author Maxim.Mossienko - * Date: Jul 19, 2008 - * Time: 1:01:05 AM + * Date: Jul 19, 2008 + * Time: 1:01:05 AM */ -public class JavaScriptGenerateConstructorAction extends BaseJSGenerateAction -{ - @Override - protected JavaScriptGenerateAccessorHandler.GenerationMode getGenerationMode() - { - return JavaScriptGenerateAccessorHandler.GenerationMode.CONSTRUCTOR; - } +public class JavaScriptGenerateConstructorAction extends BaseJSGenerateAction { + @Override + protected JavaScriptGenerateAccessorHandler.GenerationMode getGenerationMode() { + return JavaScriptGenerateAccessorHandler.GenerationMode.CONSTRUCTOR; + } } \ No newline at end of file diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptGenerateGetAccessorAction.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptGenerateGetAccessorAction.java index a8f9a99c..d4d181ed 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptGenerateGetAccessorAction.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptGenerateGetAccessorAction.java @@ -18,14 +18,12 @@ /** * @author Maxim.Mossienko - * Date: Jul 19, 2008 - * Time: 1:01:05 AM + * Date: Jul 19, 2008 + * Time: 1:01:05 AM */ -public class JavaScriptGenerateGetAccessorAction extends BaseJSGenerateAction -{ - @Override - protected JavaScriptGenerateAccessorHandler.GenerationMode getGenerationMode() - { - return JavaScriptGenerateAccessorHandler.GenerationMode.GETTERS; - } +public class JavaScriptGenerateGetAccessorAction extends BaseJSGenerateAction { + @Override + protected JavaScriptGenerateAccessorHandler.GenerationMode getGenerationMode() { + return JavaScriptGenerateAccessorHandler.GenerationMode.GETTERS; + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptGenerateGetSetAccessorAction.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptGenerateGetSetAccessorAction.java index 7f5a2ad9..0dd3d615 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptGenerateGetSetAccessorAction.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptGenerateGetSetAccessorAction.java @@ -18,15 +18,12 @@ /** * @author Maxim.Mossienko - * Date: Jul 19, 2008 - * Time: 1:01:05 AM + * Date: Jul 19, 2008 + * Time: 1:01:05 AM */ -public class JavaScriptGenerateGetSetAccessorAction extends BaseJSGenerateAction -{ - - @Override - protected JavaScriptGenerateAccessorHandler.GenerationMode getGenerationMode() - { - return JavaScriptGenerateAccessorHandler.GenerationMode.GETTERS_AND_SETTERS; - } +public class JavaScriptGenerateGetSetAccessorAction extends BaseJSGenerateAction { + @Override + protected JavaScriptGenerateAccessorHandler.GenerationMode getGenerationMode() { + return JavaScriptGenerateAccessorHandler.GenerationMode.GETTERS_AND_SETTERS; + } } \ No newline at end of file diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptGenerateSetAccessorAction.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptGenerateSetAccessorAction.java index 84270251..c0ccc294 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptGenerateSetAccessorAction.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptGenerateSetAccessorAction.java @@ -18,14 +18,12 @@ /** * @author Maxim.Mossienko - * Date: Jul 19, 2008 - * Time: 1:01:05 AM + * Date: Jul 19, 2008 + * Time: 1:01:05 AM */ -public class JavaScriptGenerateSetAccessorAction extends BaseJSGenerateAction -{ - @Override - protected JavaScriptGenerateAccessorHandler.GenerationMode getGenerationMode() - { - return JavaScriptGenerateAccessorHandler.GenerationMode.SETTERS; - } +public class JavaScriptGenerateSetAccessorAction extends BaseJSGenerateAction { + @Override + protected JavaScriptGenerateAccessorHandler.GenerationMode getGenerationMode() { + return JavaScriptGenerateAccessorHandler.GenerationMode.SETTERS; + } } \ No newline at end of file diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptGenerateToStringAction.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptGenerateToStringAction.java index e2647571..ac9758c9 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptGenerateToStringAction.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptGenerateToStringAction.java @@ -18,14 +18,12 @@ /** * @author Maxim.Mossienko - * Date: Jul 19, 2008 - * Time: 1:01:05 AM + * Date: Jul 19, 2008 + * Time: 1:01:05 AM */ -public class JavaScriptGenerateToStringAction extends BaseJSGenerateAction -{ - @Override - protected JavaScriptGenerateAccessorHandler.GenerationMode getGenerationMode() - { - return JavaScriptGenerateAccessorHandler.GenerationMode.TOSTRING; - } +public class JavaScriptGenerateToStringAction extends BaseJSGenerateAction { + @Override + protected JavaScriptGenerateAccessorHandler.GenerationMode getGenerationMode() { + return JavaScriptGenerateAccessorHandler.GenerationMode.TOSTRING; + } } \ No newline at end of file diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptImplementMethodsHandler.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptImplementMethodsHandler.java index d0152e12..e199605c 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptImplementMethodsHandler.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptImplementMethodsHandler.java @@ -33,32 +33,26 @@ import java.util.Collection; @ExtensionImpl -public class JavaScriptImplementMethodsHandler extends BaseJSGenerateHandler implements ImplementMethodHandler -{ - @Override - protected void collectCandidates(final JSClass clazz, final Collection candidates) - { - ImplementedMethodProcessor processor = new ImplementedMethodProcessor(clazz) - { - @Override - protected void addNonimplementedFunction(final JSFunction function) - { - candidates.add(new JSNamedElementNode(function)); - } - }; +public class JavaScriptImplementMethodsHandler extends BaseJSGenerateHandler implements ImplementMethodHandler { + @Override + protected void collectCandidates(final JSClass clazz, final Collection candidates) { + ImplementedMethodProcessor processor = new ImplementedMethodProcessor(clazz) { + @Override + protected void addNonimplementedFunction(final JSFunction function) { + candidates.add(new JSNamedElementNode(function)); + } + }; - JSResolveUtil.processInterfaceMethods(clazz, processor); - } + JSResolveUtil.processInterfaceMethods(clazz, processor); + } - @Override - protected LocalizeValue getTitle() - { - return JavaScriptLocalize.methodsToImplementChooserTitle(); - } + @Override + protected LocalizeValue getTitle() { + return JavaScriptLocalize.methodsToImplementChooserTitle(); + } - @Override - protected BaseCreateMethodsFix createFix(final JSClass clazz) - { - return new ImplementMethodsFix(clazz); - } + @Override + protected BaseCreateMethodsFix createFix(final JSClass clazz) { + return new ImplementMethodsFix(clazz); + } } \ No newline at end of file diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptOverrideMethodsHandler.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptOverrideMethodsHandler.java index aa889eba..0ec89d4b 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptOverrideMethodsHandler.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptOverrideMethodsHandler.java @@ -37,98 +37,80 @@ import java.util.function.Function; @ExtensionImpl -public class JavaScriptOverrideMethodsHandler extends BaseJSGenerateHandler implements OverrideMethodHandler -{ - @Override - protected LocalizeValue getTitle() - { - return JavaScriptLocalize.methodsToOverrideChooserTitle(); - } +public class JavaScriptOverrideMethodsHandler extends BaseJSGenerateHandler implements OverrideMethodHandler { + @Override + protected LocalizeValue getTitle() { + return JavaScriptLocalize.methodsToOverrideChooserTitle(); + } - @Override - protected BaseCreateMethodsFix createFix(final JSClass clazz) - { - return new OverrideMethodsFix(clazz); - } + @Override + protected BaseCreateMethodsFix createFix(final JSClass clazz) { + return new OverrideMethodsFix(clazz); + } - @Override - protected void collectCandidates(final JSClass clazz, final Collection candidates) - { - Map _functionsToOverride = null; - final Function functionFilter = new Function() - { - @Override - public Boolean apply(final JSFunction function) - { - final JSAttributeList attributeList = function.getAttributeList(); + @Override + protected void collectCandidates(final JSClass clazz, final Collection candidates) { + Map _functionsToOverride = null; + final Function functionFilter = new Function() { + @Override + public Boolean apply(final JSFunction function) { + final JSAttributeList attributeList = function.getAttributeList(); - if(attributeList != null && (attributeList.hasModifier(JSAttributeList.ModifierType.STATIC) || attributeList.hasModifier(JSAttributeList - .ModifierType.FINAL))) - { - return Boolean.FALSE; - } - return Boolean.TRUE; - } - }; + if (attributeList != null && (attributeList.hasModifier(JSAttributeList.ModifierType.STATIC) + || attributeList.hasModifier(JSAttributeList.ModifierType.FINAL))) { + return Boolean.FALSE; + } + return Boolean.TRUE; + } + }; - for(JSClass superClazz : clazz.getSuperClasses()) - { - _functionsToOverride = ImplementedMethodProcessor.collectAllVisibleClassFunctions(superClazz, _functionsToOverride, functionFilter); - } + for (JSClass superClazz : clazz.getSuperClasses()) { + _functionsToOverride = + ImplementedMethodProcessor.collectAllVisibleClassFunctions(superClazz, _functionsToOverride, functionFilter); + } - final Map functionsToOverride = _functionsToOverride; - final ResolveProcessor collectOwnFunctions = new ResolveProcessor(null, clazz) - { - { - setToProcessMembers(true); - setToProcessHierarchy(false); - } + final Map functionsToOverride = _functionsToOverride; + final ResolveProcessor collectOwnFunctions = new ResolveProcessor(null, clazz) { + { + setToProcessMembers(true); + setToProcessHierarchy(false); + } - @Override - public boolean execute(final PsiElement element, final ResolveState state) - { - if(element instanceof JSFunction) - { - final JSFunction function = (JSFunction) element; - if(function.isConstructor() || functionsToOverride == null) - { - return true; - } - final String funName = function.getName(); - final Object o = functionsToOverride.get(funName); - if(o instanceof JSFunction && ((JSFunction) o).getKind() == function.getKind()) - { - functionsToOverride.remove(funName); - } - else if(o instanceof JSFunction[]) - { - JSFunction[] functions = (JSFunction[]) o; - functionsToOverride.put(funName, functions[0].getKind() == function.getKind() ? functions[1] : functions[0]); - } - } - return true; - } - }; + @Override + public boolean execute(final PsiElement element, final ResolveState state) { + if (element instanceof JSFunction) { + final JSFunction function = (JSFunction)element; + if (function.isConstructor() || functionsToOverride == null) { + return true; + } + final String funName = function.getName(); + final Object o = functionsToOverride.get(funName); + if (o instanceof JSFunction && ((JSFunction)o).getKind() == function.getKind()) { + functionsToOverride.remove(funName); + } + else if (o instanceof JSFunction[]) { + JSFunction[] functions = (JSFunction[])o; + functionsToOverride.put(funName, functions[0].getKind() == function.getKind() ? functions[1] : functions[0]); + } + } + return true; + } + }; - clazz.processDeclarations(collectOwnFunctions, ResolveState.initial(), clazz, clazz); + clazz.processDeclarations(collectOwnFunctions, ResolveState.initial(), clazz, clazz); - if(functionsToOverride != null) - { - for(Map.Entry entry : functionsToOverride.entrySet()) - { - final Object value = entry.getValue(); - if(value instanceof JSFunction[]) - { - for(JSFunction function : (JSFunction[]) value) - { - candidates.add(new JSNamedElementNode(function)); - } - } - else - { - candidates.add(new JSNamedElementNode((JSFunction) value)); - } - } - } - } + if (functionsToOverride != null) { + for (Map.Entry entry : functionsToOverride.entrySet()) { + final Object value = entry.getValue(); + if (value instanceof JSFunction[]) { + for (JSFunction function : (JSFunction[])value) { + candidates.add(new JSNamedElementNode(function)); + } + } + else { + candidates.add(new JSNamedElementNode((JSFunction)value)); + } + } + } + } } \ No newline at end of file diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/OverrideMethodsFix.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/OverrideMethodsFix.java index a7b8bee4..bdd49eab 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/OverrideMethodsFix.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/OverrideMethodsFix.java @@ -29,84 +29,68 @@ /** * @author Maxim.Mossienko - * Date: Jul 17, 2008 - * Time: 9:39:02 PM + * Date: Jul 17, 2008 + * Time: 9:39:02 PM */ -public class OverrideMethodsFix extends BaseCreateMethodsFix -{ - public OverrideMethodsFix(final JSClass jsClass) - { - super(jsClass); - } +public class OverrideMethodsFix extends BaseCreateMethodsFix { + public OverrideMethodsFix(final JSClass jsClass) { + super(jsClass); + } - @Override - protected String buildFunctionBodyText(final String retType, final JSParameterList parameterList, final JSFunction func) - { - @NonNls String functionText = ""; - functionText += "{\n"; + @Override + protected String buildFunctionBodyText(final String retType, final JSParameterList parameterList, final JSFunction func) { + @NonNls String functionText = ""; + functionText += "{\n"; - if(!"void".equals(retType)) - { - functionText += " return"; - } - else - { - functionText += " "; - } + if (!"void".equals(retType)) { + functionText += " return"; + } + else { + functionText += " "; + } - functionText += " super." + func.getName(); + functionText += " super." + func.getName(); - if(func.isGetProperty()) - { + if (func.isGetProperty()) { + } + else if (func.isSetProperty()) { + functionText += " = " + parameterList.getParameters()[0].getName(); + } + else { + functionText += "("; + boolean first = true; + for (JSParameter param : parameterList.getParameters()) { + if (!first) { + functionText += ","; + } + first = false; + functionText += param.getName(); + } + functionText += ")"; + } - } - else if(func.isSetProperty()) - { - functionText += " = " + parameterList.getParameters()[0].getName(); - } - else - { - functionText += "("; - boolean first = true; - for(JSParameter param : parameterList.getParameters()) - { - if(!first) - { - functionText += ","; - } - first = false; - functionText += param.getName(); - } - functionText += ")"; - } + functionText += JSChangeUtil.getSemicolon(func.getProject()) + "\n}"; + return functionText; + } - functionText += JSChangeUtil.getSemicolon(func.getProject()) + "\n}"; - return functionText; - } + @Override + protected String buildFunctionAttrText(String attrText, final JSAttributeList attributeList, final JSFunction function) { + attrText = super.buildFunctionAttrText(attrText, attributeList, function); + final PsiElement element = JSResolveUtil.findParent(function); + if (attributeList == null || !attributeList.hasModifier(JSAttributeList.ModifierType.OVERRIDE)) { - @Override - protected String buildFunctionAttrText(String attrText, final JSAttributeList attributeList, final JSFunction function) - { - attrText = super.buildFunctionAttrText(attrText, attributeList, function); - final PsiElement element = JSResolveUtil.findParent(function); - if(attributeList == null || !attributeList.hasModifier(JSAttributeList.ModifierType.OVERRIDE)) - { + if (element instanceof JSClass && !"Object".equals(((JSClass)element).getQualifiedName())) { + final PsiElement typeElement = attributeList != null ? attributeList.findAccessTypeElement() : null; + if (typeElement == null) { + attrText += " override"; + } + else { + final int index = attrText.indexOf(typeElement.getText()); + attrText = attrText.substring(0, index) + ((index > 0) ? " " : "") + "override " + attrText.substring(index); + } + } + } - if(element instanceof JSClass && !"Object".equals(((JSClass) element).getQualifiedName())) - { - final PsiElement typeElement = attributeList != null ? attributeList.findAccessTypeElement() : null; - if(typeElement == null) - { - attrText += " override"; - } - else - { - final int index = attrText.indexOf(typeElement.getText()); - attrText = attrText.substring(0, index) + ((index > 0) ? " " : "") + "override " + attrText.substring(index); - } - } - } - - return attrText; - } + return attrText; + } } From f2050c9ee9ad653d00cebfc262716cde678c8cda Mon Sep 17 00:00:00 2001 From: UNV Date: Sun, 8 Sep 2024 21:56:52 +0300 Subject: [PATCH 070/150] Refactoring to reduce number of inspection warnings. --- .../impl/generation/BaseJSGenerateAction.java | 6 +- .../generation/BaseJSGenerateHandler.java | 15 +- .../impl/generation/JSNamedElementNode.java | 33 +- .../JavaScriptGenerateAccessorHandler.java | 127 ++-- .../JavaScriptGenerateConstructorAction.java | 6 +- .../JavaScriptGenerateGetAccessorAction.java | 6 +- ...avaScriptGenerateGetSetAccessorAction.java | 6 +- .../JavaScriptGenerateSetAccessorAction.java | 6 +- .../JavaScriptGenerateToStringAction.java | 6 +- .../JavaScriptImplementMethodsHandler.java | 2 + .../JavaScriptOverrideMethodsHandler.java | 35 +- .../impl/generation/OverrideMethodsFix.java | 42 +- .../impl/validation/BaseCreateMethodsFix.java | 67 +- .../impl/validation/ImplementMethodsFix.java | 38 +- .../ImplementedMethodProcessor.java | 95 ++- .../impl/validation/JSAnnotatingVisitor.java | 671 +++++++++--------- .../impl/validation/JSAnnotatorFactory.java | 2 +- 17 files changed, 605 insertions(+), 558 deletions(-) diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/BaseJSGenerateAction.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/BaseJSGenerateAction.java index afd0be70..f924a331 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/BaseJSGenerateAction.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/BaseJSGenerateAction.java @@ -25,6 +25,7 @@ import consulo.language.editor.util.PsiUtilBase; import consulo.language.psi.PsiFile; import consulo.project.Project; +import consulo.ui.annotation.RequiredUIAccess; import consulo.ui.ex.action.AnAction; import consulo.ui.ex.action.AnActionEvent; import consulo.virtualFileSystem.VirtualFile; @@ -32,11 +33,11 @@ /** * @author Maxim.Mossienko - * Date: Jul 19, 2008 - * Time: 7:04:37 PM + * @since 2008-07-19 */ abstract class BaseJSGenerateAction extends AnAction { @Override + @RequiredUIAccess public void actionPerformed(final AnActionEvent e) { Editor editor = e.getData(PlatformDataKeys.EDITOR); PsiFile psifile = e.getData(LangDataKeys.PSI_FILE); @@ -55,6 +56,7 @@ public void actionPerformed(final AnActionEvent e) { protected abstract JavaScriptGenerateAccessorHandler.GenerationMode getGenerationMode(); @Override + @RequiredUIAccess public void update(final AnActionEvent e) { final VirtualFile file = e.getData(PlatformDataKeys.VIRTUAL_FILE); diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/BaseJSGenerateHandler.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/BaseJSGenerateHandler.java index 4ee1927c..a6e8bec7 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/BaseJSGenerateHandler.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/BaseJSGenerateHandler.java @@ -22,7 +22,7 @@ import com.intellij.lang.javascript.impl.validation.BaseCreateMethodsFix; import com.intellij.lang.javascript.psi.JSClass; import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; -import consulo.application.ApplicationManager; +import consulo.annotation.access.RequiredReadAction; import consulo.codeEditor.Editor; import consulo.javascript.language.JavaScriptLanguage; import consulo.language.Language; @@ -36,8 +36,8 @@ import consulo.localize.LocalizeValue; import consulo.logging.Logger; import consulo.project.Project; +import consulo.ui.annotation.RequiredUIAccess; import consulo.undoRedo.CommandProcessor; - import jakarta.annotation.Nonnull; import javax.swing.*; @@ -53,7 +53,8 @@ public Language getLanguage() { } @Override - public void invoke(final Project project, final Editor editor, final PsiFile file) { + @RequiredUIAccess + public void invoke(@Nonnull final Project project, @Nonnull final Editor editor, @Nonnull final PsiFile file) { JSClass clazz = findClass(file, editor); if (clazz == null) { @@ -85,8 +86,9 @@ private void run(JSClass clazz, Collection selectedElements, final Collection selectedElements1 = selectedElements; Runnable runnable = new Runnable() { @Override + @RequiredUIAccess public void run() { - ApplicationManager.getApplication().runWriteAction(new Runnable() { + project.getApplication().runWriteAction(new Runnable() { @Override public void run() { try { @@ -118,6 +120,7 @@ protected boolean canHaveEmptySelectedElements() { return false; } + @RequiredReadAction static JSClass findClass(PsiFile file, Editor editor) { final PsiElement at = file.findElementAt(editor.getCaretModel().getOffset()); if (at == null) { @@ -128,8 +131,8 @@ static JSClass findClass(PsiFile file, Editor editor) { if (clazz == null) { final PsiFile containingFile = at.getContainingFile(); final PsiElement element = JSResolveUtil.getClassReferenceForXmlFromContext(containingFile); - if (element instanceof JSClass) { - clazz = (JSClass)element; + if (element instanceof JSClass jsClass) { + clazz = jsClass; } } else if (JSResolveUtil.isArtificialClassUsedForReferenceList(clazz)) { diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JSNamedElementNode.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JSNamedElementNode.java index b1eb09da..d21646af 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JSNamedElementNode.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JSNamedElementNode.java @@ -19,6 +19,7 @@ import com.intellij.javascript.JSParameterInfoHandler; import com.intellij.lang.javascript.psi.*; import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; +import consulo.annotation.access.RequiredReadAction; import consulo.application.AllIcons; import consulo.language.editor.generation.ClassMember; import consulo.language.editor.generation.MemberChooserObject; @@ -30,19 +31,19 @@ /** * @author Maxim.Mossienko - * Date: Jul 17, 2008 - * Time: 8:55:57 PM + * @since 2008-07-17 */ public class JSNamedElementNode extends PsiElementMemberChooserObject implements ClassMember { + @RequiredReadAction public JSNamedElementNode(JSNamedElement node) { super(node, buildTextFor(node), buildIcon(node)); } + @RequiredReadAction private static Image buildIcon(final JSNamedElement node) { Image icon = IconDescriptorUpdaters.getIcon(node, 0); - if (node instanceof JSFunction) { - final JSFunction function = (JSFunction)node; + if (node instanceof JSFunction function) { final Image accessIcon; if (function.isGetProperty()) { @@ -62,42 +63,42 @@ else if (function.isSetProperty()) { return icon; } + @RequiredReadAction private static String buildTextFor(final JSNamedElement node) { - String text = node.getName(); + StringBuilder text = new StringBuilder(node.getName()); - if (node instanceof JSFunction) { - final JSFunction function = (JSFunction)node; - text += "("; + if (node instanceof JSFunction function) { + text.append("("); final JSParameterList parameterList = function.getParameterList(); if (parameterList != null) { boolean first = true; for (JSParameter p : parameterList.getParameters()) { if (!first) { - text += ", "; + text.append(", "); } first = false; - text += JSParameterInfoHandler.getSignatureForParameter(p, false); + text.append(JSParameterInfoHandler.getSignatureForParameter(p, false)); } } - text += ")"; + text.append(")"); final String typeString = function.getReturnTypeString(); if (typeString != null) { - text += ":" + typeString; + text.append(":").append(typeString); } } - else if (node instanceof JSVariable) { - final JSVariable var = (JSVariable)node; + else if (node instanceof JSVariable var) { final String typeString = var.getTypeString(); if (typeString != null) { - text += ":" + typeString; + text.append(":").append(typeString); } } - return text; + return text.toString(); } @Override + @RequiredReadAction public MemberChooserObject getParentNodeDelegate() { final PsiElement element = getPsiElement(); PsiElement parent = JSResolveUtil.findParent(element); diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptGenerateAccessorHandler.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptGenerateAccessorHandler.java index a2de0331..b28ebcb2 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptGenerateAccessorHandler.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptGenerateAccessorHandler.java @@ -23,7 +23,8 @@ import com.intellij.lang.javascript.psi.impl.JSChangeUtil; import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; import com.intellij.lang.javascript.psi.resolve.ResolveProcessor; -import consulo.application.ApplicationManager; +import consulo.annotation.access.RequiredReadAction; +import consulo.application.Application; import consulo.codeEditor.Editor; import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.codeStyle.CodeStyleSettingsManager; @@ -33,10 +34,9 @@ import consulo.language.util.IncorrectOperationException; import consulo.localize.LocalizeValue; import consulo.project.Project; +import consulo.ui.annotation.RequiredUIAccess; import consulo.ui.ex.awt.NonFocusableCheckBox; import consulo.util.lang.StringUtil; -import org.jetbrains.annotations.NonNls; - import jakarta.annotation.Nonnull; import javax.swing.*; @@ -44,8 +44,7 @@ /** * @author Maxim.Mossienko - * Date: Jul 19, 2008 - * Time: 1:11:10 AM + * @since 2008-07-19 */ class JavaScriptGenerateAccessorHandler extends BaseJSGenerateHandler { private GenerationMode mode; @@ -80,7 +79,7 @@ protected LocalizeValue getTitle() { protected void appendOwnOptions(List jComponentList) { super.appendOwnOptions(jComponentList); if (mode == GenerationMode.GETTERS || mode == GenerationMode.GETTERS_AND_SETTERS || mode == GenerationMode.SETTERS) { - if (!ApplicationManager.getApplication().isUnitTestMode()) { + if (!Application.get().isUnitTestMode()) { myCreateBindableProperties = new NonFocusableCheckBox(JavaScriptLocalize.generateGetterFieldsBindableProperties().get()); jComponentList.add(myCreateBindableProperties); } @@ -93,13 +92,14 @@ protected BaseCreateMethodsFix createFix(final JSClass jsClass) { return new BaseCreateMethodsFix(jsClass) { private boolean toCreateBindableProperties = myCreateBindableProperties != null ? myCreateBindableProperties.isSelected() - : ApplicationManager.getApplication().isUnitTestMode(); + : jsClass.getApplication().isUnitTestMode(); final MyBaseCreateMethodsFix generateGetterFix = new MyBaseCreateMethodsFix(GenerationMode.GETTERS, jsClass, toCreateBindableProperties); final MyBaseCreateMethodsFix generateSetterFix = new MyBaseCreateMethodsFix(GenerationMode.SETTERS, jsClass, toCreateBindableProperties); @Override + @RequiredUIAccess public void invoke(@Nonnull final Project project, final Editor editor, final PsiFile file) throws IncorrectOperationException { evalAnchor(editor, file); @@ -114,13 +114,14 @@ public void invoke(@Nonnull final Project project, final Editor editor, final Ps else if (mode == GenerationMode.CONSTRUCTOR) { return new BaseCreateMethodsFix(jsClass) { @Override + @RequiredUIAccess public void invoke(@Nonnull final Project project, final Editor editor, final PsiFile file) throws IncorrectOperationException { final JSCodeStyleSettings codeStyleSettings = CodeStyleSettingsManager.getSettings(project).getCustomSettings(JSCodeStyleSettings.class); evalAnchor(editor, file); - @NonNls String functionText = "public function " + jsClass.getName() + "("; - @NonNls String initialization = ""; + StringBuilder functionText = new StringBuilder("public function ").append(jsClass.getName()).append("("); + StringBuilder initialization = new StringBuilder(); boolean first = true; final String semicolon = JSChangeUtil.getSemicolon(project); @@ -131,7 +132,7 @@ public void invoke(@Nonnull final Project project, final Editor editor, final Ps while (variableIterator.hasNext()) { JSVariable var = variableIterator.next(); if (!first) { - functionText += ", "; + functionText.append(", "); } first = false; @@ -140,39 +141,45 @@ public void invoke(@Nonnull final Project project, final Editor editor, final Ps String parameterName = transformVarNameToAccessorName(name, codeStyleSettings); final String typeString = var.getTypeString(); - functionText += parameterName + (typeString != null ? ":" + typeString : ""); + functionText.append(parameterName).append(typeString != null ? ":" + typeString : ""); if (JSResolveUtil.findParent(var) == jsClass) { if (hadSuperClassConstructorInitializationBefore) { - initialization += ")" + semicolon + "\n"; + initialization.append(")").append(semicolon).append("\n"); hadSuperClassConstructorInitializationBefore = false; } - initialization += (parameterName.equals(name) ? "this." : "") + name + " = " + parameterName + semicolon + "\n"; + initialization.append(parameterName.equals(name) ? "this." : "") + .append(name) + .append(" = ") + .append(parameterName) + .append(semicolon) + .append("\n"); } else { if (hadSuperClassConstructorInitializationBefore) { - initialization += ", "; + initialization.append(", "); } else { - initialization += "super("; + initialization.append("super("); } - initialization += parameterName; + initialization.append(parameterName); hadSuperClassConstructorInitializationBefore = true; } } if (hadSuperClassConstructorInitializationBefore) { - initialization += ")" + semicolon + "\n"; + initialization.append(")").append(semicolon).append("\n"); } - functionText += ") {\n"; - functionText += initialization; - functionText += "}"; - doAddOneMethod(project, functionText, anchor); + functionText.append(") {\n") + .append(initialization) + .append("}"); + doAddOneMethod(project, functionText.toString(), anchor); } @Override + @RequiredReadAction public Set getElementsToProcess() { - LinkedHashSet vars = new LinkedHashSet(); + LinkedHashSet vars = new LinkedHashSet<>(); JSFunction nontrivialSuperClassConstructor = JSAnnotatingVisitor.getNontrivialSuperClassConstructor(jsClass); if (nontrivialSuperClassConstructor != null) { @@ -186,6 +193,7 @@ public Set getElementsToProcess() { else if (mode == GenerationMode.TOSTRING) { return new BaseCreateMethodsFix(jsClass) { @Override + @RequiredUIAccess public void invoke(@Nonnull final Project project, final Editor editor, final PsiFile file) throws IncorrectOperationException { evalAnchor(editor, file); @@ -199,24 +207,26 @@ public void invoke(@Nonnull final Project project, final Editor editor, final Ps }, "toString", null, myJsClass ); - @NonNls String functionText = - "public " + (needOverride[0] ? "override " : "") + "function toString():String {\nreturn " + - (needOverride[0] ? "super.toString() + \"" : "\"" + jsClass.getName()) + "{"; + StringBuilder functionText = new StringBuilder().append("public ") + .append(needOverride[0] ? "override " : "") + .append("function toString():String {\nreturn ") + .append(needOverride[0] ? "super.toString() + \"" : "\"" + jsClass.getName()) + .append("{"); final String semicolon = JSChangeUtil.getSemicolon(project); boolean first = true; for (JSVariable var : getElementsToProcess()) { if (!first) { - functionText += " + \","; + functionText.append(" + \","); } first = false; - functionText += var.getName() + "=\" + String(" + var.getName() + ")"; + functionText.append(var.getName()).append("=\" + String(").append(var.getName()).append(")"); } - functionText += "+\"}\"" + semicolon + "\n}"; - doAddOneMethod(project, functionText, anchor); + functionText.append("+\"}\"").append(semicolon).append("\n}"); + doAddOneMethod(project, functionText.toString(), anchor); } }; } @@ -224,12 +234,12 @@ public void invoke(@Nonnull final Project project, final Editor editor, final Ps return new MyBaseCreateMethodsFix( mode, jsClass, - myCreateBindableProperties != null ? myCreateBindableProperties.isSelected() : false + myCreateBindableProperties != null && myCreateBindableProperties.isSelected() ); } - @Override + @RequiredReadAction protected void collectCandidates(final JSClass clazz, final Collection candidates) { final LinkedHashMap candidatesMap = new LinkedHashMap<>(); final JSCodeStyleSettings codeStyleSettings = @@ -242,27 +252,22 @@ protected void collectCandidates(final JSClass clazz, final Collection candidates) { ImplementedMethodProcessor processor = new ImplementedMethodProcessor(clazz) { @Override + @RequiredReadAction protected void addNonimplementedFunction(final JSFunction function) { candidates.add(new JSNamedElementNode(function)); } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptOverrideMethodsHandler.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptOverrideMethodsHandler.java index 0ec89d4b..26c7d771 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptOverrideMethodsHandler.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptOverrideMethodsHandler.java @@ -25,12 +25,14 @@ import com.intellij.lang.javascript.psi.JSClass; import com.intellij.lang.javascript.psi.JSFunction; import com.intellij.lang.javascript.psi.resolve.ResolveProcessor; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.editor.generation.OverrideMethodHandler; import consulo.language.psi.PsiElement; import consulo.language.psi.resolve.ResolveState; import consulo.localize.LocalizeValue; +import jakarta.annotation.Nonnull; import java.util.Collection; import java.util.Map; @@ -49,19 +51,17 @@ protected BaseCreateMethodsFix createFix(final JSClass clazz) { } @Override + @RequiredReadAction protected void collectCandidates(final JSClass clazz, final Collection candidates) { Map _functionsToOverride = null; - final Function functionFilter = new Function() { - @Override - public Boolean apply(final JSFunction function) { - final JSAttributeList attributeList = function.getAttributeList(); + final Function functionFilter = function -> { + final JSAttributeList attributeList = function.getAttributeList(); - if (attributeList != null && (attributeList.hasModifier(JSAttributeList.ModifierType.STATIC) - || attributeList.hasModifier(JSAttributeList.ModifierType.FINAL))) { - return Boolean.FALSE; - } - return Boolean.TRUE; + if (attributeList != null && (attributeList.hasModifier(JSAttributeList.ModifierType.STATIC) + || attributeList.hasModifier(JSAttributeList.ModifierType.FINAL))) { + return Boolean.FALSE; } + return Boolean.TRUE; }; for (JSClass superClazz : clazz.getSuperClasses()) { @@ -77,20 +77,19 @@ public Boolean apply(final JSFunction function) { } @Override - public boolean execute(final PsiElement element, final ResolveState state) { - if (element instanceof JSFunction) { - final JSFunction function = (JSFunction)element; + @RequiredReadAction + public boolean execute(@Nonnull final PsiElement element, final ResolveState state) { + if (element instanceof JSFunction function) { if (function.isConstructor() || functionsToOverride == null) { return true; } final String funName = function.getName(); final Object o = functionsToOverride.get(funName); - if (o instanceof JSFunction && ((JSFunction)o).getKind() == function.getKind()) { + if (o instanceof JSFunction oFun && oFun.getKind() == function.getKind()) { functionsToOverride.remove(funName); } - else if (o instanceof JSFunction[]) { - JSFunction[] functions = (JSFunction[])o; - functionsToOverride.put(funName, functions[0].getKind() == function.getKind() ? functions[1] : functions[0]); + else if (o instanceof JSFunction[] oFuns) { + functionsToOverride.put(funName, oFuns[0].getKind() == function.getKind() ? oFuns[1] : oFuns[0]); } } return true; @@ -102,8 +101,8 @@ else if (o instanceof JSFunction[]) { if (functionsToOverride != null) { for (Map.Entry entry : functionsToOverride.entrySet()) { final Object value = entry.getValue(); - if (value instanceof JSFunction[]) { - for (JSFunction function : (JSFunction[])value) { + if (value instanceof JSFunction[] functions) { + for (JSFunction function : functions) { candidates.add(new JSNamedElementNode(function)); } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/OverrideMethodsFix.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/OverrideMethodsFix.java index bdd49eab..1d42b7f3 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/OverrideMethodsFix.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/OverrideMethodsFix.java @@ -16,21 +16,16 @@ package com.intellij.lang.javascript.impl.generation; -import org.jetbrains.annotations.NonNls; -import com.intellij.lang.javascript.psi.JSAttributeList; -import com.intellij.lang.javascript.psi.JSClass; -import com.intellij.lang.javascript.psi.JSFunction; -import com.intellij.lang.javascript.psi.JSParameter; -import com.intellij.lang.javascript.psi.JSParameterList; +import com.intellij.lang.javascript.impl.validation.BaseCreateMethodsFix; +import com.intellij.lang.javascript.psi.*; import com.intellij.lang.javascript.psi.impl.JSChangeUtil; import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; -import com.intellij.lang.javascript.impl.validation.BaseCreateMethodsFix; +import consulo.annotation.access.RequiredReadAction; import consulo.language.psi.PsiElement; /** * @author Maxim.Mossienko - * Date: Jul 17, 2008 - * Time: 9:39:02 PM + * @since 2008-07-17 */ public class OverrideMethodsFix extends BaseCreateMethodsFix { public OverrideMethodsFix(final JSClass jsClass) { @@ -38,48 +33,49 @@ public OverrideMethodsFix(final JSClass jsClass) { } @Override + @RequiredReadAction protected String buildFunctionBodyText(final String retType, final JSParameterList parameterList, final JSFunction func) { - @NonNls String functionText = ""; - functionText += "{\n"; + StringBuilder functionText = new StringBuilder(); + functionText.append("{\n"); if (!"void".equals(retType)) { - functionText += " return"; + functionText.append(" return"); } else { - functionText += " "; + functionText.append(" "); } - functionText += " super." + func.getName(); + functionText.append(" super.").append(func.getName()); if (func.isGetProperty()) { } else if (func.isSetProperty()) { - functionText += " = " + parameterList.getParameters()[0].getName(); + functionText.append(" = ").append(parameterList.getParameters()[0].getName()); } else { - functionText += "("; + functionText.append("("); boolean first = true; for (JSParameter param : parameterList.getParameters()) { if (!first) { - functionText += ","; + functionText.append(","); } first = false; - functionText += param.getName(); + functionText.append(param.getName()); } - functionText += ")"; + functionText.append(")"); } - functionText += JSChangeUtil.getSemicolon(func.getProject()) + "\n}"; - return functionText; + functionText.append(JSChangeUtil.getSemicolon(func.getProject())).append("\n}"); + return functionText.toString(); } @Override + @RequiredReadAction protected String buildFunctionAttrText(String attrText, final JSAttributeList attributeList, final JSFunction function) { attrText = super.buildFunctionAttrText(attrText, attributeList, function); final PsiElement element = JSResolveUtil.findParent(function); if (attributeList == null || !attributeList.hasModifier(JSAttributeList.ModifierType.OVERRIDE)) { - - if (element instanceof JSClass && !"Object".equals(((JSClass)element).getQualifiedName())) { + if (element instanceof JSClass jsClass && !"Object".equals(jsClass.getQualifiedName())) { final PsiElement typeElement = attributeList != null ? attributeList.findAccessTypeElement() : null; if (typeElement == null) { attrText += " override"; diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/BaseCreateMethodsFix.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/BaseCreateMethodsFix.java index d4076a1a..c748e778 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/BaseCreateMethodsFix.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/BaseCreateMethodsFix.java @@ -24,8 +24,10 @@ import java.util.List; import java.util.Set; +import consulo.annotation.access.RequiredReadAction; import consulo.language.ast.ASTNode; import consulo.language.util.IncorrectOperationException; +import consulo.util.lang.StringUtil; import org.jetbrains.annotations.NonNls; import jakarta.annotation.Nonnull; @@ -51,8 +53,7 @@ /** * @author Maxim.Mossienko - * Date: Jul 17, 2008 - * Time: 9:39:02 PM + * @since 2008-07-17 */ public abstract class BaseCreateMethodsFix { private final Set elementsToProcess = new LinkedHashSet<>(); @@ -70,14 +71,14 @@ public void invoke(@Nonnull final Project project, final Editor editor, final Ps } } + @RequiredReadAction protected void evalAnchor(final Editor editor, final PsiFile file) { anchor = null; final PsiElement at = file.findElementAt(editor.getCaretModel().getOffset()); - PsiElement parent; + PsiElement parent = at != null ? at.getParent() : null; - if (at != null && ((parent = at.getParent()) == myJsClass || (parent instanceof JSFile && myJsClass.getParent() - .getContainingFile() == parent - .getContext().getContainingFile()))) { + if (parent == myJsClass || (parent instanceof JSFile + && myJsClass.getParent().getContainingFile() == parent.getContext().getContainingFile())) { final ASTNode atNode = at.getNode(); if (atNode.getElementType() == JSTokenTypes.RBRACE) { return; @@ -92,9 +93,10 @@ protected void evalAnchor(final Editor editor, final PsiFile file) { } } + @RequiredReadAction protected PsiElement doAddOneMethod(final Project project, final String functionText, PsiElement anchor) throws IncorrectOperationException { - if (functionText != null && functionText.length() > 0) { + if (StringUtil.isNotEmpty(functionText)) { PsiElement element = JSChangeUtil.createJSTreeFromText(project, functionText).getPsi(); if (element instanceof PsiWhiteSpace) { element = element.getNextSibling(); @@ -103,10 +105,9 @@ protected PsiElement doAddOneMethod(final Project project, final String function boolean defaultAdd = true; if (anchor != null && anchor.isValid()) { - String anchorText; + String anchorText = anchor instanceof PsiWhiteSpace ? anchor.getText() : ""; - if (!(anchor instanceof PsiWhiteSpace) - || ((anchorText = anchor.getText()).indexOf("") == -1)) { + if (!anchorText.contains("")) { defaultAdd = false; anchor = anchor.getParent().addAfter(element, anchor); } @@ -120,33 +121,34 @@ protected PsiElement doAddOneMethod(final Project project, final String function return anchor; } + @RequiredReadAction public String buildFunctionText(final T fun) { final JSAttributeList attributeList = fun.getAttributeList(); String attrText = attributeList != null ? attributeList.getText() : ""; attrText = buildFunctionAttrText(attrText, attributeList, fun); - final JSFunction function = fun instanceof JSFunction ? (JSFunction)fun : null; - final JSVariable var = fun instanceof JSVariable ? (JSVariable)fun : null; + final JSFunction function = fun instanceof JSFunction jsFun ? jsFun : null; + final JSVariable var = fun instanceof JSVariable jsVar ? jsVar : null; assert var != null || function != null; final JSParameterList parameterList = (function != null) ? function.getParameterList() : null; final String typeString = importType(function != null ? function.getReturnTypeString() : var.getTypeString(), fun); - @NonNls String functionText = attrText; - if (functionText.length() > 0) { - functionText += " "; + StringBuilder functionText = new StringBuilder(attrText); + if (!functionText.isEmpty()) { + functionText.append(" "); } - functionText += "function "; + functionText.append("function "); - functionText += buildFunctionKind(fun); + functionText.append(buildFunctionKind(fun)); - functionText += buildName(fun) + " " + buildParameterList(parameterList, fun); + functionText.append(buildName(fun)).append(" ").append(buildParameterList(parameterList, fun)); if (typeString != null) { - functionText += ":" + buildReturnType(typeString); + functionText.append(":").append(buildReturnType(typeString)); } - functionText += buildFunctionBodyText(typeString, parameterList, fun); - return functionText; + functionText.append(buildFunctionBodyText(typeString, parameterList, fun)); + return functionText.toString(); } protected @@ -169,6 +171,7 @@ protected String importType(final String s, T fun) { return s; } + @RequiredReadAction protected String buildParameterList(final JSParameterList parameterList, final T fun) { if (parameterList != null) { for (JSParameter param : parameterList.getParameters()) { @@ -181,15 +184,14 @@ protected String buildParameterList(final JSParameterList parameterList, final T return (parameterList != null ? parameterList.getText() : "()"); } + @RequiredReadAction protected String buildName(final T fun) { return fun.getName(); } - protected - @NonNls - String buildFunctionKind(final T fun) { - if (fun instanceof JSFunction) { - final JSFunction function = (JSFunction)fun; + @RequiredReadAction + protected String buildFunctionKind(final T fun) { + if (fun instanceof JSFunction function) { if (function.isGetProperty()) { return "get "; } @@ -200,29 +202,26 @@ else if (function.isSetProperty()) { return ""; } - protected - @NonNls - String buildFunctionBodyText(@NonNls String retType, final JSParameterList parameterList, final T func) { + protected String buildFunctionBodyText(String retType, final JSParameterList parameterList, final T func) { return " {}"; } - protected - @NonNls - String buildFunctionAttrText(@NonNls String attrText, final JSAttributeList attributeList, final T function) { - attrText = attrText.replace("native", "").trim(); - return attrText; + protected String buildFunctionAttrText(String attrText, final JSAttributeList attributeList, final T function) { + return attrText.replace("native", "").trim(); } public void addElementToProcess(final T function) { elementsToProcess.add(function); } + @SuppressWarnings("unchecked") public void addElementsToProcessFrom(final Collection selectedElements) { for (JSNamedElementNode el : selectedElements) { addElementToProcess((T)el.getPsiElement()); } } + @SuppressWarnings("unchecked") public Set getElementsToProcess() { final T[] objects = (T[])elementsToProcess.toArray(new JSNamedElement[elementsToProcess.size()]); final Comparator tComparator = (o1, o2) -> o1.getTextOffset() - o2.getTextOffset(); diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/ImplementMethodsFix.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/ImplementMethodsFix.java index cce7e54e..ffaaf52d 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/ImplementMethodsFix.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/ImplementMethodsFix.java @@ -31,8 +31,7 @@ /** * @author Maxim.Mossienko - * Date: Jul 17, 2008 - * Time: 9:39:02 PM + * @since 2008-07-17 */ public class ImplementMethodsFix extends BaseCreateMethodsFix implements SyntheticIntentionAction { public ImplementMethodsFix(final JSClass jsClass) { @@ -51,36 +50,27 @@ public boolean isAvailable(@Nonnull final Project project, final Editor editor, } @Override - protected - @NonNls - String buildFunctionAttrText(@NonNls String attrText, final JSAttributeList attributeList, final JSFunction function) { - attrText = super.buildFunctionAttrText(attrText, attributeList, function); - if (attributeList == null || attributeList.getAccessType() != JSAttributeList.AccessType.PUBLIC) { - attrText = "public"; - } - return attrText; + protected String buildFunctionAttrText(String attrText, final JSAttributeList attributeList, final JSFunction function) { + return attributeList == null || attributeList.getAccessType() != JSAttributeList.AccessType.PUBLIC + ? "public" + : super.buildFunctionAttrText(attrText, attributeList, function); } @Override protected String buildFunctionBodyText(final String retType, final JSParameterList parameterList, final JSFunction func) { - @NonNls String s = "{\n"; + StringBuilder s = new StringBuilder("{\n"); if (retType != null && !"void".equals(retType)) { - s += "return " + defaultValueOfType(retType) + JSChangeUtil.getSemicolon(func.getProject()) + "\n"; + s.append("return ").append(defaultValueOfType(retType)).append(JSChangeUtil.getSemicolon(func.getProject())).append("\n"); } - s += "}"; - return s; + return s.append("}").toString(); } - private static - @NonNls - String defaultValueOfType(final @NonNls String retType) { - if ("int".equals(retType) || "uint".equals(retType) || "Number".equals(retType)) { - return "0"; - } - if ("Boolean".equals(retType)) { - return "false"; - } - return "null"; + private static String defaultValueOfType(final String retType) { + return switch (retType) { + case "int", "uint", "Number" -> "0"; + case "Boolean" -> "false"; + default -> "null"; + }; } @Override diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/ImplementedMethodProcessor.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/ImplementedMethodProcessor.java index bb6238d9..75963498 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/ImplementedMethodProcessor.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/ImplementedMethodProcessor.java @@ -22,6 +22,7 @@ import com.intellij.lang.javascript.psi.JSVariable; import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; import com.intellij.lang.javascript.psi.resolve.ResolveProcessor; +import consulo.annotation.access.RequiredReadAction; import consulo.language.psi.PsiElement; import consulo.language.psi.resolve.ResolveState; import jakarta.annotation.Nullable; @@ -32,8 +33,7 @@ /** * @author Maxim.Mossienko - * Date: Jul 17, 2008 - * Time: 9:50:49 PM + * @since 2008-07-17 */ public abstract class ImplementedMethodProcessor extends JSResolveUtil.CollectMethodsToImplementProcessor { protected final JSClass myJsClass; @@ -48,10 +48,9 @@ protected boolean process(final ResolveProcessor processor) { Map functions = null; for (PsiElement _function : processor.getResults()) { - if (!(_function instanceof JSFunction)) { + if (!(_function instanceof JSFunction function)) { continue; } - final JSFunction function = (JSFunction)_function; final String name = function.getName(); if (functions == null) { @@ -94,75 +93,75 @@ protected boolean process(final ResolveProcessor processor) { protected void addImplementedFunction(final JSFunction interfaceFunction, final JSFunction implementationFunction) { } + @RequiredReadAction public static JSFunction findFunctionWithTheSameKind( final Map functions, final JSFunction function, final String name ) { Object o = functions.get(name); - if (o instanceof JSFunction && ((JSFunction)o).getKind() != function.getKind()) { - o = null; + if (o instanceof JSFunction fun) { + return fun.getKind() == function.getKind() ? fun : null; } - else if (o instanceof JSFunction[]) { - final JSFunction[] jsFunctions = (JSFunction[])o; - o = null; + else if (o instanceof JSFunction[] jsFunctions) { for (JSFunction fun : jsFunctions) { if (fun.getKind() == function.getKind()) { - o = fun; - break; + return fun; } } } - return (JSFunction)o; + return null; } public static Map collectAllVisibleClassFunctions( - JSClass jsClass, Map _functions, + JSClass jsClass, + Map _functions, final @Nullable Function filter ) { final Map functions = _functions != null ? _functions : new LinkedHashMap<>(); - jsClass.processDeclarations(new ResolveProcessor(null) { - { - setToProcessHierarchy(true); - setLocalResolve(true); - } + jsClass.processDeclarations( + new ResolveProcessor(null) { + { + setToProcessHierarchy(true); + setLocalResolve(true); + } - @Override - public boolean execute(final PsiElement element, final ResolveState state) { - if (element instanceof JSFunction) { - final JSFunction function = (JSFunction)element; - if (function.isConstructor()) { - return true; // SWC stubs have constructor methods :( - } + @Override + @RequiredReadAction + public boolean execute(final PsiElement element, final ResolveState state) { + if (element instanceof JSFunction function) { + if (function.isConstructor()) { + return true; // SWC stubs have constructor methods :( + } - final JSAttributeList attributeList = function.getAttributeList(); - if (attributeList != null && attributeList.getAccessType() == JSAttributeList.AccessType.PRIVATE) { - return true; - } + final JSAttributeList attributeList = function.getAttributeList(); + if (attributeList != null && attributeList.getAccessType() == JSAttributeList.AccessType.PRIVATE) { + return true; + } - Boolean filterValue; - if (filter != null && (filterValue = filter.apply(function)) != null && !filterValue.booleanValue()) { - return true; - } - final String s = function.getName(); - final Object function1 = functions.get(s); + Boolean filterValue = filter != null ? filter.apply(function) : null; + if (filterValue != null && !filterValue) { + return true; + } + final String s = function.getName(); + final Object function1 = functions.get(s); - if (function1 == null) { - functions.put(s, function); - } - else if (function1 instanceof JSFunction) { - final JSFunction function2 = (JSFunction)function1; - if (findFunctionWithTheSameKind(functions, function, s) == null) { - functions.put(s, new JSFunction[]{ - function2, - function - }); + if (function1 == null) { + functions.put(s, function); + } + else if (function1 instanceof JSFunction function2) { + if (findFunctionWithTheSameKind(functions, function, s) == null) { + functions.put(s, new JSFunction[]{function2, function}); + } } } + return true; } - return true; - } - }, ResolveState.initial(), jsClass, jsClass); + }, + ResolveState.initial(), + jsClass, + jsClass + ); return functions; } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatingVisitor.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatingVisitor.java index 5131091a..d4364824 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatingVisitor.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatingVisitor.java @@ -50,12 +50,11 @@ import consulo.localize.LocalizeValue; import consulo.module.content.ProjectRootManager; import consulo.project.Project; +import consulo.ui.annotation.RequiredUIAccess; import consulo.util.lang.ref.Ref; import consulo.virtualFileSystem.VirtualFile; import consulo.xml.psi.xml.XmlAttributeValue; import consulo.xml.psi.xml.XmlTagChild; -import org.jetbrains.annotations.NonNls; - import jakarta.annotation.Nonnull; import java.util.*; @@ -67,23 +66,26 @@ public class JSAnnotatingVisitor extends JSElementVisitor implements Annotator { private AnnotationHolder myHolder; @Override - public synchronized void annotate(PsiElement psiElement, AnnotationHolder holder) { + public synchronized void annotate(PsiElement psiElement, @Nonnull AnnotationHolder holder) { myHolder = holder; psiElement.accept(this); myHolder = null; } @Override + @RequiredReadAction public void visitJSAttributeNameValuePair(final JSAttributeNameValuePair attributeNameValuePair) { checkReferences(attributeNameValuePair, HighlightSeverity.ERROR); } @Override + @RequiredReadAction public void visitJSIncludeDirective(final JSIncludeDirective includeDirective) { checkReferences(includeDirective, HighlightSeverity.ERROR); } @Override + @RequiredReadAction public void visitJSLiteralExpression(JSSimpleLiteralExpression node) { checkReferences(node, HighlightSeverity.ERROR); } @@ -115,33 +117,38 @@ private void checkReferences(final PsiElement includeDirective, HighlightSeverit } } + @RequiredReadAction private boolean hasBadResolve(final PsiReference ref) { - if (ref instanceof PsiPolyVariantReference psiPolyVariantReference) { - return psiPolyVariantReference.multiResolve(false).length == 0; - } - return ref.resolve() == null; + return ref instanceof PsiPolyVariantReference psiPolyVariantReference + ? psiPolyVariantReference.multiResolve(false).length == 0 + : ref.resolve() == null; } @Override + @RequiredReadAction public void visitJSCallExpression(final JSCallExpression node) { final JSExpression methodExpression = node.getMethodExpression(); if (methodExpression instanceof JSLiteralExpression) { - myHolder.createErrorAnnotation(methodExpression, JavaScriptLocalize.javascriptParserMessageExpectedFunctionName().get()); + myHolder.newAnnotation(HighlightSeverity.ERROR, JavaScriptLocalize.javascriptParserMessageExpectedFunctionName()) + .range(methodExpression); } } @Override + @RequiredReadAction public void visitJSDocTagValue(final JSDocTagValue tagValue) { checkReferences(tagValue, HighlightSeverity.WARNING); } @Override + @RequiredReadAction public void visitJSDocTag(final JSDocTag tagValue) { checkReferences(tagValue, HighlightSeverity.WARNING); } @Override + @RequiredReadAction public void visitJSReferenceList(final JSReferenceList referenceList) { final JSClass jsClass = (JSClass)referenceList.getParent(); if (JSResolveUtil.isArtificialClassUsedForReferenceList(jsClass)) { @@ -152,14 +159,15 @@ public void visitJSReferenceList(final JSReferenceList referenceList) { final boolean withinImplements = jsClass.getImplementsList() == referenceList; if (withinImplements && jsClass.isInterface()) { - myHolder.createErrorAnnotation( - referenceList, - JavaScriptLocalize.javascriptValidationMessageImplementsForInterfaceNotAllowed().get() - ); + myHolder.newAnnotation( + HighlightSeverity.ERROR, + JavaScriptLocalize.javascriptValidationMessageImplementsForInterfaceNotAllowed() + ) + .range(referenceList); return; } - final Map nameToExprMap = new HashMap(); + final Map nameToExprMap = new HashMap<>(); final JSReferenceExpression[] referenceExpressions = referenceList.getExpressions(); if (referenceExpressions != null) { @@ -172,23 +180,26 @@ public void visitJSReferenceList(final JSReferenceList referenceList) { } for (JSClass clazz : referenceList.getReferencedClasses()) { - final boolean b = clazz.isInterface(); + final boolean isInterface = clazz.isInterface(); final JSReferenceExpression expr = nameToExprMap.get(clazz.getName()); - if (!b && withinImplements) { - myHolder.createErrorAnnotation(expr, JavaScriptLocalize.javascriptValidationMessageInterfaceNameExpectedHere().get()); + if (!isInterface && withinImplements) { + myHolder.newAnnotation(HighlightSeverity.ERROR, JavaScriptLocalize.javascriptValidationMessageInterfaceNameExpectedHere()) + .range(expr); } - else if (withinExtends && b != jsClass.isInterface()) { - myHolder.createErrorAnnotation( - expr, - !b - ? JavaScriptLocalize.javascriptValidationMessageInterfaceNameExpectedHere().get() - : JavaScriptLocalize.javascriptValidationMessageClassNameExpectedHere().get() - ); + else if (withinExtends && isInterface != jsClass.isInterface()) { + myHolder.newAnnotation( + HighlightSeverity.ERROR, + isInterface + ? JavaScriptLocalize.javascriptValidationMessageClassNameExpectedHere() + : JavaScriptLocalize.javascriptValidationMessageInterfaceNameExpectedHere() + ) + .range(expr); } if (clazz == jsClass) { - myHolder.createErrorAnnotation(expr, JavaScriptLocalize.javascriptValidationMessageCircularDependency().get()) - .registerFix(new RemoveASTNodeFix(referenceList.getNode(), JavaScriptLocalize.javascriptFixRemoveCircularDependency())); + myHolder.newAnnotation(HighlightSeverity.ERROR, JavaScriptLocalize.javascriptValidationMessageCircularDependency()) + .range(expr) + .withFix(new RemoveASTNodeFix(referenceList.getNode(), JavaScriptLocalize.javascriptFixRemoveCircularDependency())); } } @@ -198,14 +209,7 @@ else if (withinExtends && b != jsClass.isInterface()) { } public interface ErrorReportingClient { - enum ProblemKind { - ERROR, - WARNING - } - - void reportError(final ASTNode nameIdentifier, final String s, ProblemKind kind, final IntentionAction implementMethodsFix); - - void reportError(final PsiElement nameIdentifier, final String s, ProblemKind kind, final IntentionAction implementMethodsFix); + AnnotationBuilder newAnnotation(@Nonnull HighlightSeverity severity, @Nonnull LocalizeValue message); } public static void checkImplementedMethods(final JSClass jsClass, final ErrorReportingClient reportingClient) { @@ -213,6 +217,7 @@ public static void checkImplementedMethods(final JSClass jsClass, final ErrorRep ImplementMethodsFix implementMethodsFix = null; @Override + @RequiredReadAction protected void addNonimplementedFunction(final JSFunction function) { final PsiElement node = myJsClass.getNameIdentifier(); if (node == null) { @@ -222,29 +227,27 @@ protected void addNonimplementedFunction(final JSFunction function) { implementMethodsFix = new ImplementMethodsFix(myJsClass); } implementMethodsFix.addElementToProcess(function); - reportingClient.reportError( - node, - JavaScriptLocalize.javascriptValidationMessageInterfaceMethodNotImplemented( - function.getName(), - ((JSClass)JSResolveUtil.findParent(function)).getQualifiedName() - ).get(), - ErrorReportingClient.ProblemKind.ERROR, - implementMethodsFix - ); + reportingClient.newAnnotation( + HighlightSeverity.ERROR, + JavaScriptLocalize.javascriptValidationMessageInterfaceMethodNotImplemented( + function.getName(), + ((JSClass)JSResolveUtil.findParent(function)).getQualifiedName() + ) + ) + .range(node) + .withFix(implementMethodsFix); } @Override + @RequiredReadAction protected void addImplementedFunction(final JSFunction interfaceFunction, final JSFunction implementationFunction) { final JSAttributeList attributeList = implementationFunction.getAttributeList(); if (attributeList == null || attributeList.getAccessType() != JSAttributeList.AccessType.PUBLIC) { final ASTNode node = findElementForAccessModifierError(implementationFunction, attributeList); - reportingClient.reportError( - node, - JavaScriptLocalize.javascriptValidationMessageInterfaceMethodInvalidAccessModifier().get(), - ErrorReportingClient.ProblemKind.ERROR, - null - // TODO: quickfix - ); + reportingClient.newAnnotation( + HighlightSeverity.ERROR, + JavaScriptLocalize.javascriptValidationMessageInterfaceMethodInvalidAccessModifier() + ).range(node); // TODO: quickfix } final SignatureMatchResult incompatibleSignature = checkCompatibleSignature(implementationFunction, interfaceFunction); @@ -264,28 +267,26 @@ protected void addImplementedFunction(final JSFunction interfaceFunction, final if (incompatibleSignature == SignatureMatchResult.PARAMETERS_DIFFERS) { final JSParameterList parameterList = implementationFunction.getParameterList(); final JSParameterList expectedParameterList = interfaceFunction.getParameterList(); - reportingClient.reportError( - parameterList.getNode(), + reportingClient.newAnnotation( + HighlightSeverity.ERROR, JavaScriptLocalize.javascriptValidationMessageInterfaceMethodInvalidSignature( expectedParameterList != null ? expectedParameterList.getText() : "()" - ).get(), - ErrorReportingClient.ProblemKind.ERROR, - null - ); // TODO: quickfix + ) + ).range(parameterList.getNode()); // TODO: quickfix } else if (incompatibleSignature == SignatureMatchResult.RETURN_TYPE_DIFFERS) { PsiElement implementationReturnTypeExpr = implementationFunction.getReturnTypeElement(); PsiElement interfaceReturnTypeExpr = interfaceFunction.getReturnTypeElement(); - reportingClient.reportError( - implementationReturnTypeExpr != null - ? implementationReturnTypeExpr - : implementationFunction.getNameIdentifier(), + reportingClient.newAnnotation( + HighlightSeverity.ERROR, JavaScriptLocalize.javascriptValidationMessageInterfaceMethodInvalidSignature2( interfaceReturnTypeExpr != null ? interfaceReturnTypeExpr.getText() : "*" - ).get(), - ErrorReportingClient.ProblemKind.ERROR, - null - ); // TODO: quickfix + ) + ).range( + implementationReturnTypeExpr != null + ? implementationReturnTypeExpr + : implementationFunction.getNameIdentifier() + ); // TODO: quickfix } } } @@ -305,6 +306,7 @@ private static ASTNode findElementForAccessModifierError(final @Nonnull JSFuncti } @Override + @RequiredReadAction public void visitJSAttributeList(JSAttributeList attributeList) { PsiElement parentForCheckingNsOrAccessModifier = null; @@ -316,20 +318,22 @@ public void visitJSAttributeList(JSAttributeList attributeList) { namespaceOrAccessModifierElement = accessTypeElement; } else if (accessTypeElement != null) { - myHolder.createErrorAnnotation( - namespaceOrAccessModifierElement, - JavaScriptLocalize.javascriptValidationMessageUseNamespaceReferenceOrAccessModifier().get() + myHolder.newAnnotation( + HighlightSeverity.ERROR, + JavaScriptLocalize.javascriptValidationMessageUseNamespaceReferenceOrAccessModifier() ) - .registerFix(new RemoveASTNodeFix( + .range(namespaceOrAccessModifierElement) + .withFix(new RemoveASTNodeFix( namespaceOrAccessModifierElement.getNode(), JavaScriptLocalize.javascriptFixRemoveNamespaceReference() )); - myHolder.createErrorAnnotation( - accessTypeElement, - JavaScriptLocalize.javascriptValidationMessageUseNamespaceReferenceOrAccessModifier().get() + myHolder.newAnnotation( + HighlightSeverity.ERROR, + JavaScriptLocalize.javascriptValidationMessageUseNamespaceReferenceOrAccessModifier() ) - .registerFix(new RemoveASTNodeFix(accessTypeElement.getNode(), JavaScriptLocalize.javascriptFixRemoveNamespaceReference())); + .range(accessTypeElement) + .withFix(new RemoveASTNodeFix(accessTypeElement.getNode(), JavaScriptLocalize.javascriptFixRemoveNamespaceReference())); } if (namespaceOrAccessModifierElement != null) { @@ -344,15 +348,16 @@ else if (accessTypeElement != null) { || (!"public".equals(typeElementText = namespaceOrAccessModifierElement.getText())) && !"internal".equals(typeElementText))) { boolean nsRef = namespaceOrAccessModifierElement instanceof JSReferenceExpression; - myHolder.createErrorAnnotation( - namespaceOrAccessModifierElement, + myHolder.newAnnotation( + HighlightSeverity.ERROR, nodeUnderPackage ? - JavaScriptLocalize.javascriptValidationMessageAccessModifierAllowedOnlyForPackageMembers().get() + JavaScriptLocalize.javascriptValidationMessageAccessModifierAllowedOnlyForPackageMembers() : nsRef - ? JavaScriptLocalize.javascriptValidationMessageNamespaceAllowedOnlyForClassMembers().get() - : JavaScriptLocalize.javascriptValidationMessageAccessModifierAllowedOnlyForClassMembers().get() + ? JavaScriptLocalize.javascriptValidationMessageNamespaceAllowedOnlyForClassMembers() + : JavaScriptLocalize.javascriptValidationMessageAccessModifierAllowedOnlyForClassMembers() ) - .registerFix(new RemoveASTNodeFix( + .range(namespaceOrAccessModifierElement) + .withFix(new RemoveASTNodeFix( namespaceOrAccessModifierElement.getNode(), nsRef ? JavaScriptLocalize.javascriptFixRemoveNamespaceReference() @@ -365,18 +370,19 @@ else if (((JSClass)parentForCheckingNsOrAccessModifier).isInterface()) { || attributeList.getNode().findChildByType(JSTokenTypes.INTERNAL_KEYWORD) != null ) { final ASTNode astNode = attributeList.getNode().findChildByType(JSTokenTypes.ACCESS_MODIFIERS); - final Annotation annotation = myHolder.createErrorAnnotation( - astNode, - JavaScriptLocalize.javascriptValidationMessageInterfaceMembersCannotHaveAccessModifiers().get() - ); - - annotation.registerFix(new RemoveASTNodeFix(astNode, JavaScriptLocalize.javascriptFixRemoveAccessModifier())); + myHolder.newAnnotation( + HighlightSeverity.ERROR, + JavaScriptLocalize.javascriptValidationMessageInterfaceMembersCannotHaveAccessModifiers() + ) + .range(astNode) + .withFix(new RemoveASTNodeFix(astNode, JavaScriptLocalize.javascriptFixRemoveAccessModifier())); } } } } @Override + @RequiredReadAction public void visitJSReferenceExpression(final JSReferenceExpression node) { final PsiElement parent = node.getParent(); @@ -409,19 +415,21 @@ else if (function.isSetProperty()) { if (typeString != null && !"void".equals(typeString)) { // TODO: fix! - myHolder.createErrorAnnotation( - function.getReturnTypeElement(), - JavaScriptLocalize.javascriptValidationMessageSetMethodShouldBeVoidOrWithoutType().get() - ); + myHolder.newAnnotation( + HighlightSeverity.ERROR, + JavaScriptLocalize.javascriptValidationMessageSetMethodShouldBeVoidOrWithoutType() + ) + .range(function.getReturnTypeElement()); } JSParameterList parameterList = function.getParameterList(); if (parameterList != null && parameterList.getParameters().length != 1) { // TODO: fix! - myHolder.createErrorAnnotation( - parameterList, - JavaScriptLocalize.javascriptValidationMessageSetMethodShouldHaveOneParameter().get() - ); + myHolder.newAnnotation( + HighlightSeverity.ERROR, + JavaScriptLocalize.javascriptValidationMessageSetMethodShouldHaveOneParameter() + ) + .range(parameterList); } } else if (function.isGetProperty()) { @@ -429,20 +437,23 @@ else if (function.isGetProperty()) { if (typeString == null || "void".equals(typeString)) { // TODO: fix! - myHolder.createErrorAnnotation( - typeString != null ? function.getReturnTypeElement() : nameIdentifier, - JavaScriptLocalize - .javascriptValidationMessageGetMethodShouldBeValidType(typeString != null ? typeString : "empty").get() - ); + myHolder.newAnnotation( + HighlightSeverity.ERROR, + JavaScriptLocalize.javascriptValidationMessageGetMethodShouldBeValidType( + typeString != null ? typeString : "empty" + ) + ) + .range(typeString != null ? function.getReturnTypeElement() : nameIdentifier); } JSParameterList parameterList = function.getParameterList(); if (parameterList != null && parameterList.getParameters().length != 0) { // TODO: fix! - myHolder.createErrorAnnotation( - parameterList, - JavaScriptLocalize.javascriptValidationMessageGetMethodShouldHaveNoParameter().get() - ); + myHolder.newAnnotation( + HighlightSeverity.ERROR, + JavaScriptLocalize.javascriptValidationMessageGetMethodShouldHaveNoParameter() + ) + .range(parameterList); } } } @@ -455,10 +466,11 @@ else if (function.isGetProperty()) { PsiElement clazzParent = jsClass.getParent(); if (!(clazzParent instanceof JSPackageStatement || clazzParent instanceof JSFile)) { - myHolder.createErrorAnnotation( - node, - JavaScriptLocalize.javascriptValidationMessageNestedClassesAreNotAllowed().get() - ); + myHolder.newAnnotation( + HighlightSeverity.ERROR, + JavaScriptLocalize.javascriptValidationMessageNestedClassesAreNotAllowed() + ) + .range(node); } } } @@ -467,17 +479,19 @@ else if (function.isGetProperty()) { if (node.getQualifier() == null && !(parent instanceof JSCallExpression) && "arguments".equals(node.getText())) { JSFunction fun = PsiTreeUtil.getParentOfType(node, JSFunction.class); if (fun == null) { - myHolder.createErrorAnnotation(node, JavaScriptLocalize.javascriptValidationMessageArgumentsOutOfFunction().get()); + myHolder.newAnnotation(HighlightSeverity.ERROR, JavaScriptLocalize.javascriptValidationMessageArgumentsOutOfFunction()) + .range(node); } else { JSParameterList parameterList = fun.getParameterList(); if (parameterList != null) { for (JSParameter p : parameterList.getParameters()) { if (p.isRest()) { - myHolder.createErrorAnnotation( - node, - JavaScriptLocalize.javascriptValidationMessageArgumentsWithRestParameter().get() - ); + myHolder.newAnnotation( + HighlightSeverity.ERROR, + JavaScriptLocalize.javascriptValidationMessageArgumentsWithRestParameter() + ) + .range(node); } } } @@ -485,31 +499,28 @@ else if (function.isGetProperty()) { } } + @RequiredReadAction private void checkMissedSuperCall(JSReferenceExpression node, JSFunction constructor, JSClass jsClass) { if (jsClass.isInterface()) { return; } JSFunction nontrivialSuperClassConstructor = getNontrivialSuperClassConstructor(jsClass); - if (nontrivialSuperClassConstructor != null) { - Annotation annotation = null; - - if (!hasSuperConstructorCall(constructor)) { - annotation = - myHolder.createErrorAnnotation(node, JavaScriptLocalize.javascriptValidationMessageMissedSuperConstructorCall().get()); - } - - if (annotation != null) { - if (constructor == null) { - annotation.registerFix(new AddConstructorAndSuperInvokationFix(node, nontrivialSuperClassConstructor)); - } - else { - annotation.registerFix(new AddSuperInvokationFix(node, nontrivialSuperClassConstructor)); - } - } + if (nontrivialSuperClassConstructor != null && !hasSuperConstructorCall(constructor)) { + myHolder.newAnnotation( + HighlightSeverity.ERROR, + JavaScriptLocalize.javascriptValidationMessageMissedSuperConstructorCall() + ) + .range(node) + .withFix( + constructor == null + ? new AddConstructorAndSuperInvokationFix(node, nontrivialSuperClassConstructor) + : new AddSuperInvokationFix(node, nontrivialSuperClassConstructor) + ); } } + @RequiredReadAction private boolean hasSuperConstructorCall(JSFunction jsFunction) { if (jsFunction == null) { return false; @@ -528,6 +539,7 @@ private boolean hasSuperConstructorCall(JSFunction jsFunction) { return false; } + @RequiredReadAction public static JSFunction getNontrivialSuperClassConstructor(JSClass clazz) { final JSClass[] classes = clazz.getSuperClasses(); @@ -551,6 +563,7 @@ public static JSFunction getNontrivialSuperClassConstructor(JSClass clazz) { } @Override + @RequiredReadAction public void visitJSParameterList(JSParameterList node) { boolean foundRest = false; boolean initializerPresent = false; @@ -563,18 +576,20 @@ public void visitJSParameterList(JSParameterList node) { initializerPresent = true; } else if (!hasInitializer && initializerPresent && !parameter.isRest()) { - myHolder.createErrorAnnotation( - parameter, - JavaScriptLocalize.javascriptValidationMessageParameterShouldBeInitialized().get() + myHolder.newAnnotation( + HighlightSeverity.ERROR, + JavaScriptLocalize.javascriptValidationMessageParameterShouldBeInitialized() ) - .registerFix(new RemoveASTNodeFix(parameter.getNode(), JavaScriptLocalize.javascriptFixRemoveParameter())); + .range(parameter) + .withFix(new RemoveASTNodeFix(parameter.getNode(), JavaScriptLocalize.javascriptFixRemoveParameter())); } else if (hasInitializer && parameter.isRest()) { - myHolder.createErrorAnnotation( - parameter, - JavaScriptLocalize.javascriptValidationMessageRestParameterShouldNotBeInitialized().get() + myHolder.newAnnotation( + HighlightSeverity.ERROR, + JavaScriptLocalize.javascriptValidationMessageRestParameterShouldNotBeInitialized() ) - .registerFix(new RemoveASTNodeFix( + .range(parameter) + .withFix(new RemoveASTNodeFix( JavaScriptLocalize.javascriptFixRemoveInitializer(), getNodesBefore(initializer, JSTokenTypes.EQ) )); @@ -584,26 +599,29 @@ else if (hasInitializer && parameter.isRest()) { foundRest = true; PsiElement typeElement = parameter.getTypeElement(); if (typeElement != null && !"Array".equals(typeElement.getText())) { - myHolder.createErrorAnnotation( - typeElement, - JavaScriptLocalize.javascriptValidationMessageUnexpectedTypeForRestParameter().get() + myHolder.newAnnotation( + HighlightSeverity.ERROR, + JavaScriptLocalize.javascriptValidationMessageUnexpectedTypeForRestParameter() ) - .registerFix(new RemoveASTNodeFix( + .range(typeElement) + .withFix(new RemoveASTNodeFix( JavaScriptLocalize.javascriptFixRemoveTypeReference(), getNodesBefore(typeElement, JSTokenTypes.COLON) )); } } else if (foundRest) { - myHolder.createErrorAnnotation( - parameter, - JavaScriptLocalize.javascriptValidationMessageParameterIsNotAllowedAfterRestParameter().get() + myHolder.newAnnotation( + HighlightSeverity.ERROR, + JavaScriptLocalize.javascriptValidationMessageParameterIsNotAllowedAfterRestParameter() ) - .registerFix(new RemoveASTNodeFix(parameter.getNode(), JavaScriptLocalize.javascriptFixRemoveParameter())); + .range(parameter) + .withFix(new RemoveASTNodeFix(parameter.getNode(), JavaScriptLocalize.javascriptFixRemoveParameter())); } } } + @RequiredReadAction private static ASTNode[] getNodesBefore(PsiElement initializer, IElementType eq) { List nodes = new ArrayList<>(); PsiElement element = initializer.getPrevSibling(); @@ -623,13 +641,15 @@ private static ASTNode[] getNodesBefore(PsiElement initializer, IElementType eq) } @Override + @RequiredReadAction public void visitJSPackageStatement(final JSPackageStatement packageStatement) { for (PsiElement el = packageStatement.getPrevSibling(); el != null; el = el.getPrevSibling()) { if (!(el instanceof PsiWhiteSpace || el instanceof PsiComment)) { - myHolder.createErrorAnnotation( - packageStatement.getFirstChild().getNode(), - JavaScriptLocalize.javascriptValidationMessagePackageShouldbeFirstStatement().get() - ); + myHolder.newAnnotation( + HighlightSeverity.ERROR, + JavaScriptLocalize.javascriptValidationMessagePackageShouldbeFirstStatement() + ) + .range(packageStatement.getFirstChild().getNode()); break; } } @@ -640,6 +660,7 @@ public void visitJSPackageStatement(final JSPackageStatement packageStatement) { } @Override + @RequiredReadAction public void visitJSAssignmentExpression(final JSAssignmentExpression expression) { JSExpression lExpr = expression.getLOperand(); if (lExpr == null) { @@ -652,16 +673,19 @@ public void visitJSAssignmentExpression(final JSAssignmentExpression expression) if (lExpr instanceof JSReferenceExpression lRefExpr) { PsiElement resolved = lRefExpr.resolve(); if (resolved instanceof JSVariable variable && variable.isConst()) { - myHolder.createErrorAnnotation(lExpr, JavaScriptLocalize.javascriptValidationMessageAssignmentToConst().get()); + myHolder.newAnnotation(HighlightSeverity.ERROR, JavaScriptLocalize.javascriptValidationMessageAssignmentToConst()) + .range(lExpr); } } if (!JSUtils.isLHSExpression(lExpr)) { - myHolder.createErrorAnnotation(lExpr, JavaScriptLocalize.javascriptValidationMessageMustBeLvalue().get()); + myHolder.newAnnotation(HighlightSeverity.ERROR, JavaScriptLocalize.javascriptValidationMessageMustBeLvalue()) + .range(lExpr); } } @Override + @RequiredReadAction public void visitJSArrayLiteralExpression(final JSArrayLiteralExpression node) { final PsiElement lastChild = node.getLastChild(); PsiElement child = lastChild != null ? lastChild.getPrevSibling() : null; @@ -671,13 +695,14 @@ public void visitJSArrayLiteralExpression(final JSArrayLiteralExpression node) { ASTNode childNode; if (child != null && (childNode = child.getNode()) != null && childNode.getElementType() == JSTokenTypes.COMMA) { - final Annotation annotation = - myHolder.createWarningAnnotation(child, JavaScriptLocalize.javascriptValidationMessageUnneededComma().get()); - annotation.registerFix(new RemoveASTNodeFix(childNode, JavaScriptLocalize.javascriptValidationMessageRemoveUnneededCommaFix())); + myHolder.newAnnotation(HighlightSeverity.WARNING, JavaScriptLocalize.javascriptValidationMessageUnneededComma()) + .range(child) + .withFix(new RemoveASTNodeFix(childNode, JavaScriptLocalize.javascriptValidationMessageRemoveUnneededCommaFix())); } } @Override + @RequiredReadAction public void visitJSTryStatement(final JSTryStatement node) { final JSCatchBlock[] blocks = node.getAllCatchBlocks(); @@ -696,12 +721,12 @@ public void visitJSTryStatement(final JSTryStatement node) { } if (typeToCatch.contains(s)) { - final Annotation annotation = - myHolder.createErrorAnnotation(block, JavaScriptLocalize.javascriptValidationMessageDuplicatedCatchBlock().get()); - annotation.registerFix(new RemoveASTNodeFix( - block.getNode(), - JavaScriptLocalize.javascriptValidationMessageDuplicatedCatchBlockFix() - )); + myHolder.newAnnotation(HighlightSeverity.ERROR, JavaScriptLocalize.javascriptValidationMessageDuplicatedCatchBlock()) + .range(block) + .withFix(new RemoveASTNodeFix( + block.getNode(), + JavaScriptLocalize.javascriptValidationMessageDuplicatedCatchBlockFix() + )); } else { typeToCatch.add(s); @@ -711,6 +736,7 @@ public void visitJSTryStatement(final JSTryStatement node) { } @Override + @RequiredReadAction public void visitJSVariable(final JSVariable var) { if (var.isConst() && var.getInitializer() == null) { if (var.getParent() instanceof JSVarStatement varStatement && varStatement.getParent() instanceof JSForInStatement) { @@ -719,10 +745,11 @@ public void visitJSVariable(final JSVariable var) { JSAttributeList attributeList = var.getAttributeList(); if (attributeList == null || attributeList.getAttributesByName("Embed").length == 0) { - myHolder.createWarningAnnotation( - var, - JavaScriptLocalize.javascriptValidationMessageConstVariableWithoutInitializer().get() - ); + myHolder.newAnnotation( + HighlightSeverity.WARNING, + JavaScriptLocalize.javascriptValidationMessageConstVariableWithoutInitializer() + ) + .range(var); } } @@ -732,28 +759,32 @@ public void visitJSVariable(final JSVariable var) { } @Override + @RequiredReadAction public void visitJSContinueStatement(final JSContinueStatement node) { if (node.getStatementToContinue() == null) { - myHolder.createErrorAnnotation(node, JavaScriptLocalize.javascriptValidationMessageContinueWithoutTarget().get()); + myHolder.newAnnotation(HighlightSeverity.ERROR, JavaScriptLocalize.javascriptValidationMessageContinueWithoutTarget()) + .range(node); } } @Override + @RequiredReadAction public void visitJSBreakStatement(final JSBreakStatement node) { if (node.getStatementToBreak() == null) { - myHolder.createErrorAnnotation(node, JavaScriptLocalize.javascriptValidationMessageBreakWithoutTarget().get()); + myHolder.newAnnotation(HighlightSeverity.ERROR, JavaScriptLocalize.javascriptValidationMessageBreakWithoutTarget()) + .range(node); } } @Override + @RequiredReadAction public void visitJSThisExpression(final JSThisExpression node) { checkClassReferenceInStaticContext(node, JavaScriptLocalize.javascriptValidationMessageThisReferencedFromStaticContext()); } - private void checkClassReferenceInStaticContext( - final JSExpression node, - LocalizeValue message - ) { + @RequiredReadAction + @SuppressWarnings("unchecked") + private void checkClassReferenceInStaticContext(final JSExpression node, LocalizeValue message) { PsiElement element = PsiTreeUtil.getParentOfType( node, JSFunction.class, @@ -766,7 +797,8 @@ private void checkClassReferenceInStaticContext( if (element instanceof JSFunction function) { final JSAttributeList attributeList = function.getAttributeList(); if (attributeList != null && attributeList.hasModifier(JSAttributeList.ModifierType.STATIC)) { - myHolder.createErrorAnnotation(node, message.get()); + myHolder.newAnnotation(HighlightSeverity.ERROR, message) + .range(node); return; } } @@ -778,19 +810,22 @@ private void checkClassReferenceInStaticContext( PsiElement elementParent = element != null ? element.getParent() : null; if (element == null || !(elementParent instanceof JSClass || elementParent instanceof JSFile && elementParent.getContext() != null)) { - myHolder.createErrorAnnotation( - node, - JavaScriptLocalize.javascriptValidationMessageSuperReferencedWithoutClassInstanceContext().get() - ); + myHolder.newAnnotation( + HighlightSeverity.ERROR, + JavaScriptLocalize.javascriptValidationMessageSuperReferencedWithoutClassInstanceContext() + ) + .range(node); } } @Override + @RequiredReadAction public void visitJSSuperExpression(final JSSuperExpression node) { checkClassReferenceInStaticContext(node, JavaScriptLocalize.javascriptValidationMessageSuperReferencedFromStaticContext()); } @Override + @RequiredReadAction public void visitJSFunctionDeclaration(final JSFunction node) { final PsiElement nameIdentifier = node.getNameIdentifier(); if (nameIdentifier == null) { @@ -803,12 +838,12 @@ public void visitJSFunctionDeclaration(final JSFunction node) { if (parent instanceof JSClass jsClass && node.getName().equals(jsClass.getName()) && JavaScriptSupportLoader.isFlexMxmFile(parent.getContainingFile())) { - final Annotation annotation = myHolder.createErrorAnnotation( - nameIdentifier, - JavaScriptLocalize.javascriptValidationMessageConstructorInMxmlIsNotAllowed().get() - ); - - annotation.registerFix(new RemoveASTNodeFix(node.getNode(), JavaScriptLocalize.javascriptFixRemoveConstructor())); + myHolder.newAnnotation( + HighlightSeverity.ERROR, + JavaScriptLocalize.javascriptValidationMessageConstructorInMxmlIsNotAllowed() + ) + .range(nameIdentifier) + .withFix(new RemoveASTNodeFix(node.getNode(), JavaScriptLocalize.javascriptFixRemoveConstructor())); } } @@ -823,46 +858,53 @@ public void visitJSFunctionDeclaration(final JSFunction node) { && (attributeList.getAccessType() != JSAttributeList.AccessType.PRIVATE || attributeList.hasModifier(JSAttributeList.ModifierType.OVERRIDE)))) { final String qName = clazz.getQualifiedName(); - final boolean hasOverride = - attributeList != null ? attributeList.hasModifier(JSAttributeList.ModifierType.OVERRIDE) : false; + final boolean hasOverride = attributeList != null && attributeList.hasModifier(JSAttributeList.ModifierType.OVERRIDE); final Ref set = new Ref<>(); - boolean b = JSResolveUtil.iterateType(node, parent, qName, (processor, scope, className) -> { - if (qName == className || (qName != null && qName.equals(className))) { - return true; - } - set.set((JSFunction)processor.getResult()); - if ("Object".equals(className)) { - if (hasOverride && !attributeList.hasModifier(JSAttributeList.ModifierType.NATIVE)) { /*native modifier is written always*/ - final ASTNode astNode = attributeList.getNode().findChildByType(JSTokenTypes.OVERRIDE_KEYWORD); - final Annotation annotation = myHolder.createErrorAnnotation( - astNode, - JavaScriptLocalize.javascriptValidationMessageFunctionOverrideForObjectMethod().get() - ); - - annotation.registerFix(new RemoveASTNodeFix(astNode, JavaScriptLocalize.javascriptFixRemoveOverrideModifier())); + boolean b = JSResolveUtil.iterateType( + node, + parent, + qName, + (processor, scope, className) -> { + if (qName == className || (qName != null && qName.equals(className))) { + return true; + } + set.set((JSFunction)processor.getResult()); + if ("Object".equals(className)) { + /*native modifier is written always*/ + if (hasOverride && !attributeList.hasModifier(JSAttributeList.ModifierType.NATIVE)) { + final ASTNode astNode = attributeList.getNode().findChildByType(JSTokenTypes.OVERRIDE_KEYWORD); + //noinspection RequiredXAction + myHolder.newAnnotation( + HighlightSeverity.ERROR, + JavaScriptLocalize.javascriptValidationMessageFunctionOverrideForObjectMethod() + ) + .range(astNode) + .withFix(new RemoveASTNodeFix(astNode, JavaScriptLocalize.javascriptFixRemoveOverrideModifier())); + } + return false; + } + else if (!hasOverride) { + //noinspection RequiredXAction + myHolder.newAnnotation( + HighlightSeverity.ERROR, + JavaScriptLocalize.javascriptValidationMessageFunctionOverrideWithoutOverrideModifier(className) + ) + .range(nameIdentifier) + .withFix(new AddOverrideIntentionAction(node)); } return false; } - else if (!hasOverride) { - final Annotation annotation = myHolder.createErrorAnnotation( - nameIdentifier, - JavaScriptLocalize.javascriptValidationMessageFunctionOverrideWithoutOverrideModifier(className).get() - ); - - annotation.registerFix(new AddOverrideIntentionAction(node)); - } - return false; - }); + ); if (b && hasOverride) { final ASTNode astNode = attributeList.getNode().findChildByType(JSTokenTypes.OVERRIDE_KEYWORD); - final Annotation annotation = myHolder.createErrorAnnotation( - astNode, - JavaScriptLocalize.javascriptValidationMessageFunctionOverrideWithoutParentMethod().get() - ); - - annotation.registerFix(new RemoveASTNodeFix(astNode, JavaScriptLocalize.javascriptFixRemoveOverrideModifier())); + myHolder.newAnnotation( + HighlightSeverity.ERROR, + JavaScriptLocalize.javascriptValidationMessageFunctionOverrideWithoutParentMethod() + ) + .range(astNode) + .withFix(new RemoveASTNodeFix(astNode, JavaScriptLocalize.javascriptFixRemoveOverrideModifier())); } if (!b && hasOverride) { @@ -870,20 +912,20 @@ else if (!hasOverride) { final JSAttributeList overrideAttrList = override.getAttributeList(); String overrideNs = null; - if ((overrideAttrList == null && (attributeList.getAccessType() != JSAttributeList.AccessType.PACKAGE_LOCAL)) || - (overrideAttrList != null && attributeList.getAccessType() != overrideAttrList.getAccessType()) || - overrideAttrList != null && (overrideNs = - overrideAttrList.getNamespace()) != null && !overrideNs.equals(attributeList.getNamespace())) { - final Annotation annotation1 = myHolder.createErrorAnnotation( - findElementForAccessModifierError(node, attributeList), - JavaScriptLocalize.javascriptValidationMessageFunctionOverrideIncompatibleAccessModifier( - overrideNs != null ? overrideNs : ( - overrideAttrList != null - ? overrideAttrList.getAccessType() - : JSAttributeList.AccessType.PACKAGE_LOCAL - ).toString().toLowerCase() - ).get() - ); + if ((overrideAttrList == null && (attributeList.getAccessType() != JSAttributeList.AccessType.PACKAGE_LOCAL)) + || (overrideAttrList != null && attributeList.getAccessType() != overrideAttrList.getAccessType()) + || overrideAttrList != null + && (overrideNs = overrideAttrList.getNamespace()) != null && !overrideNs.equals(attributeList.getNamespace())) { + String accessType = overrideNs != null ? overrideNs : ( + overrideAttrList != null + ? overrideAttrList.getAccessType() + : JSAttributeList.AccessType.PACKAGE_LOCAL + ).toString().toLowerCase(); + myHolder.newAnnotation( + HighlightSeverity.ERROR, + JavaScriptLocalize.javascriptValidationMessageFunctionOverrideIncompatibleAccessModifier(accessType) + ) + .range(findElementForAccessModifierError(node, attributeList)); // TODO: quickfix //annotation.registerFix( @@ -897,12 +939,12 @@ else if (!hasOverride) { final JSParameterList nodeParameterList = node.getParameterList(); final JSParameterList overrideParameterList = override.getParameterList(); - final Annotation annotation = myHolder.createErrorAnnotation( - nodeParameterList != null ? nodeParameterList : node.getNameIdentifier(), - JavaScriptLocalize.javascriptValidationMessageFunctionOverrideIncompatibleSignature( - overrideParameterList != null ? overrideParameterList.getText() : "()" - ).get() - ); + String params = overrideParameterList != null ? overrideParameterList.getText() : "()"; + myHolder.newAnnotation( + HighlightSeverity.ERROR, + JavaScriptLocalize.javascriptValidationMessageFunctionOverrideIncompatibleSignature(params) + ) + .range(nodeParameterList != null ? nodeParameterList : node.getNameIdentifier()); // TODO: quickfix //annotation.registerFix( @@ -912,12 +954,12 @@ else if (!hasOverride) { else if (incompatibleSignature == SignatureMatchResult.RETURN_TYPE_DIFFERS) { PsiElement returnTypeExpr = node.getReturnTypeElement(); PsiElement overrideReturnTypeExpr = override.getReturnTypeElement(); - final Annotation annotation = myHolder.createErrorAnnotation( - returnTypeExpr != null ? returnTypeExpr : node.getNameIdentifier(), - JavaScriptLocalize.javascriptValidationMessageFunctionOverrideIncompatibleSignature2( - overrideReturnTypeExpr != null ? overrideReturnTypeExpr.getText() : "*" - ).get() - ); + String retType = overrideReturnTypeExpr != null ? overrideReturnTypeExpr.getText() : "*"; + myHolder.newAnnotation( + HighlightSeverity.ERROR, + JavaScriptLocalize.javascriptValidationMessageFunctionOverrideIncompatibleSignature2(retType) + ) + .range(returnTypeExpr != null ? returnTypeExpr : node.getNameIdentifier()); // TODO: quickfix //annotation.registerFix( @@ -935,16 +977,18 @@ enum SignatureMatchResult { COMPATIBLE_SIGNATURE } + @RequiredReadAction private static SignatureMatchResult checkCompatibleSignature(final JSFunction fun, final JSFunction override) { JSParameterList nodeParameterList = fun.getParameterList(); JSParameterList overrideParameterList = override.getParameterList(); final JSParameter[] parameters = nodeParameterList != null ? nodeParameterList.getParameters() : JSParameter.EMPTY_ARRAY; - final JSParameter[] overrideParameters = - overrideParameterList != null ? overrideParameterList.getParameters() : JSParameter.EMPTY_ARRAY; + final JSParameter[] overrideParameters = overrideParameterList != null + ? overrideParameterList.getParameters() + : JSParameter.EMPTY_ARRAY; - SignatureMatchResult result = - parameters.length != overrideParameters.length ? SignatureMatchResult.PARAMETERS_DIFFERS : SignatureMatchResult - .COMPATIBLE_SIGNATURE; + SignatureMatchResult result = parameters.length != overrideParameters.length + ? SignatureMatchResult.PARAMETERS_DIFFERS + : SignatureMatchResult.COMPATIBLE_SIGNATURE; if (result == SignatureMatchResult.COMPATIBLE_SIGNATURE) { for (int i = 0; i < parameters.length; ++i) { @@ -960,10 +1004,9 @@ private static SignatureMatchResult checkCompatibleSignature(final JSFunction fu } } - if (result == SignatureMatchResult.COMPATIBLE_SIGNATURE) { - if (!compatibleType(override.getReturnTypeString(), fun.getReturnTypeString(), override, fun)) { - result = SignatureMatchResult.RETURN_TYPE_DIFFERS; - } + if (result == SignatureMatchResult.COMPATIBLE_SIGNATURE + && !compatibleType(override.getReturnTypeString(), fun.getReturnTypeString(), override, fun)) { + result = SignatureMatchResult.RETURN_TYPE_DIFFERS; } return result; } @@ -989,6 +1032,8 @@ else if (overrideParameterType == null && parameterType != null && !"*".equals(p } @Override + @RequiredReadAction + @SuppressWarnings("unchecked") public void visitJSReturnStatement(final JSReturnStatement node) { final PsiElement element = PsiTreeUtil.getParentOfType( node, @@ -1000,21 +1045,24 @@ public void visitJSReturnStatement(final JSReturnStatement node) { ); if ((element instanceof JSFile && !(element.getContext() instanceof PsiLanguageInjectionHost)) || (element instanceof XmlTagChild && !(element.getParent() instanceof XmlAttributeValue))) { - myHolder.createErrorAnnotation(node, JavaScriptLocalize.javascriptValidationMessageReturnOutsideFunctionDefinition().get()); + myHolder.newAnnotation(HighlightSeverity.ERROR, JavaScriptLocalize.javascriptValidationMessageReturnOutsideFunctionDefinition()) + .range(node); } if (element instanceof JSFunction function) { - final @NonNls String typeString = function.getReturnTypeString(); + final String typeString = function.getReturnTypeString(); if (typeString != null && !"void".equals(typeString) && node.getExpression() == null) { - myHolder.createErrorAnnotation( - node, - JavaScriptLocalize.javascriptValidationMessageReturnValueOfTypeIsRequired(typeString).get() - ); + myHolder.newAnnotation( + HighlightSeverity.ERROR, + JavaScriptLocalize.javascriptValidationMessageReturnValueOfTypeIsRequired(typeString) + ) + .range(node); } } } @Override + @RequiredReadAction public void visitJSLabeledStatement(final JSLabeledStatement node) { final String label = node.getLabel(); if (label != null) { @@ -1022,10 +1070,8 @@ public void visitJSLabeledStatement(final JSLabeledStatement node) { while (run != null) { if (run instanceof JSLabeledStatement labeledStatement) { if (label.equals(labeledStatement.getLabel())) { - myHolder.createErrorAnnotation( - node.getLabelIdentifier(), - JavaScriptLocalize.javascriptValidationMessageDuplicateLabel().get() - ); + myHolder.newAnnotation(HighlightSeverity.ERROR, JavaScriptLocalize.javascriptValidationMessageDuplicateLabel()) + .range(node.getNameIdentifier()); break; } } @@ -1038,6 +1084,7 @@ public void visitJSLabeledStatement(final JSLabeledStatement node) { } } + @RequiredReadAction private void checkNamedObjectIsInCorrespondingFile(final JSNamedElement aClass) { final PsiFile containingFile = aClass.getContainingFile(); @@ -1059,9 +1106,9 @@ private void checkNamedObjectIsInCorrespondingFile(final JSNamedElement aClass) : aClass instanceof JSVariable ? JavaScriptLocalize.javascriptValidationMessageVariableShouldBeInFile(name, nameWithExtension) : JavaScriptLocalize.javascriptValidationMessageFunctionShouldBeInFile(name, nameWithExtension); - final Annotation annotation = myHolder.createErrorAnnotation(node, message.get()); - - annotation.registerFix(new RenameFileFix(nameWithExtension)); + myHolder.newAnnotation(HighlightSeverity.ERROR, message) + .range(node) + .withFix(new RenameFileFix(nameWithExtension)); /*annotation.registerFix(new RenamePublicClassFix(aClass) { final String text; final String familyName; @@ -1094,6 +1141,7 @@ private String getTerm(String message) { return term; } + @RequiredReadAction public static void checkFileUnderSourceRoot(final JSNamedElement aClass, ErrorReportingClient client) { PsiElement nameIdentifier = aClass.getNameIdentifier(); if (nameIdentifier == null) { @@ -1109,15 +1157,12 @@ public static void checkFileUnderSourceRoot(final JSNamedElement aClass, ErrorRe ProjectRootManager.getInstance(containingFile.getProject()).getFileIndex().getSourceRootForFile(file); if (rootForFile == null) { - client.reportError( - nameIdentifier.getNode(), - JavaScriptLocalize.javascriptValidationMessageFileShouldBeUnderSourceRoot().get(), - ErrorReportingClient.ProblemKind.WARNING, - null - ); + client.newAnnotation(HighlightSeverity.WARNING, JavaScriptLocalize.javascriptValidationMessageFileShouldBeUnderSourceRoot()) + .range(nameIdentifier.getNode()); } } + @RequiredReadAction private void checkPackageStatement(final JSPackageStatement packageStatement) { final String s = packageStatement.getQualifiedName(); @@ -1130,33 +1175,31 @@ private void checkPackageStatement(final JSPackageStatement packageStatement) { if (expected != null && ((s == null && expected.length() != 0) || (s != null && !expected.equals(s)))) { final PsiElement nameIdentifier = packageStatement.getNameIdentifier(); - final Annotation annotation = myHolder.createErrorAnnotation( - nameIdentifier != null ? nameIdentifier : packageStatement.getFirstChild(), - JavaScriptLocalize.javascriptValidationMessageIncorrectPackageName(s, expected).get() - ); - annotation.registerFix(new SyntheticIntentionAction() { - @Override - @Nonnull - public String getText() { - return JavaScriptLocalize.javascriptFixPackageName(expected).get(); - } + myHolder.newAnnotation(HighlightSeverity.ERROR, JavaScriptLocalize.javascriptValidationMessageIncorrectPackageName(s, expected)) + .range(nameIdentifier != null ? nameIdentifier : packageStatement.getFirstChild()) + .withFix(new SyntheticIntentionAction() { + @Nonnull + @Override + public String getText() { + return JavaScriptLocalize.javascriptFixPackageName(expected).get(); + } - @Override - public boolean isAvailable(@Nonnull final Project project, final Editor editor, final PsiFile file) { - return packageStatement.isValid(); - } + @Override + public boolean isAvailable(@Nonnull final Project project, final Editor editor, final PsiFile file) { + return packageStatement.isValid(); + } - @Override - public void invoke(@Nonnull final Project project, final Editor editor, final PsiFile file) - throws IncorrectOperationException { - JSPackageStatementImpl.doChangeName(project, packageStatement, expected); - } + @Override + public void invoke(@Nonnull final Project project, final Editor editor, final PsiFile file) + throws IncorrectOperationException { + JSPackageStatementImpl.doChangeName(project, packageStatement, expected); + } - @Override - public boolean startInWriteAction() { - return true; - } - }); + @Override + public boolean startInWriteAction() { + return true; + } + }); } final Set elements = new HashSet<>(); @@ -1170,11 +1213,12 @@ public boolean startInWriteAction() { if (elements.size() > 1) { for (JSNamedElement el : elements) { final PsiElement nameIdentifier = el.getNameIdentifier(); - myHolder.createErrorAnnotation( - nameIdentifier != null ? nameIdentifier : el.getFirstChild(), - JavaScriptLocalize.javascriptValidationMessageMoreThanOneExternallyVisibleSymbol().get() + myHolder.newAnnotation( + HighlightSeverity.ERROR, + JavaScriptLocalize.javascriptValidationMessageMoreThanOneExternallyVisibleSymbol() ) - .registerFix(new RemoveASTNodeFix(el.getNode(), JavaScriptLocalize.javascriptFixRemoveExternallyVisibleSymbol())); + .range(nameIdentifier != null ? nameIdentifier : el.getFirstChild()) + .withFix(new RemoveASTNodeFix(el.getNode(), JavaScriptLocalize.javascriptFixRemoveExternallyVisibleSymbol())); } } @@ -1213,6 +1257,7 @@ public String getFamilyName() { } @Override + @RequiredUIAccess public void applyFix(@Nonnull Project project, @Nonnull ProblemDescriptor descriptor) { invoke(project, null, descriptor.getPsiElement().getContainingFile()); } @@ -1229,6 +1274,7 @@ public boolean isAvailable(@Nonnull final Project project, final Editor editor, } @Override + @RequiredUIAccess public void invoke(@Nonnull final Project project, final Editor editor, final PsiFile file) throws IncorrectOperationException { if (!FileModificationService.getInstance().prepareFileForWrite(file)) { return; @@ -1265,6 +1311,7 @@ public boolean isAvailable(@Nonnull final Project project, final Editor editor, } @Override + @RequiredUIAccess public void invoke(@Nonnull final Project project, final Editor editor, final PsiFile file) throws IncorrectOperationException { if (!FileModificationService.getInstance().prepareFileForWrite(file)) { return; @@ -1289,24 +1336,8 @@ public boolean startInWriteAction() { private class SimpleErrorReportingClient implements ErrorReportingClient { @Override - public void reportError(final ASTNode nameIdentifier, final String s, ProblemKind kind, final IntentionAction implementMethodsFix) { - final Annotation annotation = kind == ProblemKind.ERROR - ? myHolder.createErrorAnnotation(nameIdentifier, s) - : myHolder.createWarningAnnotation(nameIdentifier, s); - - if (implementMethodsFix != null) { - annotation.registerFix(implementMethodsFix); - } - } - - @Override - public void reportError(PsiElement nameIdentifier, String s, ProblemKind kind, IntentionAction implementMethodsFix) { - final Annotation annotation = kind == ProblemKind.ERROR - ? myHolder.createErrorAnnotation(nameIdentifier, s) - : myHolder.createWarningAnnotation(nameIdentifier, s); - if (implementMethodsFix != null) { - annotation.registerFix(implementMethodsFix); - } + public AnnotationBuilder newAnnotation(@Nonnull HighlightSeverity severity, @Nonnull LocalizeValue message) { + return myHolder.newAnnotation(severity, message); } } @@ -1331,6 +1362,7 @@ public boolean isAvailable(@Nonnull Project project, Editor editor, PsiFile file } @Override + @RequiredUIAccess public void invoke(@Nonnull Project project, Editor editor, PsiFile file) throws IncorrectOperationException { if (!FileModificationService.getInstance().prepareFileForWrite(file)) { return; @@ -1394,6 +1426,7 @@ public boolean isAvailable(@Nonnull Project project, Editor editor, PsiFile file } @Override + @RequiredUIAccess public void invoke(@Nonnull Project project, Editor editor, PsiFile file) throws IncorrectOperationException { if (!FileModificationService.getInstance().prepareFileForWrite(file)) { return; @@ -1403,30 +1436,30 @@ public void invoke(@Nonnull Project project, Editor editor, PsiFile file) throws return; } final JSAttributeList attributeList = jsClass.getAttributeList(); - String fun = ""; + StringBuilder fun = new StringBuilder(); if (attributeList != null && attributeList.getAccessType() == JSAttributeList.AccessType.PUBLIC) { - fun += "public "; + fun.append("public "); } - fun += "function "; + fun.append("function "); final JSParameterList parameterList = superConstructor.getParameterList(); - fun += jsClass.getName() + parameterList.getText() + "{\n"; - fun += "super("; + fun.append(jsClass.getName()).append(parameterList.getText()).append("{\n"); + fun.append("super("); int i = 0; for (JSParameter p : parameterList.getParameters()) { if (i != 0) { - fun += ","; + fun.append(","); } ++i; - fun += p.getName(); + fun.append(p.getName()); } - fun += ")" + JSChangeUtil.getSemicolon(project); - fun += "\n}"; + fun.append(")").append(JSChangeUtil.getSemicolon(project)); + fun.append("\n}"); - jsClass.add(JSChangeUtil.createJSTreeFromText(project, fun).getPsi()); + jsClass.add(JSChangeUtil.createJSTreeFromText(project, fun.toString()).getPsi()); } @Override diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatorFactory.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatorFactory.java index dea1c82f..656c9df2 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatorFactory.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatorFactory.java @@ -11,7 +11,7 @@ /** * @author VISTALL - * @since 29-Aug-22 + * @since 2022-08-29 */ @ExtensionImpl public class JSAnnotatorFactory implements AnnotatorFactory { From b9d87e4155c29ba060d80d8a293db2713a6c6d45 Mon Sep 17 00:00:00 2001 From: UNV Date: Sun, 8 Sep 2024 22:25:33 +0300 Subject: [PATCH 071/150] newAnnotation() creation must be finished with .create(). --- .../impl/validation/JSAnnotatingVisitor.java | 175 +++++++++++------- 1 file changed, 113 insertions(+), 62 deletions(-) diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatingVisitor.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatingVisitor.java index d4364824..df992780 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatingVisitor.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatingVisitor.java @@ -102,8 +102,8 @@ private void checkReferences(final PsiElement includeDirective, HighlightSeverit elementRange.getStartOffset() + textRange.getEndOffset() ); final LocalizeValue value = ((EmptyResolveMessageProvider)ref).buildUnresolvedMessage(ref.getCanonicalText()); - AnnotationBuilder builder = myHolder.newAnnotation(kind, value); - builder = builder.range(range); + AnnotationBuilder builder = myHolder.newAnnotation(kind, value) + .range(range); if (ref instanceof LocalQuickFixProvider localQuickFixProvider) { for (LocalQuickFix fix : localQuickFixProvider.getQuickFixes()) { @@ -131,7 +131,8 @@ public void visitJSCallExpression(final JSCallExpression node) { if (methodExpression instanceof JSLiteralExpression) { myHolder.newAnnotation(HighlightSeverity.ERROR, JavaScriptLocalize.javascriptParserMessageExpectedFunctionName()) - .range(methodExpression); + .range(methodExpression) + .create(); } } @@ -163,7 +164,8 @@ public void visitJSReferenceList(final JSReferenceList referenceList) { HighlightSeverity.ERROR, JavaScriptLocalize.javascriptValidationMessageImplementsForInterfaceNotAllowed() ) - .range(referenceList); + .range(referenceList) + .create(); return; } @@ -185,7 +187,8 @@ public void visitJSReferenceList(final JSReferenceList referenceList) { if (!isInterface && withinImplements) { myHolder.newAnnotation(HighlightSeverity.ERROR, JavaScriptLocalize.javascriptValidationMessageInterfaceNameExpectedHere()) - .range(expr); + .range(expr) + .create(); } else if (withinExtends && isInterface != jsClass.isInterface()) { myHolder.newAnnotation( @@ -194,12 +197,14 @@ else if (withinExtends && isInterface != jsClass.isInterface()) { ? JavaScriptLocalize.javascriptValidationMessageClassNameExpectedHere() : JavaScriptLocalize.javascriptValidationMessageInterfaceNameExpectedHere() ) - .range(expr); + .range(expr) + .create(); } if (clazz == jsClass) { myHolder.newAnnotation(HighlightSeverity.ERROR, JavaScriptLocalize.javascriptValidationMessageCircularDependency()) .range(expr) - .withFix(new RemoveASTNodeFix(referenceList.getNode(), JavaScriptLocalize.javascriptFixRemoveCircularDependency())); + .withFix(new RemoveASTNodeFix(referenceList.getNode(), JavaScriptLocalize.javascriptFixRemoveCircularDependency())) + .create(); } } @@ -235,7 +240,8 @@ protected void addNonimplementedFunction(final JSFunction function) { ) ) .range(node) - .withFix(implementMethodsFix); + .withFix(implementMethodsFix) + .create(); } @Override @@ -245,9 +251,11 @@ protected void addImplementedFunction(final JSFunction interfaceFunction, final if (attributeList == null || attributeList.getAccessType() != JSAttributeList.AccessType.PUBLIC) { final ASTNode node = findElementForAccessModifierError(implementationFunction, attributeList); reportingClient.newAnnotation( - HighlightSeverity.ERROR, - JavaScriptLocalize.javascriptValidationMessageInterfaceMethodInvalidAccessModifier() - ).range(node); // TODO: quickfix + HighlightSeverity.ERROR, + JavaScriptLocalize.javascriptValidationMessageInterfaceMethodInvalidAccessModifier() + ) + .range(node) + .create(); // TODO: quickfix } final SignatureMatchResult incompatibleSignature = checkCompatibleSignature(implementationFunction, interfaceFunction); @@ -268,25 +276,29 @@ protected void addImplementedFunction(final JSFunction interfaceFunction, final final JSParameterList parameterList = implementationFunction.getParameterList(); final JSParameterList expectedParameterList = interfaceFunction.getParameterList(); reportingClient.newAnnotation( - HighlightSeverity.ERROR, - JavaScriptLocalize.javascriptValidationMessageInterfaceMethodInvalidSignature( - expectedParameterList != null ? expectedParameterList.getText() : "()" + HighlightSeverity.ERROR, + JavaScriptLocalize.javascriptValidationMessageInterfaceMethodInvalidSignature( + expectedParameterList != null ? expectedParameterList.getText() : "()" + ) ) - ).range(parameterList.getNode()); // TODO: quickfix + .range(parameterList.getNode()) + .create(); // TODO: quickfix } else if (incompatibleSignature == SignatureMatchResult.RETURN_TYPE_DIFFERS) { PsiElement implementationReturnTypeExpr = implementationFunction.getReturnTypeElement(); PsiElement interfaceReturnTypeExpr = interfaceFunction.getReturnTypeElement(); reportingClient.newAnnotation( - HighlightSeverity.ERROR, - JavaScriptLocalize.javascriptValidationMessageInterfaceMethodInvalidSignature2( - interfaceReturnTypeExpr != null ? interfaceReturnTypeExpr.getText() : "*" + HighlightSeverity.ERROR, + JavaScriptLocalize.javascriptValidationMessageInterfaceMethodInvalidSignature2( + interfaceReturnTypeExpr != null ? interfaceReturnTypeExpr.getText() : "*" + ) ) - ).range( - implementationReturnTypeExpr != null - ? implementationReturnTypeExpr - : implementationFunction.getNameIdentifier() - ); // TODO: quickfix + .range( + implementationReturnTypeExpr != null + ? implementationReturnTypeExpr + : implementationFunction.getNameIdentifier() + ) + .create(); // TODO: quickfix } } } @@ -326,14 +338,16 @@ else if (accessTypeElement != null) { .withFix(new RemoveASTNodeFix( namespaceOrAccessModifierElement.getNode(), JavaScriptLocalize.javascriptFixRemoveNamespaceReference() - )); + )) + .create(); myHolder.newAnnotation( HighlightSeverity.ERROR, JavaScriptLocalize.javascriptValidationMessageUseNamespaceReferenceOrAccessModifier() ) .range(accessTypeElement) - .withFix(new RemoveASTNodeFix(accessTypeElement.getNode(), JavaScriptLocalize.javascriptFixRemoveNamespaceReference())); + .withFix(new RemoveASTNodeFix(accessTypeElement.getNode(), JavaScriptLocalize.javascriptFixRemoveNamespaceReference())) + .create(); } if (namespaceOrAccessModifierElement != null) { @@ -362,7 +376,8 @@ else if (accessTypeElement != null) { nsRef ? JavaScriptLocalize.javascriptFixRemoveNamespaceReference() : JavaScriptLocalize.javascriptFixRemoveAccessModifier() - )); + )) + .create(); } } else if (((JSClass)parentForCheckingNsOrAccessModifier).isInterface()) { @@ -375,7 +390,8 @@ else if (((JSClass)parentForCheckingNsOrAccessModifier).isInterface()) { JavaScriptLocalize.javascriptValidationMessageInterfaceMembersCannotHaveAccessModifiers() ) .range(astNode) - .withFix(new RemoveASTNodeFix(astNode, JavaScriptLocalize.javascriptFixRemoveAccessModifier())); + .withFix(new RemoveASTNodeFix(astNode, JavaScriptLocalize.javascriptFixRemoveAccessModifier())) + .create(); } } } @@ -419,7 +435,8 @@ else if (function.isSetProperty()) { HighlightSeverity.ERROR, JavaScriptLocalize.javascriptValidationMessageSetMethodShouldBeVoidOrWithoutType() ) - .range(function.getReturnTypeElement()); + .range(function.getReturnTypeElement()) + .create(); } JSParameterList parameterList = function.getParameterList(); @@ -429,7 +446,8 @@ else if (function.isSetProperty()) { HighlightSeverity.ERROR, JavaScriptLocalize.javascriptValidationMessageSetMethodShouldHaveOneParameter() ) - .range(parameterList); + .range(parameterList) + .create(); } } else if (function.isGetProperty()) { @@ -443,7 +461,8 @@ else if (function.isGetProperty()) { typeString != null ? typeString : "empty" ) ) - .range(typeString != null ? function.getReturnTypeElement() : nameIdentifier); + .range(typeString != null ? function.getReturnTypeElement() : nameIdentifier) + .create(); } JSParameterList parameterList = function.getParameterList(); @@ -453,7 +472,8 @@ else if (function.isGetProperty()) { HighlightSeverity.ERROR, JavaScriptLocalize.javascriptValidationMessageGetMethodShouldHaveNoParameter() ) - .range(parameterList); + .range(parameterList) + .create(); } } } @@ -470,7 +490,8 @@ else if (function.isGetProperty()) { HighlightSeverity.ERROR, JavaScriptLocalize.javascriptValidationMessageNestedClassesAreNotAllowed() ) - .range(node); + .range(node) + .create(); } } } @@ -480,7 +501,8 @@ else if (function.isGetProperty()) { JSFunction fun = PsiTreeUtil.getParentOfType(node, JSFunction.class); if (fun == null) { myHolder.newAnnotation(HighlightSeverity.ERROR, JavaScriptLocalize.javascriptValidationMessageArgumentsOutOfFunction()) - .range(node); + .range(node) + .create(); } else { JSParameterList parameterList = fun.getParameterList(); @@ -516,7 +538,8 @@ private void checkMissedSuperCall(JSReferenceExpression node, JSFunction constru constructor == null ? new AddConstructorAndSuperInvokationFix(node, nontrivialSuperClassConstructor) : new AddSuperInvokationFix(node, nontrivialSuperClassConstructor) - ); + ) + .create(); } } @@ -581,7 +604,8 @@ else if (!hasInitializer && initializerPresent && !parameter.isRest()) { JavaScriptLocalize.javascriptValidationMessageParameterShouldBeInitialized() ) .range(parameter) - .withFix(new RemoveASTNodeFix(parameter.getNode(), JavaScriptLocalize.javascriptFixRemoveParameter())); + .withFix(new RemoveASTNodeFix(parameter.getNode(), JavaScriptLocalize.javascriptFixRemoveParameter())) + .create(); } else if (hasInitializer && parameter.isRest()) { myHolder.newAnnotation( @@ -592,7 +616,8 @@ else if (hasInitializer && parameter.isRest()) { .withFix(new RemoveASTNodeFix( JavaScriptLocalize.javascriptFixRemoveInitializer(), getNodesBefore(initializer, JSTokenTypes.EQ) - )); + )) + .create(); } if (parameter.isRest() && !foundRest) { @@ -607,7 +632,8 @@ else if (hasInitializer && parameter.isRest()) { .withFix(new RemoveASTNodeFix( JavaScriptLocalize.javascriptFixRemoveTypeReference(), getNodesBefore(typeElement, JSTokenTypes.COLON) - )); + )) + .create(); } } else if (foundRest) { @@ -616,7 +642,8 @@ else if (foundRest) { JavaScriptLocalize.javascriptValidationMessageParameterIsNotAllowedAfterRestParameter() ) .range(parameter) - .withFix(new RemoveASTNodeFix(parameter.getNode(), JavaScriptLocalize.javascriptFixRemoveParameter())); + .withFix(new RemoveASTNodeFix(parameter.getNode(), JavaScriptLocalize.javascriptFixRemoveParameter())) + .create(); } } } @@ -649,7 +676,8 @@ public void visitJSPackageStatement(final JSPackageStatement packageStatement) { HighlightSeverity.ERROR, JavaScriptLocalize.javascriptValidationMessagePackageShouldbeFirstStatement() ) - .range(packageStatement.getFirstChild().getNode()); + .range(packageStatement.getFirstChild().getNode()) + .create(); break; } } @@ -674,13 +702,15 @@ public void visitJSAssignmentExpression(final JSAssignmentExpression expression) PsiElement resolved = lRefExpr.resolve(); if (resolved instanceof JSVariable variable && variable.isConst()) { myHolder.newAnnotation(HighlightSeverity.ERROR, JavaScriptLocalize.javascriptValidationMessageAssignmentToConst()) - .range(lExpr); + .range(lExpr) + .create(); } } if (!JSUtils.isLHSExpression(lExpr)) { myHolder.newAnnotation(HighlightSeverity.ERROR, JavaScriptLocalize.javascriptValidationMessageMustBeLvalue()) - .range(lExpr); + .range(lExpr) + .create(); } } @@ -697,7 +727,8 @@ public void visitJSArrayLiteralExpression(final JSArrayLiteralExpression node) { if (child != null && (childNode = child.getNode()) != null && childNode.getElementType() == JSTokenTypes.COMMA) { myHolder.newAnnotation(HighlightSeverity.WARNING, JavaScriptLocalize.javascriptValidationMessageUnneededComma()) .range(child) - .withFix(new RemoveASTNodeFix(childNode, JavaScriptLocalize.javascriptValidationMessageRemoveUnneededCommaFix())); + .withFix(new RemoveASTNodeFix(childNode, JavaScriptLocalize.javascriptValidationMessageRemoveUnneededCommaFix())) + .create(); } } @@ -726,7 +757,8 @@ public void visitJSTryStatement(final JSTryStatement node) { .withFix(new RemoveASTNodeFix( block.getNode(), JavaScriptLocalize.javascriptValidationMessageDuplicatedCatchBlockFix() - )); + )) + .create(); } else { typeToCatch.add(s); @@ -749,7 +781,8 @@ public void visitJSVariable(final JSVariable var) { HighlightSeverity.WARNING, JavaScriptLocalize.javascriptValidationMessageConstVariableWithoutInitializer() ) - .range(var); + .range(var) + .create(); } } @@ -763,7 +796,8 @@ public void visitJSVariable(final JSVariable var) { public void visitJSContinueStatement(final JSContinueStatement node) { if (node.getStatementToContinue() == null) { myHolder.newAnnotation(HighlightSeverity.ERROR, JavaScriptLocalize.javascriptValidationMessageContinueWithoutTarget()) - .range(node); + .range(node) + .create(); } } @@ -772,7 +806,8 @@ public void visitJSContinueStatement(final JSContinueStatement node) { public void visitJSBreakStatement(final JSBreakStatement node) { if (node.getStatementToBreak() == null) { myHolder.newAnnotation(HighlightSeverity.ERROR, JavaScriptLocalize.javascriptValidationMessageBreakWithoutTarget()) - .range(node); + .range(node) + .create(); } } @@ -798,7 +833,8 @@ private void checkClassReferenceInStaticContext(final JSExpression node, Localiz final JSAttributeList attributeList = function.getAttributeList(); if (attributeList != null && attributeList.hasModifier(JSAttributeList.ModifierType.STATIC)) { myHolder.newAnnotation(HighlightSeverity.ERROR, message) - .range(node); + .range(node) + .create(); return; } } @@ -814,7 +850,8 @@ private void checkClassReferenceInStaticContext(final JSExpression node, Localiz HighlightSeverity.ERROR, JavaScriptLocalize.javascriptValidationMessageSuperReferencedWithoutClassInstanceContext() ) - .range(node); + .range(node) + .create(); } } @@ -843,7 +880,8 @@ public void visitJSFunctionDeclaration(final JSFunction node) { JavaScriptLocalize.javascriptValidationMessageConstructorInMxmlIsNotAllowed() ) .range(nameIdentifier) - .withFix(new RemoveASTNodeFix(node.getNode(), JavaScriptLocalize.javascriptFixRemoveConstructor())); + .withFix(new RemoveASTNodeFix(node.getNode(), JavaScriptLocalize.javascriptFixRemoveConstructor())) + .create(); } } @@ -880,7 +918,8 @@ public void visitJSFunctionDeclaration(final JSFunction node) { JavaScriptLocalize.javascriptValidationMessageFunctionOverrideForObjectMethod() ) .range(astNode) - .withFix(new RemoveASTNodeFix(astNode, JavaScriptLocalize.javascriptFixRemoveOverrideModifier())); + .withFix(new RemoveASTNodeFix(astNode, JavaScriptLocalize.javascriptFixRemoveOverrideModifier())) + .create(); } return false; } @@ -891,7 +930,8 @@ else if (!hasOverride) { JavaScriptLocalize.javascriptValidationMessageFunctionOverrideWithoutOverrideModifier(className) ) .range(nameIdentifier) - .withFix(new AddOverrideIntentionAction(node)); + .withFix(new AddOverrideIntentionAction(node)) + .create(); } return false; } @@ -904,7 +944,8 @@ else if (!hasOverride) { JavaScriptLocalize.javascriptValidationMessageFunctionOverrideWithoutParentMethod() ) .range(astNode) - .withFix(new RemoveASTNodeFix(astNode, JavaScriptLocalize.javascriptFixRemoveOverrideModifier())); + .withFix(new RemoveASTNodeFix(astNode, JavaScriptLocalize.javascriptFixRemoveOverrideModifier())) + .create(); } if (!b && hasOverride) { @@ -925,7 +966,8 @@ else if (!hasOverride) { HighlightSeverity.ERROR, JavaScriptLocalize.javascriptValidationMessageFunctionOverrideIncompatibleAccessModifier(accessType) ) - .range(findElementForAccessModifierError(node, attributeList)); + .range(findElementForAccessModifierError(node, attributeList)) + .create(); // TODO: quickfix //annotation.registerFix( @@ -944,7 +986,8 @@ else if (!hasOverride) { HighlightSeverity.ERROR, JavaScriptLocalize.javascriptValidationMessageFunctionOverrideIncompatibleSignature(params) ) - .range(nodeParameterList != null ? nodeParameterList : node.getNameIdentifier()); + .range(nodeParameterList != null ? nodeParameterList : node.getNameIdentifier()) + .create(); // TODO: quickfix //annotation.registerFix( @@ -959,7 +1002,8 @@ else if (incompatibleSignature == SignatureMatchResult.RETURN_TYPE_DIFFERS) { HighlightSeverity.ERROR, JavaScriptLocalize.javascriptValidationMessageFunctionOverrideIncompatibleSignature2(retType) ) - .range(returnTypeExpr != null ? returnTypeExpr : node.getNameIdentifier()); + .range(returnTypeExpr != null ? returnTypeExpr : node.getNameIdentifier()) + .create(); // TODO: quickfix //annotation.registerFix( @@ -1046,7 +1090,8 @@ public void visitJSReturnStatement(final JSReturnStatement node) { if ((element instanceof JSFile && !(element.getContext() instanceof PsiLanguageInjectionHost)) || (element instanceof XmlTagChild && !(element.getParent() instanceof XmlAttributeValue))) { myHolder.newAnnotation(HighlightSeverity.ERROR, JavaScriptLocalize.javascriptValidationMessageReturnOutsideFunctionDefinition()) - .range(node); + .range(node) + .create(); } if (element instanceof JSFunction function) { @@ -1056,7 +1101,8 @@ public void visitJSReturnStatement(final JSReturnStatement node) { HighlightSeverity.ERROR, JavaScriptLocalize.javascriptValidationMessageReturnValueOfTypeIsRequired(typeString) ) - .range(node); + .range(node) + .create(); } } } @@ -1071,7 +1117,8 @@ public void visitJSLabeledStatement(final JSLabeledStatement node) { if (run instanceof JSLabeledStatement labeledStatement) { if (label.equals(labeledStatement.getLabel())) { myHolder.newAnnotation(HighlightSeverity.ERROR, JavaScriptLocalize.javascriptValidationMessageDuplicateLabel()) - .range(node.getNameIdentifier()); + .range(node.getNameIdentifier()) + .create(); break; } } @@ -1108,7 +1155,8 @@ private void checkNamedObjectIsInCorrespondingFile(final JSNamedElement aClass) : JavaScriptLocalize.javascriptValidationMessageFunctionShouldBeInFile(name, nameWithExtension); myHolder.newAnnotation(HighlightSeverity.ERROR, message) .range(node) - .withFix(new RenameFileFix(nameWithExtension)); + .withFix(new RenameFileFix(nameWithExtension)) + .create(); /*annotation.registerFix(new RenamePublicClassFix(aClass) { final String text; final String familyName; @@ -1158,7 +1206,8 @@ public static void checkFileUnderSourceRoot(final JSNamedElement aClass, ErrorRe if (rootForFile == null) { client.newAnnotation(HighlightSeverity.WARNING, JavaScriptLocalize.javascriptValidationMessageFileShouldBeUnderSourceRoot()) - .range(nameIdentifier.getNode()); + .range(nameIdentifier.getNode()) + .create(); } } @@ -1199,7 +1248,8 @@ public void invoke(@Nonnull final Project project, final Editor editor, final Ps public boolean startInWriteAction() { return true; } - }); + }) + .create(); } final Set elements = new HashSet<>(); @@ -1218,7 +1268,8 @@ public boolean startInWriteAction() { JavaScriptLocalize.javascriptValidationMessageMoreThanOneExternallyVisibleSymbol() ) .range(nameIdentifier != null ? nameIdentifier : el.getFirstChild()) - .withFix(new RemoveASTNodeFix(el.getNode(), JavaScriptLocalize.javascriptFixRemoveExternallyVisibleSymbol())); + .withFix(new RemoveASTNodeFix(el.getNode(), JavaScriptLocalize.javascriptFixRemoveExternallyVisibleSymbol())) + .create(); } } From c7aff794fb0fc373091a765a6866262ca7b4cfa0 Mon Sep 17 00:00:00 2001 From: UNV Date: Sun, 8 Sep 2024 22:51:52 +0300 Subject: [PATCH 072/150] Replacing ErrorReportingClient with AnnotationHolder. --- .../impl/validation/JSAnnotatingVisitor.java | 31 ++++++------------- 1 file changed, 10 insertions(+), 21 deletions(-) diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatingVisitor.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatingVisitor.java index df992780..f8042216 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatingVisitor.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatingVisitor.java @@ -209,15 +209,11 @@ else if (withinExtends && isInterface != jsClass.isInterface()) { } if (withinImplements) { - checkImplementedMethods(jsClass, new SimpleErrorReportingClient()); + checkImplementedMethods(jsClass, myHolder); } } - public interface ErrorReportingClient { - AnnotationBuilder newAnnotation(@Nonnull HighlightSeverity severity, @Nonnull LocalizeValue message); - } - - public static void checkImplementedMethods(final JSClass jsClass, final ErrorReportingClient reportingClient) { + public static void checkImplementedMethods(final JSClass jsClass, final AnnotationHolder holder) { final JSResolveUtil.CollectMethodsToImplementProcessor implementedMethodProcessor = new ImplementedMethodProcessor(jsClass) { ImplementMethodsFix implementMethodsFix = null; @@ -232,7 +228,7 @@ protected void addNonimplementedFunction(final JSFunction function) { implementMethodsFix = new ImplementMethodsFix(myJsClass); } implementMethodsFix.addElementToProcess(function); - reportingClient.newAnnotation( + holder.newAnnotation( HighlightSeverity.ERROR, JavaScriptLocalize.javascriptValidationMessageInterfaceMethodNotImplemented( function.getName(), @@ -250,7 +246,7 @@ protected void addImplementedFunction(final JSFunction interfaceFunction, final final JSAttributeList attributeList = implementationFunction.getAttributeList(); if (attributeList == null || attributeList.getAccessType() != JSAttributeList.AccessType.PUBLIC) { final ASTNode node = findElementForAccessModifierError(implementationFunction, attributeList); - reportingClient.newAnnotation( + holder.newAnnotation( HighlightSeverity.ERROR, JavaScriptLocalize.javascriptValidationMessageInterfaceMethodInvalidAccessModifier() ) @@ -275,7 +271,7 @@ protected void addImplementedFunction(final JSFunction interfaceFunction, final if (incompatibleSignature == SignatureMatchResult.PARAMETERS_DIFFERS) { final JSParameterList parameterList = implementationFunction.getParameterList(); final JSParameterList expectedParameterList = interfaceFunction.getParameterList(); - reportingClient.newAnnotation( + holder.newAnnotation( HighlightSeverity.ERROR, JavaScriptLocalize.javascriptValidationMessageInterfaceMethodInvalidSignature( expectedParameterList != null ? expectedParameterList.getText() : "()" @@ -287,7 +283,7 @@ protected void addImplementedFunction(final JSFunction interfaceFunction, final else if (incompatibleSignature == SignatureMatchResult.RETURN_TYPE_DIFFERS) { PsiElement implementationReturnTypeExpr = implementationFunction.getReturnTypeElement(); PsiElement interfaceReturnTypeExpr = interfaceFunction.getReturnTypeElement(); - reportingClient.newAnnotation( + holder.newAnnotation( HighlightSeverity.ERROR, JavaScriptLocalize.javascriptValidationMessageInterfaceMethodInvalidSignature2( interfaceReturnTypeExpr != null ? interfaceReturnTypeExpr.getText() : "*" @@ -1181,7 +1177,7 @@ public String getFamilyName() { } } - checkFileUnderSourceRoot(aClass, new SimpleErrorReportingClient()); + checkFileUnderSourceRoot(aClass, myHolder); } private String getTerm(String message) { @@ -1190,7 +1186,7 @@ private String getTerm(String message) { } @RequiredReadAction - public static void checkFileUnderSourceRoot(final JSNamedElement aClass, ErrorReportingClient client) { + public static void checkFileUnderSourceRoot(final JSNamedElement aClass, AnnotationHolder holder) { PsiElement nameIdentifier = aClass.getNameIdentifier(); if (nameIdentifier == null) { nameIdentifier = aClass.getFirstChild(); @@ -1205,7 +1201,7 @@ public static void checkFileUnderSourceRoot(final JSNamedElement aClass, ErrorRe ProjectRootManager.getInstance(containingFile.getProject()).getFileIndex().getSourceRootForFile(file); if (rootForFile == null) { - client.newAnnotation(HighlightSeverity.WARNING, JavaScriptLocalize.javascriptValidationMessageFileShouldBeUnderSourceRoot()) + holder.newAnnotation(HighlightSeverity.WARNING, JavaScriptLocalize.javascriptValidationMessageFileShouldBeUnderSourceRoot()) .range(nameIdentifier.getNode()) .create(); } @@ -1273,7 +1269,7 @@ public boolean startInWriteAction() { } } - checkFileUnderSourceRoot(packageStatement, new SimpleErrorReportingClient()); + checkFileUnderSourceRoot(packageStatement, myHolder); } public static class RemoveASTNodeFix implements SyntheticIntentionAction, LocalQuickFix { @@ -1385,13 +1381,6 @@ public boolean startInWriteAction() { } } - private class SimpleErrorReportingClient implements ErrorReportingClient { - @Override - public AnnotationBuilder newAnnotation(@Nonnull HighlightSeverity severity, @Nonnull LocalizeValue message) { - return myHolder.newAnnotation(severity, message); - } - } - private static class AddSuperInvokationFix implements SyntheticIntentionAction { private final JSReferenceExpression node; private final JSFunction superConstructor; From 3f859ff100d959ddc0057906aa98c0c2105fa9f5 Mon Sep 17 00:00:00 2001 From: Valery Semenchuk Date: Thu, 12 Sep 2024 17:54:33 +0400 Subject: [PATCH 073/150] fix listeners api --- ...ByAnotherPsiElementEditorNotification.java | 33 ++++++------------- 1 file changed, 10 insertions(+), 23 deletions(-) diff --git a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/descriptionByAnotherPsiElement/DescriptionByAnotherPsiElementEditorNotification.java b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/descriptionByAnotherPsiElement/DescriptionByAnotherPsiElementEditorNotification.java index ad70357b..6ee8c95f 100644 --- a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/descriptionByAnotherPsiElement/DescriptionByAnotherPsiElementEditorNotification.java +++ b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/descriptionByAnotherPsiElement/DescriptionByAnotherPsiElementEditorNotification.java @@ -32,16 +32,11 @@ import consulo.language.psi.PsiModificationTracker; import consulo.localize.LocalizeValue; import consulo.project.Project; -import consulo.ui.Component; -import consulo.ui.annotation.RequiredUIAccess; -import consulo.ui.event.UIEvent; import consulo.util.lang.StringUtil; import consulo.virtualFileSystem.VirtualFile; - import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; -import java.util.function.Consumer; import java.util.function.Supplier; /** @@ -98,19 +93,15 @@ public EditorNotificationBuilder buildNotification( panel.withText(LocalizeValue.localizeTODO(StringUtil.SINGLE_QUOTER.apply(myProvider.getId()) + " model description is available for this file")); panel.withAction( LocalizeValue.localizeTODO("Choose " + myProvider.getPsiElementName()), - new Consumer<>() { - @Override - @RequiredUIAccess - public void accept(UIEvent uiEvent) { - T chooseElement = myProvider.chooseElement(myProject); - if (chooseElement == null) { - return; - } + e -> { + T chooseElement = myProvider.chooseElement(myProject); + if (chooseElement == null) { + return; + } - DescriptionByAnotherPsiElementService.getInstance(myProject).registerFile(file, chooseElement, myProvider); + DescriptionByAnotherPsiElementService.getInstance(myProject).registerFile(file, chooseElement, myProvider); - wantUpdate(psiFile); - } + wantUpdate(psiFile); } ); return panel; @@ -124,13 +115,9 @@ public void accept(UIEvent uiEvent) { )); panel.withAction( LocalizeValue.localizeTODO("Cancel"), - new Consumer<>() { - @Override - @RequiredUIAccess - public void accept(UIEvent uiEvent) { - if (DescriptionByAnotherPsiElementService.getInstance(myProject).removeFile(file)) { - wantUpdate(psiFile); - } + e -> { + if(DescriptionByAnotherPsiElementService.getInstance(myProject).removeFile(file)) { + wantUpdate(psiFile); } } ); From 45891aa43502cf8f0d20a39dcbaa0897534484bd Mon Sep 17 00:00:00 2001 From: Valery Semenchuk Date: Mon, 16 Sep 2024 19:17:46 +0400 Subject: [PATCH 074/150] context fix --- .../impl/JavaScriptCodeContextType.java | 95 ++++++++----------- 1 file changed, 42 insertions(+), 53 deletions(-) diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/JavaScriptCodeContextType.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/JavaScriptCodeContextType.java index 38f2381c..a4353e10 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/JavaScriptCodeContextType.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/JavaScriptCodeContextType.java @@ -19,83 +19,72 @@ import com.intellij.lang.javascript.JavaScriptSupportLoader; import com.intellij.lang.javascript.psi.JSFile; import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; -import consulo.javascript.language.JavaScriptFileType; import consulo.javascript.language.JavaScriptLanguage; import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.Language; import consulo.language.editor.highlight.SyntaxHighlighter; import consulo.language.editor.highlight.SyntaxHighlighterFactory; -import consulo.language.editor.template.context.TemplateContextType; +import consulo.language.editor.template.context.BaseTemplateContextType; +import consulo.language.editor.template.context.TemplateActionContext; import consulo.language.inject.InjectedLanguageManager; import consulo.language.psi.PsiElement; import consulo.language.psi.PsiFile; import consulo.language.psi.PsiLanguageInjectionHost; import consulo.language.psi.util.PsiTreeUtil; import consulo.util.lang.ref.Ref; -import consulo.virtualFileSystem.fileType.FileType; import consulo.xml.lang.xml.XMLLanguage; import jakarta.annotation.Nonnull; /** * @author Maxim.Mossienko - * Date: Apr 14, 2008 - * Time: 6:01:09 PM + * Date: Apr 14, 2008 + * Time: 6:01:09 PM */ @ExtensionImpl -public class JavaScriptCodeContextType extends TemplateContextType -{ - private static final String JAVA_SCRIPT = "JAVA_SCRIPT"; +public class JavaScriptCodeContextType extends BaseTemplateContextType { + private static final String JAVA_SCRIPT = "JAVA_SCRIPT"; - public JavaScriptCodeContextType() - { - super(JAVA_SCRIPT, JavaScriptLocalize.javascriptTemplateContextType().get()); - } + public JavaScriptCodeContextType() { + super(JAVA_SCRIPT, JavaScriptLocalize.javascriptTemplateContextType()); + } - @Override - public boolean isInContext(@Nonnull final PsiFile file, final int offset) - { - PsiElement at = file.findElementAt(offset); - if(at == null && offset == file.getTextLength()) - { - at = file.findElementAt(offset - 1); - } - Language language = at != null ? at.getParent().getLanguage() : null; + @Override + @RequiredReadAction + public boolean isInContext(@Nonnull TemplateActionContext context) { + PsiFile file = context.getFile(); + int offset = context.getStartOffset(); + + PsiElement at = file.findElementAt(offset); + if (at == null && offset == file.getTextLength()) { + at = file.findElementAt(offset - 1); + } + Language language = at != null ? at.getParent().getLanguage() : null; - if(language instanceof XMLLanguage) - { - final PsiLanguageInjectionHost host = PsiTreeUtil.getParentOfType(at, PsiLanguageInjectionHost.class, false); + if (language instanceof XMLLanguage) { + final PsiLanguageInjectionHost host = PsiTreeUtil.getParentOfType(at, PsiLanguageInjectionHost.class, false); - if(host != null) - { - final Ref hasJsInjection = new Ref(Boolean.FALSE); + if (host != null) { + final Ref hasJsInjection = new Ref<>(Boolean.FALSE); - InjectedLanguageManager.getInstance(at.getProject()).enumerate(host, new JSResolveUtil.JSInjectedFilesVisitor() - { - @Override - protected void process(final JSFile file) - { - hasJsInjection.set(Boolean.TRUE); - } - }); + InjectedLanguageManager.getInstance(at.getProject()).enumerate(host, new JSResolveUtil.JSInjectedFilesVisitor() { + @Override + protected void process(final JSFile file) { + hasJsInjection.set(Boolean.TRUE); + } + }); - if(hasJsInjection.get()) - { - language = JavaScriptLanguage.INSTANCE; - } - } - } - return language != null && language.isKindOf(JavaScriptLanguage.INSTANCE); - } + if (hasJsInjection.get()) { + language = JavaScriptLanguage.INSTANCE; + } + } + } + return language != null && language.isKindOf(JavaScriptLanguage.INSTANCE); + } - public boolean isInContext(@Nonnull final FileType fileType) - { - return fileType instanceof JavaScriptFileType; - } - - @Override - public SyntaxHighlighter createHighlighter() - { - return SyntaxHighlighterFactory.getSyntaxHighlighter(JavaScriptSupportLoader.ECMA_SCRIPT_L4, null, null); - } + @Override + public SyntaxHighlighter createHighlighter() { + return SyntaxHighlighterFactory.getSyntaxHighlighter(JavaScriptSupportLoader.ECMA_SCRIPT_L4, null, null); + } } From 356ed0a3a1c40cae703309356741fdb8f74b3cad Mon Sep 17 00:00:00 2001 From: Valery Semenchuk Date: Tue, 12 Nov 2024 22:28:41 +0400 Subject: [PATCH 075/150] drop usage deprecated methods --- .../lang/JavaScriptLanguageVersionPusher.java | 284 ++++++++---------- 1 file changed, 127 insertions(+), 157 deletions(-) diff --git a/plugin/src/main/java/consulo/javascript/impl/lang/JavaScriptLanguageVersionPusher.java b/plugin/src/main/java/consulo/javascript/impl/lang/JavaScriptLanguageVersionPusher.java index 6984f3b8..2606e88a 100644 --- a/plugin/src/main/java/consulo/javascript/impl/lang/JavaScriptLanguageVersionPusher.java +++ b/plugin/src/main/java/consulo/javascript/impl/lang/JavaScriptLanguageVersionPusher.java @@ -1,9 +1,8 @@ package consulo.javascript.impl.lang; -import consulo.javascript.language.JavaScriptFileType; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; -import consulo.component.messagebus.MessageBus; +import consulo.javascript.language.JavaScriptFileType; import consulo.javascript.language.JavaScriptLanguage; import consulo.javascript.language.StandardJavaScriptVersions; import consulo.javascript.module.extension.JavaScriptModuleExtension; @@ -19,7 +18,6 @@ import consulo.util.lang.ObjectUtil; import consulo.virtualFileSystem.FileAttribute; import consulo.virtualFileSystem.VirtualFile; - import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @@ -34,158 +32,130 @@ * @since 2020-06-14 */ @ExtensionImpl -public class JavaScriptLanguageVersionPusher implements FilePropertyPusher -{ - private static final FileAttribute ourFileAttribute = new FileAttribute("javascript-version", 2, false); - - private static final Key> ourChangedModulesKey = Key.create("javascript-change-marker"); - - @Override - public void initExtra(@Nonnull Project project, @Nonnull MessageBus messageBus) - { - project.getMessageBus().connect().subscribe(ModuleExtensionChangeListener.class, (oldExtension, newExtension) -> - { - if(oldExtension instanceof JavaScriptModuleExtension && newExtension instanceof JavaScriptModuleExtension) - { - if(((JavaScriptModuleExtension) oldExtension).getLanguageVersion() != ((JavaScriptModuleExtension) newExtension).getLanguageVersion()) - { - addChanged(project, newExtension); - } - } - }); - } - - private void addChanged(Project project, ModuleExtension newExtension) - { - Set changedModules = project.getUserData(ourChangedModulesKey); - if(changedModules == null) - { - changedModules = new HashSet<>(); - } - - project.putUserData(ourChangedModulesKey, changedModules); - - changedModules.add(newExtension.getModule().getName()); - } - - @Nonnull - @Override - public Key getFileDataKey() - { - return LanguageVersion.KEY; - } - - @Override - public boolean pushDirectoriesOnly() - { - return false; - } - - @Nonnull - @Override - public LanguageVersion getDefaultValue() - { - return StandardJavaScriptVersions.getInstance().getDefaultVersion(); - } - - @Nullable - @Override - @RequiredReadAction - public LanguageVersion getImmediateValue(@Nonnull Project project, @Nullable VirtualFile virtualFile) - { - if(virtualFile == null) - { - return getDefaultValue(); - } - - Module moduleForFile = ModuleUtilCore.findModuleForFile(virtualFile, project); - return moduleForFile == null ? getDefaultValue() : getImmediateValue(moduleForFile); - } - - @Nullable - @Override - @RequiredReadAction - public LanguageVersion getImmediateValue(@Nonnull Module module) - { - JavaScriptModuleExtension extension = ModuleUtilCore.getExtension(module, JavaScriptModuleExtension.class); - if(extension != null) - { - return extension.getLanguageVersion(); - } - return getDefaultValue(); - } - - @Override - public boolean acceptsFile(@Nonnull VirtualFile virtualFile) - { - return virtualFile.getFileType() == JavaScriptFileType.INSTANCE; - } - - @Override - public boolean acceptsDirectory(@Nonnull VirtualFile virtualFile, @Nonnull Project project) - { - return false; - } - - @Override - public void persistAttribute(@Nonnull Project project, @Nonnull VirtualFile virtualFile, @Nonnull LanguageVersion newAttribute) throws IOException - { - DataInputStream inputStream = ourFileAttribute.readAttribute(virtualFile); - if(inputStream != null) - { - try - { - LanguageVersion oldAttribute = read(inputStream); - if(oldAttribute.equals(newAttribute) && oldAttribute != getDefaultValue()) - { - return; - } - } - catch(IOException e) - { - inputStream.close(); - } - } - - if(newAttribute != getDefaultValue() || inputStream != null) - { - try (DataOutputStream oStream = ourFileAttribute.writeAttribute(virtualFile)) - { - write(newAttribute, oStream); - } - - PushedFilePropertiesUpdater.getInstance(project).filePropertiesChanged(virtualFile, file -> true); - } - } - - @Override - public void afterRootsChanged(@Nonnull Project project) - { - Set changedModules = project.getUserData(ourChangedModulesKey); - if(changedModules == null) - { - return; - } - - project.putUserData(ourChangedModulesKey, null); - - if(!changedModules.isEmpty()) - { - PushedFilePropertiesUpdater.getInstance(project).pushAll(this); - } - } - - @Nonnull - private LanguageVersion read(DataInputStream stream) throws IOException - { - String id = stream.readUTF(); - LanguageVersion version = JavaScriptLanguage.INSTANCE.getVersionById(id); - return ObjectUtil.notNull(version, getDefaultValue()); - - } - - private void write(LanguageVersion jsVersion, DataOutputStream stream) throws IOException - { - stream.writeUTF(jsVersion.getId()); - } +public class JavaScriptLanguageVersionPusher implements FilePropertyPusher { + private static final FileAttribute ourFileAttribute = new FileAttribute("javascript-version", 2, false); + + private static final Key> ourChangedModulesKey = Key.create("javascript-change-marker"); + + @Override + public void initExtra(@Nonnull Project project) { + project.getMessageBus().connect().subscribe(ModuleExtensionChangeListener.class, (oldExtension, newExtension) -> { + if (oldExtension instanceof JavaScriptModuleExtension && newExtension instanceof JavaScriptModuleExtension) { + if (((JavaScriptModuleExtension) oldExtension).getLanguageVersion() != ((JavaScriptModuleExtension) newExtension).getLanguageVersion()) { + addChanged(project, newExtension); + } + } + }); + } + + private void addChanged(Project project, ModuleExtension newExtension) { + Set changedModules = project.getUserData(ourChangedModulesKey); + if (changedModules == null) { + changedModules = new HashSet<>(); + } + + project.putUserData(ourChangedModulesKey, changedModules); + + changedModules.add(newExtension.getModule().getName()); + } + + @Nonnull + @Override + public Key getFileDataKey() { + return LanguageVersion.KEY; + } + + @Override + public boolean pushDirectoriesOnly() { + return false; + } + + @Nonnull + @Override + public LanguageVersion getDefaultValue() { + return StandardJavaScriptVersions.getInstance().getDefaultVersion(); + } + + @Nullable + @Override + @RequiredReadAction + public LanguageVersion getImmediateValue(@Nonnull Project project, @Nullable VirtualFile virtualFile) { + if (virtualFile == null) { + return getDefaultValue(); + } + + Module moduleForFile = ModuleUtilCore.findModuleForFile(virtualFile, project); + return moduleForFile == null ? getDefaultValue() : getImmediateValue(moduleForFile); + } + + @Nullable + @Override + @RequiredReadAction + public LanguageVersion getImmediateValue(@Nonnull Module module) { + JavaScriptModuleExtension extension = ModuleUtilCore.getExtension(module, JavaScriptModuleExtension.class); + if (extension != null) { + return extension.getLanguageVersion(); + } + return getDefaultValue(); + } + + @Override + public boolean acceptsFile(@Nonnull VirtualFile file, @Nonnull Project project) { + return file.getFileType() == JavaScriptFileType.INSTANCE; + } + + @Override + public boolean acceptsDirectory(@Nonnull VirtualFile virtualFile, @Nonnull Project project) { + return false; + } + + @Override + public void persistAttribute(@Nonnull Project project, @Nonnull VirtualFile virtualFile, @Nonnull LanguageVersion newAttribute) throws IOException { + DataInputStream inputStream = ourFileAttribute.readAttribute(virtualFile); + if (inputStream != null) { + try { + LanguageVersion oldAttribute = read(inputStream); + if (oldAttribute.equals(newAttribute) && oldAttribute != getDefaultValue()) { + return; + } + } + catch (IOException e) { + inputStream.close(); + } + } + + if (newAttribute != getDefaultValue() || inputStream != null) { + try (DataOutputStream oStream = ourFileAttribute.writeAttribute(virtualFile)) { + write(newAttribute, oStream); + } + + PushedFilePropertiesUpdater.getInstance(project).filePropertiesChanged(virtualFile, file -> true); + } + } + + @Override + public void afterRootsChanged(@Nonnull Project project) { + Set changedModules = project.getUserData(ourChangedModulesKey); + if (changedModules == null) { + return; + } + + project.putUserData(ourChangedModulesKey, null); + + if (!changedModules.isEmpty()) { + PushedFilePropertiesUpdater.getInstance(project).pushAll(this); + } + } + + @Nonnull + private LanguageVersion read(DataInputStream stream) throws IOException { + String id = stream.readUTF(); + LanguageVersion version = JavaScriptLanguage.INSTANCE.getVersionById(id); + return ObjectUtil.notNull(version, getDefaultValue()); + + } + + private void write(LanguageVersion jsVersion, DataOutputStream stream) throws IOException { + stream.writeUTF(jsVersion.getId()); + } } From cec51abe0d06e836ba5e92fcf81aaf94c2daceb3 Mon Sep 17 00:00:00 2001 From: Valery Semenchuk Date: Mon, 25 Nov 2024 15:29:26 +0400 Subject: [PATCH 076/150] fix generic --- .../ClientJavaScriptModuleExtensionPanel.java | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptModuleExtensionPanel.java b/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptModuleExtensionPanel.java index 5675fdfc..a56d4e46 100644 --- a/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptModuleExtensionPanel.java +++ b/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptModuleExtensionPanel.java @@ -16,17 +16,13 @@ package consulo.javascript.client.module.extension; -import consulo.language.version.LanguageVersion; -import consulo.ui.ex.awt.*; -import consulo.ui.ex.awt.CollectionComboBoxModel; -import consulo.ui.ex.awt.ColoredListCellRenderer; -import consulo.javascript.lang.BaseJavaScriptLanguageVersion; import consulo.javascript.language.JavaScriptLanguageVersion; import consulo.javascript.language.StandardJavaScriptVersions; import consulo.javascript.module.extension.JavaScriptMutableModuleExtension; -import consulo.ui.ex.awt.LabeledComponent; - +import consulo.language.version.LanguageVersion; +import consulo.ui.ex.awt.*; import jakarta.annotation.Nonnull; + import javax.swing.*; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; @@ -57,10 +53,10 @@ public void itemStateChanged(ItemEvent e) } } }); - languageVersionComboBox.setRenderer(new ColoredListCellRenderer() + languageVersionComboBox.setRenderer(new ColoredListCellRenderer<>() { @Override - protected void customizeCellRenderer(@Nonnull JList list, BaseJavaScriptLanguageVersion value, int index, boolean selected, boolean hasFocus) + protected void customizeCellRenderer(@Nonnull JList list, JavaScriptLanguageVersion value, int index, boolean selected, boolean hasFocus) { append(value.getPresentableName()); } From 243d908d99705005f147ece3c26b9d0426b2a2d0 Mon Sep 17 00:00:00 2001 From: Valery Semenchuk Date: Mon, 2 Dec 2024 15:45:58 +0400 Subject: [PATCH 077/150] update icons --- .../as.svg | 7 ++++++ .../javaScript.svg | 9 ++++++++ .../javaScriptModule.svg | 9 ++++++++ .../json.svg | 14 +++++------ .../jsx.svg | 8 +++++++ .../typeScript.svg | 8 +++++++ .../as.svg | 15 +++++------- .../javaScript.svg | 17 +++++++------- .../javaScriptModule.svg | 14 ++++++----- .../json.svg | 14 +++++------ .../jsx.svg | 23 ++++++------------- .../typeScript.svg | 21 ++++++----------- 12 files changed, 89 insertions(+), 70 deletions(-) create mode 100644 base-api/src/main/resources/ICON-LIB/dark/consulo.javascript.JavaScriptIconGroup/as.svg create mode 100644 base-api/src/main/resources/ICON-LIB/dark/consulo.javascript.JavaScriptIconGroup/javaScript.svg create mode 100644 base-api/src/main/resources/ICON-LIB/dark/consulo.javascript.JavaScriptIconGroup/javaScriptModule.svg create mode 100644 base-api/src/main/resources/ICON-LIB/dark/consulo.javascript.JavaScriptIconGroup/jsx.svg create mode 100644 base-api/src/main/resources/ICON-LIB/dark/consulo.javascript.JavaScriptIconGroup/typeScript.svg diff --git a/base-api/src/main/resources/ICON-LIB/dark/consulo.javascript.JavaScriptIconGroup/as.svg b/base-api/src/main/resources/ICON-LIB/dark/consulo.javascript.JavaScriptIconGroup/as.svg new file mode 100644 index 00000000..54fb344d --- /dev/null +++ b/base-api/src/main/resources/ICON-LIB/dark/consulo.javascript.JavaScriptIconGroup/as.svg @@ -0,0 +1,7 @@ + + + + + diff --git a/base-api/src/main/resources/ICON-LIB/dark/consulo.javascript.JavaScriptIconGroup/javaScript.svg b/base-api/src/main/resources/ICON-LIB/dark/consulo.javascript.JavaScriptIconGroup/javaScript.svg new file mode 100644 index 00000000..86f91868 --- /dev/null +++ b/base-api/src/main/resources/ICON-LIB/dark/consulo.javascript.JavaScriptIconGroup/javaScript.svg @@ -0,0 +1,9 @@ + + + + + + diff --git a/base-api/src/main/resources/ICON-LIB/dark/consulo.javascript.JavaScriptIconGroup/javaScriptModule.svg b/base-api/src/main/resources/ICON-LIB/dark/consulo.javascript.JavaScriptIconGroup/javaScriptModule.svg new file mode 100644 index 00000000..86f91868 --- /dev/null +++ b/base-api/src/main/resources/ICON-LIB/dark/consulo.javascript.JavaScriptIconGroup/javaScriptModule.svg @@ -0,0 +1,9 @@ + + + + + + diff --git a/base-api/src/main/resources/ICON-LIB/dark/consulo.javascript.JavaScriptIconGroup/json.svg b/base-api/src/main/resources/ICON-LIB/dark/consulo.javascript.JavaScriptIconGroup/json.svg index 48be129a..7507cc4e 100644 --- a/base-api/src/main/resources/ICON-LIB/dark/consulo.javascript.JavaScriptIconGroup/json.svg +++ b/base-api/src/main/resources/ICON-LIB/dark/consulo.javascript.JavaScriptIconGroup/json.svg @@ -1,9 +1,7 @@ - - - - - - - - + + + + diff --git a/base-api/src/main/resources/ICON-LIB/dark/consulo.javascript.JavaScriptIconGroup/jsx.svg b/base-api/src/main/resources/ICON-LIB/dark/consulo.javascript.JavaScriptIconGroup/jsx.svg new file mode 100644 index 00000000..37505479 --- /dev/null +++ b/base-api/src/main/resources/ICON-LIB/dark/consulo.javascript.JavaScriptIconGroup/jsx.svg @@ -0,0 +1,8 @@ + + + + + diff --git a/base-api/src/main/resources/ICON-LIB/dark/consulo.javascript.JavaScriptIconGroup/typeScript.svg b/base-api/src/main/resources/ICON-LIB/dark/consulo.javascript.JavaScriptIconGroup/typeScript.svg new file mode 100644 index 00000000..6495f933 --- /dev/null +++ b/base-api/src/main/resources/ICON-LIB/dark/consulo.javascript.JavaScriptIconGroup/typeScript.svg @@ -0,0 +1,8 @@ + + + + + + diff --git a/base-api/src/main/resources/ICON-LIB/light/consulo.javascript.JavaScriptIconGroup/as.svg b/base-api/src/main/resources/ICON-LIB/light/consulo.javascript.JavaScriptIconGroup/as.svg index a4afa938..8bf2482d 100644 --- a/base-api/src/main/resources/ICON-LIB/light/consulo.javascript.JavaScriptIconGroup/as.svg +++ b/base-api/src/main/resources/ICON-LIB/light/consulo.javascript.JavaScriptIconGroup/as.svg @@ -1,10 +1,7 @@ - - - - - - - - - + + + + diff --git a/base-api/src/main/resources/ICON-LIB/light/consulo.javascript.JavaScriptIconGroup/javaScript.svg b/base-api/src/main/resources/ICON-LIB/light/consulo.javascript.JavaScriptIconGroup/javaScript.svg index 0d8fa6fb..cf626328 100644 --- a/base-api/src/main/resources/ICON-LIB/light/consulo.javascript.JavaScriptIconGroup/javaScript.svg +++ b/base-api/src/main/resources/ICON-LIB/light/consulo.javascript.JavaScriptIconGroup/javaScript.svg @@ -1,10 +1,9 @@ - - - - - - - - - + + + + + diff --git a/base-api/src/main/resources/ICON-LIB/light/consulo.javascript.JavaScriptIconGroup/javaScriptModule.svg b/base-api/src/main/resources/ICON-LIB/light/consulo.javascript.JavaScriptIconGroup/javaScriptModule.svg index fc6ba53d..cf626328 100644 --- a/base-api/src/main/resources/ICON-LIB/light/consulo.javascript.JavaScriptIconGroup/javaScriptModule.svg +++ b/base-api/src/main/resources/ICON-LIB/light/consulo.javascript.JavaScriptIconGroup/javaScriptModule.svg @@ -1,7 +1,9 @@ - - - - - - + + + + + diff --git a/base-api/src/main/resources/ICON-LIB/light/consulo.javascript.JavaScriptIconGroup/json.svg b/base-api/src/main/resources/ICON-LIB/light/consulo.javascript.JavaScriptIconGroup/json.svg index 9898855a..d9ca60d9 100644 --- a/base-api/src/main/resources/ICON-LIB/light/consulo.javascript.JavaScriptIconGroup/json.svg +++ b/base-api/src/main/resources/ICON-LIB/light/consulo.javascript.JavaScriptIconGroup/json.svg @@ -1,9 +1,7 @@ - - - - - - - - + + + + diff --git a/base-api/src/main/resources/ICON-LIB/light/consulo.javascript.JavaScriptIconGroup/jsx.svg b/base-api/src/main/resources/ICON-LIB/light/consulo.javascript.JavaScriptIconGroup/jsx.svg index 81e10aad..3fdeb21a 100644 --- a/base-api/src/main/resources/ICON-LIB/light/consulo.javascript.JavaScriptIconGroup/jsx.svg +++ b/base-api/src/main/resources/ICON-LIB/light/consulo.javascript.JavaScriptIconGroup/jsx.svg @@ -1,17 +1,8 @@ - - - - - - - - - - - + + + + diff --git a/base-api/src/main/resources/ICON-LIB/light/consulo.javascript.JavaScriptIconGroup/typeScript.svg b/base-api/src/main/resources/ICON-LIB/light/consulo.javascript.JavaScriptIconGroup/typeScript.svg index 05c1e277..71acf1a7 100644 --- a/base-api/src/main/resources/ICON-LIB/light/consulo.javascript.JavaScriptIconGroup/typeScript.svg +++ b/base-api/src/main/resources/ICON-LIB/light/consulo.javascript.JavaScriptIconGroup/typeScript.svg @@ -1,15 +1,8 @@ - - - - - - - - - - + + + + + From b8e3993ba644a7c40a38a89892d002af950195a7 Mon Sep 17 00:00:00 2001 From: Valery Semenchuk Date: Wed, 4 Dec 2024 17:06:00 +0400 Subject: [PATCH 078/150] do not use index in dumb mode --- .../intellij/lang/javascript/psi/resolve/JSResolveUtil.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/JSResolveUtil.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/JSResolveUtil.java index c31b7f6d..876a91bb 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/JSResolveUtil.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/JSResolveUtil.java @@ -67,6 +67,7 @@ import consulo.module.Module; import consulo.module.content.ProjectFileIndex; import consulo.module.content.ProjectRootManager; +import consulo.project.DumbService; import consulo.project.Project; import consulo.util.collection.ArrayUtil; import consulo.util.collection.SmartList; @@ -1428,6 +1429,10 @@ public static PsiElement findClassByQName(final String link, @Nonnull GlobalSear private static PsiElement findClassByQName(final String link, final Project project, final GlobalSearchScope searchScope) { synchronized (project) { + if (DumbService.isDumb(project)) { + return null; + } + final PsiElement[] result = new PsiElement[1]; final Collection candidates = From 2749ad5373619a4c860b3e741add045c24f6d528 Mon Sep 17 00:00:00 2001 From: Valery Semenchuk Date: Thu, 5 Dec 2024 00:12:02 +0400 Subject: [PATCH 079/150] debug icons fixed --- .../run/debug/v8/V8BaseDebugProcess.java | 437 ++++++++---------- .../run/debug/v8/V8BaseVariableValue.java | 261 +++++------ .../javascript/run/debug/v8/V8StackFrame.java | 176 +++---- .../javascript/run/debug/v8/V8WatchValue.java | 41 +- 4 files changed, 411 insertions(+), 504 deletions(-) diff --git a/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8BaseDebugProcess.java b/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8BaseDebugProcess.java index 33adb147..80059353 100644 --- a/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8BaseDebugProcess.java +++ b/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8BaseDebugProcess.java @@ -16,7 +16,6 @@ package consulo.javascript.run.debug.v8; -import consulo.application.AllIcons; import consulo.application.Application; import consulo.execution.ExecutionResult; import consulo.execution.debug.*; @@ -26,6 +25,7 @@ import consulo.execution.debug.breakpoint.XLineBreakpoint; import consulo.execution.debug.evaluation.XDebuggerEditorsProvider; import consulo.execution.debug.frame.XSuspendContext; +import consulo.execution.debug.icon.ExecutionDebugIconGroup; import consulo.execution.debug.localize.XDebuggerLocalize; import consulo.execution.debug.ui.XDebugTabLayouter; import consulo.execution.ui.ExecutionConsole; @@ -39,14 +39,13 @@ import consulo.ui.ex.awt.UIUtil; import consulo.ui.ex.content.Content; import consulo.virtualFileSystem.VirtualFile; +import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; import org.chromium.sdk.Breakpoint; import org.chromium.sdk.DebugContext; import org.chromium.sdk.JavascriptVm; import org.chromium.sdk.Script; -import jakarta.annotation.Nonnull; - import java.util.Collection; import java.util.HashMap; import java.util.Map; @@ -55,242 +54,198 @@ * @author VISTALL * @since 2020-06-16 */ -public abstract class V8BaseDebugProcess extends XDebugProcess -{ - protected V myVm; - - private final ExecutionResult myResult; - private DebugContext myCurrentDebugContext; - private JavaScriptListPanel

* EcmaScript 4 implementation */ @Deprecated @DeprecationInfo("We need rename it") -public interface JSImportStatement extends JSStatement, StubBasedPsiElement, JavaScriptImportStatementBase -{ - String getImportText(); +public interface JSImportStatement extends JSStatement, StubBasedPsiElement, JavaScriptImportStatementBase { + String getImportText(); } \ No newline at end of file diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSIncludeDirective.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSIncludeDirective.java index ac89c7b5..77afe74a 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSIncludeDirective.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSIncludeDirective.java @@ -23,9 +23,8 @@ /** * @by Maxim.Mossienko */ -public interface JSIncludeDirective extends JSStatement, StubBasedPsiElement -{ - String getIncludeText(); +public interface JSIncludeDirective extends JSStatement, StubBasedPsiElement { + String getIncludeText(); - PsiFile resolveFile(); + PsiFile resolveFile(); } \ No newline at end of file diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSIndexedPropertyAccessExpression.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSIndexedPropertyAccessExpression.java index 1e347eb4..86902196 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSIndexedPropertyAccessExpression.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSIndexedPropertyAccessExpression.java @@ -23,9 +23,8 @@ * Time: 7:45:31 PM * To change this template use File | Settings | File Templates. */ -public interface JSIndexedPropertyAccessExpression extends JSExpression -{ - JSExpression getQualifier(); +public interface JSIndexedPropertyAccessExpression extends JSExpression { + JSExpression getQualifier(); - JSExpression getIndexExpression(); + JSExpression getIndexExpression(); } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSLabeledStatement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSLabeledStatement.java index 366347cf..5cf2bf9c 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSLabeledStatement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSLabeledStatement.java @@ -27,15 +27,14 @@ * Time: 6:52:43 PM * To change this template use File | Settings | File Templates. */ -public interface JSLabeledStatement extends JSStatement, PsiNameIdentifierOwner -{ - String getLabel(); +public interface JSLabeledStatement extends JSStatement, PsiNameIdentifierOwner { + String getLabel(); - @Deprecated - @DeprecationInfo("Use #getNameIdentifier()") - PsiElement getLabelIdentifier(); + @Deprecated + @DeprecationInfo("Use #getNameIdentifier()") + PsiElement getLabelIdentifier(); - JSStatement getStatement(); + JSStatement getStatement(); - JSStatement unlabel(); + JSStatement unlabel(); } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSLetExpression.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSLetExpression.java index 0cf12dbe..111e5bcf 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSLetExpression.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSLetExpression.java @@ -23,7 +23,6 @@ * Time: 6:37:59 PM * To change this template use File | Settings | File Templates. */ -public interface JSLetExpression extends JSExpression -{ - JSExpression getExpression(); +public interface JSLetExpression extends JSExpression { + JSExpression getExpression(); } \ No newline at end of file diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSLetStatement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSLetStatement.java index 4a44a60a..22d73429 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSLetStatement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSLetStatement.java @@ -19,9 +19,8 @@ /** * @author maxim */ -public interface JSLetStatement extends JSStatement -{ - JSExpression[] getExpressions(); +public interface JSLetStatement extends JSStatement { + JSExpression[] getExpressions(); - JSBlockStatement getBody(); + JSBlockStatement getBody(); } \ No newline at end of file diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSLiteralExpression.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSLiteralExpression.java index 42e11d5f..cab692fd 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSLiteralExpression.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSLiteralExpression.java @@ -20,6 +20,5 @@ * @author max * @since 7:29:31 PM Jan 30, 2005 */ -public interface JSLiteralExpression extends JSExpression -{ +public interface JSLiteralExpression extends JSExpression { } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSLoopStatement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSLoopStatement.java index 7906359f..a15ac2b9 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSLoopStatement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSLoopStatement.java @@ -23,7 +23,6 @@ * Time: 7:22:13 PM * To change this template use File | Settings | File Templates. */ -public interface JSLoopStatement extends JSStatement -{ - JSStatement getBody(); +public interface JSLoopStatement extends JSStatement { + JSStatement getBody(); } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSNamedElement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSNamedElement.java index 177b4a7f..52c050d8 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSNamedElement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSNamedElement.java @@ -23,6 +23,5 @@ /** * @author ven */ -public interface JSNamedElement extends PsiNamedElement, JSElement, NavigationItem, PsiNameIdentifierOwner -{ +public interface JSNamedElement extends PsiNamedElement, JSElement, NavigationItem, PsiNameIdentifierOwner { } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSNamespaceDeclaration.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSNamespaceDeclaration.java index 21bd6091..9361fda1 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSNamespaceDeclaration.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSNamespaceDeclaration.java @@ -24,10 +24,9 @@ * @by Maxim.Mossienko */ public interface JSNamespaceDeclaration extends JSStatement, JSQualifiedNamedElement, JSAttributeListOwner, - StubBasedPsiElement -{ - @Nullable - String getInitialValueString(); + StubBasedPsiElement { + @Nullable + String getInitialValueString(); - boolean isDeprecated(); + boolean isDeprecated(); } \ No newline at end of file diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSNewExpression.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSNewExpression.java index 7d466de8..d5e92efa 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSNewExpression.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSNewExpression.java @@ -23,6 +23,5 @@ * Time: 7:44:26 PM * To change this template use File | Settings | File Templates. */ -public interface JSNewExpression extends JSCallExpression -{ +public interface JSNewExpression extends JSCallExpression { } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSObjectLiteralExpression.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSObjectLiteralExpression.java index d51939fe..2552d442 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSObjectLiteralExpression.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSObjectLiteralExpression.java @@ -23,7 +23,6 @@ * Time: 7:38:54 PM * To change this template use File | Settings | File Templates. */ -public interface JSObjectLiteralExpression extends JSExpression -{ - JSProperty[] getProperties(); +public interface JSObjectLiteralExpression extends JSExpression { + JSProperty[] getProperties(); } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSPackageStatement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSPackageStatement.java index 67915d20..8ca502b5 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSPackageStatement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSPackageStatement.java @@ -22,9 +22,8 @@ /** * @by Maxim.Mossienko */ -public interface JSPackageStatement extends JSStatement, JSQualifiedNamedElement, StubBasedPsiElement -{ - JSSourceElement[] getStatements(); +public interface JSPackageStatement extends JSStatement, JSQualifiedNamedElement, StubBasedPsiElement { + JSSourceElement[] getStatements(); - void setQualifiedName(final String expectedPackageNameFromFile); + void setQualifiedName(final String expectedPackageNameFromFile); } \ No newline at end of file diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSParameter.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSParameter.java index cdb3b272..97c415e3 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSParameter.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSParameter.java @@ -26,20 +26,19 @@ * Date: Jan 30, 2005 * Time: 6:43:02 PM */ -public interface JSParameter extends JSVariable -{ - JSParameter[] EMPTY_ARRAY = new JSParameter[0]; +public interface JSParameter extends JSVariable { + JSParameter[] EMPTY_ARRAY = new JSParameter[0]; - ArrayFactory ARRAY_FACTORY = count -> count == 0 ? EMPTY_ARRAY : new JSParameter[count]; + ArrayFactory ARRAY_FACTORY = count -> count == 0 ? EMPTY_ARRAY : new JSParameter[count]; - JSFunction getDeclaringFunction(); + JSFunction getDeclaringFunction(); - @RequiredReadAction - boolean isRest(); + @RequiredReadAction + boolean isRest(); - @Nullable - @RequiredReadAction - PsiElement getRestElement(); + @Nullable + @RequiredReadAction + PsiElement getRestElement(); - boolean isOptional(); + boolean isOptional(); } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSParameterList.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSParameterList.java index 25b316af..f2baa3f2 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSParameterList.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSParameterList.java @@ -21,10 +21,9 @@ /** * @author max - * Date: Jan 30, 2005 - * Time: 6:42:10 PM + * Date: Jan 30, 2005 + * Time: 6:42:10 PM */ -public interface JSParameterList extends JSElement, StubBasedPsiElement -{ - JSParameter[] getParameters(); +public interface JSParameterList extends JSElement, StubBasedPsiElement { + JSParameter[] getParameters(); } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSParenthesizedExpression.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSParenthesizedExpression.java index e9fd5342..7ae3b68a 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSParenthesizedExpression.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSParenthesizedExpression.java @@ -23,7 +23,6 @@ * Time: 7:30:30 PM * To change this template use File | Settings | File Templates. */ -public interface JSParenthesizedExpression extends JSExpression -{ - JSExpression getInnerExpression(); +public interface JSParenthesizedExpression extends JSExpression { + JSExpression getInnerExpression(); } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSPostfixExpression.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSPostfixExpression.java index ddc386b6..28bcb399 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSPostfixExpression.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSPostfixExpression.java @@ -26,10 +26,9 @@ * Time: 7:41:36 PM * To change this template use File | Settings | File Templates. */ -public interface JSPostfixExpression extends JSExpression -{ - @Nullable - JSExpression getExpression(); +public interface JSPostfixExpression extends JSExpression { + @Nullable + JSExpression getExpression(); - IElementType getOperationSign(); + IElementType getOperationSign(); } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSPrefixExpression.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSPrefixExpression.java index 2c3199d2..427be979 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSPrefixExpression.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSPrefixExpression.java @@ -28,16 +28,15 @@ * Time: 7:41:36 PM * To change this template use File | Settings | File Templates. */ -public interface JSPrefixExpression extends JSExpression -{ - @Nullable - JSExpression getExpression(); +public interface JSPrefixExpression extends JSExpression { + @Nullable + JSExpression getExpression(); - @Nullable - @RequiredReadAction - IElementType getOperationSign(); + @Nullable + @RequiredReadAction + IElementType getOperationSign(); - @RequiredReadAction - @Nullable - PsiElement getOperatorElement(); + @RequiredReadAction + @Nullable + PsiElement getOperatorElement(); } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSProperty.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSProperty.java index 071ecb8f..4699a506 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSProperty.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSProperty.java @@ -29,21 +29,20 @@ * @author max * @since 7:39:29 PM Jan 30, 2005 */ -public interface JSProperty extends JSNamedElement -{ - @Nullable - @RequiredReadAction - JSExpression getValue(); +public interface JSProperty extends JSNamedElement { + @Nullable + @RequiredReadAction + JSExpression getValue(); - @Nullable - @RequiredReadAction - PsiElement getColonElement(); + @Nullable + @RequiredReadAction + PsiElement getColonElement(); - @Nullable - @RequiredReadAction - JSComputedName getComputedName(); + @Nullable + @RequiredReadAction + JSComputedName getComputedName(); - @Nonnull - @RequiredReadAction - JavaScriptType getType(); + @Nonnull + @RequiredReadAction + JavaScriptType getType(); } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSQualifiedNamedElement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSQualifiedNamedElement.java index 79631775..8765e153 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSQualifiedNamedElement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSQualifiedNamedElement.java @@ -19,7 +19,6 @@ /** * @author ven */ -public interface JSQualifiedNamedElement extends JSNamedElement -{ - String getQualifiedName(); +public interface JSQualifiedNamedElement extends JSNamedElement { + String getQualifiedName(); } \ No newline at end of file diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSReferenceExpression.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSReferenceExpression.java index ecfc17ba..f83a3ff2 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSReferenceExpression.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSReferenceExpression.java @@ -25,16 +25,15 @@ * @author max * @since 7:26:32 PM Jan 30, 2005 */ -public interface JSReferenceExpression extends JSExpression, PsiPolyVariantReference -{ - @Nullable - JSExpression getQualifier(); +public interface JSReferenceExpression extends JSExpression, PsiPolyVariantReference { + @Nullable + JSExpression getQualifier(); - @Nullable - String getReferencedName(); + @Nullable + String getReferencedName(); - @Nullable - PsiElement getReferenceNameElement(); + @Nullable + PsiElement getReferenceNameElement(); - boolean shouldCheckReferences(); + boolean shouldCheckReferences(); } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSReferenceList.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSReferenceList.java index 3b9c68b7..ed264aa2 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSReferenceList.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSReferenceList.java @@ -25,17 +25,16 @@ /** * @author Maxim.Mossienko */ -public interface JSReferenceList extends JSElement, StubBasedPsiElement -{ - @RequiredReadAction - @Nonnull - JSReferenceExpression[] getExpressions(); +public interface JSReferenceList extends JSElement, StubBasedPsiElement { + @RequiredReadAction + @Nonnull + JSReferenceExpression[] getExpressions(); - @RequiredReadAction - @Nonnull - String[] getReferenceTexts(); + @RequiredReadAction + @Nonnull + String[] getReferenceTexts(); - @RequiredReadAction - @Nonnull - JSClass[] getReferencedClasses(); + @RequiredReadAction + @Nonnull + JSClass[] getReferencedClasses(); } \ No newline at end of file diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSReturnStatement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSReturnStatement.java index 394db5fd..4ab01026 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSReturnStatement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSReturnStatement.java @@ -23,7 +23,6 @@ * Time: 7:01:41 PM * To change this template use File | Settings | File Templates. */ -public interface JSReturnStatement extends JSStatement -{ - JSExpression getExpression(); +public interface JSReturnStatement extends JSStatement { + JSExpression getExpression(); } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSSourceElement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSSourceElement.java index e732522b..9cb9d947 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSSourceElement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSSourceElement.java @@ -19,7 +19,6 @@ /** * @author ven */ -public interface JSSourceElement extends JSElement -{ - JSSourceElement[] EMPTY_ARRAY = new JSSourceElement[0]; +public interface JSSourceElement extends JSElement { + JSSourceElement[] EMPTY_ARRAY = new JSSourceElement[0]; } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSSpreadExpression.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSSpreadExpression.java index 9645b902..e704de9f 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSSpreadExpression.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSSpreadExpression.java @@ -4,7 +4,6 @@ * @author VISTALL * @since 2020-01-01 */ -public interface JSSpreadExpression extends JSExpression -{ - JSExpression getInnerExpression(); +public interface JSSpreadExpression extends JSExpression { + JSExpression getInnerExpression(); } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSStatement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSStatement.java index 032ba45c..0a56c085 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSStatement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSStatement.java @@ -25,13 +25,12 @@ * Time: 6:48:51 PM * To change this template use File | Settings | File Templates. */ -public interface JSStatement extends JSSourceElement -{ - JSStatement[] EMPTY = new JSStatement[0]; +public interface JSStatement extends JSSourceElement { + JSStatement[] EMPTY = new JSStatement[0]; - JSStatement addStatementBefore(JSStatement toAdd) throws IncorrectOperationException; + JSStatement addStatementBefore(JSStatement toAdd) throws IncorrectOperationException; - JSStatement addStatementAfter(JSStatement toAdd) throws IncorrectOperationException; + JSStatement addStatementAfter(JSStatement toAdd) throws IncorrectOperationException; - JSStatement replace(JSStatement with); + JSStatement replace(JSStatement with); } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSSuperExpression.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSSuperExpression.java index e53f6fb4..d78a5b0e 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSSuperExpression.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSSuperExpression.java @@ -19,6 +19,5 @@ /** * @by Maxim.Mossienko */ -public interface JSSuperExpression extends JSExpression -{ +public interface JSSuperExpression extends JSExpression { } \ No newline at end of file diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSSuppressionHolder.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSSuppressionHolder.java index 1ea1c297..d85b6c03 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSSuppressionHolder.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSSuppressionHolder.java @@ -23,6 +23,5 @@ * * @author yole */ -public interface JSSuppressionHolder extends PsiElement -{ +public interface JSSuppressionHolder extends PsiElement { } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSSwitchStatement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSSwitchStatement.java index d2a9b3a0..38d5915f 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSSwitchStatement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSSwitchStatement.java @@ -23,9 +23,8 @@ * Time: 7:06:18 PM * To change this template use File | Settings | File Templates. */ -public interface JSSwitchStatement extends JSStatement -{ - JSExpression getSwitchExpression(); +public interface JSSwitchStatement extends JSStatement { + JSExpression getSwitchExpression(); - JSCaseClause[] getCaseClauses(); + JSCaseClause[] getCaseClauses(); } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSThisExpression.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSThisExpression.java index a6ac795d..67c3b0fc 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSThisExpression.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSThisExpression.java @@ -23,6 +23,5 @@ * Time: 7:28:55 PM * To change this template use File | Settings | File Templates. */ -public interface JSThisExpression extends JSExpression -{ +public interface JSThisExpression extends JSExpression { } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSThrowStatement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSThrowStatement.java index 705859ae..0b5d3314 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSThrowStatement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSThrowStatement.java @@ -23,7 +23,6 @@ * Time: 7:02:11 PM * To change this template use File | Settings | File Templates. */ -public interface JSThrowStatement extends JSStatement -{ - JSExpression getExpression(); +public interface JSThrowStatement extends JSStatement { + JSExpression getExpression(); } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSTryStatement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSTryStatement.java index 0e0300a5..0093e2ea 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSTryStatement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSTryStatement.java @@ -26,17 +26,16 @@ * Time: 7:03:06 PM * To change this template use File | Settings | File Templates. */ -public interface JSTryStatement extends JSStatement -{ - JSStatement getStatement(); +public interface JSTryStatement extends JSStatement { + JSStatement getStatement(); - @Nonnull - JSCatchBlock[] getAllCatchBlocks(); + @Nonnull + JSCatchBlock[] getAllCatchBlocks(); - @Deprecated - @Nullable - JSCatchBlock getCatchBlock(); + @Deprecated + @Nullable + JSCatchBlock getCatchBlock(); - @Nullable - JSStatement getFinallyStatement(); + @Nullable + JSStatement getFinallyStatement(); } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSUseNamespaceDirective.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSUseNamespaceDirective.java index e8b4d3fe..50546d5b 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSUseNamespaceDirective.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSUseNamespaceDirective.java @@ -22,7 +22,6 @@ /** * @by Maxim.Mossienko */ -public interface JSUseNamespaceDirective extends JSStatement, StubBasedPsiElement -{ - String getNamespaceToBeUsed(); +public interface JSUseNamespaceDirective extends JSStatement, StubBasedPsiElement { + String getNamespaceToBeUsed(); } \ No newline at end of file diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSVarStatement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSVarStatement.java index a74fc00e..4fdaa0ff 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSVarStatement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSVarStatement.java @@ -28,13 +28,12 @@ * Time: 6:55:04 PM * To change this template use File | Settings | File Templates. */ -public interface JSVarStatement extends JSStatement, StubBasedPsiElement -{ - JSVariable[] getVariables(); +public interface JSVarStatement extends JSStatement, StubBasedPsiElement { + JSVariable[] getVariables(); - @Nullable - @RequiredReadAction - JSDestructuringElement getDestructuringElement(); + @Nullable + @RequiredReadAction + JSDestructuringElement getDestructuringElement(); - void declareVariable(String name, JSExpression initializer); + void declareVariable(String name, JSExpression initializer); } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSVariable.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSVariable.java index af6ea26e..dfc09d7e 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSVariable.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSVariable.java @@ -26,37 +26,36 @@ /** * @author max - * Date: Jan 30, 2005 - * Time: 6:43:42 PM + * Date: Jan 30, 2005 + * Time: 6:43:42 PM */ -public interface JSVariable extends JSQualifiedNamedElement, JSAttributeListOwner -{ - JSVariable[] EMPTY_ARRAY = new JSVariable[0]; +public interface JSVariable extends JSQualifiedNamedElement, JSAttributeListOwner { + JSVariable[] EMPTY_ARRAY = new JSVariable[0]; - boolean hasInitializer(); + boolean hasInitializer(); - @RequiredReadAction - @Nullable - JSExpression getInitializer(); + @RequiredReadAction + @Nullable + JSExpression getInitializer(); - String getInitializerText(); + String getInitializerText(); - void setInitializer(JSExpression expr) throws IncorrectOperationException; + void setInitializer(JSExpression expr) throws IncorrectOperationException; - @Nonnull - JavaScriptType getType(); + @Nonnull + JavaScriptType getType(); - @Nullable - @Deprecated - String getTypeString(); + @Nullable + @Deprecated + String getTypeString(); - @Nullable - @RequiredReadAction - JavaScriptTypeElement getTypeElement(); + @Nullable + @RequiredReadAction + JavaScriptTypeElement getTypeElement(); - boolean isConst(); + boolean isConst(); - boolean isLocal(); + boolean isLocal(); - boolean isDeprecated(); + boolean isDeprecated(); } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSWhileStatement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSWhileStatement.java index 358af431..ab8e801a 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSWhileStatement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSWhileStatement.java @@ -23,7 +23,6 @@ * Time: 7:25:13 PM * To change this template use File | Settings | File Templates. */ -public interface JSWhileStatement extends JSLoopStatement -{ - JSExpression getCondition(); +public interface JSWhileStatement extends JSLoopStatement { + JSExpression getCondition(); } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSWithStatement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSWithStatement.java index fedd0246..cd57794d 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSWithStatement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSWithStatement.java @@ -23,9 +23,8 @@ * Time: 7:01:01 PM * To change this template use File | Settings | File Templates. */ -public interface JSWithStatement extends JSStatement -{ - JSExpression getExpression(); +public interface JSWithStatement extends JSStatement { + JSExpression getExpression(); - JSStatement getStatement(); + JSStatement getStatement(); } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSYieldStatement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSYieldStatement.java index 572f2a7f..63791adb 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSYieldStatement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSYieldStatement.java @@ -23,8 +23,7 @@ * Date: Jan 30, 2005 * Time: 9:27:17 PM */ -public interface JSYieldStatement extends JSStatement -{ - @Nullable - JSExpression getExpression(); +public interface JSYieldStatement extends JSStatement { + @Nullable + JSExpression getExpression(); } \ No newline at end of file diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSAttributeListStub.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSAttributeListStub.java index 4ce4f77c..62717ff6 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSAttributeListStub.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSAttributeListStub.java @@ -21,16 +21,15 @@ /** * @author Maxim.Mossienko - * Date: Mar 25, 2008 - * Time: 4:00:16 PM + * Date: Mar 25, 2008 + * Time: 4:00:16 PM */ -public interface JSAttributeListStub extends StubElement, JSStubElement -{ - JSAttributeList.AccessType getAccessType(); +public interface JSAttributeListStub extends StubElement, JSStubElement { + JSAttributeList.AccessType getAccessType(); - boolean hasModifier(final JSAttributeList.ModifierType modifier); + boolean hasModifier(final JSAttributeList.ModifierType modifier); - String getNamespace(); + String getNamespace(); - int getFlags(); + int getFlags(); } \ No newline at end of file diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSAttributeNameValuePairStub.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSAttributeNameValuePairStub.java index d757cd9e..846fa987 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSAttributeNameValuePairStub.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSAttributeNameValuePairStub.java @@ -22,13 +22,12 @@ /** * @author Maxim.Mossienko - * Date: Jun 6, 2008 - * Time: 7:52:57 PM + * Date: Jun 6, 2008 + * Time: 7:52:57 PM */ -public interface JSAttributeNameValuePairStub extends JSStubElement, StubElement -{ - @Nullable - String getValue(); +public interface JSAttributeNameValuePairStub extends JSStubElement, StubElement { + @Nullable + String getValue(); - String getName(); + String getName(); } \ No newline at end of file diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSAttributeStub.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSAttributeStub.java index 75ec2498..7208cfe9 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSAttributeStub.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSAttributeStub.java @@ -21,9 +21,8 @@ /** * @author Maxim.Mossienko - * Date: Mar 25, 2008 - * Time: 4:00:16 PM + * Date: Mar 25, 2008 + * Time: 4:00:16 PM */ -public interface JSAttributeStub extends JSStubElement, NamedStub -{ +public interface JSAttributeStub extends JSStubElement, NamedStub { } \ No newline at end of file diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSClassStub.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSClassStub.java index 3e439ba3..b888d2cd 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSClassStub.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSClassStub.java @@ -20,12 +20,11 @@ /** * @author Maxim.Mossienko - * Date: Mar 25, 2008 - * Time: 4:00:16 PM + * Date: Mar 25, 2008 + * Time: 4:00:16 PM */ -public interface JSClassStub extends JSStubElement, JSQualifiedStub -{ - boolean isInterface(); +public interface JSClassStub extends JSStubElement, JSQualifiedStub { + boolean isInterface(); - boolean isDeprecated(); + boolean isDeprecated(); } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSFunctionStub.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSFunctionStub.java index 4d657fd5..51ae4e1d 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSFunctionStub.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSFunctionStub.java @@ -20,20 +20,19 @@ /** * @author Maxim.Mossienko - * Date: Mar 25, 2008 - * Time: 4:00:16 PM + * Date: Mar 25, 2008 + * Time: 4:00:16 PM */ -public interface JSFunctionStub extends JSStubElement, JSQualifiedStub -{ - String getReturnTypeString(); +public interface JSFunctionStub extends JSStubElement, JSQualifiedStub { + String getReturnTypeString(); - boolean isGetProperty(); + boolean isGetProperty(); - boolean isSetProperty(); + boolean isSetProperty(); - boolean isConstructor(); + boolean isConstructor(); - boolean isDeprecated(); + boolean isDeprecated(); - boolean isReferencesArguments(); + boolean isReferencesArguments(); } \ No newline at end of file diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSImportStatementStub.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSImportStatementStub.java index 0d2b74bf..b2b46c09 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSImportStatementStub.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSImportStatementStub.java @@ -21,10 +21,9 @@ /** * @author Maxim.Mossienko - * Date: Jun 6, 2008 - * Time: 7:52:44 PM + * Date: Jun 6, 2008 + * Time: 7:52:44 PM */ -public interface JSImportStatementStub extends JSStubElement, StubElement -{ - String getImportText(); +public interface JSImportStatementStub extends JSStubElement, StubElement { + String getImportText(); } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSIncludeDirectiveStub.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSIncludeDirectiveStub.java index ec6f07e3..4f0f1f6f 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSIncludeDirectiveStub.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSIncludeDirectiveStub.java @@ -21,10 +21,9 @@ /** * @author Maxim.Mossienko - * Date: Jun 6, 2008 - * Time: 7:52:57 PM + * Date: Jun 6, 2008 + * Time: 7:52:57 PM */ -public interface JSIncludeDirectiveStub extends JSStubElement, StubElement -{ - String getIncludeText(); +public interface JSIncludeDirectiveStub extends JSStubElement, StubElement { + String getIncludeText(); } \ No newline at end of file diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSNamespaceDeclarationStub.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSNamespaceDeclarationStub.java index 0c8fa342..6f1666f8 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSNamespaceDeclarationStub.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSNamespaceDeclarationStub.java @@ -20,10 +20,9 @@ /** * @author Maxim.Mossienko - * Date: Jun 6, 2008 - * Time: 7:52:57 PM + * Date: Jun 6, 2008 + * Time: 7:52:57 PM */ -public interface JSNamespaceDeclarationStub extends JSStubElement, JSQualifiedStub -{ - String getInitialValueString(); +public interface JSNamespaceDeclarationStub extends JSStubElement, JSQualifiedStub { + String getInitialValueString(); } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSPackageStatementStub.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSPackageStatementStub.java index 8021c5e1..1caf3b38 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSPackageStatementStub.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSPackageStatementStub.java @@ -20,9 +20,8 @@ /** * @author Maxim.Mossienko - * Date: Jun 6, 2008 - * Time: 7:52:30 PM + * Date: Jun 6, 2008 + * Time: 7:52:30 PM */ -public interface JSPackageStatementStub extends JSStubElement, JSQualifiedStub -{ +public interface JSPackageStatementStub extends JSStubElement, JSQualifiedStub { } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSParameterListStub.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSParameterListStub.java index 4558cb2c..a9831313 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSParameterListStub.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSParameterListStub.java @@ -20,9 +20,8 @@ /** * @author Maxim.Mossienko - * Date: Mar 25, 2008 - * Time: 4:00:16 PM + * Date: Mar 25, 2008 + * Time: 4:00:16 PM */ -public interface JSParameterListStub extends JSStubElement -{ +public interface JSParameterListStub extends JSStubElement { } \ No newline at end of file diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSParameterStub.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSParameterStub.java index 69562997..7cbcbdb9 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSParameterStub.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSParameterStub.java @@ -20,12 +20,11 @@ /** * @author Maxim.Mossienko - * Date: Mar 25, 2008 - * Time: 4:00:16 PM + * Date: Mar 25, 2008 + * Time: 4:00:16 PM */ -public interface JSParameterStub extends JSVariableStubBase -{ - boolean isRest(); +public interface JSParameterStub extends JSVariableStubBase { + boolean isRest(); - boolean isOptional(); + boolean isOptional(); } \ No newline at end of file diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSQualifiedStub.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSQualifiedStub.java index 7dcc5be5..4d47474a 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSQualifiedStub.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSQualifiedStub.java @@ -21,12 +21,11 @@ /** * @author Maxim.Mossienko - * Date: Jul 30, 2008 - * Time: 9:30:52 PM + * Date: Jul 30, 2008 + * Time: 9:30:52 PM */ -public interface JSQualifiedStub extends NamedStub, JSStubElement -{ - String getQualifiedName(); +public interface JSQualifiedStub extends NamedStub, JSStubElement { + String getQualifiedName(); - int getFlags(); + int getFlags(); } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSReferenceListStub.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSReferenceListStub.java index a281cc83..55972d9e 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSReferenceListStub.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSReferenceListStub.java @@ -21,10 +21,9 @@ /** * @author Maxim.Mossienko - * Date: Jun 6, 2008 - * Time: 7:52:51 PM + * Date: Jun 6, 2008 + * Time: 7:52:51 PM */ -public interface JSReferenceListStub extends JSStubElement, StubElement -{ - String[] getReferenceTexts(); +public interface JSReferenceListStub extends JSStubElement, StubElement { + String[] getReferenceTexts(); } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSStubElement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSStubElement.java index 6ca330de..0cc370ab 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSStubElement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSStubElement.java @@ -21,10 +21,8 @@ /** * @author Maxim.Mossienko - * Date: Mar 26, 2008 - * Time: 9:39:31 PM + * Date: Mar 26, 2008 + * Time: 9:39:31 PM */ -public interface JSStubElement extends StubElement -{ - +public interface JSStubElement extends StubElement { } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSUseNamespaceDirectiveStub.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSUseNamespaceDirectiveStub.java index 99714fcb..853a9917 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSUseNamespaceDirectiveStub.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSUseNamespaceDirectiveStub.java @@ -21,10 +21,9 @@ /** * @author Maxim.Mossienko - * Date: Jun 6, 2008 - * Time: 7:52:51 PM + * Date: Jun 6, 2008 + * Time: 7:52:51 PM */ -public interface JSUseNamespaceDirectiveStub extends JSStubElement, StubElement -{ - String getNamespaceToUse(); +public interface JSUseNamespaceDirectiveStub extends JSStubElement, StubElement { + String getNamespaceToUse(); } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSVarStatementStub.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSVarStatementStub.java index d9caa2bf..0e3f44e0 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSVarStatementStub.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSVarStatementStub.java @@ -20,9 +20,8 @@ /** * @author Maxim.Mossienko - * Date: Jun 8, 2008 - * Time: 1:51:29 PM + * Date: Jun 8, 2008 + * Time: 1:51:29 PM */ -public interface JSVarStatementStub extends JSStubElement -{ +public interface JSVarStatementStub extends JSStubElement { } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSVariableStub.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSVariableStub.java index 1d562726..7790bfeb 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSVariableStub.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSVariableStub.java @@ -20,9 +20,8 @@ /** * @author Maxim.Mossienko - * Date: Mar 25, 2008 - * Time: 4:00:16 PM + * Date: Mar 25, 2008 + * Time: 4:00:16 PM */ -public interface JSVariableStub extends JSVariableStubBase -{ +public interface JSVariableStub extends JSVariableStubBase { } \ No newline at end of file diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSVariableStubBase.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSVariableStubBase.java index d23181a3..261cff1d 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSVariableStubBase.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSVariableStubBase.java @@ -20,18 +20,17 @@ /** * @author Maxim.Mossienko - * Date: Mar 25, 2008 - * Time: 4:00:16 PM + * Date: Mar 25, 2008 + * Time: 4:00:16 PM */ -public interface JSVariableStubBase extends JSQualifiedStub, JSStubElement -{ - String getTypeString(); +public interface JSVariableStubBase extends JSQualifiedStub, JSStubElement { + String getTypeString(); - boolean isDeprecated(); + boolean isDeprecated(); - boolean isConst(); + boolean isConst(); - String getInitializerText(); + String getInitializerText(); - boolean isLocal(); + boolean isLocal(); } \ No newline at end of file From 4c428f4b62f4cfeb7c7cc253577445edece2d385 Mon Sep 17 00:00:00 2001 From: UNV Date: Sat, 11 Jan 2025 22:36:43 +0300 Subject: [PATCH 091/150] Refactoring com.intellij.lang.javascript.psi. --- .../com/intellij/lang/javascript/psi/JSArgumentList.java | 7 ++----- .../lang/javascript/psi/JSArrayLiteralExpression.java | 7 ++----- .../lang/javascript/psi/JSAssignmentExpression.java | 7 ++----- .../com/intellij/lang/javascript/psi/JSAttribute.java | 6 ++++-- .../lang/javascript/psi/JSAttributeListOwner.java | 2 +- .../lang/javascript/psi/JSAttributeNameValuePair.java | 2 +- .../intellij/lang/javascript/psi/JSBinaryExpression.java | 7 ++----- .../intellij/lang/javascript/psi/JSBlockStatement.java | 7 ++----- .../intellij/lang/javascript/psi/JSBreakStatement.java | 7 ++----- .../intellij/lang/javascript/psi/JSCallExpression.java | 7 ++----- .../com/intellij/lang/javascript/psi/JSCaseClause.java | 7 ++----- .../com/intellij/lang/javascript/psi/JSCatchBlock.java | 7 ++----- .../java/com/intellij/lang/javascript/psi/JSClass.java | 2 +- .../intellij/lang/javascript/psi/JSClassExpression.java | 2 +- .../intellij/lang/javascript/psi/JSCommaExpression.java | 7 ++----- .../lang/javascript/psi/JSConditionalExpression.java | 7 ++----- .../lang/javascript/psi/JSContinueStatement.java | 7 ++----- .../lang/javascript/psi/JSDefinitionExpression.java | 7 ++----- .../lang/javascript/psi/JSDestructuringParameter.java | 2 +- .../psi/JSDestructuringShorthandedProperty.java | 4 ++-- .../intellij/lang/javascript/psi/JSDoWhileStatement.java | 7 ++----- .../java/com/intellij/lang/javascript/psi/JSElement.java | 2 +- .../intellij/lang/javascript/psi/JSElementVisitor.java | 7 ++----- .../intellij/lang/javascript/psi/JSEmptyStatement.java | 7 ++----- .../com/intellij/lang/javascript/psi/JSExpression.java | 2 +- .../lang/javascript/psi/JSExpressionStatement.java | 5 ++--- .../intellij/lang/javascript/psi/JSForInStatement.java | 7 ++----- .../com/intellij/lang/javascript/psi/JSForStatement.java | 7 ++----- .../lang/javascript/psi/JSFunctionExpression.java | 2 +- .../intellij/lang/javascript/psi/JSFunctionProperty.java | 2 +- .../intellij/lang/javascript/psi/JSGenericSignature.java | 2 +- .../com/intellij/lang/javascript/psi/JSIfStatement.java | 7 ++----- .../intellij/lang/javascript/psi/JSImportStatement.java | 4 ++-- .../intellij/lang/javascript/psi/JSIncludeDirective.java | 2 +- .../psi/JSIndexedPropertyAccessExpression.java | 7 ++----- .../intellij/lang/javascript/psi/JSLabeledStatement.java | 7 ++----- .../intellij/lang/javascript/psi/JSLetExpression.java | 7 ++----- .../lang/javascript/psi/JSLiteralExpression.java | 2 +- .../intellij/lang/javascript/psi/JSLoopStatement.java | 7 ++----- .../lang/javascript/psi/JSNamespaceDeclaration.java | 7 ++++--- .../intellij/lang/javascript/psi/JSNewExpression.java | 7 ++----- .../lang/javascript/psi/JSObjectLiteralExpression.java | 7 ++----- .../intellij/lang/javascript/psi/JSPackageStatement.java | 2 +- .../com/intellij/lang/javascript/psi/JSParameter.java | 5 ++--- .../intellij/lang/javascript/psi/JSParameterList.java | 3 +-- .../lang/javascript/psi/JSParenthesizedExpression.java | 7 ++----- .../lang/javascript/psi/JSPostfixExpression.java | 7 ++----- .../intellij/lang/javascript/psi/JSPrefixExpression.java | 9 +++------ .../com/intellij/lang/javascript/psi/JSProperty.java | 2 +- .../lang/javascript/psi/JSReferenceExpression.java | 2 +- .../intellij/lang/javascript/psi/JSReferenceList.java | 6 +++--- .../intellij/lang/javascript/psi/JSReturnStatement.java | 7 ++----- .../com/intellij/lang/javascript/psi/JSStatement.java | 7 ++----- .../intellij/lang/javascript/psi/JSSuperExpression.java | 2 +- .../intellij/lang/javascript/psi/JSSwitchStatement.java | 7 ++----- .../intellij/lang/javascript/psi/JSThisExpression.java | 7 ++----- .../intellij/lang/javascript/psi/JSThrowStatement.java | 7 ++----- .../com/intellij/lang/javascript/psi/JSTryStatement.java | 7 ++----- .../lang/javascript/psi/JSUseNamespaceDirective.java | 2 +- .../com/intellij/lang/javascript/psi/JSVarStatement.java | 7 ++----- .../com/intellij/lang/javascript/psi/JSVariable.java | 3 +-- .../intellij/lang/javascript/psi/JSWhileStatement.java | 7 ++----- .../intellij/lang/javascript/psi/JSWithStatement.java | 7 ++----- .../intellij/lang/javascript/psi/JSYieldStatement.java | 5 ++--- .../lang/javascript/psi/stubs/JSAttributeListStub.java | 3 +-- .../psi/stubs/JSAttributeNameValuePairStub.java | 3 +-- .../lang/javascript/psi/stubs/JSAttributeStub.java | 3 +-- .../intellij/lang/javascript/psi/stubs/JSClassStub.java | 3 +-- .../lang/javascript/psi/stubs/JSFunctionStub.java | 3 +-- .../lang/javascript/psi/stubs/JSImportStatementStub.java | 3 +-- .../javascript/psi/stubs/JSIncludeDirectiveStub.java | 3 +-- .../javascript/psi/stubs/JSNamespaceDeclarationStub.java | 3 +-- .../javascript/psi/stubs/JSPackageStatementStub.java | 3 +-- .../lang/javascript/psi/stubs/JSParameterListStub.java | 3 +-- .../lang/javascript/psi/stubs/JSParameterStub.java | 3 +-- .../lang/javascript/psi/stubs/JSQualifiedStub.java | 3 +-- .../lang/javascript/psi/stubs/JSReferenceListStub.java | 3 +-- .../lang/javascript/psi/stubs/JSStubElement.java | 3 +-- .../psi/stubs/JSUseNamespaceDirectiveStub.java | 3 +-- .../lang/javascript/psi/stubs/JSVarStatementStub.java | 3 +-- .../lang/javascript/psi/stubs/JSVariableStub.java | 3 +-- .../lang/javascript/psi/stubs/JSVariableStubBase.java | 3 +-- 82 files changed, 133 insertions(+), 264 deletions(-) diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSArgumentList.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSArgumentList.java index 564efbaf..1257b8b0 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSArgumentList.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSArgumentList.java @@ -17,11 +17,8 @@ package com.intellij.lang.javascript.psi; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 7:44:58 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public interface JSArgumentList extends JSElement { JSExpression[] getArguments(); diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSArrayLiteralExpression.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSArrayLiteralExpression.java index 15de56ed..66abf008 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSArrayLiteralExpression.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSArrayLiteralExpression.java @@ -17,11 +17,8 @@ package com.intellij.lang.javascript.psi; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 7:30:55 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public interface JSArrayLiteralExpression extends JSExpression { /** diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSAssignmentExpression.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSAssignmentExpression.java index d7b81f06..147515af 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSAssignmentExpression.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSAssignmentExpression.java @@ -17,11 +17,8 @@ package com.intellij.lang.javascript.psi; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 7:40:31 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public interface JSAssignmentExpression extends JSBinaryExpression { } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSAttribute.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSAttribute.java index 942472a3..697dfcf5 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSAttribute.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSAttribute.java @@ -17,6 +17,7 @@ package com.intellij.lang.javascript.psi; import com.intellij.lang.javascript.psi.stubs.JSAttributeStub; +import consulo.annotation.access.RequiredReadAction; import consulo.language.psi.PsiNamedElement; import consulo.language.psi.StubBasedPsiElement; import consulo.util.collection.ArrayFactory; @@ -26,9 +27,9 @@ * @author Maxim.Mossienko */ public interface JSAttribute extends JSElement, PsiNamedElement, StubBasedPsiElement { - public static final JSAttribute[] EMPTY_ARRAY = new JSAttribute[0]; + JSAttribute[] EMPTY_ARRAY = new JSAttribute[0]; - public static ArrayFactory ARRAY_FACTORY = new ArrayFactory() { + ArrayFactory ARRAY_FACTORY = new ArrayFactory<>() { @Nonnull @Override public JSAttribute[] create(int count) { @@ -37,6 +38,7 @@ public JSAttribute[] create(int count) { }; @Override + @RequiredReadAction String getName(); JSAttributeNameValuePair[] getValues(); diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSAttributeListOwner.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSAttributeListOwner.java index 9cadd6d3..cf325a78 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSAttributeListOwner.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSAttributeListOwner.java @@ -21,7 +21,7 @@ import jakarta.annotation.Nullable; /** - * @by Maxim.Mossienko + * @author Maxim.Mossienko */ public interface JSAttributeListOwner extends PsiElement { @Nullable diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSAttributeNameValuePair.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSAttributeNameValuePair.java index 717f4fa1..b6767f87 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSAttributeNameValuePair.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSAttributeNameValuePair.java @@ -22,7 +22,7 @@ import consulo.language.psi.StubBasedPsiElement; /** - * @by Maxim.Mossienko + * @author Maxim.Mossienko */ public interface JSAttributeNameValuePair extends JSElement, PsiNamedElement, StubBasedPsiElement { JSAttributeNameValuePair[] EMPTY_ARRAY = new JSAttributeNameValuePair[0]; diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSBinaryExpression.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSBinaryExpression.java index e455c6ab..1deb474d 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSBinaryExpression.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSBinaryExpression.java @@ -22,11 +22,8 @@ import jakarta.annotation.Nullable; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 6:49:21 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public interface JSBinaryExpression extends JSExpression { JSExpression getLOperand(); diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSBlockStatement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSBlockStatement.java index 834e7235..f7a142f5 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSBlockStatement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSBlockStatement.java @@ -17,11 +17,8 @@ package com.intellij.lang.javascript.psi; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 6:51:45 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public interface JSBlockStatement extends JSStatement { JSStatement[] getStatements(); diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSBreakStatement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSBreakStatement.java index 93d23fc7..2039167a 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSBreakStatement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSBreakStatement.java @@ -17,11 +17,8 @@ package com.intellij.lang.javascript.psi; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 6:58:10 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public interface JSBreakStatement extends JSStatement { String getLabel(); diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSCallExpression.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSCallExpression.java index de053d68..c3c4432d 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSCallExpression.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSCallExpression.java @@ -17,11 +17,8 @@ package com.intellij.lang.javascript.psi; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 7:46:07 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public interface JSCallExpression extends JSExpression { JSExpression getMethodExpression(); diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSCaseClause.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSCaseClause.java index b7641b89..21f30835 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSCaseClause.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSCaseClause.java @@ -17,11 +17,8 @@ package com.intellij.lang.javascript.psi; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 7:16:36 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public interface JSCaseClause extends JSElement { boolean isDefault(); diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSCatchBlock.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSCatchBlock.java index 7f6b47b3..28e3a812 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSCatchBlock.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSCatchBlock.java @@ -17,11 +17,8 @@ package com.intellij.lang.javascript.psi; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 7:04:04 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public interface JSCatchBlock extends JSElement { JSCatchBlock[] EMPTY_ARRAY = new JSCatchBlock[0]; diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSClass.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSClass.java index 34090226..efa23325 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSClass.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSClass.java @@ -22,7 +22,7 @@ import consulo.navigation.Navigatable; /** - * @by Maxim.Mossienko + * @author Maxim.Mossienko */ public interface JSClass extends JSQualifiedNamedElement, JSSourceElement, JSAttributeListOwner, Navigatable, StubBasedPsiElement { JSClass[] EMPTY_ARRAY = new JSClass[0]; diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSClassExpression.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSClassExpression.java index 899d71ed..7b971391 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSClassExpression.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSClassExpression.java @@ -6,7 +6,7 @@ /** * @author VISTALL - * @since 11/12/2021 + * @since 2021-12-11 */ public interface JSClassExpression extends JSExpression { @Nonnull diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSCommaExpression.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSCommaExpression.java index bd22bcc4..c1bcfd29 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSCommaExpression.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSCommaExpression.java @@ -17,11 +17,8 @@ package com.intellij.lang.javascript.psi; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 7:42:26 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public interface JSCommaExpression extends JSBinaryExpression { } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSConditionalExpression.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSConditionalExpression.java index 96c8377b..5b2eb3cf 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSConditionalExpression.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSConditionalExpression.java @@ -17,11 +17,8 @@ package com.intellij.lang.javascript.psi; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 7:40:54 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public interface JSConditionalExpression extends JSExpression { JSExpression getCondition(); diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSContinueStatement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSContinueStatement.java index 91736e37..90e81898 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSContinueStatement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSContinueStatement.java @@ -17,11 +17,8 @@ package com.intellij.lang.javascript.psi; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 6:58:10 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public interface JSContinueStatement extends JSStatement { String getLabel(); diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSDefinitionExpression.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSDefinitionExpression.java index d4c1ed57..ebbe5147 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSDefinitionExpression.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSDefinitionExpression.java @@ -17,11 +17,8 @@ package com.intellij.lang.javascript.psi; /** - * Created by IntelliJ IDEA. - * User: maxim.mossienko - * Date: Dec 14, 2005 - * Time: 6:37:59 PM - * To change this template use File | Settings | File Templates. + * @author maxim.mossienko + * @since 2005-12-14 */ public interface JSDefinitionExpression extends JSExpression, JSNamedElement { JSExpression getExpression(); diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSDestructuringParameter.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSDestructuringParameter.java index 2fb35bed..d2618005 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSDestructuringParameter.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSDestructuringParameter.java @@ -8,7 +8,7 @@ * @since 2019-12-17 */ public interface JSDestructuringParameter extends JSParameter { - @RequiredReadAction @Nullable + @RequiredReadAction JSDestructuringObject getDestructuringObject(); } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSDestructuringShorthandedProperty.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSDestructuringShorthandedProperty.java index 913eb0e0..1b48d22e 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSDestructuringShorthandedProperty.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSDestructuringShorthandedProperty.java @@ -8,7 +8,7 @@ * @since 2019-12-14 */ public interface JSDestructuringShorthandedProperty extends JSElement { - @RequiredReadAction @Nonnull - JSVariable getVarialbe(); + @RequiredReadAction + JSVariable getVariable(); } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSDoWhileStatement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSDoWhileStatement.java index 4abc2ce7..c5bc10ae 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSDoWhileStatement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSDoWhileStatement.java @@ -17,11 +17,8 @@ package com.intellij.lang.javascript.psi; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 7:25:34 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public interface JSDoWhileStatement extends JSLoopStatement { JSExpression getCondition(); diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSElement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSElement.java index 157e44a4..89c2da37 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSElement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSElement.java @@ -20,7 +20,7 @@ /** * @author max - * @since 2:30:26 PM Feb 3, 2005 + * @since 2005-02-03 */ public interface JSElement extends NavigatablePsiElement { } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSElementVisitor.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSElementVisitor.java index 676bd01e..9e0c9eb3 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSElementVisitor.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSElementVisitor.java @@ -21,11 +21,8 @@ import consulo.language.psi.PsiElementVisitor; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Feb 3, 2005 - * Time: 2:25:12 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-02-03 */ public class JSElementVisitor extends PsiElementVisitor { public void visitJSCallExpression(final JSCallExpression node) { diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSEmptyStatement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSEmptyStatement.java index fa77a3fb..0c0a57f9 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSEmptyStatement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSEmptyStatement.java @@ -17,11 +17,8 @@ package com.intellij.lang.javascript.psi; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 6:56:36 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public interface JSEmptyStatement extends JSStatement { } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSExpression.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSExpression.java index 71135e68..717fdbf0 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSExpression.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSExpression.java @@ -24,7 +24,7 @@ /** * @author max - * @since 6:46:19 PM Jan 30, 2005 + * @since 2005-01-30 */ public interface JSExpression extends JSElement { JSExpression[] EMPTY_ARRAY = new JSExpression[0]; diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSExpressionStatement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSExpressionStatement.java index 6a51ada7..2fd6b943 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSExpressionStatement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSExpressionStatement.java @@ -20,9 +20,8 @@ import jakarta.annotation.Nullable; /** - * User: max - * Date: Jan 30, 2005 - * Time: 9:27:17 PM + * @author max + * @since 2005-01-30 */ public interface JSExpressionStatement extends JSStatement { @Nullable diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSForInStatement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSForInStatement.java index b57a50c7..292e3fde 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSForInStatement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSForInStatement.java @@ -17,11 +17,8 @@ package com.intellij.lang.javascript.psi; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 7:20:55 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public interface JSForInStatement extends JSLoopStatement { JSVarStatement getDeclarationStatement(); diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSForStatement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSForStatement.java index 54c49c7d..e4896067 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSForStatement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSForStatement.java @@ -17,11 +17,8 @@ package com.intellij.lang.javascript.psi; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 7:21:49 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public interface JSForStatement extends JSLoopStatement { JSVarStatement getVarDeclaration(); diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSFunctionExpression.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSFunctionExpression.java index 6a1c1a64..8d6bc703 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSFunctionExpression.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSFunctionExpression.java @@ -20,7 +20,7 @@ /** * @author max - * @since 7:42:48 PM Jan 30, 2005 + * @since 2005-01-30 */ public interface JSFunctionExpression extends JSFunction, JSExpression { @Nonnull diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSFunctionProperty.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSFunctionProperty.java index 452fa1f1..e58eb63c 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSFunctionProperty.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSFunctionProperty.java @@ -2,7 +2,7 @@ /** * @author VISTALL - * @since 19/12/2021 + * @since 2021-12-19 */ public interface JSFunctionProperty extends JSProperty, JSFunction { } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSGenericSignature.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSGenericSignature.java index 8121a2c9..617f0b6e 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSGenericSignature.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSGenericSignature.java @@ -17,7 +17,7 @@ package com.intellij.lang.javascript.psi; /** - * @by Maxim.Mossienko + * @author Maxim.Mossienko */ public interface JSGenericSignature extends JSElement { } \ No newline at end of file diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSIfStatement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSIfStatement.java index af1c2f3e..fabe9159 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSIfStatement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSIfStatement.java @@ -17,11 +17,8 @@ package com.intellij.lang.javascript.psi; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 6:56:53 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public interface JSIfStatement extends JSStatement { JSExpression getCondition(); diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSImportStatement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSImportStatement.java index b4081f35..4d4a7209 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSImportStatement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSImportStatement.java @@ -22,9 +22,9 @@ import consulo.language.psi.StubBasedPsiElement; /** - * @by Maxim.Mossienko - *

* EcmaScript 4 implementation + * + * @author Maxim.Mossienko */ @Deprecated @DeprecationInfo("We need rename it") diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSIncludeDirective.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSIncludeDirective.java index 77afe74a..66dd7537 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSIncludeDirective.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSIncludeDirective.java @@ -21,7 +21,7 @@ import consulo.language.psi.StubBasedPsiElement; /** - * @by Maxim.Mossienko + * @author Maxim.Mossienko */ public interface JSIncludeDirective extends JSStatement, StubBasedPsiElement { String getIncludeText(); diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSIndexedPropertyAccessExpression.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSIndexedPropertyAccessExpression.java index 86902196..78ba3a0b 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSIndexedPropertyAccessExpression.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSIndexedPropertyAccessExpression.java @@ -17,11 +17,8 @@ package com.intellij.lang.javascript.psi; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 7:45:31 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public interface JSIndexedPropertyAccessExpression extends JSExpression { JSExpression getQualifier(); diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSLabeledStatement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSLabeledStatement.java index 5cf2bf9c..dca855f7 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSLabeledStatement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSLabeledStatement.java @@ -21,11 +21,8 @@ import consulo.annotation.DeprecationInfo; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 6:52:43 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public interface JSLabeledStatement extends JSStatement, PsiNameIdentifierOwner { String getLabel(); diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSLetExpression.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSLetExpression.java index 111e5bcf..355fee29 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSLetExpression.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSLetExpression.java @@ -17,11 +17,8 @@ package com.intellij.lang.javascript.psi; /** - * Created by IntelliJ IDEA. - * User: maxim.mossienko - * Date: Dec 14, 2005 - * Time: 6:37:59 PM - * To change this template use File | Settings | File Templates. + * @author maxim.mossienko + * @since 2005-12-14 */ public interface JSLetExpression extends JSExpression { JSExpression getExpression(); diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSLiteralExpression.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSLiteralExpression.java index cab692fd..d3ecf075 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSLiteralExpression.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSLiteralExpression.java @@ -18,7 +18,7 @@ /** * @author max - * @since 7:29:31 PM Jan 30, 2005 + * @since 2005-01-30 */ public interface JSLiteralExpression extends JSExpression { } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSLoopStatement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSLoopStatement.java index a15ac2b9..a842b55c 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSLoopStatement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSLoopStatement.java @@ -17,11 +17,8 @@ package com.intellij.lang.javascript.psi; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 7:22:13 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public interface JSLoopStatement extends JSStatement { JSStatement getBody(); diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSNamespaceDeclaration.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSNamespaceDeclaration.java index 9361fda1..f8bd8cda 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSNamespaceDeclaration.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSNamespaceDeclaration.java @@ -21,10 +21,11 @@ import jakarta.annotation.Nullable; /** - * @by Maxim.Mossienko + * @author Maxim.Mossienko */ -public interface JSNamespaceDeclaration extends JSStatement, JSQualifiedNamedElement, JSAttributeListOwner, - StubBasedPsiElement { +public interface JSNamespaceDeclaration + extends JSStatement, JSQualifiedNamedElement, JSAttributeListOwner, StubBasedPsiElement { + @Nullable String getInitialValueString(); diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSNewExpression.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSNewExpression.java index d5e92efa..d2426405 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSNewExpression.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSNewExpression.java @@ -17,11 +17,8 @@ package com.intellij.lang.javascript.psi; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 7:44:26 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public interface JSNewExpression extends JSCallExpression { } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSObjectLiteralExpression.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSObjectLiteralExpression.java index 2552d442..64dc260e 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSObjectLiteralExpression.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSObjectLiteralExpression.java @@ -17,11 +17,8 @@ package com.intellij.lang.javascript.psi; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 7:38:54 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public interface JSObjectLiteralExpression extends JSExpression { JSProperty[] getProperties(); diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSPackageStatement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSPackageStatement.java index 8ca502b5..be246160 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSPackageStatement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSPackageStatement.java @@ -20,7 +20,7 @@ import consulo.language.psi.StubBasedPsiElement; /** - * @by Maxim.Mossienko + * @author Maxim.Mossienko */ public interface JSPackageStatement extends JSStatement, JSQualifiedNamedElement, StubBasedPsiElement { JSSourceElement[] getStatements(); diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSParameter.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSParameter.java index 97c415e3..e4551b72 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSParameter.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSParameter.java @@ -22,9 +22,8 @@ import jakarta.annotation.Nullable; /** - * User: max - * Date: Jan 30, 2005 - * Time: 6:43:02 PM + * @author max + * @since 2005-01-30 */ public interface JSParameter extends JSVariable { JSParameter[] EMPTY_ARRAY = new JSParameter[0]; diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSParameterList.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSParameterList.java index f2baa3f2..d6ffcb89 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSParameterList.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSParameterList.java @@ -21,8 +21,7 @@ /** * @author max - * Date: Jan 30, 2005 - * Time: 6:42:10 PM + * @since 2005-01-30 */ public interface JSParameterList extends JSElement, StubBasedPsiElement { JSParameter[] getParameters(); diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSParenthesizedExpression.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSParenthesizedExpression.java index 7ae3b68a..44fe2b9d 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSParenthesizedExpression.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSParenthesizedExpression.java @@ -17,11 +17,8 @@ package com.intellij.lang.javascript.psi; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 7:30:30 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public interface JSParenthesizedExpression extends JSExpression { JSExpression getInnerExpression(); diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSPostfixExpression.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSPostfixExpression.java index 28bcb399..3bec6450 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSPostfixExpression.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSPostfixExpression.java @@ -20,11 +20,8 @@ import consulo.language.ast.IElementType; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 7:41:36 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public interface JSPostfixExpression extends JSExpression { @Nullable diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSPrefixExpression.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSPrefixExpression.java index 427be979..804f4c98 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSPrefixExpression.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSPrefixExpression.java @@ -22,11 +22,8 @@ import jakarta.annotation.Nullable; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 7:41:36 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public interface JSPrefixExpression extends JSExpression { @Nullable @@ -36,7 +33,7 @@ public interface JSPrefixExpression extends JSExpression { @RequiredReadAction IElementType getOperationSign(); - @RequiredReadAction @Nullable + @RequiredReadAction PsiElement getOperatorElement(); } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSProperty.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSProperty.java index 4699a506..8a2858c4 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSProperty.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSProperty.java @@ -27,7 +27,7 @@ /** * @author max - * @since 7:39:29 PM Jan 30, 2005 + * @since 2005-01-30 */ public interface JSProperty extends JSNamedElement { @Nullable diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSReferenceExpression.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSReferenceExpression.java index f83a3ff2..0c43a695 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSReferenceExpression.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSReferenceExpression.java @@ -23,7 +23,7 @@ /** * @author max - * @since 7:26:32 PM Jan 30, 2005 + * @since 2005-01-30 */ public interface JSReferenceExpression extends JSExpression, PsiPolyVariantReference { @Nullable diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSReferenceList.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSReferenceList.java index ed264aa2..765577a4 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSReferenceList.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSReferenceList.java @@ -26,15 +26,15 @@ * @author Maxim.Mossienko */ public interface JSReferenceList extends JSElement, StubBasedPsiElement { - @RequiredReadAction @Nonnull + @RequiredReadAction JSReferenceExpression[] getExpressions(); - @RequiredReadAction @Nonnull + @RequiredReadAction String[] getReferenceTexts(); - @RequiredReadAction @Nonnull + @RequiredReadAction JSClass[] getReferencedClasses(); } \ No newline at end of file diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSReturnStatement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSReturnStatement.java index 4ab01026..13c306f0 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSReturnStatement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSReturnStatement.java @@ -17,11 +17,8 @@ package com.intellij.lang.javascript.psi; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 7:01:41 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public interface JSReturnStatement extends JSStatement { JSExpression getExpression(); diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSStatement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSStatement.java index 0a56c085..3cd19249 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSStatement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSStatement.java @@ -19,11 +19,8 @@ import consulo.language.util.IncorrectOperationException; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 6:48:51 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public interface JSStatement extends JSSourceElement { JSStatement[] EMPTY = new JSStatement[0]; diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSSuperExpression.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSSuperExpression.java index d78a5b0e..e7f47e5a 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSSuperExpression.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSSuperExpression.java @@ -17,7 +17,7 @@ package com.intellij.lang.javascript.psi; /** - * @by Maxim.Mossienko + * @author Maxim.Mossienko */ public interface JSSuperExpression extends JSExpression { } \ No newline at end of file diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSSwitchStatement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSSwitchStatement.java index 38d5915f..68aa4d33 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSSwitchStatement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSSwitchStatement.java @@ -17,11 +17,8 @@ package com.intellij.lang.javascript.psi; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 7:06:18 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public interface JSSwitchStatement extends JSStatement { JSExpression getSwitchExpression(); diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSThisExpression.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSThisExpression.java index 67c3b0fc..7cae6897 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSThisExpression.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSThisExpression.java @@ -17,11 +17,8 @@ package com.intellij.lang.javascript.psi; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 7:28:55 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public interface JSThisExpression extends JSExpression { } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSThrowStatement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSThrowStatement.java index 0b5d3314..d4dbb1c3 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSThrowStatement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSThrowStatement.java @@ -17,11 +17,8 @@ package com.intellij.lang.javascript.psi; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 7:02:11 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public interface JSThrowStatement extends JSStatement { JSExpression getExpression(); diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSTryStatement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSTryStatement.java index 0093e2ea..8d8c1f7c 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSTryStatement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSTryStatement.java @@ -20,11 +20,8 @@ import jakarta.annotation.Nullable; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 7:03:06 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public interface JSTryStatement extends JSStatement { JSStatement getStatement(); diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSUseNamespaceDirective.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSUseNamespaceDirective.java index 50546d5b..24c42cfa 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSUseNamespaceDirective.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSUseNamespaceDirective.java @@ -20,7 +20,7 @@ import consulo.language.psi.StubBasedPsiElement; /** - * @by Maxim.Mossienko + * @author Maxim.Mossienko */ public interface JSUseNamespaceDirective extends JSStatement, StubBasedPsiElement { String getNamespaceToBeUsed(); diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSVarStatement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSVarStatement.java index 4fdaa0ff..33209cdd 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSVarStatement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSVarStatement.java @@ -22,11 +22,8 @@ import jakarta.annotation.Nullable; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 6:55:04 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public interface JSVarStatement extends JSStatement, StubBasedPsiElement { JSVariable[] getVariables(); diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSVariable.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSVariable.java index dfc09d7e..b5e8c804 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSVariable.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSVariable.java @@ -26,8 +26,7 @@ /** * @author max - * Date: Jan 30, 2005 - * Time: 6:43:42 PM + * @since 2005-01-30 */ public interface JSVariable extends JSQualifiedNamedElement, JSAttributeListOwner { JSVariable[] EMPTY_ARRAY = new JSVariable[0]; diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSWhileStatement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSWhileStatement.java index ab8e801a..986f7e13 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSWhileStatement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSWhileStatement.java @@ -17,11 +17,8 @@ package com.intellij.lang.javascript.psi; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 7:25:13 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public interface JSWhileStatement extends JSLoopStatement { JSExpression getCondition(); diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSWithStatement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSWithStatement.java index cd57794d..a9ed2b3b 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSWithStatement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSWithStatement.java @@ -17,11 +17,8 @@ package com.intellij.lang.javascript.psi; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 7:01:01 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public interface JSWithStatement extends JSStatement { JSExpression getExpression(); diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSYieldStatement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSYieldStatement.java index 63791adb..ae7463a0 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSYieldStatement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSYieldStatement.java @@ -19,9 +19,8 @@ import jakarta.annotation.Nullable; /** - * User: max - * Date: Jan 30, 2005 - * Time: 9:27:17 PM + * @author Maxim.Mossienko + * @since 2005-01-30 */ public interface JSYieldStatement extends JSStatement { @Nullable diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSAttributeListStub.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSAttributeListStub.java index 62717ff6..f0b68dbd 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSAttributeListStub.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSAttributeListStub.java @@ -21,8 +21,7 @@ /** * @author Maxim.Mossienko - * Date: Mar 25, 2008 - * Time: 4:00:16 PM + * @since 2008-03-25 */ public interface JSAttributeListStub extends StubElement, JSStubElement { JSAttributeList.AccessType getAccessType(); diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSAttributeNameValuePairStub.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSAttributeNameValuePairStub.java index 846fa987..18b51cfa 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSAttributeNameValuePairStub.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSAttributeNameValuePairStub.java @@ -22,8 +22,7 @@ /** * @author Maxim.Mossienko - * Date: Jun 6, 2008 - * Time: 7:52:57 PM + * @since 2008-06-06 */ public interface JSAttributeNameValuePairStub extends JSStubElement, StubElement { @Nullable diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSAttributeStub.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSAttributeStub.java index 7208cfe9..e757e32c 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSAttributeStub.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSAttributeStub.java @@ -21,8 +21,7 @@ /** * @author Maxim.Mossienko - * Date: Mar 25, 2008 - * Time: 4:00:16 PM + * @since 2008-03-25 */ public interface JSAttributeStub extends JSStubElement, NamedStub { } \ No newline at end of file diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSClassStub.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSClassStub.java index b888d2cd..41c8861b 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSClassStub.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSClassStub.java @@ -20,8 +20,7 @@ /** * @author Maxim.Mossienko - * Date: Mar 25, 2008 - * Time: 4:00:16 PM + * @since 2008-03-25 */ public interface JSClassStub extends JSStubElement, JSQualifiedStub { boolean isInterface(); diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSFunctionStub.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSFunctionStub.java index 51ae4e1d..52e388c2 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSFunctionStub.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSFunctionStub.java @@ -20,8 +20,7 @@ /** * @author Maxim.Mossienko - * Date: Mar 25, 2008 - * Time: 4:00:16 PM + * @since 2008-03-25 */ public interface JSFunctionStub extends JSStubElement, JSQualifiedStub { String getReturnTypeString(); diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSImportStatementStub.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSImportStatementStub.java index b2b46c09..171f941e 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSImportStatementStub.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSImportStatementStub.java @@ -21,8 +21,7 @@ /** * @author Maxim.Mossienko - * Date: Jun 6, 2008 - * Time: 7:52:44 PM + * @since 2008-06-06 */ public interface JSImportStatementStub extends JSStubElement, StubElement { String getImportText(); diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSIncludeDirectiveStub.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSIncludeDirectiveStub.java index 4f0f1f6f..6954fef0 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSIncludeDirectiveStub.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSIncludeDirectiveStub.java @@ -21,8 +21,7 @@ /** * @author Maxim.Mossienko - * Date: Jun 6, 2008 - * Time: 7:52:57 PM + * @since 2008-06-06 */ public interface JSIncludeDirectiveStub extends JSStubElement, StubElement { String getIncludeText(); diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSNamespaceDeclarationStub.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSNamespaceDeclarationStub.java index 6f1666f8..762a22a5 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSNamespaceDeclarationStub.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSNamespaceDeclarationStub.java @@ -20,8 +20,7 @@ /** * @author Maxim.Mossienko - * Date: Jun 6, 2008 - * Time: 7:52:57 PM + * @since 2008-06-06 */ public interface JSNamespaceDeclarationStub extends JSStubElement, JSQualifiedStub { String getInitialValueString(); diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSPackageStatementStub.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSPackageStatementStub.java index 1caf3b38..79237ac0 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSPackageStatementStub.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSPackageStatementStub.java @@ -20,8 +20,7 @@ /** * @author Maxim.Mossienko - * Date: Jun 6, 2008 - * Time: 7:52:30 PM + * @since 2008-06-06 */ public interface JSPackageStatementStub extends JSStubElement, JSQualifiedStub { } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSParameterListStub.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSParameterListStub.java index a9831313..50fadd94 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSParameterListStub.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSParameterListStub.java @@ -20,8 +20,7 @@ /** * @author Maxim.Mossienko - * Date: Mar 25, 2008 - * Time: 4:00:16 PM + * @since 2008-03-25 */ public interface JSParameterListStub extends JSStubElement { } \ No newline at end of file diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSParameterStub.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSParameterStub.java index 7cbcbdb9..afb9ed81 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSParameterStub.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSParameterStub.java @@ -20,8 +20,7 @@ /** * @author Maxim.Mossienko - * Date: Mar 25, 2008 - * Time: 4:00:16 PM + * @since 2008-03-25 */ public interface JSParameterStub extends JSVariableStubBase { boolean isRest(); diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSQualifiedStub.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSQualifiedStub.java index 4d47474a..eb018dab 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSQualifiedStub.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSQualifiedStub.java @@ -21,8 +21,7 @@ /** * @author Maxim.Mossienko - * Date: Jul 30, 2008 - * Time: 9:30:52 PM + * @since 2008-07-30 */ public interface JSQualifiedStub extends NamedStub, JSStubElement { String getQualifiedName(); diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSReferenceListStub.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSReferenceListStub.java index 55972d9e..83973abd 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSReferenceListStub.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSReferenceListStub.java @@ -21,8 +21,7 @@ /** * @author Maxim.Mossienko - * Date: Jun 6, 2008 - * Time: 7:52:51 PM + * @since 2008-06-06 */ public interface JSReferenceListStub extends JSStubElement, StubElement { String[] getReferenceTexts(); diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSStubElement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSStubElement.java index 0cc370ab..5b2b9f90 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSStubElement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSStubElement.java @@ -21,8 +21,7 @@ /** * @author Maxim.Mossienko - * Date: Mar 26, 2008 - * Time: 9:39:31 PM + * @since 2008-03-26 */ public interface JSStubElement extends StubElement { } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSUseNamespaceDirectiveStub.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSUseNamespaceDirectiveStub.java index 853a9917..25c4327b 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSUseNamespaceDirectiveStub.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSUseNamespaceDirectiveStub.java @@ -21,8 +21,7 @@ /** * @author Maxim.Mossienko - * Date: Jun 6, 2008 - * Time: 7:52:51 PM + * @since 2008-06-06 */ public interface JSUseNamespaceDirectiveStub extends JSStubElement, StubElement { String getNamespaceToUse(); diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSVarStatementStub.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSVarStatementStub.java index 0e3f44e0..bc5d729a 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSVarStatementStub.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSVarStatementStub.java @@ -20,8 +20,7 @@ /** * @author Maxim.Mossienko - * Date: Jun 8, 2008 - * Time: 1:51:29 PM + * @since 2008-06-08 */ public interface JSVarStatementStub extends JSStubElement { } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSVariableStub.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSVariableStub.java index 7790bfeb..ff736696 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSVariableStub.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSVariableStub.java @@ -20,8 +20,7 @@ /** * @author Maxim.Mossienko - * Date: Mar 25, 2008 - * Time: 4:00:16 PM + * @since 2008-03-25 */ public interface JSVariableStub extends JSVariableStubBase { } \ No newline at end of file diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSVariableStubBase.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSVariableStubBase.java index 261cff1d..552c705a 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSVariableStubBase.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSVariableStubBase.java @@ -20,8 +20,7 @@ /** * @author Maxim.Mossienko - * Date: Mar 25, 2008 - * Time: 4:00:16 PM + * @since 2008-03-25 */ public interface JSVariableStubBase extends JSQualifiedStub, JSStubElement { String getTypeString(); From b07daba658cfab977faa66184b21c3548f24cad4 Mon Sep 17 00:00:00 2001 From: UNV Date: Sun, 12 Jan 2025 04:11:53 +0300 Subject: [PATCH 092/150] Refactoring psi impl (first part). --- .../psi/JSArrayLiteralExpression.java | 3 + .../lang/javascript/psi/JSAttributeList.java | 7 + .../psi/JSAttributeNameValuePair.java | 3 + .../javascript/psi/JSBinaryExpression.java | 2 + .../lang/javascript/psi/JSBreakStatement.java | 4 + .../lang/javascript/psi/JSCallExpression.java | 3 + .../lang/javascript/psi/JSCaseClause.java | 4 + .../lang/javascript/psi/JSCatchBlock.java | 3 + .../intellij/lang/javascript/psi/JSClass.java | 6 +- .../psi/JSConditionalExpression.java | 5 + .../javascript/psi/JSContinueStatement.java | 3 + .../lang/javascript/psi/JSDocComment.java | 2 + .../lang/javascript/psi/JSElementVisitor.java | 133 ++++++------ .../intellij/lang/javascript/psi/JSFile.java | 2 +- .../lang/javascript/psi/JSForInStatement.java | 4 + .../lang/javascript/psi/JSForStatement.java | 6 + .../lang/javascript/psi/JSFunction.java | 5 +- .../lang/javascript/psi/JSIfStatement.java | 3 + .../javascript/psi/JSImportStatement.java | 4 +- .../javascript/psi/JSIncludeDirective.java | 3 + .../JSIndexedPropertyAccessExpression.java | 4 + .../javascript/psi/JSLabeledStatement.java | 3 + .../lang/javascript/psi/JSLoopStatement.java | 3 + .../javascript/psi/JSPackageStatement.java | 4 +- .../javascript/psi/JSPostfixExpression.java | 2 + .../psi/JSQualifiedNamedElement.java | 3 + .../lang/javascript/psi/JSStatement.java | 4 + .../lang/javascript/psi/JSTryStatement.java | 5 + .../psi/JSUseNamespaceDirective.java | 2 + .../lang/javascript/psi/JSVarStatement.java | 1 + .../lang/javascript/psi/JSVariable.java | 1 + .../psi/stubs/JSAttributeListStub.java | 2 +- .../JSDocumentationProvider.java | 191 +++++++++-------- .../javascript/flex/XmlBackedJSClassImpl.java | 193 ++++++++++-------- .../psi/impl/JSArgumentListImpl.java | 7 +- .../impl/JSArrayLiteralExpressionImpl.java | 13 +- .../psi/impl/JSAssignmentExpressionImpl.java | 9 +- .../javascript/psi/impl/JSAttributeImpl.java | 63 +++--- .../psi/impl/JSAttributeListImpl.java | 92 ++++----- .../impl/JSAttributeNameValuePairImpl.java | 55 +++-- .../psi/impl/JSBinaryExpressionImpl.java | 32 +-- .../psi/impl/JSBlockStatementImpl.java | 18 +- .../psi/impl/JSBreakStatementImpl.java | 11 +- .../psi/impl/JavaScriptSimpleType.java | 2 +- .../reference/JSPropertyNameReference.java | 6 +- 45 files changed, 521 insertions(+), 410 deletions(-) diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSArrayLiteralExpression.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSArrayLiteralExpression.java index 66abf008..f2cd42bc 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSArrayLiteralExpression.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSArrayLiteralExpression.java @@ -16,6 +16,8 @@ package com.intellij.lang.javascript.psi; +import consulo.annotation.access.RequiredReadAction; + /** * @author max * @since 2005-01-30 @@ -25,5 +27,6 @@ public interface JSArrayLiteralExpression extends JSExpression { * @return nulls stand in the returned array for skipped values. This for [,1,] array of 3 elements to be returned with first and last * elements nulled */ + @RequiredReadAction JSExpression[] getExpressions(); } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSAttributeList.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSAttributeList.java index 56ab6f7c..a2aae4cf 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSAttributeList.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSAttributeList.java @@ -16,6 +16,7 @@ package com.intellij.lang.javascript.psi; +import consulo.annotation.access.RequiredReadAction; import jakarta.annotation.Nullable; import com.intellij.lang.javascript.psi.stubs.JSAttributeListStub; @@ -28,14 +29,17 @@ */ public interface JSAttributeList extends JSElement, StubBasedPsiElement { @Nullable + @RequiredReadAction String getNamespace(); @Nullable + @RequiredReadAction JSReferenceExpression getNamespaceElement(); JSAttribute[] getAttributes(); @Nonnull + @RequiredReadAction JSAttribute[] getAttributesByName(@Nonnull String name); enum AccessType { @@ -45,9 +49,11 @@ enum AccessType { PROTECTED } + @RequiredReadAction AccessType getAccessType(); @Nullable + @RequiredReadAction PsiElement findAccessTypeElement(); enum ModifierType { @@ -59,5 +65,6 @@ enum ModifierType { VIRTUAL } + @RequiredReadAction boolean hasModifier(ModifierType modifier); } \ No newline at end of file diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSAttributeNameValuePair.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSAttributeNameValuePair.java index b6767f87..b2147f49 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSAttributeNameValuePair.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSAttributeNameValuePair.java @@ -16,6 +16,7 @@ package com.intellij.lang.javascript.psi; +import consulo.annotation.access.RequiredReadAction; import jakarta.annotation.Nullable; import com.intellij.lang.javascript.psi.stubs.JSAttributeNameValuePairStub; import consulo.language.psi.PsiNamedElement; @@ -27,8 +28,10 @@ public interface JSAttributeNameValuePair extends JSElement, PsiNamedElement, StubBasedPsiElement { JSAttributeNameValuePair[] EMPTY_ARRAY = new JSAttributeNameValuePair[0]; + @RequiredReadAction JSExpression getValue(); @Nullable + @RequiredReadAction String getSimpleValue(); } \ No newline at end of file diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSBinaryExpression.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSBinaryExpression.java index 1deb474d..a13a2643 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSBinaryExpression.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSBinaryExpression.java @@ -26,8 +26,10 @@ * @since 2005-01-30 */ public interface JSBinaryExpression extends JSExpression { + @RequiredReadAction JSExpression getLOperand(); + @RequiredReadAction JSExpression getROperand(); @Nullable diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSBreakStatement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSBreakStatement.java index 2039167a..23c3ab44 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSBreakStatement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSBreakStatement.java @@ -16,12 +16,16 @@ package com.intellij.lang.javascript.psi; +import consulo.annotation.access.RequiredReadAction; + /** * @author max * @since 2005-01-30 */ public interface JSBreakStatement extends JSStatement { + @RequiredReadAction String getLabel(); + @RequiredReadAction JSStatement getStatementToBreak(); } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSCallExpression.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSCallExpression.java index c3c4432d..7c7c4311 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSCallExpression.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSCallExpression.java @@ -16,6 +16,8 @@ package com.intellij.lang.javascript.psi; +import consulo.annotation.access.RequiredReadAction; + /** * @author max * @since 2005-01-30 @@ -23,5 +25,6 @@ public interface JSCallExpression extends JSExpression { JSExpression getMethodExpression(); + @RequiredReadAction JSArgumentList getArgumentList(); } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSCaseClause.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSCaseClause.java index 21f30835..00dde4dc 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSCaseClause.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSCaseClause.java @@ -16,13 +16,17 @@ package com.intellij.lang.javascript.psi; +import consulo.annotation.access.RequiredReadAction; + /** * @author max * @since 2005-01-30 */ public interface JSCaseClause extends JSElement { + @RequiredReadAction boolean isDefault(); + @RequiredReadAction JSExpression getCaseExpression(); JSStatement[] getStatements(); diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSCatchBlock.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSCatchBlock.java index 28e3a812..be01f5c8 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSCatchBlock.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSCatchBlock.java @@ -16,6 +16,8 @@ package com.intellij.lang.javascript.psi; +import consulo.annotation.access.RequiredReadAction; + /** * @author max * @since 2005-01-30 @@ -23,6 +25,7 @@ public interface JSCatchBlock extends JSElement { JSCatchBlock[] EMPTY_ARRAY = new JSCatchBlock[0]; + @RequiredReadAction JSParameter getParameter(); JSStatement getStatement(); diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSClass.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSClass.java index efa23325..3d98321f 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSClass.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSClass.java @@ -41,11 +41,11 @@ public interface JSClass extends JSQualifiedNamedElement, JSSourceElement, JSAtt JSVariable[] getFields(); - JSFunction findFunctionByName(final String name); + JSFunction findFunctionByName(String name); - JSFunction findFunctionByNameAndKind(final String name, JSFunction.FunctionKind kind); + JSFunction findFunctionByNameAndKind(String name, JSFunction.FunctionKind kind); - JSVariable findFieldByName(final String name); + JSVariable findFieldByName(String name); JSClass[] getSupers(); diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSConditionalExpression.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSConditionalExpression.java index 5b2eb3cf..ee9f3b7c 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSConditionalExpression.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSConditionalExpression.java @@ -16,14 +16,19 @@ package com.intellij.lang.javascript.psi; +import consulo.annotation.access.RequiredReadAction; + /** * @author max * @since 2005-01-30 */ public interface JSConditionalExpression extends JSExpression { + @RequiredReadAction JSExpression getCondition(); + @RequiredReadAction JSExpression getThen(); + @RequiredReadAction JSExpression getElse(); } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSContinueStatement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSContinueStatement.java index 90e81898..48b6a567 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSContinueStatement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSContinueStatement.java @@ -16,6 +16,8 @@ package com.intellij.lang.javascript.psi; +import consulo.annotation.access.RequiredReadAction; + /** * @author max * @since 2005-01-30 @@ -23,5 +25,6 @@ public interface JSContinueStatement extends JSStatement { String getLabel(); + @RequiredReadAction JSStatement getStatementToContinue(); } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSDocComment.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSDocComment.java index 7cf291c6..5062a699 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSDocComment.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSDocComment.java @@ -16,8 +16,10 @@ package com.intellij.lang.javascript.psi; +import consulo.annotation.access.RequiredReadAction; import consulo.language.psi.PsiComment; public interface JSDocComment extends PsiComment, JSElement { + @RequiredReadAction JSDocTag[] getTags(); } \ No newline at end of file diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSElementVisitor.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSElementVisitor.java index 9e0c9eb3..0c781bee 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSElementVisitor.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSElementVisitor.java @@ -19,272 +19,273 @@ import consulo.javascript.psi.JSSimpleLiteralExpression; import consulo.javascript.psi.JavaScriptLambdaExpression; import consulo.language.psi.PsiElementVisitor; +import jakarta.annotation.Nonnull; /** * @author max * @since 2005-02-03 */ public class JSElementVisitor extends PsiElementVisitor { - public void visitJSCallExpression(final JSCallExpression node) { + public void visitJSCallExpression(@Nonnull JSCallExpression node) { visitJSExpression(node); } - public void visitJSIndexedPropertyAccessExpression(final JSIndexedPropertyAccessExpression node) { + public void visitJSIndexedPropertyAccessExpression(@Nonnull JSIndexedPropertyAccessExpression node) { visitJSExpression(node); } - public void visitJSNewExpression(final JSNewExpression node) { + public void visitJSNewExpression(@Nonnull JSNewExpression node) { visitJSCallExpression(node); } - public void visitJSFunctionExpression(final JSFunctionExpression node) { + public void visitJSFunctionExpression(@Nonnull JSFunctionExpression node) { visitJSExpression(node); } - public void visitJSPrefixExpression(final JSPrefixExpression expression) { + public void visitJSPrefixExpression(@Nonnull JSPrefixExpression expression) { visitJSExpression(expression); } - public void visitJSPostfixExpression(final JSPostfixExpression node) { + public void visitJSPostfixExpression(@Nonnull JSPostfixExpression node) { visitJSExpression(node); } - public void visitJSConditionalExpression(final JSConditionalExpression node) { + public void visitJSConditionalExpression(@Nonnull JSConditionalExpression node) { visitJSExpression(node); } - public void visitJSCommaExpression(final JSCommaExpression node) { + public void visitJSCommaExpression(@Nonnull JSCommaExpression node) { visitJSBinaryExpression(node); } - public void visitJSAssignmentExpression(final JSAssignmentExpression node) { + public void visitJSAssignmentExpression(@Nonnull JSAssignmentExpression node) { visitJSBinaryExpression(node); } - public void visitJSBinaryExpression(final JSBinaryExpression node) { + public void visitJSBinaryExpression(@Nonnull JSBinaryExpression node) { visitJSExpression(node); } - public void visitJSProperty(final JSProperty node) { + public void visitJSProperty(@Nonnull JSProperty node) { visitJSElement(node); } - public void visitJSObjectLiteralExpression(final JSObjectLiteralExpression node) { + public void visitJSObjectLiteralExpression(@Nonnull JSObjectLiteralExpression node) { visitJSExpression(node); } - public void visitJSArrayLiteralExpression(final JSArrayLiteralExpression node) { + public void visitJSArrayLiteralExpression(@Nonnull JSArrayLiteralExpression node) { visitJSExpression(node); } - public void visitJSParenthesizedExpression(final JSParenthesizedExpression node) { + public void visitJSParenthesizedExpression(@Nonnull JSParenthesizedExpression node) { visitJSExpression(node); } - public void visitJSReferenceExpression(final JSReferenceExpression node) { + public void visitJSReferenceExpression(@Nonnull JSReferenceExpression node) { visitJSExpression(node); } - public void visitJSDefinitionExpression(final JSDefinitionExpression node) { + public void visitJSDefinitionExpression(@Nonnull JSDefinitionExpression node) { visitJSExpression(node); } - public void visitJSLiteralExpression(final JSSimpleLiteralExpression node) { + public void visitJSLiteralExpression(@Nonnull JSSimpleLiteralExpression node) { visitJSExpression(node); } - public void visitJSThisExpression(final JSThisExpression node) { + public void visitJSThisExpression(@Nonnull JSThisExpression node) { visitJSExpression(node); } - public void visitJSForInStatement(final JSForInStatement node) { + public void visitJSForInStatement(@Nonnull JSForInStatement node) { visitJSStatement(node); } - public void visitJSForStatement(final JSForStatement node) { + public void visitJSForStatement(@Nonnull JSForStatement node) { visitJSStatement(node); } - public void visitJSDoWhileStatement(final JSDoWhileStatement node) { + public void visitJSDoWhileStatement(@Nonnull JSDoWhileStatement node) { visitJSStatement(node); } - public void visitJSWhileStatement(final JSWhileStatement node) { + public void visitJSWhileStatement(@Nonnull JSWhileStatement node) { visitJSStatement(node); } - public void visitJSCaseClause(final JSCaseClause node) { + public void visitJSCaseClause(@Nonnull JSCaseClause node) { visitJSElement(node); } - public void visitJSSwitchStatement(final JSSwitchStatement node) { + public void visitJSSwitchStatement(@Nonnull JSSwitchStatement node) { visitJSStatement(node); } - public void visitJSCatchBlock(final JSCatchBlock node) { + public void visitJSCatchBlock(@Nonnull JSCatchBlock node) { visitJSElement(node); } - public void visitJSTryStatement(final JSTryStatement node) { + public void visitJSTryStatement(@Nonnull JSTryStatement node) { visitJSStatement(node); } - public void visitJSThrowStatement(final JSThrowStatement node) { + public void visitJSThrowStatement(@Nonnull JSThrowStatement node) { visitJSStatement(node); } - public void visitJSReturnStatement(final JSReturnStatement node) { + public void visitJSReturnStatement(@Nonnull JSReturnStatement node) { visitJSStatement(node); } - public void visitJSWithStatement(final JSWithStatement node) { + public void visitJSWithStatement(@Nonnull JSWithStatement node) { visitJSStatement(node); } - public void visitJSBreakStatement(final JSBreakStatement node) { + public void visitJSBreakStatement(@Nonnull JSBreakStatement node) { visitJSStatement(node); } - public void visitJSContinueStatement(final JSContinueStatement node) { + public void visitJSContinueStatement(@Nonnull JSContinueStatement node) { visitJSStatement(node); } - public void visitJSIfStatement(final JSIfStatement node) { + public void visitJSIfStatement(@Nonnull JSIfStatement node) { visitJSStatement(node); } - public void visitJSEmptyStatement(final JSEmptyStatement node) { + public void visitJSEmptyStatement(@Nonnull JSEmptyStatement node) { visitJSStatement(node); } - public void visitJSVarStatement(final JSVarStatement node) { + public void visitJSVarStatement(@Nonnull JSVarStatement node) { visitJSStatement(node); } - public void visitJSExpressionStatement(final JSExpressionStatement node) { + public void visitJSExpressionStatement(@Nonnull JSExpressionStatement node) { visitJSStatement(node); } - public void visitJSLabeledStatement(final JSLabeledStatement node) { + public void visitJSLabeledStatement(@Nonnull JSLabeledStatement node) { visitJSStatement(node); } - public void visitJSBlock(final JSBlockStatement node) { + public void visitJSBlock(@Nonnull JSBlockStatement node) { visitJSStatement(node); } - public void visitJSArgumentList(final JSArgumentList node) { + public void visitJSArgumentList(@Nonnull JSArgumentList node) { visitJSElement(node); } - public void visitJSParameter(final JSParameter parameter) { + public void visitJSParameter(@Nonnull JSParameter parameter) { visitJSVariable(parameter); } - public void visitJSVariable(final JSVariable node) { + public void visitJSVariable(@Nonnull JSVariable node) { visitJSElement(node); } - public void visitJSParameterList(final JSParameterList node) { + public void visitJSParameterList(@Nonnull JSParameterList node) { visitJSElement(node); } - public void visitJSElement(final JSElement node) { + public void visitJSElement(@Nonnull JSElement node) { visitElement(node); } - public void visitJSSourceElement(final JSElement node) { + public void visitJSSourceElement(@Nonnull JSElement node) { visitJSElement(node); } - public void visitJSFunctionDeclaration(final JSFunction node) { + public void visitJSFunctionDeclaration(@Nonnull JSFunction node) { visitJSSourceElement(node); } - public void visitJSStatement(final JSStatement node) { + public void visitJSStatement(@Nonnull JSStatement node) { visitJSSourceElement(node); } - public void visitJSExpression(final JSExpression node) { + public void visitJSExpression(@Nonnull JSExpression node) { visitJSElement(node); } - public void visitJSAttributeList(final JSAttributeList attributeList) { + public void visitJSAttributeList(@Nonnull JSAttributeList attributeList) { visitJSElement(attributeList); } - public void visitJSPackageStatement(final JSPackageStatement packageStatement) { + public void visitJSPackageStatement(@Nonnull JSPackageStatement packageStatement) { visitJSStatement(packageStatement); } - public void visitJSImportStatement(final JSImportStatement importStatement) { + public void visitJSImportStatement(@Nonnull JSImportStatement importStatement) { visitJSStatement(importStatement); } - public void visitJSUseNamespaceDirective(final JSUseNamespaceDirective useNamespaceDirective) { + public void visitJSUseNamespaceDirective(@Nonnull JSUseNamespaceDirective useNamespaceDirective) { visitJSStatement(useNamespaceDirective); } - public void visitJSNamespaceDeclaration(final JSNamespaceDeclaration namespaceDeclaration) { + public void visitJSNamespaceDeclaration(@Nonnull JSNamespaceDeclaration namespaceDeclaration) { visitJSStatement(namespaceDeclaration); } - public void visitJSClass(final JSClass aClass) { + public void visitJSClass(@Nonnull JSClass aClass) { visitJSElement(aClass); } - public void visitJSClassExpression(final JSClassExpression expression) { + public void visitJSClassExpression(@Nonnull JSClassExpression expression) { visitJSExpression(expression); } - public void visitJSReferenceList(final JSReferenceList referenceList) { + public void visitJSReferenceList(@Nonnull JSReferenceList referenceList) { visitJSElement(referenceList); } - public void visitJSSuperExpression(final JSSuperExpression superExpression) { + public void visitJSSuperExpression(@Nonnull JSSuperExpression superExpression) { visitJSExpression(superExpression); } - public void visitJSIncludeDirective(final JSIncludeDirective includeDirective) { + public void visitJSIncludeDirective(@Nonnull JSIncludeDirective includeDirective) { visitJSStatement(includeDirective); } - public void visitJSAttribute(final JSAttribute jsAttribute) { + public void visitJSAttribute(@Nonnull JSAttribute jsAttribute) { visitJSElement(jsAttribute); } - public void visitJSAttributeNameValuePair(final JSAttributeNameValuePair attributeNameValuePair) { + public void visitJSAttributeNameValuePair(@Nonnull JSAttributeNameValuePair attributeNameValuePair) { } - public void visitJSYieldStatement(final JSYieldStatement statement) { + public void visitJSYieldStatement(@Nonnull JSYieldStatement statement) { visitJSStatement(statement); } - public void visitJSLetStatement(final JSLetStatement statement) { + public void visitJSLetStatement(@Nonnull JSLetStatement statement) { visitJSStatement(statement); } - public void visitJSLetExpression(final JSLetExpression expression) { + public void visitJSLetExpression(@Nonnull JSLetExpression expression) { visitJSExpression(expression); } - public void visitJSGenericSignature(final JSGenericSignature signature) { + public void visitJSGenericSignature(@Nonnull JSGenericSignature signature) { visitJSElement(signature); } - public void visitJSDocTagValue(final JSDocTagValue tagValue) { + public void visitJSDocTagValue(@Nonnull JSDocTagValue tagValue) { visitJSElement(tagValue); } - public void visitJSDocTag(final JSDocTag docTag) { + public void visitJSDocTag(@Nonnull JSDocTag docTag) { visitJSElement(docTag); } - public void visitJSDocComment(final JSDocComment docComment) { + public void visitJSDocComment(@Nonnull JSDocComment docComment) { visitComment(docComment); } - public void visitLambdaExpression(JavaScriptLambdaExpression expression) { + public void visitLambdaExpression(@Nonnull JavaScriptLambdaExpression expression) { visitJSExpression(expression); } } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSFile.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSFile.java index 86a9cc6c..eade95fd 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSFile.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSFile.java @@ -23,7 +23,7 @@ * @author nik */ public interface JSFile extends PsiFile, JSElement { - StubBasedPsiElement findStubbedElementAtOffset(final int offset, final Class clazz); + StubBasedPsiElement findStubbedElementAtOffset(int offset, Class clazz); JSSourceElement[] getStatements(); } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSForInStatement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSForInStatement.java index 292e3fde..dc6085fc 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSForInStatement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSForInStatement.java @@ -16,6 +16,8 @@ package com.intellij.lang.javascript.psi; +import consulo.annotation.access.RequiredReadAction; + /** * @author max * @since 2005-01-30 @@ -23,8 +25,10 @@ public interface JSForInStatement extends JSLoopStatement { JSVarStatement getDeclarationStatement(); + @RequiredReadAction JSExpression getVariableExpression(); + @RequiredReadAction JSExpression getCollectionExpression(); boolean isForEach(); diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSForStatement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSForStatement.java index e4896067..65b3ac36 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSForStatement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSForStatement.java @@ -16,16 +16,22 @@ package com.intellij.lang.javascript.psi; +import consulo.annotation.access.RequiredReadAction; + /** * @author max * @since 2005-01-30 */ public interface JSForStatement extends JSLoopStatement { + @RequiredReadAction JSVarStatement getVarDeclaration(); + @RequiredReadAction JSExpression getInitialization(); + @RequiredReadAction JSExpression getCondition(); + @RequiredReadAction JSExpression getUpdate(); } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSFunction.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSFunction.java index 8443d296..a12519e9 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSFunction.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSFunction.java @@ -28,14 +28,15 @@ * @author max */ public interface JSFunction extends JSQualifiedNamedElement, JSSourceElement, JSAttributeListOwner { - public static final JSFunction[] EMPTY_ARRAY = new JSFunction[0]; + JSFunction[] EMPTY_ARRAY = new JSFunction[0]; - public static ArrayFactory ARRAY_FACTORY = count -> count == 0 ? EMPTY_ARRAY : new JSFunction[count]; + ArrayFactory ARRAY_FACTORY = count -> count == 0 ? EMPTY_ARRAY : new JSFunction[count]; @Nullable @RequiredReadAction JSParameterList getParameterList(); + @RequiredReadAction JSSourceElement[] getBody(); @RequiredReadAction diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSIfStatement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSIfStatement.java index fabe9159..7f797b5a 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSIfStatement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSIfStatement.java @@ -16,6 +16,8 @@ package com.intellij.lang.javascript.psi; +import consulo.annotation.access.RequiredReadAction; + /** * @author max * @since 2005-01-30 @@ -25,6 +27,7 @@ public interface JSIfStatement extends JSStatement { JSStatement getThen(); + @RequiredReadAction JSStatement getElse(); void setThen(JSStatement statement); diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSImportStatement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSImportStatement.java index 4d4a7209..41886a1b 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSImportStatement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSImportStatement.java @@ -18,6 +18,7 @@ import com.intellij.lang.javascript.psi.stubs.JSImportStatementStub; import consulo.annotation.DeprecationInfo; +import consulo.annotation.access.RequiredReadAction; import consulo.javascript.psi.JavaScriptImportStatementBase; import consulo.language.psi.StubBasedPsiElement; @@ -27,7 +28,8 @@ * @author Maxim.Mossienko */ @Deprecated -@DeprecationInfo("We need rename it") +@DeprecationInfo("We need to rename it") public interface JSImportStatement extends JSStatement, StubBasedPsiElement, JavaScriptImportStatementBase { + @RequiredReadAction String getImportText(); } \ No newline at end of file diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSIncludeDirective.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSIncludeDirective.java index 66dd7537..a11c9112 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSIncludeDirective.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSIncludeDirective.java @@ -17,6 +17,7 @@ package com.intellij.lang.javascript.psi; import com.intellij.lang.javascript.psi.stubs.JSIncludeDirectiveStub; +import consulo.annotation.access.RequiredReadAction; import consulo.language.psi.PsiFile; import consulo.language.psi.StubBasedPsiElement; @@ -24,7 +25,9 @@ * @author Maxim.Mossienko */ public interface JSIncludeDirective extends JSStatement, StubBasedPsiElement { + @RequiredReadAction String getIncludeText(); + @RequiredReadAction PsiFile resolveFile(); } \ No newline at end of file diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSIndexedPropertyAccessExpression.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSIndexedPropertyAccessExpression.java index 78ba3a0b..a560c161 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSIndexedPropertyAccessExpression.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSIndexedPropertyAccessExpression.java @@ -16,12 +16,16 @@ package com.intellij.lang.javascript.psi; +import consulo.annotation.access.RequiredReadAction; + /** * @author max * @since 2005-01-30 */ public interface JSIndexedPropertyAccessExpression extends JSExpression { + @RequiredReadAction JSExpression getQualifier(); + @RequiredReadAction JSExpression getIndexExpression(); } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSLabeledStatement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSLabeledStatement.java index dca855f7..1820b3e8 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSLabeledStatement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSLabeledStatement.java @@ -16,6 +16,7 @@ package com.intellij.lang.javascript.psi; +import consulo.annotation.access.RequiredReadAction; import consulo.language.psi.PsiElement; import consulo.language.psi.PsiNameIdentifierOwner; import consulo.annotation.DeprecationInfo; @@ -25,10 +26,12 @@ * @since 2005-01-30 */ public interface JSLabeledStatement extends JSStatement, PsiNameIdentifierOwner { + @RequiredReadAction String getLabel(); @Deprecated @DeprecationInfo("Use #getNameIdentifier()") + @RequiredReadAction PsiElement getLabelIdentifier(); JSStatement getStatement(); diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSLoopStatement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSLoopStatement.java index a842b55c..e385e68d 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSLoopStatement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSLoopStatement.java @@ -16,10 +16,13 @@ package com.intellij.lang.javascript.psi; +import consulo.annotation.access.RequiredReadAction; + /** * @author max * @since 2005-01-30 */ public interface JSLoopStatement extends JSStatement { + @RequiredReadAction JSStatement getBody(); } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSPackageStatement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSPackageStatement.java index be246160..c1cd7fe9 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSPackageStatement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSPackageStatement.java @@ -17,6 +17,7 @@ package com.intellij.lang.javascript.psi; import com.intellij.lang.javascript.psi.stubs.JSPackageStatementStub; +import consulo.annotation.access.RequiredWriteAction; import consulo.language.psi.StubBasedPsiElement; /** @@ -25,5 +26,6 @@ public interface JSPackageStatement extends JSStatement, JSQualifiedNamedElement, StubBasedPsiElement { JSSourceElement[] getStatements(); - void setQualifiedName(final String expectedPackageNameFromFile); + @RequiredWriteAction + void setQualifiedName(String expectedPackageNameFromFile); } \ No newline at end of file diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSPostfixExpression.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSPostfixExpression.java index 3bec6450..324e2090 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSPostfixExpression.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSPostfixExpression.java @@ -16,6 +16,7 @@ package com.intellij.lang.javascript.psi; +import consulo.annotation.access.RequiredReadAction; import jakarta.annotation.Nullable; import consulo.language.ast.IElementType; @@ -27,5 +28,6 @@ public interface JSPostfixExpression extends JSExpression { @Nullable JSExpression getExpression(); + @RequiredReadAction IElementType getOperationSign(); } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSQualifiedNamedElement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSQualifiedNamedElement.java index 8765e153..c58a74a5 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSQualifiedNamedElement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSQualifiedNamedElement.java @@ -16,9 +16,12 @@ package com.intellij.lang.javascript.psi; +import consulo.annotation.access.RequiredReadAction; + /** * @author ven */ public interface JSQualifiedNamedElement extends JSNamedElement { + @RequiredReadAction String getQualifiedName(); } \ No newline at end of file diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSStatement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSStatement.java index 3cd19249..21355407 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSStatement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSStatement.java @@ -16,6 +16,7 @@ package com.intellij.lang.javascript.psi; +import consulo.annotation.access.RequiredWriteAction; import consulo.language.util.IncorrectOperationException; /** @@ -25,9 +26,12 @@ public interface JSStatement extends JSSourceElement { JSStatement[] EMPTY = new JSStatement[0]; + @RequiredWriteAction JSStatement addStatementBefore(JSStatement toAdd) throws IncorrectOperationException; + @RequiredWriteAction JSStatement addStatementAfter(JSStatement toAdd) throws IncorrectOperationException; + @RequiredWriteAction JSStatement replace(JSStatement with); } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSTryStatement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSTryStatement.java index 8d8c1f7c..d30a4597 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSTryStatement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSTryStatement.java @@ -16,6 +16,7 @@ package com.intellij.lang.javascript.psi; +import consulo.annotation.access.RequiredReadAction; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @@ -24,15 +25,19 @@ * @since 2005-01-30 */ public interface JSTryStatement extends JSStatement { + @RequiredReadAction JSStatement getStatement(); @Nonnull + @RequiredReadAction JSCatchBlock[] getAllCatchBlocks(); @Deprecated @Nullable + @RequiredReadAction JSCatchBlock getCatchBlock(); @Nullable + @RequiredReadAction JSStatement getFinallyStatement(); } diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSUseNamespaceDirective.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSUseNamespaceDirective.java index 24c42cfa..c63bba9b 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSUseNamespaceDirective.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSUseNamespaceDirective.java @@ -17,11 +17,13 @@ package com.intellij.lang.javascript.psi; import com.intellij.lang.javascript.psi.stubs.JSUseNamespaceDirectiveStub; +import consulo.annotation.access.RequiredReadAction; import consulo.language.psi.StubBasedPsiElement; /** * @author Maxim.Mossienko */ public interface JSUseNamespaceDirective extends JSStatement, StubBasedPsiElement { + @RequiredReadAction String getNamespaceToBeUsed(); } \ No newline at end of file diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSVarStatement.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSVarStatement.java index 33209cdd..5292b603 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSVarStatement.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSVarStatement.java @@ -26,6 +26,7 @@ * @since 2005-01-30 */ public interface JSVarStatement extends JSStatement, StubBasedPsiElement { + @RequiredReadAction JSVariable[] getVariables(); @Nullable diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSVariable.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSVariable.java index b5e8c804..e183f311 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/JSVariable.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/JSVariable.java @@ -37,6 +37,7 @@ public interface JSVariable extends JSQualifiedNamedElement, JSAttributeListOwne @Nullable JSExpression getInitializer(); + @RequiredReadAction String getInitializerText(); void setInitializer(JSExpression expr) throws IncorrectOperationException; diff --git a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSAttributeListStub.java b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSAttributeListStub.java index f0b68dbd..67edae06 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSAttributeListStub.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/psi/stubs/JSAttributeListStub.java @@ -26,7 +26,7 @@ public interface JSAttributeListStub extends StubElement, JSStubElement { JSAttributeList.AccessType getAccessType(); - boolean hasModifier(final JSAttributeList.ModifierType modifier); + boolean hasModifier(JSAttributeList.ModifierType modifier); String getNamespace(); diff --git a/base-impl/src/main/java/com/intellij/javascript/documentation/JSDocumentationProvider.java b/base-impl/src/main/java/com/intellij/javascript/documentation/JSDocumentationProvider.java index 6c49e34b..0c3699f1 100644 --- a/base-impl/src/main/java/com/intellij/javascript/documentation/JSDocumentationProvider.java +++ b/base-impl/src/main/java/com/intellij/javascript/documentation/JSDocumentationProvider.java @@ -40,6 +40,7 @@ import consulo.util.lang.Pair; import consulo.util.lang.StringUtil; import consulo.util.lang.ref.Ref; +import consulo.util.lang.ref.SimpleReference; import consulo.xml.psi.xml.XmlToken; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @@ -53,28 +54,23 @@ import java.util.Map; /** - * User: Maxim.Mossienko - * Date: Nov 4, 2005 - * Time: 5:04:28 PM + * @author Maxim.Mossienko + * @since 2005-11-04 */ @ExtensionImpl public class JSDocumentationProvider implements CodeDocumentationProvider, LanguageDocumentationProvider { private DocumentationProvider cssProvider; - @NonNls private static final String OBJECT_NAME = "Object"; protected static final String SEE_PLAIN_TEXT_CHARS = "\t \"-\\/<>*"; - @NonNls protected static final String PACKAGE = "package"; - @NonNls protected static final String HTML_EXTENSION = ".html"; - @NonNls protected static final String PACKAGE_FILE = PACKAGE + HTML_EXTENSION; protected static final Map DOCUMENTED_ATTRIBUTES; static { - DOCUMENTED_ATTRIBUTES = new HashMap(); + DOCUMENTED_ATTRIBUTES = new HashMap<>(); DOCUMENTED_ATTRIBUTES.put("Event", "event:"); DOCUMENTED_ATTRIBUTES.put("Style", "style:"); DOCUMENTED_ATTRIBUTES.put("Effect", "effect:"); @@ -89,7 +85,9 @@ private DocumentationProvider getCssProvider(Project project) throws Exception { return cssProvider; } + @Override @Nullable + @RequiredReadAction public String getQuickNavigateInfo(PsiElement element, PsiElement element2) { if (element instanceof JSFunction) { final JSFunction function = (JSFunction)element; @@ -120,6 +118,7 @@ else if (element instanceof JSNamespaceDeclaration namespaceDeclaration) { return null; } + @RequiredReadAction private static String createQuickNavigateForAnnotationDerived(final PsiElement element) { final JSAttributeNameValuePair valuePair = (JSAttributeNameValuePair)element; final JSAttribute parent = (JSAttribute)valuePair.getParent(); @@ -131,6 +130,7 @@ private static String createQuickNavigateForAnnotationDerived(final PsiElement e } @Nullable + @RequiredReadAction private static String createQuickNavigateForFunction(final JSFunction function) { final PsiElement parent = JSResolveUtil.findParent(function); final StringBuilder result = new StringBuilder(); @@ -185,12 +185,13 @@ private static String createQuickNavigateForFunction(final JSFunction function) return result.toString(); } + @RequiredReadAction private static void appendParentInfo(final PsiElement parent, final StringBuilder builder, PsiNamedElement element) { - if (parent instanceof JSClass) { - builder.append(((JSClass)parent).getQualifiedName()).append("\n"); + if (parent instanceof JSClass jsClass) { + builder.append(jsClass.getQualifiedName()).append("\n"); } - else if (parent instanceof JSPackageStatement) { - builder.append(((JSPackageStatement)parent).getQualifiedName()).append("\n"); + else if (parent instanceof JSPackageStatement packageStatement) { + builder.append(packageStatement.getQualifiedName()).append("\n"); } else if (parent instanceof JSFile) { if (parent.getContext() != null) { @@ -259,9 +260,9 @@ private static void appendVarType(final JSVariable variable, final StringBuilder } } - private static @Nullable - String createQuickNavigateForClazz(final JSClass jsClass) { + @RequiredReadAction + private static String createQuickNavigateForClazz(final JSClass jsClass) { final String qName = jsClass.getQualifiedName(); if (qName == null) { return null; @@ -273,12 +274,7 @@ String createQuickNavigateForClazz(final JSClass jsClass) { } appendAttrList(jsClass, result); - if (jsClass.isInterface()) { - result.append("interface"); - } - else { - result.append("class"); - } + result.append(jsClass.isInterface() ? "interface" : "class"); final String name = jsClass.getName(); result.append(" ").append(name); @@ -299,9 +295,8 @@ String createQuickNavigateForClazz(final JSClass jsClass) { return result.toString(); } - private static @Nullable - String createQuickNavigateForNamespace(final JSNamespaceDeclaration ns) { + private static String createQuickNavigateForNamespace(JSNamespaceDeclaration ns) { final String qName = ns.getQualifiedName(); if (qName == null) { return null; @@ -324,7 +319,7 @@ String createQuickNavigateForNamespace(final JSNamespaceDeclaration ns) { return result.toString(); } - + @RequiredReadAction private static void appendAttrList(final JSAttributeListOwner jsClass, final StringBuilder result) { final JSAttributeList attributeList = jsClass.getAttributeList(); if (attributeList != null) { @@ -357,9 +352,9 @@ private static void appendAttrList(final JSAttributeListOwner jsClass, final Str } } - private static @Nullable - String generateReferenceTargetList(final @Nullable JSReferenceList implementsList, @Nonnull String packageName) { + @RequiredReadAction + private static String generateReferenceTargetList(final @Nullable JSReferenceList implementsList, @Nonnull String packageName) { if (implementsList == null) { return null; } @@ -398,25 +393,25 @@ public List getUrlFor(PsiElement element, PsiElement originalElement) { return Collections.singletonList((String)o); } } - catch (Exception e) { + catch (Exception ignored) { } } return null; } @Override + @RequiredReadAction public String generateDoc(PsiElement _element, PsiElement originalElement) { - if (_element instanceof JSReferenceExpression) { + if (_element instanceof JSReferenceExpression expression) { StringBuilder buffer = null; // ambigious reference - final JSReferenceExpression expression = (JSReferenceExpression)_element; for (ResolveResult r : expression.multiResolve(false)) { if (buffer == null) { buffer = new StringBuilder(); } - final PsiElement element = r.getElement(); - final ItemPresentation presentation = ((NavigationItem)element).getPresentation(); + PsiElement element = r.getElement(); + ItemPresentation presentation = ((NavigationItem)element).getPresentation(); JSDocumentationUtils.appendHyperLinkToElement( element, @@ -476,50 +471,48 @@ public String generateDoc(PsiElement _element, PsiElement originalElement) { return (String)o; } } - catch (Exception e) { + catch (Exception ignored) { } } return null; } + @RequiredReadAction private static PsiElement findTargetElement(final PsiElement _element, PsiElement element) { - if (_element instanceof JSDefinitionExpression) { - final PsiElement parentElement = _element.getParent(); - - if (parentElement instanceof JSAssignmentExpression assignment) { - final JSExpression rOperand = assignment.getROperand(); - element = rOperand instanceof JSFunctionExpression ? rOperand : _element; + if (_element instanceof JSDefinitionExpression definition) { + if (definition.getParent() instanceof JSAssignmentExpression assignment) { + JSExpression rOperand = assignment.getROperand(); + element = rOperand instanceof JSFunctionExpression ? rOperand : definition; } } - else if (_element instanceof JSFunctionExpression) { - element = _element; + else if (_element instanceof JSFunctionExpression function) { + element = function; } else if (_element instanceof JSProperty property) { - final JSExpression expression = property.getValue(); - - if (expression instanceof JSFunction) { - element = expression; + if (property.getValue() instanceof JSFunction function) { + element = function; } } - else if (_element instanceof JSVariable) { - if (_element instanceof JSParameter) { - return PsiTreeUtil.getParentOfType(_element, JSFunction.class); + else if (_element instanceof JSVariable variable) { + if (variable instanceof JSParameter parameter) { + return PsiTreeUtil.getParentOfType(parameter, JSFunction.class); } - element = _element; + element = variable; } - else if (_element instanceof JSAttributeNameValuePair) { - return _element; + else if (_element instanceof JSAttributeNameValuePair nameValuePair) { + return nameValuePair; } return element; } + @RequiredReadAction private static PsiElement findFirstDocComment(PsiElement docComment) { if (docComment.getNode().getElementType() == JSTokenTypes.END_OF_LINE_COMMENT) { while (true) { PsiElement prev = docComment.getPrevSibling(); - if (prev instanceof PsiWhiteSpace) { - prev = prev.getPrevSibling(); + if (prev instanceof PsiWhiteSpace whiteSpace) { + prev = whiteSpace.getPrevSibling(); } if (prev == null) { break; @@ -534,28 +527,28 @@ private static PsiElement findFirstDocComment(PsiElement docComment) { } private static String findPossibleCssName(PsiElement _element) { - if (_element instanceof JSDefinitionExpression definitionExpression) { - final JSExpression expression = definitionExpression.getExpression(); + if (_element instanceof JSDefinitionExpression definition) { + final JSExpression expression = definition.getExpression(); - if (expression instanceof JSReferenceExpression referenceExpression) { - final String text = referenceExpression.getReferencedName(); + if (expression instanceof JSReferenceExpression reference) { + String text = reference.getReferencedName(); if (text == null) { return null; } - final StringBuffer buf = new StringBuffer(text.length()); + StringBuilder sb = new StringBuilder(text.length()); for (int i = 0; i < text.length(); ++i) { final char ch = text.charAt(i); if (Character.isUpperCase(ch)) { - buf.append('-').append(Character.toLowerCase(ch)); + sb.append('-').append(Character.toLowerCase(ch)); } else { - buf.append(ch); + sb.append(ch); } } - return buf.toString(); + return sb.toString(); } } return null; @@ -563,28 +556,29 @@ private static String findPossibleCssName(PsiElement _element) { @Override public PsiElement getDocumentationElementForLookupItem(PsiManager psiManager, Object object, PsiElement element) { - final PsiElement psiElement = findElementForWhichPreviousCommentWillBeSearched(object); + PsiElement psiElement = findElementForWhichPreviousCommentWillBeSearched(object); if (psiElement != null && JSDocumentationUtils.findDocComment(psiElement) != null) { return psiElement; } - if (object instanceof PsiElement) { - return (PsiElement)object; + if (object instanceof PsiElement objPsiElement) { + return objPsiElement; } return null; } + @RequiredReadAction public static PsiElement findElementForWhichPreviousCommentWillBeSearched(Object object) { if (object instanceof JSFunction function) { PsiElement psiElement = function; PsiElement parent = psiElement.getParent(); - if (parent instanceof JSNewExpression) { - parent = parent.getParent(); + if (parent instanceof JSNewExpression newExpr) { + parent = newExpr.getParent(); } - if (parent instanceof JSProperty) { - psiElement = parent; + if (parent instanceof JSProperty property) { + psiElement = property; } - else if (parent instanceof JSAssignmentExpression) { - psiElement = parent.getParent(); + else if (parent instanceof JSAssignmentExpression assignment) { + psiElement = assignment.getParent(); } if (function.isSetProperty() || function.isGetProperty()) { @@ -594,7 +588,7 @@ else if (parent instanceof JSAssignmentExpression) { String name = prevFunction.getName(); if (name != null && name.equals(function.getName()) && ( - (prevFunction.isGetProperty() && function.isSetProperty()) + prevFunction.isGetProperty() && function.isSetProperty() || prevFunction.isSetProperty() && function.isGetProperty() )) { PsiElement doc = JSDocumentationUtils.findDocComment(prevFunction); @@ -618,38 +612,35 @@ else if (object instanceof PsiElement psiElement) { return parent.getParent(); } else if (parent instanceof JSVarStatement) { - final PsiElement firstChild = parent.getFirstChild(); - if (firstChild instanceof JSAttributeList) { - if (JSDocumentationUtils.findDocComment((PsiElement)object) != null) { - return (PsiElement)object; - } + if (parent.getFirstChild() instanceof JSAttributeList && JSDocumentationUtils.findDocComment(psiElement) != null) { + return psiElement; } return parent; } - else if (parent instanceof JSAttribute) { - final PsiElement grandParent = parent.getParent(); - if (grandParent.getFirstChild() == parent) { - final PsiElement element = grandParent.getParent(); - if (element instanceof JSFile) { - return grandParent; + else if (parent instanceof JSAttribute attribute) { + PsiElement attrParent = attribute.getParent(); + if (attrParent.getFirstChild() == attribute) { + PsiElement attrGrandParent = attrParent.getParent(); + if (attrGrandParent instanceof JSFile) { + return attrParent; } - return element; + return attrGrandParent; } - return parent; + return attribute; } else if (parent instanceof JSSuppressionHolder) { return parent; } else { - return (PsiElement)object; + return psiElement; } } return null; } - @Override @Nullable + @Override public PsiElement getDocumentationElementForLink(final PsiManager psiManager, String link, final PsiElement context) { return getDocumentationElementForLinkStatic(psiManager, link, context); } @@ -729,10 +720,12 @@ else if (attributeType != null) { } @Nullable + @RequiredReadAction protected static JSAttributeNameValuePair findNamedAttribute(JSClass clazz, final String type, final String name) { - final Ref attribute = new Ref(); + SimpleReference attribute = new SimpleReference<>(); JSResolveUtil.processMetaAttributesForClass(clazz, new JSResolveUtil.MetaDataProcessor() { @Override + @RequiredReadAction public boolean process(@Nonnull JSAttribute jsAttribute) { if (type.equals(jsAttribute.getName())) { final JSAttributeNameValuePair jsAttributeNameValuePair = jsAttribute.getValueByName("name"); @@ -745,7 +738,7 @@ public boolean process(@Nonnull JSAttribute jsAttribute) { } @Override - public boolean handleOtherElement(PsiElement el, PsiElement context, @Nullable Ref continuePassElement) { + public boolean handleOtherElement(PsiElement el, PsiElement context, @Nullable SimpleReference continuePassElement) { return true; } }); @@ -768,8 +761,8 @@ private static PsiElement findMethod(JSClass jsClass, String name) { return result; } - @Override @Nullable + @Override public PsiComment findExistingDocComment(PsiComment contextElement) { return contextElement; } @@ -780,8 +773,9 @@ public Pair parseContext(@Nonnull PsiElement element) { return null; } - @Override @Nullable + @Override + @RequiredReadAction public String generateDocumentationContentStub(PsiComment contextComment) { for (PsiElement el = contextComment.getParent(); el != null; el = el.getNextSibling()) { if (el instanceof JSProperty property) { @@ -792,16 +786,16 @@ public String generateDocumentationContentStub(PsiComment contextComment) { else if (el instanceof JSFunction function) { return doGenerateDoc(function); } - else if (el instanceof JSExpressionStatement expressionStatement) { - if (expressionStatement.getExpression() instanceof JSAssignmentExpression assignmentExpression - && assignmentExpression.getROperand() instanceof JSFunctionExpression functionExpression) { - return doGenerateDoc(functionExpression.getFunction()); + else if (el instanceof JSExpressionStatement expression) { + if (expression.getExpression() instanceof JSAssignmentExpression assignment + && assignment.getROperand() instanceof JSFunctionExpression functionExpr) { + return doGenerateDoc(functionExpr.getFunction()); } } else if (el instanceof JSVarStatement varStatement) { JSVariable[] variables = varStatement.getVariables(); - if (variables.length > 0 && variables[0].getInitializer() instanceof JSFunctionExpression functionExpression) { - return doGenerateDoc(functionExpression.getFunction()); + if (variables.length > 0 && variables[0].getInitializer() instanceof JSFunctionExpression functionExpr) { + return doGenerateDoc(functionExpr.getFunction()); } break; } @@ -809,6 +803,7 @@ else if (el instanceof JSVarStatement varStatement) { return null; } + @RequiredReadAction private static String doGenerateDoc(final JSFunction function) { StringBuilder builder = new StringBuilder(); final JSParameterList parameterList = function.getParameterList(); @@ -839,6 +834,7 @@ private static String doGenerateDoc(final JSFunction function) { } @Nullable + @RequiredReadAction protected static String getSeeAlsoLinkResolved(PsiElement originElement, String link) { JSQualifiedNamedElement qualifiedElement = findParentQualifiedElement(originElement); if (qualifiedElement == null) { @@ -902,12 +898,13 @@ else if (StringUtil.startsWithChar(link, '#')) { } @Nullable + @RequiredReadAction protected static JSQualifiedNamedElement findParentQualifiedElement(PsiElement element) { if (element instanceof JSClass jsClass) { return jsClass; } if (element instanceof JSFunction || element instanceof JSVariable) { - final PsiElement parent = JSResolveUtil.findParent(element); + PsiElement parent = JSResolveUtil.findParent(element); if (parent instanceof JSClass jsClass) { return jsClass; } @@ -920,8 +917,8 @@ else if (parent instanceof JSFile) { if (element instanceof JSAttribute jsAttribute) { attribute = jsAttribute; } - else if (element instanceof JSAttributeNameValuePair) { - attribute = (JSAttribute)element.getParent(); + else if (element instanceof JSAttributeNameValuePair nameValuePair) { + attribute = (JSAttribute)nameValuePair.getParent(); } if (attribute != null && DOCUMENTED_ATTRIBUTES.containsKey(attribute.getName())) { diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/flex/XmlBackedJSClassImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/flex/XmlBackedJSClassImpl.java index ed8982e9..306b36db 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/flex/XmlBackedJSClassImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/flex/XmlBackedJSClassImpl.java @@ -26,11 +26,16 @@ import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; import com.intellij.lang.javascript.psi.resolve.ResolveProcessor; import com.intellij.xml.XmlElementDescriptor; +import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.access.RequiredWriteAction; import consulo.application.util.*; import consulo.language.ast.ASTNode; import consulo.language.codeStyle.CodeStyleManager; import consulo.language.inject.InjectedLanguageManager; -import consulo.language.psi.*; +import consulo.language.psi.PsiElement; +import consulo.language.psi.PsiFile; +import consulo.language.psi.PsiReference; +import consulo.language.psi.PsiWhiteSpace; import consulo.language.psi.resolve.PsiElementProcessor; import consulo.language.psi.resolve.PsiScopeProcessor; import consulo.language.psi.resolve.ResolveState; @@ -40,10 +45,8 @@ import consulo.virtualFileSystem.VirtualFile; import consulo.xml.psi.XmlRecursiveElementVisitor; import consulo.xml.psi.xml.*; -import jakarta.annotation.Nullable; -import org.jetbrains.annotations.NonNls; - import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; import java.util.*; @@ -51,9 +54,7 @@ * @author Maxim.Mossienko */ public class XmlBackedJSClassImpl extends JSClassBase implements JSClass { - @NonNls public static final String COMPONENT_TAG_NAME = "Component"; - @NonNls public static final String CLASS_NAME_ATTRIBUTE_NAME = "className"; private volatile JSReferenceList myExtendsList; @@ -63,12 +64,13 @@ public XmlBackedJSClassImpl(XmlTag tag) { super(tag.getNode()); } - @Override @Nullable + @Override + @RequiredReadAction public JSReferenceList getExtendsList() { JSReferenceList refList = myExtendsList; if (refList == null) { - final XmlTag rootTag = getParent(); + XmlTag rootTag = getParent(); refList = createReferenceList(rootTag.getLocalName()); refList.getParent().putUserData(JSResolveUtil.contextKey, this); myExtendsList = refList; @@ -76,34 +78,40 @@ public JSReferenceList getExtendsList() { return refList; } - private JSReferenceList createReferenceList(final String s) { - final JSClass element = (JSClass)JSChangeUtil.createJSTreeFromText(getProject(), "class C extends " + s + " {}").getPsi(); + @RequiredReadAction + private JSReferenceList createReferenceList(String s) { + JSClass element = (JSClass)JSChangeUtil.createJSTreeFromText(getProject(), "class C extends " + s + " {}").getPsi(); return element.getExtendsList(); } @Override + @RequiredReadAction public int getTextOffset() { return 0; } - @Override @Nullable + @Override + @RequiredReadAction public JSReferenceList getImplementsList() { JSReferenceList refList = myImplementsList; if (refList == null) { - final XmlTag rootTag = getParent(); + XmlTag rootTag = getParent(); myImplementsList = refList = createReferenceList(rootTag != null ? rootTag.getAttributeValue("implements") : null); } return refList; } + @Nonnull @Override + @RequiredReadAction public PsiElement getNavigationElement() { return getParent(); } @Override + @RequiredReadAction public String getName() { XmlTag parent = getParent(); if (isInlineComponentTag(parent)) { @@ -112,7 +120,7 @@ public String getName() { return explicitName; } } - final PsiFile psi = parent.getContainingFile(); + PsiFile psi = parent.getContainingFile(); VirtualFile file = psi.getVirtualFile(); if (file == null && psi.getOriginalFile() != null) { file = psi.getOriginalFile().getVirtualFile(); @@ -121,19 +129,21 @@ public String getName() { } @Nullable + @RequiredReadAction public String getExplicitName() { XmlTag parent = getParent(); return parent.getAttributeValue(CLASS_NAME_ATTRIBUTE_NAME, parent.getNamespace()); } @Override + @RequiredReadAction public String getQualifiedName() { - final String name = getName(); + String name = getName(); if (name == null) { return null; } - final PsiFile containingFile = getNode().getPsi().getContainingFile(); - final String expectedPackageNameFromFile = JSResolveUtil.getExpectedPackageNameFromFile(containingFile.getVirtualFile(), + PsiFile containingFile = getNode().getPsi().getContainingFile(); + String expectedPackageNameFromFile = JSResolveUtil.getExpectedPackageNameFromFile(containingFile.getVirtualFile(), containingFile.getProject(), true ); if (expectedPackageNameFromFile != null && expectedPackageNameFromFile.length() > 0) { @@ -155,13 +165,15 @@ public boolean isDeprecated() { @Nullable @Override + @RequiredReadAction public PsiElement getNameIdentifier() { return getParent(); } @Override - public PsiElement setName(@NonNls @Nonnull String name) throws IncorrectOperationException { - final int i = name.lastIndexOf('.'); + @RequiredWriteAction + public PsiElement setName(@Nonnull String name) throws IncorrectOperationException { + int i = name.lastIndexOf('.'); if (i != -1) { name = name.substring(0, i); } @@ -177,10 +189,10 @@ public JSAttributeList getAttributeList() { @Override protected boolean processMembers( - final PsiScopeProcessor processor, - final ResolveState substitutor, - final PsiElement lastParent, - final PsiElement place + PsiScopeProcessor processor, + ResolveState substitutor, + PsiElement lastParent, + PsiElement place ) { for (JSFile file : ourCachedScripts.get(CACHED_SCRIPTS_KEY, getParent(), null).getValue()) { if (!file.processDeclarations(processor, ResolveState.initial(), null, place)) { @@ -191,11 +203,12 @@ protected boolean processMembers( } @Override + @RequiredReadAction public boolean processDeclarations( - @Nonnull final PsiScopeProcessor processor, - @Nonnull final ResolveState substitutor, - final PsiElement lastParent, - @Nonnull final PsiElement place + @Nonnull PsiScopeProcessor processor, + @Nonnull ResolveState substitutor, + PsiElement lastParent, + @Nonnull PsiElement place ) { boolean b = super.processDeclarations(processor, substitutor, lastParent, place); @@ -210,10 +223,10 @@ public boolean processDeclarations( return b; } - public boolean doImportFromScripts(final PsiScopeProcessor processor, final PsiElement place) { + public boolean doImportFromScripts(PsiScopeProcessor processor, PsiElement place) { PsiElement context = place.getContainingFile().getContext(); - if (context instanceof XmlText) { - context = context.getParent(); + if (context instanceof XmlText xmlText) { + context = xmlText.getParent(); } boolean notResolvingTypeViaImport = !(place instanceof JSFile); @@ -282,17 +295,16 @@ public boolean processComponentNames(ResolveProcessor processor) { private static final Key> CACHED_SCRIPTS_KEY = Key.create("cached.scripts"); private static final Key>> OUR_CACHED_SHORT_COMPONENTS_REF_KEY = Key.create("cached.component.refs"); - @NonNls private static final String SCRIPT_TAG_NAME = "Script"; private static final UserDataCache, XmlTag, Object> ourCachedScripts = new UserDataCache<>() { @Override - protected CachedValue compute(final XmlTag tag, final Object p) { + protected CachedValue compute(XmlTag tag, Object p) { return CachedValuesManager.getManager(tag.getProject()).createCachedValue( () -> { - final List injectedFiles = new ArrayList(2); - final List dependencies = new ArrayList(); + List injectedFiles = new ArrayList<>(2); + List dependencies = new ArrayList<>(); dependencies.add(tag); new InjectedScriptsVisitor( tag, @@ -322,22 +334,21 @@ protected CachedValue> compute(final XmlFile file, final Obj new CachedValueProvider>() { @Override public Result> compute() { - final Map cachedComponentImports = new HashMap<>(); - final List dependencies = new ArrayList<>(); + Map cachedComponentImports = new HashMap<>(); + List dependencies = new ArrayList<>(); dependencies.add(file); file.acceptChildren(new XmlRecursiveElementVisitor() { @Override + @RequiredReadAction public void visitXmlTag(XmlTag tag) { XmlElementDescriptor descriptor = tag.getDescriptor(); if (descriptor != null) { PsiElement declaration = descriptor.getDeclaration(); - if (declaration instanceof XmlFile) { - declaration = XmlBackedJSClassImpl.getXmlBackedClass((XmlFile)declaration); + if (declaration instanceof XmlFile xmlFile) { + declaration = XmlBackedJSClassImpl.getXmlBackedClass(xmlFile); } - if (declaration instanceof JSClass) { - JSClass jsClass = (JSClass)declaration; - + if (declaration instanceof JSClass jsClass) { cachedComponentImports.put(jsClass.getName(), jsClass.getQualifiedName()); dependencies.add(declaration.getContainingFile()); } @@ -354,15 +365,16 @@ public void visitXmlTag(XmlTag tag) { }; - public static boolean doProcessAllTags(final XmlTag rootTag) { + public static boolean doProcessAllTags(XmlTag rootTag) { return JSLanguageInjector.isMozillaXulOrXblNs(rootTag != null ? rootTag.getNamespace() : null); } - public static boolean doProcessAllTags(final XmlFile file) { + public static boolean doProcessAllTags(XmlFile file) { return doProcessAllTags(getRootTag(file)); } @Override + @RequiredReadAction public boolean isValid() { return getNode().getPsi().isValid(); } @@ -370,18 +382,18 @@ public boolean isValid() { private static Key> ourArtificialPsiKey = Key.create("xml.backed.class"); @Nullable - public static JSClass getXmlBackedClass(final XmlFile xmlFile) { - final XmlTag rootTag = getRootTag(xmlFile); + public static JSClass getXmlBackedClass(XmlFile xmlFile) { + XmlTag rootTag = getRootTag(xmlFile); return rootTag != null ? getXmlBackedClass(rootTag) : null; } @Nullable private static XmlTag getRootTag(XmlFile xmlFile) { - final XmlDocument document = xmlFile.getDocument(); + XmlDocument document = xmlFile.getDocument(); return document != null ? document.getRootTag() : null; } - public static XmlBackedJSClassImpl getXmlBackedClass(final XmlTag tag) { + public static XmlBackedJSClassImpl getXmlBackedClass(XmlTag tag) { return myCachedClassCache.get(ourArtificialPsiKey, tag, null).getValue(tag); } @@ -390,7 +402,7 @@ public static Collection getClasses(XmlFile file) { if (rootTag == null) { return Collections.emptyList(); } - final Collection result = new ArrayList<>(); + Collection result = new ArrayList<>(); result.add(getXmlBackedClass(rootTag)); result.addAll(getChildInlineComponents(rootTag, true)); return result; @@ -411,41 +423,43 @@ public static XmlBackedJSClassImpl getContainingComponent(XmlElement element) { return getXmlBackedClass((XmlTag)element); } - private static final UserDataCache, XmlTag, - Object> myCachedClassCache = new UserDataCache<>() { - @Override - protected ParameterizedCachedValue compute(final XmlTag tag, final Object p) { - return CachedValuesManager.getManager(tag.getProject()).createParameterizedCachedValue( - (ParameterizedCachedValueProvider)tag1 -> - new CachedValueProvider.Result<>(new XmlBackedJSClassImpl(tag1), tag1), - false - ); - } - }; + private static final UserDataCache, XmlTag, Object> myCachedClassCache = + new UserDataCache<>() { + @Override + protected ParameterizedCachedValue compute(final XmlTag tag, final Object p) { + return CachedValuesManager.getManager(tag.getProject()).createParameterizedCachedValue( + (ParameterizedCachedValueProvider)tag1 -> + new CachedValueProvider.Result<>(new XmlBackedJSClassImpl(tag1), tag1), + false + ); + } + }; @Override + @RequiredReadAction public XmlTag getParent() { return (XmlTag)getNode().getPsi(); } @Override - public boolean isEquivalentTo(final PsiElement element2) { + public boolean isEquivalentTo(PsiElement element2) { return this == element2 || element2 == getContainingFile() || (element2 instanceof XmlBackedJSClassImpl && getContainingFile() == element2.getContainingFile()); } @Override + @RequiredWriteAction public PsiElement add(@Nonnull PsiElement element) throws IncorrectOperationException { if (element instanceof JSFunction || element instanceof JSVarStatement) { - final JSFile jsFile = createOrGetFirstScriptTag(); + JSFile jsFile = createOrGetFirstScriptTag(); if (jsFile != null) { - final PsiElement child = jsFile.getLastChild(); + PsiElement child = jsFile.getLastChild(); String text; - if (child instanceof PsiWhiteSpace && (text = child.getText()).indexOf("]]>") != -1) { - int cdataAt = 0; + if (child instanceof PsiWhiteSpace whiteSpace && (text = whiteSpace.getText()).indexOf("]]>") != -1) { + int cdataAt; String marker = " 0) { @@ -516,6 +533,7 @@ public JSFile findFirstScriptTag() { return null; } + @RequiredReadAction public JSFile createOrGetFirstScriptTag() throws IncorrectOperationException { JSFile jsFile = findFirstScriptTag(); @@ -531,22 +549,22 @@ public static XmlTag[] findMxmlSubTags(XmlTag tag, String scriptTagName) { return tag.findSubTags(scriptTagName, ns); } - public static void visitInjectedFiles(XmlFile file, final InjectedFileVisitor visitor) { + public static void visitInjectedFiles(XmlFile file, InjectedFileVisitor visitor) { new InjectedScriptsVisitor(getRootTag(file), true, true, true, visitor).go(); } public static boolean isInlineComponentTag(XmlTag tag) { - return COMPONENT_TAG_NAME.equals(tag.getLocalName()) && - JavaScriptSupportLoader.isMxmlNs(tag.getNamespace()) && - !(tag.getParent() instanceof XmlDocument); + return COMPONENT_TAG_NAME.equals(tag.getLocalName()) + && JavaScriptSupportLoader.isMxmlNs(tag.getNamespace()) + && !(tag.getParent() instanceof XmlDocument); } - public static Collection getChildInlineComponents(XmlTag rootTag, final boolean recursive) { - final Collection result = new ArrayList<>(); + public static Collection getChildInlineComponents(XmlTag rootTag, boolean recursive) { + Collection result = new ArrayList<>(); rootTag.processElements( new PsiElementProcessor() { @Override - public boolean execute(PsiElement element) { + public boolean execute(@Nonnull PsiElement element) { if (element instanceof XmlTag tag) { if (isInlineComponentTag(tag)) { result.add(getXmlBackedClass(tag)); @@ -596,29 +614,28 @@ public void go() { } @Override - public boolean execute(final PsiElement element) { - if (element instanceof XmlTag) { - final XmlTag tag = (XmlTag)element; - + @RequiredReadAction + public boolean execute(@Nonnull PsiElement element) { + if (element instanceof XmlTag tag) { if (myVisitAllTags || SCRIPT_TAG_NAME.equals(tag.getLocalName())) { - final String srcLocation = tag.getAttributeValue("source"); + String srcLocation = tag.getAttributeValue("source"); if (srcLocation != null) { PsiReference ref = findFileReference(tag.getAttribute("source").getValueElement()); - if (ref != null) { - final PsiElement psiElement = ref.resolve(); - if (psiElement instanceof JSFile) { - psiElement.putUserData(JSResolveUtil.contextKey, tag); - myVisitor.visit(myRootTag, (JSFile)psiElement); - } + if (ref != null && ref.resolve() instanceof JSFile jsFile) { + jsFile.putUserData(JSResolveUtil.contextKey, tag); + myVisitor.visit(myRootTag, jsFile); } } else { - JSResolveUtil.processInjectedFileForTag(tag, new JSResolveUtil.JSInjectedFilesVisitor() { - @Override - protected void process(final JSFile file) { - myVisitor.visit(myRootTag, file); + JSResolveUtil.processInjectedFileForTag( + tag, + new JSResolveUtil.JSInjectedFilesVisitor() { + @Override + protected void process(JSFile file) { + myVisitor.visit(myRootTag, file); + } } - }); + ); } } if (isInlineComponentTag(tag)) { diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSArgumentListImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSArgumentListImpl.java index 49a33183..9863dda9 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSArgumentListImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSArgumentListImpl.java @@ -27,12 +27,11 @@ import jakarta.annotation.Nonnull; /** - * User: max - * Date: Jan 30, 2005 - * Time: 9:15:02 PM + * @author max + * @since 2005-01-30 */ public class JSArgumentListImpl extends JSElementImpl implements JSArgumentList { - public JSArgumentListImpl(final ASTNode node) { + public JSArgumentListImpl(ASTNode node) { super(node); } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSArrayLiteralExpressionImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSArrayLiteralExpressionImpl.java index 824f5f61..6b8860bb 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSArrayLiteralExpressionImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSArrayLiteralExpressionImpl.java @@ -20,6 +20,7 @@ import com.intellij.lang.javascript.psi.JSArrayLiteralExpression; import com.intellij.lang.javascript.psi.JSElementVisitor; import com.intellij.lang.javascript.psi.JSExpression; +import consulo.annotation.access.RequiredReadAction; import consulo.language.ast.ASTNode; import consulo.language.ast.IElementType; @@ -29,24 +30,22 @@ import java.util.List; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 11:32:23 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public class JSArrayLiteralExpressionImpl extends JSExpressionImpl implements JSArrayLiteralExpression { - public JSArrayLiteralExpressionImpl(final ASTNode node) { + public JSArrayLiteralExpressionImpl(ASTNode node) { super(node); } @Override + @RequiredReadAction public JSExpression[] getExpressions() { List result = new ArrayList<>(); ASTNode child = getNode().getFirstChildNode(); boolean wasExpression = false; while (child != null) { - final IElementType type = child.getElementType(); + IElementType type = child.getElementType(); if (child.getPsi() instanceof JSExpression jsExpression) { result.add(jsExpression); wasExpression = true; diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAssignmentExpressionImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAssignmentExpressionImpl.java index c6e609d1..50485990 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAssignmentExpressionImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAssignmentExpressionImpl.java @@ -23,14 +23,11 @@ import jakarta.annotation.Nonnull; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 11:41:42 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public class JSAssignmentExpressionImpl extends JSBinaryExpressionImpl implements JSAssignmentExpression { - public JSAssignmentExpressionImpl(final ASTNode node) { + public JSAssignmentExpressionImpl(ASTNode node) { super(node); } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAttributeImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAttributeImpl.java index b4faca39..14f08cd2 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAttributeImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAttributeImpl.java @@ -16,31 +16,30 @@ package com.intellij.lang.javascript.psi.impl; -import consulo.language.ast.ASTNode; import com.intellij.lang.javascript.JSElementTypes; import com.intellij.lang.javascript.JSTokenTypes; import com.intellij.lang.javascript.psi.JSAttribute; import com.intellij.lang.javascript.psi.JSAttributeNameValuePair; import com.intellij.lang.javascript.psi.JSElementVisitor; import com.intellij.lang.javascript.psi.stubs.JSAttributeStub; +import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.access.RequiredWriteAction; import consulo.document.util.TextRange; +import consulo.language.ast.ASTNode; +import consulo.language.psi.EmptyResolveMessageProvider; import consulo.language.psi.PsiElement; import consulo.language.psi.PsiReference; import consulo.language.util.IncorrectOperationException; -import consulo.language.psi.EmptyResolveMessageProvider; import consulo.localize.LocalizeValue; import consulo.util.collection.ArrayUtil; -import org.jetbrains.annotations.NonNls; - import jakarta.annotation.Nonnull; /** - * @by Maxim.Mossienko + * @author Maxim.Mossienko */ public class JSAttributeImpl extends JSStubElementImpl implements JSAttribute { private PsiReference[] myReferences; private static - @NonNls String[] myPossibleMetaData = new String[]{ "AccessibilityClass", "ArrayElementType", @@ -64,11 +63,11 @@ public class JSAttributeImpl extends JSStubElementImpl implemen "Transient" }; - public JSAttributeImpl(final ASTNode node) { + public JSAttributeImpl(ASTNode node) { super(node); } - public JSAttributeImpl(final JSAttributeStub node) { + public JSAttributeImpl(JSAttributeStub node) { super(node, JSElementTypes.ATTRIBUTE); } @@ -78,17 +77,19 @@ protected void accept(@Nonnull JSElementVisitor visitor) { } @Override + @RequiredReadAction public String getName() { - final JSAttributeStub attributeStub = getStub(); + JSAttributeStub attributeStub = getStub(); if (attributeStub != null) { return attributeStub.getName(); } - final ASTNode node = getNode().findChildByType(JSTokenTypes.IDENTIFIER); + ASTNode node = getNode().findChildByType(JSTokenTypes.IDENTIFIER); return node != null ? node.getText() : null; } @Override - public PsiElement setName(@NonNls @Nonnull final String name) throws IncorrectOperationException { + @RequiredWriteAction + public PsiElement setName(@Nonnull String name) throws IncorrectOperationException { throw new IncorrectOperationException(); } @@ -98,9 +99,9 @@ public JSAttributeNameValuePair[] getValues() { } @Override - public JSAttributeNameValuePair getValueByName(final String name) { + public JSAttributeNameValuePair getValueByName(String name) { for (JSAttributeNameValuePair p : getValues()) { - final String pName = p.getName(); + String pName = p.getName(); if ((name != null && name.equals(pName)) || (name == null && name == pName)) { return p; @@ -109,17 +110,19 @@ public JSAttributeNameValuePair getValueByName(final String name) { return null; } + @Nonnull @Override + @RequiredReadAction public PsiReference[] getReferences() { if (myReferences == null) { - final ASTNode node = getNode().findChildByType(JSTokenTypes.IDENTIFIER); + ASTNode node = getNode().findChildByType(JSTokenTypes.IDENTIFIER); if (node == null) { myReferences = PsiReference.EMPTY_ARRAY; } else { - final int startOffsetInParent = node.getPsi().getStartOffsetInParent(); - final TextRange range = new TextRange(startOffsetInParent, startOffsetInParent + node.getTextLength()); + int startOffsetInParent = node.getPsi().getStartOffsetInParent(); + TextRange range = new TextRange(startOffsetInParent, startOffsetInParent + node.getTextLength()); myReferences = new PsiReference[]{new AttrNameReference(range)}; } @@ -131,56 +134,68 @@ public PsiReference[] getReferences() { private class AttrNameReference implements PsiReference, EmptyResolveMessageProvider { private final TextRange myRange; - public AttrNameReference(final TextRange range) { + public AttrNameReference(TextRange range) { myRange = range; } @Override + @RequiredReadAction public PsiElement getElement() { return JSAttributeImpl.this; } + @Nonnull @Override + @RequiredReadAction public TextRange getRangeInElement() { return myRange; } @Override + @RequiredReadAction public PsiElement resolve() { - final String s = getCanonicalText(); + String s = getCanonicalText(); return ArrayUtil.indexOf(myPossibleMetaData, s) >= 0 ? JSAttributeImpl.this : null; } + @Nonnull @Override + @RequiredReadAction public String getCanonicalText() { return getName(); } @Override - public PsiElement handleElementRename(final String newElementName) throws IncorrectOperationException { + @RequiredWriteAction + public PsiElement handleElementRename(String newElementName) throws IncorrectOperationException { return null; } @Override - public PsiElement bindToElement(@Nonnull final PsiElement element) throws IncorrectOperationException { + @RequiredWriteAction + public PsiElement bindToElement(@Nonnull PsiElement element) throws IncorrectOperationException { return null; } @Override - public boolean isReferenceTo(final PsiElement element) { - if (element instanceof JSAttribute) { - final String name = getName(); - return name != null && name.equals(((JSAttribute)element).getName()); + @RequiredReadAction + public boolean isReferenceTo(PsiElement element) { + if (element instanceof JSAttribute attribute) { + String name = getName(); + return name != null && name.equals(attribute.getName()); } return false; } + @Nonnull @Override + @RequiredReadAction public Object[] getVariants() { return myPossibleMetaData; } @Override + @RequiredReadAction public boolean isSoft() { return true; } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAttributeListImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAttributeListImpl.java index 436c0ca5..bab021f9 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAttributeListImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAttributeListImpl.java @@ -16,6 +16,8 @@ package com.intellij.lang.javascript.psi.impl; +import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.access.RequiredWriteAction; import consulo.language.ast.ASTNode; import com.intellij.lang.javascript.JSElementTypes; import com.intellij.lang.javascript.JSTokenTypes; @@ -34,23 +36,31 @@ import java.util.ArrayList; import java.util.List; +import java.util.Map; /** * @author Maxim.Mossienko */ public class JSAttributeListImpl extends JSStubElementImpl implements JSAttributeList { - private static final TokenSet ourModifiersTypeSet = TokenSet.create( + private static final TokenSet OUR_MODIFIERS_TYPE_SET = TokenSet.create( JSTokenTypes.PUBLIC_KEYWORD, JSTokenTypes.PRIVATE_KEYWORD, JSTokenTypes.PROTECTED_KEYWORD, JSTokenTypes.INTERNAL_KEYWORD ); - public JSAttributeListImpl(final ASTNode node) { + private static final Map ACCESS_TYPE_MAP = Map.of( + JSTokenTypes.PUBLIC_KEYWORD, AccessType.PUBLIC, + JSTokenTypes.PROTECTED_KEYWORD, AccessType.PROTECTED, + JSTokenTypes.PRIVATE_KEYWORD, AccessType.PRIVATE, + JSTokenTypes.INTERNAL_KEYWORD, AccessType.PACKAGE_LOCAL + ); + + public JSAttributeListImpl(ASTNode node) { super(node); } - public JSAttributeListImpl(final JSAttributeListStub stub) { + public JSAttributeListImpl(JSAttributeListStub stub) { super(stub, JSElementTypes.ATTRIBUTE_LIST); } @@ -59,20 +69,22 @@ protected void accept(@Nonnull JSElementVisitor visitor) { visitor.visitJSAttributeList(this); } - @Override @Nullable + @Override + @RequiredReadAction public String getNamespace() { - final JSAttributeListStub attributeListStub = getStub(); + JSAttributeListStub attributeListStub = getStub(); if (attributeListStub != null) { return attributeListStub.getNamespace(); } - final JSReferenceExpression namespaceElement = getNamespaceElement(); + JSReferenceExpression namespaceElement = getNamespaceElement(); return namespaceElement != null ? namespaceElement.getText() : null; } @Override + @RequiredReadAction public JSReferenceExpression getNamespaceElement() { - final ASTNode node = getNode().findChildByType(JSElementTypes.REFERENCE_EXPRESSION); + ASTNode node = getNode().findChildByType(JSElementTypes.REFERENCE_EXPRESSION); return node != null ? (JSReferenceExpression)node.getPsi() : null; } @@ -83,7 +95,8 @@ public JSAttribute[] getAttributes() { @Nonnull @Override - public JSAttribute[] getAttributesByName(final @Nonnull String name) { + @RequiredReadAction + public JSAttribute[] getAttributesByName(@Nonnull String name) { List attributes = null; for (JSAttribute attr : getAttributes()) { if (name.equals(attr.getName())) { @@ -97,70 +110,47 @@ public JSAttribute[] getAttributesByName(final @Nonnull String name) { } @Override + @RequiredReadAction public AccessType getAccessType() { - final JSAttributeListStub stub = getStub(); + JSAttributeListStub stub = getStub(); if (stub != null) { return stub.getAccessType(); } - final ASTNode node = getNode().findChildByType(ourModifiersTypeSet); - if (node != null) { - final IElementType nodeType = node.getElementType(); - if (nodeType == JSTokenTypes.PUBLIC_KEYWORD) { - return AccessType.PUBLIC; - } - if (nodeType == JSTokenTypes.PROTECTED_KEYWORD) { - return AccessType.PROTECTED; - } - if (nodeType == JSTokenTypes.PRIVATE_KEYWORD) { - return AccessType.PRIVATE; - } - if (nodeType == JSTokenTypes.INTERNAL_KEYWORD) { - return AccessType.PACKAGE_LOCAL; - } - } - return AccessType.PACKAGE_LOCAL; + ASTNode node = getNode().findChildByType(OUR_MODIFIERS_TYPE_SET); + return ACCESS_TYPE_MAP.getOrDefault(node != null ? node.getElementType() : null, AccessType.PACKAGE_LOCAL); } @Override + @RequiredReadAction public PsiElement findAccessTypeElement() { - final ASTNode modifier = getNode().findChildByType(ourModifiersTypeSet); + ASTNode modifier = getNode().findChildByType(OUR_MODIFIERS_TYPE_SET); return modifier != null ? modifier.getPsi() : null; } @Override - public boolean hasModifier(final ModifierType modifier) { - final JSAttributeListStub stub = getStub(); + @RequiredReadAction + public boolean hasModifier(ModifierType modifier) { + JSAttributeListStub stub = getStub(); if (stub != null) { return stub.hasModifier(modifier); } - IElementType type = null; - switch (modifier) { - case DYNAMIC: - type = JSTokenTypes.DYNAMIC_KEYWORD; - break; - case OVERRIDE: - type = JSTokenTypes.OVERRIDE_KEYWORD; - break; - case NATIVE: - type = JSTokenTypes.NATIVE_KEYWORD; - break; - case STATIC: - type = JSTokenTypes.STATIC_KEYWORD; - break; - case FINAL: - type = JSTokenTypes.FINAL_KEYWORD; - break; - case VIRTUAL: - type = JSTokenTypes.VIRTUAL_KEYWORD; - break; - } + IElementType type = switch (modifier) { + case DYNAMIC -> JSTokenTypes.DYNAMIC_KEYWORD; + case OVERRIDE -> JSTokenTypes.OVERRIDE_KEYWORD; + case NATIVE -> JSTokenTypes.NATIVE_KEYWORD; + case STATIC -> JSTokenTypes.STATIC_KEYWORD; + case FINAL -> JSTokenTypes.FINAL_KEYWORD; + case VIRTUAL -> JSTokenTypes.VIRTUAL_KEYWORD; + default -> null; + }; return type != null && getNode().findChildByType(type) != null; } @Override - public PsiElement add(@Nonnull final PsiElement element) throws IncorrectOperationException { + @RequiredWriteAction + public PsiElement add(@Nonnull PsiElement element) throws IncorrectOperationException { if (element.getNode().getElementType() == JSTokenTypes.OVERRIDE_KEYWORD) { return JSChangeUtil.doDoAddBefore(this, element, getFirstChild()); } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAttributeNameValuePairImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAttributeNameValuePairImpl.java index 6c16a82e..1be66e9a 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAttributeNameValuePairImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAttributeNameValuePairImpl.java @@ -16,7 +16,6 @@ package com.intellij.lang.javascript.psi.impl; -import consulo.language.ast.ASTNode; import com.intellij.lang.javascript.JSElementTypes; import com.intellij.lang.javascript.JSTokenTypes; import com.intellij.lang.javascript.psi.JSAttribute; @@ -24,28 +23,27 @@ import com.intellij.lang.javascript.psi.JSElementVisitor; import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.lang.javascript.psi.stubs.JSAttributeNameValuePairStub; -import consulo.language.psi.PsiReference; -import consulo.language.util.IncorrectOperationException; +import consulo.annotation.access.RequiredReadAction; import consulo.javascript.lang.JavaScriptTokenSets; +import consulo.language.ast.ASTNode; import consulo.language.psi.PsiElement; +import consulo.language.psi.PsiReference; +import consulo.language.util.IncorrectOperationException; import consulo.util.lang.StringUtil; -import org.jetbrains.annotations.NonNls; - import jakarta.annotation.Nonnull; /** - * @by Maxim.Mossienko + * @author Maxim.Mossienko */ public class JSAttributeNameValuePairImpl extends JSStubElementImpl implements JSAttributeNameValuePair { private JSReferenceSet myReferenceSet; - @NonNls private static final String EMBED_ANNOTATION_NAME = "Embed"; - public JSAttributeNameValuePairImpl(final ASTNode node) { + public JSAttributeNameValuePairImpl(ASTNode node) { super(node); } - public JSAttributeNameValuePairImpl(final JSAttributeNameValuePairStub node) { + public JSAttributeNameValuePairImpl(JSAttributeNameValuePairStub node) { super(node, JSElementTypes.ATTRIBUTE_NAME_VALUE_PAIR); } @@ -55,44 +53,50 @@ protected void accept(@Nonnull JSElementVisitor visitor) { } @Override + @RequiredReadAction public String getName() { - final JSAttributeNameValuePairStub stub = getStub(); + JSAttributeNameValuePairStub stub = getStub(); if (stub != null) { return stub.getName(); } - final ASTNode node = getNode().findChildByType(JSTokenTypes.IDENTIFIER); + ASTNode node = getNode().findChildByType(JSTokenTypes.IDENTIFIER); return node != null ? node.getText() : null; } @Override - public PsiElement setName(@NonNls @Nonnull final String name) throws IncorrectOperationException { + @RequiredReadAction + public PsiElement setName(@Nonnull String name) throws IncorrectOperationException { throw new IncorrectOperationException(); } @Override + @RequiredReadAction public JSExpression getValue() { - final ASTNode astNode = findValueNode(); + ASTNode astNode = findValueNode(); return astNode != null ? (JSExpression)astNode.getPsi() : null; } @Override + @RequiredReadAction public String getSimpleValue() { - final JSAttributeNameValuePairStub stub = getStub(); + JSAttributeNameValuePairStub stub = getStub(); if (stub != null) { return stub.getValue(); } - final ASTNode expression = findValueNode(); + ASTNode expression = findValueNode(); return expression != null ? StringUtil.stripQuotesAroundValue(expression.getText()) : null; } + @RequiredReadAction private ASTNode findValueNode() { return getNode().findChildByType(JavaScriptTokenSets.STRING_LITERALS); } @Override @Nonnull + @RequiredReadAction public PsiReference[] getReferences() { - final @NonNls String name = getName(); + String name = getName(); if ("source".equals(name)) { return getPathRefsCheckingParent(); @@ -106,8 +110,9 @@ else if (name == null) { return PsiReference.EMPTY_ARRAY; } + @RequiredReadAction private PsiReference[] getClassRefs() { - final ASTNode valueNode = findValueNode(); + ASTNode valueNode = findValueNode(); if (valueNode != null) { if (myReferenceSet == null) { @@ -119,8 +124,9 @@ private PsiReference[] getClassRefs() { return PsiReference.EMPTY_ARRAY; } + @RequiredReadAction private PsiReference[] getDefaultPropertyRefs() { - final @NonNls String parentName = ((JSAttribute)getParent()).getName(); + String parentName = ((JSAttribute)getParent()).getName(); if ("HostComponent".equals(parentName) || "ArrayElementType".equals(parentName)) { return getClassRefs(); @@ -130,7 +136,7 @@ private PsiReference[] getDefaultPropertyRefs() { return getPathRefs(); } if ("DefaultProperty".equals(parentName)) { - final ASTNode valueNode = findValueNode(); + ASTNode valueNode = findValueNode(); if (valueNode != null) { if (myReferenceSet == null) { myReferenceSet = new JSReferenceSet(this, false); @@ -143,8 +149,9 @@ private PsiReference[] getDefaultPropertyRefs() { return PsiReference.EMPTY_ARRAY; } + @RequiredReadAction private PsiReference[] getPathRefsCheckingParent() { - final @NonNls String parentName = ((JSAttribute)getParent()).getName(); + String parentName = ((JSAttribute)getParent()).getName(); if (!EMBED_ANNOTATION_NAME.equals(parentName)) { return PsiReference.EMPTY_ARRAY; @@ -152,11 +159,15 @@ private PsiReference[] getPathRefsCheckingParent() { return getPathRefs(); } + @RequiredReadAction private PsiReference[] getPathRefs() { - final ASTNode valueNode = findValueNode(); + ASTNode valueNode = findValueNode(); if (valueNode != null) { - return ReferenceSupport.getFileRefs(this, valueNode.getPsi(), valueNode.getPsi().getStartOffsetInParent() + 1, + return ReferenceSupport.getFileRefs( + this, + valueNode.getPsi(), + valueNode.getPsi().getStartOffsetInParent() + 1, ReferenceSupport.LookupOptions.EMBEDDED_ASSET ); } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSBinaryExpressionImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSBinaryExpressionImpl.java index 3b26c27c..ce95d814 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSBinaryExpressionImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSBinaryExpressionImpl.java @@ -34,24 +34,22 @@ import jakarta.annotation.Nullable; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 11:41:42 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public class JSBinaryExpressionImpl extends JSExpressionImpl implements JSBinaryExpression { private static final TokenSet BINARY_OPERATIONS = TokenSet.orSet(JSTokenTypes.OPERATIONS, JSTokenTypes.RELATIONAL_OPERATIONS); private static final TokenSet BINARY_OPERATIONS_WITH_DEFS = TokenSet.create(JSTokenTypes.COMMA, JSTokenTypes.EQ); - public JSBinaryExpressionImpl(final ASTNode node) { + public JSBinaryExpressionImpl(ASTNode node) { super(node); } @Override + @RequiredReadAction public JSExpression getLOperand() { - final ASTNode astNode = getNode(); - final JSExpression firstExpression = PsiTreeUtil.findChildOfType(astNode.getPsi(), JSExpression.class); + ASTNode astNode = getNode(); + JSExpression firstExpression = PsiTreeUtil.findChildOfType(astNode.getPsi(), JSExpression.class); if (firstExpression != null && astNode.findChildByType(BINARY_OPERATIONS, firstExpression.getNode()) == null) { return null; // =a } @@ -59,17 +57,18 @@ public JSExpression getLOperand() { } @Override + @RequiredReadAction public JSExpression getROperand() { - final ASTNode myNode = getNode(); - final ASTNode secondExpression = myNode.findChildByType(JSElementTypes.EXPRESSIONS, myNode.findChildByType(BINARY_OPERATIONS)); + ASTNode myNode = getNode(); + ASTNode secondExpression = myNode.findChildByType(JSElementTypes.EXPRESSIONS, myNode.findChildByType(BINARY_OPERATIONS)); return secondExpression != null ? (JSExpression)secondExpression.getPsi() : null; } - @RequiredReadAction @Nullable @Override + @RequiredReadAction public PsiElement getOperationElement() { - final ASTNode operationASTNode = getNode().findChildByType(BINARY_OPERATIONS); + ASTNode operationASTNode = getNode().findChildByType(BINARY_OPERATIONS); return operationASTNode != null ? operationASTNode.getPsi() : null; } @@ -79,21 +78,22 @@ protected void accept(@Nonnull JSElementVisitor visitor) { } @Override + @RequiredReadAction public boolean processDeclarations( @Nonnull PsiScopeProcessor processor, @Nonnull ResolveState state, PsiElement lastParent, @Nonnull PsiElement place ) { - final IElementType operationType = getOperationSign(); + IElementType operationType = getOperationSign(); if (BINARY_OPERATIONS_WITH_DEFS.contains(operationType)) { - final JSExpression loperand = getLOperand(); - final JSExpression roperand = getROperand(); + JSExpression loperand = getLOperand(); + JSExpression roperand = getROperand(); if (loperand != null) { return loperand.processDeclarations(processor, state, lastParent, place) - && (roperand != null ? roperand.processDeclarations(processor, state, lastParent, place) : true); + && (roperand == null || roperand.processDeclarations(processor, state, lastParent, place)); } } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSBlockStatementImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSBlockStatementImpl.java index ee598323..3d1e4da7 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSBlockStatementImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSBlockStatementImpl.java @@ -21,22 +21,19 @@ import com.intellij.lang.javascript.psi.JSElementVisitor; import com.intellij.lang.javascript.psi.JSLabeledStatement; import com.intellij.lang.javascript.psi.JSStatement; +import consulo.annotation.access.RequiredWriteAction; import consulo.language.ast.ASTNode; import consulo.language.codeStyle.CodeStyleManager; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; - import jakarta.annotation.Nonnull; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 9:17:15 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public class JSBlockStatementImpl extends JSStatementImpl implements JSBlockStatement { - public JSBlockStatementImpl(final ASTNode node) { + public JSBlockStatementImpl(ASTNode node) { super(node); } @@ -55,11 +52,12 @@ protected void accept(@Nonnull JSElementVisitor visitor) { } @Override - public PsiElement add(@Nonnull final PsiElement element) throws IncorrectOperationException { - if (element instanceof JSStatement) { + @RequiredWriteAction + public PsiElement add(@Nonnull PsiElement element) throws IncorrectOperationException { + if (element instanceof JSStatement statement) { ASTNode node = getNode().findChildByType(JSTokenTypes.RBRACE); if (node != null) { - PsiElement psiElement = super.addAfter(element, node.getTreePrev().getPsi()); + PsiElement psiElement = super.addAfter(statement, node.getTreePrev().getPsi()); CodeStyleManager.getInstance(getProject()).reformatNewlyAddedElement(getNode(), psiElement.getNode()); return psiElement; } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSBreakStatementImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSBreakStatementImpl.java index 85339e3b..ce33bbba 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSBreakStatementImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSBreakStatementImpl.java @@ -16,20 +16,18 @@ package com.intellij.lang.javascript.psi.impl; +import consulo.annotation.access.RequiredReadAction; import consulo.language.ast.ASTNode; import com.intellij.lang.javascript.psi.*; import consulo.language.psi.util.PsiTreeUtil; import jakarta.annotation.Nonnull; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 9:52:04 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public class JSBreakStatementImpl extends JSStatementWithLabelReferenceImpl implements JSBreakStatement { - public JSBreakStatementImpl(final ASTNode node) { + public JSBreakStatementImpl(ASTNode node) { super(node); } @@ -39,6 +37,7 @@ protected void accept(@Nonnull JSElementVisitor visitor) { } @Override + @RequiredReadAction public JSStatement getStatementToBreak() { String label = getLabel(); if (label == null) { diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JavaScriptSimpleType.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JavaScriptSimpleType.java index 3a816e02..52cb8d41 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JavaScriptSimpleType.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JavaScriptSimpleType.java @@ -24,7 +24,7 @@ /** * @author VISTALL - * @since 13.12.2015 + * @since 2015-12-13 */ public class JavaScriptSimpleType implements JavaScriptType { private String myReferenceName; diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/reference/JSPropertyNameReference.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/reference/JSPropertyNameReference.java index 0ab54e57..4f967f5f 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/reference/JSPropertyNameReference.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/reference/JSPropertyNameReference.java @@ -52,7 +52,7 @@ public PsiElement getElement() { @RequiredReadAction public TextRange getRangeInElement() { int quotesDelta = myNameIdentifier.getNode().getElementType() == JSTokenTypes.STRING_LITERAL ? 1 : 0; - final int startOffsetInParent = myNameIdentifier.getStartOffsetInParent(); + int startOffsetInParent = myNameIdentifier.getStartOffsetInParent(); int startOffset = startOffsetInParent + quotesDelta; int endOffset = startOffsetInParent + myNameIdentifier.getTextLength() - quotesDelta; if (endOffset <= startOffset) { @@ -88,7 +88,7 @@ public PsiElement bindToElement(@Nonnull PsiElement element) throws IncorrectOpe @Override @RequiredReadAction public boolean isReferenceTo(PsiElement element) { - final PsiElement element2 = resolve(); + PsiElement element2 = resolve(); boolean proxyExpanded = false; if (element instanceof JSDefinitionExpression definition @@ -106,7 +106,7 @@ public boolean isReferenceTo(PsiElement element) { @Override @RequiredReadAction public Object[] getVariants() { - final VariantsProcessor processor = + VariantsProcessor processor = new VariantsProcessor(null, myProperty.getContainingFile(), false, myProperty); JSResolveUtil.processGlobalSymbols(myProperty, processor); From f1a8b1b947d5926ec3711d8ea1952728ccc598e6 Mon Sep 17 00:00:00 2001 From: UNV Date: Sun, 12 Jan 2025 13:00:34 +0300 Subject: [PATCH 093/150] Partially refactoring resolve and parsing.impl. --- .../JSSmartCompletionVariantsHandler.java | 66 +- .../javascript/psi/resolve/JSResolveUtil.java | 1006 +++++++++-------- .../JavaSciptDestructuringObjectImpl.java | 4 +- .../JavaScriptDestructuringParameterImpl.java | 1 + ...tDestructuringShorthandedPropertyImpl.java | 4 +- 5 files changed, 544 insertions(+), 537 deletions(-) diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSSmartCompletionVariantsHandler.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSSmartCompletionVariantsHandler.java index eb5426ca..6d140991 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSSmartCompletionVariantsHandler.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSSmartCompletionVariantsHandler.java @@ -22,6 +22,7 @@ import com.intellij.lang.javascript.psi.resolve.ResolveProcessor; import com.intellij.lang.javascript.psi.util.JSLookupUtil; import com.intellij.lang.javascript.search.JSClassSearch; +import consulo.annotation.access.RequiredReadAction; import consulo.application.util.query.Query; import consulo.language.psi.PsiElement; import consulo.language.psi.ResolveResult; @@ -30,10 +31,9 @@ import consulo.project.Project; import consulo.util.lang.StringUtil; import consulo.util.lang.ref.Ref; +import consulo.util.lang.ref.SimpleReference; import consulo.xml.psi.xml.XmlFile; import consulo.xml.psi.xml.XmlTag; -import org.jetbrains.annotations.NonNls; - import jakarta.annotation.Nonnull; import java.util.ArrayList; @@ -43,23 +43,23 @@ /** * @author Maxim.Mossienko - * Date: Jan 25, 2008 - * Time: 12:40:48 AM + * @since 2008-01-25 */ public class JSSmartCompletionVariantsHandler { - static Object[] getSmartVariants(final @Nonnull PsiElement expr, final boolean ecma) { - final PsiElement parent = expr.getParent(); + @RequiredReadAction + static Object[] getSmartVariants(@Nonnull PsiElement expr, boolean ecma) { + PsiElement parent = expr.getParent(); if (parent instanceof JSArgumentList argumentList && argumentList.getArguments()[0] == expr && ecma && ((JSReferenceExpression)expr).getQualifier() == null) { - final JSExpression calledExpr = ((JSCallExpression)parent.getParent()).getMethodExpression(); + JSExpression calledExpr = ((JSCallExpression)parent.getParent()).getMethodExpression(); if (calledExpr instanceof JSReferenceExpression expression) { - final @NonNls String s = expression.getReferencedName(); + String s = expression.getReferencedName(); if ("addEventListener".equals(s) || "removeEventListener".equals(s)) { - final List variants = new ArrayList(); - final MyEventSubclassesProcessor subclassesProcessor = new MyEventSubclassesProcessor(expr, variants); + List variants = new ArrayList<>(); + MyEventSubclassesProcessor subclassesProcessor = new MyEventSubclassesProcessor(expr, variants); subclassesProcessor.findAcceptableVariants(expression, parent.getProject()); if (variants.size() > 0) { return variants.toArray(new Object[variants.size()]); @@ -78,7 +78,7 @@ private static class MyEventSubclassesProcessor extends ResolveProcessor impleme private final Map myCandidatesMap = new HashMap<>(); private boolean findAcceptableEvents; - public MyEventSubclassesProcessor(final PsiElement expr, final List variants) { + public MyEventSubclassesProcessor(PsiElement expr, List variants) { super(null); myExpr = expr; myVariants = variants; @@ -86,48 +86,50 @@ public MyEventSubclassesProcessor(final PsiElement expr, final List vari setToProcessHierarchy(true); } - public boolean process(final JSClass clazz) { + public boolean process(JSClass clazz) { clazz.processDeclarations(this, state, clazz, clazz); return true; } @Override - public boolean execute(final PsiElement element, final ResolveState state) { + @RequiredReadAction + public boolean execute(@Nonnull PsiElement element, ResolveState state) { if (element instanceof JSVariable variable) { - final JSAttributeList attributeList = variable.getAttributeList(); + JSAttributeList attributeList = variable.getAttributeList(); if (attributeList != null && attributeList.getAccessType() == JSAttributeList.AccessType.PUBLIC && attributeList.hasModifier(JSAttributeList.ModifierType.STATIC) && "String".equals(variable.getTypeString())) { - final String s = variable.getInitializerText(); + String s = variable.getInitializerText(); if (s != null && StringUtil.startsWith(s, "\"") && StringUtil.endsWith(s, "\"")) { myCandidatesMap.put(StringUtil.stripQuotesAroundValue(s), variable); } } } - if (findAcceptableEvents && element instanceof JSClass) { - JSResolveUtil.processMetaAttributesForClass(element, this); + if (findAcceptableEvents && element instanceof JSClass jsClass) { + JSResolveUtil.processMetaAttributesForClass(jsClass, this); } return true; } - public void findAcceptableVariants(JSReferenceExpression expression, final Project project) { + @RequiredReadAction + public void findAcceptableVariants(JSReferenceExpression expression, Project project) { PsiElement clazz = JSResolveUtil.findClassByQName("flash.events.Event", expression.getResolveScope(), project); clazz = JSResolveUtil.unwrapProxy(clazz); if (!(clazz instanceof JSClass)) { return; } - final Query query = JSClassSearch.searchClassInheritors((JSClass)clazz, true); + Query query = JSClassSearch.searchClassInheritors((JSClass)clazz, true); for (JSClass extendedClass : query.findAll()) { process(extendedClass); } - final JSExpression qualifier = expression.getQualifier(); + JSExpression qualifier = expression.getQualifier(); JSClass clazzToProcess = null; @@ -135,23 +137,23 @@ public void findAcceptableVariants(JSReferenceExpression expression, final Proje clazzToProcess = PsiTreeUtil.getParentOfType(qualifier, JSClass.class); } else if (qualifier instanceof JSReferenceExpression referenceExpression) { - final ResolveResult[] results = referenceExpression.multiResolve(false); + ResolveResult[] results = referenceExpression.multiResolve(false); if (results.length > 0 && results[0].getElement() instanceof JSClass jsClass) { clazzToProcess = jsClass; } } if (clazzToProcess == null) { - final PsiElement context = expression.getContainingFile().getContext(); + PsiElement context = expression.getContainingFile().getContext(); clazzToProcess = JSResolveUtil.getClassFromTagNameInMxml(context); if (clazzToProcess == null && context != null) { XmlFile file = PsiTreeUtil.getParentOfType(context, XmlFile.class); if (file != null) { - final XmlTag rootTag = file.getDocument().getRootTag(); - final XmlTag[] tags = rootTag != null + XmlTag rootTag = file.getDocument().getRootTag(); + XmlTag[] tags = rootTag != null ? XmlBackedJSClassImpl.findMxmlSubTags(rootTag, "Metadata") : XmlTag.EMPTY; - final MyJSInjectedFilesVisitor injectedFilesVisitor = new MyJSInjectedFilesVisitor(); + MyJSInjectedFilesVisitor injectedFilesVisitor = new MyJSInjectedFilesVisitor(); for (XmlTag tag : tags) { JSResolveUtil.processInjectedFileForTag(tag, injectedFilesVisitor); @@ -170,13 +172,14 @@ else if (qualifier instanceof JSReferenceExpression referenceExpression) { } @Override - public boolean process(final @Nonnull JSAttribute jsAttribute) { + @RequiredReadAction + public boolean process(@Nonnull JSAttribute jsAttribute) { if ("Event".equals(jsAttribute.getName())) { - final JSAttributeNameValuePair eventName = jsAttribute.getValueByName("name"); + JSAttributeNameValuePair eventName = jsAttribute.getValueByName("name"); if (eventName != null) { - final String value = eventName.getSimpleValue(); - final JSVariable variable = myCandidatesMap.get(value); + String value = eventName.getSimpleValue(); + JSVariable variable = myCandidatesMap.get(value); if (variable != null) { myCandidatesMap.remove(value); @@ -193,13 +196,14 @@ public boolean process(final @Nonnull JSAttribute jsAttribute) { } @Override - public boolean handleOtherElement(final PsiElement el, final PsiElement context, final Ref continuePassElement) { + public boolean handleOtherElement(PsiElement el, PsiElement context, SimpleReference continuePassElement) { return true; } private class MyJSInjectedFilesVisitor extends JSResolveUtil.JSInjectedFilesVisitor { @Override - protected void process(final JSFile file) { + @RequiredReadAction + protected void process(JSFile file) { for (PsiElement element : file.getChildren()) { if (element instanceof JSAttributeList attributeList) { JSResolveUtil.processAttributeList(MyEventSubclassesProcessor.this, null, attributeList, true); diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/JSResolveUtil.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/JSResolveUtil.java index 876a91bb..d0b46376 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/JSResolveUtil.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/JSResolveUtil.java @@ -33,6 +33,7 @@ import com.intellij.lang.javascript.psi.impl.JSStubElementImpl; import com.intellij.xml.XmlElementDescriptor; import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.access.RequiredWriteAction; import consulo.application.util.*; import consulo.application.util.function.Processor; import consulo.component.extension.Extensions; @@ -76,13 +77,11 @@ import consulo.util.dataholder.Key; import consulo.util.lang.Comparing; import consulo.util.lang.StringUtil; -import consulo.util.lang.ref.Ref; +import consulo.util.lang.ref.SimpleReference; import consulo.virtualFileSystem.VirtualFile; import consulo.virtualFileSystem.util.VirtualFileUtil; import consulo.xml.ide.highlighter.XmlFileType; import consulo.xml.psi.xml.*; -import org.jetbrains.annotations.NonNls; - import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @@ -93,34 +92,32 @@ */ public class JSResolveUtil { private static final Key>> MY_CACHED_STATEMENTS = Key.create("JS.RelevantStatements"); - private static UserDataCache>, JSElement, Object> ourCachedDefsCache = + private static final UserDataCache>, JSElement, Object> OUR_CACHED_DEFS_CACHE = new RelevantDefsUserDataCache(); - @NonNls public static final String PROTOTYPE_FIELD_NAME = "prototype"; - @NonNls private static final String ARRAY_TYPE_NAME = "Array"; - @NonNls private static final String ARGUMENTS_TYPE_NAME = "Arguments"; public static final String COMMENT_DELIMITERS = "|/"; - public static void processInjectedFileForTag(final @Nonnull XmlTag tag, @Nonnull JSInjectedFilesVisitor visitor) { + public static void processInjectedFileForTag(@Nonnull XmlTag tag, @Nonnull JSInjectedFilesVisitor visitor) { InjectedLanguageManager injectedLanguageManager = InjectedLanguageManager.getInstance(tag.getProject()); for (XmlTagChild child : tag.getValue().getChildren()) { - if (child instanceof XmlText) { - injectedLanguageManager.enumerate(child, visitor); + if (child instanceof XmlText xmlText) { + injectedLanguageManager.enumerate(xmlText, visitor); } } } - public static String findPackageForMxml(final PsiElement expression) { + @RequiredReadAction + public static String findPackageForMxml(PsiElement expression) { String s = null; - final PsiFile containingFile = expression.getContainingFile(); + PsiFile containingFile = expression.getContainingFile(); if (containingFile.getLanguage() == JavaScriptSupportLoader.ECMA_SCRIPT_L4 && containingFile.getContext() != null) { - final PsiFile contextContainigFile = containingFile.getContext().getContainingFile(); + PsiFile contextContainigFile = containingFile.getContext().getContainingFile(); VirtualFile file = contextContainigFile.getVirtualFile(); if (file == null && contextContainigFile.getOriginalFile() != null) { file = contextContainigFile.getOriginalFile().getVirtualFile(); @@ -132,12 +129,12 @@ public static String findPackageForMxml(final PsiElement expression) { } public static String getExpectedPackageNameFromFile(VirtualFile file, Project project, boolean allowEvaluationFromContextRoot) { - final ProjectFileIndex projectFileIndex = ProjectRootManager.getInstance(project).getFileIndex(); - final Module moduleForFile = file != null ? projectFileIndex.getModuleForFile(file) : null; + ProjectFileIndex projectFileIndex = ProjectRootManager.getInstance(project).getFileIndex(); + Module moduleForFile = file != null ? projectFileIndex.getModuleForFile(file) : null; if (moduleForFile != null) { - if (file instanceof VirtualFileWindow) { - file = ((VirtualFileWindow)file).getDelegate(); + if (file instanceof VirtualFileWindow virtualFileWindow) { + file = virtualFileWindow.getDelegate(); } VirtualFile rootForFile = projectFileIndex.getSourceRootForFile(file); if (rootForFile == null && allowEvaluationFromContextRoot) { @@ -151,23 +148,24 @@ public static String getExpectedPackageNameFromFile(VirtualFile file, Project pr return null; } - public static void processInterfaceMethods(final JSClass clazz, final CollectMethodsToImplementProcessor implementedMethodProcessor) { + public static void processInterfaceMethods(JSClass clazz, CollectMethodsToImplementProcessor implementedMethodProcessor) { clazz.processDeclarations(implementedMethodProcessor, ResolveState.initial(), clazz, clazz); } - public static String getExpressionType(final JSExpression expression, final PsiFile containingFile) { + @RequiredReadAction + public static String getExpressionType(JSExpression expression, PsiFile containingFile) { String type = getQualifiedExpressionType(expression, containingFile); return getShortenedType(type, expression); } - public static String getShortenedType(String type, final PsiElement context) { + public static String getShortenedType(String type, PsiElement context) { if (type == null) { type = "*"; } else { String shortName = getShortTypeName(type); - final String expr = JSImportHandlingUtil.resolveTypeName(shortName, context); + String expr = JSImportHandlingUtil.resolveTypeName(shortName, context); if (expr != null && !expr.equals(shortName)) { type = shortName; } @@ -175,11 +173,12 @@ public static String getShortenedType(String type, final PsiElement context) { return type; } - public static String getQualifiedExpressionType(final JSExpression expression, final PsiFile containingFile) { + @RequiredReadAction + public static String getQualifiedExpressionType(JSExpression expression, PsiFile containingFile) { String type = null; if (expression != null) { - final BaseJSSymbolProcessor.SimpleTypeProcessor processor = + BaseJSSymbolProcessor.SimpleTypeProcessor processor = new BaseJSSymbolProcessor.SimpleTypeProcessor(JavaScriptVersionUtil.getFeatures(expression)); BaseJSSymbolProcessor.doEvalForExpr(expression, containingFile, processor); type = processor.getType(); @@ -191,11 +190,11 @@ public static String getQualifiedExpressionType(final JSExpression expression, f private static String getShortTypeName(String type) { String str = type; - final int i = str.indexOf('<'); + int i = str.indexOf('<'); String signature = null; if (i != -1) { - final int index = str.lastIndexOf('.', i); + int index = str.lastIndexOf('.', i); if (index == -1) { return type; } @@ -203,7 +202,7 @@ private static String getShortTypeName(String type) { str = str.substring(0, index); } - final int i2 = str.lastIndexOf('.'); + int i2 = str.lastIndexOf('.'); if (i2 != -1) { str = str.substring(i2 + 1); } @@ -213,23 +212,24 @@ private static String getShortTypeName(String type) { // TODO remove this method, call generic one processing includes as well (like findParent()) public static PsiElement getClassReferenceForXmlFromContext(PsiElement parent) { - final PsiElement context = parent != null ? parent.getContext() : null; - if (context instanceof XmlElement && context.getContainingFile() instanceof XmlFile) { - return XmlBackedJSClassImpl.getContainingComponent((XmlElement)context); + if (parent != null && parent.getContext() instanceof XmlElement xmlElement + && xmlElement.getContainingFile() instanceof XmlFile) { + return XmlBackedJSClassImpl.getContainingComponent(xmlElement); } return parent; } @Nullable - public static XmlBackedJSClassImpl getXmlBackedClass(final JSFile injectedJsFile) { - final PsiElement context = injectedJsFile.getContext(); + public static XmlBackedJSClassImpl getXmlBackedClass(JSFile injectedJsFile) { + PsiElement context = injectedJsFile.getContext(); if (context instanceof XmlAttributeValue || context instanceof XmlText) { return XmlBackedJSClassImpl.getContainingComponent((XmlElement)context); } return null; } - public static SearchScope findUseScope(final T jsVariableBase) { + @RequiredReadAction + public static SearchScope findUseScope(T jsVariableBase) { PsiElement element = PsiTreeUtil.getParentOfType( jsVariableBase, JSFunction.class, @@ -240,10 +240,10 @@ public static SearchScope find ); PsiElement scopeElement = element; - if (element instanceof JSFile) { - final PsiElement xmlFromContext = getClassReferenceForXmlFromContext(element); + if (element instanceof JSFile jsFile) { + PsiElement xmlFromContext = getClassReferenceForXmlFromContext(jsFile); - if (xmlFromContext != element) { + if (xmlFromContext != jsFile) { element = xmlFromContext; scopeElement = element.getContainingFile(); } @@ -253,19 +253,16 @@ public static SearchScope find } if (element != null) { - if (element instanceof JSFunction) { - final PsiElement elt = - JSDocumentationUtils.findDocComment(JSDocumentationProvider.findElementForWhichPreviousCommentWillBeSearched(element)); - if (elt instanceof PsiComment) { - return new LocalSearchScope(new PsiElement[]{ - elt, - element - }); + if (element instanceof JSFunction function) { + PsiElement elt = + JSDocumentationUtils.findDocComment(JSDocumentationProvider.findElementForWhichPreviousCommentWillBeSearched(function)); + if (elt instanceof PsiComment comment) { + return new LocalSearchScope(new PsiElement[]{comment, function}); } } if (element instanceof JSClass) { - final JSAttributeList attributeList = jsVariableBase.getAttributeList(); + JSAttributeList attributeList = jsVariableBase.getAttributeList(); if (attributeList == null || attributeList.getAccessType() != JSAttributeList.AccessType.PRIVATE) { return ((JSStubElementImpl)jsVariableBase).getDefaultUseScope(); @@ -276,7 +273,8 @@ public static SearchScope find return ((JSStubElementImpl)jsVariableBase).getDefaultUseScope(); } - public static final boolean isAssignableType(@NonNls final String expectedType, @NonNls String type, PsiElement context) { + @RequiredReadAction + public static boolean isAssignableType(String expectedType, String type, PsiElement context) { if ((expectedType != null && hasMultipleOccurenceDelimiters(expectedType)) || (type != null && hasMultipleOccurenceDelimiters(type))) { StringTokenizer expectedTypeIterator = new StringTokenizer(expectedType != null ? expectedType : "", COMMENT_DELIMITERS); @@ -302,7 +300,7 @@ public static final boolean isAssignableType(@NonNls final String expectedType, return true; } - final boolean nonecma = context.getContainingFile().getLanguage() != JavaScriptSupportLoader.ECMA_SCRIPT_L4; + boolean nonecma = context.getContainingFile().getLanguage() != JavaScriptSupportLoader.ECMA_SCRIPT_L4; if ("Number".equals(expectedType) && ("int".equals(type) || "uint".equals(type) || (("Boolean".equals(type) || "String".equals(type)) && nonecma))) { @@ -342,7 +340,7 @@ public static final boolean isAssignableType(@NonNls final String expectedType, if ("void".equals(type)) { return false; } - final PsiElement typeClass = type != null ? unwrapProxy(findClassByQName(type, context)) : null; + PsiElement typeClass = type != null ? unwrapProxy(findClassByQName(type, context)) : null; if (!(typeClass instanceof JSClass)) { return true; @@ -358,15 +356,15 @@ public static final boolean isAssignableType(@NonNls final String expectedType, } @Override - public boolean execute(final PsiElement element, final ResolveState state) { - if (!(element instanceof JSClass)) { + @RequiredReadAction + public boolean execute(@Nonnull PsiElement element, ResolveState state) { + if (!(element instanceof JSClass jsClass)) { return true; } - final JSClass clazz = (JSClass)element; - boolean sameType = clazz.getQualifiedName().equals(expectedType); + boolean sameType = jsClass.getQualifiedName().equals(expectedType); if (!sameType) { - for (JSClass implementedClazz : clazz.getImplementedInterfaces()) { + for (JSClass implementedClazz : jsClass.getImplementedInterfaces()) { sameType = !implementedClazz.processDeclarations(this, ResolveState.initial(), implementedClazz, implementedClazz); if (sameType) { @@ -390,7 +388,7 @@ public boolean execute(final PsiElement element, final ResolveState state) { } private static boolean hasMultipleOccurenceDelimiters(String expectedType) { - final String commentDelimiters = COMMENT_DELIMITERS; + String commentDelimiters = COMMENT_DELIMITERS; for (int i = 0; i < commentDelimiters.length(); ++i) { if (expectedType.indexOf(commentDelimiters.charAt(i)) != -1) { @@ -400,6 +398,7 @@ private static boolean hasMultipleOccurenceDelimiters(String expectedType) { return false; } + @RequiredReadAction private static boolean isImplicitCastPossible(JSClass typeClass, String expectedType) { // TODO: move to flex support plugin if (expectedType.equals("flash.events.IEventDispatcher")) { @@ -411,7 +410,7 @@ private static boolean isImplicitCastPossible(JSClass typeClass, String expected return false; } - public static PsiElement getTopReferenceParent(final PsiElement parent) { + public static PsiElement getTopReferenceParent(PsiElement parent) { PsiElement currentParent = parent; for (; currentParent instanceof JSReferenceExpression; currentParent = currentParent.getParent()) { ; @@ -419,7 +418,7 @@ public static PsiElement getTopReferenceParent(final PsiElement parent) { return currentParent; } - public static PsiElement getTopReferenceExpression(final @Nonnull PsiElement parent) { + public static PsiElement getTopReferenceExpression(@Nonnull PsiElement parent) { PsiElement element = parent; for (PsiElement currentParent = parent.getParent(); currentParent instanceof JSReferenceExpression; @@ -429,19 +428,20 @@ public static PsiElement getTopReferenceExpression(final @Nonnull PsiElement par return element; } - public static boolean isSelfReference(final PsiElement currentParent, PsiElement elt) { + @RequiredReadAction + public static boolean isSelfReference(PsiElement currentParent, PsiElement elt) { return currentParent instanceof JSPackageStatement || currentParent instanceof JSNamespaceDeclaration || (currentParent instanceof JSVariable variable && variable.getNameIdentifier() == elt) || (currentParent instanceof JSFunction function && function.getNameIdentifier() == elt) || currentParent instanceof JSClass; } - public static PsiElement findParent(final PsiElement element) { - PsiElement parent = element instanceof JSVariable ? element.getParent().getParent() : element.getParent(); + public static PsiElement findParent(PsiElement element) { + PsiElement parent = element instanceof JSVariable variable ? variable.getParent().getParent() : element.getParent(); return parent instanceof JSFile jsFile ? findParentClass(jsFile) : parent; } - private static PsiElement findParentClass(final JSFile file) { + private static PsiElement findParentClass(JSFile file) { JSClass xmlBackedClass = getXmlBackedClass(file); if (xmlBackedClass != null) { return xmlBackedClass; @@ -451,20 +451,21 @@ private static PsiElement findParentClass(final JSFile file) { if (forcedContext != null && !forcedContext.isValid()) { forcedContext = null; } - if (forcedContext instanceof JSClass) { - return forcedContext; + + if (forcedContext instanceof JSClass jsClass) { + return jsClass; } - if (forcedContext instanceof JSFile) { - return findParentClass((JSFile)forcedContext); + if (forcedContext instanceof JSFile jsFile) { + return findParentClass(jsFile); } - if (forcedContext instanceof PsiFile && JavaScriptSupportLoader.isFlexMxmFile((PsiFile)forcedContext)) { - return XmlBackedJSClassImpl.getXmlBackedClass((XmlFile)forcedContext); + if (forcedContext instanceof XmlFile xmlFile && JavaScriptSupportLoader.isFlexMxmFile(xmlFile)) { + return XmlBackedJSClassImpl.getXmlBackedClass(xmlFile); } - if (forcedContext instanceof XmlElement) { - PsiFile containingFile = forcedContext.getContainingFile(); + if (forcedContext instanceof XmlElement xmlElement) { + PsiFile containingFile = xmlElement.getContainingFile(); if (JavaScriptSupportLoader.isFlexMxmFile(containingFile)) { return XmlBackedJSClassImpl.getXmlBackedClass((XmlFile)containingFile); } @@ -481,29 +482,29 @@ private static PsiElement findParentClass(final JSFile file) { @Nullable public static JSClass getClassOfContext(PsiElement node) { - final JSClass jsClass = PsiTreeUtil.getParentOfType(node, JSClass.class); + JSClass jsClass = PsiTreeUtil.getParentOfType(node, JSClass.class); if (jsClass != null) { return jsClass; } else { - final PsiElement context = getClassReferenceForXmlFromContext(node.getContainingFile()); - if (context instanceof JSClass) { - return (JSClass)context; + PsiElement context = getClassReferenceForXmlFromContext(node.getContainingFile()); + if (context instanceof JSClass contextClass) { + return contextClass; } } return null; } - public static @Nullable - JSClass findClassOfQualifier(final JSExpression qualifier, final PsiFile containingFile) { - final String s = getQualifiedExpressionType(qualifier, containingFile); - final PsiElement qName = s != null ? unwrapProxy(findClassByQName(s, containingFile)) : null; + @RequiredReadAction + public static JSClass findClassOfQualifier(JSExpression qualifier, PsiFile containingFile) { + String s = getQualifiedExpressionType(qualifier, containingFile); + PsiElement qName = s != null ? unwrapProxy(findClassByQName(s, containingFile)) : null; return qName instanceof JSClass jsClass ? jsClass : null; } - public static boolean referenceExpressionShouldBeQualified(final JSReferenceExpression contextExpr) { + public static boolean referenceExpressionShouldBeQualified(JSReferenceExpression contextExpr) { PsiElement parent = contextExpr.getParent(); return parent instanceof JSImportStatement || (parent instanceof JSReferenceList && contextExpr.getContainingFile().getContext() != null); @@ -513,8 +514,9 @@ public static boolean isArtificialClassUsedForReferenceList(JSClass clazz) { return clazz.getContainingFile().getContext() != null; } + @RequiredReadAction public static Collection findElementsByName(String name, Project project, GlobalSearchScope scope) { - final Set result = new HashSet<>(); + Set result = new HashSet<>(); Collection jsQualifiedNamedElements = StubIndex.getElements(JavaScriptIndexKeys.ELEMENTS_BY_NAME, name, project, scope, JSQualifiedNamedElement.class); @@ -528,11 +530,11 @@ public static Collection findElementsByName(String name files.addAll(FileBasedIndex.getInstance() .getContainingFiles(FilenameIndex.NAME, name + JavaScriptSupportLoader.MXML_FILE_EXTENSION2_DOT, scope)); - for (final VirtualFile file : files) { + for (VirtualFile file : files) { if (!file.isValid()) { continue; } - final PsiFile psiFile = PsiManager.getInstance(project).findFile(file); + PsiFile psiFile = PsiManager.getInstance(project).findFile(file); if (psiFile != null) { result.add(XmlBackedJSClassImpl.getXmlBackedClass((XmlFile)psiFile)); } @@ -540,19 +542,21 @@ public static Collection findElementsByName(String name return result; } + @RequiredReadAction public static boolean isNewResolveAndCompletion(PsiFile psiFile) { return psiFile.getLanguage().isKindOf(JavaScriptSupportLoader.ECMA_SCRIPT_L4) || JavaScriptSupportLoader.isFlexMxmFile(psiFile); } - public static String getTypeFromSetAccessor(final JSNamedElement jsNamedElement) { + @RequiredReadAction + public static String getTypeFromSetAccessor(JSNamedElement jsNamedElement) { if (!(jsNamedElement instanceof JSFunction function && function.isSetProperty())) { return null; } - final JSParameterList jsParameterList = ((JSFunction)jsNamedElement).getParameterList(); + JSParameterList jsParameterList = function.getParameterList(); if (jsParameterList == null) { return null; } - final JSParameter[] jsParameters = jsParameterList.getParameters(); + JSParameter[] jsParameters = jsParameterList.getParameters(); if (jsParameters == null || jsParameters.length != 1) { return null; } @@ -564,7 +568,7 @@ public static boolean shouldProcessTopLevelGlobalContext(@Nonnull PsiElement pla return shouldProcessImports(place, processor) && ( !((placeParent = place.getParent()) instanceof JSCallExpression) - || (place instanceof JSReferenceExpression referenceExpression && referenceExpression.getQualifier() != null + || (place instanceof JSReferenceExpression refExpr && refExpr.getQualifier() != null && ((ResolveProcessor)processor).specificallyAskingToResolveQualifiedNames()) || placeParent instanceof JSNewExpression); } @@ -573,11 +577,11 @@ public static boolean shouldProcessImports(@Nonnull PsiElement place, @Nonnull P if (!(processor instanceof ResolveProcessor resolveProcessor && !resolveProcessor.isLocalResolve())) { return false; } - return (!(place instanceof JSReferenceExpression) || - ((JSReferenceExpression)place).getQualifier() == null || - ((ResolveProcessor)processor).specificallyAskingToResolveQualifiedNames()); + return !(place instanceof JSReferenceExpression refExpr && refExpr.getQualifier() != null) + || resolveProcessor.specificallyAskingToResolveQualifiedNames(); } + @RequiredReadAction public static boolean processTopLevelClasses( PsiScopeProcessor processor, ResolveState state, @@ -587,7 +591,7 @@ public static boolean processTopLevelClasses( boolean acceptQualifiedElements ) { boolean result = true; - final String resolvedName = ((ResolveProcessor)processor).getName(); + String resolvedName = ((ResolveProcessor)processor).getName(); if (resolvedName == null) { for (String s : StubIndex.getInstance().getAllKeys(JavaScriptIndexKeys.ELEMENTS_BY_NAME, project)) { @@ -641,8 +645,8 @@ public static boolean processTopLevelClasses( static boolean walkOverStructure(@Nonnull PsiElement context, Processor processor) { PsiNamedElement parent = PsiTreeUtil.getNonStrictParentOfType(context, JSQualifiedNamedElement.class, PsiFile.class); - if (parent instanceof JSClass) { - PsiElement forcedContext = parent.getUserData(contextKey); + if (parent instanceof JSClass jsClass) { + PsiElement forcedContext = jsClass.getUserData(contextKey); if (forcedContext instanceof XmlBackedJSClassImpl xmlBackedJSClass && !processor.process(xmlBackedJSClass)) { return false; @@ -658,11 +662,11 @@ static boolean walkOverStructure(@Nonnull PsiElement context, Processor, JSElement>> ourCachedOpenedNsesKey = Key.create("opened.nses"); private static final UserDataCache, JSElement>, JSElement, Object> ourCachedOpenedNsesCache = - new UserDataCache, JSElement>, JSElement, Object>() { + new UserDataCache<>() { @Override protected ParameterizedCachedValue, JSElement> compute(JSElement jsElement, Object p) { return CachedValuesManager.getManager(jsElement.getProject()).createParameterizedCachedValue( @@ -706,12 +710,13 @@ public boolean process(PsiNamedElement psiNamedElement) { } @Override - public boolean execute(PsiElement element, ResolveState state) { + @RequiredReadAction + public boolean execute(@Nonnull PsiElement element, ResolveState state) { if (!(element instanceof JSUseNamespaceDirective)) { return true; } if (openedNses == null) { - openedNses = new HashSet(); + openedNses = new HashSet<>(); } openedNses.add(((JSUseNamespaceDirective)element).getNamespaceToBeUsed()); return true; @@ -719,7 +724,7 @@ public boolean execute(PsiElement element, ResolveState state) { } MyProcessor processor = new MyProcessor(); walkOverStructure(context, processor); - return new CachedValueProvider.Result>(processor.openedNses, PsiModificationTracker.EVER_CHANGED); + return new CachedValueProvider.Result<>(processor.openedNses, PsiModificationTracker.EVER_CHANGED); } }, false @@ -728,39 +733,40 @@ public boolean execute(PsiElement element, ResolveState state) { }; public static Set calculateOpenNses(PsiElement place) { - final Ref> result = new Ref<>(); - walkOverStructure(place, new Processor() { - @Override - public boolean process(PsiNamedElement psiNamedElement) { + SimpleReference> result = new SimpleReference<>(); + walkOverStructure( + place, + psiNamedElement -> { if (psiNamedElement instanceof JSElement element) { result.set(ourCachedOpenedNsesCache.get(ourCachedOpenedNsesKey, element, null).getValue(element)); } return false; } - }); + ); return result.get() != null ? result.get() : Collections.emptySet(); } + @RequiredReadAction public static boolean processGlobalThings(PsiScopeProcessor processor, ResolveState state, PsiElement place, PsiElement context) { boolean result = true; - final Project project = context.getProject(); - final GlobalSearchScope scope = context.getResolveScope(); + Project project = context.getProject(); + GlobalSearchScope scope = context.getResolveScope(); if (shouldProcessTopLevelGlobalContext(place, processor)) { //result = processTopPackages((ResolveProcessor) processor, state, project, scope); } if (result) { - boolean acceptOnlyClasses = place instanceof JSReferenceExpression ? isExprInTypeContext((JSReferenceExpression)place) : false; + boolean acceptOnlyClasses = place instanceof JSReferenceExpression refExpr && isExprInTypeContext(refExpr); result = processTopLevelClasses(processor, state, project, scope, acceptOnlyClasses, true); } return result; } - public static @Nullable - JSParameter findParameterForUsedArgument(@Nonnull JSExpression mainOccurence, @Nonnull JSArgumentList parent) { + @RequiredReadAction + public static JSParameter findParameterForUsedArgument(@Nonnull JSExpression mainOccurence, @Nonnull JSArgumentList parent) { int paramIndex = 0; for (JSExpression expr : parent.getArguments()) { @@ -770,21 +776,17 @@ JSParameter findParameterForUsedArgument(@Nonnull JSExpression mainOccurence, @N paramIndex++; } - final JSExpression methodExpr = ((JSCallExpression)parent.getParent()).getMethodExpression(); - if (methodExpr instanceof JSReferenceExpression referenceExpression) { - final ResolveResult[] results = referenceExpression.multiResolve(false); + JSExpression methodExpr = ((JSCallExpression)parent.getParent()).getMethodExpression(); + if (methodExpr instanceof JSReferenceExpression refExpr) { + ResolveResult[] results = refExpr.multiResolve(false); - if (results.length > 0) { - final PsiElement element = results[0].getElement(); + if (results.length > 0 && results[0].getElement() instanceof JSFunction function) { + JSParameterList parameterList = function.getParameterList(); + if (parameterList != null) { + JSParameter[] params = parameterList.getParameters(); - if (element instanceof JSFunction function) { - final JSParameterList parameterList = function.getParameterList(); - if (parameterList != null) { - final JSParameter[] params = parameterList.getParameters(); - - if (paramIndex < params.length) { - return params[paramIndex]; - } + if (paramIndex < params.length) { + return params[paramIndex]; } } } @@ -795,7 +797,8 @@ JSParameter findParameterForUsedArgument(@Nonnull JSExpression mainOccurence, @N public static abstract class JSInjectedFilesVisitor implements PsiLanguageInjectionHost.InjectedPsiVisitor, XmlBackedJSClassImpl.InjectedFileVisitor { @Override - public void visit(@Nonnull final PsiFile injectedPsi, @Nonnull final List places) { + @RequiredReadAction + public void visit(@Nonnull PsiFile injectedPsi, @Nonnull List places) { if (injectedPsi instanceof JSFile jsFile) { process(jsFile); } @@ -809,7 +812,6 @@ public void visit(XmlTag rootTag, JSFile file) { } } - @NonNls public static final String OBJECT_CLASS_NAME = "Object"; private JSResolveUtil() { @@ -817,11 +819,12 @@ private JSResolveUtil() { private static final Key> ourFileElementsValueKey = Key.create("file.elements"); + @RequiredReadAction public static void treeWalkUp(PsiScopeProcessor processor, PsiElement elt, PsiElement lastParent, PsiElement place) { treeWalkUp(processor, elt, lastParent, place, null, null); } - + @RequiredReadAction public static void treeWalkUp( PsiScopeProcessor processor, PsiElement elt, @@ -832,8 +835,9 @@ public static void treeWalkUp( treeWalkUp(processor, elt, lastParent, place, terminatingParent, null); } + @RequiredReadAction private static void treeWalkUp( - final PsiScopeProcessor processor, + PsiScopeProcessor processor, PsiElement elt, PsiElement lastParent, PsiElement place, @@ -856,20 +860,20 @@ private static void treeWalkUp( } elt = parentElement.getParent(); parentElement = elt.getParent(); // when walking a| = b, start from enclosing statement - if (parentElement instanceof JSExpressionStatement) { - elt = parentElement; - parentElement = parentElement.getParent(); + if (parentElement instanceof JSExpressionStatement expr) { + elt = expr; + parentElement = expr.getParent(); } currentScope = elt; } - else if (parentElement instanceof JSVariable && currentScope == null) { + else if (parentElement instanceof JSVariable variable && currentScope == null) { // when walking from variable init start from enclosing statement (function expr / object literal could reference that could reference // var in this case, better to check for any scope change) - currentScope = parentElement; - parentElement = parentElement.getParent(); + currentScope = variable; + parentElement = variable.getParent(); } - final boolean parentIsClass = parentElement instanceof JSClass; + boolean parentIsClass = parentElement instanceof JSClass; int index = -1; PsiElement[] children = getChildren(parentElement); @@ -907,42 +911,37 @@ else if (parentElement instanceof JSVariable && currentScope == null) { if (index == -1) { cur = cur.getPrevSibling(); } + else if (index != 0) { + cur = children[--index]; + } else { - if (index != 0) { - cur = children[--index]; - } - else { - cur = null; - } + cur = null; } } while (cur != null); - final PsiElement func = parentIsClass || finish ? null : processFunctionDeclarations(processor, parentElement); + PsiElement func = parentIsClass || finish ? null : processFunctionDeclarations(processor, parentElement); if (func != null) { return; } if (elt instanceof PsiFile) { - if (elt instanceof XmlFile) { - final XmlFile xmlFile = (XmlFile)elt; - final XmlDocument document = xmlFile.getDocument(); - final XmlTag rootTag = document != null ? document.getRootTag() : null; - final String rootNs = rootTag != null ? rootTag.getNamespace() : null; + if (elt instanceof XmlFile xmlFile) { + XmlDocument document = xmlFile.getDocument(); + XmlTag rootTag = document != null ? document.getRootTag() : null; + String rootNs = rootTag != null ? rootTag.getNamespace() : null; if (JavaScriptSupportLoader.isMxmlNs(rootNs)) { processXmlFile(processor, xmlFile, place); } - else { - if (rootTag != null && xmlFile.getFileType() == XmlFileType.INSTANCE) { // TODO this is bindows specific - processXmlFile(processor, xmlFile, place); - } + else if (rootTag != null && xmlFile.getFileType() == XmlFileType.INSTANCE) { // TODO this is bindows specific + processXmlFile(processor, xmlFile, place); } } - else if (elt instanceof JSFile) { + else if (elt instanceof JSFile jsFile) { if (parentElement != null) { XmlTag tag = PsiTreeUtil.getParentOfType(parentElement, XmlTag.class); - final PsiFile containingFile = parentElement.getContainingFile(); + PsiFile containingFile = parentElement.getContainingFile(); while (tag != null) { if (XmlBackedJSClassImpl.isInlineComponentTag(tag)) { @@ -962,7 +961,7 @@ else if (elt instanceof JSFile) { parentElement = containingFile; } else { - parentElement = elt.getUserData(contextKey); + parentElement = jsFile.getUserData(contextKey); } } if (!(elt instanceof JSExpressionCodeFragment) && parentElement == null) { @@ -977,45 +976,39 @@ else if (elt instanceof JSFile) { } private static UserDataCache>, XmlFile, Object> ourCachedPredefinedVars = - new UserDataCache>, XmlFile, Object>() { + new UserDataCache<>() { @Override + @RequiredReadAction protected CachedValue> compute(final XmlFile xmlFile, Object p) { - return CachedValuesManager.getManager(xmlFile.getProject()).createCachedValue(new CachedValueProvider>() { - @Override - public Result> compute() { + return CachedValuesManager.getManager(xmlFile.getProject()).createCachedValue( + () -> { SmartList vars = new SmartList<>(); String qName = XmlBackedJSClassImpl.getXmlBackedClass(xmlFile).getQualifiedName(); vars.add(new ImplicitJSVariableImpl("outerDocument", qName, xmlFile)); vars.add(new ImplicitJSVariableImpl("data", OBJECT_CLASS_NAME, xmlFile)); - return new Result>(vars, xmlFile); - } - }, false); + return new CachedValueProvider.Result>(vars, xmlFile); + }, + false + ); } }; private static Key>> ourCachedPredefinedVarsKey = Key.create("ourCachedPredefinedVarsKey"); - public static boolean processXmlFile(final PsiScopeProcessor processor, final XmlFile xmlFile, final PsiElement place) { + public static boolean processXmlFile(PsiScopeProcessor processor, XmlFile xmlFile, PsiElement place) { JSClass clazz = XmlBackedJSClassImpl.getXmlBackedClass(xmlFile); - if (!clazz.processDeclarations(processor, ResolveState.initial(), clazz, place)) { - return false; - } - return true; + return clazz.processDeclarations(processor, ResolveState.initial(), clazz, place); } - private static PsiElement[] getChildren(final PsiElement element) { - if (!(element instanceof JSFile) && (!(element instanceof JSBlockStatement) || !(element.getParent() instanceof JSNamedElement))) { + private static PsiElement[] getChildren(PsiElement element) { + if (!(element instanceof JSFile) && !(element instanceof JSBlockStatement block && block.getParent() instanceof JSNamedElement)) { return null; } CachedValue value = element.getUserData(ourFileElementsValueKey); if (value == null) { - value = CachedValuesManager.getManager(element.getProject()).createCachedValue(new CachedValueProvider() { - @Override - public Result compute() { - return new Result(element.getChildren(), element); - } - }, false); + value = CachedValuesManager.getManager(element.getProject()) + .createCachedValue(() -> new CachedValueProvider.Result<>(element.getChildren(), element), false); element.putUserData(ourFileElementsValueKey, value); } @@ -1023,7 +1016,8 @@ public Result compute() { } @Nullable - private static PsiElement processFunctionDeclarations(final @Nonnull PsiScopeProcessor processor, final @Nullable PsiElement context) { + @RequiredReadAction + private static PsiElement processFunctionDeclarations(@Nonnull PsiScopeProcessor processor, @Nullable PsiElement context) { if (!(context instanceof JSElement)) { return null; } @@ -1034,48 +1028,43 @@ private static PsiElement processFunctionDeclarations(final @Nonnull PsiScopePro PsiElement cur = index >= 0 ? children[index] : context.getLastChild(); while (cur != null) { - if (cur instanceof JSFunction || cur instanceof JSClass) { - if (!processor.execute(cur, ResolveState.initial())) { - if (processor instanceof ResolveProcessor) { - return ((ResolveProcessor)processor).getResult(); - } - } + if ((cur instanceof JSFunction || cur instanceof JSClass) + && !processor.execute(cur, ResolveState.initial()) + && processor instanceof ResolveProcessor resolveProcessor) { + return resolveProcessor.getResult(); } if (index == -1) { cur = cur.getPrevSibling(); } + else if (index != 0) { + cur = children[--index]; + } else { - if (index != 0) { - cur = children[--index]; - } - else { - cur = null; - } + cur = null; } } } return null; } - public static JSClass findDeclaringClass(final JSFunction method) { - final Ref lastVisitedClass = new Ref<>(); + @RequiredReadAction + public static JSClass findDeclaringClass(JSFunction method) { + SimpleReference lastVisitedClass = new SimpleReference<>(); iterateOverridenMethodsUp( method, - new Processor() { - @Override - public boolean process(JSClass jsClass) { - lastVisitedClass.set(jsClass); - return true; - } + jsClass -> { + lastVisitedClass.set(jsClass); + return true; }, true ); Collection visited = new HashSet<>(); - visitAllImplementedInterfaces(lastVisitedClass.get(), visited, new Processor() { - @Override - public boolean process(JSClass jsClass) { + visitAllImplementedInterfaces( + lastVisitedClass.get(), + visited, + jsClass -> { // hierarchy may contain maximum one interface declaring a certain method JSFunction interfaceMethod = jsClass.findFunctionByNameAndKind(method.getName(), method.getKind()); if (interfaceMethod != null) { @@ -1085,7 +1074,7 @@ public boolean process(JSClass jsClass) { } return true; } - }); + ); return lastVisitedClass.get(); } @@ -1119,12 +1108,13 @@ private static boolean visitAllImplementedInterfaces( /** * @return true if processor said enough */ + @RequiredReadAction private static boolean iterateOverridenMethodsUp(JSFunction function, Processor processor, boolean allowDirectParent) { PsiElement clazz = findParent(function); if (!(clazz instanceof JSClass)) { return false; } - final PsiElement directParent = clazz; + PsiElement directParent = clazz; while (true) { if ((allowDirectParent || directParent != clazz) && !processor.process((JSClass)clazz)) { @@ -1137,7 +1127,7 @@ private static boolean iterateOverridenMethodsUp(JSFunction function, Processor< } // TODO check signature - final JSNamedElement overridenMethod = findOverriddenMethod(function, (JSClass)clazz); + JSNamedElement overridenMethod = findOverriddenMethod(function, (JSClass)clazz); if (!(overridenMethod instanceof JSFunction)) { return false; } @@ -1150,7 +1140,8 @@ private static boolean iterateOverridenMethodsUp(JSFunction function, Processor< } } - public static boolean isReferenceTo(final PsiPolyVariantReference reference, final String referencedName, PsiElement _element) { + @RequiredReadAction + public static boolean isReferenceTo(PsiPolyVariantReference reference, String referencedName, PsiElement _element) { String elementName; if (_element instanceof JSNamedElement namedElement) { elementName = namedElement.getName(); @@ -1171,20 +1162,21 @@ else if (_element instanceof PsiDirectoryContainer directoryContainer) { if (Comparing.equal(referencedName, elementName, true)) { PsiElement element = _element; - final ResolveResult[] resolveResults = reference.multiResolve(true); + ResolveResult[] resolveResults = reference.multiResolve(true); for (ResolveResult r : resolveResults) { PsiElement resolvedElement = r.getElement(); if (resolvedElement.isEquivalentTo(element) || element.isEquivalentTo(resolvedElement) || - ((element instanceof JSProperty || element instanceof XmlAttributeValue) && - resolvedElement != null && - resolvedElement.getParent() == element)) { + ((element instanceof JSProperty || element instanceof XmlAttributeValue) + && resolvedElement != null + && resolvedElement.getParent() == element)) { + if (reference instanceof JSReferenceExpression referenceExpression && ((referenceExpression.getParent() == resolvedElement && resolvedElement instanceof JSDefinitionExpression) - || resolvedElement instanceof JSFunctionExpression functionExpression - && functionExpression.getFunction().getNameIdentifier().getNextSibling() == reference)) { + || resolvedElement instanceof JSFunctionExpression functionExpr + && functionExpr.getFunction().getNameIdentifier().getNextSibling() == reference)) { return false; // do not include self to usages } @@ -1192,16 +1184,16 @@ else if (_element instanceof PsiDirectoryContainer directoryContainer) { } if (resolvedElement instanceof JSFunctionExpression functionExpression) { - final PsiElement nameIdentifier = functionExpression.getFunction().getNameIdentifier(); + PsiElement nameIdentifier = functionExpression.getFunction().getNameIdentifier(); if (nameIdentifier != null && nameIdentifier.getNextSibling() == element) { return true; } } else if (resolvedElement instanceof JSFunction fun) { if (fun.isConstructor()) { - if ((element instanceof JSClass && resolvedElement.getParent() == element) - || (element instanceof JSFile && reference.getElement().getParent() != resolvedElement - && isPublicEntityReferenceToJSFile(findParent(resolvedElement), element))) { + if ((element instanceof JSClass jsClass && resolvedElement.getParent() == jsClass) + || (element instanceof JSFile jsFile && reference.getElement().getParent() != resolvedElement + && isPublicEntityReferenceToJSFile(findParent(resolvedElement), jsFile))) { return true; } } @@ -1218,28 +1210,22 @@ else if (element instanceof JSFunction anotherFun) { } } PsiElement resolvedElementParent = findParent(resolvedElement); - final PsiElement elementParent = findParent(element); - - if (elementParent instanceof JSClass && resolvedElementParent instanceof JSClass) { - final JSClass anotherClass = (JSClass)elementParent; + PsiElement elementParent = findParent(element); - final Collection visitedInterfaces = new HashSet<>(); + if (elementParent instanceof JSClass anotherClass && resolvedElementParent instanceof JSClass) { + Collection visitedInterfaces = new HashSet<>(); return iterateOverridenMethodsUp( fun, - new Processor() { - @Override - public boolean process(JSClass jsClass) { - if (anotherClass.isInterface()) { - return !visitAllImplementedInterfaces(jsClass, visitedInterfaces, new Processor() { - @Override - public boolean process(JSClass jsClass) { - return !jsClass.isEquivalentTo(anotherClass); - } - }); - } - else { - return !jsClass.isEquivalentTo(anotherClass); - } + jsClass -> { + if (anotherClass.isInterface()) { + return !visitAllImplementedInterfaces( + jsClass, + visitedInterfaces, + jsClass1 -> !jsClass1.isEquivalentTo(anotherClass) + ); + } + else { + return !jsClass.isEquivalentTo(anotherClass); } }, anotherClass.isInterface() @@ -1247,7 +1233,9 @@ public boolean process(JSClass jsClass) { } } } - else if (resolvedElement instanceof JSClass && element instanceof JSFunction && element.getParent() == resolvedElement) { + else if (resolvedElement instanceof JSClass jsClass + && element instanceof JSFunction function + && function.getParent() == jsClass) { return true; } @@ -1256,9 +1244,9 @@ else if (resolvedElement instanceof JSClass && element instanceof JSFunction && || resolvedElement instanceof JSNamespaceDeclaration || resolvedElement instanceof JSFunction || resolvedElement instanceof JSVariable) - && ((element instanceof XmlFile && resolvedElement.getParent().getContainingFile() == element) - || (element instanceof JSFile && reference.getElement().getParent() != resolvedElement - && isPublicEntityReferenceToJSFile(resolvedElement, element))) + && ((element instanceof XmlFile xmlFile && resolvedElement.getParent().getContainingFile() == xmlFile) + || (element instanceof JSFile jsFile && reference.getElement().getParent() != resolvedElement + && isPublicEntityReferenceToJSFile(resolvedElement, jsFile))) ) { return true; } @@ -1272,12 +1260,13 @@ && fieldIsImplicitAccessorMethod(function, variable)) { return false; } + @RequiredReadAction private static boolean fieldIsImplicitAccessorMethod(JSFunction fun, JSVariable var) { if (!fun.isGetProperty() && !fun.isSetProperty()) { return false; } PsiElement funParent = findParent(fun); - if (!(funParent instanceof JSClass) || !((JSClass)funParent).isInterface()) { + if (!(funParent instanceof JSClass jsClass && jsClass.isInterface())) { return false; } JSAttributeList attributeList = var.getAttributeList(); @@ -1285,51 +1274,45 @@ private static boolean fieldIsImplicitAccessorMethod(JSFunction fun, JSVariable return false; } - PsiElement parent = findParent(var); - if (!(parent instanceof JSClass)) { - return false; - } - - for (JSClass c : ((JSClass)parent).getImplementedInterfaces()) { - if (c == funParent) { - return true; + if (findParent(var) instanceof JSClass varParentClass) { + for (JSClass c : varParentClass.getImplementedInterfaces()) { + if (c == funParent) { + return true; + } } } - return false; } private static boolean isPublicEntityReferenceToJSFile(PsiElement resolvedElement, PsiElement element) { PsiElement parent = resolvedElement.getParent(); - if (parent instanceof JSVarStatement) { - parent = parent.getParent(); + if (parent instanceof JSVarStatement varStatement) { + parent = varStatement.getParent(); } - return parent instanceof JSPackageStatement && parent.getParent() == element; + return parent instanceof JSPackageStatement packageStatement && packageStatement.getParent() == element; } + @RequiredReadAction private static JSNamedElement findOverriddenMethod(PsiElement resolvedElement, JSClass resolvedElementClass) { - final Ref override = new Ref<>(); + SimpleReference override = new SimpleReference<>(); iterateType( (JSFunction)resolvedElement, resolvedElementClass, null, - new OverrideHandler() { - @Override - public boolean process(ResolveProcessor processor, PsiElement scope, String className) { - PsiElement result = processor.getResult(); - if (result instanceof JSNamedElement namedElement) { - override.set(namedElement); - return false; - } - return true; + (processor, scope, className) -> { + PsiElement result = processor.getResult(); + if (result instanceof JSNamedElement namedElement) { + override.set(namedElement); + return false; } + return true; } ); return override.get(); } - public static boolean checkClassHasParentOfAnotherOne(final JSClass aClass, final JSClass parent, @Nullable Set visited) { + public static boolean checkClassHasParentOfAnotherOne(JSClass aClass, JSClass parent, @Nullable Set visited) { if (visited != null && visited.contains(aClass)) { return false; } @@ -1339,7 +1322,7 @@ public static boolean checkClassHasParentOfAnotherOne(final JSClass aClass, fina return true; } if (visited == null) { - visited = new HashSet(); + visited = new HashSet<>(); } visited.add(aClass); return checkClassHasParentOfAnotherOne(superClazz, parent, visited); @@ -1347,16 +1330,16 @@ public static boolean checkClassHasParentOfAnotherOne(final JSClass aClass, fina return false; } - public static @Nullable - JSExpression getRealRefExprQualifier(final JSReferenceExpression expr) { - final JSExpression qualifier = ((JSReferenceExpressionImpl)expr).getResolveQualifier(); + @RequiredReadAction + public static JSExpression getRealRefExprQualifier(JSReferenceExpression expr) { + JSExpression qualifier = ((JSReferenceExpressionImpl)expr).getResolveQualifier(); if (qualifier != null) { return qualifier; } if (isExprInTypeContext(expr)) { - final JSImportedElementResolveResult resolved = JSImportHandlingUtil.resolveTypeNameUsingImports(expr); + JSImportedElementResolveResult resolved = JSImportHandlingUtil.resolveTypeNameUsingImports(expr); if (resolved == null) { return expr.getQualifier(); } @@ -1367,28 +1350,25 @@ JSExpression getRealRefExprQualifier(final JSReferenceExpression expr) { return qualifier; } + @RequiredReadAction public static JSExpression getRealRefExprQualifierFromResult( - final JSReferenceExpression expr, - final JSImportedElementResolveResult resolved + JSReferenceExpression expr, + JSImportedElementResolveResult resolved ) { return ((JSReferenceExpression)JSChangeUtil.createExpressionFromText(expr.getProject(), resolved.qualifiedName)).getQualifier(); } - public static String findPackageStatementQualifier(final PsiElement context) { + @RequiredReadAction + public static String findPackageStatementQualifier(PsiElement context) { if (context instanceof JSClass jsClass) { - final String s = jsClass.getQualifiedName(); + String s = jsClass.getQualifiedName(); if (s != null) { - final int i = s.lastIndexOf('.'); - if (i != -1) { - return s.substring(0, i); - } - else { - return null; - } + int i = s.lastIndexOf('.'); + return i != -1 ? s.substring(0, i) : null; } } - final JSPackageStatement packageStatement = PsiTreeUtil.getNonStrictParentOfType(context, JSPackageStatement.class); + JSPackageStatement packageStatement = PsiTreeUtil.getNonStrictParentOfType(context, JSPackageStatement.class); if (packageStatement != null) { return packageStatement.getQualifiedName(); @@ -1397,8 +1377,9 @@ public static String findPackageStatementQualifier(final PsiElement context) { return null; } - public static boolean isExprInStrictTypeContext(final JSReferenceExpression expr) { - final PsiElement parent = expr.getParent(); + @RequiredReadAction + public static boolean isExprInStrictTypeContext(JSReferenceExpression expr) { + PsiElement parent = expr.getParent(); boolean parentIsVar = parent instanceof JSVariable; return ((parentIsVar || parent instanceof JSFunction) @@ -1408,8 +1389,9 @@ public static boolean isExprInStrictTypeContext(final JSReferenceExpression expr || parent instanceof JSImportStatement || parent instanceof JSReferenceList; } - public static boolean isExprInTypeContext(final JSReferenceExpression expr) { - final PsiElement parent = expr.getParent(); + @RequiredReadAction + public static boolean isExprInTypeContext(JSReferenceExpression expr) { + PsiElement parent = expr.getParent(); return isExprInStrictTypeContext(expr) || parent instanceof JSNewExpression || parent instanceof JSUseNamespaceDirective || (parent instanceof JSBinaryExpression binaryExpression && binaryExpression.getROperand() == expr @@ -1418,30 +1400,32 @@ public static boolean isExprInTypeContext(final JSReferenceExpression expr) { } @Nullable - public static PsiElement findClassByQName(final String link, final @Nonnull PsiElement context) { + @RequiredReadAction + public static PsiElement findClassByQName(String link, @Nonnull PsiElement context) { return findClassByQName(link, context.getProject(), context.getResolveScope()); } @Nullable - public static PsiElement findClassByQName(final String link, @Nonnull GlobalSearchScope scope, @Nonnull Project project) { + @RequiredReadAction + public static PsiElement findClassByQName(String link, @Nonnull GlobalSearchScope scope, @Nonnull Project project) { return findClassByQName(link, project, scope); } - private static PsiElement findClassByQName(final String link, final Project project, final GlobalSearchScope searchScope) { + @RequiredReadAction + private static PsiElement findClassByQName(String link, final Project project, GlobalSearchScope searchScope) { synchronized (project) { if (DumbService.isDumb(project)) { return null; } - final PsiElement[] result = new PsiElement[1]; + PsiElement[] result = new PsiElement[1]; - final Collection candidates = + Collection candidates = StubIndex.getElements(JavaScriptIndexKeys.ELEMENTS_BY_QNAME, link, project, searchScope, JSQualifiedNamedElement.class); for (JSQualifiedNamedElement clazz : candidates) { if (link.equals(clazz.getQualifiedName())) { - if ("Object".equals(link) && !JavaScriptIndex.ECMASCRIPT_JS2.equals(clazz.getContainingFile() - .getVirtualFile() - .getName()) // object from swf do + if ("Object".equals(link) + && !JavaScriptIndex.ECMASCRIPT_JS2.equals(clazz.getContainingFile().getVirtualFile().getName()) // object from swf do // not contain necessary members! ) { continue; @@ -1465,8 +1449,10 @@ private static PsiElement findClassByQName(final String link, final Project proj } } - private static boolean isBuiltInClassName(final String className) { - return OBJECT_CLASS_NAME.equals(className) || "Boolean".equals(className) || "Function".equals(className) + private static boolean isBuiltInClassName(String className) { + return OBJECT_CLASS_NAME.equals(className) + || "Boolean".equals(className) + || "Function".equals(className) || "String".equals(className); } @@ -1476,10 +1462,10 @@ public static boolean isPredefinedFile(PsiFile file) { @Nullable private static PsiElement findClassByQNameViaHelper( - final String link, - final Project project, - final String className, - final GlobalSearchScope scope + String link, + Project project, + String className, + GlobalSearchScope scope ) { for (JSResolveHelper helper : Extensions.getExtensions(JSResolveHelper.EP_NAME)) { PsiElement result = helper.findClassByQName(link, project, className, scope); @@ -1490,8 +1476,9 @@ private static PsiElement findClassByQNameViaHelper( return null; } - public static String[] buildNameIdsForQualifier(final JSExpression qualifier) { - String[] nameIds = null; + @RequiredReadAction + public static String[] buildNameIdsForQualifier(JSExpression qualifier) { + String[] nameIds; if (qualifier == null) { nameIds = JSSymbolUtil.buildNameIndexArray(qualifier); @@ -1524,14 +1511,8 @@ public static JSExpression findClassIdentifier(JSExpression _qualifier) { return qualifier; } - public static boolean iterateType( - final JSFunction node, - final PsiElement jsClass, - final String typeName, - final OverrideHandler handler - ) { - final Project project = jsClass.getProject(); - + @RequiredReadAction + public static boolean iterateType(JSFunction node, PsiElement jsClass, String typeName, OverrideHandler handler) { if (jsClass instanceof JSClass) { String namespace = null; JSAttributeList attributeList = node.getAttributeList(); @@ -1544,26 +1525,28 @@ public static boolean iterateType( return true; } + @RequiredReadAction public static boolean processOverrides( - final PsiElement jsClass, - final OverrideHandler handler, + PsiElement jsClass, + OverrideHandler handler, String name, - final Object namespace, - final PsiElement context + Object namespace, + PsiElement context ) { JSClass clazz = (JSClass)jsClass; - final ResolveProcessor resolveProcessor = new ResolveProcessor(name, context) { + ResolveProcessor resolveProcessor = new ResolveProcessor(name, context) { { setToProcessHierarchy(true); } @Override - public boolean execute(final PsiElement element, final ResolveState state) { + @RequiredReadAction + public boolean execute(@Nonnull PsiElement element, ResolveState state) { if (!(element instanceof JSFunction)) { return true; } JSFunction fun = (JSFunction)element; - final JSAttributeList attributeList = fun.getAttributeList(); + JSAttributeList attributeList = fun.getAttributeList(); if (attributeList != null && attributeList.getAccessType() == JSAttributeList.AccessType.PRIVATE) { return false; } @@ -1580,10 +1563,10 @@ public boolean execute(final PsiElement element, final ResolveState state) { if (superClazz == clazz) { break; } - final boolean b = superClazz.processDeclarations(resolveProcessor, ResolveState.initial(), superClazz, context); + boolean b = superClazz.processDeclarations(resolveProcessor, ResolveState.initial(), superClazz, context); if (!b) { - final PsiElement element = resolveProcessor.getResult(); + PsiElement element = resolveProcessor.getResult(); if (element == null) { continue; } @@ -1599,12 +1582,13 @@ public boolean execute(final PsiElement element, final ResolveState state) { return true; } - public static String getQNameToStartHierarchySearch(final JSFunction node) { + @RequiredReadAction + public static String getQNameToStartHierarchySearch(JSFunction node) { PsiElement parentNode = node.getParent(); parentNode = getClassReferenceForXmlFromContext(parentNode); if (parentNode instanceof JSClass) { - final JSAttributeList attributeList = node.getAttributeList(); + JSAttributeList attributeList = node.getAttributeList(); if (attributeList == null || !attributeList.hasModifier(JSAttributeList.ModifierType.OVERRIDE) || @@ -1617,47 +1601,47 @@ public static String getQNameToStartHierarchySearch(final JSFunction node) { return jsClass.getQualifiedName(); } } - else if (node instanceof JSFunctionExpression + else if (node instanceof JSFunctionExpression functionExpr && parentNode.getContainingFile().getLanguage() != JavaScriptSupportLoader.ECMA_SCRIPT_L4) { - final ContextResolver resolver = new ContextResolver(node.getFirstChild()); + ContextResolver resolver = new ContextResolver(functionExpr.getFirstChild()); return resolver.getQualifierAsString(); } - else if (parentNode instanceof JSFile && parentNode.getContainingFile().getLanguage() != JavaScriptSupportLoader.ECMA_SCRIPT_L4) { + else if (parentNode instanceof JSFile jsFile && jsFile.getContainingFile().getLanguage() != JavaScriptSupportLoader.ECMA_SCRIPT_L4) { return node.getName(); } return null; } + @RequiredReadAction public static boolean isInPlaceWhereTypeCanBeDuringCompletion(PsiElement expr) { - final PsiElement parent = expr.getParent(); + PsiElement parent = expr.getParent(); if (parent instanceof JSArgumentList || (parent instanceof JSVariable variable && variable.getInitializer() == expr)) { return true; } - if (parent instanceof JSExpressionStatement) { - return expr instanceof JSReferenceExpression referenceExpression ? referenceExpression.getQualifier() == null : true; - } - return false; + return parent instanceof JSExpressionStatement + && !(expr instanceof JSReferenceExpression refExpr && refExpr.getQualifier() != null); } - public static boolean isPlaceWhereNsCanBe(final PsiElement parent) { - final PsiElement grandParent = parent.getParent(); + public static boolean isPlaceWhereNsCanBe(PsiElement parent) { + PsiElement grandParent = parent.getParent(); return grandParent instanceof JSClass || grandParent instanceof JSPackageStatement - || (grandParent instanceof JSFile && grandParent.getContext() == null); + || (grandParent instanceof JSFile jsFile && jsFile.getContext() == null); } @Nullable - public static String getTypeFromTagNameInMxml(final @Nullable PsiElement psiElement) { + @RequiredReadAction + public static String getTypeFromTagNameInMxml(@Nullable PsiElement psiElement) { JSClass clazz = getClassFromTagNameInMxml(psiElement); return clazz != null ? clazz.getQualifiedName() : null; } - public static JSClass getClassFromTagNameInMxml(final PsiElement psiElement) { + public static JSClass getClassFromTagNameInMxml(PsiElement psiElement) { XmlTag tag = psiElement != null ? PsiTreeUtil.getNonStrictParentOfType(psiElement, XmlTag.class) : null; if (tag != null && (tag.getNamespacePrefix().length() > 0 || JavaScriptSupportLoader.isFlexMxmFile(tag.getContainingFile()))) { if (isScriptContextTag(tag)) { tag = ((XmlFile)tag.getContainingFile()).getDocument().getRootTag(); } - final XmlElementDescriptor descriptor = tag.getDescriptor(); + XmlElementDescriptor descriptor = tag.getDescriptor(); if (descriptor != null) { PsiElement decl = descriptor.getDeclaration(); @@ -1672,19 +1656,21 @@ else if (decl instanceof XmlFile xmlFile) { return null; } - private static boolean isScriptContextTag(final XmlTag tag) { - final String localName = tag.getLocalName(); + private static boolean isScriptContextTag(XmlTag tag) { + String localName = tag.getLocalName(); return "Script".equals(localName) || (!localName.isEmpty() && Character.isLowerCase(localName.charAt(0)) && !"method".equals(localName)); } - public static boolean processMetaAttributesForClass(final PsiElement jsClass, final MetaDataProcessor processor) { + @RequiredReadAction + public static boolean processMetaAttributesForClass(PsiElement jsClass, MetaDataProcessor processor) { return doProcessMetaAttributesForClass(unwrapProxy(jsClass), processor, null, true); } + @RequiredReadAction private static boolean doProcessMetaAttributesForClass( - final PsiElement jsClass, - final MetaDataProcessor processor, + PsiElement jsClass, + MetaDataProcessor processor, PsiElement lastParent, boolean forward ) { @@ -1692,7 +1678,7 @@ private static boolean doProcessMetaAttributesForClass( if (OBJECT_CLASS_NAME.equals((jsClassClass.getQualifiedName()))) { return true; } - final PsiElement[] elements = getStubbedChildren(jsClass.getParent()); + PsiElement[] elements = getStubbedChildren(jsClass.getParent()); int ind = elements.length - 1; while (ind >= 0 && elements[ind] != jsClass) { --ind; @@ -1701,10 +1687,10 @@ private static boolean doProcessMetaAttributesForClass( while (ind >= 0) { - final PsiElement current = elements[ind]; + PsiElement current = elements[ind]; - if (current instanceof JSIncludeDirective) { - if (!processIncludeDirective(processor, jsClass, (JSIncludeDirective)current, false)) { + if (current instanceof JSIncludeDirective includeDirective) { + if (!processIncludeDirective(processor, jsClass, includeDirective, false)) { return false; } --ind; @@ -1714,25 +1700,25 @@ private static boolean doProcessMetaAttributesForClass( } } - final JSAttributeList attributeList = jsClassClass.getAttributeList(); + JSAttributeList attributeList = jsClassClass.getAttributeList(); if (attributeList != null && !processAttributeList(processor, jsClass, attributeList, true)) { return false; } } - final PsiElement[] elements = getStubbedChildren(jsClass); - Ref continuePassElement = new Ref<>(); + PsiElement[] elements = getStubbedChildren(jsClass); + SimpleReference continuePassElement = new SimpleReference<>(); for (int i = forward ? 0 : elements.length - 1; i < elements.length && i >= 0; i += (forward ? 1 : -1)) { PsiElement el = elements[i]; - if (el instanceof JSIncludeDirective) { - if (!processIncludeDirective(processor, lastParent, (JSIncludeDirective)el, forward)) { + if (el instanceof JSIncludeDirective includeDirective) { + if (!processIncludeDirective(processor, lastParent, includeDirective, forward)) { return false; } } - else if (el instanceof JSAttributeList /*&& lastParent != null*/) { - if (!processAttributeList(processor, lastParent, (JSAttributeList)el, forward)) { + else if (el instanceof JSAttributeList attributeList /*&& lastParent != null*/) { + if (!processAttributeList(processor, lastParent, attributeList, forward)) { return false; } } @@ -1755,23 +1741,24 @@ else if (el instanceof JSAttributeList /*&& lastParent != null*/) { return true; } + @RequiredReadAction public static boolean processAttributeList( - final MetaDataProcessor processor, - final PsiElement el, - final JSAttributeList attributeList, + MetaDataProcessor processor, + PsiElement el, + JSAttributeList attributeList, boolean forward ) { - final PsiElement[] elements = getStubbedChildren(attributeList); + PsiElement[] elements = getStubbedChildren(attributeList); for (int i = forward ? 0 : elements.length - 1; i < elements.length && i >= 0; i += (forward ? 1 : -1)) { - final PsiElement cur = elements[i]; + PsiElement cur = elements[i]; - if (cur instanceof JSIncludeDirective) { - if (!processIncludeDirective(processor, el, (JSIncludeDirective)cur, forward)) { + if (cur instanceof JSIncludeDirective includeDirective) { + if (!processIncludeDirective(processor, el, includeDirective, forward)) { return false; } } - else if (cur instanceof JSAttribute) { - if (!processor.process((JSAttribute)cur)) { + else if (cur instanceof JSAttribute attribute) { + if (!processor.process(attribute)) { return false; } } @@ -1780,20 +1767,17 @@ else if (cur instanceof JSNamedElement) { } } - if (!processor.handleOtherElement(attributeList, el, null)) { - return false; - } - - return true; + return processor.handleOtherElement(attributeList, el, null); } + @RequiredReadAction private static boolean processIncludeDirective( - final MetaDataProcessor processor, - final PsiElement lastParent, - final JSIncludeDirective el, + MetaDataProcessor processor, + PsiElement lastParent, + JSIncludeDirective el, boolean forward ) { - final PsiFile file = el.resolveFile(); + PsiFile file = el.resolveFile(); return !(file instanceof JSFile) || doProcessMetaAttributesForClass(file, processor, lastParent, forward); } @@ -1801,21 +1785,19 @@ public static PsiElement unwrapProxy(PsiElement jsClass) { return jsClass; } + @RequiredReadAction public static JSDefinitionExpression getDefinitionExpr(JSExpressionStatement exprStatement) { - final JSExpression expression = exprStatement.getExpression(); + JSExpression expression = exprStatement.getExpression(); - if (expression instanceof JSAssignmentExpression assignment) { - return (JSDefinitionExpression)assignment.getLOperand(); - } - return null; + return expression instanceof JSAssignmentExpression assignment ? (JSDefinitionExpression)assignment.getLOperand() : null; } public static boolean processDeclarationsInScope( - final JSElement _scope, - final PsiScopeProcessor processor, - final ResolveState state, - final PsiElement lastParent, - final PsiElement place + JSElement _scope, + PsiScopeProcessor processor, + ResolveState state, + PsiElement lastParent, + PsiElement place ) { JSElement scope = PsiUtilBase.getOriginalElement(_scope, _scope.getClass()); if (scope == null) { @@ -1828,7 +1810,7 @@ public static boolean processDeclarationsInScope( } boolean result = true; - final IntObjectMap defsMap = ourCachedDefsCache.get(MY_CACHED_STATEMENTS, scope, null).getValue(); + IntObjectMap defsMap = OUR_CACHED_DEFS_CACHE.get(MY_CACHED_STATEMENTS, scope, null).getValue(); if (requiredName == null) { for (Object value : defsMap.values()) { @@ -1836,7 +1818,7 @@ public static boolean processDeclarationsInScope( } } else { - final Object defs = defsMap.get(requiredName.hashCode()); + Object defs = defsMap.get(requiredName.hashCode()); if (defs != null) { result = dispatchResolve(processor, state, place, result, defs); } @@ -1846,11 +1828,11 @@ public static boolean processDeclarationsInScope( } private static boolean dispatchResolve( - final PsiScopeProcessor processor, - final ResolveState state, - final PsiElement place, + PsiScopeProcessor processor, + ResolveState state, + PsiElement place, boolean result, - final Object o + Object o ) { if (o instanceof JSElement[] jsElements) { for (JSElement s : jsElements) { @@ -1864,11 +1846,12 @@ private static boolean dispatchResolve( return result; } - public static PsiElement getLocalVariableRef(JSFunction function, final JSReferenceExpression expr) { - final ResolveProcessor processor = new ResolveProcessor(expr.getReferencedName(), true); + @RequiredReadAction + public static PsiElement getLocalVariableRef(JSFunction function, JSReferenceExpression expr) { + ResolveProcessor processor = new ResolveProcessor(expr.getReferencedName(), true); while (function != null) { - final boolean val = function.processDeclarations(processor, ResolveState.initial(), function.getParameterList(), function); + boolean val = function.processDeclarations(processor, ResolveState.initial(), function.getParameterList(), function); if (!val) { return processor.getResult(); } @@ -1885,19 +1868,19 @@ public static class MyResolveResult implements ResolveResult { private final JavaScriptImportStatementBase myImportUsed; private boolean myValidResult; - public MyResolveResult(final PsiElement function) { + public MyResolveResult(PsiElement function) { this(function, true); } - public MyResolveResult(final PsiElement function, JSImportStatement importUsed) { + public MyResolveResult(PsiElement function, JSImportStatement importUsed) { this(function, importUsed, true); } - public MyResolveResult(final PsiElement function, boolean validResult) { + public MyResolveResult(PsiElement function, boolean validResult) { this(function, null, validResult); } - public MyResolveResult(final PsiElement function, JavaScriptImportStatementBase importUsed, boolean validResult) { + public MyResolveResult(PsiElement function, JavaScriptImportStatementBase importUsed, boolean validResult) { myFunction = function; myValidResult = validResult; myImportUsed = importUsed; @@ -1913,7 +1896,7 @@ public boolean isValidResult() { return myValidResult; } - public void setValid(final boolean b) { + public void setValid(boolean b) { myValidResult = b; } @@ -1929,15 +1912,12 @@ public static class RelevantDefsUserDataCache extends UserDataCache> compute(final JSElement jsElement, final Object o) { return CachedValuesManager.getManager(jsElement.getProject()).createCachedValue( - new CachedValueProvider>() { - @Override - public Result> compute() { - final IntObjectMap relevantDefs = IntMaps.newIntObjectHashMap(); - final MyJSElementVisitor elementVisitor = new MyJSElementVisitor(jsElement, relevantDefs); - elementVisitor.startVisiting(jsElement); - - return new Result>(relevantDefs, jsElement); - } + () -> { + IntObjectMap relevantDefs = IntMaps.newIntObjectHashMap(); + MyJSElementVisitor elementVisitor = new MyJSElementVisitor(jsElement, relevantDefs); + elementVisitor.startVisiting(jsElement); + + return new CachedValueProvider.Result<>(relevantDefs, jsElement); }, false ); @@ -1950,29 +1930,30 @@ private static class MyJSElementVisitor extends JSElementVisitor { private final JSElement myBase; private JSElement context; - public MyJSElementVisitor(JSElement base, final IntObjectMap relevantDefs) { + public MyJSElementVisitor(JSElement base, IntObjectMap relevantDefs) { myRelevantDefs = relevantDefs; myBase = base; context = base; } + @RequiredReadAction private void startVisiting(JSElement jsElement) { PsiElement first = null; JSSourceElement[] arrayElementsToScan = null; if (jsElement instanceof JSFunction function) { - final JSSourceElement[] body = function.getBody(); - if (body.length > 0 && body[0] instanceof JSBlockStatement) { - first = PsiTreeUtil.findChildOfType(body[0], JSStatement.class); + JSSourceElement[] body = function.getBody(); + if (body.length > 0 && body[0] instanceof JSBlockStatement block) { + first = PsiTreeUtil.findChildOfType(block, JSStatement.class); } } - else if (jsElement instanceof JSFile) { + else if (jsElement instanceof JSFile jsFile) { if (myBase == context) { - first = jsElement.getFirstChild(); + first = jsFile.getFirstChild(); } else { - arrayElementsToScan = getSourceElements(jsElement); + arrayElementsToScan = getSourceElements(jsFile); } } else if (jsElement instanceof JSClass || jsElement instanceof JSPackageStatement) { @@ -1989,30 +1970,30 @@ else if (jsElement instanceof JSClass || jsElement instanceof JSPackageStatement } else { for (PsiElement e = first; e != null; e = e.getNextSibling()) { - if (e instanceof JSSourceElement) { - e.accept(this); + if (e instanceof JSSourceElement sourceElement) { + sourceElement.accept(this); } } } } @Override - public void visitJSDefinitionExpression(final JSDefinitionExpression node) { - final JSExpression definedExpr = node.getExpression(); - if (definedExpr instanceof JSReferenceExpression referenceExpression && referenceExpression.getQualifier() == null && false) { - final String s = definedExpr.getText(); + @RequiredReadAction + public void visitJSDefinitionExpression(JSDefinitionExpression node) { + if (node.getExpression() instanceof JSReferenceExpression refExpr && refExpr.getQualifier() == null && false) { + String s = refExpr.getText(); if (checkedVarsToOurStatus == null) { - checkedVarsToOurStatus = new HashMap(3); + checkedVarsToOurStatus = new HashMap<>(3); } Boolean aBoolean = checkedVarsToOurStatus.get(s); if (aBoolean == null) { - final boolean isInjectedFile = isInjectedFile(myBase); + boolean isInjectedFile = isInjectedFile(myBase); PsiElement element = null; if (myBase instanceof JSFunction || isInjectedFile) { - final ResolveProcessor processor = new ResolveProcessor(s); - final PsiElement baseParent = myBase.getParent(); + ResolveProcessor processor = new ResolveProcessor(s); + PsiElement baseParent = myBase.getParent(); treeWalkUp(processor, baseParent, baseParent, baseParent); element = processor.getResult(); } @@ -2028,27 +2009,29 @@ public void visitJSDefinitionExpression(final JSDefinitionExpression node) { } @Override + @RequiredReadAction public void visitJSVariable(JSVariable node) { addRelevantDef(node); } @Override - public void visitJSIncludeDirective(final JSIncludeDirective includeDirective) { - final PsiFile _file = includeDirective.resolveFile(); + @RequiredReadAction + public void visitJSIncludeDirective(JSIncludeDirective includeDirective) { + PsiFile _file = includeDirective.resolveFile(); if (!(_file instanceof JSFile) || myBase.getContainingFile() == _file) { return; } - final JSFile file = (JSFile)_file; + JSFile file = (JSFile)_file; if (visitedIncludes != null && visitedIncludes.contains(file)) { return; } if (visitedIncludes == null) { - visitedIncludes = new HashSet(); + visitedIncludes = new HashSet<>(); } visitedIncludes.add(file); - final JSElement prevContext = context; + JSElement prevContext = context; context = file; context.putUserData(contextKey, myBase); startVisiting(file); @@ -2056,7 +2039,7 @@ public void visitJSIncludeDirective(final JSIncludeDirective includeDirective) { } @Override - public void visitJSVarStatement(final JSVarStatement node) { + public void visitJSVarStatement(JSVarStatement node) { for (JSVariable var : node.getVariables()) { if (!var.isLocal()) { var.accept(this); @@ -2069,17 +2052,17 @@ public void visitJSParameter(JSParameter node) { } @Override - public void visitJSFunctionExpression(final JSFunctionExpression node) { + public void visitJSFunctionExpression(JSFunctionExpression node) { // do not go inside other funcs } @Override - public void visitJSObjectLiteralExpression(final JSObjectLiteralExpression node) { + public void visitJSObjectLiteralExpression(JSObjectLiteralExpression node) { // do not go inside other funcs } @Override - public void visitJSClass(final JSClass aClass) { + public void visitJSClass(JSClass aClass) { // do not go inside other funcs } @@ -2089,45 +2072,48 @@ public void visitJSPackageStatement(JSPackageStatement packageStatement) { } @Override - public void visitJSFunctionDeclaration(final JSFunction node) { + @RequiredReadAction + public void visitJSFunctionDeclaration(JSFunction node) { addRelevantDef(node); } @Override - public void visitJSImportStatement(final JSImportStatement importStatement) { + public void visitJSImportStatement(JSImportStatement importStatement) { // do not expand tree } @Override - public void visitJSUseNamespaceDirective(final JSUseNamespaceDirective useNamespaceDirective) { - final String namespaceToBeUsed = useNamespaceDirective.getNamespaceToBeUsed(); + @RequiredReadAction + public void visitJSUseNamespaceDirective(JSUseNamespaceDirective useNamespaceDirective) { + String namespaceToBeUsed = useNamespaceDirective.getNamespaceToBeUsed(); if (namespaceToBeUsed != null) { addNamedElement(useNamespaceDirective, namespaceToBeUsed.hashCode()); } } - private void addRelevantDef(final JSNamedElement node) { - final String name = node.getName(); + @RequiredReadAction + private void addRelevantDef(JSNamedElement node) { + String name = node.getName(); if (name != null) { - final int key = name.hashCode(); + int key = name.hashCode(); addNamedElement(node, key); } } - private void addNamedElement(final JSElement node, final int key) { - final Object o = myRelevantDefs.get(key); + private void addNamedElement(JSElement node, int key) { + Object o = myRelevantDefs.get(key); if (o == null) { myRelevantDefs.put(key, node); } else if (o instanceof JSElement element) { - final JSElement[] newO = new JSElement[]{element, node}; + JSElement[] newO = new JSElement[]{element, node}; myRelevantDefs.put(key, newO); } else { - final JSElement[] oldO = (JSElement[])o; - final JSElement[] newO = new JSElement[oldO.length + 1]; + JSElement[] oldO = (JSElement[])o; + JSElement[] newO = new JSElement[oldO.length + 1]; System.arraycopy(oldO, 0, newO, 0, oldO.length); newO[oldO.length] = node; myRelevantDefs.put(key, newO); @@ -2135,7 +2121,7 @@ else if (o instanceof JSElement element) { } @Override - public void visitElement(final PsiElement element) { + public void visitElement(PsiElement element) { element.acceptChildren(this); } } @@ -2146,6 +2132,7 @@ public static class ContextResolver { private JSNamedElement parentContainer; private String typeName; + @RequiredReadAction public ContextResolver(JSExpression expr) { if (expr instanceof JSThisExpression || expr instanceof JSSuperExpression) { // We need to resolve ns mapping for 'this', which function was the constructor of the object @@ -2157,62 +2144,64 @@ public ContextResolver(JSExpression expr) { } } + @RequiredReadAction public ContextResolver(PsiElement element) { resolveContext(element); } - private void resolveContext(final PsiElement context) { + @RequiredReadAction + private void resolveContext(PsiElement context) { parentContainer = PsiTreeUtil.getParentOfType(context, JSFunction.class, JSClass.class); if (parentContainer instanceof JSFunctionExpression) { boolean changedFunctionScope = false; - while (parentContainer instanceof JSFunctionExpression) { - final PsiElement parentContainerParent = parentContainer.getParent(); + while (parentContainer instanceof JSFunctionExpression functionExpr) { + PsiElement functionExprParent = functionExpr.getParent(); - if (parentContainerParent instanceof JSAssignmentExpression assignment) { - final JSExpression jsExpression = assignment.getLOperand(); - final JSElement functionExpressionName = + if (functionExprParent instanceof JSAssignmentExpression assignment) { + JSExpression jsExpression = assignment.getLOperand(); + JSElement functionExprName = jsExpression instanceof JSDefinitionExpression definition ? definition.getExpression() : null; - qualifyingExpression = functionExpressionName; + qualifyingExpression = functionExprName; - if (functionExpressionName instanceof JSReferenceExpression referenceExpression) { - final JSExpression functionExpressionNameQualifier = referenceExpression.getQualifier(); + if (functionExprName instanceof JSReferenceExpression refExpr) { + JSExpression functionExprNameQualifier = refExpr.getQualifier(); - if (functionExpressionNameQualifier instanceof JSThisExpression) { - parentContainer = PsiTreeUtil.getParentOfType(functionExpressionName, JSFunction.class); + if (functionExprNameQualifier instanceof JSThisExpression) { + parentContainer = PsiTreeUtil.getParentOfType(functionExprName, JSFunction.class); qualifyingExpression = null; changedFunctionScope = true; continue; } - else if (functionExpressionNameQualifier instanceof JSReferenceExpression functionReferenceExpression) { - final String functionExpressionNameQualifierText = functionReferenceExpression.getReferencedName(); + else if (functionExprNameQualifier instanceof JSReferenceExpression functionRefExpr) { + String functionExpressionNameQualifierText = functionRefExpr.getReferencedName(); if (PROTOTYPE_FIELD_NAME.equals(functionExpressionNameQualifierText)) { - qualifyingExpression = functionReferenceExpression.getQualifier(); + qualifyingExpression = functionRefExpr.getQualifier(); } else if (!changedFunctionScope) { String referencedName; - if (functionReferenceExpression.getQualifier() == null - && ((referencedName = referenceExpression.getReferencedName()) == null + if (functionRefExpr.getQualifier() == null + && ((referencedName = refExpr.getReferencedName()) == null || referencedName.isEmpty() || !Character.isUpperCase(referencedName.charAt(0)))) { - qualifyingExpression = functionExpressionNameQualifier; + qualifyingExpression = functionExprNameQualifier; } } } } } - else if (parentContainerParent instanceof JSProperty) { - final JSElement element = PsiTreeUtil.getParentOfType( - parentContainerParent, + else if (functionExprParent instanceof JSProperty property) { + JSElement element = PsiTreeUtil.getParentOfType( + property, JSVariable.class, JSAssignmentExpression.class, JSArgumentList.class ); - if (element instanceof JSVariable) { - qualifyingExpression = element; + if (element instanceof JSVariable variable) { + qualifyingExpression = variable; } else if (element instanceof JSAssignmentExpression assignment) { JSExpression loperand = assignment.getLOperand(); @@ -2220,31 +2209,31 @@ else if (element instanceof JSAssignmentExpression assignment) { qualifyingExpression = ((JSDefinitionExpression)loperand).getExpression(); } } - else if (element instanceof JSArgumentList) { - qualifyingExpression = JSSymbolUtil.findQualifyingExpressionFromArgumentList((JSArgumentList)element); + else if (element instanceof JSArgumentList argumentList) { + qualifyingExpression = JSSymbolUtil.findQualifyingExpressionFromArgumentList(argumentList); } } - else if (parentContainerParent instanceof JSNewExpression) { - final JSElement element = PsiTreeUtil.getParentOfType( - parentContainerParent, + else if (functionExprParent instanceof JSNewExpression newExpression) { + JSElement element = PsiTreeUtil.getParentOfType( + newExpression, JSVariable.class, JSAssignmentExpression.class, JSArgumentList.class ); - if (element instanceof JSVariable) { - qualifyingExpression = element; + if (element instanceof JSVariable variable) { + qualifyingExpression = variable; } else if (element instanceof JSAssignmentExpression assignment) { qualifyingExpression = ((JSDefinitionExpression)assignment.getLOperand()).getExpression(); } } - else if (parentContainerParent instanceof JSReferenceExpression) { - parentContainer = PsiTreeUtil.getParentOfType(parentContainerParent, JSFunction.class); + else if (functionExprParent instanceof JSReferenceExpression functionRefExpr) { + parentContainer = PsiTreeUtil.getParentOfType(functionRefExpr, JSFunction.class); continue; } else if (parentContainer.getName() == null) { - parentContainer = PsiTreeUtil.getParentOfType(parentContainerParent, JSFunction.class); + parentContainer = PsiTreeUtil.getParentOfType(functionExprParent, JSFunction.class); continue; } @@ -2252,7 +2241,7 @@ else if (parentContainer.getName() == null) { } if (qualifyingExpression instanceof JSReferenceExpression qualifyingReferenceExpression) { - final String functionExpressionNameQualifierText = qualifyingReferenceExpression.getReferencedName(); + String functionExpressionNameQualifierText = qualifyingReferenceExpression.getReferencedName(); if (PROTOTYPE_FIELD_NAME.equals(functionExpressionNameQualifierText)) { qualifyingExpression = qualifyingReferenceExpression.getQualifier(); @@ -2266,25 +2255,25 @@ else if (parentContainer.getName() == null) { PsiElement parentContainerParent = parentContainer != null ? parentContainer.getParent() : null; - if (parentContainerParent instanceof JSFile) { - parentContainerParent = getClassReferenceForXmlFromContext(parentContainerParent); + if (parentContainerParent instanceof JSFile jsFile) { + parentContainerParent = getClassReferenceForXmlFromContext(jsFile); } - if (parentContainerParent instanceof JSClass) { - parentContainer = (JSNamedElement)parentContainerParent; + if (parentContainerParent instanceof JSClass jsClass) { + parentContainer = jsClass; } - if (parentContainer instanceof JSFunctionExpression && parentContainer.getContainingFile() - .getLanguage() == JavaScriptSupportLoader.ECMA_SCRIPT_L4) { + if (parentContainer instanceof JSFunctionExpression + && parentContainer.getContainingFile().getLanguage() == JavaScriptSupportLoader.ECMA_SCRIPT_L4) { parentContainer = null; qualifyingExpression = null; typeName = OBJECT_CLASS_NAME; } } - public @Nullable - String getQualifierAsString() { + @RequiredReadAction + public String getQualifierAsString() { String qualifierAsString = getOriginalQualifierAsString(); return normalizeQualifier(qualifierAsString); } @@ -2296,15 +2285,16 @@ private static String normalizeQualifier(String qualifierAsString) { return qualifierAsString; } + @RequiredReadAction private String getOriginalQualifierAsString() { - if (qualifyingExpression instanceof JSLiteralExpression) { - return StringUtil.stripQuotesAroundValue(qualifyingExpression.getText()); + if (qualifyingExpression instanceof JSLiteralExpression literal) { + return StringUtil.stripQuotesAroundValue(literal.getText()); } - else if (qualifyingExpression instanceof JSReferenceExpression) { - return qualifyingExpression.getText(); + else if (qualifyingExpression instanceof JSReferenceExpression refExpr) { + return refExpr.getText(); } - else if (qualifyingExpression instanceof JSNamedElement) { - return qualifyingExpression.getName(); + else if (qualifyingExpression instanceof JSNamedElement namedElement) { + return namedElement.getName(); } else if (parentContainer instanceof JSQualifiedNamedElement qualifiedNamedElement) { return qualifiedNamedElement.getQualifiedName(); @@ -2325,9 +2315,10 @@ public String[] getQualifierAsNameIndex() { return null; } + @RequiredReadAction public static String getQualifierOfExprAsString(JSElement expr) { - if (expr instanceof JSNamedElement) { - return expr.getName(); + if (expr instanceof JSNamedElement namedElement) { + return namedElement.getName(); } if (expr instanceof JSReferenceExpression refExpr && PROTOTYPE_FIELD_NAME.equals(refExpr.getReferencedName())) { expr = refExpr.getQualifier(); @@ -2337,7 +2328,7 @@ public static String getQualifierOfExprAsString(JSElement expr) { } private static boolean isInjectedFile(PsiElement element) { - return element instanceof PsiFile file && (file.getVirtualFile() instanceof LightVirtualFile); + return element instanceof PsiFile file && file.getVirtualFile() instanceof LightVirtualFile; } @RequiredReadAction @@ -2348,7 +2339,8 @@ public static void processGlobalSymbols(PsiElement target, PsiScopeProcessor pro for (VirtualFile file : files) { PsiFile psiFile = PsiManager.getInstance(target.getProject()).findFile(file); - if (psiFile instanceof JSFile && !psiFile.processDeclarations(processor, ResolveState.initial(), null, target)) { + if (psiFile instanceof JSFile jsFile + && !jsFile.processDeclarations(processor, ResolveState.initial(), null, target)) { return; } } @@ -2356,19 +2348,20 @@ public static void processGlobalSymbols(PsiElement target, PsiScopeProcessor pro } public interface OverrideHandler { - boolean process(ResolveProcessor processor, final PsiElement scope, String className); + boolean process(ResolveProcessor processor, PsiElement scope, String className); } public interface MetaDataProcessor { - boolean process(final @Nonnull JSAttribute jsAttribute); + @RequiredReadAction + boolean process(@Nonnull JSAttribute jsAttribute); - boolean handleOtherElement(final PsiElement el, PsiElement context, @Nullable Ref continuePassElement); + boolean handleOtherElement(PsiElement el, PsiElement context, @Nullable SimpleReference continuePassElement); } public static abstract class CollectMethodsToImplementProcessor extends ResolveProcessor { private final String myName; - public CollectMethodsToImplementProcessor(final String name, PsiElement context) { + public CollectMethodsToImplementProcessor(String name, PsiElement context) { super(null, context); myName = name; @@ -2379,10 +2372,12 @@ public CollectMethodsToImplementProcessor(final String name, PsiElement context) } @Override - public boolean execute(final PsiElement element, final ResolveState state) { - final ResolveProcessor processor = new ResolveProcessor(myName, place) { + @RequiredReadAction + public boolean execute(@Nonnull PsiElement element, ResolveState state) { + ResolveProcessor processor = new ResolveProcessor(myName, place) { @Override - public boolean execute(final PsiElement element, final ResolveState state) { + @RequiredReadAction + public boolean execute(@Nonnull PsiElement element, ResolveState state) { if (element instanceof JSFunction function) { if (OBJECT_CLASS_NAME.equals(((JSClass)findParent(function)).getQualifiedName()) || function.isConstructor()) { return true; @@ -2402,7 +2397,7 @@ public boolean execute(final PsiElement element, final ResolveState state) { if (!implementedInterface.isInterface()) { continue; } - final boolean b = + boolean b = implementedInterface.processDeclarations(processor, ResolveState.initial(), implementedInterface, implementedInterface); if (!b) { @@ -2420,7 +2415,7 @@ public boolean execute(final PsiElement element, final ResolveState state) { protected abstract boolean process(ResolveProcessor processor); } - static JSSourceElement[] getSourceElements(final PsiElement owner) { + static JSSourceElement[] getSourceElements(PsiElement owner) { if (owner instanceof JSStubElementImpl jsStubElement) { return (JSSourceElement[])jsStubElement.getStubOrPsiChildren(JSElementTypes.SOURCE_ELEMENTS, JSSourceElement.EMPTY_ARRAY); } @@ -2430,21 +2425,22 @@ else if (owner instanceof JSFile jsFile) { return JSSourceElement.EMPTY_ARRAY; } - public static PsiElement[] getStubbedChildren(final PsiElement owner) { + @RequiredReadAction + public static PsiElement[] getStubbedChildren(PsiElement owner) { return getStubbedChildren(owner, ourStubbedFilter); } - public static PsiElement[] getStubbedChildren(final PsiElement owner, TokenSet filter) { - if (owner instanceof JSStubElementImpl) { - final JSStubElementImpl element = (JSStubElementImpl)owner; - final StubElement stub = element.getStub(); + @RequiredReadAction + public static PsiElement[] getStubbedChildren(PsiElement owner, TokenSet filter) { + if (owner instanceof JSStubElementImpl stubElement) { + StubElement stub = stubElement.getStub(); if (stub != null) { return stub.getChildrenByType(filter, PsiElement.EMPTY_ARRAY); } - return getChildrenFromTokenSet(element.getNode(), filter); + return getChildrenFromTokenSet(stubElement.getNode(), filter); } else if (owner instanceof JSFile file) { - final StubElement stub = ((JSFileImpl)file).getStub(); + StubElement stub = ((JSFileImpl)file).getStub(); if (stub != null) { return stub.getChildrenByType(filter, PsiElement.EMPTY_ARRAY); } @@ -2453,8 +2449,8 @@ else if (owner instanceof JSFile file) { return PsiElement.EMPTY_ARRAY; } - private static PsiElement[] getChildrenFromTokenSet(final ASTNode astNode, TokenSet filter) { - final ASTNode[] astNodes = astNode.getChildren(filter); + private static PsiElement[] getChildrenFromTokenSet(ASTNode astNode, TokenSet filter) { + ASTNode[] astNodes = astNode.getChildren(filter); PsiElement[] result = new PsiElement[astNodes.length]; for (int i = 0; i < astNodes.length; ++i) { result[i] = astNodes[i].getPsi(); @@ -2477,7 +2473,7 @@ private static class ImplicitJSVariableImpl extends LightElement implements JSVa private final String myName; private final String myType; - public ImplicitJSVariableImpl(final String name, String qName, PsiFile containingFile) { + public ImplicitJSVariableImpl(String name, String qName, PsiFile containingFile) { super(containingFile.getManager(), JavaScriptSupportLoader.ECMA_SCRIPT_L4.getBaseLanguage()); myContainingFile = containingFile; myName = name; @@ -2547,11 +2543,13 @@ public boolean hasInitializer() { } @Override + @RequiredReadAction public JSExpression getInitializer() { return null; } @Override + @RequiredReadAction public String getInitializerText() { return null; } @@ -2593,21 +2591,25 @@ public boolean isDeprecated() { } @Override + @RequiredReadAction public String getQualifiedName() { return myName; } @Override + @RequiredReadAction public String getName() { return myName; } @Override - public PsiElement setName(@NonNls @Nonnull String name) throws IncorrectOperationException { + @RequiredWriteAction + public PsiElement setName(@Nonnull String name) throws IncorrectOperationException { throw new IncorrectOperationException(); } @Override + @RequiredReadAction public PsiElement getNameIdentifier() { return null; } diff --git a/base-impl/src/main/java/consulo/javascript/lang/parsing/impl/JavaSciptDestructuringObjectImpl.java b/base-impl/src/main/java/consulo/javascript/lang/parsing/impl/JavaSciptDestructuringObjectImpl.java index 7c08ab02..40e4bf4a 100644 --- a/base-impl/src/main/java/consulo/javascript/lang/parsing/impl/JavaSciptDestructuringObjectImpl.java +++ b/base-impl/src/main/java/consulo/javascript/lang/parsing/impl/JavaSciptDestructuringObjectImpl.java @@ -26,15 +26,15 @@ protected void accept(@Nonnull JSElementVisitor visitor) { visitor.visitJSElement(this); } - @RequiredReadAction @Nonnull @Override + @RequiredReadAction public JSVariable[] getVariables() { JSDestructuringShorthandedProperty[] properties = getProperties(); if (properties.length == 0) { return JSVariable.EMPTY_ARRAY; } - return Arrays.stream(properties).map(JSDestructuringShorthandedProperty::getVarialbe).toArray(JSVariable[]::new); + return Arrays.stream(properties).map(JSDestructuringShorthandedProperty::getVariable).toArray(JSVariable[]::new); } @Override diff --git a/base-impl/src/main/java/consulo/javascript/lang/parsing/impl/JavaScriptDestructuringParameterImpl.java b/base-impl/src/main/java/consulo/javascript/lang/parsing/impl/JavaScriptDestructuringParameterImpl.java index 68b94d72..09e6ec25 100644 --- a/base-impl/src/main/java/consulo/javascript/lang/parsing/impl/JavaScriptDestructuringParameterImpl.java +++ b/base-impl/src/main/java/consulo/javascript/lang/parsing/impl/JavaScriptDestructuringParameterImpl.java @@ -150,6 +150,7 @@ public JSAttributeList getAttributeList() { } @Override + @RequiredReadAction public String getQualifiedName() { return null; } diff --git a/base-impl/src/main/java/consulo/javascript/lang/parsing/impl/JavaScriptDestructuringShorthandedPropertyImpl.java b/base-impl/src/main/java/consulo/javascript/lang/parsing/impl/JavaScriptDestructuringShorthandedPropertyImpl.java index 4c941df1..84df1b61 100644 --- a/base-impl/src/main/java/consulo/javascript/lang/parsing/impl/JavaScriptDestructuringShorthandedPropertyImpl.java +++ b/base-impl/src/main/java/consulo/javascript/lang/parsing/impl/JavaScriptDestructuringShorthandedPropertyImpl.java @@ -24,9 +24,9 @@ protected void accept(@Nonnull JSElementVisitor visitor) { } @Nonnull - @RequiredReadAction @Override - public JSVariable getVarialbe() { + @RequiredReadAction + public JSVariable getVariable() { return findNotNullChildByClass(JSVariable.class); } } From 36765fdbf9b633526b9e1635000b440789908e1e Mon Sep 17 00:00:00 2001 From: UNV Date: Sun, 12 Jan 2025 13:53:09 +0300 Subject: [PATCH 094/150] Fixing constant field names. --- .../intellij/lang/javascript/psi/impl/JSAttributeImpl.java | 7 +++---- .../lang/javascript/psi/impl/JSAttributeListImpl.java | 6 +++--- .../lang/javascript/psi/resolve/JSResolveUtil.java | 6 +++--- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAttributeImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAttributeImpl.java index 14f08cd2..d5d8a3c1 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAttributeImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAttributeImpl.java @@ -39,8 +39,7 @@ */ public class JSAttributeImpl extends JSStubElementImpl implements JSAttribute { private PsiReference[] myReferences; - private static - String[] myPossibleMetaData = new String[]{ + private static final String[] POSSIBLE_META_DATA = new String[]{ "AccessibilityClass", "ArrayElementType", "Bindable", @@ -155,7 +154,7 @@ public TextRange getRangeInElement() { @RequiredReadAction public PsiElement resolve() { String s = getCanonicalText(); - return ArrayUtil.indexOf(myPossibleMetaData, s) >= 0 ? JSAttributeImpl.this : null; + return ArrayUtil.indexOf(POSSIBLE_META_DATA, s) >= 0 ? JSAttributeImpl.this : null; } @Nonnull @@ -191,7 +190,7 @@ public boolean isReferenceTo(PsiElement element) { @Override @RequiredReadAction public Object[] getVariants() { - return myPossibleMetaData; + return POSSIBLE_META_DATA; } @Override diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAttributeListImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAttributeListImpl.java index bab021f9..5e4c23e8 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAttributeListImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAttributeListImpl.java @@ -42,7 +42,7 @@ * @author Maxim.Mossienko */ public class JSAttributeListImpl extends JSStubElementImpl implements JSAttributeList { - private static final TokenSet OUR_MODIFIERS_TYPE_SET = TokenSet.create( + private static final TokenSet MODIFIERS_TYPE_SET = TokenSet.create( JSTokenTypes.PUBLIC_KEYWORD, JSTokenTypes.PRIVATE_KEYWORD, JSTokenTypes.PROTECTED_KEYWORD, @@ -117,14 +117,14 @@ public AccessType getAccessType() { return stub.getAccessType(); } - ASTNode node = getNode().findChildByType(OUR_MODIFIERS_TYPE_SET); + ASTNode node = getNode().findChildByType(MODIFIERS_TYPE_SET); return ACCESS_TYPE_MAP.getOrDefault(node != null ? node.getElementType() : null, AccessType.PACKAGE_LOCAL); } @Override @RequiredReadAction public PsiElement findAccessTypeElement() { - ASTNode modifier = getNode().findChildByType(OUR_MODIFIERS_TYPE_SET); + ASTNode modifier = getNode().findChildByType(MODIFIERS_TYPE_SET); return modifier != null ? modifier.getPsi() : null; } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/JSResolveUtil.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/JSResolveUtil.java index d0b46376..d1a8124a 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/JSResolveUtil.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/JSResolveUtil.java @@ -91,8 +91,8 @@ * @author max, maxim.mossienko */ public class JSResolveUtil { - private static final Key>> MY_CACHED_STATEMENTS = Key.create("JS.RelevantStatements"); - private static final UserDataCache>, JSElement, Object> OUR_CACHED_DEFS_CACHE = + private static final Key>> CACHED_STATEMENTS = Key.create("JS.RelevantStatements"); + private static final UserDataCache>, JSElement, Object> CACHED_DEFS_CACHE = new RelevantDefsUserDataCache(); public static final String PROTOTYPE_FIELD_NAME = "prototype"; @@ -1810,7 +1810,7 @@ public static boolean processDeclarationsInScope( } boolean result = true; - IntObjectMap defsMap = OUR_CACHED_DEFS_CACHE.get(MY_CACHED_STATEMENTS, scope, null).getValue(); + IntObjectMap defsMap = CACHED_DEFS_CACHE.get(CACHED_STATEMENTS, scope, null).getValue(); if (requiredName == null) { for (Object value : defsMap.values()) { From b03a8abad804c87ccc2c2efa08a7f0d263fe68d4 Mon Sep 17 00:00:00 2001 From: UNV Date: Sun, 12 Jan 2025 14:26:30 +0300 Subject: [PATCH 095/150] Refactoring psi impl (second part). --- .../psi/impl/JSCallExpressionImpl.java | 11 +- .../javascript/psi/impl/JSCaseClauseImpl.java | 12 +- .../javascript/psi/impl/JSCatchBlockImpl.java | 18 +- .../javascript/psi/impl/JSChangeUtil.java | 147 ++++++------ .../lang/javascript/psi/impl/JSClassBase.java | 165 +++++++------ .../psi/impl/JSClassExpressionImpl.java | 6 +- .../lang/javascript/psi/impl/JSClassImpl.java | 98 ++++---- .../psi/impl/JSCommaExpressionImpl.java | 9 +- .../psi/impl/JSConditionalExpressionImpl.java | 19 +- .../psi/impl/JSContinueStatementImpl.java | 11 +- .../psi/impl/JSDefinitionExpressionImpl.java | 35 +-- .../psi/impl/JSDoWhileStatementImpl.java | 11 +- .../javascript/psi/impl/JSDocCommentImpl.java | 14 +- .../javascript/psi/impl/JSDocTagImpl.java | 115 ++++----- .../psi/impl/JSDocTagValueImpl.java | 18 +- .../javascript/psi/impl/JSElementImpl.java | 4 +- .../psi/impl/JSEmbeddedContentImpl.java | 23 +- .../psi/impl/JSEmptyStatementImpl.java | 9 +- .../impl/JSExpressionCodeFragmentImpl.java | 9 +- .../javascript/psi/impl/JSExpressionImpl.java | 7 +- .../psi/impl/JSExpressionStatementImpl.java | 18 +- .../lang/javascript/psi/impl/JSFileImpl.java | 31 +-- .../psi/impl/JSForInStatementImpl.java | 29 +-- .../psi/impl/JSForStatementImpl.java | 15 +- .../psi/impl/JSFunctionBaseImpl.java | 69 +++--- .../psi/impl/JSFunctionExpressionImpl.java | 56 ++--- .../javascript/psi/impl/JSFunctionImpl.java | 44 ++-- .../psi/impl/JSFunctionPropertyImpl.java | 6 +- .../psi/impl/JSGenericSignatureImpl.java | 2 +- .../psi/impl/JSIfStatementImpl.java | 17 +- .../psi/impl/JSImportStatementImpl.java | 20 +- .../psi/impl/JSIncludeDirectiveImpl.java | 24 +- ...JSIndexedPropertyAccessExpressionImpl.java | 16 +- .../psi/impl/JSLabeledStatementImpl.java | 16 +- .../psi/impl/JSLetExpressionImpl.java | 8 +- .../psi/impl/JSLetStatementImpl.java | 2 +- .../psi/impl/JSLiteralExpressionImpl.java | 11 +- .../psi/impl/JSNamespaceDeclarationImpl.java | 44 ++-- .../psi/impl/JSNewExpressionImpl.java | 14 +- .../impl/JSObjectLiteralExpressionImpl.java | 18 +- .../psi/impl/JSPackageStatementImpl.java | 61 ++--- .../javascript/psi/impl/JSParameterImpl.java | 39 ++- .../psi/impl/JSParameterListImpl.java | 11 +- .../impl/JSParenthesizedExpressionImpl.java | 7 +- .../psi/impl/JSPostfixExpressionImpl.java | 12 +- .../psi/impl/JSPrefixExpressionImpl.java | 9 +- .../javascript/psi/impl/JSPropertyImpl.java | 21 +- .../javascript/psi/impl/JSPsiImplUtils.java | 123 +++++----- .../psi/impl/JSReferenceExpressionImpl.java | 222 +++++++++--------- .../psi/impl/JSReferenceListImpl.java | 36 ++- 50 files changed, 885 insertions(+), 857 deletions(-) diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSCallExpressionImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSCallExpressionImpl.java index 329acb6c..f6bab133 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSCallExpressionImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSCallExpressionImpl.java @@ -16,6 +16,7 @@ package com.intellij.lang.javascript.psi.impl; +import consulo.annotation.access.RequiredReadAction; import consulo.language.ast.ASTNode; import com.intellij.lang.javascript.JSElementTypes; import com.intellij.lang.javascript.psi.JSArgumentList; @@ -26,14 +27,11 @@ import jakarta.annotation.Nonnull; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 31, 2005 - * Time: 12:02:38 AM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-31 */ public class JSCallExpressionImpl extends JSExpressionImpl implements JSCallExpression { - public JSCallExpressionImpl(final ASTNode node) { + public JSCallExpressionImpl(ASTNode node) { super(node); } @@ -43,6 +41,7 @@ public JSExpression getMethodExpression() { } @Override + @RequiredReadAction public JSArgumentList getArgumentList() { ASTNode node = getNode().findChildByType(JSElementTypes.ARGUMENT_LIST); return node != null ? (JSArgumentList)node.getPsi() : null; diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSCaseClauseImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSCaseClauseImpl.java index d59cd6f6..25c89e04 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSCaseClauseImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSCaseClauseImpl.java @@ -21,27 +21,27 @@ import com.intellij.lang.javascript.psi.JSElementVisitor; import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.lang.javascript.psi.JSStatement; +import consulo.annotation.access.RequiredReadAction; import consulo.language.ast.ASTNode; import jakarta.annotation.Nonnull; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 10:11:23 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public class JSCaseClauseImpl extends JSElementImpl implements JSCaseClause { - public JSCaseClauseImpl(final ASTNode node) { + public JSCaseClauseImpl(ASTNode node) { super(node); } @Override + @RequiredReadAction public boolean isDefault() { return getNode().findChildByType(JSTokenTypes.DEFAULT_KEYWORD) != null; } @Override + @RequiredReadAction public JSExpression getCaseExpression() { return isDefault() ? null : findChildByClass(JSExpression.class); } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSCatchBlockImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSCatchBlockImpl.java index 66d7c7a8..81655477 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSCatchBlockImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSCatchBlockImpl.java @@ -21,6 +21,7 @@ import com.intellij.lang.javascript.psi.JSElementVisitor; import com.intellij.lang.javascript.psi.JSParameter; import com.intellij.lang.javascript.psi.JSStatement; +import consulo.annotation.access.RequiredReadAction; import consulo.language.ast.ASTNode; import consulo.language.psi.PsiElement; import consulo.language.psi.resolve.PsiScopeProcessor; @@ -30,20 +31,18 @@ import jakarta.annotation.Nonnull; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 10:06:09 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public class JSCatchBlockImpl extends JSElementImpl implements JSCatchBlock { - public JSCatchBlockImpl(final ASTNode node) { + public JSCatchBlockImpl(ASTNode node) { super(node); } @Override + @RequiredReadAction public JSParameter getParameter() { - final ASTNode node = getNode().findChildByType(JSElementTypes.FORMAL_PARAMETER); + ASTNode node = getNode().findChildByType(JSElementTypes.FORMAL_PARAMETER); return node != null ? (JSParameter)node.getPsi() : null; } @@ -58,6 +57,7 @@ protected void accept(@Nonnull JSElementVisitor visitor) { } @Override + @RequiredReadAction public boolean processDeclarations( @Nonnull PsiScopeProcessor processor, @Nonnull ResolveState state, @@ -65,7 +65,7 @@ public boolean processDeclarations( @Nonnull PsiElement place ) { if (lastParent != null) { - final JSParameter param = getParameter(); + JSParameter param = getParameter(); if (param != null) { return processor.execute(param, state); } @@ -76,7 +76,7 @@ public boolean processDeclarations( @Override public void delete() throws IncorrectOperationException { - final ASTNode astNode = getNode(); + ASTNode astNode = getNode(); astNode.getTreeParent().removeChild(astNode); } } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSChangeUtil.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSChangeUtil.java index a626f6f1..33aff1e0 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSChangeUtil.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSChangeUtil.java @@ -20,6 +20,8 @@ import com.intellij.lang.javascript.formatter.JSCodeStyleSettings; import com.intellij.lang.javascript.psi.*; import com.intellij.lang.javascript.psi.util.JSUtils; +import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.access.RequiredWriteAction; import consulo.javascript.language.JavaScriptLanguage; import consulo.javascript.lang.JavaScriptTokenSets; import consulo.language.ast.ASTNode; @@ -38,16 +40,14 @@ import jakarta.annotation.Nonnull; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 31, 2005 - * Time: 7:56:28 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-31 */ public class JSChangeUtil { private JSChangeUtil() { } + @RequiredReadAction public static ASTNode createNameIdentifier(Project project, String name, IElementType type) { if (JSTokenTypes.IDENTIFIER_TOKENS_SET.contains(type)) { return createNameIdentifier(project, name); @@ -60,73 +60,78 @@ else if (JavaScriptTokenSets.STRING_LITERALS.contains(type) && !StringUtil.isQuo } } + @RequiredReadAction public static ASTNode createNameIdentifier(Project project, String name) { - final JSExpressionStatement expressionStatement = (JSExpressionStatement)createJSTreeFromTextImpl(project, name + ";"); - final JSReferenceExpressionImpl refExpression = (JSReferenceExpressionImpl)expressionStatement.getFirstChild(); + JSExpressionStatement expression = (JSExpressionStatement)createJSTreeFromTextImpl(project, name + ";"); + JSReferenceExpressionImpl refExpr = (JSReferenceExpressionImpl)expression.getFirstChild(); - return refExpression.getNode().getFirstChildNode(); + return refExpr.getNode().getFirstChildNode(); } @Nonnull + @RequiredReadAction public static JSExpression createExpressionFromText(Project project, @NonNls String text) { text = "{\n" + text + "\n}"; PsiElement element = createJSTreeFromTextImpl(project, text); assert element instanceof JSBlockStatement : "\"" + text + "\" was not parsed as BlockStatement"; element = ((JSBlockStatement)element).getStatements()[0]; - final JSExpressionStatement expressionStatement = (JSExpressionStatement)element; + JSExpressionStatement expressionStatement = (JSExpressionStatement)element; return (JSExpression)expressionStatement.getFirstChild(); } - - public static ASTNode createStatementFromText(Project project, @NonNls String text) { - final PsiElement element = createJSTreeFromTextImpl(project, text); - final JSSourceElement stmt = element instanceof JSSourceElement ? (JSSourceElement)element : null; + @RequiredReadAction + public static ASTNode createStatementFromText(Project project, String text) { + PsiElement element = createJSTreeFromTextImpl(project, text); + JSSourceElement stmt = element instanceof JSSourceElement sourceElement ? sourceElement : null; return stmt != null ? stmt.getNode() : null; } @Nullable - private static PsiElement createJSTreeFromTextImpl(Project project, @NonNls String text) { - final PsiFile dummyFile; - dummyFile = PsiFileFactory.getInstance(project).createFileFromText("dummy.js", JavaScriptLanguage.INSTANCE, text); + @RequiredReadAction + private static PsiElement createJSTreeFromTextImpl(Project project, String text) { + PsiFile dummyFile = + PsiFileFactory.getInstance(project).createFileFromText("dummy.js", JavaScriptLanguage.INSTANCE, text); return dummyFile.getFirstChild(); } - public static ASTNode createJSTreeFromText(Project project, @NonNls String text) { - final PsiElement element = createJSTreeFromTextImpl(project, text); - if (element != null) { - return element.getNode(); - } - return null; + @RequiredReadAction + public static ASTNode createJSTreeFromText(Project project, String text) { + PsiElement element = createJSTreeFromTextImpl(project, text); + return element != null ? element.getNode() : null; } + @RequiredWriteAction public static JSExpression replaceExpression(JSExpression oldExpr, JSExpression newExpr) { if (JSUtils.isNeedParenthesis(oldExpr, newExpr)) { ASTNode parenthesized = createExpressionFromText(oldExpr.getProject(), "(a)").getNode(); - final JSParenthesizedExpression parenthPsi = (JSParenthesizedExpression)parenthesized.getPsi(); + JSParenthesizedExpression parenthPsi = (JSParenthesizedExpression)parenthesized.getPsi(); parenthesized.replaceChild(parenthPsi.getInnerExpression().getNode(), newExpr.getNode().copyElement()); oldExpr.getParent().getNode().replaceChild(oldExpr.getNode(), parenthesized); return parenthPsi; } else { - final ASTNode newNode = newExpr.getNode().copyElement(); + ASTNode newNode = newExpr.getNode().copyElement(); oldExpr.getParent().getNode().replaceChild(oldExpr.getNode(), newNode); return (JSExpression)newNode.getPsi(); } } + @RequiredWriteAction public static JSStatement replaceStatement(JSStatement oldStatement, JSStatement newStatement) { - final ASTNode newNode = newStatement.getNode().copyElement(); + ASTNode newNode = newStatement.getNode().copyElement(); oldStatement.getParent().getNode().replaceChild(oldStatement.getNode(), newNode); return (JSStatement)newNode.getPsi(); } + @RequiredWriteAction public static void doIdentifierReplacement(PsiElement parent, PsiElement identifier, String name) { - final ASTNode nameElement = JSChangeUtil.createNameIdentifier(parent.getProject(), name); + ASTNode nameElement = JSChangeUtil.createNameIdentifier(parent.getProject(), name); parent.getNode().replaceChild(identifier.getNode(), nameElement); } - public static PsiElement doAddBefore(final PsiElement jsElement, final PsiElement element, final PsiElement anchor) + @RequiredWriteAction + public static PsiElement doAddBefore(PsiElement jsElement, PsiElement element, PsiElement anchor) throws IncorrectOperationException { if (!JSChangeUtil.isStatementOrComment(element) && !(element instanceof PsiWhiteSpace)) { throw new UnsupportedOperationException("js statement or whitespace expected"); @@ -135,35 +140,36 @@ public static PsiElement doAddBefore(final PsiElement jsElement, final PsiElemen return doDoAddBefore(jsElement, element, anchor); } - public static PsiElement doDoAddBefore(final PsiElement jsElement, final PsiElement element, final PsiElement anchor) - throws IncorrectOperationException { - final ASTNode elementNode = element.getNode(); + @RequiredWriteAction + public static PsiElement doDoAddBefore(PsiElement jsElement, PsiElement element, PsiElement anchor) throws IncorrectOperationException { + ASTNode elementNode = element.getNode(); if (elementNode == null) { throw new IncorrectOperationException("node should not be null"); } ASTNode copiedElementNode = elementNode.copyElement(); - final ASTNode parentNode = jsElement.getNode(); + ASTNode parentNode = jsElement.getNode(); ASTNode anchorNode = anchor != null ? anchor.getNode() : null; anchorNode = insertWhitespaceIfNeeded(anchorNode, elementNode, parentNode, anchorNode); parentNode.addChild(copiedElementNode, anchorNode != null ? anchorNode : null); - if (copiedElementNode.getPsi() instanceof PsiComment && parentNode.getPsi().isPhysical()) { // HACK ! + if (copiedElementNode.getPsi() instanceof PsiComment comment && parentNode.getPsi().isPhysical()) { // HACK ! CodeStyleManager.getInstance(element.getProject()).reformatNewlyAddedElement(parentNode, copiedElementNode); } return copiedElementNode.getPsi(); } + @RequiredWriteAction private static ASTNode insertWhitespaceIfNeeded( ASTNode anchorNode, - final ASTNode elementNode, - final ASTNode parentNode, - final ASTNode insertionPlaceNode + ASTNode elementNode, + ASTNode parentNode, + ASTNode insertionPlaceNode ) throws IncorrectOperationException { ParserDefinition parserDef = ParserDefinition.forLanguage(parentNode.getPsi().getLanguage()); - final TokenSet comments = parserDef.getCommentTokens(parentNode.getPsi().getLanguage().getVersions()[0]); - final TokenSet whitespaces = parserDef.getWhitespaceTokens(parentNode.getPsi().getLanguage().getVersions()[0]); + TokenSet comments = parserDef.getCommentTokens(parentNode.getPsi().getLanguage().getVersions()[0]); + TokenSet whitespaces = parserDef.getWhitespaceTokens(parentNode.getPsi().getLanguage().getVersions()[0]); if (anchorNode != null && (!whitespaces.contains(anchorNode.getElementType()) && !whitespaces.contains(elementNode.getElementType()) @@ -177,7 +183,7 @@ private static ASTNode insertWhitespaceIfNeeded( commentString = "\n"; } - final ASTNode wsNode = + ASTNode wsNode = PsiParserFacade.SERVICE.getInstance(parentNode.getPsi().getProject()).createWhiteSpaceFromText(commentString).getNode(); parentNode.addChild(wsNode, insertionPlaceNode); anchorNode = wsNode; @@ -185,16 +191,19 @@ private static ASTNode insertWhitespaceIfNeeded( return anchorNode; } - public static boolean isStatementContainer(final PsiElement jsElement) { - return jsElement instanceof JSBlockStatement || jsElement instanceof JSEmbeddedContentImpl - || jsElement instanceof JSClass || jsElement instanceof JSPackageStatement; + public static boolean isStatementContainer(PsiElement jsElement) { + return jsElement instanceof JSBlockStatement + || jsElement instanceof JSEmbeddedContentImpl + || jsElement instanceof JSClass + || jsElement instanceof JSPackageStatement; } - public static boolean isStatementOrComment(final PsiElement jsElement) { + public static boolean isStatementOrComment(PsiElement jsElement) { return jsElement instanceof JSSourceElement || jsElement instanceof PsiComment; } - public static PsiElement doAddAfter(final PsiElement jsElement, final PsiElement element, final PsiElement anchor) + @RequiredWriteAction + public static PsiElement doAddAfter(PsiElement jsElement, PsiElement element, PsiElement anchor) throws IncorrectOperationException { if (!JSChangeUtil.isStatementOrComment(element) && !(element instanceof PsiWhiteSpace)) { throw new UnsupportedOperationException("js statement or whitespace expected"); @@ -203,14 +212,14 @@ public static PsiElement doAddAfter(final PsiElement jsElement, final PsiElement return doDoAddAfter(jsElement, element, anchor); } - public static PsiElement doDoAddAfter(final PsiElement jsElement, final PsiElement element, final PsiElement anchor) - throws IncorrectOperationException { - final ASTNode parentNode = jsElement.getNode(); - final ASTNode node = element.getNode(); + @RequiredWriteAction + public static PsiElement doDoAddAfter(PsiElement jsElement, PsiElement element, PsiElement anchor) throws IncorrectOperationException { + ASTNode parentNode = jsElement.getNode(); + ASTNode node = element.getNode(); ASTNode anchorNode = anchor != null ? anchor.getNode() : parentNode.getLastChildNode(); anchorNode = insertWhitespaceIfNeeded(anchorNode, node, parentNode, anchorNode != null ? anchorNode.getTreeNext() : null); - final ASTNode nodeCopy = node.copyElement(); + ASTNode nodeCopy = node.copyElement(); if (anchor == null) { parentNode.addChild(nodeCopy); @@ -219,15 +228,16 @@ public static PsiElement doDoAddAfter(final PsiElement jsElement, final PsiEleme parentNode.addChild(nodeCopy, anchorNode.getTreeNext()); } - final ASTNode nextAfter = nodeCopy.getTreeNext(); + ASTNode nextAfter = nodeCopy.getTreeNext(); insertWhitespaceIfNeeded(nextAfter, node, parentNode, nextAfter); return nodeCopy.getPsi(); } - public static PsiElement doAddRangeBefore(PsiElement parent, PsiElement first, final PsiElement last, final PsiElement anchor) + @RequiredWriteAction + public static PsiElement doAddRangeBefore(PsiElement parent, PsiElement first, PsiElement last, PsiElement anchor) throws IncorrectOperationException { - final PsiElement resultElement; + PsiElement resultElement; PsiElement psiElement = resultElement = doAddBefore(parent, first, anchor); while (first != last) { @@ -241,9 +251,10 @@ public static PsiElement doAddRangeBefore(PsiElement parent, PsiElement first, f return resultElement; } - public static PsiElement doAddRangeAfter(final PsiElement jsElement, PsiElement first, final PsiElement last, final PsiElement anchor) + @RequiredWriteAction + public static PsiElement doAddRangeAfter(PsiElement jsElement, PsiElement first, PsiElement last, PsiElement anchor) throws IncorrectOperationException { - final PsiElement resultElement; + PsiElement resultElement; PsiElement psiElement = resultElement = doAddAfter(jsElement, first, anchor); while (first != last) { @@ -257,11 +268,12 @@ public static PsiElement doAddRangeAfter(final PsiElement jsElement, PsiElement return resultElement; } - public static boolean isBlockStatementContainer(final JSElement jsElement) { + public static boolean isBlockStatementContainer(JSElement jsElement) { return jsElement instanceof JSIfStatement || jsElement instanceof JSLoopStatement; } - public static PsiElement blockDoAddRangeBefore(final PsiElement first, final PsiElement last, final @Nonnull PsiElement anchor) + @RequiredWriteAction + public static PsiElement blockDoAddRangeBefore(PsiElement first, PsiElement last, @Nonnull PsiElement anchor) throws IncorrectOperationException { BlockAddContext addContext = new BlockAddContext(anchor) { @Override @@ -273,7 +285,8 @@ PsiElement doAddElement(PsiElement... element) throws IncorrectOperationExceptio return addContext.doAddElement(first, last); } - public static PsiElement blockDoAddRangeAfter(final PsiElement first, final PsiElement last, final @Nonnull PsiElement anchor) + @RequiredWriteAction + public static PsiElement blockDoAddRangeAfter(PsiElement first, PsiElement last, @Nonnull PsiElement anchor) throws IncorrectOperationException { BlockAddContext addContext = new BlockAddContext(anchor) { @Override @@ -285,8 +298,8 @@ PsiElement doAddElement(PsiElement... element) throws IncorrectOperationExceptio return addContext.doAddElement(first, last); } - public static PsiElement blockDoAddAfter(final PsiElement element, final @Nonnull PsiElement anchor) - throws IncorrectOperationException { + @RequiredWriteAction + public static PsiElement blockDoAddAfter(PsiElement element, @Nonnull PsiElement anchor) throws IncorrectOperationException { BlockAddContext addContext = new BlockAddContext(anchor) { @Override PsiElement doAddElement(PsiElement... element) throws IncorrectOperationException { @@ -297,8 +310,8 @@ PsiElement doAddElement(PsiElement... element) throws IncorrectOperationExceptio return addContext.doAddElement(element); } - public static PsiElement blockDoAddBefore(final PsiElement element, final @Nonnull PsiElement anchor) - throws IncorrectOperationException { + @RequiredWriteAction + public static PsiElement blockDoAddBefore(PsiElement element, @Nonnull PsiElement anchor) throws IncorrectOperationException { BlockAddContext addContext = new BlockAddContext(anchor) { @Override PsiElement doAddElement(PsiElement... element) throws IncorrectOperationException { @@ -309,7 +322,7 @@ PsiElement doAddElement(PsiElement... element) throws IncorrectOperationExceptio return addContext.doAddElement(element); } - public static String getSemicolon(final Project project) { + public static String getSemicolon(Project project) { return CodeStyleSettingsManager.getInstance(project).getCurrentSettings().getCustomSettings(JSCodeStyleSettings.class) .USE_SEMICOLON_AFTER_STATEMENT ? ";" : ""; } @@ -318,12 +331,13 @@ abstract static class BlockAddContext { final JSBlockStatement newlyAddedBlock; final PsiElement codeBlockAnchor; - BlockAddContext(final @Nonnull PsiElement _anchor) throws IncorrectOperationException { - final ASTNode codeBlockNode = JSChangeUtil.createStatementFromText(_anchor.getProject(), "{ a }"); + @RequiredWriteAction + BlockAddContext(@Nonnull PsiElement _anchor) throws IncorrectOperationException { + ASTNode codeBlockNode = JSChangeUtil.createStatementFromText(_anchor.getProject(), "{ a }"); - newlyAddedBlock = (JSBlockStatement)_anchor.replace((JSBlockStatement)codeBlockNode.getPsi()); + newlyAddedBlock = (JSBlockStatement)_anchor.replace(codeBlockNode.getPsi()); - final JSStatement artificiallyAddedBlockAnchor = newlyAddedBlock.getStatements()[0]; + JSStatement artificiallyAddedBlockAnchor = newlyAddedBlock.getStatements()[0]; codeBlockAnchor = newlyAddedBlock.addBefore(_anchor, artificiallyAddedBlockAnchor); artificiallyAddedBlockAnchor.delete(); } @@ -331,7 +345,8 @@ abstract static class BlockAddContext { abstract PsiElement doAddElement(PsiElement... element) throws IncorrectOperationException; } - static void removeRangeWithRemovalOfCommas(final ASTNode myNode, final ASTNode parent) { + @RequiredWriteAction + static void removeRangeWithRemovalOfCommas(ASTNode myNode, ASTNode parent) { ASTNode from = myNode, to = myNode.getTreeNext(); boolean seenComma = false; diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSClassBase.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSClassBase.java index 197a048b..e0b3116d 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSClassBase.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSClassBase.java @@ -22,7 +22,11 @@ import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; import com.intellij.lang.javascript.psi.resolve.ResolveProcessor; import com.intellij.lang.javascript.psi.stubs.JSClassStub; -import consulo.application.util.*; +import consulo.annotation.access.RequiredReadAction; +import consulo.application.util.CachedValueProvider; +import consulo.application.util.CachedValuesManager; +import consulo.application.util.ParameterizedCachedValue; +import consulo.application.util.UserDataCache; import consulo.javascript.impl.language.psi.JSStubElementType; import consulo.language.ast.ASTNode; import consulo.language.ast.IElementType; @@ -35,7 +39,6 @@ import consulo.util.collection.ArrayFactory; import consulo.util.collection.ArrayUtil; import consulo.util.dataholder.Key; - import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @@ -45,20 +48,21 @@ * @author Maxim.Mossienko */ public abstract class JSClassBase extends JSStubElementImpl implements JSClass { - private volatile Map myName2FunctionMap; - private volatile Map myName2FieldsMap; - private static Key, Object>> ourImplementsListCacheKey = Key.create("implements.list.cache"); - private static Key, Object>> ourExtendsListCacheKey = Key.create("implements.list.cache"); - private static UserDataCache, Object>, JSClassBase, Object> ourImplementsListCache = + private static final Key, Object>> IMPLEMENTS_LIST_CACHE_KEY = Key.create("implements.list.cache"); + private static final Key, Object>> EXTENDS_LIST_CACHE_KEY = Key.create("implements.list.cache"); + private static final UserDataCache, Object>, JSClassBase, Object> IMPLEMENTS_LIST_CACHE = new ClassesUserDataCache(); - private static UserDataCache, Object>, JSClassBase, Object> ourExtendsListCache = + private static final UserDataCache, Object>, JSClassBase, Object> EXTENDS_LIST_CACHE = new ExtendsClassesUserDataCache(); - protected JSClassBase(final ASTNode node) { + private volatile Map myName2FunctionMap; + private volatile Map myName2FieldsMap; + + protected JSClassBase(ASTNode node) { super(node); } - public JSClassBase(final JSClassStub stub, final JSStubElementType aClass) { + public JSClassBase(JSClassStub stub, JSStubElementType aClass) { super(stub, aClass); } @@ -76,7 +80,7 @@ public void subtreeChanged() { @Override protected Object clone() { - final JSClassBase o = (JSClassBase)super.clone(); + JSClassBase o = (JSClassBase)super.clone(); o.dropCaches(); return o; } @@ -89,8 +93,9 @@ private void dropCaches() { } @Override + @RequiredReadAction public JSFunction[] getFunctions() { - final JSClassStub classStub = getStub(); + JSClassStub classStub = getStub(); if (classStub != null) { return getStubChildrenByType(classStub, JSElementTypes.FUNCTION_DECLARATION, JSFunction.ARRAY_FACTORY); } @@ -99,7 +104,7 @@ public JSFunction[] getFunctions() { processDeclarations( new PsiScopeProcessor() { @Override - public boolean execute(final PsiElement element, final ResolveState state) { + public boolean execute(@Nonnull PsiElement element, ResolveState state) { if (element instanceof JSFunction function) { functions.add(function); } @@ -107,12 +112,12 @@ public boolean execute(final PsiElement element, final ResolveState state) { } @Override - public T getHint(final Key hintClass) { + public T getHint(@Nonnull Key hintClass) { return null; } @Override - public void handleEvent(final Event event, final Object associated) { + public void handleEvent(Event event, Object associated) { } }, ResolveState.initial(), @@ -124,12 +129,13 @@ public void handleEvent(final Event event, final Object associated) { } @Override + @RequiredReadAction public JSFunction findFunctionByName(String functionName) { if (functionName == null) { return null; } - final Map name2FunctionMap = initFunctions(); - final Object o = name2FunctionMap.get(functionName); + Map name2FunctionMap = initFunctions(); + Object o = name2FunctionMap.get(functionName); if (o instanceof JSFunction function) { return function; } @@ -140,12 +146,13 @@ else if (o instanceof JSFunction[] functions) { } @Override + @RequiredReadAction public JSVariable[] getFields() { - final JSClassStub classStub = getStub(); + JSClassStub classStub = getStub(); final List vars = new ArrayList<>(3); if (classStub != null) { - for (JSVarStatement var : getStubChildrenByType(classStub, JSElementTypes.VAR_STATEMENT, count -> new JSVarStatement[count])) { + for (JSVarStatement var : getStubChildrenByType(classStub, JSElementTypes.VAR_STATEMENT, JSVarStatement[]::new)) { vars.addAll(Arrays.asList(var.getVariables())); } } @@ -153,7 +160,7 @@ public JSVariable[] getFields() { processDeclarations( new PsiScopeProcessor() { @Override - public boolean execute(final PsiElement element, final ResolveState state) { + public boolean execute(@Nonnull PsiElement element, ResolveState state) { if (element instanceof JSVariable variable) { vars.add(variable); } @@ -161,12 +168,12 @@ public boolean execute(final PsiElement element, final ResolveState state) { } @Override - public T getHint(final Key hintClass) { + public T getHint(@Nonnull Key hintClass) { return null; } @Override - public void handleEvent(final Event event, final Object associated) { + public void handleEvent(Event event, Object associated) { } }, ResolveState.initial(), @@ -178,13 +185,14 @@ public void handleEvent(final Event event, final Object associated) { } @Override + @RequiredReadAction public JSVariable findFieldByName(String name) { return initFields().get(name); } - private @Nonnull - Map initFields() { + @RequiredReadAction + private Map initFields() { Map name2FieldsMap = myName2FieldsMap; if (name2FieldsMap == null) { @@ -195,7 +203,7 @@ Map initFields() { name2FieldsMap = new HashMap<>(); for (JSVariable variable : getFields()) { - final String name = variable.getName(); + String name = variable.getName(); if (name != null) { name2FieldsMap.put(name, variable); @@ -208,9 +216,9 @@ Map initFields() { return name2FieldsMap; } - private @Nonnull - Map initFunctions() { + @RequiredReadAction + private Map initFunctions() { Map name2FunctionMap = myName2FunctionMap; if (name2FunctionMap == null) { @@ -221,10 +229,10 @@ Map initFunctions() { name2FunctionMap = new HashMap<>(); for (JSFunction function : getFunctions()) { - final String name = function.getName(); + String name = function.getName(); if (name != null) { - final Object o = name2FunctionMap.get(name); + Object o = name2FunctionMap.get(name); if (o == null) { name2FunctionMap.put(name, function); } @@ -244,19 +252,19 @@ else if (o instanceof JSFunction[] sameNameFunctions) { } @Override - public JSFunction findFunctionByNameAndKind(final String name, JSFunction.FunctionKind kind) { + @RequiredReadAction + public JSFunction findFunctionByNameAndKind(String name, JSFunction.FunctionKind kind) { if (name == null) { return null; } Map name2FunctionMap = initFunctions(); - final Object o = name2FunctionMap.get(name); + Object o = name2FunctionMap.get(name); - if (o instanceof JSFunction) { - final JSFunction function = (JSFunction)o; + if (o instanceof JSFunction function) { return function.getKind() == kind ? function : null; } - else if (o instanceof JSFunction[]) { - for (JSFunction fun : (JSFunction[])o) { + else if (o instanceof JSFunction[] functions) { + for (JSFunction fun : functions) { if (fun.getKind() == kind) { return fun; } @@ -272,26 +280,27 @@ public JSClass[] getSupers() { return superClasses.toArray(new JSClass[superClasses.size()]); } - private List getClassesFromReferenceList(final @Nullable JSReferenceList extendsList, @Nonnull IElementType type) { - final PsiElement element = extendsList != null ? extendsList : this; + private List getClassesFromReferenceList(@Nullable JSReferenceList extendsList, @Nonnull IElementType type) { + PsiElement element = extendsList != null ? extendsList : this; if (type == JSElementTypes.EXTENDS_LIST) { - return ourExtendsListCache.get(ourExtendsListCacheKey, this, extendsList).getValue(element); + return EXTENDS_LIST_CACHE.get(EXTENDS_LIST_CACHE_KEY, this, extendsList).getValue(element); } else { - return ourImplementsListCache.get(ourImplementsListCacheKey, this, extendsList).getValue(element); + return IMPLEMENTS_LIST_CACHE.get(IMPLEMENTS_LIST_CACHE_KEY, this, extendsList).getValue(element); } } @Override + @RequiredReadAction public boolean processDeclarations( - @Nonnull final PsiScopeProcessor processor, - @Nonnull final ResolveState substitutor, - final PsiElement lastParent, - @Nonnull final PsiElement place + @Nonnull PsiScopeProcessor processor, + @Nonnull ResolveState substitutor, + PsiElement lastParent, + @Nonnull PsiElement place ) { - final ResolveProcessor resolveProcessor = processor instanceof ResolveProcessor rProcessor ? rProcessor : null; - final boolean toProcessClass = resolveProcessor != null && resolveProcessor.isTypeContext(); + ResolveProcessor resolveProcessor = processor instanceof ResolveProcessor rProcessor ? rProcessor : null; + boolean toProcessClass = resolveProcessor != null && resolveProcessor.isTypeContext(); if (toProcessClass) { if (!processor.execute(this, null)) { @@ -304,7 +313,7 @@ public boolean processDeclarations( } processor.handleEvent(PsiScopeProcessor.Event.SET_DECLARATION_HOLDER, this); - final boolean toProcessMembers = resolveProcessor == null + boolean toProcessMembers = resolveProcessor == null || !resolveProcessor.isToSkipClassDeclarationOnce() && resolveProcessor.isToProcessMembers(); if (toProcessMembers) { if (!processMembers(processor, substitutor, lastParent, place)) { @@ -315,9 +324,9 @@ public boolean processDeclarations( resolveProcessor.setToSkipClassDeclarationsOnce(false); } - final boolean toProcessInHierarchy = processor instanceof ResolveProcessor rProcessor && rProcessor.isToProcessHierarchy(); + boolean toProcessInHierarchy = resolveProcessor != null && resolveProcessor.isToProcessHierarchy(); - if (!toProcessInHierarchy || ((ResolveProcessor)processor).checkVisited(getQualifiedName())) { + if (!toProcessInHierarchy || resolveProcessor.checkVisited(getQualifiedName())) { return true; } @@ -331,46 +340,44 @@ public boolean processDeclarations( } protected abstract boolean processMembers( - final PsiScopeProcessor processor, - final ResolveState substitutor, - final PsiElement lastParent, - final PsiElement place + PsiScopeProcessor processor, + ResolveState substitutor, + PsiElement lastParent, + PsiElement place ); @Override public JSClass[] getSuperClasses() { - final JSReferenceList extendsList = getExtendsList(); - final List supers = getClassesFromReferenceList(extendsList, JSElementTypes.EXTENDS_LIST); + JSReferenceList extendsList = getExtendsList(); + List supers = getClassesFromReferenceList(extendsList, JSElementTypes.EXTENDS_LIST); return supers.toArray(new JSClass[supers.size()]); } - public static PsiElement findClassFromNamespace(final String qname, PsiElement context) { - PsiElement realClazz = null; - final PsiElement clazz = JSResolveUtil.findClassByQName(qname, context); - - realClazz = clazz; - return realClazz; + @RequiredReadAction + public static PsiElement findClassFromNamespace(String qName, PsiElement context) { + return JSResolveUtil.findClassByQName(qName, context); } @Override public JSClass[] getImplementedInterfaces() { - final JSReferenceList implementsList = getImplementsList(); + JSReferenceList implementsList = getImplementsList(); if (implementsList == null) { return JSClass.EMPTY_ARRAY; } - final List classes = getClassesFromReferenceList(implementsList, JSElementTypes.IMPLEMENTS_LIST); + List classes = getClassesFromReferenceList(implementsList, JSElementTypes.IMPLEMENTS_LIST); return classes.toArray(new JSClass[classes.size()]); } private static class ExtendsClassesUserDataCache extends ClassesUserDataCache { @Override - protected List doCompute(final Object extendsList) { + @RequiredReadAction + protected List doCompute(Object extendsList) { if (extendsList instanceof JSClass jsClass) { - final ArrayList supers = new ArrayList<>(1); + ArrayList supers = new ArrayList<>(1); if (!"Object".equals(jsClass.getQualifiedName())) { - final PsiElement element = findClassFromNamespace("Object", jsClass); - if (element instanceof JSClass) { - supers.add((JSClass)element); + PsiElement element = findClassFromNamespace("Object", jsClass); + if (element instanceof JSClass elementClass) { + supers.add(elementClass); } } @@ -382,24 +389,25 @@ protected List doCompute(final Object extendsList) { private static class ClassesUserDataCache extends UserDataCache, Object>, JSClassBase, Object> { @Override - protected ParameterizedCachedValue, Object> compute(final JSClassBase jsClassBase, final Object p) { + protected ParameterizedCachedValue, Object> compute(JSClassBase jsClassBase, Object p) { return CachedValuesManager.getManager(jsClassBase.getProject()).createParameterizedCachedValue( list -> new CachedValueProvider.Result<>(doCompute(list), PsiModificationTracker.MODIFICATION_COUNT), false ); } - protected List doCompute(final Object object) { + @RequiredReadAction + protected List doCompute(Object object) { if (object instanceof JSClass) { return Collections.emptyList(); } - final ArrayList supers = new ArrayList<>(1); - final JSReferenceList extendsList = (JSReferenceList)object; + ArrayList supers = new ArrayList<>(1); + JSReferenceList extendsList = (JSReferenceList)object; for (String refText : extendsList.getReferenceTexts()) { refText = JSImportHandlingUtil.resolveTypeName(refText, extendsList.getParent()); - final PsiElement element = findClassFromNamespace(refText, extendsList.getParent()); + PsiElement element = findClassFromNamespace(refText, extendsList.getParent()); if (element instanceof JSClass jsClass) { supers.add(jsClass); } @@ -408,7 +416,7 @@ protected List doCompute(final Object object) { } } - private static E[] getStubChildrenByType(JSClassStub stub, final IElementType elementType, ArrayFactory f) { + private static E[] getStubChildrenByType(JSClassStub stub, IElementType elementType, ArrayFactory f) { assert JSElementTypes.INCLUDE_DIRECTIVE != elementType; ArrayList result = new ArrayList<>(Arrays.asList(stub.getChildrenByType(elementType, f))); @@ -417,18 +425,19 @@ private static E[] getStubChildrenByType(JSClassStub stub TokenSet filter = TokenSet.create(JSElementTypes.INCLUDE_DIRECTIVE, elementType); for (JSIncludeDirective include : includes) { PsiFile file = include.resolveFile(); - if (file instanceof JSFile) { - process(filter, (JSFile)file, result, visited); + if (file instanceof JSFile jsFile) { + process(filter, jsFile, result, visited); } } return result.toArray(f.create(result.size())); } + @SuppressWarnings("unchecked") private static void process( TokenSet filter, - final JSFile file, - final ArrayList result, - final Collection visited + JSFile file, + ArrayList result, + Collection visited ) { if (visited.contains(file)) { return; diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSClassExpressionImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSClassExpressionImpl.java index 156381da..e934fa45 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSClassExpressionImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSClassExpressionImpl.java @@ -12,7 +12,7 @@ /** * @author VISTALL - * @since 11/12/2021 + * @since 2021-12-11 */ public class JSClassExpressionImpl extends JSExpressionImpl implements JSClassExpression { public JSClassExpressionImpl(ASTNode node) { @@ -24,16 +24,16 @@ protected void accept(@Nonnull JSElementVisitor visitor) { visitor.visitJSExpression(this); } - @RequiredReadAction @Nonnull @Override + @RequiredReadAction public JSClass getClassElement() { return findNotNullChildByClass(JSClass.class); } - @RequiredReadAction @Nonnull @Override + @RequiredReadAction public JavaScriptType getType() { return new JavaScriptClassType(getClassElement()); } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSClassImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSClassImpl.java index 96012d61..5d86428d 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSClassImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSClassImpl.java @@ -16,41 +16,34 @@ package com.intellij.lang.javascript.psi.impl; -import jakarta.annotation.Nonnull; - -import consulo.language.psi.PsiElement; -import org.jetbrains.annotations.NonNls; import com.intellij.javascript.documentation.JSDocumentationUtils; -import consulo.language.ast.ASTNode; import com.intellij.lang.javascript.JSElementTypes; import com.intellij.lang.javascript.JSTokenTypes; -import com.intellij.lang.javascript.psi.JSAttributeList; -import com.intellij.lang.javascript.psi.JSClass; -import com.intellij.lang.javascript.psi.JSFile; -import com.intellij.lang.javascript.psi.JSFunction; -import com.intellij.lang.javascript.psi.JSReferenceExpression; -import com.intellij.lang.javascript.psi.JSReferenceList; -import consulo.javascript.impl.language.psi.JSStubElementType; -import com.intellij.lang.javascript.psi.JSSuppressionHolder; +import com.intellij.lang.javascript.psi.*; import com.intellij.lang.javascript.psi.resolve.JSImportHandlingUtil; import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; import com.intellij.lang.javascript.psi.stubs.JSClassStub; -import consulo.language.psi.resolve.ResolveState; +import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.access.RequiredWriteAction; +import consulo.javascript.impl.language.psi.JSStubElementType; +import consulo.javascript.lang.JavaScriptTokenSets; +import consulo.language.ast.ASTNode; import consulo.language.codeStyle.CodeStyleManager; +import consulo.language.psi.PsiElement; import consulo.language.psi.resolve.PsiScopeProcessor; +import consulo.language.psi.resolve.ResolveState; import consulo.language.util.IncorrectOperationException; -import consulo.annotation.access.RequiredReadAction; -import consulo.javascript.lang.JavaScriptTokenSets; +import jakarta.annotation.Nonnull; /** - * @by Maxim.Mossienko + * @author Maxim.Mossienko */ public class JSClassImpl extends JSClassBase implements JSSuppressionHolder { - public JSClassImpl(final ASTNode node) { + public JSClassImpl(ASTNode node) { super(node); } - public JSClassImpl(final JSClassStub stub, JSStubElementType elementType) { + public JSClassImpl(JSClassStub stub, JSStubElementType elementType) { super(stub, elementType); } @@ -69,7 +62,7 @@ public JSAttributeList getAttributeList() { @Override @RequiredReadAction public String getName() { - final JSClassStub classStub = getStub(); + JSClassStub classStub = getStub(); if (classStub != null) { return classStub.getName(); } @@ -85,14 +78,14 @@ else if (nameIdentifier != null) { } @Override - @RequiredReadAction - public PsiElement setName(@NonNls @Nonnull String newName) throws IncorrectOperationException { + @RequiredWriteAction + public PsiElement setName(@Nonnull String newName) throws IncorrectOperationException { newName = newName.substring(newName.lastIndexOf('.') + 1); - final String oldName = getName(); + String oldName = getName(); if (newName.equals(oldName)) { return this; } - final JSFunction constructor = findFunctionByName(oldName); + JSFunction constructor = findFunctionByName(oldName); PsiElement nameIdentifier = getNameIdentifier(); assert nameIdentifier != null; @@ -124,55 +117,43 @@ public JSReferenceList getImplementsList() { } @Override - public - @NonNls - String getQualifiedName() { - final JSClassStub classStub = getStub(); - if (classStub != null) { - return classStub.getQualifiedName(); - } - return JSPsiImplUtils.getQName(this); + @RequiredReadAction + public String getQualifiedName() { + JSClassStub classStub = getStub(); + return classStub != null ? classStub.getQualifiedName() : JSPsiImplUtils.getQName(this); } @Override + @RequiredReadAction public boolean isInterface() { - final JSClassStub classStub = getStub(); - if (classStub != null) { - return classStub.isInterface(); - } - return getNode().findChildByType(JSTokenTypes.INTERFACE_KEYWORD) != null; + JSClassStub classStub = getStub(); + return classStub != null ? classStub.isInterface() : getNode().findChildByType(JSTokenTypes.INTERFACE_KEYWORD) != null; } @Override + @RequiredWriteAction public void delete() throws IncorrectOperationException { getNode().getTreeParent().removeChild(getNode()); } @Override public boolean isDeprecated() { - final JSClassStub stub = getStub(); - if (stub != null) { - return stub.isDeprecated(); - } - return JSDocumentationUtils.calculateDeprecated(this); + JSClassStub stub = getStub(); + return stub != null ? stub.isDeprecated() : JSDocumentationUtils.calculateDeprecated(this); } @Override - protected boolean processMembers( - final PsiScopeProcessor processor, - final ResolveState substitutor, - final PsiElement lastParent, - final PsiElement place - ) { + protected boolean processMembers(PsiScopeProcessor processor, ResolveState substitutor, PsiElement lastParent, PsiElement place) { return JSResolveUtil.processDeclarationsInScope(this, processor, substitutor, lastParent, place); } @Override + @RequiredReadAction public boolean processDeclarations( - @Nonnull final PsiScopeProcessor processor, - @Nonnull final ResolveState substitutor, - final PsiElement lastParent, - @Nonnull final PsiElement place + @Nonnull PsiScopeProcessor processor, + @Nonnull ResolveState substitutor, + PsiElement lastParent, + @Nonnull PsiElement place ) { boolean b = super.processDeclarations(processor, substitutor, lastParent, place); @@ -183,7 +164,8 @@ public boolean processDeclarations( } @Override - public PsiElement addAfter(@Nonnull final PsiElement element, PsiElement anchor) throws IncorrectOperationException { + @RequiredWriteAction + public PsiElement addAfter(@Nonnull PsiElement element, PsiElement anchor) throws IncorrectOperationException { if (anchor == null) { ASTNode node = getNode().findChildByType(JSTokenTypes.RBRACE); if (node != null) { @@ -193,19 +175,21 @@ public PsiElement addAfter(@Nonnull final PsiElement element, PsiElement anchor) } } - final PsiElement psiElement = super.addAfter(element, anchor); + PsiElement psiElement = super.addAfter(element, anchor); CodeStyleManager.getInstance(getProject()).reformatNewlyAddedElement(getNode(), psiElement.getNode()); return psiElement; } @Override - public PsiElement addBefore(@Nonnull final PsiElement element, final PsiElement anchor) throws IncorrectOperationException { - final PsiElement superElement = super.addBefore(element, anchor); + @RequiredWriteAction + public PsiElement addBefore(@Nonnull PsiElement element, PsiElement anchor) throws IncorrectOperationException { + PsiElement superElement = super.addBefore(element, anchor); CodeStyleManager.getInstance(getProject()).reformatNewlyAddedElement(getNode(), superElement.getNode()); return superElement; } @Override + @RequiredReadAction public boolean isEquivalentTo(PsiElement another) { return super.isEquivalentTo(another) || (another instanceof JSFile file @@ -214,7 +198,9 @@ public boolean isEquivalentTo(PsiElement another) { || JSPsiImplUtils.isTheSameClass(another, this); } + @Nonnull @Override + @RequiredReadAction public PsiElement getNavigationElement() { return JSPsiImplUtils.findTopLevelNavigatableElement(this); } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSCommaExpressionImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSCommaExpressionImpl.java index cf2d32f2..cfd6fd3c 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSCommaExpressionImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSCommaExpressionImpl.java @@ -22,14 +22,11 @@ import jakarta.annotation.Nonnull; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 11:41:42 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public class JSCommaExpressionImpl extends JSBinaryExpressionImpl implements JSCommaExpression { - public JSCommaExpressionImpl(final ASTNode node) { + public JSCommaExpressionImpl(ASTNode node) { super(node); } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSConditionalExpressionImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSConditionalExpressionImpl.java index 9ed843b9..aba3db4e 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSConditionalExpressionImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSConditionalExpressionImpl.java @@ -16,6 +16,7 @@ package com.intellij.lang.javascript.psi.impl; +import consulo.annotation.access.RequiredReadAction; import consulo.language.ast.ASTNode; import com.intellij.lang.javascript.JSElementTypes; import com.intellij.lang.javascript.JSTokenTypes; @@ -27,22 +28,20 @@ import jakarta.annotation.Nonnull; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 11:47:35 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public class JSConditionalExpressionImpl extends JSExpressionImpl implements JSConditionalExpression { - public JSConditionalExpressionImpl(final ASTNode node) { + public JSConditionalExpressionImpl(ASTNode node) { super(node); } @Override + @RequiredReadAction public JSExpression getCondition() { ASTNode child = getNode().getFirstChildNode(); while (child != null) { - final IElementType type = child.getElementType(); + IElementType type = child.getElementType(); if (type == JSTokenTypes.QUEST) { return null; } @@ -55,11 +54,12 @@ public JSExpression getCondition() { } @Override + @RequiredReadAction public JSExpression getThen() { boolean questPassed = false; ASTNode child = getNode().getFirstChildNode(); while (child != null) { - final IElementType type = child.getElementType(); + IElementType type = child.getElementType(); if (type == JSTokenTypes.QUEST) { questPassed = true; } @@ -76,12 +76,13 @@ public JSExpression getThen() { } @Override + @RequiredReadAction public JSExpression getElse() { boolean questPassed = false; boolean colonPassed = false; ASTNode child = getNode().getFirstChildNode(); while (child != null) { - final IElementType type = child.getElementType(); + IElementType type = child.getElementType(); if (type == JSTokenTypes.QUEST) { questPassed = true; } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSContinueStatementImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSContinueStatementImpl.java index 5c73e04a..72e9f1da 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSContinueStatementImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSContinueStatementImpl.java @@ -17,24 +17,23 @@ package com.intellij.lang.javascript.psi.impl; import com.intellij.lang.javascript.psi.*; +import consulo.annotation.access.RequiredReadAction; import consulo.language.ast.ASTNode; import consulo.language.psi.util.PsiTreeUtil; import jakarta.annotation.Nonnull; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 9:52:04 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public class JSContinueStatementImpl extends JSStatementWithLabelReferenceImpl implements JSContinueStatement { - public JSContinueStatementImpl(final ASTNode node) { + public JSContinueStatementImpl(ASTNode node) { super(node); } @Override + @RequiredReadAction public JSStatement getStatementToContinue() { String label = getLabel(); if (label == null) { diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDefinitionExpressionImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDefinitionExpressionImpl.java index 5b221561..1ad69372 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDefinitionExpressionImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDefinitionExpressionImpl.java @@ -17,6 +17,8 @@ package com.intellij.lang.javascript.psi.impl; import com.intellij.lang.javascript.psi.*; +import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.access.RequiredWriteAction; import consulo.language.psi.PsiElement; import consulo.language.psi.resolve.ResolveState; import consulo.language.psi.resolve.PsiScopeProcessor; @@ -26,14 +28,11 @@ import jakarta.annotation.Nonnull; /** - * Created by IntelliJ IDEA. - * User: maxim.mossienko - * Date: Dec 14, 2005 - * Time: 6:40:04 PM - * To change this template use File | Settings | File Templates. + * @author maxim.mossienko + * @since 2005-12-14 */ public class JSDefinitionExpressionImpl extends JSExpressionImpl implements JSDefinitionExpression { - public JSDefinitionExpressionImpl(final ASTNode node) { + public JSDefinitionExpressionImpl(ASTNode node) { super(node); } @@ -43,6 +42,7 @@ public JSExpression getExpression() { } @Override + @RequiredReadAction public String getName() { return getExpression() instanceof JSReferenceExpression referenceExpression ? referenceExpression.getReferencedName() @@ -50,6 +50,7 @@ public String getName() { } @Override + @RequiredWriteAction public PsiElement setName(@Nonnull String name) throws IncorrectOperationException { return getExpression() instanceof JSReferenceExpressionImpl referenceExpression ? referenceExpression.handleElementRenameInternal(name) @@ -68,27 +69,26 @@ public boolean processDeclarations( PsiElement lastParent, @Nonnull PsiElement place ) { - return lastParent == null ? processor.execute(this, state) : true; + return lastParent != null || processor.execute(this, state); } @Override + @RequiredWriteAction public void delete() throws IncorrectOperationException { - final PsiElement parent = getParent(); + if (getParent() instanceof JSAssignmentExpression assignment) { + PsiElement assignmentParent = assignment.getParent(); - if (parent instanceof JSAssignmentExpression assignment) { - final PsiElement grandParent = parent.getParent(); - - if (grandParent instanceof JSStatement) { - grandParent.delete(); + if (assignmentParent instanceof JSStatement statement) { + statement.delete(); return; } - else if (grandParent instanceof JSBinaryExpression binaryExpression) { + else if (assignmentParent instanceof JSBinaryExpression binaryExpression) { binaryExpression.getROperand().replace(assignment.getROperand()); return; } - else if (grandParent instanceof JSVariable variable) { - final JSExpression initializerExpression = variable.getInitializer(); - initializerExpression.replace(assignment.getROperand()); + else if (assignmentParent instanceof JSVariable variable) { + JSExpression initializer = variable.getInitializer(); + initializer.replace(assignment.getROperand()); return; } } @@ -96,6 +96,7 @@ else if (grandParent instanceof JSVariable variable) { } @Override + @RequiredReadAction public PsiElement getNameIdentifier() { return null; } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDoWhileStatementImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDoWhileStatementImpl.java index ba80efb1..e1bbd0a5 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDoWhileStatementImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDoWhileStatementImpl.java @@ -20,18 +20,16 @@ import com.intellij.lang.javascript.psi.JSElementVisitor; import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.lang.javascript.psi.JSStatement; +import consulo.annotation.access.RequiredReadAction; import consulo.language.ast.ASTNode; import jakarta.annotation.Nonnull; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 10:15:13 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public class JSDoWhileStatementImpl extends JSStatementImpl implements JSDoWhileStatement { - public JSDoWhileStatementImpl(final ASTNode node) { + public JSDoWhileStatementImpl(ASTNode node) { super(node); } @@ -41,6 +39,7 @@ public JSExpression getCondition() { } @Override + @RequiredReadAction public JSStatement getBody() { return findChildByClass(JSStatement.class); } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDocCommentImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDocCommentImpl.java index 50aa04f7..865d2b80 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDocCommentImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDocCommentImpl.java @@ -20,17 +20,18 @@ import com.intellij.lang.javascript.psi.JSDocComment; import com.intellij.lang.javascript.psi.JSDocTag; import com.intellij.lang.javascript.psi.JSElementVisitor; +import consulo.annotation.access.RequiredReadAction; import consulo.language.ast.IElementType; -import consulo.language.psi.PsiElement; import consulo.language.ast.ASTNode; import jakarta.annotation.Nonnull; public class JSDocCommentImpl extends JSElementImpl implements JSDocComment { - public JSDocCommentImpl(final ASTNode node) { + public JSDocCommentImpl(ASTNode node) { super(node); } @Override + @RequiredReadAction public IElementType getTokenType() { return getNode().getElementType(); } @@ -41,11 +42,10 @@ protected void accept(@Nonnull JSElementVisitor visitor) { } @Override + @RequiredReadAction public JSDocTag[] getTags() { - final PsiElement firstChild = getFirstChild(); - if (firstChild instanceof JSDocComment docComment) { - return docComment.getTags(); - } - return findChildrenByType(JSDocTokenTypes.DOC_TAG, JSDocTag.class); + return getFirstChild() instanceof JSDocComment docComment + ? docComment.getTags() + : findChildrenByType(JSDocTokenTypes.DOC_TAG, JSDocTag.class); } } \ No newline at end of file diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDocTagImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDocTagImpl.java index e4570ed9..44acae55 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDocTagImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDocTagImpl.java @@ -19,6 +19,8 @@ import com.intellij.lang.javascript.JSDocTokenTypes; import com.intellij.lang.javascript.psi.*; import com.intellij.lang.javascript.psi.util.JSLookupUtil; +import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.access.RequiredWriteAction; import consulo.document.util.TextRange; import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.ast.ASTNode; @@ -29,24 +31,25 @@ import consulo.localize.LocalizeValue; import consulo.util.collection.ArrayUtil; import jakarta.annotation.Nonnull; -import org.jetbrains.annotations.NonNls; public class JSDocTagImpl extends JSElementImpl implements JSDocTag { private volatile PsiReference[] myRefs; private volatile long myModificationCount = -1; - public JSDocTagImpl(final ASTNode node) { + public JSDocTagImpl(ASTNode node) { super(node); } @Override + @RequiredReadAction public String getName() { - final PsiElement element = findChildByType(JSDocTokenTypes.DOC_TAG_NAME); + PsiElement element = findChildByType(JSDocTokenTypes.DOC_TAG_NAME); return element != null ? element.getText().substring(1) : null; } @Override - public PsiElement setName(@NonNls @Nonnull final String name) throws IncorrectOperationException { + @RequiredWriteAction + public PsiElement setName(@Nonnull String name) throws IncorrectOperationException { throw new IncorrectOperationException(); } @@ -62,15 +65,16 @@ public JSDocTagValue getValue() { @Nonnull @Override + @RequiredReadAction public PsiReference[] getReferences() { - final long count = getManager().getModificationTracker().getModificationCount(); + long count = getManager().getModificationTracker().getModificationCount(); if (count != myModificationCount) { - final @NonNls String name = getName(); + String name = getName(); PsiReference[] result = PsiReference.EMPTY_ARRAY; if ("param".equals(name)) { - final PsiElement data = findChildByType(JSDocTokenTypes.DOC_COMMENT_DATA); + PsiElement data = findChildByType(JSDocTokenTypes.DOC_COMMENT_DATA); if (data != null) { result = new PsiReference[]{new ParamReference(this)}; } @@ -87,18 +91,18 @@ private static class ParamReference implements PsiReference, EmptyResolveMessage private PsiElement myJsDocTagValue; private TextRange myRange; - public ParamReference(final JSDocTagImpl elt) { + public ParamReference(JSDocTagImpl elt) { reset(elt); } - private void reset(final JSDocTagImpl elt) { + private void reset(JSDocTagImpl elt) { myJsDocTagValue = elt.findChildByType(JSDocTokenTypes.DOC_COMMENT_DATA); int offsetInParent = myJsDocTagValue.getStartOffsetInParent(); int textLength; if (myJsDocTagValue.textContains('[')) { - final String text = myJsDocTagValue.getText(); - final int at = text.indexOf('['); + String text = myJsDocTagValue.getText(); + int at = text.indexOf('['); offsetInParent += at + 1; // @param [name] | //@param[name="something"] | [obj.prop2(='somestring')?] @@ -122,52 +126,59 @@ private void reset(final JSDocTagImpl elt) { else if (myJsDocTagValue.textContains('=')) { textLength = myJsDocTagValue.getText().indexOf('='); // @param name="" } + else if (myJsDocTagValue.textContains('.')) { //@param userInfo.email + textLength = myJsDocTagValue.getText().indexOf('.'); + } else { - if (myJsDocTagValue.textContains('.')) { //@param userInfo.email - textLength = myJsDocTagValue.getText().indexOf('.'); - } - else { - textLength = myJsDocTagValue.getTextLength(); - } + textLength = myJsDocTagValue.getTextLength(); } myRange = new TextRange(offsetInParent, offsetInParent + textLength); } @Override + @RequiredReadAction public PsiElement getElement() { return myJsDocTagValue.getParent(); } + @Nonnull @Override + @RequiredReadAction public TextRange getRangeInElement() { return myRange; } + @Nonnull @Override + @RequiredReadAction public String getCanonicalText() { - final int offsetInText = myRange.getStartOffset() - myJsDocTagValue.getStartOffsetInParent(); + int offsetInText = myRange.getStartOffset() - myJsDocTagValue.getStartOffsetInParent(); return myJsDocTagValue.getText().substring(offsetInText, offsetInText + myRange.getLength()); } @Override - public PsiElement handleElementRename(final String newElementName) throws IncorrectOperationException { + @RequiredWriteAction + public PsiElement handleElementRename(String newElementName) throws IncorrectOperationException { JSDocTag jsDocTag = (JSDocTag)myJsDocTagValue.getParent(); - final ElementManipulator manipulator = ElementManipulators.getManipulator(jsDocTag); + ElementManipulator manipulator = ElementManipulators.getManipulator(jsDocTag); jsDocTag = manipulator.handleContentChange(jsDocTag, myRange, newElementName); reset((JSDocTagImpl)jsDocTag); return myJsDocTagValue; } @Override - public PsiElement bindToElement(@Nonnull final PsiElement element) throws IncorrectOperationException { + @RequiredWriteAction + public PsiElement bindToElement(@Nonnull PsiElement element) throws IncorrectOperationException { return null; } @Override - public boolean isReferenceTo(final PsiElement element) { + @RequiredReadAction + public boolean isReferenceTo(PsiElement element) { return element.isEquivalentTo(resolve()); } + @RequiredReadAction private static JSParameterList findParameterList(PsiElement elt) { if (elt == null) { return null; @@ -176,33 +187,31 @@ private static JSParameterList findParameterList(PsiElement elt) { if (psiComment == null) { return null; } - final PsiElement parent = psiComment.getParent(); - if (parent instanceof PsiComment) { - psiComment = (PsiComment)parent; + PsiElement parent = psiComment.getParent(); + if (parent instanceof PsiComment comment) { + psiComment = comment; } PsiElement next = psiComment.getNextSibling(); - if (next instanceof PsiWhiteSpace) { - next = next.getNextSibling(); + if (next instanceof PsiWhiteSpace whiteSpace) { + next = whiteSpace.getNextSibling(); } - if (next instanceof PsiComment) { - next = next.getNextSibling(); - if (next instanceof PsiWhiteSpace) { - next = next.getNextSibling(); + if (next instanceof PsiComment comment) { + next = comment.getNextSibling(); + if (next instanceof PsiWhiteSpace whiteSpace) { + next = whiteSpace.getNextSibling(); } } if (next instanceof JSExpressionStatement expressionStatement) { - final JSExpression expression = expressionStatement.getExpression(); - - if (expression instanceof JSAssignmentExpression assignment) { + if (expressionStatement.getExpression() instanceof JSAssignmentExpression assignment) { JSExpression roperand = assignment.getROperand(); if (roperand instanceof JSNewExpression newExpression) { roperand = newExpression.getMethodExpression(); } - if (roperand instanceof JSFunctionExpression) { - next = roperand; + if (roperand instanceof JSFunctionExpression functionExpr) { + next = functionExpr; } } } @@ -211,23 +220,16 @@ else if (next instanceof JSProperty property) { } else if (next instanceof JSVarStatement varStatement) { JSVariable[] variables = varStatement.getVariables(); - if (variables.length > 0) { - JSExpression initializer = variables[0].getInitializer(); - if (initializer instanceof JSFunctionExpression) { - next = initializer; - } + if (variables.length > 0 && variables[0].getInitializer() instanceof JSFunctionExpression functionExpr) { + next = functionExpr; } } else if (next != null) { - if (next instanceof JSVariable variable) { - JSExpression expression = variable.getInitializer(); - if (expression instanceof JSFunctionExpression) { - next = expression; - } + if (next instanceof JSVariable variable && variable.getInitializer() instanceof JSFunctionExpression functionExpr) { + next = functionExpr; } - PsiElement nextParent = next.getParent(); - if (nextParent instanceof JSFunction) { - next = nextParent; + if (next.getParent() instanceof JSFunction function) { + next = function; } } if (next instanceof JSFunction function) { @@ -238,11 +240,12 @@ else if (next != null) { } @Override + @RequiredReadAction public PsiElement resolve() { - final JSParameterList parameterList = findParameterList(getElement()); + JSParameterList parameterList = findParameterList(getElement()); if (parameterList != null) { - final String name = getCanonicalText(); + String name = getCanonicalText(); for (JSParameter param : parameterList.getParameters()) { if (name.equals(param.getName())) { return param; @@ -253,14 +256,16 @@ public PsiElement resolve() { return null; } + @Nonnull @Override + @RequiredReadAction public Object[] getVariants() { - final PsiElement elt = getElement(); - final JSParameterList parameterList = findParameterList(PsiUtilBase.getOriginalElement(elt, elt.getClass())); + PsiElement elt = getElement(); + JSParameterList parameterList = findParameterList(PsiUtilBase.getOriginalElement(elt, elt.getClass())); if (parameterList != null) { - final JSParameter[] parameters = parameterList.getParameters(); - final Object[] result = new Object[parameters.length]; + JSParameter[] parameters = parameterList.getParameters(); + Object[] result = new Object[parameters.length]; for (int i = 0; i < parameters.length; ++i) { result[i] = JSLookupUtil.createLookupItem(parameters[i], parameters[i].getName(), JSLookupUtil.LookupPriority.HIGHEST); diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDocTagValueImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDocTagValueImpl.java index b8059ac3..23eae001 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDocTagValueImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSDocTagValueImpl.java @@ -19,34 +19,34 @@ import com.intellij.lang.javascript.psi.JSDocTagValue; import com.intellij.lang.javascript.psi.JSElementVisitor; import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; +import consulo.annotation.access.RequiredReadAction; import consulo.language.ast.ASTNode; import consulo.language.psi.PsiNamedElement; import consulo.language.psi.PsiReference; import consulo.util.collection.ArrayUtil; import consulo.util.lang.text.StringTokenizer; -import org.jetbrains.annotations.NonNls; - import jakarta.annotation.Nonnull; public class JSDocTagValueImpl extends JSElementImpl implements JSDocTagValue { private volatile PsiReference[] myRefs; private volatile long myModificationCount = -1; - public JSDocTagValueImpl(final ASTNode node) { + public JSDocTagValueImpl(ASTNode node) { super(node); } @Nonnull @Override + @RequiredReadAction public PsiReference[] getReferences() { - final long count = getManager().getModificationTracker().getModificationCount(); + long count = getManager().getModificationTracker().getModificationCount(); if (count != myModificationCount) { - final @NonNls String name = ((PsiNamedElement)getParent()).getName(); + String name = ((PsiNamedElement)getParent()).getName(); PsiReference[] result = PsiReference.EMPTY_ARRAY; if (name != null) { - @NonNls String text = getText(); + String text = getText(); boolean soft = false; @@ -81,9 +81,9 @@ else if ("returns".equals(name)) { text = text.substring(0, text.length() - 1); } - final StringTokenizer tokenizer = new StringTokenizer(text, JSResolveUtil.COMMENT_DELIMITERS); + StringTokenizer tokenizer = new StringTokenizer(text, JSResolveUtil.COMMENT_DELIMITERS); while (tokenizer.hasMoreElements()) { - @NonNls String textFragment = tokenizer.nextElement(); + String textFragment = tokenizer.nextElement(); int localOffset = offset + tokenizer.getCurrentPosition() - textFragment.length(); if (textFragment.endsWith("[]")) { textFragment = textFragment.substring(0, textFragment.length() - 2); @@ -94,7 +94,7 @@ else if ("returns".equals(name)) { } if (!"void".equals(textFragment)) { - final JSReferenceSet set = + JSReferenceSet set = new JSReferenceSet(this, textFragment, localOffset, soft, false, false); result = ArrayUtil.mergeArrays(result, set.getReferences(), PsiReference.ARRAY_FACTORY); } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSElementImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSElementImpl.java index bc1df5a3..b12fe804 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSElementImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSElementImpl.java @@ -21,10 +21,10 @@ /** * @author max - * @since Jan 30, 2005 8:23:10 PM + * @since 2005-01-30 */ public abstract class JSElementImpl extends JSStubElementImpl { - public JSElementImpl(final ASTNode node) { + public JSElementImpl(ASTNode node) { super(node); } } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSEmbeddedContentImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSEmbeddedContentImpl.java index b93ba72a..75f03772 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSEmbeddedContentImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSEmbeddedContentImpl.java @@ -19,6 +19,8 @@ import com.intellij.lang.javascript.JSElementTypes; import com.intellij.lang.javascript.psi.JSElementVisitor; import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; +import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.access.RequiredWriteAction; import consulo.language.ast.ASTNode; import consulo.language.ast.IElementType; import consulo.language.psi.PsiElement; @@ -32,14 +34,11 @@ import jakarta.annotation.Nonnull; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 31, 2005 - * Time: 12:02:38 AM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-31 */ public class JSEmbeddedContentImpl extends JSElementImpl implements XmlTagChild { - public JSEmbeddedContentImpl(final ASTNode node) { + public JSEmbeddedContentImpl(ASTNode node) { super(node); } @@ -50,19 +49,21 @@ protected void accept(@Nonnull JSElementVisitor visitor) { @Override public XmlTag getParentTag() { - final PsiElement parent = getParent(); + PsiElement parent = getParent(); return parent instanceof XmlTag parentTag ? parentTag : null; } @Override + @RequiredReadAction public XmlTagChild getNextSiblingInTag() { PsiElement nextSibling = getNextSibling(); return nextSibling instanceof XmlTagChild tagChild ? tagChild : null; } @Override + @RequiredReadAction public XmlTagChild getPrevSiblingInTag() { - final PsiElement prevSibling = getPrevSibling(); + PsiElement prevSibling = getPrevSibling(); return prevSibling instanceof XmlTagChild tagChild ? tagChild : null; } @@ -83,9 +84,10 @@ public boolean processDeclarations( } @Override + @RequiredReadAction public String toString() { String s = super.toString(); - final IElementType type = getNode().getElementType(); + IElementType type = getNode().getElementType(); if (type != JSElementTypes.EMBEDDED_CONTENT) { s += ":" + type; } @@ -93,8 +95,9 @@ public String toString() { } @Override + @RequiredWriteAction public void delete() throws IncorrectOperationException { - final ASTNode astNode = getNode(); + ASTNode astNode = getNode(); astNode.getTreeParent().removeChild(astNode); } } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSEmptyStatementImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSEmptyStatementImpl.java index a0685b35..3e1691b4 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSEmptyStatementImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSEmptyStatementImpl.java @@ -22,14 +22,11 @@ import jakarta.annotation.Nonnull; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 9:48:05 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public class JSEmptyStatementImpl extends JSStatementImpl implements JSEmptyStatement { - public JSEmptyStatementImpl(final ASTNode node) { + public JSEmptyStatementImpl(ASTNode node) { super(node); } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSExpressionCodeFragmentImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSExpressionCodeFragmentImpl.java index 849c3d82..d6b753f1 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSExpressionCodeFragmentImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSExpressionCodeFragmentImpl.java @@ -17,6 +17,7 @@ package com.intellij.lang.javascript.psi.impl; import com.intellij.lang.javascript.psi.JSExpressionCodeFragment; +import consulo.annotation.access.RequiredReadAction; import consulo.language.file.FileTypeManager; import consulo.language.file.FileViewProvider; import consulo.language.file.light.LightVirtualFile; @@ -49,8 +50,9 @@ public JSExpressionCodeFragmentImpl(Project project, @NonNls String name, CharSe //todo[nik] extract these methods from PsiCodeFragmentImpl? @Override + @RequiredReadAction protected JSExpressionCodeFragmentImpl clone() { - final JSExpressionCodeFragmentImpl clone = (JSExpressionCodeFragmentImpl)cloneImpl((FileElement)calcTreeElement().clone()); + JSExpressionCodeFragmentImpl clone = (JSExpressionCodeFragmentImpl)cloneImpl((FileElement)calcTreeElement().clone()); clone.myPhysical = false; clone.myOriginalFile = this; SingleRootFileViewProvider cloneViewProvider = @@ -73,10 +75,7 @@ public FileViewProvider getViewProvider() { @Override public boolean isValid() { - if (!super.isValid() || myContext != null && !myContext.isValid()) { - return false; - } - return true; + return super.isValid() && myContext == null || myContext.isValid(); } @Override diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSExpressionImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSExpressionImpl.java index 733a59da..4f50f921 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSExpressionImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSExpressionImpl.java @@ -18,6 +18,7 @@ import com.intellij.lang.javascript.psi.JSExpression; import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.access.RequiredWriteAction; import consulo.javascript.language.psi.JavaScriptType; import consulo.language.ast.ASTNode; import jakarta.annotation.Nonnull; @@ -26,18 +27,20 @@ * @author ven */ public abstract class JSExpressionImpl extends JSElementImpl implements JSExpression { - public JSExpressionImpl(final ASTNode node) { + public JSExpressionImpl(ASTNode node) { super(node); } - @RequiredReadAction @Nonnull @Override + @RequiredReadAction public JavaScriptType getType() { return JavaScriptType.UNKNOWN; } + @Nonnull @Override + @RequiredWriteAction public JSExpression replace(JSExpression newExpr) { return JSChangeUtil.replaceExpression(this, newExpr); } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSExpressionStatementImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSExpressionStatementImpl.java index 54af43bc..28125ffd 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSExpressionStatementImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSExpressionStatementImpl.java @@ -31,14 +31,11 @@ import jakarta.annotation.Nonnull; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 9:26:39 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public class JSExpressionStatementImpl extends JSStatementImpl implements JSExpressionStatement { - public JSExpressionStatementImpl(final ASTNode node) { + public JSExpressionStatementImpl(ASTNode node) { super(node); } @@ -54,14 +51,15 @@ protected void accept(@Nonnull JSElementVisitor visitor) { } @Override + @RequiredReadAction public boolean processDeclarations( @Nonnull PsiScopeProcessor processor, - @Nonnull ResolveState state, - PsiElement lastParent, + @Nonnull ResolveState state, + PsiElement lastParent, @Nonnull PsiElement place ) { if (lastParent == null) { - final JSExpression expression = getExpression(); + JSExpression expression = getExpression(); if (expression != null) { return expression.processDeclarations(processor, state, lastParent, place); } @@ -74,6 +72,7 @@ public boolean processDeclarations( public ItemPresentation getPresentation() { return new ItemPresentation() { @Override + @RequiredReadAction public String getPresentableText() { return getText(); } @@ -84,6 +83,7 @@ public String getLocationString() { } @Override + @RequiredReadAction public Image getIcon() { return IconDescriptorUpdaters.getIcon(JSExpressionStatementImpl.this, 0); } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSFileImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSFileImpl.java index 36890bcd..92837d37 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSFileImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSFileImpl.java @@ -18,6 +18,7 @@ import java.util.List; +import consulo.annotation.access.RequiredReadAction; import jakarta.annotation.Nonnull; import com.intellij.lang.javascript.JSElementTypes; @@ -40,11 +41,8 @@ import jakarta.annotation.Nullable; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 28, 2005 - * Time: 12:25:04 AM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-28 */ public class JSFileImpl extends PsiFileBase implements JSFile { public JSFileImpl(FileViewProvider fileViewProvider) { @@ -52,14 +50,16 @@ public JSFileImpl(FileViewProvider fileViewProvider) { } @Override + @RequiredReadAction public String toString() { return "JSFile:" + getName(); } @Override + @RequiredReadAction public boolean processDeclarations( - @Nonnull final PsiScopeProcessor processor, - @Nonnull final ResolveState state, + @Nonnull PsiScopeProcessor processor, + @Nonnull ResolveState state, @Nullable PsiElement lastParent, @Nonnull PsiElement place ) { @@ -74,9 +74,9 @@ public boolean processDeclarations( result = JSImportHandlingUtil.tryResolveImports(processor, this, place); } - if (result && - JSResolveUtil.isNewResolveAndCompletion(this) && - (JSResolveUtil.shouldProcessImports(place, processor))) { + if (result + && JSResolveUtil.isNewResolveAndCompletion(this) + && JSResolveUtil.shouldProcessImports(place, processor)) { result = JSResolveUtil.processGlobalThings(processor, state, place, this); } } @@ -143,14 +143,15 @@ public PsiElement add(@Nonnull PsiElement element) throws IncorrectOperationExce } @Override - public StubBasedPsiElement findStubbedElementAtOffset(final int offset, final Class clazz) { - final StubElement stub = getStub(); + @RequiredReadAction + public StubBasedPsiElement findStubbedElementAtOffset(int offset, Class clazz) { + StubElement stub = getStub(); if (stub != null) { - final List children = stub.getChildrenStubs(); + List children = stub.getChildrenStubs(); for (StubElement child : children) { - final PsiElement psi = child.getPsi(); + PsiElement psi = child.getPsi(); if (psi.getTextRange().getStartOffset() == offset && clazz.isInstance(psi)) { return (StubBasedPsiElement)psi; @@ -162,7 +163,7 @@ public StubBasedPsiElement findStubbedElementAtOffset(final int offset, final Cl @Override public JSSourceElement[] getStatements() { - final StubElement stub = getStub(); + StubElement stub = getStub(); if (stub != null) { return (JSSourceElement[])stub.getChildrenByType(JSElementTypes.SOURCE_ELEMENTS, JSSourceElement.EMPTY_ARRAY); } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSForInStatementImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSForInStatementImpl.java index b3cb69b1..809fcb4f 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSForInStatementImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSForInStatementImpl.java @@ -28,15 +28,13 @@ import jakarta.annotation.Nonnull; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 11:20:30 PM + * @author max + * @since 2005-01-30 */ public class JSForInStatementImpl extends JSStatementImpl implements JSForInStatement { - private static final TokenSet ourSeparatorElementType = TokenSet.create(JSTokenTypes.IN_KEYWORD, JSTokenTypes.OF_KEYWORD); + private static final TokenSet SEPARATOR_ELEMENT_TYPE = TokenSet.create(JSTokenTypes.IN_KEYWORD, JSTokenTypes.OF_KEYWORD); - public JSForInStatementImpl(final ASTNode node) { + public JSForInStatementImpl(ASTNode node) { super(node); } @@ -46,14 +44,15 @@ public JSVarStatement getDeclarationStatement() { } @Override + @RequiredReadAction public JSExpression getVariableExpression() { ASTNode child = getNode().getFirstChildNode(); while (child != null) { - if (ourSeparatorElementType.contains(child.getElementType())) { + if (SEPARATOR_ELEMENT_TYPE.contains(child.getElementType())) { return null; } - if (child.getPsi() instanceof JSExpression) { - return (JSExpression)child.getPsi(); + if (child.getPsi() instanceof JSExpression expression) { + return expression; } child = child.getTreeNext(); } @@ -61,15 +60,16 @@ public JSExpression getVariableExpression() { } @Override + @RequiredReadAction public JSExpression getCollectionExpression() { ASTNode child = getNode().getFirstChildNode(); boolean inPassed = false; while (child != null) { - if (ourSeparatorElementType.contains(child.getElementType())) { + if (SEPARATOR_ELEMENT_TYPE.contains(child.getElementType())) { inPassed = true; } - if (inPassed && child.getPsi() instanceof JSExpression) { - return (JSExpression)child.getPsi(); + if (inPassed && child.getPsi() instanceof JSExpression expression) { + return expression; } child = child.getTreeNext(); } @@ -84,6 +84,7 @@ public boolean isForEach() { } @Override + @RequiredReadAction public JSStatement getBody() { ASTNode child = getNode().getFirstChildNode(); boolean passedRParen = false; @@ -108,12 +109,12 @@ public boolean processDeclarations( @Nonnull PsiElement place ) { if (lastParent != null) { - final JSVarStatement statement = getDeclarationStatement(); + JSVarStatement statement = getDeclarationStatement(); if (statement != null) { return statement.processDeclarations(processor, state, lastParent, place); } else { - final JSExpression expression = getVariableExpression(); + JSExpression expression = getVariableExpression(); if (expression != null && !processor.execute(expression, null)) { return false; } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSForStatementImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSForStatementImpl.java index b4aa54e0..09454ef8 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSForStatementImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSForStatementImpl.java @@ -16,6 +16,7 @@ package com.intellij.lang.javascript.psi.impl; +import consulo.annotation.access.RequiredReadAction; import consulo.language.ast.ASTNode; import com.intellij.lang.javascript.JSElementTypes; import com.intellij.lang.javascript.JSTokenTypes; @@ -30,17 +31,19 @@ * @author max */ public class JSForStatementImpl extends JSStatementImpl implements JSForStatement { - public JSForStatementImpl(final ASTNode node) { + public JSForStatementImpl(ASTNode node) { super(node); } @Override + @RequiredReadAction public JSVarStatement getVarDeclaration() { - final ASTNode node = getNode().findChildByType(JSElementTypes.VAR_STATEMENT); + ASTNode node = getNode().findChildByType(JSElementTypes.VAR_STATEMENT); return (JSVarStatement)(node != null ? node.getPsi() : null); } @Override + @RequiredReadAction public JSExpression getInitialization() { ASTNode child = getNode().getFirstChildNode(); while (child != null) { @@ -56,6 +59,7 @@ public JSExpression getInitialization() { } @Override + @RequiredReadAction public JSExpression getCondition() { ASTNode child = getNode().getFirstChildNode(); int semicolonCount = 0; @@ -75,6 +79,7 @@ else if (semicolonCount == 1 && JSElementTypes.EXPRESSIONS.contains(child.getEle } @Override + @RequiredReadAction public JSExpression getUpdate() { ASTNode child = getNode().getFirstChildNode(); int semicolonCount = 0; @@ -91,6 +96,7 @@ else if (semicolonCount == 2 && JSElementTypes.EXPRESSIONS.contains(child.getEle } @Override + @RequiredReadAction public JSStatement getBody() { ASTNode child = getNode().getFirstChildNode(); boolean passedRParen = false; @@ -108,6 +114,7 @@ else if (passedRParen && child.getPsi() instanceof JSStatement statement) { } @Override + @RequiredReadAction public boolean processDeclarations( @Nonnull PsiScopeProcessor processor, @Nonnull ResolveState state, @@ -115,12 +122,12 @@ public boolean processDeclarations( @Nonnull PsiElement place ) { if (lastParent != null) { - final JSVarStatement statement = getVarDeclaration(); + JSVarStatement statement = getVarDeclaration(); if (statement != null) { return statement.processDeclarations(processor, state, lastParent, place); } else { - final JSExpression initialization = getInitialization(); + JSExpression initialization = getInitialization(); if (initialization != null) { return initialization.processDeclarations(processor, state, null, place); } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSFunctionBaseImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSFunctionBaseImpl.java index e6115231..6cf4fcb4 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSFunctionBaseImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSFunctionBaseImpl.java @@ -23,6 +23,7 @@ import com.intellij.lang.javascript.psi.resolve.JSImportHandlingUtil; import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; import com.intellij.lang.javascript.psi.stubs.JSFunctionStub; +import consulo.annotation.access.RequiredWriteAction; import consulo.language.psi.PsiElement; import consulo.language.psi.resolve.ResolveState; import consulo.language.psi.resolve.PsiScopeProcessor; @@ -38,20 +39,18 @@ import jakarta.annotation.Nonnull; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 8:25:27 PM + * @author max + * @since 2005-01-30 */ abstract class JSFunctionBaseImpl extends JSStubElementImpl implements JSFunction { private boolean referencesArgumentsCalculated; private boolean referencesArguments; - public JSFunctionBaseImpl(final ASTNode node) { + public JSFunctionBaseImpl(ASTNode node) { super(node); } - public JSFunctionBaseImpl(final T stub, IStubElementType type) { + public JSFunctionBaseImpl(T stub, IStubElementType type) { super(stub, type); } @@ -69,8 +68,9 @@ public JSParameterList getParameterList() { } @Override + @RequiredReadAction public JSSourceElement[] getBody() { - final ASTNode[] children = getNode().getChildren(JSElementTypes.SOURCE_ELEMENTS); + ASTNode[] children = getNode().getChildren(JSElementTypes.SOURCE_ELEMENTS); if (children.length == 0) { return JSSourceElement.EMPTY_ARRAY; } @@ -88,8 +88,9 @@ public JavaScriptType getReturnType() { } @Override + @RequiredReadAction public String getReturnTypeString() { - final T stub = getStub(); + T stub = getStub(); if (stub != null) { return stub.getReturnTypeString(); } @@ -97,38 +98,36 @@ public String getReturnTypeString() { } @Override + @RequiredReadAction public JavaScriptTypeElement getReturnTypeElement() { return JSPsiImplUtils.findTypeElement(this); } @Override + @RequiredWriteAction public PsiElement setName(@Nonnull String name) throws IncorrectOperationException { - final ASTNode newNameElement = createNameIdentifier(name); - final ASTNode nameIdentifier = getNameIdentifier().getNode(); + ASTNode newNameElement = createNameIdentifier(name); + ASTNode nameIdentifier = getNameIdentifier().getNode(); nameIdentifier.getTreeParent().replaceChild(nameIdentifier, newNameElement); return this; } - protected ASTNode createNameIdentifier(final String name) { + @RequiredReadAction + protected ASTNode createNameIdentifier(String name) { return JSChangeUtil.createExpressionFromText(getProject(), name).getNode(); } @Override @RequiredReadAction public String getName() { - final JSFunctionStub stub = getStub(); + JSFunctionStub stub = getStub(); if (stub != null) { return stub.getName(); } - final PsiElement name = getNameIdentifier(); + PsiElement name = getNameIdentifier(); if (name != null) { - if (name instanceof JSReferenceExpression) { - return ((JSReferenceExpression)name).getReferencedName(); - } - else { - return name.getText(); - } + return name instanceof JSReferenceExpression nameRefExpr ? nameRefExpr.getReferencedName() : name.getText(); } return null; } @@ -145,11 +144,12 @@ private static ASTNode advance(ASTNode astNode) { @RequiredReadAction @Override public int getTextOffset() { - final PsiElement name = getNameIdentifier(); + PsiElement name = getNameIdentifier(); return name != null ? name.getTextOffset() : super.getTextOffset(); } @Override + @RequiredReadAction public boolean processDeclarations( @Nonnull PsiScopeProcessor processor, @Nonnull ResolveState state, @@ -164,7 +164,7 @@ public boolean processDeclarations( } } - final JSParameter[] params = getParameterList().getParameters(); + JSParameter[] params = getParameterList().getParameters(); for (JSParameter param : params) { if (!param.processDeclarations(processor, state, lastParent, place)) { return false; @@ -182,26 +182,25 @@ public boolean processDeclarations( } @Override - public PsiElement addBefore(@Nonnull final PsiElement element, final PsiElement anchor) throws IncorrectOperationException { - if (anchor == getFirstChild() && element instanceof JSAttributeList + @RequiredWriteAction + public PsiElement addBefore(@Nonnull PsiElement element, PsiElement anchor) throws IncorrectOperationException { + if (anchor == getFirstChild() && element instanceof JSAttributeList attributeList && anchor.getNode().getElementType() == JSTokenTypes.FUNCTION_KEYWORD) { - return JSChangeUtil.doDoAddBefore(this, element, anchor); + return JSChangeUtil.doDoAddBefore(this, attributeList, anchor); } return super.addBefore(element, anchor); } @Override public boolean isDeprecated() { - final T stub = getStub(); - if (stub != null) { - return stub.isDeprecated(); - } - return JSDocumentationUtils.calculateDeprecated(this); + T stub = getStub(); + return stub != null ? stub.isDeprecated() : JSDocumentationUtils.calculateDeprecated(this); } @Override + @RequiredReadAction public boolean isReferencesArguments() { - final T stub = getStub(); + T stub = getStub(); if (stub != null) { return stub.isReferencesArguments(); } @@ -211,7 +210,8 @@ public boolean isReferencesArguments() { boolean continueVisiting = true; @Override - public void visitJSReferenceExpression(final JSReferenceExpression node) { + @RequiredReadAction + public void visitJSReferenceExpression(JSReferenceExpression node) { if (isInJS(node) && node.getQualifier() == null && "arguments".equals(node.getText())) { referencesArguments = true; continueVisiting = false; @@ -221,7 +221,7 @@ public void visitJSReferenceExpression(final JSReferenceExpression node) { } @Override - public void visitJSElement(final JSElement node) { + public void visitJSElement(JSElement node) { if (continueVisiting) { node.acceptChildren(this); } @@ -234,8 +234,9 @@ public void visitJSElement(final JSElement node) { return referencesArguments; } - private static boolean isInJS(final JSReferenceExpression node) { - final PsiElement parent = node.getParent(); + @RequiredReadAction + private static boolean isInJS(JSReferenceExpression node) { + PsiElement parent = node.getParent(); return parent == null || parent.getLanguage() instanceof JavaScriptLanguage; } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSFunctionExpressionImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSFunctionExpressionImpl.java index a83c668b..7d0e61f7 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSFunctionExpressionImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSFunctionExpressionImpl.java @@ -16,6 +16,7 @@ package com.intellij.lang.javascript.psi.impl; +import consulo.annotation.access.RequiredWriteAction; import consulo.language.ast.ASTNode; import com.intellij.lang.javascript.JSTokenTypes; import com.intellij.lang.javascript.psi.*; @@ -29,18 +30,15 @@ import jakarta.annotation.Nonnull; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 11:55:33 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public class JSFunctionExpressionImpl extends JSFunctionBaseImpl implements JSFunctionExpression { - public JSFunctionExpressionImpl(final ASTNode node) { + public JSFunctionExpressionImpl(ASTNode node) { super(node); } - public JSFunctionExpressionImpl(final JSFunctionStub stub, IStubElementType type) { + public JSFunctionExpressionImpl(JSFunctionStub stub, IStubElementType type) { super(stub, type); } @@ -50,18 +48,21 @@ protected void accept(@Nonnull JSElementVisitor visitor) { } @Override - protected ASTNode createNameIdentifier(final String name) { + @RequiredReadAction + protected ASTNode createNameIdentifier(String name) { return JSChangeUtil.createNameIdentifier(getProject(), name); } + @Nonnull @Override + @RequiredWriteAction public JSExpression replace(JSExpression newExpr) { return JSChangeUtil.replaceExpression(this, newExpr); } - @RequiredReadAction @Nonnull @Override + @RequiredReadAction public JavaScriptType getType() { return JavaScriptType.UNKNOWN; } @@ -71,16 +72,16 @@ public JSAttributeList getAttributeList() { return null; } - @RequiredReadAction @Override + @RequiredReadAction public int getTextOffset() { - final PsiElement name = getNameIdentifier(); + PsiElement name = getNameIdentifier(); return name != null ? name.getTextOffset() : super.getTextOffset(); } @Override public void delete() throws IncorrectOperationException { - final PsiElement parent = getParent(); + PsiElement parent = getParent(); if (parent instanceof JSAssignmentExpression assignment) { assignment.getLOperand().delete(); return; @@ -88,25 +89,26 @@ public void delete() throws IncorrectOperationException { super.delete(); } - @RequiredReadAction @Override + @RequiredReadAction public boolean isGetProperty() { return false; } - @RequiredReadAction @Override + @RequiredReadAction public boolean isSetProperty() { return false; } - @RequiredReadAction @Override + @RequiredReadAction public boolean isConstructor() { return false; } @Override + @RequiredReadAction public String getQualifiedName() { return getName(); } @@ -114,33 +116,33 @@ public String getQualifiedName() { @RequiredReadAction @Override public PsiElement getNameIdentifier() { - final ASTNode treeParent = getNode().getTreeParent(); + ASTNode treeParent = getNode().getTreeParent(); PsiElement psi = treeParent != null ? treeParent.getPsi() : null; - if (psi instanceof JSCallExpression) { - psi = psi.getParent(); + if (psi instanceof JSCallExpression call) { + psi = call.getParent(); } if (psi instanceof JSAssignmentExpression assignment) { - final JSExpression jsExpression = assignment.getLOperand(); - final JSExpression lOperand = jsExpression instanceof JSDefinitionExpression definition ? definition.getExpression() : null; + JSExpression jsExpression = assignment.getLOperand(); + JSExpression lOperand = jsExpression instanceof JSDefinitionExpression definition ? definition.getExpression() : null; - if (lOperand instanceof JSReferenceExpression) { - ASTNode childByType = lOperand.getNode().findChildByType(JSTokenTypes.IDENTIFIER_TOKENS_SET); + if (lOperand instanceof JSReferenceExpression refExpr) { + ASTNode childByType = refExpr.getNode().findChildByType(JSTokenTypes.IDENTIFIER_TOKENS_SET); return childByType != null ? childByType.getPsi() : null; } } - else if (psi instanceof JSProperty) { - ASTNode childByType = psi.getNode().findChildByType(JSTokenTypes.IDENTIFIER_TOKENS_SET); + else if (psi instanceof JSProperty property) { + ASTNode childByType = property.getNode().findChildByType(JSTokenTypes.IDENTIFIER_TOKENS_SET); return childByType != null ? childByType.getPsi() : null; } else { - final PsiElement node = super.getNameIdentifier(); + PsiElement node = super.getNameIdentifier(); if (node != null) { return node; } - if (psi instanceof JSVariable) { - ASTNode childByType = psi.getNode().findChildByType(JSTokenTypes.IDENTIFIER_TOKENS_SET); + if (psi instanceof JSVariable variable) { + ASTNode childByType = variable.getNode().findChildByType(JSTokenTypes.IDENTIFIER_TOKENS_SET); return childByType != null ? childByType.getPsi() : null; } } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSFunctionImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSFunctionImpl.java index 1e478b96..eed6ebbe 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSFunctionImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSFunctionImpl.java @@ -16,6 +16,7 @@ package com.intellij.lang.javascript.psi.impl; +import consulo.annotation.access.RequiredWriteAction; import consulo.content.scope.SearchScope; import consulo.language.ast.ASTNode; import com.intellij.lang.javascript.JSElementTypes; @@ -32,48 +33,46 @@ import jakarta.annotation.Nonnull; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 8:25:27 PM + * @author max + * @since 2005-01-30 */ public class JSFunctionImpl extends JSFunctionBaseImpl implements JSSuppressionHolder { - public JSFunctionImpl(final ASTNode node) { + public JSFunctionImpl(ASTNode node) { super(node); } - public JSFunctionImpl(final JSFunctionStub stub, IStubElementType type) { + public JSFunctionImpl(JSFunctionStub stub, IStubElementType type) { super(stub, type); } - @RequiredReadAction @Override + @RequiredReadAction public boolean isGetProperty() { - final JSFunctionStub stub = getStub(); + JSFunctionStub stub = getStub(); if (stub != null) { return stub.isGetProperty(); } return findChildByType(JSTokenTypes.GET_KEYWORD) != null; } - @RequiredReadAction @Override + @RequiredReadAction public boolean isSetProperty() { - final JSFunctionStub stub = getStub(); + JSFunctionStub stub = getStub(); if (stub != null) { return stub.isGetProperty(); } return findChildByType(JSTokenTypes.SET_KEYWORD) != null; } - @RequiredReadAction @Override + @RequiredReadAction public boolean isConstructor() { - final JSFunctionStub stub = getStub(); + JSFunctionStub stub = getStub(); if (stub != null) { return stub.isConstructor(); } - final PsiElement parent = JSResolveUtil.findParent(this); + PsiElement parent = JSResolveUtil.findParent(this); return parent instanceof JSClass && Comparing.equal("constructor", getName(), true); } @@ -88,17 +87,19 @@ protected void accept(@Nonnull JSElementVisitor visitor) { } @Override + @RequiredWriteAction public void delete() throws IncorrectOperationException { getNode().getTreeParent().removeChild(getNode()); } @Override + @RequiredReadAction public String getQualifiedName() { - final JSFunctionStub jsFunctionStub = getStub(); + JSFunctionStub jsFunctionStub = getStub(); if (jsFunctionStub != null) { return jsFunctionStub.getQualifiedName(); } - final PsiElement parent = JSResolveUtil.findParent(this); + PsiElement parent = JSResolveUtil.findParent(this); if (parent instanceof JSFile || parent instanceof JSPackageStatement) { return JSPsiImplUtils.getQName(this); @@ -108,8 +109,9 @@ public String getQualifiedName() { } } - @Override @Nonnull + @Override + @RequiredReadAction public SearchScope getUseScope() { if (isConstructor()) { return super.getUseScope(); @@ -117,13 +119,14 @@ public SearchScope getUseScope() { return JSResolveUtil.findUseScope(this); } + @Nonnull @Override + @RequiredReadAction public PsiElement getNavigationElement() { - PsiElement parent = getParent(); - if (parent instanceof JSClass) { - PsiElement parentOriginalElement = parent.getNavigationElement(); + if (getParent() instanceof JSClass jsClass) { + PsiElement parentOriginalElement = jsClass.getNavigationElement(); - if (parentOriginalElement != parent) { + if (parentOriginalElement != jsClass) { JSFunction functionByNameAndKind = ((JSClass)parentOriginalElement).findFunctionByNameAndKind(getName(), getKind()); return functionByNameAndKind != null ? functionByNameAndKind : this; } @@ -132,6 +135,7 @@ public PsiElement getNavigationElement() { } @Override + @RequiredWriteAction public PsiElement setName(@Nonnull String name) throws IncorrectOperationException { String oldName = getName(); PsiElement element = super.setName(name); diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSFunctionPropertyImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSFunctionPropertyImpl.java index 800a8f87..988906f4 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSFunctionPropertyImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSFunctionPropertyImpl.java @@ -16,7 +16,7 @@ /** * @author VISTALL - * @since 19/12/2021 + * @since 2021-12-19 */ public class JSFunctionPropertyImpl extends JSPropertyImpl implements JSFunctionProperty { public JSFunctionPropertyImpl(ASTNode node) { @@ -43,8 +43,9 @@ public JSParameterList getParameterList() { } @Override + @RequiredReadAction public JSSourceElement[] getBody() { - final ASTNode[] children = getNode().getChildren(JSElementTypes.SOURCE_ELEMENTS); + ASTNode[] children = getNode().getChildren(JSElementTypes.SOURCE_ELEMENTS); if (children.length == 0) { return JSSourceElement.EMPTY_ARRAY; } @@ -84,6 +85,7 @@ public JSAttributeList getAttributeList() { } @Override + @RequiredReadAction public String getQualifiedName() { return null; } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSGenericSignatureImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSGenericSignatureImpl.java index d51bccda..c398fb18 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSGenericSignatureImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSGenericSignatureImpl.java @@ -23,7 +23,7 @@ import jakarta.annotation.Nonnull; public class JSGenericSignatureImpl extends JSElementImpl implements JSGenericSignature { - public JSGenericSignatureImpl(final ASTNode node) { + public JSGenericSignatureImpl(ASTNode node) { super(node); } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSIfStatementImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSIfStatementImpl.java index e7761c2c..dd465852 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSIfStatementImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSIfStatementImpl.java @@ -16,6 +16,7 @@ package com.intellij.lang.javascript.psi.impl; +import consulo.annotation.access.RequiredReadAction; import consulo.language.ast.ASTNode; import com.intellij.lang.javascript.JSElementTypes; import com.intellij.lang.javascript.JSTokenTypes; @@ -26,14 +27,11 @@ import jakarta.annotation.Nonnull; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 9:49:01 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public class JSIfStatementImpl extends JSStatementImpl implements JSIfStatement { - public JSIfStatementImpl(final ASTNode node) { + public JSIfStatementImpl(ASTNode node) { super(node); } @@ -48,10 +46,11 @@ public JSStatement getThen() { } @Override + @RequiredReadAction public JSStatement getElse() { - final ASTNode myNode = getNode(); - final ASTNode elseNode = myNode.findChildByType(JSTokenTypes.ELSE_KEYWORD); - final ASTNode node = elseNode != null ? myNode.findChildByType(JSElementTypes.STATEMENTS, elseNode) : null; + ASTNode myNode = getNode(); + ASTNode elseNode = myNode.findChildByType(JSTokenTypes.ELSE_KEYWORD); + ASTNode node = elseNode != null ? myNode.findChildByType(JSElementTypes.STATEMENTS, elseNode) : null; return node != null ? (JSStatement)node.getPsi() : null; } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSImportStatementImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSImportStatementImpl.java index 7ee749ec..e0303e1a 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSImportStatementImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSImportStatementImpl.java @@ -16,6 +16,7 @@ package com.intellij.lang.javascript.psi.impl; +import consulo.annotation.access.RequiredReadAction; import consulo.language.ast.ASTNode; import com.intellij.lang.javascript.JSElementTypes; import com.intellij.lang.javascript.psi.JSElementVisitor; @@ -28,14 +29,14 @@ import jakarta.annotation.Nonnull; /** - * @by Maxim.Mossienko + * @author Maxim.Mossienko */ public class JSImportStatementImpl extends JSStubbedStatementImpl implements JSImportStatement { - public JSImportStatementImpl(final ASTNode node) { + public JSImportStatementImpl(ASTNode node) { super(node); } - public JSImportStatementImpl(final JSImportStatementStub stub) { + public JSImportStatementImpl(JSImportStatementStub stub) { super(stub, JSElementTypes.ES4_IMPORT_STATEMENT); } @@ -46,21 +47,22 @@ protected void accept(@Nonnull JSElementVisitor visitor) { @Override public boolean processDeclarations( - @Nonnull final PsiScopeProcessor processor, - @Nonnull final ResolveState state, - final PsiElement lastParent, - @Nonnull final PsiElement place + @Nonnull PsiScopeProcessor processor, + @Nonnull ResolveState state, + PsiElement lastParent, + @Nonnull PsiElement place ) { return true; } @Override + @RequiredReadAction public String getImportText() { - final JSImportStatementStub stub = getStub(); + JSImportStatementStub stub = getStub(); if (stub != null) { return stub.getImportText(); } - final ASTNode node = getNode().findChildByType(JSElementTypes.REFERENCE_EXPRESSION); + ASTNode node = getNode().findChildByType(JSElementTypes.REFERENCE_EXPRESSION); return node != null ? node.getText() : null; } } \ No newline at end of file diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSIncludeDirectiveImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSIncludeDirectiveImpl.java index ea501190..ebbee666 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSIncludeDirectiveImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSIncludeDirectiveImpl.java @@ -20,6 +20,7 @@ import com.intellij.lang.javascript.psi.JSElementVisitor; import com.intellij.lang.javascript.psi.JSIncludeDirective; import com.intellij.lang.javascript.psi.stubs.JSIncludeDirectiveStub; +import consulo.annotation.access.RequiredReadAction; import consulo.application.util.SystemInfo; import consulo.javascript.lang.JavaScriptTokenSets; import consulo.language.ast.ASTNode; @@ -31,14 +32,14 @@ import jakarta.annotation.Nonnull; /** - * @by Maxim.Mossienko + * @author Maxim.Mossienko */ public class JSIncludeDirectiveImpl extends JSStubbedStatementImpl implements JSIncludeDirective { - public JSIncludeDirectiveImpl(final ASTNode node) { + public JSIncludeDirectiveImpl(ASTNode node) { super(node); } - public JSIncludeDirectiveImpl(final JSIncludeDirectiveStub stub) { + public JSIncludeDirectiveImpl(JSIncludeDirectiveStub stub) { super(stub, JSElementTypes.INCLUDE_DIRECTIVE); } @@ -47,8 +48,9 @@ protected void accept(@Nonnull JSElementVisitor visitor) { visitor.visitJSIncludeDirective(this); } - @Override @Nonnull + @Override + @RequiredReadAction public PsiReference[] getReferences() { ASTNode node = getIncludedFileNode(); @@ -64,28 +66,31 @@ public PsiReference[] getReferences() { return PsiReference.EMPTY_ARRAY; } + @RequiredReadAction private ASTNode getIncludedFileNode() { return getNode().findChildByType(JavaScriptTokenSets.STRING_LITERALS); } @Override + @RequiredReadAction public String getIncludeText() { - final JSIncludeDirectiveStub stub = getStub(); + JSIncludeDirectiveStub stub = getStub(); if (stub != null) { return stub.getIncludeText(); } - final ASTNode astNode = getIncludedFileNode(); + ASTNode astNode = getIncludedFileNode(); return astNode != null ? StringUtil.stripQuotesAroundValue(astNode.getText()) : null; } @Override + @RequiredReadAction public PsiFile resolveFile() { - final String includeText = getIncludeText(); + String includeText = getIncludeText(); if (includeText == null) { return null; } - final FileReference[] references = new FileReferenceSet( + FileReference[] references = new FileReferenceSet( includeText, this, 0, @@ -94,6 +99,7 @@ public PsiFile resolveFile() { ).getAllReferences(); return references != null && references.length > 0 && references[references.length - 1].resolve() instanceof PsiFile file - ? file : null; + ? file + : null; } } \ No newline at end of file diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSIndexedPropertyAccessExpressionImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSIndexedPropertyAccessExpressionImpl.java index f7b95a9c..bbf2c2cd 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSIndexedPropertyAccessExpressionImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSIndexedPropertyAccessExpressionImpl.java @@ -16,6 +16,7 @@ package com.intellij.lang.javascript.psi.impl; +import consulo.annotation.access.RequiredReadAction; import consulo.language.ast.ASTNode; import com.intellij.lang.javascript.JSTokenTypes; import com.intellij.lang.javascript.psi.JSElementVisitor; @@ -25,22 +26,20 @@ import jakarta.annotation.Nonnull; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 11:59:36 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public class JSIndexedPropertyAccessExpressionImpl extends JSExpressionImpl implements JSIndexedPropertyAccessExpression { - public JSIndexedPropertyAccessExpressionImpl(final ASTNode node) { + public JSIndexedPropertyAccessExpressionImpl(ASTNode node) { super(node); } @Override + @RequiredReadAction public JSExpression getQualifier() { ASTNode child = getNode().getFirstChildNode(); while (child != null) { - final IElementType type = child.getElementType(); + IElementType type = child.getElementType(); if (type == JSTokenTypes.LBRACKET) { return null; } @@ -53,11 +52,12 @@ public JSExpression getQualifier() { } @Override + @RequiredReadAction public JSExpression getIndexExpression() { ASTNode child = getNode().getFirstChildNode(); boolean bracketPassed = false; while (child != null) { - final IElementType type = child.getElementType(); + IElementType type = child.getElementType(); if (type == JSTokenTypes.LBRACKET) { bracketPassed = true; } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSLabeledStatementImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSLabeledStatementImpl.java index c97380ef..3ebf274c 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSLabeledStatementImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSLabeledStatementImpl.java @@ -21,6 +21,8 @@ import com.intellij.lang.javascript.psi.JSLabeledStatement; import com.intellij.lang.javascript.psi.JSNamedElement; import com.intellij.lang.javascript.psi.JSStatement; +import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.access.RequiredWriteAction; import consulo.language.util.IncorrectOperationException; import consulo.language.ast.ASTNode; import consulo.language.psi.PsiElement; @@ -28,23 +30,22 @@ import jakarta.annotation.Nonnull; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 9:20:04 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public class JSLabeledStatementImpl extends JSStatementImpl implements JSLabeledStatement, JSNamedElement { - public JSLabeledStatementImpl(final ASTNode node) { + public JSLabeledStatementImpl(ASTNode node) { super(node); } @Override + @RequiredReadAction public String getLabel() { return getNameIdentifier().getText(); } @Override + @RequiredReadAction public PsiElement getLabelIdentifier() { return getNameIdentifier(); } @@ -69,17 +70,20 @@ protected void accept(@Nonnull JSElementVisitor visitor) { } @Override + @RequiredReadAction public String getName() { return getLabel(); } @Override + @RequiredWriteAction public PsiElement setName(@Nonnull String name) throws IncorrectOperationException { JSChangeUtil.doIdentifierReplacement(this, getLabelIdentifier(), name); return this; } @Override + @RequiredReadAction public PsiElement getNameIdentifier() { return findChildByType(JSTokenTypes.IDENTIFIER); } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSLetExpressionImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSLetExpressionImpl.java index a390a2b5..cf82c557 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSLetExpressionImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSLetExpressionImpl.java @@ -24,13 +24,11 @@ /** * Created by IntelliJ IDEA. - * User: maxim.mossienko - * Date: Dec 14, 2005 - * Time: 6:40:04 PM - * To change this template use File | Settings | File Templates. + * @author maxim.mossienko + * @since 2005-12-14 */ public class JSLetExpressionImpl extends JSExpressionImpl implements JSLetExpression { - public JSLetExpressionImpl(final ASTNode node) { + public JSLetExpressionImpl(ASTNode node) { super(node); } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSLetStatementImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSLetStatementImpl.java index 4e1f57a2..f111a911 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSLetStatementImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSLetStatementImpl.java @@ -28,7 +28,7 @@ * @author maxim */ public class JSLetStatementImpl extends JSStatementImpl implements JSLetStatement { - public JSLetStatementImpl(final ASTNode node) { + public JSLetStatementImpl(ASTNode node) { super(node); } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSLiteralExpressionImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSLiteralExpressionImpl.java index f3e18e86..5f324282 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSLiteralExpressionImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSLiteralExpressionImpl.java @@ -20,6 +20,7 @@ import com.intellij.lang.javascript.psi.JSElementVisitor; import com.intellij.lang.javascript.psi.JSExpression; import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.access.RequiredWriteAction; import consulo.javascript.lang.JavaScriptTokenSets; import consulo.javascript.language.psi.JavaScriptPrimitiveType; import consulo.javascript.language.psi.JavaScriptType; @@ -34,13 +35,13 @@ /** * @author max - * @since 11:24:42 PM Jan 30, 2005 + * @since 2005-01-30 */ public class JSLiteralExpressionImpl extends JSExpressionImpl implements JSSimpleLiteralExpression, PsiLanguageInjectionHost { private volatile JSReferenceSet myReferenceSet; private volatile long myModCount; - public JSLiteralExpressionImpl(final ASTNode node) { + public JSLiteralExpressionImpl(ASTNode node) { super(node); } @@ -76,8 +77,9 @@ else if (JavaScriptTokenSets.STRING_LITERALS.contains(literalElementType)) { return super.getType(); } - @Override @Nonnull + @Override + @RequiredReadAction public PsiReference[] getReferences() { JSReferenceSet referenceSet = myReferenceSet; @@ -92,7 +94,7 @@ public PsiReference[] getReferences() { } } else { - final long count = getManager().getModificationTracker().getModificationCount(); + long count = getManager().getModificationTracker().getModificationCount(); if (count != myModCount) { synchronized (this) { @@ -118,6 +120,7 @@ public boolean isValidHost() { } @Override + @RequiredWriteAction public PsiLanguageInjectionHost updateText(@Nonnull String text) { JSExpression expressionFromText = JSChangeUtil.createExpressionFromText(getProject(), text); return (PsiLanguageInjectionHost)replace(expressionFromText); diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSNamespaceDeclarationImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSNamespaceDeclarationImpl.java index b38e1f3c..0b500e08 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSNamespaceDeclarationImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSNamespaceDeclarationImpl.java @@ -16,31 +16,31 @@ package com.intellij.lang.javascript.psi.impl; -import consulo.language.ast.ASTNode; import com.intellij.lang.javascript.JSElementTypes; import com.intellij.lang.javascript.JSTokenTypes; import com.intellij.lang.javascript.psi.JSAttributeList; import com.intellij.lang.javascript.psi.JSElementVisitor; import com.intellij.lang.javascript.psi.JSNamespaceDeclaration; import com.intellij.lang.javascript.psi.stubs.JSNamespaceDeclarationStub; +import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.access.RequiredWriteAction; +import consulo.javascript.lang.JavaScriptTokenSets; +import consulo.language.ast.ASTNode; import consulo.language.psi.PsiElement; import consulo.language.psi.resolve.PsiScopeProcessor; import consulo.language.psi.resolve.ResolveState; import consulo.language.util.IncorrectOperationException; -import consulo.javascript.lang.JavaScriptTokenSets; -import org.jetbrains.annotations.NonNls; - import jakarta.annotation.Nonnull; /** - * @by Maxim.Mossienko + * @author Maxim.Mossienko */ public class JSNamespaceDeclarationImpl extends JSStubbedStatementImpl implements JSNamespaceDeclaration { - public JSNamespaceDeclarationImpl(final ASTNode node) { + public JSNamespaceDeclarationImpl(ASTNode node) { super(node); } - public JSNamespaceDeclarationImpl(final JSNamespaceDeclarationStub node) { + public JSNamespaceDeclarationImpl(JSNamespaceDeclarationStub node) { super(node, JSElementTypes.NAMESPACE_DECLARATION); } @@ -55,8 +55,9 @@ public JSAttributeList getAttributeList() { } @Override - public PsiElement setName(@NonNls @Nonnull String newName) throws IncorrectOperationException { - final String oldName = getName(); + @RequiredWriteAction + public PsiElement setName(@Nonnull String newName) throws IncorrectOperationException { + String oldName = getName(); if (newName.equals(oldName)) { return this; } @@ -68,24 +69,27 @@ public PsiElement setName(@NonNls @Nonnull String newName) throws IncorrectOpera } @Override + @RequiredReadAction public String getName() { - final JSNamespaceDeclarationStub stub = getStub(); + JSNamespaceDeclarationStub stub = getStub(); if (stub != null) { return stub.getName(); } - final PsiElement node = getNameIdentifier(); + PsiElement node = getNameIdentifier(); return node != null ? node.getText() : null; } @Override + @RequiredReadAction public int getTextOffset() { - final PsiElement node = getNameIdentifier(); + PsiElement node = getNameIdentifier(); return node == null ? super.getTextOffset() : node.getTextOffset(); } @Override + @RequiredReadAction public String getQualifiedName() { - final JSNamespaceDeclarationStub stub = getStub(); + JSNamespaceDeclarationStub stub = getStub(); if (stub != null) { return stub.getQualifiedName(); } @@ -93,17 +97,19 @@ public String getQualifiedName() { } @Override + @RequiredReadAction public PsiElement getNameIdentifier() { return findChildByType(JSElementTypes.REFERENCE_EXPRESSION); } @Override + @RequiredReadAction public String getInitialValueString() { - final JSNamespaceDeclarationStub stub = getStub(); + JSNamespaceDeclarationStub stub = getStub(); if (stub != null) { return stub.getInitialValueString(); } - final ASTNode anchor = getNode().findChildByType(JSTokenTypes.EQ); + ASTNode anchor = getNode().findChildByType(JSTokenTypes.EQ); if (anchor != null) { ASTNode node = anchor.getTreeNext(); @@ -126,10 +132,10 @@ public boolean isDeprecated() { @Override public boolean processDeclarations( - @Nonnull final PsiScopeProcessor processor, - @Nonnull final ResolveState state, - final PsiElement lastParent, - @Nonnull final PsiElement place + @Nonnull PsiScopeProcessor processor, + @Nonnull ResolveState state, + PsiElement lastParent, + @Nonnull PsiElement place ) { return processor.execute(lastParent, state); } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSNewExpressionImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSNewExpressionImpl.java index 9374b6fd..55243527 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSNewExpressionImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSNewExpressionImpl.java @@ -26,20 +26,17 @@ import jakarta.annotation.Nonnull; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 11:57:36 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public class JSNewExpressionImpl extends JSExpressionImpl implements JSNewExpression { - public JSNewExpressionImpl(final ASTNode node) { + public JSNewExpressionImpl(ASTNode node) { super(node); } - @RequiredReadAction @Nonnull @Override + @RequiredReadAction public JavaScriptType getType() { JSExpression methodExpression = getMethodExpression(); @@ -62,8 +59,9 @@ public JSExpression getMethodExpression() { } @Override + @RequiredReadAction public JSArgumentList getArgumentList() { - final ASTNode node = getNode().findChildByType(JSElementTypes.ARGUMENT_LIST); + ASTNode node = getNode().findChildByType(JSElementTypes.ARGUMENT_LIST); return node != null ? (JSArgumentList)node.getPsi() : null; } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSObjectLiteralExpressionImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSObjectLiteralExpressionImpl.java index a26e17e5..900a5757 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSObjectLiteralExpressionImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSObjectLiteralExpressionImpl.java @@ -27,13 +27,11 @@ import jakarta.annotation.Nonnull; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 11:36:30 PM + * @author max + * @since 2005-01-30 */ public class JSObjectLiteralExpressionImpl extends JSExpressionImpl implements JSObjectLiteralExpression { - public JSObjectLiteralExpressionImpl(final ASTNode node) { + public JSObjectLiteralExpressionImpl(ASTNode node) { super(node); } @@ -49,15 +47,15 @@ protected void accept(@Nonnull JSElementVisitor visitor) { @Override public boolean processDeclarations( - @Nonnull final PsiScopeProcessor processor, - @Nonnull final ResolveState state, - final PsiElement lastParent, - @Nonnull final PsiElement place + @Nonnull PsiScopeProcessor processor, + @Nonnull ResolveState state, + PsiElement lastParent, + @Nonnull PsiElement place ) { if (lastParent == null || !(place instanceof JSProperty)) { return true; } - final JSProperty[] props = getProperties(); + JSProperty[] props = getProperties(); for (JSProperty property : props) { if (!processor.execute(property, state)) { diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSPackageStatementImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSPackageStatementImpl.java index 9f2b5c0f..6da72905 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSPackageStatementImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSPackageStatementImpl.java @@ -25,30 +25,30 @@ import com.intellij.lang.javascript.psi.resolve.JSImportHandlingUtil; import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; import com.intellij.lang.javascript.psi.stubs.JSPackageStatementStub; +import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.access.RequiredWriteAction; +import consulo.language.ast.ASTNode; import consulo.language.codeStyle.CodeStyleManager; import consulo.language.psi.PsiElement; import consulo.language.psi.PsiWhiteSpace; import consulo.language.psi.resolve.PsiScopeProcessor; -import consulo.language.util.IncorrectOperationException; -import consulo.language.ast.ASTNode; import consulo.language.psi.resolve.ResolveState; +import consulo.language.util.IncorrectOperationException; import consulo.project.Project; import consulo.virtualFileSystem.VirtualFile; -import org.jetbrains.annotations.NonNls; - import jakarta.annotation.Nonnull; import java.io.IOException; /** - * @by Maxim.Mossienko + * @author Maxim.Mossienko */ public class JSPackageStatementImpl extends JSStubbedStatementImpl implements JSPackageStatement { - public JSPackageStatementImpl(final ASTNode node) { + public JSPackageStatementImpl(ASTNode node) { super(node); } - public JSPackageStatementImpl(final JSPackageStatementStub stub) { + public JSPackageStatementImpl(JSPackageStatementStub stub) { super(stub, JSElementTypes.PACKAGE_STATEMENT); } @@ -58,12 +58,13 @@ protected void accept(@Nonnull JSElementVisitor visitor) { } @Override + @RequiredReadAction public String getName() { - final JSPackageStatementStub stub = getStub(); + JSPackageStatementStub stub = getStub(); if (stub != null) { return stub.getName(); } - final PsiElement node = getNameIdentifier(); + PsiElement node = getNameIdentifier(); if (node != null) { return ((JSReferenceExpression)node).getReferencedName(); } @@ -71,17 +72,15 @@ public String getName() { } @Override + @RequiredReadAction public String getQualifiedName() { - final JSPackageStatementStub stub = getStub(); + JSPackageStatementStub stub = getStub(); if (stub != null) { return stub.getQualifiedName(); } - final PsiElement node = getNameIdentifier(); - if (node != null) { - return node.getText(); - } - return null; + PsiElement node = getNameIdentifier(); + return node != null ? node.getText() : null; } @Override @@ -90,12 +89,14 @@ public JSSourceElement[] getStatements() { } @Override - public void setQualifiedName(final String expectedPackageNameFromFile) { + @RequiredWriteAction + public void setQualifiedName(String expectedPackageNameFromFile) { doChangeName(getProject(), this, expectedPackageNameFromFile); } @Override - public PsiElement setName(@NonNls @Nonnull String name) throws IncorrectOperationException { + @RequiredWriteAction + public PsiElement setName(@Nonnull String name) throws IncorrectOperationException { VirtualFile virtualFile = getContainingFile().getVirtualFile(); String expectedPackageNameFromFile = JSResolveUtil.getExpectedPackageNameFromFile(virtualFile, getProject(), false); @@ -121,24 +122,26 @@ public PsiElement setName(@NonNls @Nonnull String name) throws IncorrectOperatio @Override public boolean processDeclarations( - @Nonnull final PsiScopeProcessor processor, - @Nonnull final ResolveState substitutor, - final PsiElement lastParent, - @Nonnull final PsiElement place + @Nonnull PsiScopeProcessor processor, + @Nonnull ResolveState substitutor, + PsiElement lastParent, + @Nonnull PsiElement place ) { return !(lastParent != null && lastParent.getParent() == this) || JSImportHandlingUtil.tryResolveImports(processor, this, place); } @Override + @RequiredReadAction public PsiElement getNameIdentifier() { return findChildByType(JSElementTypes.REFERENCE_EXPRESSION); } @Override + @RequiredWriteAction public PsiElement addBefore(@Nonnull PsiElement element, PsiElement anchor) throws IncorrectOperationException { if (JSChangeUtil.isStatementOrComment(element)) { - final PsiElement insertedElement = JSChangeUtil.doAddBefore(this, element, anchor); + PsiElement insertedElement = JSChangeUtil.doAddBefore(this, element, anchor); CodeStyleManager.getInstance(getProject()).reformatNewlyAddedElement(getNode(), insertedElement.getNode()); return insertedElement; } @@ -146,25 +149,27 @@ public PsiElement addBefore(@Nonnull PsiElement element, PsiElement anchor) thro } @Override + @RequiredWriteAction public PsiElement addAfter(@Nonnull PsiElement element, PsiElement anchor) throws IncorrectOperationException { if (JSChangeUtil.isStatementOrComment(element)) { - final PsiElement insertedElement = JSChangeUtil.doAddAfter(this, element, anchor); + PsiElement insertedElement = JSChangeUtil.doAddAfter(this, element, anchor); CodeStyleManager.getInstance(getProject()).reformatNewlyAddedElement(getNode(), insertedElement.getNode()); return insertedElement; } return super.addAfter(element, anchor); } - public static void doChangeName(final Project project, final JSPackageStatement packageStatement, final String expected) { + @RequiredWriteAction + public static void doChangeName(Project project, JSPackageStatement packageStatement, String expected) { if (expected == null) { return; } - final PsiElement node = packageStatement.getNameIdentifier(); - final ASTNode parent = packageStatement.getNode(); + PsiElement node = packageStatement.getNameIdentifier(); + ASTNode parent = packageStatement.getNode(); if (expected.length() == 0) { if (node != null) { - final ASTNode treeNext = node.getNode().getTreeNext(); + ASTNode treeNext = node.getNode().getTreeNext(); parent.removeChild(node.getNode()); if (treeNext.getPsi() instanceof PsiWhiteSpace) { parent.removeChild(treeNext); @@ -172,7 +177,7 @@ public static void doChangeName(final Project project, final JSPackageStatement } } else { - final ASTNode child = JSChangeUtil.createExpressionFromText(project, expected).getNode(); + ASTNode child = JSChangeUtil.createExpressionFromText(project, expected).getNode(); if (node != null) { parent.replaceChild(node.getNode(), child); } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSParameterImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSParameterImpl.java index 11638b0a..80501d68 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSParameterImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSParameterImpl.java @@ -17,6 +17,7 @@ package com.intellij.lang.javascript.psi.impl; import com.intellij.javascript.documentation.JSDocumentationUtils; +import consulo.annotation.access.RequiredWriteAction; import consulo.language.ast.ASTNode; import com.intellij.lang.javascript.JSElementTypes; import com.intellij.lang.javascript.JSTokenTypes; @@ -35,22 +36,20 @@ import jakarta.annotation.Nullable; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 9:12:51 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public class JSParameterImpl extends JSVariableBaseImpl implements JSParameter { - public JSParameterImpl(final ASTNode node) { + public JSParameterImpl(ASTNode node) { super(node); } - public JSParameterImpl(final JSParameterStub stub) { + public JSParameterImpl(JSParameterStub stub) { super(stub, JSElementTypes.FORMAL_PARAMETER); } @Override + @RequiredReadAction public JSFunction getDeclaringFunction() { return (JSFunction)getNode().getTreeParent().getTreeParent().getPsi(); } @@ -58,11 +57,8 @@ public JSFunction getDeclaringFunction() { @Override @RequiredReadAction public boolean isRest() { - final JSParameterStub parameterStub = getStub(); - if (parameterStub != null) { - return parameterStub.isRest(); - } - return getRestElement() != null; + JSParameterStub parameterStub = getStub(); + return parameterStub != null ? parameterStub.isRest() : getRestElement() != null; } @Nullable @@ -73,16 +69,13 @@ public PsiElement getRestElement() { } @Override + @RequiredReadAction public boolean isOptional() { - final JSParameterStub parameterStub = getStub(); + JSParameterStub parameterStub = getStub(); if (parameterStub != null) { return parameterStub.isOptional(); } - if (getInitializer() != null) { - return true; - } - - return JSDocumentationUtils.findOptionalStatusFromComments(this); + return getInitializer() != null || JSDocumentationUtils.findOptionalStatusFromComments(this); } @Override @@ -96,9 +89,10 @@ public JSAttributeList getAttributeList() { } @Override + @RequiredWriteAction public void delete() throws IncorrectOperationException { - final ASTNode myNode = getNode(); - final ASTNode parent = myNode.getTreeParent(); + ASTNode myNode = getNode(); + ASTNode parent = myNode.getTreeParent(); if (parent.getElementType() == JSElementTypes.PARAMETER_LIST) { JSChangeUtil.removeRangeWithRemovalOfCommas(myNode, parent); @@ -109,12 +103,13 @@ public void delete() throws IncorrectOperationException { } @Override + @RequiredReadAction protected String doGetType() { String s = super.doGetType(); if (s == null) { - final ASTNode astNode = getNode(); - final ASTNode anchor = astNode.findChildByType(JSTokenTypes.INSTANCEOF_KEYWORD); + ASTNode astNode = getNode(); + ASTNode anchor = astNode.findChildByType(JSTokenTypes.INSTANCEOF_KEYWORD); if (anchor != null) { ASTNode type = astNode.findChildByType(JSTokenTypes.IDENTIFIER_TOKENS_SET, anchor); diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSParameterListImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSParameterListImpl.java index ac3aa147..3108d08b 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSParameterListImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSParameterListImpl.java @@ -26,18 +26,15 @@ import jakarta.annotation.Nonnull; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 8:41:53 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public class JSParameterListImpl extends JSStubElementImpl implements JSParameterList { - public JSParameterListImpl(final ASTNode node) { + public JSParameterListImpl(ASTNode node) { super(node); } - public JSParameterListImpl(final JSParameterListStub stub) { + public JSParameterListImpl(JSParameterListStub stub) { super(stub, JSElementTypes.PARAMETER_LIST); } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSParenthesizedExpressionImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSParenthesizedExpressionImpl.java index 99cd3108..0604a6b5 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSParenthesizedExpressionImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSParenthesizedExpressionImpl.java @@ -23,12 +23,11 @@ import jakarta.annotation.Nonnull; /** - * User: max - * Date: Jan 30, 2005 - * Time: 11:30:44 PM + * @author max + * @since 2005-01-30 */ public class JSParenthesizedExpressionImpl extends JSExpressionImpl implements JSParenthesizedExpression { - public JSParenthesizedExpressionImpl(final ASTNode node) { + public JSParenthesizedExpressionImpl(ASTNode node) { super(node); } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSPostfixExpressionImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSPostfixExpressionImpl.java index a2336f0d..faf52c14 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSPostfixExpressionImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSPostfixExpressionImpl.java @@ -28,18 +28,17 @@ import jakarta.annotation.Nonnull; /** - * User: max - * Date: Jan 30, 2005 - * Time: 11:52:13 PM + * @author max + * @since 2005-01-30 */ public class JSPostfixExpressionImpl extends JSExpressionImpl implements JSPostfixExpression { - public JSPostfixExpressionImpl(final ASTNode node) { + public JSPostfixExpressionImpl(ASTNode node) { super(node); } - @RequiredReadAction @Nonnull @Override + @RequiredReadAction public JavaScriptType getType() { JSExpression expression = getExpression(); return expression == null ? JavaScriptType.UNKNOWN : expression.getType(); @@ -51,8 +50,9 @@ public JSExpression getExpression() { } @Override + @RequiredReadAction public IElementType getOperationSign() { - final ASTNode[] nodes = getNode().getChildren(JSTokenTypes.OPERATIONS); + ASTNode[] nodes = getNode().getChildren(JSTokenTypes.OPERATIONS); return nodes.length == 1 ? nodes[0].getElementType() : null; } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSPrefixExpressionImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSPrefixExpressionImpl.java index a08d72e9..1ad0a8ff 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSPrefixExpressionImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSPrefixExpressionImpl.java @@ -30,14 +30,11 @@ import jakarta.annotation.Nullable; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 11:52:13 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public class JSPrefixExpressionImpl extends JSExpressionImpl implements JSPrefixExpression { - public JSPrefixExpressionImpl(final ASTNode node) { + public JSPrefixExpressionImpl(ASTNode node) { super(node); } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSPropertyImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSPropertyImpl.java index cf71751c..eba657a0 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSPropertyImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSPropertyImpl.java @@ -21,6 +21,7 @@ import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.lang.javascript.psi.JSProperty; import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.access.RequiredWriteAction; import consulo.application.util.CachedValueProvider; import consulo.javascript.lang.JavaScriptTokenSets; import consulo.javascript.language.psi.JavaScriptType; @@ -45,7 +46,7 @@ public class JSPropertyImpl extends JSElementImpl implements JSProperty { private static TokenSet IDENTIFIER_TOKENS_SET = TokenSet.orSet(TokenSet.create(JSTokenTypes.NUMERIC_LITERAL, JSTokenTypes.IDENTIFIER), JavaScriptTokenSets.STRING_LITERALS); - public JSPropertyImpl(final ASTNode node) { + public JSPropertyImpl(ASTNode node) { super(node); } @@ -83,18 +84,16 @@ private PsiReference[] buildReferences() { @Override @RequiredReadAction public String getName() { - final PsiElement nameIdentifier = getNameIdentifier(); - if (nameIdentifier != null) { - return StringUtil.stripQuotesAroundValue(nameIdentifier.getText()); - } - return null; + PsiElement nameIdentifier = getNameIdentifier(); + return nameIdentifier != null ? StringUtil.stripQuotesAroundValue(nameIdentifier.getText()) : null; } @Override + @RequiredWriteAction public PsiElement setName(@Nonnull String name) throws IncorrectOperationException { - final PsiElement nameNode = getNameIdentifier(); + PsiElement nameNode = getNameIdentifier(); assert nameNode != null; - final ASTNode nameElement = JSChangeUtil.createNameIdentifier(getProject(), name, nameNode.getNode().getElementType()); + ASTNode nameElement = JSChangeUtil.createNameIdentifier(getProject(), name, nameNode.getNode().getElementType()); getNode().replaceChild(nameNode.getNode(), nameElement); return this; } @@ -138,14 +137,14 @@ protected void accept(@Nonnull JSElementVisitor visitor) { @RequiredReadAction @Override public int getTextOffset() { - final PsiElement name = getNameIdentifier(); + PsiElement name = getNameIdentifier(); return name != null ? name.getTextOffset() : super.getTextOffset(); } @Override - @RequiredReadAction + @RequiredWriteAction public void delete() throws IncorrectOperationException { - final ASTNode myNode = getNode(); + ASTNode myNode = getNode(); JSChangeUtil.removeRangeWithRemovalOfCommas(myNode, myNode.getTreeParent()); } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSPsiImplUtils.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSPsiImplUtils.java index 28ba6890..7aca2c90 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSPsiImplUtils.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSPsiImplUtils.java @@ -22,9 +22,10 @@ import com.intellij.lang.javascript.psi.*; import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.access.RequiredWriteAction; import consulo.content.base.SourcesOrderRootType; -import consulo.javascript.language.psi.JavaScriptTypeElement; import consulo.javascript.lang.psi.impl.elementType.BaseJavaScriptElementType; +import consulo.javascript.language.psi.JavaScriptTypeElement; import consulo.javascript.language.psi.stub.JavaScriptIndexKeys; import consulo.javascript.psi.JavaScriptImportStatementBase; import consulo.language.ast.ASTNode; @@ -41,30 +42,25 @@ import consulo.project.DumbService; import consulo.project.Project; import consulo.util.collection.HashingStrategy; -import consulo.util.lang.Comparing; import consulo.util.lang.StringUtil; import consulo.virtualFileSystem.VirtualFile; import consulo.xml.psi.xml.XmlFile; import jakarta.annotation.Nonnull; -import org.jetbrains.annotations.NonNls; - import jakarta.annotation.Nullable; import java.io.IOException; import java.util.Collection; import java.util.Iterator; import java.util.List; +import java.util.Objects; import java.util.function.Consumer; /** * @author Maxim.Mossienko - * Date: Jun 8, 2008 - * Time: 3:23:37 PM + * @since 2008-06-08 */ public class JSPsiImplUtils { - @NonNls private static final String ARRAY_TYPE_NAME = "Array"; - @NonNls private static final String ARRAY_ELEMENT_TYPE_ANNOTATION_NAME = "ArrayElementType"; @Nullable @@ -100,18 +96,14 @@ private static T findChildrenByClass(@Nonnull PsiElement element, Class a @Deprecated public static ASTNode getTypeExpressionFromDeclaration(JSNamedElement element) { - final ASTNode myNode = element.getNode(); - final ASTNode node = myNode != null ? myNode.findChildByType(JSTokenTypes.COLON) : null; - String s = null; - - if (node != null) { - return myNode.findChildByType(JSDocumentationUtils.ourTypeFilter, node); - } + ASTNode myNode = element.getNode(); + ASTNode node = myNode != null ? myNode.findChildByType(JSTokenTypes.COLON) : null; - return null; + return node != null ? myNode.findChildByType(JSDocumentationUtils.ourTypeFilter, node) : null; } @Deprecated + @RequiredReadAction public static String getTypeFromDeclaration(JSNamedElement element) { ASTNode typeExpr = getTypeExpressionFromDeclaration(element); @@ -119,15 +111,15 @@ public static String getTypeFromDeclaration(JSNamedElement element) { if (typeExpr != null) { s = typeExpr.getText(); } - else if (element instanceof JSParameter && ((JSParameter)element).isRest()) { + else if (element instanceof JSParameter parameter && parameter.isRest()) { s = ARRAY_TYPE_NAME; } if (ARRAY_TYPE_NAME.equals(s)) { - final PsiComment psiComment = typeExpr != null ? PsiTreeUtil.getPrevSiblingOfType(typeExpr.getPsi(), PsiComment.class) : null; + PsiComment psiComment = typeExpr != null ? PsiTreeUtil.getPrevSiblingOfType(typeExpr.getPsi(), PsiComment.class) : null; if (psiComment != null) { - final String elementType = JSDocumentationUtils.unwrapCommentDelimiters(psiComment.getText()).trim(); + String elementType = JSDocumentationUtils.unwrapCommentDelimiters(psiComment.getText()).trim(); if (elementType.length() > 0) { return s + "[" + elementType; @@ -135,7 +127,7 @@ else if (element instanceof JSParameter && ((JSParameter)element).isRest()) { } if (element instanceof JSAttributeListOwner attributeListOwner) { - final JSAttributeList attributeList = attributeListOwner.getAttributeList(); + JSAttributeList attributeList = attributeListOwner.getAttributeList(); if (attributeList != null) { String type = getArrayElementTypeFromAnnotation(attributeList); @@ -151,12 +143,14 @@ else if (element instanceof JSParameter && ((JSParameter)element).isRest()) { } @Nullable + @RequiredReadAction public static String getArrayElementTypeFromAnnotation(JSAttributeList attributeList) { return getTypeFromAnnotationParameter(attributeList, ARRAY_ELEMENT_TYPE_ANNOTATION_NAME, null); } + @RequiredReadAction public static String getType(JSNamedElement element) { - final String typeFromDeclaration = getTypeFromDeclaration(element); + String typeFromDeclaration = getTypeFromDeclaration(element); if (typeFromDeclaration != null) { return typeFromDeclaration; } @@ -164,24 +158,24 @@ public static String getType(JSNamedElement element) { return JSDocumentationUtils.findTypeFromComments(element); } - public static void updateFileName( - JSQualifiedNamedElement jsClassBase, - final String newName, - final String oldName - ) throws IncorrectOperationException { - final PsiFile containingFile = jsClassBase.getContainingFile(); + @RequiredWriteAction + public static void updateFileName(JSQualifiedNamedElement jsClassBase, String newName, String oldName) + throws IncorrectOperationException { + + PsiFile containingFile = jsClassBase.getContainingFile(); if (containingFile.getContext() == null) { - final VirtualFile virtualFile = containingFile.getVirtualFile(); + VirtualFile virtualFile = containingFile.getVirtualFile(); if (virtualFile != null && virtualFile.getNameWithoutExtension().equals(oldName)) { - final String s = containingFile.getName(); + String s = containingFile.getName(); containingFile.setName(newName + "." + s.substring(s.lastIndexOf('.') + 1)); } } } @Nullable + @RequiredReadAction public static JSPackageStatement findPackageStatement(JSFile file) { JSPackageStatement packageStatement = null; @@ -195,6 +189,7 @@ public static JSPackageStatement findPackageStatement(JSFile file) { } @Nonnull + @RequiredReadAction static PsiElement findTopLevelNavigatableElement(@Nonnull JSQualifiedNamedElement jsClass) { PsiElement sourceElement = findTopLevelNavigatableElementWithSource(jsClass, null); if (sourceElement != null) { @@ -204,6 +199,7 @@ static PsiElement findTopLevelNavigatableElement(@Nonnull JSQualifiedNamedElemen } @Nullable + @RequiredReadAction public static PsiElement findTopLevelNavigatableElementWithSource( @Nonnull JSQualifiedNamedElement jsClass, @Nullable Consumer candidatesConsumer @@ -222,8 +218,8 @@ public static PsiElement findTopLevelNavigatableElementWithSource( } GlobalSearchScope searchScope = jsClass.getResolveScope(); - final String qName = jsClass.getQualifiedName(); - final Collection candidates = StubIndex.getElements( + String qName = jsClass.getQualifiedName(); + Collection candidates = StubIndex.getElements( JavaScriptIndexKeys.ELEMENTS_BY_QNAME, qName, jsClass.getProject(), @@ -254,6 +250,7 @@ public static PsiElement findTopLevelNavigatableElementWithSource( } @Nullable + @RequiredReadAction private static PsiElement findSourceElement(JSQualifiedNamedElement jsClass) { PsiFile containingFile = jsClass.getContainingFile(); if (containingFile == null) { @@ -266,7 +263,7 @@ private static PsiElement findSourceElement(JSQualifiedNamedElement jsClass) { return null; } - final List orderEntries = projectFileIndex.getOrderEntriesForFile(vFile); + List orderEntries = projectFileIndex.getOrderEntriesForFile(vFile); String qName = jsClass.getQualifiedName(); String baseSourceName = jsClass.getName(); @@ -286,8 +283,8 @@ private static PsiElement findSourceElement(JSQualifiedNamedElement jsClass) { if (source != null) { PsiFile psiSource = jsClass.getManager().findFile(source); - if (psiSource instanceof JSFile) { - JSPackageStatement statement = findPackageStatement((JSFile)psiSource); + if (psiSource instanceof JSFile jsFile) { + JSPackageStatement statement = findPackageStatement(jsFile); if (statement != null) { for (JSSourceElement el : statement.getStatements()) { @@ -306,8 +303,8 @@ private static PsiElement findSourceElement(JSQualifiedNamedElement jsClass) { } if (source != null) { PsiFile psiSource = jsClass.getManager().findFile(source); - if (psiSource instanceof XmlFile) { - return XmlBackedJSClassImpl.getXmlBackedClass((XmlFile)psiSource); + if (psiSource instanceof XmlFile xmlFile) { + return XmlBackedJSClassImpl.getXmlBackedClass(xmlFile); } } } @@ -316,17 +313,18 @@ private static PsiElement findSourceElement(JSQualifiedNamedElement jsClass) { return null; } - static String getQName(final JSNamedElement element) { - final PsiElement node = element.getNameIdentifier(); - final String name = node != null ? node.getText() : null; + @RequiredReadAction + static String getQName(JSNamedElement element) { + PsiElement node = element.getNameIdentifier(); + String name = node != null ? node.getText() : null; PsiElement responsibleParent = element.getParent(); - if (responsibleParent instanceof JSVarStatement) { - responsibleParent = responsibleParent.getParent(); + if (responsibleParent instanceof JSVarStatement varStatement) { + responsibleParent = varStatement.getParent(); } if (responsibleParent instanceof JSPackageStatement packageStatement && name != null) { - final String packageName = packageStatement.getQualifiedName(); + String packageName = packageStatement.getQualifiedName(); if (!StringUtil.isEmpty(packageName)) { return packageName.concat(".").concat(name); } @@ -335,15 +333,16 @@ static String getQName(final JSNamedElement element) { } @Nullable + @RequiredReadAction public static String getTypeFromAnnotationParameter( @Nonnull JSAttributeList attributeList, @Nonnull String annotationName, @Nullable String annotationParameter ) { String arrayType = null; - final JSAttribute[] byName = attributeList.getAttributesByName(annotationName); + JSAttribute[] byName = attributeList.getAttributesByName(annotationName); if (byName.length > 0) { - final JSAttributeNameValuePair jsAttributeNameValuePair = byName[0].getValueByName(annotationParameter); + JSAttributeNameValuePair jsAttributeNameValuePair = byName[0].getValueByName(annotationParameter); arrayType = jsAttributeNameValuePair != null ? jsAttributeNameValuePair.getSimpleValue() : null; } return arrayType; @@ -352,12 +351,13 @@ public static String getTypeFromAnnotationParameter( /** * @see QUALIFIED_NAME_HASHING_STRATEGY */ - static boolean isTheSameClass(final PsiElement typeSource, final JSClass jsClass) { + @RequiredReadAction + static boolean isTheSameClass(PsiElement typeSource, JSClass jsClass) { if (typeSource == jsClass) { return true; } - if (typeSource instanceof JSClass && jsClass != null) { - final String qName = ((JSClass)typeSource).getQualifiedName(); + if (typeSource instanceof JSClass typeSourceClass && jsClass != null) { + String qName = typeSourceClass.getQualifiedName(); return qName != null && qName.equals(jsClass.getQualifiedName()); } return false; @@ -365,13 +365,15 @@ static boolean isTheSameClass(final PsiElement typeSource, final JSClass jsClass public static final HashingStrategy QUALIFIED_NAME_HASHING_STRATEGY = new HashingStrategy<>() { @Override - public int hashCode(final JSQualifiedNamedElement object) { + @RequiredReadAction + public int hashCode(JSQualifiedNamedElement object) { return object == null || object.getQualifiedName() == null ? 0 : object.getQualifiedName().hashCode(); } @Override - public boolean equals(final JSQualifiedNamedElement o1, final JSQualifiedNamedElement o2) { - return Comparing.equal(o1.getQualifiedName(), o2.getQualifiedName()); + @RequiredReadAction + public boolean equals(JSQualifiedNamedElement o1, JSQualifiedNamedElement o2) { + return Objects.equals(o1.getQualifiedName(), o2.getQualifiedName()); } }; @@ -383,6 +385,7 @@ static void doRenameParentDirectoryIfNeeded(VirtualFile file, String name, Objec } @Nullable + @RequiredReadAction static String getQNameForMove(@Nonnull PsiElement targetElement, PsiElement elementToBind) { String qName = null; Project project = targetElement.getProject(); @@ -397,18 +400,16 @@ static String getQNameForMove(@Nonnull PsiElement targetElement, PsiElement elem String packageName = JSResolveUtil.getExpectedPackageNameFromFile(elementToBindFile, project, false); - if (targetElement instanceof JSReferenceExpression) { - JSExpression qualifier = ((JSReferenceExpression)targetElement).getQualifier(); + if (targetElement instanceof JSReferenceExpression targetRefExpr) { + JSExpression qualifier = targetRefExpr.getQualifier(); String targetElementPackageName = qualifier != null ? qualifier.getText() - : JSResolveUtil.getExpectedPackageNameFromFile(targetElement.getContainingFile().getVirtualFile(), project, false); + : JSResolveUtil.getExpectedPackageNameFromFile(targetRefExpr.getContainingFile().getVirtualFile(), project, false); if (!differentPackageName(targetElementPackageName, packageName)) { return null; } - if (qualifier == null) { - if (!(targetElement.getParent() instanceof JavaScriptImportStatementBase)) { - return null; - } + if (qualifier == null && !(targetRefExpr.getParent() instanceof JavaScriptImportStatementBase)) { + return null; } } @@ -423,14 +424,14 @@ else if (elementToBind instanceof PsiDirectoryContainer directoryContainer) { return qName; } - public static boolean differentPackageName(final String s, final String expectedPackageNameFromFile) { - final boolean sIsEmpty = isEmpty(s); - final boolean expectedIsEmpty = isEmpty(expectedPackageNameFromFile); + public static boolean differentPackageName(String s, String expectedPackageNameFromFile) { + boolean sIsEmpty = isEmpty(s); + boolean expectedIsEmpty = isEmpty(expectedPackageNameFromFile); return (sIsEmpty && !expectedIsEmpty) || (!sIsEmpty && (expectedIsEmpty || !s.equals(expectedPackageNameFromFile))); } - public static boolean isEmpty(final String expectedPackageNameFromFile) { + public static boolean isEmpty(String expectedPackageNameFromFile) { return expectedPackageNameFromFile == null || expectedPackageNameFromFile.isEmpty(); } } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSReferenceExpressionImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSReferenceExpressionImpl.java index 349492fc..aedafc52 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSReferenceExpressionImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSReferenceExpressionImpl.java @@ -21,12 +21,13 @@ import com.intellij.lang.javascript.psi.*; import com.intellij.lang.javascript.psi.resolve.*; import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.access.RequiredWriteAction; import consulo.document.util.TextRange; +import consulo.javascript.lang.psi.impl.resolve.ResolveHelper; import consulo.javascript.language.JavaScriptFeature; import consulo.javascript.language.JavaScriptLanguage; import consulo.javascript.language.JavaScriptVersionUtil; import consulo.javascript.language.psi.JavaScriptType; -import consulo.javascript.lang.psi.impl.resolve.ResolveHelper; import consulo.language.ast.ASTNode; import consulo.language.ast.TokenSet; import consulo.language.editor.refactoring.NamesValidator; @@ -39,7 +40,6 @@ import consulo.util.collection.ArrayUtil; import consulo.xml.psi.xml.XmlFile; import consulo.xml.psi.xml.XmlToken; - import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @@ -49,7 +49,7 @@ public class JSReferenceExpressionImpl extends JSExpressionImpl implements JSRef private static final TokenSet IDENTIFIER_TOKENS_SET = TokenSet.orSet(JSTokenTypes.IDENTIFIER_TOKENS_SET, TokenSet.create(JSTokenTypes.ANY_IDENTIFIER)); - public JSReferenceExpressionImpl(final ASTNode node) { + public JSReferenceExpressionImpl(ASTNode node) { super(node); } @@ -71,15 +71,14 @@ else if (resolvedElement instanceof JSFunction function) { @Nullable @RequiredReadAction public JSExpression getQualifier() { - PsiElement firstChild = getFirstChild(); - return firstChild instanceof JSExpression ? (JSExpression)firstChild : null; + return getFirstChild() instanceof JSExpression expression ? expression : null; } @Override @Nullable @RequiredReadAction public String getReferencedName() { - final PsiElement nameElement = getNameElement(); + PsiElement nameElement = getNameElement(); return nameElement != null ? nameElement.getText() : null; } @@ -87,7 +86,7 @@ public String getReferencedName() { @Nullable @RequiredReadAction public PsiElement getReferenceNameElement() { - final PsiElement element = getNameElement(); + PsiElement element = getNameElement(); return element != null ? element : null; } @@ -124,8 +123,9 @@ private PsiElement getNameElement() { } @Override + @RequiredReadAction public PsiElement resolve() { - final ResolveResult[] resolveResults = multiResolve(true); + ResolveResult[] resolveResults = multiResolve(true); return resolveResults.length == 0 || resolveResults.length > 1 ? null : resolveResults[0].getElement(); } @@ -138,22 +138,23 @@ public String getCanonicalText() { } @Override + @RequiredWriteAction public PsiElement handleElementRename(String newElementName) throws IncorrectOperationException { return this; } - @RequiredReadAction + @RequiredWriteAction PsiElement handleElementRenameInternal(String newElementName) throws IncorrectOperationException { - final int i = newElementName.lastIndexOf('.'); + int i = newElementName.lastIndexOf('.'); if (i != -1) { newElementName = newElementName.substring(0, i); } if (!NamesValidator.forLanguage(JavaScriptLanguage.INSTANCE).isIdentifier(newElementName, null)) { throw new IncorrectOperationException("Invalid javascript element name:" + newElementName); } - final PsiElement parent = getParent(); + PsiElement parent = getParent(); if (parent instanceof JSClass || parent instanceof JSFunction) { - final PsiElement node = ((JSNamedElement)parent).getNameIdentifier(); + PsiElement node = ((JSNamedElement)parent).getNameIdentifier(); if (node != null && node == this) { return this; // JSNamedElement.setName will care of things } @@ -165,15 +166,13 @@ PsiElement handleElementRenameInternal(String newElementName) throws IncorrectOp @Override @RequiredReadAction public PsiElement bindToElement(@Nonnull PsiElement element) throws IncorrectOperationException { - final PsiElement parent = getParent(); + PsiElement parent = getParent(); if (parent instanceof JSClass || parent instanceof JSNamespaceDeclaration || parent instanceof JSFunction) { - final PsiElement node = ((JSNamedElement)parent).getNameIdentifier(); + PsiElement node = ((JSNamedElement)parent).getNameIdentifier(); - if (node != null && node == this) { - if (parent == element || element instanceof PsiFile) { - return this; // JSNamedElement.setName will care of things - } + if (node != null && node == this && (parent == element || element instanceof PsiFile)) { + return this; // JSNamedElement.setName will care of things } } @@ -193,13 +192,13 @@ public PsiElement bindToElement(@Nonnull PsiElement element) throws IncorrectOpe } } - final ASTNode nameElement = JSChangeUtil.createNameIdentifier(getProject(), newName); + ASTNode nameElement = JSChangeUtil.createNameIdentifier(getProject(), newName); getNode().replaceChild(getNameElement().getNode(), nameElement); return this; } - @RequiredReadAction @Override + @RequiredReadAction public boolean isReferenceTo(PsiElement element) { ResolveHelper helper = ResolveHelper.find(this); if (helper.isResolveTo(this, element)) { @@ -211,58 +210,50 @@ public boolean isReferenceTo(PsiElement element) { return true; } -// if(element instanceof PsiNamedElement || element instanceof XmlAttributeValue) -// { -// final String referencedName = getReferencedName(); +// if (element instanceof PsiNamedElement || element instanceof XmlAttributeValue) { +// String referencedName = getReferencedName(); // -// if(referencedName != null) -// { -// if(element instanceof JSDefinitionExpression && referencedName.equals(((JSDefinitionExpression) element).getName())) -// { -// final JSExpression expression = ((JSDefinitionExpression) element).getExpression(); -// if(expression instanceof JSReferenceExpression) -// { -// final JSReferenceExpression jsReferenceExpression = (JSReferenceExpression) expression; -// final JSExpression qualifier = jsReferenceExpression.getQualifier(); -// final JSExpression myQualifier = getQualifier(); +// if (referencedName != null) { +// if (element instanceof JSDefinitionExpression definition && referencedName.equals(definition.getName())) { +// if (definition.getExpression() instanceof JSReferenceExpression jsReferenceExpression) { +// JSExpression qualifier = jsReferenceExpression.getQualifier(); +// JSExpression myQualifier = getQualifier(); // -// return (myQualifier != null || (qualifier == myQualifier || "window".equals(qualifier.getText()))); -// } -// else -// { -// return true; -// } -// } -// else if(element instanceof JSProperty && referencedName.equals(((JSProperty) element).getName())) -// { -// if(getQualifier() != null) -// { -// return true; // TODO: check for type of element to be the same -// } -// //return false; -// } -// } -// return JSResolveUtil.isReferenceTo(this, referencedName, element); -// } +// return (myQualifier != null || (qualifier == myQualifier || "window".equals(qualifier.getText()))); +// } +// else { +// return true; +// } +// } +// else if (element instanceof JSProperty property && referencedName.equals(property.getName())) { +// if (getQualifier() != null) { +// return true; // TODO: check for type of element to be the same +// } +// //return false; +// } +// } +// return JSResolveUtil.isReferenceTo(this, referencedName, element); +// } return false; } + @RequiredReadAction private void doProcessLocalDeclarations( - final JSExpression qualifier, - final ResolveProcessor processor, + JSExpression qualifier, + ResolveProcessor processor, Set features, boolean completion ) { - final JSClass jsClass = findEnclosingClass(this); + JSClass jsClass = findEnclosingClass(this); processor.configureClassScope(jsClass); - final boolean inTypeContext = JSResolveUtil.isExprInTypeContext(this); - final boolean whereTypeCanBe = inTypeContext + boolean inTypeContext = JSResolveUtil.isExprInTypeContext(this); + boolean whereTypeCanBe = inTypeContext || (completion && features.contains(JavaScriptFeature.CLASS) && JSResolveUtil.isInPlaceWhereTypeCanBeDuringCompletion(this)); PsiElement elToProcess = this; PsiElement scopeToStopAt = null; - final PsiElement parent = getParent(); + PsiElement parent = getParent(); boolean strictClassOffset = JSResolveUtil.getTopReferenceParent(parent) instanceof JSImportStatement; boolean toProcessMembers = !strictClassOffset; @@ -272,7 +263,7 @@ private void doProcessLocalDeclarations( if (jsClass == null) { if (qualifier instanceof JSThisExpression) { if (features.contains(JavaScriptFeature.CLASS)) { - final JSFunction nearestFunction = PsiTreeUtil.getParentOfType(this, JSFunction.class); + JSFunction nearestFunction = PsiTreeUtil.getParentOfType(this, JSFunction.class); elToProcess = nearestFunction != null ? nearestFunction : this; } else { @@ -292,11 +283,11 @@ else if (whereTypeCanBe) { if (!(parent instanceof JSNewExpression || parent instanceof JSAttributeList || parent instanceof JSBinaryExpression)) { toProcessMembers = false; // get function since it can have imports - final JSFunction nearestFunction = PsiTreeUtil.getParentOfType(this, JSFunction.class); + JSFunction nearestFunction = PsiTreeUtil.getParentOfType(this, JSFunction.class); elToProcess = nearestFunction != null ? nearestFunction.getFirstChild() : jsClass; } } - else if (parent instanceof JSExpressionStatement && JSResolveUtil.isPlaceWhereNsCanBe(parent)) { + else if (parent instanceof JSExpressionStatement expression && JSResolveUtil.isPlaceWhereNsCanBe(expression)) { toProcessMembers = false; elToProcess = null; } @@ -335,14 +326,13 @@ else if (parent instanceof JSExpressionStatement && JSResolveUtil.isPlaceWhereNs } } - private static @Nullable - JSClass findEnclosingClass(PsiElement elt) { + private static JSClass findEnclosingClass(PsiElement elt) { JSClass jsClass = PsiTreeUtil.getParentOfType(elt, JSClass.class); if (jsClass == null && elt != null) { - final PsiElement element = JSResolveUtil.getClassReferenceForXmlFromContext(elt.getContainingFile()); - if (element instanceof JSClass) { - jsClass = (JSClass)element; + PsiElement element = JSResolveUtil.getClassReferenceForXmlFromContext(elt.getContainingFile()); + if (element instanceof JSClass jsClassClass) { + jsClass = jsClassClass; } } return jsClass; @@ -352,14 +342,14 @@ JSClass findEnclosingClass(PsiElement elt) { @Override @RequiredReadAction public Object[] getVariants() { - final PsiFile containingFile = getContainingFile(); + PsiFile containingFile = getContainingFile(); Set features = JavaScriptVersionUtil.getFeatures(this); - final boolean classFeature = features.contains(JavaScriptFeature.CLASS); + boolean classFeature = features.contains(JavaScriptFeature.CLASS); Object[] smartVariants = JSSmartCompletionVariantsHandler.getSmartVariants(this, classFeature); if (smartVariants != null) { return smartVariants; } - final JSExpression qualifier = getResolveQualifier(); + JSExpression qualifier = getResolveQualifier(); if (qualifier == null) { if (JSResolveUtil.isSelfReference(getParent(), this)) { // Prevent Rulezz to appear @@ -369,7 +359,7 @@ public Object[] getVariants() { ResolveProcessor localProcessor = new ResolveProcessor(null, this); doProcessLocalDeclarations(qualifier, localProcessor, features, true); - final VariantsProcessor processor = new VariantsProcessor(null, containingFile, false, this); + VariantsProcessor processor = new VariantsProcessor(null, containingFile, false, this); processor.addLocalResults(localProcessor.getResults()); @@ -378,7 +368,7 @@ public Object[] getVariants() { return processor.getResult(); } else { - final MyTypeProcessor processor = new MyTypeProcessor(null, features, this); + MyTypeProcessor processor = new MyTypeProcessor(null, features, this); BaseJSSymbolProcessor.doEvalForExpr(BaseJSSymbolProcessor.getOriginalQualifier(qualifier), containingFile, processor); if (processor.resolved == MyTypeProcessor.TypeResolveState.Resolved || @@ -387,8 +377,8 @@ public Object[] getVariants() { String qualifiedNameToSkip = null; if (JSResolveUtil.isSelfReference(getParent(), this)) { PsiElement originalParent = PsiUtilBase.getOriginalElement(getParent(), JSQualifiedNamedElement.class); - if (originalParent instanceof JSQualifiedNamedElement) { - qualifiedNameToSkip = ((JSQualifiedNamedElement)originalParent).getQualifiedName(); + if (originalParent instanceof JSQualifiedNamedElement qualifiedNamedElement) { + qualifiedNameToSkip = qualifiedNamedElement.getQualifiedName(); } } return processor.getResultsAsObjects(qualifiedNameToSkip); @@ -403,9 +393,10 @@ protected void accept(@Nonnull JSElementVisitor visitor) { visitor.visitJSReferenceExpression(this); } - @Override @Nonnull - public ResolveResult[] multiResolve(final boolean incompleteCode) { + @Override + @RequiredReadAction + public ResolveResult[] multiResolve(boolean incompleteCode) { return ResolveCache.getInstance(getContainingFile().getProject()) .resolveWithCaching(this, MyResolver.INSTANCE, true, incompleteCode); } @@ -424,25 +415,24 @@ public ResolveResult[] resolve(@Nonnull JSReferenceExpressionImpl referenceExpre @RequiredReadAction private ResolveResult[] doResolve() { PsiFile containingFile = getContainingFile(); - final String referencedName = getReferencedName(); + String referencedName = getReferencedName(); if (referencedName == null) { return ResolveResult.EMPTY_ARRAY; } - final PsiElement parent = getParent(); - final JSExpression qualifier = getResolveQualifier(); + PsiElement parent = getParent(); + JSExpression qualifier = getResolveQualifier(); Set features = JavaScriptVersionUtil.getFeatures(this); - final boolean classFeature = features.contains(JavaScriptFeature.CLASS); + boolean classFeature = features.contains(JavaScriptFeature.CLASS); - final boolean localResolve = qualifier == null; - final boolean parentIsDefinition = parent instanceof JSDefinitionExpression; + boolean localResolve = qualifier == null; + boolean parentIsDefinition = parent instanceof JSDefinitionExpression; // Handle self references PsiElement currentParent = JSResolveUtil.getTopReferenceParent(parent); - if (JSResolveUtil.isSelfReference(currentParent, this)) { - if (!(currentParent instanceof JSPackageStatement) || parent == currentParent) { - return new ResolveResult[]{new JSResolveUtil.MyResolveResult(currentParent)}; - } + if (JSResolveUtil.isSelfReference(currentParent, this) + && (!(currentParent instanceof JSPackageStatement) || parent == currentParent)) { + return new ResolveResult[]{new JSResolveUtil.MyResolveResult(currentParent)}; } JSExpression realQualifier = getQualifier(); @@ -460,11 +450,11 @@ private ResolveResult[] doResolve() { if (qualifier == null) { localProcessor = new ResolveProcessor(referencedName, this); - final boolean canResolveAllLocally = !parentIsDefinition || !classFeature; + boolean canResolveAllLocally = !parentIsDefinition || !classFeature; doProcessLocalDeclarations(realQualifier, localProcessor, features, false); if (canResolveAllLocally) { - final PsiElement jsElement = localProcessor.getResult(); + PsiElement jsElement = localProcessor.getResult(); if (jsElement != null || (qualifier != null && classFeature && localProcessor.foundAllValidResults())) { return localProcessor.getResultsAsResolveResults(); @@ -482,7 +472,7 @@ private ResolveResult[] doResolve() { ); } else { - final MyTypeProcessor processor = new MyTypeProcessor(referencedName, features, this); + MyTypeProcessor processor = new MyTypeProcessor(referencedName, features, this); BaseJSSymbolProcessor.doEvalForExpr(qualifier, containingFile, processor); if (processor.resolved == MyTypeProcessor.TypeResolveState.PrefixUnknown && classFeature) { @@ -500,53 +490,53 @@ private ResolveResult[] doResolve() { } } + @RequiredReadAction private boolean isE4XAttributeReference(JSExpression realQualifier) { return getNode().findChildByType(JSTokenTypes.AT) != null || (realQualifier != null && realQualifier.getNode().findChildByType(JSTokenTypes.AT) != null); } @Nullable + @RequiredReadAction public JSExpression getResolveQualifier() { - final JSExpression qualifier = getQualifier(); + JSExpression qualifier = getQualifier(); if (qualifier instanceof JSReferenceExpression) { - final ASTNode astNode = getNode(); + ASTNode astNode = getNode(); ASTNode selection = astNode.getTreeNext(); // TODO:this is not accurate if (selection != null && selection.getElementType() == JSTokenTypes.COLON_COLON) { return null; } - final ASTNode nsSelection = astNode.findChildByType(JSTokenTypes.COLON_COLON); + ASTNode nsSelection = astNode.findChildByType(JSTokenTypes.COLON_COLON); if (nsSelection != null) { return ((JSReferenceExpressionImpl)qualifier).getResolveQualifier(); } } else if (qualifier == null) { - final ASTNode node = getNode().getFirstChildNode(); + ASTNode node = getNode().getFirstChildNode(); if (node.getElementType() == JSTokenTypes.AT) { PsiElement parent = getParent(); - if (parent instanceof JSBinaryExpression && parent.getParent().getParent() instanceof JSCallExpression call) { + if (parent instanceof JSBinaryExpression binary && binary.getParent().getParent() instanceof JSCallExpression call) { parent = call.getMethodExpression(); } - if (parent instanceof JSExpression expression) { - return expression; - } - return null; + return parent instanceof JSExpression expression ? expression : null; } } return qualifier; } + @RequiredReadAction private ResolveResult[] doOldResolve( - final PsiFile containingFile, - final String referencedName, - final PsiElement parent, - final JSExpression qualifier, - final boolean ecma, - final boolean localResolve, - final boolean parentIsDefinition, + PsiFile containingFile, + String referencedName, + PsiElement parent, + JSExpression qualifier, + boolean ecma, + boolean localResolve, + boolean parentIsDefinition, ResolveProcessor localProcessor ) { if (parentIsDefinition && ((ecma && !localResolve) || (!ecma && qualifier != null))) { @@ -561,7 +551,7 @@ private ResolveResult[] doOldResolve( // Fallback for finding some assignment in global scope } - final WalkUpResolveProcessor processor = + WalkUpResolveProcessor processor = new WalkUpResolveProcessor(referencedName, null, containingFile, false, this); if (localProcessor != null) { @@ -580,7 +570,7 @@ public boolean shouldCheckReferences() { private static class MyTypeProcessor extends ResolveProcessor implements BaseJSSymbolProcessor.TypeProcessor { private final Set myFeatures; - public MyTypeProcessor(String referenceName, final Set features, PsiElement _place) { + public MyTypeProcessor(String referenceName, Set features, PsiElement _place) { super(referenceName, _place); myFeatures = features; setToProcessHierarchy(true); @@ -603,7 +593,8 @@ public Set getFeatures() { } @Override - public void process(String type, @Nonnull final BaseJSSymbolProcessor.EvaluateContext evaluateContext, PsiElement source) { + @RequiredReadAction + public void process(@Nonnull String type, @Nonnull BaseJSSymbolProcessor.EvaluateContext evaluateContext, PsiElement source) { if (evaluateContext.visitedTypes.contains(type)) { return; } @@ -624,22 +615,22 @@ public void process(String type, @Nonnull final BaseJSSymbolProcessor.EvaluateCo setProcessStatics(false); - final PsiElement placeParent = place.getParent(); + PsiElement placeParent = place.getParent(); boolean setTypeContext = placeParent instanceof JSReferenceList; - final PsiElement clazz = source != null && (source instanceof JSClass || source instanceof XmlFile) + PsiElement clazz = source != null && (source instanceof JSClass || source instanceof XmlFile) ? source : JSClassImpl.findClassFromNamespace(type, place); if (clazz instanceof JSClass jsClass) { - final boolean statics = ecma() && JSPsiImplUtils.isTheSameClass(typeSource, jsClass) + boolean statics = ecma() && JSPsiImplUtils.isTheSameClass(typeSource, jsClass) && !(((JSReferenceExpression)place).getQualifier() instanceof JSCallExpression); setProcessStatics(statics); if (statics) { setTypeName(jsClass.getQualifiedName()); } - final boolean saveSetTypeContext = isTypeContext(); - final boolean saveToProcessMembers = isToProcessMembers(); + boolean saveSetTypeContext = isTypeContext(); + boolean saveToProcessMembers = isToProcessMembers(); if (setTypeContext) { setTypeContext(setTypeContext); @@ -647,12 +638,12 @@ public void process(String type, @Nonnull final BaseJSSymbolProcessor.EvaluateCo } try { - final boolean b = clazz.processDeclarations(this, ResolveState.initial(), clazz, place); + boolean b = clazz.processDeclarations(this, ResolveState.initial(), clazz, place); if (!b) { resolved = TypeResolveState.Resolved; } else if (ecma()) { - final JSAttributeList attrList = jsClass.getAttributeList(); + JSAttributeList attrList = jsClass.getAttributeList(); if (attrList == null || !attrList.hasModifier(JSAttributeList.ModifierType.DYNAMIC)) { resolved = TypeResolveState.Resolved; } @@ -671,7 +662,8 @@ else if (ecma()) { } @Override - public boolean execute(PsiElement element, ResolveState state) { + @RequiredReadAction + public boolean execute(@Nonnull PsiElement element, ResolveState state) { boolean b = super.execute(element, state); if (ecma() && getResult() != null) { resolved = MyTypeProcessor.TypeResolveState.Resolved; @@ -685,7 +677,7 @@ public boolean ecma() { } @Override - public void setUnknownElement(@Nonnull final PsiElement element) { + public void setUnknownElement(@Nonnull PsiElement element) { if (!(element instanceof XmlToken)) { boolean currentIsNotResolved = element == BaseJSSymbolProcessor.getOriginalQualifier(((JSReferenceExpression)place).getQualifier()); diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSReferenceListImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSReferenceListImpl.java index 50fafeb3..75a99596 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSReferenceListImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSReferenceListImpl.java @@ -19,16 +19,14 @@ import com.intellij.lang.javascript.psi.*; import com.intellij.lang.javascript.psi.resolve.JSImportHandlingUtil; import com.intellij.lang.javascript.psi.stubs.JSReferenceListStub; -import consulo.language.psi.PsiElement; -import consulo.language.psi.stub.IStubElementType; -import consulo.language.psi.stub.StubIndex; -import consulo.util.collection.ArrayUtil; import consulo.annotation.access.RequiredReadAction; import consulo.javascript.language.psi.stub.JavaScriptIndexKeys; import consulo.language.ast.ASTNode; +import consulo.language.psi.PsiElement; +import consulo.language.psi.stub.IStubElementType; +import consulo.language.psi.stub.StubIndex; import consulo.project.Project; -import org.jetbrains.annotations.NonNls; - +import consulo.util.collection.ArrayUtil; import jakarta.annotation.Nonnull; import java.util.ArrayList; @@ -38,11 +36,11 @@ * @author Maxim.Mossienko */ public class JSReferenceListImpl extends JSStubElementImpl implements JSReferenceList { - public JSReferenceListImpl(final ASTNode node) { + public JSReferenceListImpl(ASTNode node) { super(node); } - public JSReferenceListImpl(final JSReferenceListStub stub, IStubElementType stubElementType) { + public JSReferenceListImpl(JSReferenceListStub stub, IStubElementType stubElementType) { super(stub, stubElementType); } @@ -62,17 +60,17 @@ public JSReferenceExpression[] getExpressions() { @Override @RequiredReadAction public String[] getReferenceTexts() { - final JSReferenceListStub stub = getStub(); + JSReferenceListStub stub = getStub(); if (stub != null) { return stub.getReferenceTexts(); } - final JSReferenceExpression[] referenceExpressions = getExpressions(); + JSReferenceExpression[] referenceExpressions = getExpressions(); if (referenceExpressions.length == 0) { return ArrayUtil.EMPTY_STRING_ARRAY; } int count = referenceExpressions.length; - final String[] result = ArrayUtil.newStringArray(count); + String[] result = ArrayUtil.newStringArray(count); for (int i = 0; i < count; ++i) { result[i] = referenceExpressions[i].getText(); @@ -81,24 +79,24 @@ public String[] getReferenceTexts() { } @Nonnull - @RequiredReadAction @Override + @RequiredReadAction public JSClass[] getReferencedClasses() { - @NonNls String[] texts = getReferenceTexts(); + String[] texts = getReferenceTexts(); if (texts.length == 0) { return JSClass.EMPTY_ARRAY; } - final Project project = getProject(); - final ArrayList supers = new ArrayList<>(1); + Project project = getProject(); + ArrayList supers = new ArrayList<>(1); for (String text : texts) { - final int index = supers.size(); + int index = supers.size(); text = JSImportHandlingUtil.resolveTypeName(text, this); - final Collection candidates = StubIndex.getElements(JavaScriptIndexKeys.ELEMENTS_BY_QNAME, + Collection candidates = StubIndex.getElements(JavaScriptIndexKeys.ELEMENTS_BY_QNAME, text, project, getResolveScope(), @@ -108,7 +106,7 @@ public JSClass[] getReferencedClasses() { if (!(_clazz instanceof JSClass)) { continue; } - final JSClass clazz = (JSClass)_clazz; + JSClass clazz = (JSClass)_clazz; if (text.equals(clazz.getQualifiedName())) { if (clazz.canNavigate()) { @@ -121,7 +119,7 @@ public JSClass[] getReferencedClasses() { } if (candidates.size() == 0) { - final PsiElement element = JSClassImpl.findClassFromNamespace(text, this); + PsiElement element = JSClassImpl.findClassFromNamespace(text, this); if (element instanceof JSClass jsClass) { supers.add(jsClass); } From 1f3023bdde9643ad5ec3c76bf21d66b93b07b83a Mon Sep 17 00:00:00 2001 From: UNV Date: Sun, 12 Jan 2025 15:28:49 +0300 Subject: [PATCH 096/150] Support for new RegExp flags. Flag 'd', hasIndices (ES13/ES2022). Flas 's', dotAll (ES9/ES2018). Flag 'u', unicode (ES6/ES2015). Flag 'v', unicodeSets (ES13/ES2024). Flag 'y', sticky (ES6/ES2015). --- .../src/main/java/com/intellij/lang/javascript/JavaScript.flex | 2 +- .../consulo/javascript/ecmascript/lang/lexer/ecmascript6.flex | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/JavaScript.flex b/base-impl/src/main/java/com/intellij/lang/javascript/JavaScript.flex index a2725d27..2f062db9 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/JavaScript.flex +++ b/base-impl/src/main/java/com/intellij/lang/javascript/JavaScript.flex @@ -62,7 +62,7 @@ DOUBLE_QUOTED_LITERAL=\"([^\\\"\r\n]|{ESCAPE_SEQUENCE}|\\{CRLF})*(\"|\\)? ESCAPE_SEQUENCE=\\[^\r\n] GROUP = "[" [^\]]* "]" -REGEXP_LITERAL="/"([^\*\\/\r\n]|{ESCAPE_SEQUENCE}|{GROUP})([^\\/\r\n]|{ESCAPE_SEQUENCE}|{GROUP})*("/"[gimx\u]*)? +REGEXP_LITERAL="/"([^\*\\/\r\n]|{ESCAPE_SEQUENCE}|{GROUP})([^\\/\r\n]|{ESCAPE_SEQUENCE}|{GROUP})*("/"[dgimsuvy]*)? ALPHA=[:letter:] DIGIT=[0-9] XML_NAME=({ALPHA}|"_")({ALPHA}|{DIGIT}|"_"|"."|"-")*(":"({ALPHA}|"_")?({ALPHA}|{DIGIT}|"_"|"."|"-")*)? diff --git a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/lexer/ecmascript6.flex b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/lexer/ecmascript6.flex index 8631686d..6357c9d9 100644 --- a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/lexer/ecmascript6.flex +++ b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/lexer/ecmascript6.flex @@ -67,7 +67,7 @@ DOUBLE_QUOTED_LITERAL=\"([^\\\"\r\n]|{ESCAPE_SEQUENCE}|\\{CRLF})*(\"|\\)? ESCAPE_SEQUENCE=\\[^\r\n] GROUP = "[" [^\]]* "]" -REGEXP_LITERAL="/"([^\*\\/\r\n]|{ESCAPE_SEQUENCE}|{GROUP})([^\\/\r\n]|{ESCAPE_SEQUENCE}|{GROUP})*("/"[gimxu]*)? +REGEXP_LITERAL="/"([^\*\\/\r\n]|{ESCAPE_SEQUENCE}|{GROUP})([^\\/\r\n]|{ESCAPE_SEQUENCE}|{GROUP})*("/"[gimsuy]*)? INTERPOLATION_STRING_LITERAL="`" [^"`"]* "`" ALPHA=[:letter:] From 701559fb9e7591f58c9132cc4c2e767ce9b82434 Mon Sep 17 00:00:00 2001 From: UNV Date: Sun, 12 Jan 2025 18:22:43 +0300 Subject: [PATCH 097/150] Refactoring psi impl and resolve (third part). --- .../javascript/flex/XmlBackedJSClassImpl.java | 88 +++++----- .../javascript/psi/impl/JSReferenceSet.java | 141 ++++++++------- .../psi/impl/JSReturnStatementImpl.java | 7 +- .../javascript/psi/impl/JSStatementImpl.java | 2 +- .../JSStatementWithLabelReferenceImpl.java | 46 +++-- .../psi/impl/JSStubElementImpl.java | 29 +-- .../psi/impl/JSStubbedStatementImpl.java | 19 +- .../psi/impl/JSSuperExpressionImpl.java | 50 ++++-- .../psi/impl/JSSwitchStatementImpl.java | 9 +- .../psi/impl/JSThisExpressionImpl.java | 9 +- .../psi/impl/JSThrowStatementImpl.java | 9 +- .../psi/impl/JSTryStatementImpl.java | 31 ++-- .../psi/impl/JSUseNamespaceDirectiveImpl.java | 22 +-- .../psi/impl/JSVarStatementImpl.java | 17 +- .../psi/impl/JSVariableBaseImpl.java | 107 ++++++------ .../javascript/psi/impl/JSVariableImpl.java | 23 +-- .../psi/impl/JSWhileStatementImpl.java | 9 +- .../psi/impl/JSWithStatementImpl.java | 9 +- .../psi/impl/JSXmlLiteralExpressionImpl.java | 44 +++-- .../psi/impl/JSYieldStatementImpl.java | 2 +- .../javascript/psi/impl/ReferenceSupport.java | 69 ++++---- .../psi/resolve/BaseJSSymbolProcessor.java | 165 ++++++++---------- .../psi/resolve/CompletionProcessor.java | 2 +- .../psi/resolve/JSImportHandlingUtil.java | 18 +- .../JSImportedElementResolveResult.java | 3 +- .../psi/resolve/ResolveProcessor.java | 48 ++--- .../psi/resolve/VariantsProcessor.java | 46 ++--- .../psi/resolve/WalkUpResolveProcessor.java | 29 +-- .../lang/javascript/search/JSClassSearch.java | 53 +++--- .../psi/JavaScriptLambdaExpressionImpl.java | 9 +- 30 files changed, 570 insertions(+), 545 deletions(-) diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/flex/XmlBackedJSClassImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/flex/XmlBackedJSClassImpl.java index 306b36db..e61cd9bf 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/flex/XmlBackedJSClassImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/flex/XmlBackedJSClassImpl.java @@ -188,13 +188,14 @@ public JSAttributeList getAttributeList() { } @Override + @RequiredReadAction protected boolean processMembers( PsiScopeProcessor processor, ResolveState substitutor, PsiElement lastParent, PsiElement place ) { - for (JSFile file : ourCachedScripts.get(CACHED_SCRIPTS_KEY, getParent(), null).getValue()) { + for (JSFile file : CACHED_SCRIPTS.get(CACHED_SCRIPTS_KEY, getParent(), null).getValue()) { if (!file.processDeclarations(processor, ResolveState.initial(), null, place)) { return false; } @@ -223,6 +224,7 @@ public boolean processDeclarations( return b; } + @RequiredReadAction public boolean doImportFromScripts(PsiScopeProcessor processor, PsiElement place) { PsiElement context = place.getContainingFile().getContext(); if (context instanceof XmlText xmlText) { @@ -241,7 +243,7 @@ public boolean doImportFromScripts(PsiScopeProcessor processor, PsiElement place boolean adequatePlace = false; XmlTag parent = getParent(); - JSFile[] files = ourCachedScripts.get(CACHED_SCRIPTS_KEY, parent, null).getValue(); + JSFile[] files = CACHED_SCRIPTS.get(CACHED_SCRIPTS_KEY, parent, null).getValue(); for (JSFile file : files) { if (JSImportHandlingUtil.isAdequatePlaceForImport(file, place)) { if (useImports && JSImportHandlingUtil.importClass(processor, file)) { @@ -251,26 +253,20 @@ public boolean doImportFromScripts(PsiScopeProcessor processor, PsiElement place } } - if (adequatePlace && processor instanceof ResolveProcessor resolveProcessor) { - if (!processComponentNames(resolveProcessor)) { - return false; - } - } - } - - if (processor instanceof ResolveProcessor && JSResolveUtil.shouldProcessTopLevelGlobalContext(place, processor) - && notResolvingTypeViaImport) { - if (!JSResolveUtil.processGlobalThings(processor, ResolveState.initial(), place, this)) { + if (adequatePlace && processor instanceof ResolveProcessor resolveProcessor && !processComponentNames(resolveProcessor)) { return false; } } - return true; + + return !(processor instanceof ResolveProcessor) || !JSResolveUtil.shouldProcessTopLevelGlobalContext(place, processor) + || !notResolvingTypeViaImport || JSResolveUtil.processGlobalThings(processor, ResolveState.initial(), place, this); } + @RequiredReadAction public boolean processComponentNames(ResolveProcessor processor) { String s = processor.getName(); Map value = - myCachedComponentImportsCache.get(OUR_CACHED_SHORT_COMPONENTS_REF_KEY, (XmlFile)getContainingFile(), null).getValue(); + CACHED_COMPONENT_IMPORTS_CACHE.get(CACHED_SHORT_COMPONENTS_REF_KEY, (XmlFile)getContainingFile(), null).getValue(); if (s != null) { String qName = value.get(s); @@ -293,41 +289,40 @@ public boolean processComponentNames(ResolveProcessor processor) { } private static final Key> CACHED_SCRIPTS_KEY = Key.create("cached.scripts"); - private static final Key>> OUR_CACHED_SHORT_COMPONENTS_REF_KEY = Key.create("cached.component.refs"); + private static final Key>> CACHED_SHORT_COMPONENTS_REF_KEY = Key.create("cached.component.refs"); private static final String SCRIPT_TAG_NAME = "Script"; - private static final UserDataCache, XmlTag, Object> ourCachedScripts = - new UserDataCache<>() { - @Override - protected CachedValue compute(XmlTag tag, Object p) { - return CachedValuesManager.getManager(tag.getProject()).createCachedValue( - () -> { - List injectedFiles = new ArrayList<>(2); - List dependencies = new ArrayList<>(); - dependencies.add(tag); - new InjectedScriptsVisitor( - tag, - doProcessAllTags(tag), - false, - false, - (rootTag, file) -> { - injectedFiles.add(file); - dependencies.add(file); - } - ).go(); - return new CachedValueProvider.Result<>( - injectedFiles.toArray(new JSFile[injectedFiles.size()]), - dependencies.toArray() - ); - }, - false - ); - } - }; + private static final UserDataCache, XmlTag, Object> CACHED_SCRIPTS = new UserDataCache<>() { + @Override + protected CachedValue compute(XmlTag tag, Object p) { + return CachedValuesManager.getManager(tag.getProject()).createCachedValue( + () -> { + List injectedFiles = new ArrayList<>(2); + List dependencies = new ArrayList<>(); + dependencies.add(tag); + new InjectedScriptsVisitor( + tag, + doProcessAllTags(tag), + false, + false, + (rootTag, file) -> { + injectedFiles.add(file); + dependencies.add(file); + } + ).go(); + return new CachedValueProvider.Result<>( + injectedFiles.toArray(new JSFile[injectedFiles.size()]), + dependencies.toArray() + ); + }, + false + ); + } + }; - private static final UserDataCache>, XmlFile, Object> myCachedComponentImportsCache = new - UserDataCache<>() { + private static final UserDataCache>, XmlFile, Object> CACHED_COMPONENT_IMPORTS_CACHE = + new UserDataCache<>() { @Override protected CachedValue> compute(final XmlFile file, final Object p) { return CachedValuesManager.getManager(file.getProject()).createCachedValue( @@ -364,7 +359,6 @@ public void visitXmlTag(XmlTag tag) { } }; - public static boolean doProcessAllTags(XmlTag rootTag) { return JSLanguageInjector.isMozillaXulOrXblNs(rootTag != null ? rootTag.getNamespace() : null); } @@ -526,7 +520,7 @@ public PsiElement addBefore(@Nonnull PsiElement element, PsiElement anchor) thro @Nullable @RequiredReadAction public JSFile findFirstScriptTag() { - JSFile[] value = ourCachedScripts.get(CACHED_SCRIPTS_KEY, getParent(), null).getValue(); + JSFile[] value = CACHED_SCRIPTS.get(CACHED_SCRIPTS_KEY, getParent(), null).getValue(); if (value.length > 0) { return value[0]; } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSReferenceSet.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSReferenceSet.java index 41e40846..79e6f10d 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSReferenceSet.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSReferenceSet.java @@ -21,6 +21,7 @@ import com.intellij.lang.javascript.psi.*; import com.intellij.lang.javascript.psi.resolve.*; import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.access.RequiredWriteAction; import consulo.document.util.TextRange; import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.ast.ASTNode; @@ -33,8 +34,6 @@ import consulo.util.collection.ArrayUtil; import consulo.util.lang.StringUtil; import consulo.xml.psi.xml.*; -import org.jetbrains.annotations.NonNls; - import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @@ -55,11 +54,11 @@ public class JSReferenceSet { private final boolean onlyFqns; private boolean myOnlyDefaultPackage; - public JSReferenceSet(final PsiElement element, String text, int offset, boolean soft) { + public JSReferenceSet(PsiElement element, String text, int offset, boolean soft) { this(element, text, offset, soft, false, false); } - public JSReferenceSet(final PsiElement element, String text, int offset, boolean soft, boolean _onlyPackages, boolean _onlyFqns) { + public JSReferenceSet(PsiElement element, String text, int offset, boolean soft, boolean _onlyPackages, boolean _onlyFqns) { this.element = element; isSoft = soft; myReferenceText = text; @@ -68,14 +67,14 @@ public JSReferenceSet(final PsiElement element, String text, int offset, boolean onlyFqns = _onlyFqns; } - public JSReferenceSet(final PsiElement element, boolean soft) { + public JSReferenceSet(PsiElement element, boolean soft) { this.element = element; isSoft = soft; onlyPackages = false; onlyFqns = false; } - public JSReferenceSet(final PsiElement element) { + public JSReferenceSet(PsiElement element) { this(element, true); } @@ -95,7 +94,7 @@ public void update(String text, int offset) { myReferences = PsiReference.EMPTY_ARRAY; } else { - final PsiReference[] list = reparse(StringUtil.stripQuotesAroundValue(text), offset + 1); + PsiReference[] list = reparse(StringUtil.stripQuotesAroundValue(text), offset + 1); myReferenceText = text; myReferences = list; } @@ -112,7 +111,7 @@ private PsiReference[] reparse(String value, int offset) { int dotPos = findSeparatorPosition(value, lastPos); while (dotPos != -1) { - final String s = value.substring(lastPos, dotPos).trim(); + String s = value.substring(lastPos, dotPos).trim(); if (s.length() > 0) { refs.add(new MyPsiReference(s, offset + lastPos, false)); @@ -124,12 +123,12 @@ private PsiReference[] reparse(String value, int offset) { int end = value.length(); - final int lpar = value.indexOf('(', lastPos); + int lpar = value.indexOf('(', lastPos); if (lpar != -1) { end = lpar; } - final String s = value.substring(lastPos, end).trim(); + String s = value.substring(lastPos, end).trim(); if (s.length() > 0) { refs.add(new MyPsiReference(s, offset + lastPos, lastPos > 0 && value.charAt(lastPos - 1) == '#')); @@ -138,7 +137,7 @@ private PsiReference[] reparse(String value, int offset) { return refs.toArray(new PsiReference[refs.size()]); } - private static int findSeparatorPosition(final String s, int fromIndex) { + private static int findSeparatorPosition(String s, int fromIndex) { int pos = s.indexOf('.', fromIndex); // no more than one ':' and '#' symbol after last '.' if (pos == -1 && s.indexOf(":") >= fromIndex) { @@ -155,41 +154,46 @@ public boolean isSoft() { } private class MyPsiReference implements PsiPolyVariantReference, EmptyResolveMessageProvider { - private - @NonNls - String myText; + private String myText; private int myOffset; private boolean myMethodRef; - MyPsiReference(final String s, final int i, boolean methodRef) { + MyPsiReference(String s, int i, boolean methodRef) { myText = s; myOffset = i; myMethodRef = methodRef; } @Override + @RequiredReadAction public PsiElement getElement() { return element; } + @Nonnull @Override + @RequiredReadAction public TextRange getRangeInElement() { return new TextRange(myOffset, myOffset + myText.length()); } - @Override @Nullable + @Override + @RequiredReadAction public PsiElement resolve() { - final ResolveResult[] resolveResults = multiResolve(false); + ResolveResult[] resolveResults = multiResolve(false); return resolveResults.length == 1 ? resolveResults[0].getElement() : null; } + @Nonnull @Override + @RequiredReadAction public String getCanonicalText() { return myText; } @Override + @RequiredWriteAction public PsiElement handleElementRename(String newElementName) throws IncorrectOperationException { int i = newElementName.lastIndexOf('.'); if (i != -1) { @@ -199,6 +203,7 @@ public PsiElement handleElementRename(String newElementName) throws IncorrectOpe } @Override + @RequiredWriteAction public PsiElement bindToElement(@Nonnull PsiElement element) throws IncorrectOperationException { String qName = JSPsiImplUtils.getQNameForMove(getElement(), element); if (qName != null) { @@ -212,16 +217,17 @@ public PsiElement bindToElement(@Nonnull PsiElement element) throws IncorrectOpe } @Override + @RequiredReadAction public boolean isReferenceTo(PsiElement element) { - if (element instanceof PsiNamedElement || element instanceof XmlAttributeValue) { - return JSResolveUtil.isReferenceTo(this, myText, element); - } - return false; + return (element instanceof PsiNamedElement || element instanceof XmlAttributeValue) + && JSResolveUtil.isReferenceTo(this, myText, element); } + @Nonnull @Override + @RequiredReadAction public Object[] getVariants() { - final PsiFile containingFile = element.getContainingFile(); + PsiFile containingFile = element.getContainingFile(); ResolveProcessor processor = null; if (isNewResolveAndCompletion(containingFile)) { @@ -233,9 +239,10 @@ public Object[] getVariants() { return getOldVariants(containingFile, processor); } + @RequiredReadAction private Object[] getOldVariants(PsiFile containingFile, ResolveProcessor localProcessor) { - final List contextIds = fillContextIds(); - final VariantsProcessor processor = + List contextIds = fillContextIds(); + VariantsProcessor processor = new VariantsProcessor(contextIds != null ? ArrayUtil.toStringArray(contextIds) : null, containingFile, false, element); processor.setAddOnlyCompleteMatches(contextIds != null || !(element instanceof JSLiteralExpression)); @@ -244,7 +251,7 @@ private Object[] getOldVariants(PsiFile containingFile, ResolveProcessor localPr } //JSResolveUtil.processGlobalSymbols(containingFile, processor); - final PsiElement context = containingFile.getContext(); + PsiElement context = containingFile.getContext(); if (context != null) { JSResolveUtil.treeWalkUp(processor, containingFile, containingFile, element); } @@ -253,10 +260,11 @@ private Object[] getOldVariants(PsiFile containingFile, ResolveProcessor localPr } @Nullable + @RequiredReadAction private List fillContextIds() { List contextIds = null; PsiReference prevContextReference = null; - for (final PsiReference ref : myReferences) { + for (PsiReference ref : myReferences) { if (ref == this) { break; } @@ -271,21 +279,21 @@ private List fillContextIds() { PsiElement elt = findNearestClass(); if (elt instanceof JSClass jsClass && !(getElement() instanceof JSLiteralExpression)) { - final String qName = jsClass.getQualifiedName(); + String qName = jsClass.getQualifiedName(); BaseJSSymbolProcessor.addIndexListFromQName(qName, elt, contextIds = new ArrayList<>()); } } else if (contextIds != null) { PsiElement psiElement = JSResolveUtil.unwrapProxy(prevContextReference.resolve()); - if (psiElement instanceof XmlToken) { - final BaseJSSymbolProcessor.TagContextBuilder builder = - new BaseJSSymbolProcessor.TagContextBuilder(psiElement, BaseJSSymbolProcessor.HTML_ELEMENT_TYPE_NAME); + if (psiElement instanceof XmlToken xmlToken) { + BaseJSSymbolProcessor.TagContextBuilder builder = + new BaseJSSymbolProcessor.TagContextBuilder(xmlToken, BaseJSSymbolProcessor.HTML_ELEMENT_TYPE_NAME); psiElement = builder.element; } if (psiElement instanceof JSClass jsClass) { - final String qName = jsClass.getQualifiedName(); - BaseJSSymbolProcessor.addIndexListFromQName(qName, psiElement, contextIds = new ArrayList<>()); + String qName = jsClass.getQualifiedName(); + BaseJSSymbolProcessor.addIndexListFromQName(qName, jsClass, contextIds = new ArrayList<>()); } } @@ -293,6 +301,7 @@ else if (contextIds != null) { } @Override + @RequiredReadAction public boolean isSoft() { return JSReferenceSet.this.isSoft(); } @@ -300,7 +309,7 @@ public boolean isSoft() { @Override @Nonnull @RequiredReadAction - public ResolveResult[] multiResolve(final boolean incompleteCode) { + public ResolveResult[] multiResolve(boolean incompleteCode) { PsiFile containingFile = element.getContainingFile(); if (containingFile == null) { return ResolveResult.EMPTY_ARRAY; @@ -309,6 +318,7 @@ public ResolveResult[] multiResolve(final boolean incompleteCode) { .resolveWithCaching(this, MyResolver.INSTANCE, true, incompleteCode, containingFile); } + @RequiredReadAction private ResolveResult[] doResolve(PsiFile psiFile) { if ("int".equals(myText) || "uint".equals(myText) || @@ -329,9 +339,11 @@ private boolean isNewResolveAndCompletion(PsiFile psiFile) { return JSResolveUtil.isNewResolveAndCompletion(psiFile) || onlyFqns; } + @RequiredReadAction private ResolveProcessor doProcess(PsiFile psiFile, String text) { ResolveProcessor processor = new ResolveProcessor(text) { @Override + @RequiredReadAction public boolean execute(PsiElement element, ResolveState state) { if (onlyPackages) { return false; @@ -339,8 +351,8 @@ public boolean execute(PsiElement element, ResolveState state) { if (onlyFqns) { return true; } - if (myOnlyDefaultPackage && element instanceof JSQualifiedNamedElement) { - String qName = ((JSQualifiedNamedElement)element).getQualifiedName(); + if (myOnlyDefaultPackage && element instanceof JSQualifiedNamedElement qualifiedNamedElement) { + String qName = qualifiedNamedElement.getQualifiedName(); if (qName != null && !StringUtil.isEmpty(StringUtil.getPackageName(qName))) { return true; } @@ -358,18 +370,18 @@ public boolean execute(PsiElement element, ResolveState state) { PsiElement elt = findNearestClass(); if (myOffset > 0) { - if (elt instanceof JSClass && !(element instanceof JSLiteralExpression)) { + if (elt instanceof JSClass jsClass && !(element instanceof JSLiteralExpression)) { processor.setToProcessHierarchy(true); processor.setTypeContext(true); - if (!elt.processDeclarations(processor, ResolveState.initial(), elt, elt)) { + if (!jsClass.processDeclarations(processor, ResolveState.initial(), jsClass, jsClass)) { return processor; } } } - else if (elt instanceof JSClass) { + else if (elt instanceof JSClass jsClass) { processor.setTypeContext(true); processor.setToProcessMembers(false); - if (!elt.processDeclarations(processor, ResolveState.initial(), elt, elt)) { + if (!jsClass.processDeclarations(processor, ResolveState.initial(), jsClass, jsClass)) { return processor; } } @@ -378,11 +390,9 @@ else if (elt instanceof JSClass) { else { PsiElement psiElement = JSResolveUtil.unwrapProxy(myReferences[i - 1].resolve()); - if (psiElement instanceof XmlToken) { - final BaseJSSymbolProcessor.TagContextBuilder builder = new BaseJSSymbolProcessor.TagContextBuilder( - psiElement, - BaseJSSymbolProcessor.HTML_ELEMENT_TYPE_NAME - ); + if (psiElement instanceof XmlToken xmlToken) { + BaseJSSymbolProcessor.TagContextBuilder builder = + new BaseJSSymbolProcessor.TagContextBuilder(xmlToken, BaseJSSymbolProcessor.HTML_ELEMENT_TYPE_NAME); psiElement = builder.element; } if (psiElement != null) { @@ -393,13 +403,13 @@ else if (elt instanceof JSClass) { } } - if (psiFile instanceof XmlFile && !JavaScriptSupportLoader.isFlexMxmFile(psiFile)) { + if (psiFile instanceof XmlFile xmlFile && !JavaScriptSupportLoader.isFlexMxmFile(xmlFile)) { // TODO: short names during completion should be JSResolveUtil.processTopLevelClasses( processor, ResolveState.initial(), - psiFile.getProject(), - psiFile.getResolveScope(), + xmlFile.getProject(), + xmlFile.getResolveScope(), onlyFqns, false ); @@ -407,6 +417,7 @@ else if (elt instanceof JSClass) { return processor; } + @RequiredReadAction private PsiElement findNearestClass() { PsiElement elt = element; PsiElement parent; @@ -426,30 +437,28 @@ private PsiElement findNearestClass() { if (elt != null && !(elt instanceof JSClass)) { elt = elt.getNextSibling(); - if (elt instanceof PsiWhiteSpace) { - elt = elt.getNextSibling(); + if (elt instanceof PsiWhiteSpace whiteSpace) { + elt = whiteSpace.getNextSibling(); } } return elt; } + @RequiredReadAction private ResolveResult[] doOldResolve(PsiFile psiFile) { if ("*".equals(myText)) { return new ResolveResult[]{new JSResolveUtil.MyResolveResult(element)}; } - final List contextIds = fillContextIds(); + List contextIds = fillContextIds(); String text = myText; - if (getElement() instanceof JSDocTagValue) { - if (myReferences.length == 1 && - myReferences[myReferences.length - 1] == this && - !myMethodRef) { - text = StringUtil.capitalize(text); - } + if (getElement() instanceof JSDocTagValue + && myReferences.length == 1 && myReferences[myReferences.length - 1] == this && !myMethodRef) { + text = StringUtil.capitalize(text); } - final WalkUpResolveProcessor processor = new WalkUpResolveProcessor( + WalkUpResolveProcessor processor = new WalkUpResolveProcessor( text, contextIds != null ? ArrayUtil.toStringArray(contextIds) : null, psiFile, @@ -459,9 +468,9 @@ private ResolveResult[] doOldResolve(PsiFile psiFile) { processor.setAddOnlyCompleteMatches(contextIds != null || !(element instanceof JSLiteralExpression)); //JSResolveUtil.processGlobalSymbols(psiFile, processor); - final StringBuilder b = new StringBuilder(); + StringBuilder b = new StringBuilder(); - for (final PsiReference ref : myReferences) { + for (PsiReference ref : myReferences) { if (b.length() > 0) { b.append('.'); } @@ -470,9 +479,9 @@ private ResolveResult[] doOldResolve(PsiFile psiFile) { break; } } - final String str = b.toString(); + String str = b.toString(); - final PsiElement context = psiFile.getContext(); + PsiElement context = psiFile.getContext(); if (context != null && str.indexOf('.') == -1) { JSResolveUtil.treeWalkUp(processor, psiFile, psiFile, element); } @@ -493,11 +502,13 @@ static class MyResolver implements ResolveCache.PolyVariantContextResolver() { private final String label = getCanonicalText(); @Override - public boolean execute(final JSLabeledStatement element) { + @RequiredReadAction + public boolean execute(@Nonnull JSLabeledStatement element) { if (label.equals(element.getLabel())) { result[0] = element; return false; @@ -110,28 +116,35 @@ public boolean execute(final JSLabeledStatement element) { return result[0]; } + @Nonnull @Override + @RequiredReadAction public String getCanonicalText() { return labelNode.getText(); } @Override + @RequiredWriteAction public PsiElement handleElementRename(String newElementName) throws IncorrectOperationException { JSChangeUtil.doIdentifierReplacement(getElement(), labelNode, newElementName); return getElement(); } @Override + @RequiredWriteAction public PsiElement bindToElement(@Nonnull PsiElement element) throws IncorrectOperationException { return null; } @Override + @RequiredReadAction public boolean isReferenceTo(PsiElement element) { return getManager().areElementsEquivalent(resolve(), element); } + @Nonnull @Override + @RequiredReadAction public Object[] getVariants() { final List labels = new ArrayList<>(1); processElements(element -> { @@ -144,10 +157,8 @@ public Object[] getVariants() { private void processElements(PsiElementProcessor processor) { PsiElement run = getParent(); while (run != null) { - if (run instanceof JSLabeledStatement) { - if (!processor.execute((JSLabeledStatement)run)) { - return; - } + if (run instanceof JSLabeledStatement labeledStatement && !processor.execute(labeledStatement)) { + return; } if (run instanceof JSFunction) { @@ -158,6 +169,7 @@ private void processElements(PsiElementProcessor processor) } @Override + @RequiredReadAction public boolean isSoft() { return false; } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSStubElementImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSStubElementImpl.java index e8f51204..e7644816 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSStubElementImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSStubElementImpl.java @@ -20,6 +20,8 @@ import com.intellij.lang.javascript.psi.JSElement; import com.intellij.lang.javascript.psi.JSElementVisitor; import com.intellij.lang.javascript.psi.JSNamedElement; +import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.access.RequiredWriteAction; import consulo.content.scope.SearchScope; import consulo.language.ast.ASTNode; import consulo.language.impl.psi.stub.StubBasedPsiElementBase; @@ -34,18 +36,17 @@ import jakarta.annotation.Nonnull; /** - * User: max - * Date: Jan 30, 2005 - * Time: 8:23:10 PM + * @author max + * @since 2005-01-30 */ public abstract class JSStubElementImpl extends StubBasedPsiElementBase implements JSElement { public static Key ORIGINAL_ELEMENT = Key.create("ORIGINAL_NAMED_ELEMENT"); - public JSStubElementImpl(final ASTNode node) { + public JSStubElementImpl(ASTNode node) { super(node); } - public JSStubElementImpl(final T t, IStubElementType type) { + public JSStubElementImpl(T t, IStubElementType type) { super(t, type); } @@ -68,16 +69,14 @@ public SearchScope getDefaultUseScope() { @Override public ItemPresentation getPresentation() { if (this instanceof JSNamedElement namedThis) { - final NavigationItem element = getUserData(ORIGINAL_ELEMENT); - if (element == null) { - return new JSItemPresentation(namedThis); - } - return element.getPresentation(); + NavigationItem element = getUserData(ORIGINAL_ELEMENT); + return element == null ? new JSItemPresentation(namedThis) : element.getPresentation(); } return null; } @Override + @RequiredWriteAction public PsiElement addBefore(@Nonnull PsiElement element, PsiElement anchor) throws IncorrectOperationException { if (JSChangeUtil.isStatementOrComment(element)) { if (JSChangeUtil.isStatementContainer(this)) { @@ -92,6 +91,7 @@ else if (JSChangeUtil.isBlockStatementContainer(this) && anchor != null) { } @Override + @RequiredWriteAction public PsiElement addAfter(@Nonnull PsiElement element, PsiElement anchor) throws IncorrectOperationException { if (JSChangeUtil.isStatementOrComment(element)) { if (JSChangeUtil.isStatementContainer(this)) { @@ -105,6 +105,7 @@ else if (JSChangeUtil.isBlockStatementContainer(this) && anchor != null) { } @Override + @RequiredWriteAction public PsiElement addRangeBefore(@Nonnull PsiElement first, @Nonnull PsiElement last, PsiElement anchor) throws IncorrectOperationException { if (JSChangeUtil.isStatementOrComment(first)) { @@ -119,6 +120,7 @@ else if (JSChangeUtil.isBlockStatementContainer(this) && anchor != null) { } @Override + @RequiredWriteAction public PsiElement addRangeAfter(PsiElement first, PsiElement last, PsiElement anchor) throws IncorrectOperationException { if (JSChangeUtil.isStatementOrComment(first)) { if (JSChangeUtil.isStatementContainer(this)) { @@ -133,19 +135,22 @@ else if (JSChangeUtil.isBlockStatementContainer(this) && anchor != null) { } @Override + @RequiredWriteAction public PsiElement add(@Nonnull PsiElement element) throws IncorrectOperationException { return addAfter(element, null); } @Override + @RequiredWriteAction public PsiElement addRange(PsiElement first, PsiElement last) throws IncorrectOperationException { return addRangeAfter(first, last, null); } @Override + @RequiredReadAction public PsiElement replace(@Nonnull PsiElement newElement) throws IncorrectOperationException { - final ASTNode myNode = getNode(); - final ASTNode result = newElement.getNode().copyElement(); + ASTNode myNode = getNode(); + ASTNode result = newElement.getNode().copyElement(); myNode.getTreeParent().replaceChild(myNode, result); return result.getPsi(); } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSStubbedStatementImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSStubbedStatementImpl.java index 66805e1f..d91acb1e 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSStubbedStatementImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSStubbedStatementImpl.java @@ -20,6 +20,7 @@ import com.intellij.lang.javascript.psi.JSStatement; import com.intellij.lang.javascript.psi.JSSuppressionHolder; import com.intellij.lang.javascript.types.JSFileElementType; +import consulo.annotation.access.RequiredWriteAction; import consulo.language.ast.ASTNode; import consulo.language.ast.IElementType; import consulo.language.codeStyle.CodeStyleManager; @@ -31,27 +32,30 @@ * @author ven */ abstract class JSStubbedStatementImpl extends JSStubElementImpl implements JSStatement, JSSuppressionHolder { - JSStubbedStatementImpl(final ASTNode node) { + JSStubbedStatementImpl(ASTNode node) { super(node); } - JSStubbedStatementImpl(final T t, IStubElementType type) { + JSStubbedStatementImpl(T t, IStubElementType type) { super(t, type); } @Override + @RequiredWriteAction public JSStatement addStatementBefore(JSStatement toAdd) throws IncorrectOperationException { return addStatementImpl(toAdd, true); } @Override + @RequiredWriteAction public JSStatement addStatementAfter(JSStatement toAdd) throws IncorrectOperationException { return addStatementImpl(toAdd, false); } //TODO: [lesya] the formatter stuff definitely needs more intelligence - private JSStatement addStatementImpl(final JSStatement toAdd, final boolean before) throws IncorrectOperationException { - final ASTNode treeParent = getNode().getTreeParent(); + @RequiredWriteAction + private JSStatement addStatementImpl(JSStatement toAdd, boolean before) throws IncorrectOperationException { + ASTNode treeParent = getNode().getTreeParent(); IElementType elementType = treeParent.getElementType(); if (elementType != JSElementTypes.BLOCK_STATEMENT @@ -66,24 +70,25 @@ private JSStatement addStatementImpl(final JSStatement toAdd, final boolean befo } } else { - final ASTNode copy = toAdd.getNode().copyElement(); + ASTNode copy = toAdd.getNode().copyElement(); addChildAndReformat(treeParent, copy, before ? getNode() : getNode().getTreeNext()); return (JSStatement)copy.getPsi(); } } - private void addChildAndReformat(final ASTNode block, final ASTNode addedElement, final ASTNode anchorBefore) - throws IncorrectOperationException { + private void addChildAndReformat(ASTNode block, ASTNode addedElement, ASTNode anchorBefore) throws IncorrectOperationException { block.addChild(addedElement, anchorBefore); CodeStyleManager.getInstance(getProject()).reformatNewlyAddedElement(block, addedElement); } @Override + @RequiredWriteAction public JSStatement replace(JSStatement newStatement) { return JSChangeUtil.replaceStatement(this, newStatement); } @Override + @RequiredWriteAction public void delete() throws IncorrectOperationException { getNode().getTreeParent().removeChild(getNode()); } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSSuperExpressionImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSSuperExpressionImpl.java index f5651132..0c89e2d8 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSSuperExpressionImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSSuperExpressionImpl.java @@ -19,6 +19,8 @@ import com.intellij.lang.javascript.psi.*; import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; import com.intellij.lang.javascript.psi.resolve.ResolveProcessor; +import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.access.RequiredWriteAction; import consulo.language.psi.PsiElement; import consulo.language.psi.PsiReference; import consulo.language.psi.util.PsiTreeUtil; @@ -33,13 +35,11 @@ import jakarta.annotation.Nullable; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 11:24:42 PM + * @author max + * @since 2005-01-30 */ public class JSSuperExpressionImpl extends JSExpressionImpl implements JSSuperExpression { - public JSSuperExpressionImpl(final ASTNode node) { + public JSSuperExpressionImpl(ASTNode node) { super(node); } @@ -59,24 +59,27 @@ public PsiReference[] getReferences() { PsiReference[] refs = { new PsiReference() { @Override + @RequiredReadAction public PsiElement getElement() { return JSSuperExpressionImpl.this; } + @Nonnull @Override + @RequiredReadAction public TextRange getRangeInElement() { return new TextRange(0, getTextLength()); } - @Override @Nullable + @Override + @RequiredReadAction public PsiElement resolve() { - final PsiElement element = findClass(); + PsiElement element = findClass(); - if (getElement().getParent() instanceof JSCallExpression && element instanceof JSClass) { - final JSClass clazz = (JSClass)element; - final ResolveProcessor processor = new ResolveProcessor(clazz.getName(), JSSuperExpressionImpl.this); - element.processDeclarations(processor, ResolveState.initial(), clazz, getElement()); + if (getElement().getParent() instanceof JSCallExpression && element instanceof JSClass jsClass) { + ResolveProcessor processor = new ResolveProcessor(jsClass.getName(), JSSuperExpressionImpl.this); + element.processDeclarations(processor, ResolveState.initial(), jsClass, getElement()); if (processor.getResult() != null) { return processor.getResult(); } @@ -85,21 +88,22 @@ public PsiElement resolve() { return element; } + @RequiredReadAction private PsiElement findClass() { - final JSClass jsClass = PsiTreeUtil.getParentOfType(getElement(), JSClass.class); + JSClass jsClass = PsiTreeUtil.getParentOfType(getElement(), JSClass.class); if (jsClass != null) { - final JSReferenceList extendsList = jsClass.getExtendsList(); + JSReferenceList extendsList = jsClass.getExtendsList(); if (extendsList != null) { - final JSReferenceExpression[] referenceExpressions = extendsList.getExpressions(); + JSReferenceExpression[] referenceExpressions = extendsList.getExpressions(); if (referenceExpressions != null && referenceExpressions.length > 0) { - final ResolveResult[] results = referenceExpressions[0].multiResolve(false); + ResolveResult[] results = referenceExpressions[0].multiResolve(false); return results.length > 0 ? results[0].getElement() : null; } } } else { - final JSFile jsFile = PsiTreeUtil.getParentOfType(getElement(), JSFile.class); + JSFile jsFile = PsiTreeUtil.getParentOfType(getElement(), JSFile.class); if (jsFile != null) { return JSResolveUtil.getClassReferenceForXmlFromContext(jsFile); @@ -108,32 +112,40 @@ private PsiElement findClass() { return null; } + @Nonnull @Override + @RequiredReadAction public String getCanonicalText() { return getText(); } @Override - public PsiElement handleElementRename(final String newElementName) throws IncorrectOperationException { + @RequiredWriteAction + public PsiElement handleElementRename(String newElementName) throws IncorrectOperationException { return null; } @Override - public PsiElement bindToElement(@Nonnull final PsiElement element) throws IncorrectOperationException { + @RequiredWriteAction + public PsiElement bindToElement(@Nonnull PsiElement element) throws IncorrectOperationException { return null; } @Override - public boolean isReferenceTo(final PsiElement element) { + @RequiredReadAction + public boolean isReferenceTo(PsiElement element) { return false; } + @Nonnull @Override + @RequiredReadAction public Object[] getVariants() { return ArrayUtil.EMPTY_OBJECT_ARRAY; } @Override + @RequiredReadAction public boolean isSoft() { return true; } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSSwitchStatementImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSSwitchStatementImpl.java index 4591c2c4..d8dcd6ef 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSSwitchStatementImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSSwitchStatementImpl.java @@ -26,16 +26,13 @@ import jakarta.annotation.Nonnull; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 10:08:20 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public class JSSwitchStatementImpl extends JSStatementImpl implements JSSwitchStatement { private static final TokenSet CASE_CLAUSE_FILTER = TokenSet.create(JSElementTypes.CASE_CLAUSE); - public JSSwitchStatementImpl(final ASTNode node) { + public JSSwitchStatementImpl(ASTNode node) { super(node); } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSThisExpressionImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSThisExpressionImpl.java index 1c7ecb31..66777356 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSThisExpressionImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSThisExpressionImpl.java @@ -23,14 +23,11 @@ import jakarta.annotation.Nonnull; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 11:24:42 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public class JSThisExpressionImpl extends JSExpressionImpl implements JSThisExpression { - public JSThisExpressionImpl(final ASTNode node) { + public JSThisExpressionImpl(ASTNode node) { super(node); } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSThrowStatementImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSThrowStatementImpl.java index 052cd3e3..3aaf49f5 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSThrowStatementImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSThrowStatementImpl.java @@ -23,14 +23,11 @@ import jakarta.annotation.Nonnull; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 9:57:08 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public class JSThrowStatementImpl extends JSStatementImpl implements JSThrowStatement { - public JSThrowStatementImpl(final ASTNode node) { + public JSThrowStatementImpl(ASTNode node) { super(node); } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSTryStatementImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSTryStatementImpl.java index 8f997a4b..8e6da9f5 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSTryStatementImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSTryStatementImpl.java @@ -16,6 +16,7 @@ package com.intellij.lang.javascript.psi.impl; +import consulo.annotation.access.RequiredReadAction; import consulo.language.ast.ASTNode; import com.intellij.lang.javascript.JSElementTypes; import com.intellij.lang.javascript.JSTokenTypes; @@ -30,26 +31,24 @@ import jakarta.annotation.Nullable; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 9:59:44 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public class JSTryStatementImpl extends JSStatementImpl implements JSTryStatement { - private static TokenSet ourCatchesTypeSet = TokenSet.create(JSElementTypes.CATCH_BLOCK); + private static final TokenSet CATCHES_TYPE_SET = TokenSet.create(JSElementTypes.CATCH_BLOCK); - public JSTryStatementImpl(final ASTNode node) { + public JSTryStatementImpl(ASTNode node) { super(node); } @Override + @RequiredReadAction public JSStatement getStatement() { ASTNode child = getNode().getFirstChildNode(); while (child != null) { - final IElementType type = child.getElementType(); - if (child.getPsi() instanceof JSStatement) { - return (JSStatement)child.getPsi(); + IElementType type = child.getElementType(); + if (child.getPsi() instanceof JSStatement statement) { + return statement; } if (type == JSTokenTypes.FINALLY_KEYWORD) { break; @@ -61,27 +60,31 @@ public JSStatement getStatement() { @Override @Nullable + @RequiredReadAction public JSCatchBlock getCatchBlock() { - final ASTNode catchChild = getNode().findChildByType(JSElementTypes.CATCH_BLOCK); + ASTNode catchChild = getNode().findChildByType(JSElementTypes.CATCH_BLOCK); if (catchChild == null) { return null; } return (JSCatchBlock)catchChild.getPsi(); } + @Nonnull @Override + @RequiredReadAction public JSCatchBlock[] getAllCatchBlocks() { return findChildrenByClass(JSCatchBlock.class); } @Override + @RequiredReadAction public JSStatement getFinallyStatement() { ASTNode child = getNode().getFirstChildNode(); boolean foundFinally = false; while (child != null) { - final IElementType type = child.getElementType(); - if (foundFinally && child.getPsi() instanceof JSStatement) { - return (JSStatement)child.getPsi(); + IElementType type = child.getElementType(); + if (foundFinally && child.getPsi() instanceof JSStatement statement) { + return statement; } if (type == JSTokenTypes.FINALLY_KEYWORD) { foundFinally = true; diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSUseNamespaceDirectiveImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSUseNamespaceDirectiveImpl.java index a140f430..7cf92043 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSUseNamespaceDirectiveImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSUseNamespaceDirectiveImpl.java @@ -16,6 +16,7 @@ package com.intellij.lang.javascript.psi.impl; +import consulo.annotation.access.RequiredReadAction; import consulo.language.ast.ASTNode; import com.intellij.lang.javascript.JSElementTypes; import com.intellij.lang.javascript.psi.JSElementVisitor; @@ -29,14 +30,14 @@ import jakarta.annotation.Nonnull; /** - * @by Maxim.Mossienko + * @author Maxim.Mossienko */ public class JSUseNamespaceDirectiveImpl extends JSStubbedStatementImpl implements JSUseNamespaceDirective { - public JSUseNamespaceDirectiveImpl(final ASTNode node) { + public JSUseNamespaceDirectiveImpl(ASTNode node) { super(node); } - public JSUseNamespaceDirectiveImpl(final JSUseNamespaceDirectiveStub stub) { + public JSUseNamespaceDirectiveImpl(JSUseNamespaceDirectiveStub stub) { super(stub, JSElementTypes.USE_NAMESPACE_DIRECTIVE); } @@ -46,25 +47,24 @@ protected void accept(@Nonnull JSElementVisitor visitor) { } @Override + @RequiredReadAction public String getNamespaceToBeUsed() { - final JSUseNamespaceDirectiveStub stub = getStub(); + JSUseNamespaceDirectiveStub stub = getStub(); if (stub != null) { return stub.getNamespaceToUse(); } - final ASTNode node = getNode().findChildByType(JSElementTypes.REFERENCE_EXPRESSION); + ASTNode node = getNode().findChildByType(JSElementTypes.REFERENCE_EXPRESSION); return node != null ? node.getText() : null; } @Override public boolean processDeclarations( @Nonnull PsiScopeProcessor processor, - @Nonnull ResolveState state, - PsiElement lastParent, + @Nonnull ResolveState state, + PsiElement lastParent, @Nonnull PsiElement place ) { - if (processor instanceof ResolveProcessor resolveProcessor && resolveProcessor.lookingForUseNamespaces()) { - return processor.execute(this, state); - } - return true; + return !(processor instanceof ResolveProcessor resolveProcessor && resolveProcessor.lookingForUseNamespaces()) + || processor.execute(this, state); } } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSVarStatementImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSVarStatementImpl.java index 0ddd589f..8d313d9e 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSVarStatementImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSVarStatementImpl.java @@ -29,22 +29,20 @@ import jakarta.annotation.Nullable; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 9:35:47 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public class JSVarStatementImpl extends JSStubbedStatementImpl implements JSVarStatement { - public JSVarStatementImpl(final ASTNode node) { + public JSVarStatementImpl(ASTNode node) { super(node); } - public JSVarStatementImpl(final JSVarStatementStub node) { + public JSVarStatementImpl(JSVarStatementStub node) { super(node, JSElementTypes.VAR_STATEMENT); } @Override + @RequiredReadAction public JSVariable[] getVariables() { JSDestructuringElement destructuringElement = getDestructuringElement(); if (destructuringElement != null) { @@ -53,9 +51,9 @@ public JSVariable[] getVariables() { return getStubOrPsiChildren(JSElementTypes.VARIABLE, JSVariable.EMPTY_ARRAY); } - @RequiredReadAction @Nullable @Override + @RequiredReadAction public JSDestructuringElement getDestructuringElement() { return findChildByClass(JSDestructuringElement.class); } @@ -71,13 +69,14 @@ protected void accept(@Nonnull JSElementVisitor visitor) { } @Override + @RequiredReadAction public boolean processDeclarations( @Nonnull PsiScopeProcessor processor, @Nonnull ResolveState state, PsiElement lastParent, @Nonnull PsiElement place ) { - final JSVariable[] vars = getVariables(); + JSVariable[] vars = getVariables(); for (JSVariable var : vars) { if (lastParent != null && lastParent.getParent() == var) { diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSVariableBaseImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSVariableBaseImpl.java index 23faf150..4779bf23 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSVariableBaseImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSVariableBaseImpl.java @@ -23,6 +23,7 @@ import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; import com.intellij.lang.javascript.psi.stubs.JSVariableStubBase; import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.access.RequiredWriteAction; import consulo.application.util.RecursionManager; import consulo.content.scope.SearchScope; import consulo.javascript.impl.language.psi.JSStubElementType; @@ -40,11 +41,8 @@ import java.util.function.Supplier; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 8:47:58 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public class JSVariableBaseImpl, T2 extends JSVariable> extends JSStubElementImpl implements JSVariable { @@ -52,17 +50,18 @@ protected JSVariableBaseImpl(ASTNode node) { super(node); } - protected JSVariableBaseImpl(final T stub, final JSStubElementType elementType) { + protected JSVariableBaseImpl(T stub, JSStubElementType elementType) { super(stub, elementType); } @Override + @RequiredReadAction public boolean hasInitializer() { return getInitializerText() != null; } - @RequiredReadAction @Override + @RequiredReadAction public JSExpression getInitializer() { PsiElement element = findChildByType(JSTokenTypes.EQ); if (element == null) { @@ -78,43 +77,45 @@ public JSExpression getInitializer() { } @Override + @RequiredReadAction public String getInitializerText() { - final T stub = getStub(); + T stub = getStub(); if (stub != null) { return stub.getInitializerText(); } - final JSExpression expression = getInitializer(); + JSExpression expression = getInitializer(); return expression != null ? expression.getText() : null; } - @Override @Nonnull + @Override + @RequiredReadAction public SearchScope getUseScope() { return JSResolveUtil.findUseScope(this); } @Override + @RequiredReadAction public String getName() { - final T stub = getStub(); + T stub = getStub(); if (stub != null) { return stub.getName(); } - final PsiElement name = getNameIdentifier(); + PsiElement name = getNameIdentifier(); - if (name instanceof JSReferenceExpression referenceExpression) { - return referenceExpression.getReferencedName(); + if (name instanceof JSReferenceExpression refExpr) { + return refExpr.getReferencedName(); } return name != null ? name.getText() : ""; } @Override public JSAttributeList getAttributeList() { - PsiElement parent = getParent(); - if (!(parent instanceof JSVarStatement)) { - return null; + if (getParent() instanceof JSVarStatement varStatement) { + return ((JSVarStatementImpl)varStatement).getStubOrPsiChild(JSElementTypes.ATTRIBUTE_LIST); } - return ((JSVarStatementImpl)getParent()).getStubOrPsiChild(JSElementTypes.ATTRIBUTE_LIST); + return null; } @Override @@ -124,32 +125,35 @@ public void setInitializer(JSExpression expr) throws IncorrectOperationException @Nonnull @Override + @RequiredReadAction public JavaScriptType getType() { - final JSExpression initializer = getInitializer(); + JSExpression initializer = getInitializer(); if (initializer != null) { if (initializer instanceof JSObjectLiteralExpression lit) { return new JavaScriptSimpleType(getName(), lit); } - JavaScriptType javaScriptType = RecursionManager.doPreventingRecursion(this, false, new Supplier() { - @Override - @RequiredReadAction - public JavaScriptType get() { - return initializer.getType(); + JavaScriptType javaScriptType = RecursionManager.doPreventingRecursion( + this, + false, + new Supplier() { + @Override + @RequiredReadAction + public JavaScriptType get() { + return initializer.getType(); + } } - }); + ); return javaScriptType == null ? JavaScriptType.UNKNOWN : javaScriptType; } return JavaScriptType.UNKNOWN; } @Override + @RequiredReadAction public String getTypeString() { - final T stub = getStub(); - if (stub != null) { - return stub.getTypeString(); - } - return doGetType(); + T stub = getStub(); + return stub != null ? stub.getTypeString() : doGetType(); } @RequiredReadAction @@ -158,17 +162,19 @@ public JavaScriptTypeElement getTypeElement() { return JSPsiImplUtils.findTypeElement(this); } + @RequiredReadAction protected String doGetType() { return JSPsiImplUtils.getType(this); } @Override + @RequiredWriteAction public PsiElement setName(@Nonnull String name) throws IncorrectOperationException { - final PsiElement nameNode = getNameIdentifier(); + PsiElement nameNode = getNameIdentifier(); if (nameNode == null) { return this; } - final ASTNode nameElement = JSChangeUtil.createNameIdentifier(getProject(), name); + ASTNode nameElement = JSChangeUtil.createNameIdentifier(getProject(), name); getNode().replaceChild(nameNode.getNode(), nameElement); return this; } @@ -181,17 +187,18 @@ protected void accept(@Nonnull JSElementVisitor visitor) { @RequiredReadAction @Override public int getTextOffset() { - final PsiElement name = getNameIdentifier(); + PsiElement name = getNameIdentifier(); return name != null ? name.getTextOffset() : super.getTextOffset(); } @Override + @RequiredReadAction public boolean isConst() { - final T stub = getStub(); + T stub = getStub(); if (stub != null) { return stub.isConst(); } - final ASTNode parent = getNode().getTreeParent(); + ASTNode parent = getNode().getTreeParent(); if (parent.getElementType() == JSElementTypes.VAR_STATEMENT) { ASTNode node = parent.getFirstChildNode(); @@ -211,19 +218,20 @@ public boolean isConst() { } @Override + @RequiredReadAction public boolean isLocal() { - final T stub = getStub(); + T stub = getStub(); if (stub != null) { return stub.isLocal(); } - final ASTNode parent = getNode().getTreeParent(); + ASTNode parent = getNode().getTreeParent(); return parent.getElementType() == JSElementTypes.VAR_STATEMENT && parent.getFirstChildNode().getElementType() == JSTokenTypes.LET_KEYWORD; } @Override public boolean isDeprecated() { - final T stub = getStub(); + T stub = getStub(); if (stub != null) { return stub.isDeprecated(); } @@ -231,12 +239,13 @@ public boolean isDeprecated() { } @Override + @RequiredWriteAction public void delete() throws IncorrectOperationException { - final ASTNode myNode = getNode(); - final ASTNode parent = myNode.getTreeParent(); + ASTNode myNode = getNode(); + ASTNode parent = myNode.getTreeParent(); if (parent.getElementType() == JSElementTypes.VAR_STATEMENT) { - final JSVariable[] jsVariables = ((JSVarStatement)parent.getPsi()).getVariables(); + JSVariable[] jsVariables = ((JSVarStatement)parent.getPsi()).getVariables(); if (jsVariables.length == 1) { parent.getPsi().delete(); @@ -252,10 +261,10 @@ public void delete() throws IncorrectOperationException { @Override public boolean processDeclarations( - @Nonnull final PsiScopeProcessor processor, - @Nonnull final ResolveState state, - final PsiElement lastParent, - @Nonnull final PsiElement place + @Nonnull PsiScopeProcessor processor, + @Nonnull ResolveState state, + PsiElement lastParent, + @Nonnull PsiElement place ) { if (lastParent != null && lastParent.getParent() == this) { processor.handleEvent(PsiScopeProcessor.Event.SET_DECLARATION_HOLDER, this); @@ -264,12 +273,10 @@ public boolean processDeclarations( } @Override + @RequiredReadAction public String getQualifiedName() { - final T stub = getStub(); - if (stub != null) { - return stub.getQualifiedName(); - } - return JSPsiImplUtils.getQName(this); + T stub = getStub(); + return stub != null ? stub.getQualifiedName() : JSPsiImplUtils.getQName(this); } @Override diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSVariableImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSVariableImpl.java index ba78ab6f..3b0ade94 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSVariableImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSVariableImpl.java @@ -21,34 +21,34 @@ import com.intellij.lang.javascript.psi.JSPackageStatement; import com.intellij.lang.javascript.psi.JSVariable; import com.intellij.lang.javascript.psi.stubs.JSVariableStub; +import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.access.RequiredWriteAction; import consulo.language.psi.PsiElement; import consulo.language.ast.ASTNode; import consulo.language.util.IncorrectOperationException; import jakarta.annotation.Nonnull; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 8:47:58 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public class JSVariableImpl extends JSVariableBaseImpl { - public JSVariableImpl(final ASTNode node) { + public JSVariableImpl(ASTNode node) { super(node); } - public JSVariableImpl(final JSVariableStub stub) { + public JSVariableImpl(JSVariableStub stub) { super(stub, JSElementTypes.VARIABLE); } + @Nonnull @Override + @RequiredReadAction public PsiElement getNavigationElement() { - PsiElement parent = getParent().getParent(); - if (parent instanceof JSClass) { - PsiElement parentOriginalElement = parent.getNavigationElement(); + if (getParent().getParent() instanceof JSClass jsClass) { + PsiElement parentOriginalElement = jsClass.getNavigationElement(); - if (parentOriginalElement != parent) { + if (parentOriginalElement != jsClass) { JSVariable jsVariable = ((JSClass)parentOriginalElement).findFieldByName(getName()); return jsVariable != null ? jsVariable : this; } @@ -57,6 +57,7 @@ public PsiElement getNavigationElement() { } @Override + @RequiredWriteAction public PsiElement setName(@Nonnull String name) throws IncorrectOperationException { String oldName = getName(); PsiElement element = super.setName(name); diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSWhileStatementImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSWhileStatementImpl.java index 8634f9e5..a6fc239f 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSWhileStatementImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSWhileStatementImpl.java @@ -16,6 +16,7 @@ package com.intellij.lang.javascript.psi.impl; +import consulo.annotation.access.RequiredReadAction; import consulo.language.ast.ASTNode; import com.intellij.lang.javascript.psi.JSElementVisitor; import com.intellij.lang.javascript.psi.JSExpression; @@ -25,12 +26,11 @@ import jakarta.annotation.Nonnull; /** - * User: max - * Date: Jan 30, 2005 - * Time: 10:15:13 PM + * @author max + * @since 2005-01-30 */ public class JSWhileStatementImpl extends JSStatementImpl implements JSWhileStatement { - public JSWhileStatementImpl(final ASTNode node) { + public JSWhileStatementImpl(ASTNode node) { super(node); } @@ -40,6 +40,7 @@ public JSExpression getCondition() { } @Override + @RequiredReadAction public JSStatement getBody() { return findChildByClass(JSStatement.class); } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSWithStatementImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSWithStatementImpl.java index 97271ecc..890faccd 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSWithStatementImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSWithStatementImpl.java @@ -24,14 +24,11 @@ import jakarta.annotation.Nonnull; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 30, 2005 - * Time: 9:54:56 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-30 */ public class JSWithStatementImpl extends JSStatementImpl implements JSWithStatement { - public JSWithStatementImpl(final ASTNode node) { + public JSWithStatementImpl(ASTNode node) { super(node); } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSXmlLiteralExpressionImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSXmlLiteralExpressionImpl.java index f9c7ecff..d6b1df99 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSXmlLiteralExpressionImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSXmlLiteralExpressionImpl.java @@ -32,8 +32,6 @@ import consulo.language.psi.resolve.PsiElementProcessor; import consulo.language.util.IncorrectOperationException; import consulo.xml.psi.xml.*; -import org.jetbrains.annotations.NonNls; - import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @@ -51,13 +49,16 @@ protected LightXmlValue(PsiManager manager, Language language) { super(manager, language); } + @Nonnull @Override + @RequiredReadAction public TextRange getTextRange() { return TextRange.EMPTY_RANGE; } @Nonnull @Override + @RequiredReadAction public XmlTagChild[] getChildren() { return XmlTagChild.EMPTY_ARRAY; } @@ -100,7 +101,7 @@ public boolean hasCDATA() { } } - public JSXmlLiteralExpressionImpl(final ASTNode node) { + public JSXmlLiteralExpressionImpl(ASTNode node) { super(node); } @@ -133,6 +134,7 @@ protected void accept(@Nonnull JSElementVisitor visitor) { visitor.visitJSElement(this); } + @Nonnull @Override @RequiredReadAction public String getName() { @@ -142,7 +144,7 @@ public String getName() { @RequiredWriteAction @Override - public PsiElement setName(@Nonnull @NonNls String s) throws IncorrectOperationException { + public PsiElement setName(@Nonnull String s) throws IncorrectOperationException { return null; } @@ -154,6 +156,7 @@ public String getNamespace() { @Nonnull @Override + @RequiredReadAction public String getLocalName() { return getName(); } @@ -172,46 +175,41 @@ public XmlAttribute[] getAttributes() { @Nullable @Override - public XmlAttribute getAttribute(@NonNls String name, @NonNls String namespace) { + public XmlAttribute getAttribute(String name, String namespace) { return null; } @Nullable @Override - public XmlAttribute getAttribute(@NonNls String qname) { + public XmlAttribute getAttribute(String qname) { return null; } @Nullable @Override - public String getAttributeValue(@NonNls String name, @NonNls String namespace) { + public String getAttributeValue(String name, String namespace) { return null; } @Nullable @Override - public String getAttributeValue(@NonNls String qname) { + public String getAttributeValue(String qname) { return null; } @Override - public XmlAttribute setAttribute(@NonNls String name, @NonNls String namespace, @NonNls String value) + public XmlAttribute setAttribute(String name, String namespace, String value) throws IncorrectOperationException { return null; } @Override - public XmlAttribute setAttribute(@NonNls String qname, @NonNls String value) throws IncorrectOperationException { + public XmlAttribute setAttribute(String qname, String value) throws IncorrectOperationException { return null; } @Override - public XmlTag createChildTag( - @NonNls String localName, - @NonNls String namespace, - @Nullable @NonNls String bodyText, - boolean enforceNamespacesDeep - ) { + public XmlTag createChildTag(String localName, String namespace, @Nullable String bodyText, boolean enforceNamespacesDeep) { return null; } @@ -228,19 +226,19 @@ public XmlTag[] getSubTags() { @Nonnull @Override - public XmlTag[] findSubTags(@NonNls String qname) { + public XmlTag[] findSubTags(String qname) { return new XmlTag[0]; } @Nonnull @Override - public XmlTag[] findSubTags(@NonNls String localName, @Nullable String namespace) { + public XmlTag[] findSubTags(String localName, @Nullable String namespace) { return new XmlTag[0]; } @Nullable @Override - public XmlTag findFirstSubTag(@NonNls String qname) { + public XmlTag findFirstSubTag(String qname) { return null; } @@ -252,13 +250,13 @@ public String getNamespacePrefix() { @Nonnull @Override - public String getNamespaceByPrefix(@NonNls String prefix) { + public String getNamespaceByPrefix(String prefix) { return ""; } @Nullable @Override - public String getPrefixByNamespace(@NonNls String namespace) { + public String getPrefixByNamespace(String namespace) { return null; } @@ -292,7 +290,7 @@ public XmlTagValue getValue() { @Nullable @Override - public XmlNSDescriptor getNSDescriptor(@NonNls String namespace, boolean strict) { + public XmlNSDescriptor getNSDescriptor(String namespace, boolean strict) { return null; } @@ -308,7 +306,7 @@ public void collapseIfEmpty() { @Nullable @Override - public String getSubTagText(@NonNls String qname) { + public String getSubTagText(String qname) { return null; } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSYieldStatementImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSYieldStatementImpl.java index 3d631dfa..97410bc5 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSYieldStatementImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSYieldStatementImpl.java @@ -27,7 +27,7 @@ * @author maxim */ public class JSYieldStatementImpl extends JSStatementImpl implements JSYieldStatement { - public JSYieldStatementImpl(final ASTNode node) { + public JSYieldStatementImpl(ASTNode node) { super(node); } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/ReferenceSupport.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/ReferenceSupport.java index 534acd84..91aa0016 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/ReferenceSupport.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/ReferenceSupport.java @@ -16,6 +16,7 @@ package com.intellij.lang.javascript.psi.impl; +import consulo.annotation.access.RequiredReadAction; import consulo.application.util.SystemInfo; import consulo.content.base.BinariesOrderRootType; import consulo.language.psi.*; @@ -27,6 +28,7 @@ import consulo.module.content.ProjectRootManager; import consulo.module.content.layer.orderEntry.OrderEntry; import consulo.module.content.layer.orderEntry.OrderEntryWithTracking; +import consulo.platform.Platform; import consulo.project.Project; import consulo.util.lang.StringUtil; import consulo.virtualFileSystem.LocalFileSystem; @@ -38,27 +40,19 @@ import java.util.Arrays; import java.util.Collection; import java.util.List; -import java.util.function.Function; /** - * Created by IntelliJ IDEA. - * User: Maxim.Mossienko - * Date: 08.04.2009 - * Time: 20:48:38 - * To change this template use File | Settings | File Templates. + * @author Maxim.Mossienko + * @since 2009-04-08 */ public class ReferenceSupport { - public static PsiReference[] getFileRefs( - final PsiElement elt, - final PsiElement valueNode, - final int offset, - final LookupOptions lookupOptions - ) { + @RequiredReadAction + public static PsiReference[] getFileRefs(PsiElement elt, PsiElement valueNode, int offset, LookupOptions lookupOptions) { String str = StringUtil.stripQuotesAroundValue(valueNode.getText()); return getFileRefs(elt, offset, str, lookupOptions); } - public static PsiReference[] getFileRefs(final PsiElement elt, final int offset, String str, final LookupOptions lookupOptions) { + public static PsiReference[] getFileRefs(PsiElement elt, int offset, String str, LookupOptions lookupOptions) { if (lookupOptions.IGNORE_TEXT_ARTER_HASH) { int hashIndex = str.indexOf('#'); if (hashIndex != -1) { @@ -66,24 +60,24 @@ public static PsiReference[] getFileRefs(final PsiElement elt, final int offset, } } - final FileReferenceSet base = new FileReferenceSet(str, elt, offset, null, SystemInfo.isFileSystemCaseSensitive); + FileReferenceSet base = new FileReferenceSet(str, elt, offset, null, SystemInfo.isFileSystemCaseSensitive); - final boolean lookForAbsolutePath = lookupOptions.ABSOLUTE && new File(str).isAbsolute(); - final boolean startsWithSlash = str.startsWith("/"); + boolean lookForAbsolutePath = lookupOptions.ABSOLUTE && new File(str).isAbsolute(); + boolean startsWithSlash = str.startsWith("/"); base.addCustomization( FileReferenceSet.DEFAULT_PATH_EVALUATOR_OPTION, psiFile -> { - final PsiElement context = psiFile.getContext(); - if (context instanceof PsiLanguageInjectionHost) { - psiFile = context.getContainingFile(); + PsiElement context = psiFile.getContext(); + if (context instanceof PsiLanguageInjectionHost languageInjectionHost) { + psiFile = languageInjectionHost.getContainingFile(); } PsiFile originalFile = psiFile.getOriginalFile(); if (originalFile != null) { psiFile = originalFile; } - final List dirs = new ArrayList<>(); + List dirs = new ArrayList<>(); // paths relative to file should not start with slash if (lookupOptions.RELATIVE_TO_FILE && !startsWithSlash) { @@ -107,11 +101,11 @@ public static PsiReference[] getFileRefs(final PsiElement elt, final int offset, appendSdkAndLibraryClassRoots(dirs, psiFile); } - final Collection result = new ArrayList<>(); - final PsiManager psiManager = PsiManager.getInstance(psiFile.getProject()); - for (final VirtualFile dir : dirs) { + Collection result = new ArrayList<>(); + PsiManager psiManager = PsiManager.getInstance(psiFile.getProject()); + for (VirtualFile dir : dirs) { if (dir != null) { - final PsiDirectory psiDir = psiManager.findDirectory(dir); + PsiDirectory psiDir = psiManager.findDirectory(dir); if (psiDir != null) { result.add(psiDir); } @@ -123,29 +117,29 @@ public static PsiReference[] getFileRefs(final PsiElement elt, final int offset, return base.getAllReferences(); } - private static void appendFileLocation(final List dirs, final PsiFile psiFile) { - final VirtualFile file = psiFile.getVirtualFile(); + private static void appendFileLocation(List dirs, PsiFile psiFile) { + VirtualFile file = psiFile.getVirtualFile(); if (file != null) { dirs.add(file.getParent()); } } - private static void appendSourceRoots(final Collection dirs, final PsiFile psiFile) { - final VirtualFile file = psiFile.getVirtualFile(); + private static void appendSourceRoots(Collection dirs, PsiFile psiFile) { + VirtualFile file = psiFile.getVirtualFile(); if (file == null) { return; } - final Project project = psiFile.getProject(); - final ProjectFileIndex index = ProjectRootManager.getInstance(project).getFileIndex(); - final Module module = index.getModuleForFile(file); + Project project = psiFile.getProject(); + ProjectFileIndex index = ProjectRootManager.getInstance(project).getFileIndex(); + Module module = index.getModuleForFile(file); if (module != null && index.getSourceRootForFile(file) != null) { dirs.addAll(Arrays.asList(ModuleRootManager.getInstance(module).getSourceRoots())); } } - private static void appendFileSystemRoot(final Collection dirs, final Project project) { - final VirtualFile fileSystemRoot; - if (SystemInfo.isWindows) { + private static void appendFileSystemRoot(Collection dirs, Project project) { + VirtualFile fileSystemRoot; + if (Platform.current().os().isWindows()) { fileSystemRoot = ManagingFS.getInstance().findRoot("", LocalFileSystem.getInstance()); } else { @@ -154,11 +148,12 @@ private static void appendFileSystemRoot(final Collection dirs, fin dirs.add(fileSystemRoot); } + @RequiredReadAction private static void appendSdkAndLibraryClassRoots(List dirs, PsiFile psiFile) { - final Module module = ModuleUtilCore.findModuleForPsiElement(psiFile); + Module module = ModuleUtilCore.findModuleForPsiElement(psiFile); if (module != null) { - final OrderEntry[] orderEntries = ModuleRootManager.getInstance(module).getOrderEntries(); - for (final OrderEntry orderEntry : orderEntries) { + OrderEntry[] orderEntries = ModuleRootManager.getInstance(module).getOrderEntries(); + for (OrderEntry orderEntry : orderEntries) { if (orderEntry instanceof OrderEntryWithTracking) { dirs.addAll(Arrays.asList(orderEntry.getFiles(BinariesOrderRootType.getInstance()))); } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/BaseJSSymbolProcessor.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/BaseJSSymbolProcessor.java index c29d2b05..ec9f0a91 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/BaseJSSymbolProcessor.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/BaseJSSymbolProcessor.java @@ -21,9 +21,10 @@ import com.intellij.lang.javascript.index.JSSymbolUtil; import com.intellij.lang.javascript.index.JSTypeEvaluateManager; import com.intellij.lang.javascript.psi.*; +import consulo.annotation.access.RequiredReadAction; import consulo.document.util.TextRange; -import consulo.javascript.language.JavaScriptFeature; import consulo.javascript.lang.JavaScriptTokenSets; +import consulo.javascript.language.JavaScriptFeature; import consulo.javascript.language.JavaScriptVersionUtil; import consulo.javascript.language.psi.JavaScriptType; import consulo.language.ast.ASTNode; @@ -43,8 +44,6 @@ import consulo.xml.psi.xml.XmlFile; import consulo.xml.psi.xml.XmlTag; import consulo.xml.psi.xml.XmlToken; -import org.jetbrains.annotations.NonNls; - import jakarta.annotation.Nonnull; import java.util.ArrayList; @@ -72,27 +71,16 @@ abstract public class BaseJSSymbolProcessor implements PsiScopeProcessor { protected boolean myAddOnlyCompleteMatches; protected boolean myAllowPartialResults = true; - @NonNls private static final String ANY_TYPE = "*"; - @NonNls public static final String ARRAY_TYPE_NAME = "Array"; - @NonNls public static final String STRING_TYPE_NAME = "String"; - @NonNls public static final String REG_EXP_TYPE_NAME = "RegExp"; - @NonNls public static final String XML_TYPE_NAME = "XML"; - @NonNls public static final String XML_LIST_TYPE_NAME = "XMLList"; - @NonNls public static final String NUMBER_TYPE_NAME = "Number"; - @NonNls public static final String FUNCTION_TYPE_NAME = "Function"; - @NonNls public static final String HTML_ELEMENT_TYPE_NAME = "HTMLElement"; - @NonNls private static final String INT_TYPE = "int"; - @NonNls private static final String BOOLEAN_TYPE_NAME = "Boolean"; protected String myIteratedTypeName; @@ -156,8 +144,9 @@ protected boolean isFromRelevantFileOrDirectory() { //); } - private static ThreadLocal contextHolder = new ThreadLocal(); + private static ThreadLocal contextHolder = new ThreadLocal<>(); + @RequiredReadAction public static void doEvalForExpr(JSExpression rawqualifier, final PsiFile myTargetFile, TypeProcessor typeProcessor) { EvaluateContext context = contextHolder.get(); boolean contextHolderInitialized = false; @@ -187,6 +176,7 @@ else if (context.isAlreadyProcessingItem(rawqualifier)) { } } + @RequiredReadAction public static JSExpression getOriginalQualifier(JSExpression rawQualifier) { if (rawQualifier instanceof JSReferenceExpression qualifier) { final TextRange textRange = qualifier.getTextRange(); @@ -253,6 +243,7 @@ else if (rawQualifier instanceof JSCallExpression call) { return rawQualifier; } + @RequiredReadAction private static void doEvalForExpr(JSExpression rawQualifier, TypeProcessor typeProcessor, EvaluateContext context) { if (rawQualifier instanceof JSDefinitionExpression definition) { rawQualifier = definition.getExpression(); @@ -263,7 +254,7 @@ private static void doEvalForExpr(JSExpression rawQualifier, TypeProcessor typeP if (methodExpr != null) { String text = methodExpr.getText(); if (methodExpr instanceof JSReferenceExpression && typeProcessor.ecma()) { - final SimpleTypeProcessor processor = new SimpleTypeProcessor(typeProcessor.getFeatures()); + SimpleTypeProcessor processor = new SimpleTypeProcessor(typeProcessor.getFeatures()); doEvalForExpr(methodExpr, context.targetFile, processor); if (processor.type != null && !"*".equals(processor.type)) { @@ -284,8 +275,8 @@ private static void doEvalForExpr(JSExpression rawQualifier, TypeProcessor typeP if (qualifier != null && "prototype".equals(qualifier.getReferencedName())) { final JSExpression expression = qualifier.getQualifier(); - if (expression instanceof JSReferenceExpression) { - qualifier = (JSReferenceExpression)expression; + if (expression instanceof JSReferenceExpression refExpr) { + qualifier = refExpr; wasPrototype = true; } } @@ -317,16 +308,15 @@ private static void doEvalForExpr(JSExpression rawQualifier, TypeProcessor typeP String type = psiElement instanceof JSNamedElement ? null : null; if (type == null) { - if (psiElement instanceof JSVariable) { - final JSVariable jsVariable = (JSVariable)psiElement; + if (psiElement instanceof JSVariable jsVariable) { String parameterType = jsVariable.getTypeString(); if (isSomeFunctionCall(rawQualifier, parameterType)) { parameterType = ANY_TYPE; if (jsVariable.hasInitializer() - && jsVariable.getInitializer() instanceof JSFunctionExpression functionExpression) { - String typeString = functionExpression.getFunction().getReturnTypeString(); + && jsVariable.getInitializer() instanceof JSFunctionExpression functionExpr) { + String typeString = functionExpr.getFunction().getReturnTypeString(); if (isValidType(typeString)) { parameterType = typeString; } @@ -397,10 +387,10 @@ else if (psiElement instanceof JSDefinitionExpression) { addTypeFromDefExpr(typeProcessor, context, psiElement); } } - else if (psiElement instanceof XmlToken) { + else if (psiElement instanceof XmlToken xmlToken) { hasSomeType = true; - final TagContextBuilder builder = new TagContextBuilder(psiElement, HTML_ELEMENT_TYPE_NAME); + final TagContextBuilder builder = new TagContextBuilder(xmlToken, HTML_ELEMENT_TYPE_NAME); final PsiElement element = builder.element; final String typeName = builder.typeName; @@ -410,12 +400,12 @@ else if (psiElement instanceof XmlToken) { addType(typeName, typeProcessor, context, element); } - else if (psiElement instanceof JSNamedElement) { - if (psiElement instanceof JSFunction function) { + else if (psiElement instanceof JSNamedElement namedElement) { + if (namedElement instanceof JSFunction function) { final boolean inCall = rawQualifier.getParent() instanceof JSCallExpression; if (!inCall && (!function.isGetProperty() && !function.isSetProperty())) { - addType(FUNCTION_TYPE_NAME, typeProcessor, context, psiElement); + addType(FUNCTION_TYPE_NAME, typeProcessor, context, function); hasSomeType = true; if (wasPrototype) { final String name = function.getName(); @@ -451,7 +441,7 @@ else if (function.isConstructor()) { hasSomeType = true; } else { - addQNameFromElementAsType(typeProcessor, context, psiElement, false); + addQNameFromElementAsType(typeProcessor, context, function, false); } } } @@ -460,18 +450,18 @@ else if (function.isConstructor()) { boolean passSource = false; if (!hasTypeKnowledge || wasPrototype) { - addQNameFromElementAsType(typeProcessor, context, psiElement, passSource); + addQNameFromElementAsType(typeProcessor, context, namedElement, passSource); } } } - else if (psiElement instanceof JSLiteralExpression) { - getTypeFromConstant((JSExpression)psiElement, typeProcessor, context); + else if (psiElement instanceof JSLiteralExpression literal) { + getTypeFromConstant(literal, typeProcessor, context); hasSomeType = true; } - else if (psiElement instanceof JSExpressionStatement) { - final String s = JSDocumentationUtils.findType(psiElement); - if (isValidType(s)) { - addType(JSImportHandlingUtil.resolveTypeName(s, psiElement), typeProcessor, context, null); + else if (psiElement instanceof JSExpressionStatement expression) { + String exprType = JSDocumentationUtils.findType(expression); + if (isValidType(exprType)) { + addType(JSImportHandlingUtil.resolveTypeName(exprType, expression), typeProcessor, context, null); hasSomeType = true; } } @@ -494,9 +484,7 @@ else if (!context.visitedTypes.contains(type)) { JSReferenceExpression localQualifier = qualifier; while (true) { - JSExpression expression = localQualifier.getQualifier(); - - if (expression instanceof JSCallExpression call) { + if (localQualifier.getQualifier() instanceof JSCallExpression call) { JSExpression methodExpression = call.getMethodExpression(); if (methodExpression instanceof JSReferenceExpression referenceExpression) { @@ -518,10 +506,10 @@ else if ("getComponentById".equals(qualifier.getReferencedName())) { tryAddBindowsType(qualifier, typeProcessor, context); } } - else if (rawQualifier instanceof JSBinaryExpression binaryExpression) { - final IElementType sign = binaryExpression.getOperationSign(); - final JSExpression rOperand = binaryExpression.getROperand(); - final JSExpression lOperand = binaryExpression.getLOperand(); + else if (rawQualifier instanceof JSBinaryExpression binaryExpr) { + IElementType sign = binaryExpr.getOperationSign(); + JSExpression rOperand = binaryExpr.getROperand(); + JSExpression lOperand = binaryExpr.getLOperand(); if (rOperand != null) { if (sign == JSTokenTypes.AS_KEYWORD) { @@ -562,19 +550,19 @@ else if (sign == JSTokenTypes.EQ) { } } } - else if (rawQualifier instanceof JSLiteralExpression) { - getTypeFromConstant(rawQualifier, typeProcessor, context); + else if (rawQualifier instanceof JSLiteralExpression literal) { + getTypeFromConstant(literal, typeProcessor, context); } - else if (rawQualifier instanceof JSArrayLiteralExpression) { - addType(ARRAY_TYPE_NAME, typeProcessor, context, rawQualifier); + else if (rawQualifier instanceof JSArrayLiteralExpression arrayLiteral) { + addType(ARRAY_TYPE_NAME, typeProcessor, context, arrayLiteral); if (typeProcessor instanceof ResolveProcessor resolveProcessor) { - resolveProcessor.execute(rawQualifier, ResolveState.initial()); + resolveProcessor.execute(arrayLiteral, ResolveState.initial()); } } - else if (rawQualifier instanceof JSIndexedPropertyAccessExpression propertyAccessExpression) { + else if (rawQualifier instanceof JSIndexedPropertyAccessExpression propertyAccess) { final SimpleTypeProcessor lprocessor = new SimpleTypeProcessor(typeProcessor.getFeatures()); - doEvalForExpr(propertyAccessExpression.getQualifier(), lprocessor, context); + doEvalForExpr(propertyAccess.getQualifier(), lprocessor, context); if (lprocessor.result instanceof JSArrayLiteralExpression arrayLiteral && typeProcessor instanceof ResolveProcessor) { for (JSExpression expr : arrayLiteral.getExpressions()) { @@ -584,25 +572,25 @@ else if (rawQualifier instanceof JSIndexedPropertyAccessExpression propertyAcces } } - addComponentTypeFromProcessor(rawQualifier, typeProcessor, context, lprocessor); + addComponentTypeFromProcessor(propertyAccess, typeProcessor, context, lprocessor); } - else if (rawQualifier instanceof JSObjectLiteralExpression && typeProcessor instanceof ResolveProcessor) { - addTypeFromObjectLiteralExpression(rawQualifier, typeProcessor); + else if (rawQualifier instanceof JSObjectLiteralExpression objectLiteral && typeProcessor instanceof ResolveProcessor) { + addTypeFromObjectLiteralExpression(objectLiteral, typeProcessor); } - else if (rawQualifier instanceof JSParenthesizedExpression parenthesizedExpression) { - doEvalForExpr(parenthesizedExpression.getInnerExpression(), typeProcessor, context); + else if (rawQualifier instanceof JSParenthesizedExpression parenthesized) { + doEvalForExpr(parenthesized.getInnerExpression(), typeProcessor, context); } - else if (rawQualifier instanceof JSThisExpression) { - final JSClass jsClass = JSResolveUtil.getClassOfContext(rawQualifier); + else if (rawQualifier instanceof JSThisExpression thisExpr) { + JSClass jsClass = JSResolveUtil.getClassOfContext(thisExpr); if (jsClass != null) { addType(jsClass.getQualifiedName(), typeProcessor, context, jsClass); } else { - typeProcessor.setUnknownElement(rawQualifier); + typeProcessor.setUnknownElement(thisExpr); } } - else if (rawQualifier instanceof JSSuperExpression) { - final JSClass jsClass = JSResolveUtil.getClassOfContext(rawQualifier); + else if (rawQualifier instanceof JSSuperExpression superExpr) { + JSClass jsClass = JSResolveUtil.getClassOfContext(superExpr); if (jsClass != null) { final JSClass[] classes = jsClass.getSuperClasses(); if (classes.length > 0) { @@ -625,6 +613,7 @@ private static boolean isSomeFunctionCall(JSExpression rawqualifier, String para return FUNCTION_TYPE_NAME.equals(parameterType) && rawqualifier.getParent() instanceof JSCallExpression; } + @RequiredReadAction private static void addQNameFromElementAsType( TypeProcessor typeProcessor, EvaluateContext context, @@ -644,6 +633,7 @@ private static void addQNameFromElementAsType( addType(name, typeProcessor, context, passSource ? psiElement : null); } + @RequiredReadAction private static String evalComponentTypeFromArrayExpression( JSExpression rawqualifier, TypeProcessor typeProcessor, @@ -699,26 +689,23 @@ private static boolean findDef( return false; } - private static void tryAddBindowsType( - final JSReferenceExpression qualifier, - final TypeProcessor typeProcessor, - final EvaluateContext context - ) { - final PsiElement element = qualifier.getParent(); - if (!(element instanceof JSCallExpression)) { + @RequiredReadAction + private static void tryAddBindowsType(JSReferenceExpression qualifier, TypeProcessor typeProcessor, EvaluateContext context) { + PsiElement element = qualifier.getParent(); + if (!(element instanceof JSCallExpression call)) { return; } - final JSArgumentList argumentList = ((JSCallExpression)element).getArgumentList(); + JSArgumentList argumentList = call.getArgumentList(); if (argumentList == null) { return; } - final JSExpression[] expressions = argumentList.getArguments(); + JSExpression[] expressions = argumentList.getArguments(); if (expressions.length == 0 || !(expressions[0] instanceof JSLiteralExpression)) { return; } - final String val = StringUtil.stripQuotesAroundValue(expressions[0].getText()); - final PsiElement contextElement = qualifier.getContainingFile().getContext(); + String val = StringUtil.stripQuotesAroundValue(expressions[0].getText()); + PsiElement contextElement = qualifier.getContainingFile().getContext(); if (contextElement != null) { final PsiFile containingFile = contextElement.getContainingFile(); @@ -728,24 +715,28 @@ private static void tryAddBindowsType( } } + @RequiredReadAction private static boolean isBindowsXml(final PsiFile containingFile) { return containingFile.getName().endsWith(".xml") && containingFile instanceof XmlFile; } - private static void addTypeFromObjectLiteralExpression(final JSExpression rawqualifier, final TypeProcessor typeProcessor) { - final JSProperty[] properties = ((JSObjectLiteralExpression)rawqualifier).getProperties(); + private static void addTypeFromObjectLiteralExpression(JSExpression rawQualifier, TypeProcessor typeProcessor) { + JSProperty[] properties = ((JSObjectLiteralExpression)rawQualifier).getProperties(); - final boolean b = properties.length > 0 - ? rawqualifier.processDeclarations((ResolveProcessor)typeProcessor, ResolveState.initial(), properties[0], properties[0]) - : true; + boolean b = properties.length <= 0 || rawQualifier.processDeclarations( + (ResolveProcessor)typeProcessor, + ResolveState.initial(), + properties[0], + properties[0] + ); if (b) { - typeProcessor.setUnknownElement(rawqualifier); + typeProcessor.setUnknownElement(rawQualifier); } } - private static void addTypeFromDefExpr(final TypeProcessor typeProcessor, final EvaluateContext context, final PsiElement psiElement) { - final String type; - type = psiElement.getText(); + @RequiredReadAction + private static void addTypeFromDefExpr(TypeProcessor typeProcessor, EvaluateContext context, PsiElement psiElement) { + String type = psiElement.getText(); if (!context.visitedTypes.contains(type)) { context.visitedTypes.add(type); @@ -925,13 +916,9 @@ protected void doIterateHierarchy(final String typeName, final HierarchyProcesso } @Override - public boolean execute(final PsiElement element, final ResolveState state) { - if (element instanceof JSClass) { - if (!processor.processClass((JSClass)element)) { - return false; - } - } - return true; + @RequiredReadAction + public boolean execute(@Nonnull PsiElement element, final ResolveState state) { + return !(element instanceof JSClass jsClass && !processor.processClass(jsClass)); } }, ResolveState.initial(), @@ -939,12 +926,9 @@ public boolean execute(final PsiElement element, final ResolveState state) { clazz ); } - - return; } } - public static class EvaluateContext { public final PsiFile targetFile; public final Set visitedTypes = new HashSet<>(); @@ -1025,7 +1009,8 @@ public boolean ecma() { } @Override - public boolean execute(final PsiElement element, final ResolveState state) { + @RequiredReadAction + public boolean execute(@Nonnull PsiElement element, final ResolveState state) { result = element; return true; } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/CompletionProcessor.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/CompletionProcessor.java index 1f98e9e1..7e032ce5 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/CompletionProcessor.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/CompletionProcessor.java @@ -17,7 +17,7 @@ package com.intellij.lang.javascript.psi.resolve; /** - * @by Maxim.Mossienko + * @author Maxim.Mossienko */ public class CompletionProcessor extends ResolveProcessor { private boolean myInVarDcl; diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/JSImportHandlingUtil.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/JSImportHandlingUtil.java index 893332b3..c672acb8 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/JSImportHandlingUtil.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/JSImportHandlingUtil.java @@ -55,15 +55,15 @@ /** * @author Maxim.Mossienko - * Date: Jul 29, 2008 - * Time: 6:52:42 PM + * @since 2008-07-29 */ public class JSImportHandlingUtil { - public static final Key>> ourImportListCache = Key.create("js.import.list.cache"); - public static final UserDataCache>, PsiElement, Object> myImportListCache = new ImportListDataCache(); - public static final Key>> ourImportResolveCache = + public static final Key>> IMPORT_LIST_CACHE_KEY = Key.create("js.import.list.cache"); + public static final UserDataCache>, PsiElement, Object> IMPORT_LIST_CACHE = new ImportListDataCache(); + public static final Key>> IMPORT_RESOLVE_CACHE_KEY = Key.create("js.import.resolve"); - public static final UserDataCache>, PsiElement, Object> myImportResolveCache = + public static final UserDataCache>, PsiElement, Object> + IMPORT_RESOLVE_CACHE = new UserDataCache<>() { @Override protected CachedValue> compute(final PsiElement psiElement, final Object p) { @@ -238,7 +238,7 @@ JSImportedElementResolveResult resolveTypeNameUsingImports(final @Nonnull String } } - final Map map = myImportResolveCache.get(ourImportResolveCache, parent, null).getValue(); + final Map map = IMPORT_RESOLVE_CACHE.get(IMPORT_RESOLVE_CACHE_KEY, parent, null).getValue(); JSImportedElementResolveResult result = map.get(referencedName); if (result == null) { @@ -253,7 +253,7 @@ private static JSImportedElementResolveResult resolveTypeNameUsingImportsInner( final String referencedName, final PsiNamedElement parent ) { - final Map value = myImportListCache.get(ourImportListCache, parent, null).getValue(); + final Map value = IMPORT_LIST_CACHE.get(IMPORT_LIST_CACHE_KEY, parent, null).getValue(); JSImportedElementResolveResult expression = FlexImportSupport.tryFindInMap(referencedName, parent, value); if (expression != null) { return expression; @@ -359,7 +359,7 @@ public static boolean importClass(final PsiScopeProcessor processor, final PsiNa if (s != null) { if (resolveProcessor.specificallyAskingToResolveQualifiedNames()) { - final Map value = myImportListCache.get(ourImportListCache, parent, null).getValue(); + final Map value = IMPORT_LIST_CACHE.get(IMPORT_LIST_CACHE_KEY, parent, null).getValue(); JSImportedElementResolveResult resolveResult = FlexImportSupport.tryFindInMap(s, parent, value, resolveProcessor.getQualifiedNameToImport()); if (dispatchResult(resolveResult, processor)) { diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/JSImportedElementResolveResult.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/JSImportedElementResolveResult.java index 42e426da..97421ed4 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/JSImportedElementResolveResult.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/JSImportedElementResolveResult.java @@ -21,8 +21,7 @@ /** * @author Maxim.Mossienko - * Date: Jul 29, 2008 - * Time: 8:04:55 PM + * @since 2008-07-29 */ public class JSImportedElementResolveResult { public final String qualifiedName; diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/ResolveProcessor.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/ResolveProcessor.java index 165090f8..0f64fb11 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/ResolveProcessor.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/ResolveProcessor.java @@ -209,10 +209,9 @@ public boolean execute(@Nonnull PsiElement element, ResolveState state) { return true; } } - else if (!allowUnqualifiedStaticsFromInstance) { - if (attributeList != null && attributeList.hasModifier(JSAttributeList.ModifierType.STATIC)) { - return true; - } + else if (!allowUnqualifiedStaticsFromInstance && attributeList != null + && attributeList.hasModifier(JSAttributeList.ModifierType.STATIC)) { + return true; } } @@ -223,8 +222,9 @@ else if (!allowUnqualifiedStaticsFromInstance) { openedNses = JSResolveUtil.calculateOpenNses(place); } - if (openedNses != null && !openedNses.contains(attributeNs) && (!AS3_NAMESPACE.equals(attributeNs) || !ecma) // AS3 is opened by default from - // compiler settings + if (openedNses != null + && !openedNses.contains(attributeNs) + && (!AS3_NAMESPACE.equals(attributeNs) || !ecma) // AS3 is opened by default from compiler settings ) { if (attributeNs != null || defaultNsIsNotAllowed) { return true; @@ -259,11 +259,10 @@ else if (!allowUnqualifiedStaticsFromInstance) { if (placeParent instanceof JSDefinitionExpression || (myName == null && placeParent instanceof JSExpressionStatement /* when complete of setter*/) || (place instanceof JSFunction placeFunction && placeFunction.isSetProperty())) { - PsiElement clazz; - if (function.isGetProperty() - && (myName != null || !(placeParent instanceof JSExpressionStatement) - || !((clazz = function.getParent()) instanceof JSClass) || - ((JSClass)clazz).findFunctionByNameAndKind(function.getName(), JSFunction.FunctionKind.SETTER) != null)) { + if (function.isGetProperty() && (myName != null + || !(placeParent instanceof JSExpressionStatement) + || !(function.getParent() instanceof JSClass jsClass + && jsClass.findFunctionByNameAndKind(function.getName(), JSFunction.FunctionKind.SETTER) == null))) { return true; } } @@ -372,9 +371,10 @@ private JavaScriptImportStatementBase checkQualifiedNameHasNecessaryImport( if (qName != null && qName.indexOf('.') != -1) { final ResolveProcessor processor = new ResolveProcessor(myName) { @Override - public boolean execute(PsiElement element, ResolveState state) { - if (element instanceof JSQualifiedNamedElement) { - if (!qName.equals(((JSQualifiedNamedElement)element).getQualifiedName())) { + @RequiredReadAction + public boolean execute(@Nonnull PsiElement element, ResolveState state) { + if (element instanceof JSQualifiedNamedElement qualifiedNamedElement) { + if (!qName.equals(qualifiedNamedElement.getQualifiedName())) { return true; } } @@ -385,17 +385,14 @@ public boolean execute(PsiElement element, ResolveState state) { } }; - if (!JSUnusedImportsHelper.isSomeNodeThatShouldNotHaveImportsWhenQualified( - placeTopParentRefExpr, - element - )) { + if (!JSUnusedImportsHelper.isSomeNodeThatShouldNotHaveImportsWhenQualified(placeTopParentRefExpr, element)) { processor.putUserData(ASKING_FOR_QUALIFIED_IMPORT, qName); JSResolveUtil.treeWalkUp(processor, placeTopParent, placeTopParent, place); boolean noImportNoResolve = processor.getResult() == null; if (noImportNoResolve) { if (myResolveStatus == null) { - myResolveStatus = new SmartList(); + myResolveStatus = new SmartList<>(); for (int i = 0; i < previousResultsSize; ++i) { myResolveStatus.add(Boolean.TRUE); } @@ -416,14 +413,16 @@ public boolean execute(PsiElement element, ResolveState state) { return s; } + @RequiredReadAction private static PsiElement getElement(final PsiElement element) { return element instanceof XmlTag xmlTag ? xmlTag.getAttribute("name").getValueElement().getChildren()[1] : element; - } + } @Nullable - public static String getName(final PsiNamedElement element) { + @RequiredReadAction + public static String getName(PsiNamedElement element) { return element instanceof JSNamedElement ? element.getName() : null; } @@ -486,11 +485,12 @@ public void handleEvent(Event event, Object associated) { } @Override - public boolean execute(final PsiElement element, final ResolveState state) { - if (!(element instanceof JSClass)) { + @RequiredReadAction + public boolean execute(@Nonnull PsiElement element, ResolveState state) { + if (!(element instanceof JSClass jsClass)) { return true; } - String classQName = ((JSClass)element).getQualifiedName(); + String classQName = jsClass.getQualifiedName(); return qName == classQName || (qName != null && !qName.equals(classQName)); } }, diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/VariantsProcessor.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/VariantsProcessor.java index 4e0c2a37..e5213079 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/VariantsProcessor.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/VariantsProcessor.java @@ -29,7 +29,7 @@ import consulo.language.psi.resolve.ResolveState; import consulo.language.psi.util.PsiTreeUtil; import consulo.util.collection.ArrayUtil; -import org.jetbrains.annotations.NonNls; +import jakarta.annotation.Nonnull; import java.util.*; @@ -49,9 +49,9 @@ public class VariantsProcessor extends BaseJSSymbolProcessor { private boolean myAddOnlyCompleteMatchesSet; - @NonNls private static final String OBJECT_CLASS_NAME = "Object"; + @RequiredReadAction public VariantsProcessor(String[] nameIds, PsiFile targetFile, boolean skipDclsInTargetFile, PsiElement context) { super(targetFile.getOriginalFile(), skipDclsInTargetFile, context, nameIds); nameIds = myContextNameIds; @@ -115,13 +115,10 @@ else if (jsClass != null) { doIterateTypeHierarchy( nameIds, - new HierarchyProcessor() { - @Override - public boolean processClass(final JSClass clazz) { - updateCanUseOnlyCompleteMatchesFromString(clazz.getQualifiedName(), clazz, clazz); - buildIndexListFromQNameAndCorrectQName(clazz.getQualifiedName(), clazz, possibleNameComponents); - return true; - } + clazz -> { + updateCanUseOnlyCompleteMatchesFromString(clazz.getQualifiedName(), clazz, clazz); + buildIndexListFromQNameAndCorrectQName(clazz.getQualifiedName(), clazz, possibleNameComponents); + return true; } ); } @@ -132,6 +129,7 @@ public boolean processClass(final JSClass clazz) { hasSomeSmartnessAvailable = nameIdsArray != null && nameIdsArray.length > 0; } + @RequiredReadAction private void updateCanUseOnlyCompleteMatchesFromString(final String qName, Object source, PsiElement clazz) { final boolean wasSet = myAddOnlyCompleteMatchesSet; @@ -171,6 +169,7 @@ private static boolean isObjectSourceThatDoesNotGiveExactKnowledgeAboutFunctionT return source instanceof JSFunctionExpression; } + @RequiredReadAction private void updateCanUseOnlyCompleteMatches(final JSClass jsClass) { final JSAttributeList attributeList = jsClass != null ? jsClass.getAttributeList() : null; if (attributeList != null && attributeList.hasModifier(JSAttributeList.ModifierType.DYNAMIC)) { @@ -178,12 +177,13 @@ private void updateCanUseOnlyCompleteMatches(final JSClass jsClass) { } } + @RequiredReadAction public void addLocalResults(final List results) { if (results == null) { return; } - final Set processedCandidateNames = new HashSet(results.size()); + final Set processedCandidateNames = new HashSet<>(results.size()); for (PsiElement e : results) { if (e instanceof PsiNamedElement namedElement) { @@ -211,7 +211,8 @@ class CompletionTypeProcessor implements TypeProcessor { } @Override - public void process(String type, final EvaluateContext context, final PsiElement source) { + @RequiredReadAction + public void process(@Nonnull String type, EvaluateContext context, PsiElement source) { if (context.visitedTypes.contains(type)) { return; } @@ -235,7 +236,7 @@ public boolean ecma() { } @Override - public void setUnknownElement(PsiElement element) { + public void setUnknownElement(@Nonnull PsiElement element) { myUnknownElement = element; } @@ -249,17 +250,14 @@ private void addSupers(final String type, final List possibleNameIds, myIteratedTypeName = type; doIterateHierarchy( type, - new HierarchyProcessor() { - @Override - public boolean processClass(final JSClass clazz) { - String qname = clazz.getQualifiedName(); - if (!context.visitedTypes.contains(qname)) { - context.visitedTypes.add(qname); - updateCanUseOnlyCompleteMatchesFromString(qname, clazz, clazz); - buildIndexListFromQNameAndCorrectQName(clazz.getQualifiedName(), clazz, possibleNameIds); - } - return true; + clazz -> { + String qname = clazz.getQualifiedName(); + if (!context.visitedTypes.contains(qname)) { + context.visitedTypes.add(qname); + updateCanUseOnlyCompleteMatchesFromString(qname, clazz, clazz); + buildIndexListFromQNameAndCorrectQName(clazz.getQualifiedName(), clazz, possibleNameIds); } + return true; } ); @@ -284,7 +282,8 @@ public Object[] getResult() { } @Override - public boolean execute(PsiElement element, ResolveState state) { + @RequiredReadAction + public boolean execute(@Nonnull PsiElement element, ResolveState state) { if (element instanceof JSNamedElement namedElement) { addCompleteMatch(namedElement, namedElement.getName()); } @@ -334,6 +333,7 @@ private LookupElement addLookupValue(PsiElement element, final String name, JSLo } @Override + @RequiredReadAction protected String[] calculateContextIds(final JSReferenceExpression jsReferenceExpression) { return JSResolveUtil.buildNameIdsForQualifier(JSResolveUtil.getRealRefExprQualifier(jsReferenceExpression)); } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/WalkUpResolveProcessor.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/WalkUpResolveProcessor.java index 1dd11715..3548cd81 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/WalkUpResolveProcessor.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/WalkUpResolveProcessor.java @@ -21,6 +21,7 @@ import com.intellij.lang.javascript.psi.*; import com.intellij.lang.javascript.psi.impl.JSClassImpl; import com.intellij.lang.javascript.psi.impl.JSEmbeddedContentImpl; +import consulo.annotation.access.RequiredReadAction; import consulo.javascript.language.JavaScriptFeature; import consulo.language.psi.PsiElement; import consulo.language.psi.PsiFile; @@ -52,6 +53,7 @@ public class WalkUpResolveProcessor extends BaseJSSymbolProcessor { private boolean embeddedToHtmlAttr; private boolean myInNewExpression; + @RequiredReadAction public WalkUpResolveProcessor( String referenceName, String[] contextIds, @@ -157,13 +159,13 @@ public void process(@Nonnull String type, @Nonnull final EvaluateContext context } type = buildIndexListFromQNameAndCorrectQName(type, source, possibleNameIds); - doIterateHierarchy(type, new HierarchyProcessor() { - @Override - public boolean processClass(final JSClass clazz) { + doIterateHierarchy( + type, + clazz -> { buildIndexListFromQNameAndCorrectQName(clazz.getQualifiedName(), clazz, possibleNameIds); return true; } - }); + ); } @Override @@ -197,17 +199,14 @@ else if (contextIds != null) { private void iterateContextIds(final String[] contextIds, final List possibleNameIds, final boolean allowObject) { doIterateTypeHierarchy( contextIds, - new HierarchyProcessor() { - @Override - public boolean processClass(final JSClass clazz) { - buildIndexListFromQNameAndCorrectQName(clazz.getQualifiedName(), clazz, possibleNameIds); - return true; - } + clazz -> { + buildIndexListFromQNameAndCorrectQName(clazz.getQualifiedName(), clazz, possibleNameIds); + return true; } ); } - protected MatchType isAcceptableQualifiedItem(final String nameId, final PsiElement element) { + protected MatchType isAcceptableQualifiedItem(String nameId, PsiElement element) { final boolean partialMatch = myReferenceName.equals(nameId); if (partialMatch) { @@ -259,7 +258,7 @@ private void addCompleteResult(PsiElement element) { private void addCompleteResult(ResolveResult o) { if (myCompleteMatchResults == null) { - myCompleteMatchResults = new ArrayList(1); + myCompleteMatchResults = new ArrayList<>(1); } if (isFromRelevantFileOrDirectory()) { myCompleteMatchResults.add(myFileCompleteResultsCount++, o); @@ -283,7 +282,7 @@ private void addPartialResult(PsiElement element) { } } - protected boolean shouldProcessVariable(final String nameId, JSNamedElement var) { + protected boolean shouldProcessVariable(String nameId, JSNamedElement var) { return myReferenceName.equals(nameId) && !myDefinitelyNonglobalReference; } @@ -320,6 +319,7 @@ public ResolveResult[] getResults() { } @Override + @RequiredReadAction protected String[] calculateContextIds(final JSReferenceExpression jsReferenceExpression) { String[] contextNameIds = null; JSExpression qualifier = JSResolveUtil.getRealRefExprQualifier(jsReferenceExpression); @@ -348,7 +348,8 @@ public int getCompleteResultCount() { } @Override - public boolean execute(final PsiElement element, final ResolveState state) { + @RequiredReadAction + public boolean execute(@Nonnull PsiElement element, final ResolveState state) { if ((element instanceof JSNamedElement namedElement && myReferenceName.equals(namedElement.getName())) || element == myContext) { addCompleteResult(element); } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/search/JSClassSearch.java b/base-impl/src/main/java/com/intellij/lang/javascript/search/JSClassSearch.java index dff77741..2e3eeb2c 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/search/JSClassSearch.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/search/JSClassSearch.java @@ -18,6 +18,7 @@ import com.intellij.lang.javascript.psi.JSClass; import com.intellij.lang.javascript.psi.JSReferenceList; +import consulo.annotation.access.RequiredReadAction; import consulo.application.util.function.CommonProcessors; import consulo.application.util.function.Processor; import consulo.application.util.query.Query; @@ -43,7 +44,7 @@ public static class SearchParameters { private final boolean myCheckDeepInheritance; private final GlobalSearchScope myScope; - public SearchParameters(final JSClass anClass, final boolean checkDeepInheritance, GlobalSearchScope scope) { + public SearchParameters(JSClass anClass, boolean checkDeepInheritance, GlobalSearchScope scope) { myClass = anClass; myCheckDeepInheritance = checkDeepInheritance; myScope = scope; @@ -62,8 +63,8 @@ public GlobalSearchScope getScope() { } } - public static Query searchClassInheritors(final JSClass superClass, final boolean checkDeepInheritance) { - final SearchParameters parameters = new SearchParameters(superClass, checkDeepInheritance, getUseScope(superClass)); + public static Query searchClassInheritors(JSClass superClass, boolean checkDeepInheritance) { + SearchParameters parameters = new SearchParameters(superClass, checkDeepInheritance, getUseScope(superClass)); return CLASS_INHERITORS_QUERY_FACTORY.createUniqueResultsQuery(parameters); } @@ -72,15 +73,15 @@ private static GlobalSearchScope getUseScope(JSClass superClass) { return (GlobalSearchScope)searchScope; } - public static Query searchInterfaceImplementations(final JSClass superClass, final boolean checkDeepInheritance) { - final SearchParameters parameters = new SearchParameters(superClass, checkDeepInheritance, getUseScope(superClass)); + public static Query searchInterfaceImplementations(JSClass superClass, boolean checkDeepInheritance) { + SearchParameters parameters = new SearchParameters(superClass, checkDeepInheritance, getUseScope(superClass)); return INTERFACE_IMPLEMENTATIONS_QUERY_FACTORY.createUniqueResultsQuery(parameters); } // implementation private static final QueryFactory INTERFACE_IMPLEMENTATIONS_QUERY_FACTORY = new QueryFactory<>(); private static final QueryFactory CLASS_INHERITORS_QUERY_FACTORY = new QueryFactory<>(); - private static final JSClassSearch OUR_CLASS_SEARCH_EXECUTOR; + private static final JSClassSearch CLASS_SEARCH_EXECUTOR; static { INTERFACE_IMPLEMENTATIONS_QUERY_FACTORY.registerExecutor(new JSClassSearch() { @@ -90,20 +91,22 @@ protected StubIndexKey getIndexKey() { } @Override - protected JSClass[] getSupers(final JSClass candidate) { + protected JSClass[] getSupers(JSClass candidate) { return candidate.getImplementedInterfaces(); } @Override - public boolean execute(@Nonnull final SearchParameters queryParameters, @Nonnull Processor consumer) { - final Set visited = new HashSet(); // no abstract classes in ActionScript ! + @RequiredReadAction + public boolean execute(@Nonnull SearchParameters queryParameters, @Nonnull Processor consumer) { + final Set visited = new HashSet<>(); // no abstract classes in ActionScript ! if (queryParameters.isCheckDeepInheritance()) { - final Processor consumerCopy = consumer; + Processor consumerCopy = consumer; consumer = new Processor<>() { @Override + @RequiredReadAction public boolean process(JSClass jsClass) { - return consumerCopy.process(jsClass) && OUR_CLASS_SEARCH_EXECUTOR.processDirectInheritors( + return consumerCopy.process(jsClass) && CLASS_SEARCH_EXECUTOR.processDirectInheritors( jsClass, this, false, @@ -114,8 +117,8 @@ public boolean process(JSClass jsClass) { }; } - final Processor consumerToUse = consumer; - final boolean b = processDirectInheritors( + Processor consumerToUse = consumer; + boolean b = processDirectInheritors( queryParameters.getTargetClass(), consumerToUse, queryParameters.isCheckDeepInheritance(), @@ -150,14 +153,14 @@ protected Collection getInheritors( } }); - CLASS_INHERITORS_QUERY_FACTORY.registerExecutor(OUR_CLASS_SEARCH_EXECUTOR = new JSClassSearch() { + CLASS_INHERITORS_QUERY_FACTORY.registerExecutor(CLASS_SEARCH_EXECUTOR = new JSClassSearch() { @Override protected StubIndexKey getIndexKey() { return JavaScriptIndexKeys.EXTENDS_INDEX; } @Override - protected JSClass[] getSupers(final JSClass candidate) { + protected JSClass[] getSupers(JSClass candidate) { return candidate.getSuperClasses(); } @@ -175,12 +178,18 @@ protected Collection getInheritors( } @Override - public boolean execute(@Nonnull final SearchParameters queryParameters, @Nonnull final Processor consumer) { - return processDirectInheritors(queryParameters.getTargetClass(), consumer, queryParameters.isCheckDeepInheritance(), null, + @RequiredReadAction + public boolean execute(@Nonnull SearchParameters queryParameters, @Nonnull Processor consumer) { + return processDirectInheritors( + queryParameters.getTargetClass(), + consumer, + queryParameters.isCheckDeepInheritance(), + null, queryParameters.getScope() ); } + @RequiredReadAction protected boolean processDirectInheritors( final JSClass superClass, final Processor consumer, @@ -199,14 +208,14 @@ protected boolean processDirectInheritors( processed.add(superClass); Project project = superClass.getProject(); - final String name = superClass.getName(); + String name = superClass.getName(); if (name == null) { return true; } - final Set temp = processed; - final Processor processor = candidate -> { - final JSClass[] classes = getSupers(candidate); + Set temp = processed; + Processor processor = candidate -> { + JSClass[] classes = getSupers(candidate); if (classes != null) { for (JSClass superClassCandidate : classes) { if (superClassCandidate.isEquivalentTo(superClass)) { @@ -254,5 +263,5 @@ protected abstract Collection getInheritors( protected abstract StubIndexKey getIndexKey(); - protected abstract JSClass[] getSupers(final JSClass candidate); + protected abstract JSClass[] getSupers(JSClass candidate); } \ No newline at end of file diff --git a/base-impl/src/main/java/consulo/javascript/impl/language/psi/JavaScriptLambdaExpressionImpl.java b/base-impl/src/main/java/consulo/javascript/impl/language/psi/JavaScriptLambdaExpressionImpl.java index 8a8762b0..6096157e 100644 --- a/base-impl/src/main/java/consulo/javascript/impl/language/psi/JavaScriptLambdaExpressionImpl.java +++ b/base-impl/src/main/java/consulo/javascript/impl/language/psi/JavaScriptLambdaExpressionImpl.java @@ -32,7 +32,6 @@ import consulo.language.util.IncorrectOperationException; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; -import org.jetbrains.annotations.NonNls; /** * @author VISTALL @@ -52,7 +51,7 @@ public boolean processDeclarations( @Nonnull PsiElement place ) { if (lastParent != null && lastParent.getParent() == this) { - final JSParameter[] params = getParameterList().getParameters(); + JSParameter[] params = getParameterList().getParameters(); for (JSParameter param : params) { if (!processor.execute(param, state)) { return false; @@ -82,8 +81,9 @@ public JSParameterList getParameterList() { } @Override + @RequiredReadAction public JSSourceElement[] getBody() { - final ASTNode[] children = getNode().getChildren(JSElementTypes.SOURCE_ELEMENTS); + ASTNode[] children = getNode().getChildren(JSElementTypes.SOURCE_ELEMENTS); if (children.length == 0) { return JSSourceElement.EMPTY_ARRAY; } @@ -123,6 +123,7 @@ public JSAttributeList getAttributeList() { } @Override + @RequiredReadAction public String getQualifiedName() { return null; } @@ -136,7 +137,7 @@ public PsiElement getNameIdentifier() { @RequiredWriteAction @Override - public PsiElement setName(@Nonnull @NonNls String name) throws IncorrectOperationException { + public PsiElement setName(@Nonnull String name) throws IncorrectOperationException { return null; } } From bf7aafbcbdd63bbe91f8382edca3ad0165a7e8b2 Mon Sep 17 00:00:00 2001 From: UNV Date: Sun, 12 Jan 2025 19:02:36 +0300 Subject: [PATCH 098/150] Reformatting the rest of consulo-javascript module. --- .../formatter/JSCodeStyleSettings.java | 26 +++--- .../JavaScriptKeywordCompletionExtender.java | 7 +- .../javascript/index/JavaScriptIndexer.java | 17 ++-- .../internal/DefaultJavaScriptVersion.java | 5 +- .../language/JavaScriptConstants.java | 5 +- .../language/JavaScriptFeature.java | 39 ++++----- .../language/JavaScriptFileType.java | 83 +++++++++---------- .../JavaScriptFileTypeWithVersion.java | 9 +- .../language/JavaScriptLanguage.java | 64 +++++++------- .../language/JavaScriptLanguageVersion.java | 24 +++--- .../language/JavaScriptVersionUtil.java | 20 ++--- .../language/StandardJavaScriptVersion.java | 18 ++-- .../language/StandardJavaScriptVersions.java | 25 +++--- .../language/psi/JavaScriptPrimitiveType.java | 65 +++++++-------- .../language/psi/JavaScriptTypeElement.java | 7 +- .../stub/JSImplementedInterfacesIndex.java | 14 ++-- .../language/psi/stub/JSNameIndex.java | 14 ++-- .../psi/stub/JSQualifiedElementIndex.java | 14 ++-- .../language/psi/stub/JSSuperClassIndex.java | 14 ++-- .../psi/stub/JavaScriptIndexKeys.java | 13 ++- .../extension/JavaScriptModuleExtension.java | 7 +- .../JavaScriptMutableModuleExtension.java | 5 +- .../javascript/psi/JSComputedName.java | 7 +- .../psi/JSSimpleLiteralExpression.java | 9 +- .../psi/JavaScriptImportStatementBase.java | 3 +- .../psi/JavaScriptLambdaExpression.java | 3 +- .../JSPropertyNameReferenceProvider.java | 11 ++- .../javascript/psi/stubs/JSFileStub.java | 7 +- base-api/src/main/java/module-info.java | 32 +++---- 29 files changed, 255 insertions(+), 312 deletions(-) diff --git a/base-api/src/main/java/com/intellij/lang/javascript/formatter/JSCodeStyleSettings.java b/base-api/src/main/java/com/intellij/lang/javascript/formatter/JSCodeStyleSettings.java index bc71236b..bfed45b3 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/formatter/JSCodeStyleSettings.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/formatter/JSCodeStyleSettings.java @@ -21,21 +21,19 @@ /** * @author Maxim.Mossienko - * Date: Mar 12, 2008 - * Time: 10:25:17 PM + * Date: Mar 12, 2008 + * Time: 10:25:17 PM */ -public class JSCodeStyleSettings extends CustomCodeStyleSettings -{ - public int INDENT_PACKAGE_CHILDREN = DO_NOT_INDENT; - public boolean USE_SEMICOLON_AFTER_STATEMENT = true; - public String FIELD_PREFIX = "_"; - public String PROPERTY_PREFIX = ""; +public class JSCodeStyleSettings extends CustomCodeStyleSettings { + public int INDENT_PACKAGE_CHILDREN = DO_NOT_INDENT; + public boolean USE_SEMICOLON_AFTER_STATEMENT = true; + public String FIELD_PREFIX = "_"; + public String PROPERTY_PREFIX = ""; - public static final int DO_NOT_INDENT = 0; - public static final int INDENT = 1; + public static final int DO_NOT_INDENT = 0; + public static final int INDENT = 1; - public JSCodeStyleSettings(CodeStyleSettings container) - { - super("JSCodeStyleSettings", container); - } + public JSCodeStyleSettings(CodeStyleSettings container) { + super("JSCodeStyleSettings", container); + } } diff --git a/base-api/src/main/java/consulo/javascript/ide/completion/JavaScriptKeywordCompletionExtender.java b/base-api/src/main/java/consulo/javascript/ide/completion/JavaScriptKeywordCompletionExtender.java index afb75a91..8425e016 100644 --- a/base-api/src/main/java/consulo/javascript/ide/completion/JavaScriptKeywordCompletionExtender.java +++ b/base-api/src/main/java/consulo/javascript/ide/completion/JavaScriptKeywordCompletionExtender.java @@ -14,9 +14,8 @@ * @since 2019-12-17 */ @ExtensionAPI(ComponentScope.APPLICATION) -public interface JavaScriptKeywordCompletionExtender -{ - ExtensionPointName EP_NAME = ExtensionPointName.create(JavaScriptKeywordCompletionExtender.class); +public interface JavaScriptKeywordCompletionExtender { + ExtensionPointName EP_NAME = ExtensionPointName.create(JavaScriptKeywordCompletionExtender.class); - void fillCompletion(@Nonnull CompletionParameters parameters, ProcessingContext context, @Nonnull CompletionResultSet result); + void fillCompletion(@Nonnull CompletionParameters parameters, ProcessingContext context, @Nonnull CompletionResultSet result); } diff --git a/base-api/src/main/java/consulo/javascript/index/JavaScriptIndexer.java b/base-api/src/main/java/consulo/javascript/index/JavaScriptIndexer.java index cc8cf1ed..a0c8ea3e 100644 --- a/base-api/src/main/java/consulo/javascript/index/JavaScriptIndexer.java +++ b/base-api/src/main/java/consulo/javascript/index/JavaScriptIndexer.java @@ -12,16 +12,13 @@ * @since 19.07.2015 */ @ExtensionAPI(ComponentScope.APPLICATION) -public abstract class JavaScriptIndexer -{ - public static final ExtensionPointName EP_NAME = ExtensionPointName.create(JavaScriptIndexer.class); +public abstract class JavaScriptIndexer { + public static final ExtensionPointName EP_NAME = ExtensionPointName.create(JavaScriptIndexer.class); - public void indexFile(@Nonnull JSFileStub fileStub, @Nonnull final IndexSink sink) - { - } + public void indexFile(@Nonnull JSFileStub fileStub, @Nonnull final IndexSink sink) { + } - public int getVersion() - { - return 0; - } + public int getVersion() { + return 0; + } } diff --git a/base-api/src/main/java/consulo/javascript/internal/DefaultJavaScriptVersion.java b/base-api/src/main/java/consulo/javascript/internal/DefaultJavaScriptVersion.java index bcd97441..73c18617 100644 --- a/base-api/src/main/java/consulo/javascript/internal/DefaultJavaScriptVersion.java +++ b/base-api/src/main/java/consulo/javascript/internal/DefaultJavaScriptVersion.java @@ -2,10 +2,9 @@ /** * Marker for default javascript file version if not selected - * + * * @author VISTALL * @since 31/08/2023 */ -public interface DefaultJavaScriptVersion -{ +public interface DefaultJavaScriptVersion { } diff --git a/base-api/src/main/java/consulo/javascript/language/JavaScriptConstants.java b/base-api/src/main/java/consulo/javascript/language/JavaScriptConstants.java index 2362dcdb..198434cc 100644 --- a/base-api/src/main/java/consulo/javascript/language/JavaScriptConstants.java +++ b/base-api/src/main/java/consulo/javascript/language/JavaScriptConstants.java @@ -4,7 +4,6 @@ * @author VISTALL * @since 15.02.2016 */ -public interface JavaScriptConstants -{ - String USE_STRICT = "use strict"; +public interface JavaScriptConstants { + String USE_STRICT = "use strict"; } diff --git a/base-api/src/main/java/consulo/javascript/language/JavaScriptFeature.java b/base-api/src/main/java/consulo/javascript/language/JavaScriptFeature.java index 185ebb03..fdb95933 100644 --- a/base-api/src/main/java/consulo/javascript/language/JavaScriptFeature.java +++ b/base-api/src/main/java/consulo/javascript/language/JavaScriptFeature.java @@ -22,28 +22,25 @@ * @author VISTALL * @since 23.02.2016 */ -public enum JavaScriptFeature -{ - CLASS("Classes"), - OCTAL_LITERAL("Octal literals"), - BINARY_LITERAL("Binary literals"), - PARAMETER_DEFAULT_VALUE("Default parameter values"), - REST_PARAMETER("Rest parameters"), - SPREAD_OPERATOR("Spread operator"), - OPTIONAL_CHAINING_OPERATOR("Optional chaining operator"), - FUNCTION_PROPERTY("Function property"), - EXPONENTIATION_OPERATOR("Exponentiation operator"); +public enum JavaScriptFeature { + CLASS("Classes"), + OCTAL_LITERAL("Octal literals"), + BINARY_LITERAL("Binary literals"), + PARAMETER_DEFAULT_VALUE("Default parameter values"), + REST_PARAMETER("Rest parameters"), + SPREAD_OPERATOR("Spread operator"), + OPTIONAL_CHAINING_OPERATOR("Optional chaining operator"), + FUNCTION_PROPERTY("Function property"), + EXPONENTIATION_OPERATOR("Exponentiation operator"); - private String myName; + private String myName; - JavaScriptFeature(String name) - { - myName = name; - } + JavaScriptFeature(String name) { + myName = name; + } - @Nonnull - public String getName() - { - return myName; - } + @Nonnull + public String getName() { + return myName; + } } diff --git a/base-api/src/main/java/consulo/javascript/language/JavaScriptFileType.java b/base-api/src/main/java/consulo/javascript/language/JavaScriptFileType.java index 18a0eec0..81d8d4b7 100644 --- a/base-api/src/main/java/consulo/javascript/language/JavaScriptFileType.java +++ b/base-api/src/main/java/consulo/javascript/language/JavaScriptFileType.java @@ -36,57 +36,48 @@ * Date: Jan 27, 2005 * Time: 6:02:59 PM */ -public class JavaScriptFileType extends LanguageFileType implements JavaScriptFileTypeWithVersion -{ - public static final JavaScriptFileType INSTANCE = new JavaScriptFileType(); +public class JavaScriptFileType extends LanguageFileType implements JavaScriptFileTypeWithVersion { + public static final JavaScriptFileType INSTANCE = new JavaScriptFileType(); - public JavaScriptFileType() - { - super(JavaScriptLanguage.INSTANCE); - } + public JavaScriptFileType() { + super(JavaScriptLanguage.INSTANCE); + } - @Override - @Nonnull - public String getId() - { - return "JavaScript"; - } + @Override + @Nonnull + public String getId() { + return "JavaScript"; + } - @Override - @Nonnull - public LocalizeValue getDescription() - { - return JavaScriptLocalize.javascriptFiletypeDescription(); - } + @Override + @Nonnull + public LocalizeValue getDescription() { + return JavaScriptLocalize.javascriptFiletypeDescription(); + } - @Override - @Nonnull - public String getDefaultExtension() - { - return "js"; - } + @Override + @Nonnull + public String getDefaultExtension() { + return "js"; + } - @Override - public Image getIcon() - { - return JavaScriptIconGroup.javascript(); - } + @Override + public Image getIcon() { + return JavaScriptIconGroup.javascript(); + } - @RequiredReadAction - @Nonnull - @Override - public LanguageVersion getLanguageVersion(@Nullable Module module, @Nullable VirtualFile virtualFile) - { - if(module == null) - { - return StandardJavaScriptVersions.getInstance().getDefaultVersion(); - } + @RequiredReadAction + @Nonnull + @Override + public LanguageVersion getLanguageVersion(@Nullable Module module, @Nullable VirtualFile virtualFile) { + if (module == null) { + return StandardJavaScriptVersions.getInstance().getDefaultVersion(); + } - JavaScriptModuleExtension extension = ModuleUtilCore.getExtension(module, JavaScriptModuleExtension.class); - if(extension != null) - { - return extension.getLanguageVersion(); - } - return StandardJavaScriptVersions.getInstance().getDefaultVersion(); - } + JavaScriptModuleExtension extension = ModuleUtilCore.getExtension(module, JavaScriptModuleExtension.class); + if (extension != null) { + return extension.getLanguageVersion(); + } + return StandardJavaScriptVersions.getInstance().getDefaultVersion(); + } } diff --git a/base-api/src/main/java/consulo/javascript/language/JavaScriptFileTypeWithVersion.java b/base-api/src/main/java/consulo/javascript/language/JavaScriptFileTypeWithVersion.java index ad558768..3bea0f9f 100644 --- a/base-api/src/main/java/consulo/javascript/language/JavaScriptFileTypeWithVersion.java +++ b/base-api/src/main/java/consulo/javascript/language/JavaScriptFileTypeWithVersion.java @@ -28,9 +28,8 @@ * @author VISTALL * @since 11.12.2015 */ -public interface JavaScriptFileTypeWithVersion -{ - @Nonnull - @RequiredReadAction - LanguageVersion getLanguageVersion(@Nullable Module module, @Nullable VirtualFile virtualFile); +public interface JavaScriptFileTypeWithVersion { + @Nonnull + @RequiredReadAction + LanguageVersion getLanguageVersion(@Nullable Module module, @Nullable VirtualFile virtualFile); } diff --git a/base-api/src/main/java/consulo/javascript/language/JavaScriptLanguage.java b/base-api/src/main/java/consulo/javascript/language/JavaScriptLanguage.java index e92a7c2b..13b0a121 100644 --- a/base-api/src/main/java/consulo/javascript/language/JavaScriptLanguage.java +++ b/base-api/src/main/java/consulo/javascript/language/JavaScriptLanguage.java @@ -22,6 +22,7 @@ import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; + import java.util.HashMap; import java.util.Map; @@ -29,47 +30,40 @@ * @author VISTALL * @since 05.12.2015 */ -public class JavaScriptLanguage extends Language -{ - public static final JavaScriptLanguage INSTANCE = new JavaScriptLanguage(); +public class JavaScriptLanguage extends Language { + public static final JavaScriptLanguage INSTANCE = new JavaScriptLanguage(); - private Map myVersionsById = new HashMap<>(); + private Map myVersionsById = new HashMap<>(); - public JavaScriptLanguage() - { - super("JavaScript", "text/javascript", "application/javascript"); - } + public JavaScriptLanguage() { + super("JavaScript", "text/javascript", "application/javascript"); + } - @Nullable - public LanguageVersion getVersionById(@Nonnull String id) - { - Map oldMap = myVersionsById; - if(oldMap == null) - { - Map newMap = new HashMap<>(); - for(LanguageVersion version : getVersions()) - { - newMap.put(version.getId(), version); - } + @Nullable + public LanguageVersion getVersionById(@Nonnull String id) { + Map oldMap = myVersionsById; + if (oldMap == null) { + Map newMap = new HashMap<>(); + for (LanguageVersion version : getVersions()) { + newMap.put(version.getId(), version); + } - myVersionsById = newMap; + myVersionsById = newMap; - return newMap.get(id); - } + return newMap.get(id); + } - return oldMap.get(id); - } + return oldMap.get(id); + } - @Nullable - @Override - public LanguageFileType getAssociatedFileType() - { - return JavaScriptFileType.INSTANCE; - } + @Nullable + @Override + public LanguageFileType getAssociatedFileType() { + return JavaScriptFileType.INSTANCE; + } - @Override - public boolean isCaseSensitive() - { - return true; - } + @Override + public boolean isCaseSensitive() { + return true; + } } diff --git a/base-api/src/main/java/consulo/javascript/language/JavaScriptLanguageVersion.java b/base-api/src/main/java/consulo/javascript/language/JavaScriptLanguageVersion.java index bc3308bb..62d3ce7f 100644 --- a/base-api/src/main/java/consulo/javascript/language/JavaScriptLanguageVersion.java +++ b/base-api/src/main/java/consulo/javascript/language/JavaScriptLanguageVersion.java @@ -5,25 +5,23 @@ import consulo.language.version.LanguageVersionWithParsing; import jakarta.annotation.Nonnull; + import java.util.Set; /** * @author VISTALL * @since 23-Dec-17 */ -public abstract class JavaScriptLanguageVersion extends LanguageVersion implements LanguageVersionWithParsing -{ - public JavaScriptLanguageVersion(@Nonnull String id, @Nonnull String name, @Nonnull Language language, String... mimeTypes) - { - super(id, name, language, mimeTypes); - } +public abstract class JavaScriptLanguageVersion extends LanguageVersion implements LanguageVersionWithParsing { + public JavaScriptLanguageVersion(@Nonnull String id, @Nonnull String name, @Nonnull Language language, String... mimeTypes) { + super(id, name, language, mimeTypes); + } - @Nonnull - public abstract Set getFeatures(); + @Nonnull + public abstract Set getFeatures(); - @Nonnull - public String getPresentableName() - { - return getName(); - } + @Nonnull + public String getPresentableName() { + return getName(); + } } diff --git a/base-api/src/main/java/consulo/javascript/language/JavaScriptVersionUtil.java b/base-api/src/main/java/consulo/javascript/language/JavaScriptVersionUtil.java index c053e592..e54ac86e 100644 --- a/base-api/src/main/java/consulo/javascript/language/JavaScriptVersionUtil.java +++ b/base-api/src/main/java/consulo/javascript/language/JavaScriptVersionUtil.java @@ -20,6 +20,7 @@ import consulo.language.version.LanguageVersion; import jakarta.annotation.Nonnull; + import java.util.Collections; import java.util.Set; @@ -27,16 +28,13 @@ * @author VISTALL * @since 23.02.2016 */ -public class JavaScriptVersionUtil -{ - public static boolean containsFeature(@Nonnull PsiElement element, @Nonnull JavaScriptFeature feature) - { - return getFeatures(element).contains(feature); - } +public class JavaScriptVersionUtil { + public static boolean containsFeature(@Nonnull PsiElement element, @Nonnull JavaScriptFeature feature) { + return getFeatures(element).contains(feature); + } - public static Set getFeatures(@Nonnull PsiElement element) - { - LanguageVersion languageVersion = element.getLanguageVersion(); - return languageVersion instanceof JavaScriptLanguageVersion ? ((JavaScriptLanguageVersion) languageVersion).getFeatures() : Collections.emptySet(); - } + public static Set getFeatures(@Nonnull PsiElement element) { + LanguageVersion languageVersion = element.getLanguageVersion(); + return languageVersion instanceof JavaScriptLanguageVersion ? ((JavaScriptLanguageVersion)languageVersion).getFeatures() : Collections.emptySet(); + } } diff --git a/base-api/src/main/java/consulo/javascript/language/StandardJavaScriptVersion.java b/base-api/src/main/java/consulo/javascript/language/StandardJavaScriptVersion.java index 4ddfe95a..a01c7e8d 100644 --- a/base-api/src/main/java/consulo/javascript/language/StandardJavaScriptVersion.java +++ b/base-api/src/main/java/consulo/javascript/language/StandardJavaScriptVersion.java @@ -3,14 +3,12 @@ /** * Marker for javascript version which can be selected inside combobox for module * -* @author VISTALL -* @since 31/08/2023 -*/ -public interface StandardJavaScriptVersion -{ - @Deprecated - default int getWeight() - { - return 0; - } + * @author VISTALL + * @since 31/08/2023 + */ +public interface StandardJavaScriptVersion { + @Deprecated + default int getWeight() { + return 0; + } } diff --git a/base-api/src/main/java/consulo/javascript/language/StandardJavaScriptVersions.java b/base-api/src/main/java/consulo/javascript/language/StandardJavaScriptVersions.java index 8edd1f39..1cdd1088 100644 --- a/base-api/src/main/java/consulo/javascript/language/StandardJavaScriptVersions.java +++ b/base-api/src/main/java/consulo/javascript/language/StandardJavaScriptVersions.java @@ -22,6 +22,7 @@ import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; + import java.util.List; /** @@ -29,21 +30,19 @@ * @since 11.12.2015 */ @ServiceAPI(ComponentScope.APPLICATION) -public abstract class StandardJavaScriptVersions -{ +public abstract class StandardJavaScriptVersions { - @Nonnull - public static StandardJavaScriptVersions getInstance() - { - return ServiceManager.getService(StandardJavaScriptVersions.class); - } + @Nonnull + public static StandardJavaScriptVersions getInstance() { + return ServiceManager.getService(StandardJavaScriptVersions.class); + } - @Nonnull - public abstract JavaScriptLanguageVersion getDefaultVersion(); + @Nonnull + public abstract JavaScriptLanguageVersion getDefaultVersion(); - @Nonnull - public abstract List getValidLanguageVersions(); + @Nonnull + public abstract List getValidLanguageVersions(); - @Nonnull - public abstract JavaScriptLanguageVersion findVersionById(@Nullable String id); + @Nonnull + public abstract JavaScriptLanguageVersion findVersionById(@Nullable String id); } diff --git a/base-api/src/main/java/consulo/javascript/language/psi/JavaScriptPrimitiveType.java b/base-api/src/main/java/consulo/javascript/language/psi/JavaScriptPrimitiveType.java index 3fed4841..77f1b4f6 100644 --- a/base-api/src/main/java/consulo/javascript/language/psi/JavaScriptPrimitiveType.java +++ b/base-api/src/main/java/consulo/javascript/language/psi/JavaScriptPrimitiveType.java @@ -25,39 +25,34 @@ * @author VISTALL * @since 13.12.2015 */ -public class JavaScriptPrimitiveType implements JavaScriptType -{ - public static final JavaScriptPrimitiveType BOOL = new JavaScriptPrimitiveType("Boolean"); - public static final JavaScriptPrimitiveType STRING = new JavaScriptPrimitiveType("String"); - public static final JavaScriptPrimitiveType NUMBER = new JavaScriptPrimitiveType("Number"); - public static final JavaScriptPrimitiveType REGEXP = new JavaScriptPrimitiveType("Regexp"); - public static final JavaScriptPrimitiveType NULL = new JavaScriptPrimitiveType("null"); - - private String myName; - - public JavaScriptPrimitiveType(String name) - { - myName = name; - } - - @RequiredReadAction - @Nonnull - @Override - public String getPresentableText() - { - return myName; - } - - @Nullable - @Override - public PsiElement getTargetElement() - { - return null; - } - - @Override - public String toString() - { - return "JavaScriptPrimitiveType: " + myName; - } +public class JavaScriptPrimitiveType implements JavaScriptType { + public static final JavaScriptPrimitiveType BOOL = new JavaScriptPrimitiveType("Boolean"); + public static final JavaScriptPrimitiveType STRING = new JavaScriptPrimitiveType("String"); + public static final JavaScriptPrimitiveType NUMBER = new JavaScriptPrimitiveType("Number"); + public static final JavaScriptPrimitiveType REGEXP = new JavaScriptPrimitiveType("Regexp"); + public static final JavaScriptPrimitiveType NULL = new JavaScriptPrimitiveType("null"); + + private String myName; + + public JavaScriptPrimitiveType(String name) { + myName = name; + } + + @RequiredReadAction + @Nonnull + @Override + public String getPresentableText() { + return myName; + } + + @Nullable + @Override + public PsiElement getTargetElement() { + return null; + } + + @Override + public String toString() { + return "JavaScriptPrimitiveType: " + myName; + } } diff --git a/base-api/src/main/java/consulo/javascript/language/psi/JavaScriptTypeElement.java b/base-api/src/main/java/consulo/javascript/language/psi/JavaScriptTypeElement.java index bc26717d..6e6aa557 100644 --- a/base-api/src/main/java/consulo/javascript/language/psi/JavaScriptTypeElement.java +++ b/base-api/src/main/java/consulo/javascript/language/psi/JavaScriptTypeElement.java @@ -23,8 +23,7 @@ * @author VISTALL * @since 29.02.2016 */ -public interface JavaScriptTypeElement extends JSElement -{ - @Nonnull - JavaScriptType getType(); +public interface JavaScriptTypeElement extends JSElement { + @Nonnull + JavaScriptType getType(); } diff --git a/base-api/src/main/java/consulo/javascript/language/psi/stub/JSImplementedInterfacesIndex.java b/base-api/src/main/java/consulo/javascript/language/psi/stub/JSImplementedInterfacesIndex.java index 0c17c51d..6bafd932 100644 --- a/base-api/src/main/java/consulo/javascript/language/psi/stub/JSImplementedInterfacesIndex.java +++ b/base-api/src/main/java/consulo/javascript/language/psi/stub/JSImplementedInterfacesIndex.java @@ -24,12 +24,10 @@ import jakarta.annotation.Nonnull; @ExtensionImpl -public class JSImplementedInterfacesIndex extends StringStubIndexExtension -{ - @Nonnull - @Override - public StubIndexKey getKey() - { - return JavaScriptIndexKeys.IMPLEMENTED_INDEX; - } +public class JSImplementedInterfacesIndex extends StringStubIndexExtension { + @Nonnull + @Override + public StubIndexKey getKey() { + return JavaScriptIndexKeys.IMPLEMENTED_INDEX; + } } \ No newline at end of file diff --git a/base-api/src/main/java/consulo/javascript/language/psi/stub/JSNameIndex.java b/base-api/src/main/java/consulo/javascript/language/psi/stub/JSNameIndex.java index 9facfe99..4ae07b1c 100644 --- a/base-api/src/main/java/consulo/javascript/language/psi/stub/JSNameIndex.java +++ b/base-api/src/main/java/consulo/javascript/language/psi/stub/JSNameIndex.java @@ -27,12 +27,10 @@ import jakarta.annotation.Nonnull; @ExtensionImpl -public class JSNameIndex extends StringStubIndexExtension -{ - @Nonnull - @Override - public StubIndexKey getKey() - { - return JavaScriptIndexKeys.ELEMENTS_BY_NAME; - } +public class JSNameIndex extends StringStubIndexExtension { + @Nonnull + @Override + public StubIndexKey getKey() { + return JavaScriptIndexKeys.ELEMENTS_BY_NAME; + } } \ No newline at end of file diff --git a/base-api/src/main/java/consulo/javascript/language/psi/stub/JSQualifiedElementIndex.java b/base-api/src/main/java/consulo/javascript/language/psi/stub/JSQualifiedElementIndex.java index dc609ec2..248c122b 100644 --- a/base-api/src/main/java/consulo/javascript/language/psi/stub/JSQualifiedElementIndex.java +++ b/base-api/src/main/java/consulo/javascript/language/psi/stub/JSQualifiedElementIndex.java @@ -26,12 +26,10 @@ import jakarta.annotation.Nonnull; @ExtensionImpl -public class JSQualifiedElementIndex extends StringStubIndexExtension -{ - @Nonnull - @Override - public StubIndexKey getKey() - { - return JavaScriptIndexKeys.ELEMENTS_BY_QNAME; - } +public class JSQualifiedElementIndex extends StringStubIndexExtension { + @Nonnull + @Override + public StubIndexKey getKey() { + return JavaScriptIndexKeys.ELEMENTS_BY_QNAME; + } } \ No newline at end of file diff --git a/base-api/src/main/java/consulo/javascript/language/psi/stub/JSSuperClassIndex.java b/base-api/src/main/java/consulo/javascript/language/psi/stub/JSSuperClassIndex.java index 81ef425f..e8840c49 100644 --- a/base-api/src/main/java/consulo/javascript/language/psi/stub/JSSuperClassIndex.java +++ b/base-api/src/main/java/consulo/javascript/language/psi/stub/JSSuperClassIndex.java @@ -23,12 +23,10 @@ import jakarta.annotation.Nonnull; @ExtensionImpl -public class JSSuperClassIndex extends StringStubIndexExtension -{ - @Nonnull - @Override - public StubIndexKey getKey() - { - return JavaScriptIndexKeys.EXTENDS_INDEX; - } +public class JSSuperClassIndex extends StringStubIndexExtension { + @Nonnull + @Override + public StubIndexKey getKey() { + return JavaScriptIndexKeys.EXTENDS_INDEX; + } } \ No newline at end of file diff --git a/base-api/src/main/java/consulo/javascript/language/psi/stub/JavaScriptIndexKeys.java b/base-api/src/main/java/consulo/javascript/language/psi/stub/JavaScriptIndexKeys.java index 6e77c901..38474232 100644 --- a/base-api/src/main/java/consulo/javascript/language/psi/stub/JavaScriptIndexKeys.java +++ b/base-api/src/main/java/consulo/javascript/language/psi/stub/JavaScriptIndexKeys.java @@ -25,12 +25,11 @@ * @author VISTALL * @since 05.12.2015 */ -public interface JavaScriptIndexKeys -{ - StubIndexKey CLASSES_BY_NAME = StubIndexKey.createIndexKey("js.class.shortName"); - StubIndexKey ELEMENTS_BY_NAME = StubIndexKey.createIndexKey("js.qualified.shortName"); - StubIndexKey ELEMENTS_BY_QNAME = StubIndexKey.createIndexKey("js.element.qualifiedName"); +public interface JavaScriptIndexKeys { + StubIndexKey CLASSES_BY_NAME = StubIndexKey.createIndexKey("js.class.shortName"); + StubIndexKey ELEMENTS_BY_NAME = StubIndexKey.createIndexKey("js.qualified.shortName"); + StubIndexKey ELEMENTS_BY_QNAME = StubIndexKey.createIndexKey("js.element.qualifiedName"); - StubIndexKey EXTENDS_INDEX = StubIndexKey.createIndexKey("JS.class.super"); - StubIndexKey IMPLEMENTED_INDEX = StubIndexKey.createIndexKey("JS.class.implements"); + StubIndexKey EXTENDS_INDEX = StubIndexKey.createIndexKey("JS.class.super"); + StubIndexKey IMPLEMENTED_INDEX = StubIndexKey.createIndexKey("JS.class.implements"); } diff --git a/base-api/src/main/java/consulo/javascript/module/extension/JavaScriptModuleExtension.java b/base-api/src/main/java/consulo/javascript/module/extension/JavaScriptModuleExtension.java index 472eb47c..ce2b9c7a 100644 --- a/base-api/src/main/java/consulo/javascript/module/extension/JavaScriptModuleExtension.java +++ b/base-api/src/main/java/consulo/javascript/module/extension/JavaScriptModuleExtension.java @@ -8,8 +8,7 @@ * @author VISTALL * @since 29.06.14 */ -public interface JavaScriptModuleExtension> extends ModuleExtensionWithSdk -{ - @Nonnull - LanguageVersion getLanguageVersion(); +public interface JavaScriptModuleExtension> extends ModuleExtensionWithSdk { + @Nonnull + LanguageVersion getLanguageVersion(); } diff --git a/base-api/src/main/java/consulo/javascript/module/extension/JavaScriptMutableModuleExtension.java b/base-api/src/main/java/consulo/javascript/module/extension/JavaScriptMutableModuleExtension.java index 0a1d7ab7..6d560179 100644 --- a/base-api/src/main/java/consulo/javascript/module/extension/JavaScriptMutableModuleExtension.java +++ b/base-api/src/main/java/consulo/javascript/module/extension/JavaScriptMutableModuleExtension.java @@ -24,7 +24,6 @@ * @author VISTALL * @since 12.12.2015 */ -public interface JavaScriptMutableModuleExtension> extends JavaScriptModuleExtension, MutableModuleExtensionWithSdk -{ - void setLanguageVersion(@Nonnull LanguageVersion languageVersion); +public interface JavaScriptMutableModuleExtension> extends JavaScriptModuleExtension, MutableModuleExtensionWithSdk { + void setLanguageVersion(@Nonnull LanguageVersion languageVersion); } diff --git a/base-api/src/main/java/consulo/javascript/psi/JSComputedName.java b/base-api/src/main/java/consulo/javascript/psi/JSComputedName.java index c15004d5..cb683d13 100644 --- a/base-api/src/main/java/consulo/javascript/psi/JSComputedName.java +++ b/base-api/src/main/java/consulo/javascript/psi/JSComputedName.java @@ -25,8 +25,7 @@ * @author VISTALL * @since 03.03.2016 */ -public interface JSComputedName extends JSElement -{ - @Nullable - JSExpression getExpression(); +public interface JSComputedName extends JSElement { + @Nullable + JSExpression getExpression(); } diff --git a/base-api/src/main/java/consulo/javascript/psi/JSSimpleLiteralExpression.java b/base-api/src/main/java/consulo/javascript/psi/JSSimpleLiteralExpression.java index 886d3030..5fdd2d36 100644 --- a/base-api/src/main/java/consulo/javascript/psi/JSSimpleLiteralExpression.java +++ b/base-api/src/main/java/consulo/javascript/psi/JSSimpleLiteralExpression.java @@ -26,9 +26,8 @@ * @author VISTALL * @since 11.12.2015 */ -public interface JSSimpleLiteralExpression extends JSLiteralExpression -{ - @Nonnull - @RequiredReadAction - IElementType getLiteralElementType(); +public interface JSSimpleLiteralExpression extends JSLiteralExpression { + @Nonnull + @RequiredReadAction + IElementType getLiteralElementType(); } diff --git a/base-api/src/main/java/consulo/javascript/psi/JavaScriptImportStatementBase.java b/base-api/src/main/java/consulo/javascript/psi/JavaScriptImportStatementBase.java index c777a749..243d1f97 100644 --- a/base-api/src/main/java/consulo/javascript/psi/JavaScriptImportStatementBase.java +++ b/base-api/src/main/java/consulo/javascript/psi/JavaScriptImportStatementBase.java @@ -8,6 +8,5 @@ * * Base interface for all imports in at js implementation. Affect folding */ -public interface JavaScriptImportStatementBase extends JSStatement -{ +public interface JavaScriptImportStatementBase extends JSStatement { } diff --git a/base-api/src/main/java/consulo/javascript/psi/JavaScriptLambdaExpression.java b/base-api/src/main/java/consulo/javascript/psi/JavaScriptLambdaExpression.java index ba6e1477..385a472b 100644 --- a/base-api/src/main/java/consulo/javascript/psi/JavaScriptLambdaExpression.java +++ b/base-api/src/main/java/consulo/javascript/psi/JavaScriptLambdaExpression.java @@ -22,6 +22,5 @@ * @author VISTALL * @since 03.03.2016 */ -public interface JavaScriptLambdaExpression extends JSFunctionExpression -{ +public interface JavaScriptLambdaExpression extends JSFunctionExpression { } diff --git a/base-api/src/main/java/consulo/javascript/psi/impl/reference/JSPropertyNameReferenceProvider.java b/base-api/src/main/java/consulo/javascript/psi/impl/reference/JSPropertyNameReferenceProvider.java index 48763677..0da095a0 100644 --- a/base-api/src/main/java/consulo/javascript/psi/impl/reference/JSPropertyNameReferenceProvider.java +++ b/base-api/src/main/java/consulo/javascript/psi/impl/reference/JSPropertyNameReferenceProvider.java @@ -32,11 +32,10 @@ * @since 02.12.2015 */ @ExtensionAPI(ComponentScope.APPLICATION) -public interface JSPropertyNameReferenceProvider -{ - ExtensionPointName EP_NAME = ExtensionPointName.create(JSPropertyNameReferenceProvider.class); +public interface JSPropertyNameReferenceProvider { + ExtensionPointName EP_NAME = ExtensionPointName.create(JSPropertyNameReferenceProvider.class); - @Nullable - @RequiredReadAction - PsiReference getReference(@Nonnull JSProperty property); + @Nullable + @RequiredReadAction + PsiReference getReference(@Nonnull JSProperty property); } diff --git a/base-api/src/main/java/consulo/javascript/psi/stubs/JSFileStub.java b/base-api/src/main/java/consulo/javascript/psi/stubs/JSFileStub.java index a20d02ef..ae460555 100644 --- a/base-api/src/main/java/consulo/javascript/psi/stubs/JSFileStub.java +++ b/base-api/src/main/java/consulo/javascript/psi/stubs/JSFileStub.java @@ -9,8 +9,7 @@ * @author VISTALL * @since 19.07.2015 */ -public interface JSFileStub extends PsiFileStub -{ - @Nonnull - String getName(); +public interface JSFileStub extends PsiFileStub { + @Nonnull + String getName(); } diff --git a/base-api/src/main/java/module-info.java b/base-api/src/main/java/module-info.java index 824b484d..461685dd 100644 --- a/base-api/src/main/java/module-info.java +++ b/base-api/src/main/java/module-info.java @@ -4,23 +4,23 @@ */ open module consulo.javascript.base.api { - requires transitive consulo.ide.api; + requires transitive consulo.ide.api; - exports com.intellij.lang.javascript.formatter; - exports com.intellij.lang.javascript.psi; - exports com.intellij.lang.javascript.psi.stubs; + exports com.intellij.lang.javascript.formatter; + exports com.intellij.lang.javascript.psi; + exports com.intellij.lang.javascript.psi.stubs; - exports consulo.javascript.icon; - exports consulo.javascript.ide.completion; - exports consulo.javascript.index; - exports consulo.javascript.language; - exports consulo.javascript.language.psi; - exports consulo.javascript.localize; - exports consulo.javascript.module.extension; - exports consulo.javascript.psi; - exports consulo.javascript.psi.impl.reference; - exports consulo.javascript.language.psi.stub; - exports consulo.javascript.psi.stubs; + exports consulo.javascript.icon; + exports consulo.javascript.ide.completion; + exports consulo.javascript.index; + exports consulo.javascript.language; + exports consulo.javascript.language.psi; + exports consulo.javascript.localize; + exports consulo.javascript.module.extension; + exports consulo.javascript.psi; + exports consulo.javascript.psi.impl.reference; + exports consulo.javascript.language.psi.stub; + exports consulo.javascript.psi.stubs; - exports consulo.javascript.internal to consulo.javascript.ecmascript.impl, consulo.javascript.base.impl; + exports consulo.javascript.internal to consulo.javascript.ecmascript.impl, consulo.javascript.base.impl; } \ No newline at end of file From 541b97ddf88032c5cb8594cd3067b533642a0c56 Mon Sep 17 00:00:00 2001 From: UNV Date: Sun, 12 Jan 2025 20:22:04 +0300 Subject: [PATCH 099/150] Reformatting inspections. --- .../impl/inspections/CreateClassDialog.java | 99 +- .../CreateClassOrInterfaceAction.java | 188 ++- .../JSDeprecatedSymbolsInspection.java | 92 +- .../JSDuplicatedDeclarationInspection.java | 363 +++-- .../impl/inspections/JSInspection.java | 84 +- .../JSUndeclaredVariableInspection.java | 414 +++--- .../JSUnresolvedFunctionInspection.java | 1229 ++++++++--------- .../JSUnresolvedVariableInspection.java | 843 ++++++----- .../JSUntypedDeclarationInspection.java | 302 ++-- .../JSUnusedLocalSymbolsInspection.java | 765 +++++----- 10 files changed, 2017 insertions(+), 2362 deletions(-) diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/CreateClassDialog.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/CreateClassDialog.java index 869b4e3c..dda34560 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/CreateClassDialog.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/CreateClassDialog.java @@ -31,67 +31,58 @@ /** * @author Maxim.Mossienko - * Date: Jun 9, 2008 - * Time: 7:36:22 PM + * Date: Jun 9, 2008 + * Time: 7:36:22 PM */ -class CreateClassDialog extends DialogWrapper -{ - private JPanel myPanel; - private JTextField myPackageName; - private JLabel myClassName; +class CreateClassDialog extends DialogWrapper { + private JPanel myPanel; + private JTextField myPackageName; + private JLabel myClassName; - protected CreateClassDialog(final Project project, String className, String packageName, boolean isInterface) - { - super(project, false); + protected CreateClassDialog(final Project project, String className, String packageName, boolean isInterface) { + super(project, false); - setTitle(isInterface ? JavaScriptLocalize.createInterfaceDialogTitle() : JavaScriptLocalize.createClassDialogTitle()); - setModal(true); + setTitle(isInterface ? JavaScriptLocalize.createInterfaceDialogTitle() : JavaScriptLocalize.createClassDialogTitle()); + setModal(true); - myPackageName.getDocument().addDocumentListener(new DocumentAdapter() - { - @Override - protected void textChanged(final DocumentEvent e) - { - String text = getPackageName(); - boolean enabled; - if(text.length() == 0) - { - enabled = true; - } - else - { - ASTNode node = JSChangeUtil.createJSTreeFromText(project, text); - PsiElement elt; - enabled = node != null && - (elt = node.getPsi()) instanceof JSExpressionStatement && - (elt = ((JSExpressionStatement) elt).getExpression()) instanceof JSReferenceExpression && - ((JSReferenceExpression) elt).getReferencedName() != null && - elt.textMatches(text); - } - getOKAction().setEnabled(enabled); - } - }); + myPackageName.getDocument().addDocumentListener(new DocumentAdapter() { + @Override + protected void textChanged(final DocumentEvent e) { + String text = getPackageName(); + boolean enabled; + if (text.length() == 0) { + enabled = true; + } + else { + ASTNode node = JSChangeUtil.createJSTreeFromText(project, text); + PsiElement elt; + enabled = node != null && + (elt = node.getPsi()) instanceof JSExpressionStatement && + (elt = ((JSExpressionStatement)elt).getExpression()) instanceof JSReferenceExpression && + ((JSReferenceExpression)elt).getReferencedName() != null && + elt.textMatches(text); + } + getOKAction().setEnabled(enabled); + } + }); - myClassName.setText(className); - myPackageName.setText(packageName); + myClassName.setText(className); + myPackageName.setText(packageName); - init(); - } + init(); + } - @Override - protected JComponent createCenterPanel() - { - return myPanel; - } + @Override + protected JComponent createCenterPanel() { + return myPanel; + } - @Override - public JComponent getPreferredFocusedComponent() - { - return myPackageName; - } + @Override + public JComponent getPreferredFocusedComponent() { + return myPackageName; + } - String getPackageName() - { - return myPackageName.getText(); - } + String getPackageName() { + return myPackageName.getText(); + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/CreateClassOrInterfaceAction.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/CreateClassOrInterfaceAction.java index 643b000f..b3a80625 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/CreateClassOrInterfaceAction.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/CreateClassOrInterfaceAction.java @@ -43,6 +43,7 @@ import org.jetbrains.annotations.NonNls; import jakarta.annotation.Nonnull; + import java.util.Properties; /** @@ -52,116 +53,99 @@ * Time: 14:01:34 * To change this template use File | Settings | File Templates. */ -class CreateClassOrInterfaceAction implements LocalQuickFix -{ - private final String classNameToCreate; - private final JSReferenceExpression myContext; - private String packageName; - private final boolean myIsInterface; +class CreateClassOrInterfaceAction implements LocalQuickFix { + private final String classNameToCreate; + private final JSReferenceExpression myContext; + private String packageName; + private final boolean myIsInterface; - public CreateClassOrInterfaceAction(JSReferenceExpression context, boolean isInterface) - { - classNameToCreate = context.getReferencedName(); - myContext = context; - myIsInterface = isInterface; - } + public CreateClassOrInterfaceAction(JSReferenceExpression context, boolean isInterface) { + classNameToCreate = context.getReferencedName(); + myContext = context; + myIsInterface = isInterface; + } - @Override - @Nonnull - public String getName() - { - return myIsInterface - ? JavaScriptLocalize.javascriptCreateInterfaceIntentionName(classNameToCreate).get() - : JavaScriptLocalize.javascriptCreateClassIntentionName(classNameToCreate).get(); - } + @Override + @Nonnull + public String getName() { + return myIsInterface + ? JavaScriptLocalize.javascriptCreateInterfaceIntentionName(classNameToCreate).get() + : JavaScriptLocalize.javascriptCreateClassIntentionName(classNameToCreate).get(); + } - @Override - @Nonnull - public String getFamilyName() - { - return getName(); - } + @Override + @Nonnull + public String getFamilyName() { + return getName(); + } - @Override - public void applyFix(@Nonnull final Project project, @Nonnull final ProblemDescriptor descriptor) - { - PsiFile contextFile = myContext.getContainingFile(); - final PsiElement context = contextFile.getContext(); - if (context != null) - { - contextFile = context.getContainingFile(); - } + @Override + public void applyFix(@Nonnull final Project project, @Nonnull final ProblemDescriptor descriptor) { + PsiFile contextFile = myContext.getContainingFile(); + final PsiElement context = contextFile.getContext(); + if (context != null) { + contextFile = context.getContainingFile(); + } - packageName = JSResolveUtil.getExpectedPackageNameFromFile(contextFile.getVirtualFile(), project, false); + packageName = JSResolveUtil.getExpectedPackageNameFromFile(contextFile.getVirtualFile(), project, false); - if (!ApplicationManager.getApplication().isUnitTestMode()) - { - final CreateClassDialog dialog = new CreateClassDialog(project, classNameToCreate, packageName, myIsInterface); - dialog.show(); - if (dialog.getExitCode() != DialogWrapper.OK_EXIT_CODE) - { - return; - } - packageName = dialog.getPackageName().trim(); - } - else - { - packageName = "foo"; - } + if (!ApplicationManager.getApplication().isUnitTestMode()) { + final CreateClassDialog dialog = new CreateClassDialog(project, classNameToCreate, packageName, myIsInterface); + dialog.show(); + if (dialog.getExitCode() != DialogWrapper.OK_EXIT_CODE) { + return; + } + packageName = dialog.getPackageName().trim(); + } + else { + packageName = "foo"; + } - final PsiFile contextFile1 = contextFile; - ApplicationManager.getApplication().runWriteAction(new Runnable() - { - @Override - public void run() - { - try - { - final FileTemplate template = FileTemplateManager.getInstance().getTemplate( - myIsInterface - ? JavaScriptSupportLoader.ACTION_SCRIPT_INTERFACE_TEMPLATE_NAME - : JavaScriptSupportLoader.ACTION_SCRIPT_CLASS_TEMPLATE_NAME - ); - @NonNls final String fileName = classNameToCreate + ".as"; - final Properties props = new Properties(); - props.setProperty(FileTemplate.ATTRIBUTE_NAME, classNameToCreate); - final Module element = ModuleUtilCore.findModuleForPsiElement(contextFile1); - VirtualFile base = ModuleRootManager.getInstance(element).getSourceRoots()[0]; - VirtualFile relativeFile = VirtualFileUtil.findRelativeFile(packageName, base); + final PsiFile contextFile1 = contextFile; + ApplicationManager.getApplication().runWriteAction(new Runnable() { + @Override + public void run() { + try { + final FileTemplate template = FileTemplateManager.getInstance().getTemplate( + myIsInterface + ? JavaScriptSupportLoader.ACTION_SCRIPT_INTERFACE_TEMPLATE_NAME + : JavaScriptSupportLoader.ACTION_SCRIPT_CLASS_TEMPLATE_NAME + ); + @NonNls final String fileName = classNameToCreate + ".as"; + final Properties props = new Properties(); + props.setProperty(FileTemplate.ATTRIBUTE_NAME, classNameToCreate); + final Module element = ModuleUtilCore.findModuleForPsiElement(contextFile1); + VirtualFile base = ModuleRootManager.getInstance(element).getSourceRoots()[0]; + VirtualFile relativeFile = VirtualFileUtil.findRelativeFile(packageName, base); - if (relativeFile == null) - { - relativeFile = base; - StringTokenizer tokenizer = new StringTokenizer(packageName, "."); - while (tokenizer.hasMoreTokens()) - { - String nextNameSegment = tokenizer.nextToken(); - VirtualFile next = relativeFile.findChild(nextNameSegment); - if (next == null) - { - next = relativeFile.createChildDirectory(this, nextNameSegment); - } - relativeFile = next; - } - } + if (relativeFile == null) { + relativeFile = base; + StringTokenizer tokenizer = new StringTokenizer(packageName, "."); + while (tokenizer.hasMoreTokens()) { + String nextNameSegment = tokenizer.nextToken(); + VirtualFile next = relativeFile.findChild(nextNameSegment); + if (next == null) { + next = relativeFile.createChildDirectory(this, nextNameSegment); + } + relativeFile = next; + } + } - assert relativeFile != null; - props.setProperty(FileTemplate.ATTRIBUTE_PACKAGE_NAME, packageName); - final PsiDirectory psiDirectory = PsiManager.getInstance(project).findDirectory(relativeFile); - assert psiDirectory != null; - FileTemplateUtil.createFromTemplate(template, fileName, props, psiDirectory); + assert relativeFile != null; + props.setProperty(FileTemplate.ATTRIBUTE_PACKAGE_NAME, packageName); + final PsiDirectory psiDirectory = PsiManager.getInstance(project).findDirectory(relativeFile); + assert psiDirectory != null; + FileTemplateUtil.createFromTemplate(template, fileName, props, psiDirectory); - String contextPackage = JSResolveUtil.findPackageStatementQualifier(myContext); - if (packageName != null && !packageName.equals(contextPackage) && packageName.length() > 0) - { - ImportUtils.doImport(myContext, packageName + "." + classNameToCreate); - } - } - catch (Exception e) - { - Logger.getInstance(getClass().getName()).error(e); - } - } - }); - } + String contextPackage = JSResolveUtil.findPackageStatementQualifier(myContext); + if (packageName != null && !packageName.equals(contextPackage) && packageName.length() > 0) { + ImportUtils.doImport(myContext, packageName + "." + classNameToCreate); + } + } + catch (Exception e) { + Logger.getInstance(getClass().getName()).error(e); + } + } + }); + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSDeprecatedSymbolsInspection.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSDeprecatedSymbolsInspection.java index c1136623..de077812 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSDeprecatedSymbolsInspection.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSDeprecatedSymbolsInspection.java @@ -35,59 +35,49 @@ * @by Maxim.Mossienko */ @ExtensionImpl -public class JSDeprecatedSymbolsInspection extends JSInspection -{ - @NonNls - private static final String SHORT_NAME = "JSDeprecatedSymbols"; +public class JSDeprecatedSymbolsInspection extends JSInspection { + @NonNls + private static final String SHORT_NAME = "JSDeprecatedSymbols"; - @Override - @Nonnull - public String getGroupDisplayName() - { - return "General"; - } + @Override + @Nonnull + public String getGroupDisplayName() { + return "General"; + } - @Override - @Nonnull - public String getDisplayName() - { - return JavaScriptLocalize.jsDeprecatedSymbolsInspectionName().get(); - } + @Override + @Nonnull + public String getDisplayName() { + return JavaScriptLocalize.jsDeprecatedSymbolsInspectionName().get(); + } - @Override - @Nonnull - @NonNls - public String getShortName() - { - return SHORT_NAME; - } + @Override + @Nonnull + @NonNls + public String getShortName() { + return SHORT_NAME; + } - @Override - protected JSElementVisitor createVisitor(final ProblemsHolder holder) - { - return new JSElementVisitor() - { - @Override - public void visitJSReferenceExpression(final JSReferenceExpression node) - { - for(ResolveResult r : node.multiResolve(false)) - { - final PsiElement element = r.getElement(); - if((element instanceof JSDefinitionExpression && element.getParent() instanceof JSAssignmentExpression) || element == node.getParent()) - { - continue; - } - if(JSDocumentationUtils.isDeprecated(element)) - { - holder.registerProblem( - node.getReferenceNameElement(), - JavaScriptLocalize.javascriptDeprecatedSymbolUsedNameMessage().get(), - ProblemHighlightType.LIKE_DEPRECATED - ); - break; - } - } - } - }; - } + @Override + protected JSElementVisitor createVisitor(final ProblemsHolder holder) { + return new JSElementVisitor() { + @Override + public void visitJSReferenceExpression(final JSReferenceExpression node) { + for (ResolveResult r : node.multiResolve(false)) { + final PsiElement element = r.getElement(); + if ((element instanceof JSDefinitionExpression && element.getParent() instanceof JSAssignmentExpression) || element == node.getParent()) { + continue; + } + if (JSDocumentationUtils.isDeprecated(element)) { + holder.registerProblem( + node.getReferenceNameElement(), + JavaScriptLocalize.javascriptDeprecatedSymbolUsedNameMessage().get(), + ProblemHighlightType.LIKE_DEPRECATED + ); + break; + } + } + } + }; + } } \ No newline at end of file diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSDuplicatedDeclarationInspection.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSDuplicatedDeclarationInspection.java index c93b066e..df798c6d 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSDuplicatedDeclarationInspection.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSDuplicatedDeclarationInspection.java @@ -41,201 +41,170 @@ * @author Maxim.Mossienko */ @ExtensionImpl -public class JSDuplicatedDeclarationInspection extends JSInspection -{ - @NonNls - private static final String SHORT_NAME = "JSDuplicatedDeclaration"; - - @Override - @Nonnull - public String getGroupDisplayName() - { - return "General"; - } - - @Override - @Nonnull - public String getDisplayName() - { - return JavaScriptLocalize.jsDuplicatedDeclarationInspectionName().get(); - } - - @Override - @Nonnull - @NonNls - public String getShortName() - { - return SHORT_NAME; - } - - @Override - protected JSElementVisitor createVisitor(final ProblemsHolder holder) - { - return new JSElementVisitor() - { - @Override - public void visitJSClass(final JSClass node) - { - final String name = node.getName(); - if(name == null) - { - return; - } - final PsiElement nameIdentifier = node.getNameIdentifier(); - - checkForDuplicateDeclaration(name, node, nameIdentifier); - } - - @Override - public void visitJSFunctionDeclaration(final JSFunction node) - { - final String name = node.getName(); - if(name == null) - { - return; - } - final PsiElement nameIdentifier = node.getNameIdentifier(); - - checkForDuplicateDeclaration(name, node, nameIdentifier); - } - - private void checkForDuplicateDeclaration(final String name, final PsiElement decl, final PsiElement nameIdentifier) - { - PsiElement scope = PsiTreeUtil.getParentOfType(decl, JSFunction.class, JSFile.class, JSEmbeddedContentImpl.class, JSClass.class, - JSObjectLiteralExpression.class, JSPackageStatement.class, PsiFile.class); - if(scope instanceof JSPackageStatement) - { - return; // dedicated inspection - } - final PsiElement originalScope = scope; - if(scope instanceof JSFile && scope.getContext() != null) - { - scope = scope.getContext().getContainingFile(); - } - - final ResolveProcessor processor = new ResolveProcessor(name, scope) - { - @Override - public boolean execute(PsiElement element, ResolveState state) - { - if(element == decl) - { - return true; - } - //if (!decl.getClass().isInstance(element)) return true; - if(decl instanceof JSParameter && decl.getParent() != element.getParent()) - { - return false; - } - - if(element instanceof JSFunction && decl instanceof JSFunction) - { - final JSFunction declFunction = (JSFunction) decl; - final JSFunction elementFunction = (JSFunction) element; - if((declFunction.isGetProperty() && elementFunction.isSetProperty()) || (declFunction.isSetProperty() && elementFunction.isGetProperty())) - { - return true; - } - } - if(element instanceof JSFunction && - decl instanceof JSClass && element.getParent() == decl) - { - return true; - } - - if(element instanceof JSAttributeListOwner && decl instanceof JSAttributeListOwner) - { - JSAttributeList attrList = ((JSAttributeListOwner) element).getAttributeList(); - JSAttributeList attrList2 = ((JSAttributeListOwner) decl).getAttributeList(); - - if(attrList != null && attrList2 != null) - { - final String ns = attrList.getNamespace(); - final String ns2 = attrList2.getNamespace(); - - if((ns != null && !ns.equals(ns2)) || - ns2 != null && !ns2.equals(ns) || - (ns != null && ns2 != null)) - { - return true; - } - } - else if((attrList != null && attrList.getNamespace() != null) || (attrList2 != null && attrList2.getNamespace() != null)) - { - return true; - } - - final boolean notStatic2 = attrList2 == null || !attrList2.hasModifier(JSAttributeList.ModifierType.STATIC); - final boolean notStatic = attrList == null || !attrList.hasModifier(JSAttributeList.ModifierType.STATIC); - if((notStatic2 && !notStatic) || (notStatic && !notStatic2)) - { - return true; - } - } - return super.execute(element, state); - } - }; - - PsiElement parent = JSResolveUtil.findParent(decl); - if(parent instanceof JSClass) - { - processor.configureClassScope((JSClass) parent); - } - - if(decl instanceof JSFunction || decl instanceof JSVariable) - { - JSAttributeList attrList = ((JSAttributeListOwner) decl).getAttributeList(); - processor.setProcessStatics(attrList != null && attrList.hasModifier(JSAttributeList.ModifierType.STATIC)); - } - - processor.setLocalResolve(true); - JSResolveUtil.treeWalkUp(processor, decl, null, decl, scope); - - if(processor.getResult() != null && processor.getResult() != scope) - { - holder.registerProblem( - nameIdentifier, - JavaScriptLocalize.javascriptValidationMessageDuplicateDeclaration().get(), - originalScope.getContainingFile().getLanguage() == JavaScriptSupportLoader.ECMA_SCRIPT_L4 - ? ProblemHighlightType.ERROR : ProblemHighlightType.GENERIC_ERROR_OR_WARNING - ); - } - } - - @Override - public void visitJSProperty(final JSProperty node) - { - final String name = node.getName(); - if(name == null) - { - return; - } - checkForDuplicateDeclaration(name, node, node.getNameIdentifier()); - } - - @Override - public void visitJSVariable(final JSVariable var) - { - final PsiElement nameIdentifier = var.getNameIdentifier(); - final PsiElement next = nameIdentifier != null ? nameIdentifier.getNextSibling() : null; - final String name = nameIdentifier != null ? nameIdentifier.getText() : null; - - // Actully skip outer language elements - if(name != null && (next == null || - PsiUtilCore.getElementType(next) instanceof JSElementType || - next instanceof PsiWhiteSpace)) - { - checkForDuplicateDeclaration(name, var, nameIdentifier); - } - } - - }; - } - - @Override - @Nonnull - public HighlightDisplayLevel getDefaultLevel() - { - return HighlightDisplayLevel.WARNING; - } +public class JSDuplicatedDeclarationInspection extends JSInspection { + @NonNls + private static final String SHORT_NAME = "JSDuplicatedDeclaration"; + + @Override + @Nonnull + public String getGroupDisplayName() { + return "General"; + } + + @Override + @Nonnull + public String getDisplayName() { + return JavaScriptLocalize.jsDuplicatedDeclarationInspectionName().get(); + } + + @Override + @Nonnull + @NonNls + public String getShortName() { + return SHORT_NAME; + } + + @Override + protected JSElementVisitor createVisitor(final ProblemsHolder holder) { + return new JSElementVisitor() { + @Override + public void visitJSClass(final JSClass node) { + final String name = node.getName(); + if (name == null) { + return; + } + final PsiElement nameIdentifier = node.getNameIdentifier(); + + checkForDuplicateDeclaration(name, node, nameIdentifier); + } + + @Override + public void visitJSFunctionDeclaration(final JSFunction node) { + final String name = node.getName(); + if (name == null) { + return; + } + final PsiElement nameIdentifier = node.getNameIdentifier(); + + checkForDuplicateDeclaration(name, node, nameIdentifier); + } + + private void checkForDuplicateDeclaration(final String name, final PsiElement decl, final PsiElement nameIdentifier) { + PsiElement scope = + PsiTreeUtil.getParentOfType(decl, JSFunction.class, JSFile.class, JSEmbeddedContentImpl.class, JSClass.class, + JSObjectLiteralExpression.class, JSPackageStatement.class, PsiFile.class + ); + if (scope instanceof JSPackageStatement) { + return; // dedicated inspection + } + final PsiElement originalScope = scope; + if (scope instanceof JSFile && scope.getContext() != null) { + scope = scope.getContext().getContainingFile(); + } + + final ResolveProcessor processor = new ResolveProcessor(name, scope) { + @Override + public boolean execute(PsiElement element, ResolveState state) { + if (element == decl) { + return true; + } + //if (!decl.getClass().isInstance(element)) return true; + if (decl instanceof JSParameter && decl.getParent() != element.getParent()) { + return false; + } + + if (element instanceof JSFunction && decl instanceof JSFunction) { + final JSFunction declFunction = (JSFunction)decl; + final JSFunction elementFunction = (JSFunction)element; + if ((declFunction.isGetProperty() && elementFunction.isSetProperty()) || (declFunction.isSetProperty() && elementFunction.isGetProperty())) { + return true; + } + } + if (element instanceof JSFunction && + decl instanceof JSClass && element.getParent() == decl) { + return true; + } + + if (element instanceof JSAttributeListOwner && decl instanceof JSAttributeListOwner) { + JSAttributeList attrList = ((JSAttributeListOwner)element).getAttributeList(); + JSAttributeList attrList2 = ((JSAttributeListOwner)decl).getAttributeList(); + + if (attrList != null && attrList2 != null) { + final String ns = attrList.getNamespace(); + final String ns2 = attrList2.getNamespace(); + + if ((ns != null && !ns.equals(ns2)) || + ns2 != null && !ns2.equals(ns) || + (ns != null && ns2 != null)) { + return true; + } + } + else if ((attrList != null && attrList.getNamespace() != null) || (attrList2 != null && attrList2.getNamespace() != null)) { + return true; + } + + final boolean notStatic2 = attrList2 == null || !attrList2.hasModifier(JSAttributeList.ModifierType.STATIC); + final boolean notStatic = attrList == null || !attrList.hasModifier(JSAttributeList.ModifierType.STATIC); + if ((notStatic2 && !notStatic) || (notStatic && !notStatic2)) { + return true; + } + } + return super.execute(element, state); + } + }; + + PsiElement parent = JSResolveUtil.findParent(decl); + if (parent instanceof JSClass) { + processor.configureClassScope((JSClass)parent); + } + + if (decl instanceof JSFunction || decl instanceof JSVariable) { + JSAttributeList attrList = ((JSAttributeListOwner)decl).getAttributeList(); + processor.setProcessStatics(attrList != null && attrList.hasModifier(JSAttributeList.ModifierType.STATIC)); + } + + processor.setLocalResolve(true); + JSResolveUtil.treeWalkUp(processor, decl, null, decl, scope); + + if (processor.getResult() != null && processor.getResult() != scope) { + holder.registerProblem( + nameIdentifier, + JavaScriptLocalize.javascriptValidationMessageDuplicateDeclaration().get(), + originalScope.getContainingFile().getLanguage() == JavaScriptSupportLoader.ECMA_SCRIPT_L4 + ? ProblemHighlightType.ERROR : ProblemHighlightType.GENERIC_ERROR_OR_WARNING + ); + } + } + + @Override + public void visitJSProperty(final JSProperty node) { + final String name = node.getName(); + if (name == null) { + return; + } + checkForDuplicateDeclaration(name, node, node.getNameIdentifier()); + } + + @Override + public void visitJSVariable(final JSVariable var) { + final PsiElement nameIdentifier = var.getNameIdentifier(); + final PsiElement next = nameIdentifier != null ? nameIdentifier.getNextSibling() : null; + final String name = nameIdentifier != null ? nameIdentifier.getText() : null; + + // Actully skip outer language elements + if (name != null && (next == null || + PsiUtilCore.getElementType(next) instanceof JSElementType || + next instanceof PsiWhiteSpace)) { + checkForDuplicateDeclaration(name, var, nameIdentifier); + } + } + + }; + } + + @Override + @Nonnull + public HighlightDisplayLevel getDefaultLevel() { + return HighlightDisplayLevel.WARNING; + } } \ No newline at end of file diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSInspection.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSInspection.java index b27a2a98..33d7757c 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSInspection.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSInspection.java @@ -39,58 +39,50 @@ * @author Maxim.Mossienko * @since 2006-08-18 */ -public abstract class JSInspection extends LocalInspectionTool implements CustomSuppressableInspectionTool -{ - protected boolean myOnTheFly; +public abstract class JSInspection extends LocalInspectionTool implements CustomSuppressableInspectionTool { + protected boolean myOnTheFly; - protected abstract JSElementVisitor createVisitor(final ProblemsHolder holder); + protected abstract JSElementVisitor createVisitor(final ProblemsHolder holder); - @Override - @Nonnull - public PsiElementVisitor buildVisitor(@Nonnull ProblemsHolder holder, boolean isOnTheFly) - { - myOnTheFly = isOnTheFly; - return createVisitor(holder); - } + @Override + @Nonnull + public PsiElementVisitor buildVisitor(@Nonnull ProblemsHolder holder, boolean isOnTheFly) { + myOnTheFly = isOnTheFly; + return createVisitor(holder); + } - @Override - public boolean isEnabledByDefault() - { - return true; - } + @Override + public boolean isEnabledByDefault() { + return true; + } - @Nullable - @Override - public Language getLanguage() - { - return JavaScriptLanguage.INSTANCE; - } + @Nullable + @Override + public Language getLanguage() { + return JavaScriptLanguage.INSTANCE; + } - @Override - @Nonnull - public HighlightDisplayLevel getDefaultLevel() - { - return HighlightDisplayLevel.WEAK_WARNING; - } + @Override + @Nonnull + public HighlightDisplayLevel getDefaultLevel() { + return HighlightDisplayLevel.WEAK_WARNING; + } - @Override - public PsiNamedElement getProblemElement(final PsiElement psiElement) - { - return PsiTreeUtil.getNonStrictParentOfType(psiElement, JSNamedElement.class); - } + @Override + public PsiNamedElement getProblemElement(final PsiElement psiElement) { + return PsiTreeUtil.getNonStrictParentOfType(psiElement, JSNamedElement.class); + } - @Override - @Nullable - public SuppressIntentionAction[] getSuppressActions(final PsiElement element) - { - return new SuppressIntentionAction[]{ - /* new AddNoInspectionCommentFix(HighlightDisplayKey.find(getShortName()), JSSuppressionHolder.class),*/ - }; - } + @Override + @Nullable + public SuppressIntentionAction[] getSuppressActions(final PsiElement element) { + return new SuppressIntentionAction[]{ + /* new AddNoInspectionCommentFix(HighlightDisplayKey.find(getShortName()), JSSuppressionHolder.class),*/ + }; + } - @Override - public boolean isSuppressedFor(final PsiElement element) - { - return SuppressionUtil.isSuppressedInStatement(element, getID(), JSSuppressionHolder.class); - } + @Override + public boolean isSuppressedFor(final PsiElement element) { + return SuppressionUtil.isSuppressedInStatement(element, getID(), JSSuppressionHolder.class); + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUndeclaredVariableInspection.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUndeclaredVariableInspection.java index 4433cefa..ea38b220 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUndeclaredVariableInspection.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUndeclaredVariableInspection.java @@ -39,6 +39,7 @@ import org.jetbrains.annotations.NonNls; import jakarta.annotation.Nonnull; + import java.util.LinkedList; import java.util.List; @@ -46,229 +47,192 @@ * @author Maxim.Mossienko */ @ExtensionImpl -public class JSUndeclaredVariableInspection extends JSInspection -{ - @NonNls - public static final String SHORT_NAME = "JSUndeclaredVariable"; - - @Override - @Nonnull - public String getGroupDisplayName() - { - return "General"; - } - - @Override - @Nonnull - public String getDisplayName() - { - return JavaScriptLocalize.jsUndeclaredVariableInspectionName().get(); - } - - @Override - @Nonnull - @NonNls - public String getShortName() - { - return SHORT_NAME; - } - - @Override - protected JSElementVisitor createVisitor(final ProblemsHolder holder) - { - return new JSElementVisitor() - { - @Override - public void visitJSReferenceExpression(final JSReferenceExpression node) - { - final PsiElement parentElement = node.getParent(); - - if(!(parentElement instanceof JSCallExpression) && node.shouldCheckReferences() && node.getQualifier() == null && parentElement instanceof - JSDefinitionExpression) - { - final JSSourceElement element = PsiTreeUtil.getParentOfType(node, JSWithStatement.class, JSFunction.class); - - if(!(element instanceof JSWithStatement)) - { - boolean varReferenceWithoutVar = true; - final ResolveResult[] resolveResults = node.multiResolve(false); - - for(ResolveResult r : resolveResults) - { - final PsiElement resolveResult = r.getElement(); - if(resolveResult instanceof JSVariable || - resolveResult instanceof JSFunction) - { - varReferenceWithoutVar = false; - break; - } - } - - if(varReferenceWithoutVar) - { - final PsiElement nameIdentifier = node.getReferenceNameElement(); - - if(nameIdentifier != null) - { - final List fixes = new LinkedList(); - - if(myOnTheFly) - { - fixes.add(new DeclareJSVariableIntentionAction(node)); - } - - holder.registerProblem( - nameIdentifier, - JavaScriptLocalize.javascriptUndeclaredVariableNameMessage(node.getReferencedName()).get(), - ProblemHighlightType.GENERIC_ERROR_OR_WARNING, - !fixes.isEmpty() ? fixes.toArray(new LocalQuickFix[fixes.size()]) : null - ); - } - } - } - } - super.visitJSReferenceExpression(node); - } - }; - } - - private static boolean isImplicitlyDeclared(final JSReferenceExpression node, final PsiElement parentElement) - { - if(parentElement instanceof JSForInStatement) - { - final JSExpression varExpression = ((JSForInStatement) parentElement).getVariableExpression(); - - return PsiTreeUtil.findCommonParent(varExpression, node) == varExpression; - } - else if(parentElement instanceof JSForStatement) - { - final JSExpression varExpression = ((JSForStatement) parentElement).getInitialization(); - - return PsiTreeUtil.findCommonParent(varExpression, node) == varExpression; - } - return false; - } - - private static class DeclareJSVariableIntentionAction implements LocalQuickFix - { - private final JSReferenceExpression myReferenceExpression; - @NonNls - private static final String VAR_STATEMENT_START = "var "; - private final PsiFile myFile; - - DeclareJSVariableIntentionAction(JSReferenceExpression expression) - { - myReferenceExpression = expression; - myFile = expression.getContainingFile(); - } - - @Override - @Nonnull - public String getName() - { - return JavaScriptLocalize.javascriptDeclareVariableIntentionName(myReferenceExpression.getReferencedName()).get(); - } - - @Override - @Nonnull - public String getFamilyName() - { - return JavaScriptLocalize.javascriptCreateVariableIntentionFamily().get(); - } - - @Override - public void applyFix(@Nonnull Project project, @Nonnull ProblemDescriptor descriptor) - { - if(!FileModificationService.getInstance().prepareFileForWrite(myFile)) - { - return; - } - - PsiElement anchor = JSUtils.findStatementAnchor(myReferenceExpression, myFile); - boolean implicitlyDeclared = isImplicitlyDeclared(myReferenceExpression, anchor); - - if(implicitlyDeclared) - { - anchor = myReferenceExpression; - final JSStatement statement = PsiTreeUtil.getParentOfType(anchor, JSForStatement.class, JSStatement.class); - - if(statement instanceof JSForStatement) - { - final JSExpression initialization = ((JSForStatement) statement).getInitialization(); - - if(initialization instanceof JSBinaryExpression && ((JSBinaryExpression) initialization).getOperationSign() == JSTokenTypes.COMMA) - { - anchor = ((JSAssignmentExpression) ((JSBinaryExpression) initialization).getLOperand()).getLOperand(); - } - } - } - - if(anchor != null) - { - boolean anchorChanged = false; - - if(!implicitlyDeclared) - { - PsiElement parent = anchor.getParent(); - - while(parent instanceof JSBlockStatement || parent instanceof JSIfStatement || parent instanceof JSLoopStatement) - { - PsiElement newAnchor = parent.getParent(); - - if(newAnchor instanceof JSIfStatement || newAnchor instanceof JSWithStatement || newAnchor instanceof JSLoopStatement || - newAnchor instanceof JSTryStatement || newAnchor instanceof JSSwitchStatement) - { - anchor = newAnchor; - parent = anchor.getParent(); - anchorChanged = true; - } - else if(newAnchor instanceof JSFile) - { - anchor = parent; - anchorChanged = true; - break; - } - else - { - break; - } - } - } - - final TextRange textRange = anchor.getTextRange(); - final int startOffset = textRange.getStartOffset(); - @NonNls StringBuilder builder = new StringBuilder(); - builder.append(VAR_STATEMENT_START); - - if(anchor instanceof JSExpressionStatement) - { - JSExpression expr = ((JSExpressionStatement) anchor).getExpression(); - if(expr instanceof JSAssignmentExpression && ((JSAssignmentExpression) expr).getOperationSign() != JSTokenTypes.EQ) - { - anchorChanged = true; - } - } - - if((anchorChanged || !(anchor instanceof JSExpressionStatement)) && !implicitlyDeclared) - { - // var statement should be inserted completely - builder.append(myReferenceExpression.getReferencedName()).append(";\n"); - } - - Document document = PsiDocumentManager.getInstance(project).getDocument(myFile); - document.replaceString(startOffset, startOffset, builder); - PsiDocumentManager.getInstance(project).commitDocument(document); - - try - { - CodeStyleManager.getInstance(project).reformatText(myFile, startOffset, textRange.getEndOffset() + builder.length()); - } - catch(IncorrectOperationException e) - { - e.printStackTrace(); - } - myFile.navigate(true); - } - } - } +public class JSUndeclaredVariableInspection extends JSInspection { + @NonNls + public static final String SHORT_NAME = "JSUndeclaredVariable"; + + @Override + @Nonnull + public String getGroupDisplayName() { + return "General"; + } + + @Override + @Nonnull + public String getDisplayName() { + return JavaScriptLocalize.jsUndeclaredVariableInspectionName().get(); + } + + @Override + @Nonnull + @NonNls + public String getShortName() { + return SHORT_NAME; + } + + @Override + protected JSElementVisitor createVisitor(final ProblemsHolder holder) { + return new JSElementVisitor() { + @Override + public void visitJSReferenceExpression(final JSReferenceExpression node) { + final PsiElement parentElement = node.getParent(); + + if (!(parentElement instanceof JSCallExpression) && node.shouldCheckReferences() && node.getQualifier() == null && parentElement instanceof + JSDefinitionExpression) { + final JSSourceElement element = PsiTreeUtil.getParentOfType(node, JSWithStatement.class, JSFunction.class); + + if (!(element instanceof JSWithStatement)) { + boolean varReferenceWithoutVar = true; + final ResolveResult[] resolveResults = node.multiResolve(false); + + for (ResolveResult r : resolveResults) { + final PsiElement resolveResult = r.getElement(); + if (resolveResult instanceof JSVariable || + resolveResult instanceof JSFunction) { + varReferenceWithoutVar = false; + break; + } + } + + if (varReferenceWithoutVar) { + final PsiElement nameIdentifier = node.getReferenceNameElement(); + + if (nameIdentifier != null) { + final List fixes = new LinkedList(); + + if (myOnTheFly) { + fixes.add(new DeclareJSVariableIntentionAction(node)); + } + + holder.registerProblem( + nameIdentifier, + JavaScriptLocalize.javascriptUndeclaredVariableNameMessage(node.getReferencedName()).get(), + ProblemHighlightType.GENERIC_ERROR_OR_WARNING, + !fixes.isEmpty() ? fixes.toArray(new LocalQuickFix[fixes.size()]) : null + ); + } + } + } + } + super.visitJSReferenceExpression(node); + } + }; + } + + private static boolean isImplicitlyDeclared(final JSReferenceExpression node, final PsiElement parentElement) { + if (parentElement instanceof JSForInStatement) { + final JSExpression varExpression = ((JSForInStatement)parentElement).getVariableExpression(); + + return PsiTreeUtil.findCommonParent(varExpression, node) == varExpression; + } + else if (parentElement instanceof JSForStatement) { + final JSExpression varExpression = ((JSForStatement)parentElement).getInitialization(); + + return PsiTreeUtil.findCommonParent(varExpression, node) == varExpression; + } + return false; + } + + private static class DeclareJSVariableIntentionAction implements LocalQuickFix { + private final JSReferenceExpression myReferenceExpression; + @NonNls + private static final String VAR_STATEMENT_START = "var "; + private final PsiFile myFile; + + DeclareJSVariableIntentionAction(JSReferenceExpression expression) { + myReferenceExpression = expression; + myFile = expression.getContainingFile(); + } + + @Override + @Nonnull + public String getName() { + return JavaScriptLocalize.javascriptDeclareVariableIntentionName(myReferenceExpression.getReferencedName()).get(); + } + + @Override + @Nonnull + public String getFamilyName() { + return JavaScriptLocalize.javascriptCreateVariableIntentionFamily().get(); + } + + @Override + public void applyFix(@Nonnull Project project, @Nonnull ProblemDescriptor descriptor) { + if (!FileModificationService.getInstance().prepareFileForWrite(myFile)) { + return; + } + + PsiElement anchor = JSUtils.findStatementAnchor(myReferenceExpression, myFile); + boolean implicitlyDeclared = isImplicitlyDeclared(myReferenceExpression, anchor); + + if (implicitlyDeclared) { + anchor = myReferenceExpression; + final JSStatement statement = PsiTreeUtil.getParentOfType(anchor, JSForStatement.class, JSStatement.class); + + if (statement instanceof JSForStatement) { + final JSExpression initialization = ((JSForStatement)statement).getInitialization(); + + if (initialization instanceof JSBinaryExpression && ((JSBinaryExpression)initialization).getOperationSign() == JSTokenTypes.COMMA) { + anchor = ((JSAssignmentExpression)((JSBinaryExpression)initialization).getLOperand()).getLOperand(); + } + } + } + + if (anchor != null) { + boolean anchorChanged = false; + + if (!implicitlyDeclared) { + PsiElement parent = anchor.getParent(); + + while (parent instanceof JSBlockStatement || parent instanceof JSIfStatement || parent instanceof JSLoopStatement) { + PsiElement newAnchor = parent.getParent(); + + if (newAnchor instanceof JSIfStatement || newAnchor instanceof JSWithStatement || newAnchor instanceof JSLoopStatement || + newAnchor instanceof JSTryStatement || newAnchor instanceof JSSwitchStatement) { + anchor = newAnchor; + parent = anchor.getParent(); + anchorChanged = true; + } + else if (newAnchor instanceof JSFile) { + anchor = parent; + anchorChanged = true; + break; + } + else { + break; + } + } + } + + final TextRange textRange = anchor.getTextRange(); + final int startOffset = textRange.getStartOffset(); + @NonNls StringBuilder builder = new StringBuilder(); + builder.append(VAR_STATEMENT_START); + + if (anchor instanceof JSExpressionStatement) { + JSExpression expr = ((JSExpressionStatement)anchor).getExpression(); + if (expr instanceof JSAssignmentExpression && ((JSAssignmentExpression)expr).getOperationSign() != JSTokenTypes.EQ) { + anchorChanged = true; + } + } + + if ((anchorChanged || !(anchor instanceof JSExpressionStatement)) && !implicitlyDeclared) { + // var statement should be inserted completely + builder.append(myReferenceExpression.getReferencedName()).append(";\n"); + } + + Document document = PsiDocumentManager.getInstance(project).getDocument(myFile); + document.replaceString(startOffset, startOffset, builder); + PsiDocumentManager.getInstance(project).commitDocument(document); + + try { + CodeStyleManager.getInstance(project).reformatText(myFile, startOffset, textRange.getEndOffset() + builder.length()); + } + catch (IncorrectOperationException e) { + e.printStackTrace(); + } + myFile.navigate(true); + } + } + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnresolvedFunctionInspection.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnresolvedFunctionInspection.java index cdff7322..2018dbed 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnresolvedFunctionInspection.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnresolvedFunctionInspection.java @@ -59,667 +59,570 @@ * @author Maxim.Mossienko */ @ExtensionImpl -public class JSUnresolvedFunctionInspection extends JSInspection -{ - @NonNls - private static final String SHORT_NAME = "JSUnresolvedFunction"; - - @Override - @Nonnull - public String getGroupDisplayName() - { - return "General"; - } - - @Override - @Nonnull - public String getDisplayName() - { - return JavaScriptLocalize.jsUnresolvedFunctionInspectionName().get(); - } - - @Override - @Nonnull - @NonNls - public String getShortName() - { - return SHORT_NAME; - } - - @Override - protected JSElementVisitor createVisitor(final ProblemsHolder holder) - { - return new JSElementVisitor() - { - @Override - public void visitJSCallExpression(final JSCallExpression node) - { - final JSExpression methodExpression = node.getMethodExpression(); - - if (methodExpression instanceof JSReferenceExpression referenceExpression) - { - final ResolveResult[] resolveResults = referenceExpression.multiResolve(false); - - boolean noCompleteResolve = true; - - boolean inNewExpression = node instanceof JSNewExpression; - for(ResolveResult r : resolveResults) - { - if(r.isValidResult()) - { - noCompleteResolve = false; - - PsiElement element = r.getElement(); - - if (element instanceof JSVariable variable) - { - String typeText = variable.getTypeString(); - - if(typeText != null && !"*".equals(typeText)) - { - if(!allowMemberReference(inNewExpression, typeText)) - { - holder.registerProblem( - referenceExpression.getReferenceNameElement(), - JavaScriptLocalize.javascriptTermDoesNotEvaluateToFunction().get(), - getHighlightTypeForTypeOrSignatureProblem(node) - ); - } - } - } - else if (element instanceof JSFunction function && function.isGetProperty()) - { - String typeText = function.getReturnTypeString(); - - if(!allowMemberReference(inNewExpression, typeText)) - { - JSArgumentList argumentList = node.getArgumentList(); - LocalQuickFix fixes[] = LocalQuickFix.EMPTY_ARRAY; - - if(argumentList != null) - { - fixes = new LocalQuickFix[]{ - new JSAnnotatingVisitor.RemoveASTNodeFix( - argumentList.getNode(), - JavaScriptLocalize.javascriptTermDoesNotEvaluateToFunction2Fix() - ) - }; - } - - holder.registerProblem( - ((JSReferenceExpression) methodExpression).getReferenceNameElement(), - JavaScriptLocalize.javascriptTermDoesNotEvaluateToFunction2().get(), - getHighlightTypeForTypeOrSignatureProblem(node), - fixes - ); - } - } - break; - } - } - JavaScriptQuickFixFactory javaScriptQuickFixFactory = JavaScriptQuickFixFactory.byElement(referenceExpression); - - if(resolveResults.length == 0 || noCompleteResolve) - { - final JSExpression qualifier = referenceExpression.getQualifier(); - final List quickFixes = new LinkedList(); - final String refName = referenceExpression.getReferencedName(); - - if(myOnTheFly && ((qualifier == null || qualifier instanceof JSThisExpression) || JSUtils.isLHSExpression(qualifier))) - { - if(methodExpression.getParent() instanceof JSCallExpression) - { - boolean simpleJs = !JavaScriptVersionUtil.containsFeature(referenceExpression, JavaScriptFeature.CLASS); - - if(!inNewExpression || simpleJs) - { - quickFixes.add(javaScriptQuickFixFactory.createFunctionOrMethodFix(refName, true)); - } - - if(qualifier == null) - { - if(simpleJs) - { - quickFixes.add(javaScriptQuickFixFactory.createFunctionOrMethodFix(refName, false)); - } - else - { - quickFixes.add(new AddImportECMAScriptClassOrFunctionAction(null, referenceExpression)); - if(inNewExpression) - { - quickFixes.add(new CreateClassOrInterfaceAction(referenceExpression, false)); - } - } - } - } - } - - final PsiElement referenceNameElement = referenceExpression.getReferenceNameElement(); - - if(referenceNameElement != null) - { - holder.registerProblem( - referenceNameElement, - inNewExpression - ? JavaScriptLocalize.javascriptUnresolvedTypeNameMessage(refName).get() - : JavaScriptLocalize.javascriptUnresolvedFunctionNameMessage(refName).get(), - getUnresolveReferenceHighlightType(qualifier, node), - quickFixes.size() > 0 ? quickFixes.toArray(new LocalQuickFix[quickFixes.size()]) : null - ); - } - } - else - { - PsiElement element = resolveResults[0].getElement(); - - if (inNewExpression && element instanceof JSClass jsClass && jsClass.isInterface()) - { - final PsiElement referenceNameElement = referenceExpression.getReferenceNameElement(); - - holder.registerProblem( - referenceNameElement, - JavaScriptLocalize.javascriptInterfaceCanNotBeInstantiatedMessage().get(), - getUnresolveReferenceHighlightType(referenceExpression.getQualifier(), node) - ); - } - else - { - checkFunction(node, element, holder); - } - } - } - else if(methodExpression instanceof JSSuperExpression) - { - final PsiElement element = (methodExpression.getReference()).resolve(); - - if(element != null) - { - checkFunction(node, element, holder); - } - } - else if (methodExpression instanceof JSNewExpression newExpression) - { - JSExpression methodExpr = newExpression.getMethodExpression(); - - if (methodExpr instanceof JSReferenceExpression referenceExpression) - { - ResolveResult[] results = referenceExpression.multiResolve(false); - PsiElement elt; - - if(results.length > 0 && ((elt = results[0].getElement()) instanceof JSFunction && ((JSFunction) elt).isConstructor() || elt instanceof - JSClass)) - { - holder.registerProblem( - methodExpression, - JavaScriptLocalize.javascriptTermDoesNotEvaluateToFunction().get(), - getUnresolveReferenceHighlightType(null, node) - ); - } - } - } - - super.visitJSCallExpression(node); - } - - @Override - public void visitJSAssignmentExpression(final JSAssignmentExpression node) - { - final JSExpression lOperand = node.getLOperand(); - if(lOperand == null) - { - return; - } - final JSExpression rOperand = node.getROperand(); - if(rOperand == null) - { - return; - } - - final PsiFile containingFile = node.getContainingFile(); - if(containingFile.getLanguage() != JavaScriptSupportLoader.ECMA_SCRIPT_L4) - { - return; - } - String expressionType = null; - - if(lOperand instanceof JSDefinitionExpression) - { - JSExpression expression = ((JSDefinitionExpression) lOperand).getExpression(); - if(expression instanceof JSReferenceExpression) - { - PsiElement resolve = JSResolveUtil.unwrapProxy(((JSReferenceExpression) expression).resolve()); - - if(resolve instanceof JSNamedElement) - { - expressionType = JSResolveUtil.getTypeFromSetAccessor((JSNamedElement) resolve); - if(expressionType != null) - { - expressionType = JSImportHandlingUtil.resolveTypeName(expressionType, resolve); - } - } - } - } - - if(expressionType == null) - { - expressionType = JSResolveUtil.getQualifiedExpressionType(lOperand, containingFile); - } - checkExpressionIsAssignableToType( - rOperand, - expressionType, - holder, - containingFile, - JavaScriptLocalize::javascriptAssignedExpressionTypeMismatch - ); - } - - @Override - public void visitJSReturnStatement(final JSReturnStatement node) - { - final JSExpression expression = node.getExpression(); - if(expression == null) - { - return; - } - - final JSFunction fun = PsiTreeUtil.getParentOfType(node, JSFunction.class); - if(fun == null) - { - return; // TODO: complain about it - } - final String typeString = fun.getReturnTypeString(); - if(typeString == null) - { - return; - } - final PsiFile containingFile = fun.getContainingFile(); - if(containingFile.getLanguage() != JavaScriptSupportLoader.ECMA_SCRIPT_L4) - { - return; - } - - checkExpressionIsAssignableToType( - expression, - JSImportHandlingUtil.resolveTypeName(typeString, fun), - holder, - containingFile, - JavaScriptLocalize::javascriptReturnedExpressionTypeMismatch - ); - } - - @Override - public void visitJSVariable(final JSVariable node) - { - final JSExpression initializer = node.getInitializer(); - if(initializer == null) - { - return; - } - checkExpressionIsAssignableToVariable( - node, - initializer, - holder, - node.getContainingFile(), - JavaScriptLocalize::javascriptInitializerTypeMismatch - ); - } - - @Override - public void visitJSBinaryExpression(JSBinaryExpression node) - { - IElementType sign = node.getOperationSign(); - - if(sign == JSTokenTypes.AS_KEYWORD || sign == JSTokenTypes.IS_KEYWORD) - { - JSExpression rOperand = node.getROperand(); - - if(rOperand instanceof JSReferenceExpression) - { - ResolveResult[] results = ((JSReferenceExpression) rOperand).multiResolve(false); - - if(results.length > 0 && results[0].getElement() instanceof JSVariable) - { - checkTypeIs(rOperand, rOperand, holder, "Class"); - } - } - } - } - - @Override - public void visitJSForInStatement(JSForInStatement node) - { - if(!node.isForEach()) - { - JSVarStatement statement = node.getDeclarationStatement(); - - if(statement != null) - { - String expressionType = JSResolveUtil.getQualifiedExpressionType(node.getCollectionExpression(), node.getContainingFile()); - boolean isDictionary = "flash.utils.Dictionary".equals(expressionType); - - for(JSVariable var : statement.getVariables()) - { - PsiElement typeElement = var.getTypeElement(); - String typeElementText; - - if(typeElement != null && - "Array".equals(expressionType) && - ("Object".equals(typeElementText = typeElement.getText()) || "*".equals(typeElementText))) - { - holder.registerProblem( - typeElement, - JavaScriptLocalize.javascriptIncorrectArrayTypeInForin().get(), - ProblemHighlightType.GENERIC_ERROR_OR_WARNING - ); - continue; - } - - if(isDictionary && typeElement != null && "Object".equals(typeElement.getText())) - { - continue; - } - checkTypeIs(typeElement, typeElement, holder, "XMLList".equals(expressionType) ? "XML" : "String"); - } - } - } - } - }; - } - - private static boolean allowMemberReference(boolean inNewExpression, String typeText) - { - return ("Class".equals(typeText) && inNewExpression) || "Function".equals(typeText); - } - - private static void checkTypeIs(PsiElement type, PsiElement node, ProblemsHolder holder, String typeName) - { - if (type instanceof JSReferenceExpression referenceExpression) - { - String expressionType = JSResolveUtil.getQualifiedExpressionType(referenceExpression, referenceExpression.getContainingFile()); - if (!typeName.equals(expressionType)) - { - holder.registerProblem( - node, - JavaScriptLocalize.javascriptIncorrectVariableTypeMismatch(typeName, expressionType).get(), - getHighlightTypeForTypeOrSignatureProblem(node) - ); - } - } - else if(type != null) - { - holder.registerProblem( - node, - JavaScriptLocalize.javascriptIncorrectVariableTypeMismatch(typeName, type.getText()).get(), - getHighlightTypeForTypeOrSignatureProblem(node) - ); - } - } - - private static void checkTypeIs(JSExpression rOperand, PsiElement node, ProblemsHolder holder, String typeName) - { - String expressionType = JSResolveUtil.getQualifiedExpressionType(rOperand, rOperand.getContainingFile()); - if(!typeName.equals(expressionType)) - { - holder.registerProblem( - node, - JavaScriptLocalize.javascriptBinaryOperandTypeMismatch(typeName, expressionType).get(), - getHighlightTypeForTypeOrSignatureProblem(node) - ); - } - } - - static ProblemHighlightType getUnresolveReferenceHighlightType(final @Nullable JSExpression qualifier, @Nonnull JSExpression node) - { - JSClass jsClass; - - final PsiFile containingFile = node.getContainingFile(); - if(qualifier != null) - { - jsClass = JSResolveUtil.findClassOfQualifier(qualifier, containingFile); - - if (jsClass == null && qualifier instanceof JSReferenceExpression referenceExpression) - { - ResolveResult[] results = referenceExpression.multiResolve(false); - - if(results.length != 0) - { - PsiElement resultElement = results[0].getElement(); - String type = null; - - if (resultElement instanceof JSVariable variable) - { - type = variable.getTypeString(); - } - else if (resultElement instanceof JSFunction function) - { - type = function.getReturnTypeString(); - } - - if("*".equals(type)) - { - return ProblemHighlightType.LIKE_UNKNOWN_SYMBOL; - } - jsClass = JSResolveUtil.getClassOfContext(resultElement); - } - } - } - else - { - jsClass = JSResolveUtil.getClassOfContext(node); - } - - final boolean ecmaL4File = containingFile.getLanguage() == JavaScriptSupportLoader.ECMA_SCRIPT_L4; - - if(jsClass != null && ecmaL4File && - (!(jsClass instanceof XmlBackedJSClassImpl) || jsClass.getContainingFile().getFileType() == XmlFileType.INSTANCE)) - { - final JSAttributeList attributeList = jsClass.getAttributeList(); - if(attributeList == null || !attributeList.hasModifier(JSAttributeList.ModifierType.DYNAMIC)) - { - return ProblemHighlightType.ERROR; - } - } - - if(ecmaL4File && jsClass == null && node.getParent() instanceof JSReferenceList) - { - return ProblemHighlightType.ERROR; - } - return ProblemHighlightType.LIKE_UNKNOWN_SYMBOL; - } - - private static void checkFunction(final JSCallExpression node, final PsiElement element, final ProblemsHolder holder) - { - if (element instanceof JSFunction function) - { - if(!function.isGetProperty() || !"Function".equals(function.getReturnTypeString())) - { - final JSParameterList parameterList = function.getParameterList(); - - if(parameterList != null) - { - checkCallParameters(node, parameterList.getParameters(), function.isReferencesArguments(), holder); - } - } - } - else if(element instanceof JSClass) - { - if(node instanceof JSNewExpression || node.getMethodExpression() instanceof JSSuperExpression) - { - checkCallParameters(node, JSParameter.EMPTY_ARRAY, false, holder); - } - else - { - JSArgumentList argumentList = node.getArgumentList(); - if(argumentList == null || argumentList.getArguments().length != 1) - { - holder.registerProblem( - argumentList != null ? argumentList : node, - JavaScriptLocalize.javascriptInvalidNumberOfParameters("one").get(), - getHighlightTypeForTypeOrSignatureProblem(node) - ); - } - } - } - } - - private static void checkCallParameters(final JSCallExpression node, final JSParameter[] parameters, boolean functionReferencesArguments, - final ProblemsHolder holder) - { - final JSArgumentList argumentList = node.getArgumentList(); - final JSExpression[] expressions = argumentList != null ? argumentList.getArguments() : JSExpression.EMPTY_ARRAY; - - boolean lastIsRest = false; - int minParameterLength = 0; - int maxParameterLength = parameters.length; - - for(int i = 0; i < parameters.length; ++i) - { - final JSParameter parameter = parameters[i]; - if(parameter.isOptional()) - { - break; - } - - if(i == parameters.length - 1 && parameter.isRest()) - { - lastIsRest = true; - maxParameterLength = Integer.MAX_VALUE; - break; - } - minParameterLength++; - } - - if(!lastIsRest && parameters.length > 0 && parameters[parameters.length - 1].isRest()) - { - lastIsRest = true; - maxParameterLength = Integer.MAX_VALUE; - } - - if ((expressions.length < minParameterLength || expressions.length > maxParameterLength) && !functionReferencesArguments) - { - final String s = (lastIsRest ? minParameterLength + " or more " : String.valueOf(minParameterLength) + - (minParameterLength != maxParameterLength ? ".." + maxParameterLength : "")); - holder.registerProblem( - argumentList != null ? argumentList : node, - JavaScriptLocalize.javascriptInvalidNumberOfParameters(s).get(), - getHighlightTypeForTypeOrSignatureProblem(node) - ); - } - else - { - int i = 0; - final PsiFile containingFile = node.getContainingFile(); - - for(JSParameter p : parameters) - { - if(i == expressions.length) - { - break; - } - if(p.isRest()) - { - break; - } - checkExpressionIsAssignableToVariable(p, expressions[i], holder, containingFile, JavaScriptLocalize::javascriptArgumentTypeMismatch); - ++i; - } - } - } - - private static void checkExpressionIsAssignableToVariable( - final JSVariable p, - JSExpression expr, - final ProblemsHolder holder, - final PsiFile containingFile, - final BiFunction messageGenerator - ) - { - final String parameterTypeResolved = JSImportHandlingUtil.resolveTypeName(p.getTypeString(), p); - checkExpressionIsAssignableToType( - expr, - parameterTypeResolved, - holder, - containingFile, - messageGenerator - ); - } - - private static void checkExpressionIsAssignableToType( - final JSExpression expr, - final String type, - final ProblemsHolder holder, - final PsiFile containingFile, - final BiFunction messageGenerator - ) - { - if("*".equals(type) || type == null) - { - return; // optimization - } - final String expressionType = JSResolveUtil.getQualifiedExpressionType(expr, containingFile); - - if(!JSResolveUtil.isAssignableType(type, expressionType, containingFile)) - { - holder.registerProblem( - expr, - messageGenerator.apply(type, expressionType).get(), - getHighlightTypeForTypeOrSignatureProblem(expr), - new JSInsertCastFix(type) - ); - } - } - - private static ProblemHighlightType getHighlightTypeForTypeOrSignatureProblem(@Nonnull PsiElement node) - { - if(node.getContainingFile().getLanguage() == JavaScriptSupportLoader.ECMA_SCRIPT_L4) - { - return ProblemHighlightType.GENERIC_ERROR; - } - return ProblemHighlightType.GENERIC_ERROR_OR_WARNING; - } - - private static class JSInsertCastFix implements LocalQuickFix - { - private final String type; - - public JSInsertCastFix(final String type) - { - this.type = type; - } - - @Override - @Nonnull - public String getName() - { - return JavaScriptLocalize.javascriptInsertCastFix().get(); - } - - @Override - @Nonnull - public String getFamilyName() - { - return getName(); - } - - @Override - public void applyFix(@Nonnull final Project project, @Nonnull final ProblemDescriptor descriptor) - { - final PsiElement element = descriptor.getPsiElement(); - final Editor editor = BaseCreateFix.getEditor(project, element.getContainingFile()); - if(editor == null) - { - return; - } - - final String shortenedType = JSResolveUtil.getShortenedType(this.type, element); - final TemplateManager templateManager = TemplateManager.getInstance(project); - Template template = templateManager.createTemplate("", "", shortenedType + "($SELECTION$)"); - template.setToReformat(true); - - final int offset = element.getTextOffset(); - editor.getSelectionModel().setSelection(offset, offset + element.getTextLength()); - editor.getCaretModel().moveToOffset(offset); - templateManager.startTemplate(editor, element.getText(), template); - } - } +public class JSUnresolvedFunctionInspection extends JSInspection { + @NonNls + private static final String SHORT_NAME = "JSUnresolvedFunction"; + + @Override + @Nonnull + public String getGroupDisplayName() { + return "General"; + } + + @Override + @Nonnull + public String getDisplayName() { + return JavaScriptLocalize.jsUnresolvedFunctionInspectionName().get(); + } + + @Override + @Nonnull + @NonNls + public String getShortName() { + return SHORT_NAME; + } + + @Override + protected JSElementVisitor createVisitor(final ProblemsHolder holder) { + return new JSElementVisitor() { + @Override + public void visitJSCallExpression(final JSCallExpression node) { + final JSExpression methodExpression = node.getMethodExpression(); + + if (methodExpression instanceof JSReferenceExpression referenceExpression) { + final ResolveResult[] resolveResults = referenceExpression.multiResolve(false); + + boolean noCompleteResolve = true; + + boolean inNewExpression = node instanceof JSNewExpression; + for (ResolveResult r : resolveResults) { + if (r.isValidResult()) { + noCompleteResolve = false; + + PsiElement element = r.getElement(); + + if (element instanceof JSVariable variable) { + String typeText = variable.getTypeString(); + + if (typeText != null && !"*".equals(typeText)) { + if (!allowMemberReference(inNewExpression, typeText)) { + holder.registerProblem( + referenceExpression.getReferenceNameElement(), + JavaScriptLocalize.javascriptTermDoesNotEvaluateToFunction().get(), + getHighlightTypeForTypeOrSignatureProblem(node) + ); + } + } + } + else if (element instanceof JSFunction function && function.isGetProperty()) { + String typeText = function.getReturnTypeString(); + + if (!allowMemberReference(inNewExpression, typeText)) { + JSArgumentList argumentList = node.getArgumentList(); + LocalQuickFix fixes[] = LocalQuickFix.EMPTY_ARRAY; + + if (argumentList != null) { + fixes = new LocalQuickFix[]{ + new JSAnnotatingVisitor.RemoveASTNodeFix( + argumentList.getNode(), + JavaScriptLocalize.javascriptTermDoesNotEvaluateToFunction2Fix() + ) + }; + } + + holder.registerProblem( + ((JSReferenceExpression)methodExpression).getReferenceNameElement(), + JavaScriptLocalize.javascriptTermDoesNotEvaluateToFunction2().get(), + getHighlightTypeForTypeOrSignatureProblem(node), + fixes + ); + } + } + break; + } + } + JavaScriptQuickFixFactory javaScriptQuickFixFactory = JavaScriptQuickFixFactory.byElement(referenceExpression); + + if (resolveResults.length == 0 || noCompleteResolve) { + final JSExpression qualifier = referenceExpression.getQualifier(); + final List quickFixes = new LinkedList(); + final String refName = referenceExpression.getReferencedName(); + + if (myOnTheFly && ((qualifier == null || qualifier instanceof JSThisExpression) || JSUtils.isLHSExpression(qualifier))) { + if (methodExpression.getParent() instanceof JSCallExpression) { + boolean simpleJs = !JavaScriptVersionUtil.containsFeature(referenceExpression, JavaScriptFeature.CLASS); + + if (!inNewExpression || simpleJs) { + quickFixes.add(javaScriptQuickFixFactory.createFunctionOrMethodFix(refName, true)); + } + + if (qualifier == null) { + if (simpleJs) { + quickFixes.add(javaScriptQuickFixFactory.createFunctionOrMethodFix(refName, false)); + } + else { + quickFixes.add(new AddImportECMAScriptClassOrFunctionAction(null, referenceExpression)); + if (inNewExpression) { + quickFixes.add(new CreateClassOrInterfaceAction(referenceExpression, false)); + } + } + } + } + } + + final PsiElement referenceNameElement = referenceExpression.getReferenceNameElement(); + + if (referenceNameElement != null) { + holder.registerProblem( + referenceNameElement, + inNewExpression + ? JavaScriptLocalize.javascriptUnresolvedTypeNameMessage(refName).get() + : JavaScriptLocalize.javascriptUnresolvedFunctionNameMessage(refName).get(), + getUnresolveReferenceHighlightType(qualifier, node), + quickFixes.size() > 0 ? quickFixes.toArray(new LocalQuickFix[quickFixes.size()]) : null + ); + } + } + else { + PsiElement element = resolveResults[0].getElement(); + + if (inNewExpression && element instanceof JSClass jsClass && jsClass.isInterface()) { + final PsiElement referenceNameElement = referenceExpression.getReferenceNameElement(); + + holder.registerProblem( + referenceNameElement, + JavaScriptLocalize.javascriptInterfaceCanNotBeInstantiatedMessage().get(), + getUnresolveReferenceHighlightType(referenceExpression.getQualifier(), node) + ); + } + else { + checkFunction(node, element, holder); + } + } + } + else if (methodExpression instanceof JSSuperExpression) { + final PsiElement element = (methodExpression.getReference()).resolve(); + + if (element != null) { + checkFunction(node, element, holder); + } + } + else if (methodExpression instanceof JSNewExpression newExpression) { + JSExpression methodExpr = newExpression.getMethodExpression(); + + if (methodExpr instanceof JSReferenceExpression referenceExpression) { + ResolveResult[] results = referenceExpression.multiResolve(false); + PsiElement elt; + + if (results.length > 0 && ((elt = + results[0].getElement()) instanceof JSFunction && ((JSFunction)elt).isConstructor() || elt instanceof + JSClass)) { + holder.registerProblem( + methodExpression, + JavaScriptLocalize.javascriptTermDoesNotEvaluateToFunction().get(), + getUnresolveReferenceHighlightType(null, node) + ); + } + } + } + + super.visitJSCallExpression(node); + } + + @Override + public void visitJSAssignmentExpression(final JSAssignmentExpression node) { + final JSExpression lOperand = node.getLOperand(); + if (lOperand == null) { + return; + } + final JSExpression rOperand = node.getROperand(); + if (rOperand == null) { + return; + } + + final PsiFile containingFile = node.getContainingFile(); + if (containingFile.getLanguage() != JavaScriptSupportLoader.ECMA_SCRIPT_L4) { + return; + } + String expressionType = null; + + if (lOperand instanceof JSDefinitionExpression) { + JSExpression expression = ((JSDefinitionExpression)lOperand).getExpression(); + if (expression instanceof JSReferenceExpression) { + PsiElement resolve = JSResolveUtil.unwrapProxy(((JSReferenceExpression)expression).resolve()); + + if (resolve instanceof JSNamedElement) { + expressionType = JSResolveUtil.getTypeFromSetAccessor((JSNamedElement)resolve); + if (expressionType != null) { + expressionType = JSImportHandlingUtil.resolveTypeName(expressionType, resolve); + } + } + } + } + + if (expressionType == null) { + expressionType = JSResolveUtil.getQualifiedExpressionType(lOperand, containingFile); + } + checkExpressionIsAssignableToType( + rOperand, + expressionType, + holder, + containingFile, + JavaScriptLocalize::javascriptAssignedExpressionTypeMismatch + ); + } + + @Override + public void visitJSReturnStatement(final JSReturnStatement node) { + final JSExpression expression = node.getExpression(); + if (expression == null) { + return; + } + + final JSFunction fun = PsiTreeUtil.getParentOfType(node, JSFunction.class); + if (fun == null) { + return; // TODO: complain about it + } + final String typeString = fun.getReturnTypeString(); + if (typeString == null) { + return; + } + final PsiFile containingFile = fun.getContainingFile(); + if (containingFile.getLanguage() != JavaScriptSupportLoader.ECMA_SCRIPT_L4) { + return; + } + + checkExpressionIsAssignableToType( + expression, + JSImportHandlingUtil.resolveTypeName(typeString, fun), + holder, + containingFile, + JavaScriptLocalize::javascriptReturnedExpressionTypeMismatch + ); + } + + @Override + public void visitJSVariable(final JSVariable node) { + final JSExpression initializer = node.getInitializer(); + if (initializer == null) { + return; + } + checkExpressionIsAssignableToVariable( + node, + initializer, + holder, + node.getContainingFile(), + JavaScriptLocalize::javascriptInitializerTypeMismatch + ); + } + + @Override + public void visitJSBinaryExpression(JSBinaryExpression node) { + IElementType sign = node.getOperationSign(); + + if (sign == JSTokenTypes.AS_KEYWORD || sign == JSTokenTypes.IS_KEYWORD) { + JSExpression rOperand = node.getROperand(); + + if (rOperand instanceof JSReferenceExpression) { + ResolveResult[] results = ((JSReferenceExpression)rOperand).multiResolve(false); + + if (results.length > 0 && results[0].getElement() instanceof JSVariable) { + checkTypeIs(rOperand, rOperand, holder, "Class"); + } + } + } + } + + @Override + public void visitJSForInStatement(JSForInStatement node) { + if (!node.isForEach()) { + JSVarStatement statement = node.getDeclarationStatement(); + + if (statement != null) { + String expressionType = + JSResolveUtil.getQualifiedExpressionType(node.getCollectionExpression(), node.getContainingFile()); + boolean isDictionary = "flash.utils.Dictionary".equals(expressionType); + + for (JSVariable var : statement.getVariables()) { + PsiElement typeElement = var.getTypeElement(); + String typeElementText; + + if (typeElement != null && + "Array".equals(expressionType) && + ("Object".equals(typeElementText = typeElement.getText()) || "*".equals(typeElementText))) { + holder.registerProblem( + typeElement, + JavaScriptLocalize.javascriptIncorrectArrayTypeInForin().get(), + ProblemHighlightType.GENERIC_ERROR_OR_WARNING + ); + continue; + } + + if (isDictionary && typeElement != null && "Object".equals(typeElement.getText())) { + continue; + } + checkTypeIs(typeElement, typeElement, holder, "XMLList".equals(expressionType) ? "XML" : "String"); + } + } + } + } + }; + } + + private static boolean allowMemberReference(boolean inNewExpression, String typeText) { + return ("Class".equals(typeText) && inNewExpression) || "Function".equals(typeText); + } + + private static void checkTypeIs(PsiElement type, PsiElement node, ProblemsHolder holder, String typeName) { + if (type instanceof JSReferenceExpression referenceExpression) { + String expressionType = JSResolveUtil.getQualifiedExpressionType(referenceExpression, referenceExpression.getContainingFile()); + if (!typeName.equals(expressionType)) { + holder.registerProblem( + node, + JavaScriptLocalize.javascriptIncorrectVariableTypeMismatch(typeName, expressionType).get(), + getHighlightTypeForTypeOrSignatureProblem(node) + ); + } + } + else if (type != null) { + holder.registerProblem( + node, + JavaScriptLocalize.javascriptIncorrectVariableTypeMismatch(typeName, type.getText()).get(), + getHighlightTypeForTypeOrSignatureProblem(node) + ); + } + } + + private static void checkTypeIs(JSExpression rOperand, PsiElement node, ProblemsHolder holder, String typeName) { + String expressionType = JSResolveUtil.getQualifiedExpressionType(rOperand, rOperand.getContainingFile()); + if (!typeName.equals(expressionType)) { + holder.registerProblem( + node, + JavaScriptLocalize.javascriptBinaryOperandTypeMismatch(typeName, expressionType).get(), + getHighlightTypeForTypeOrSignatureProblem(node) + ); + } + } + + static ProblemHighlightType getUnresolveReferenceHighlightType(final @Nullable JSExpression qualifier, @Nonnull JSExpression node) { + JSClass jsClass; + + final PsiFile containingFile = node.getContainingFile(); + if (qualifier != null) { + jsClass = JSResolveUtil.findClassOfQualifier(qualifier, containingFile); + + if (jsClass == null && qualifier instanceof JSReferenceExpression referenceExpression) { + ResolveResult[] results = referenceExpression.multiResolve(false); + + if (results.length != 0) { + PsiElement resultElement = results[0].getElement(); + String type = null; + + if (resultElement instanceof JSVariable variable) { + type = variable.getTypeString(); + } + else if (resultElement instanceof JSFunction function) { + type = function.getReturnTypeString(); + } + + if ("*".equals(type)) { + return ProblemHighlightType.LIKE_UNKNOWN_SYMBOL; + } + jsClass = JSResolveUtil.getClassOfContext(resultElement); + } + } + } + else { + jsClass = JSResolveUtil.getClassOfContext(node); + } + + final boolean ecmaL4File = containingFile.getLanguage() == JavaScriptSupportLoader.ECMA_SCRIPT_L4; + + if (jsClass != null && ecmaL4File && + (!(jsClass instanceof XmlBackedJSClassImpl) || jsClass.getContainingFile().getFileType() == XmlFileType.INSTANCE)) { + final JSAttributeList attributeList = jsClass.getAttributeList(); + if (attributeList == null || !attributeList.hasModifier(JSAttributeList.ModifierType.DYNAMIC)) { + return ProblemHighlightType.ERROR; + } + } + + if (ecmaL4File && jsClass == null && node.getParent() instanceof JSReferenceList) { + return ProblemHighlightType.ERROR; + } + return ProblemHighlightType.LIKE_UNKNOWN_SYMBOL; + } + + private static void checkFunction(final JSCallExpression node, final PsiElement element, final ProblemsHolder holder) { + if (element instanceof JSFunction function) { + if (!function.isGetProperty() || !"Function".equals(function.getReturnTypeString())) { + final JSParameterList parameterList = function.getParameterList(); + + if (parameterList != null) { + checkCallParameters(node, parameterList.getParameters(), function.isReferencesArguments(), holder); + } + } + } + else if (element instanceof JSClass) { + if (node instanceof JSNewExpression || node.getMethodExpression() instanceof JSSuperExpression) { + checkCallParameters(node, JSParameter.EMPTY_ARRAY, false, holder); + } + else { + JSArgumentList argumentList = node.getArgumentList(); + if (argumentList == null || argumentList.getArguments().length != 1) { + holder.registerProblem( + argumentList != null ? argumentList : node, + JavaScriptLocalize.javascriptInvalidNumberOfParameters("one").get(), + getHighlightTypeForTypeOrSignatureProblem(node) + ); + } + } + } + } + + private static void checkCallParameters( + final JSCallExpression node, final JSParameter[] parameters, boolean functionReferencesArguments, + final ProblemsHolder holder + ) { + final JSArgumentList argumentList = node.getArgumentList(); + final JSExpression[] expressions = argumentList != null ? argumentList.getArguments() : JSExpression.EMPTY_ARRAY; + + boolean lastIsRest = false; + int minParameterLength = 0; + int maxParameterLength = parameters.length; + + for (int i = 0; i < parameters.length; ++i) { + final JSParameter parameter = parameters[i]; + if (parameter.isOptional()) { + break; + } + + if (i == parameters.length - 1 && parameter.isRest()) { + lastIsRest = true; + maxParameterLength = Integer.MAX_VALUE; + break; + } + minParameterLength++; + } + + if (!lastIsRest && parameters.length > 0 && parameters[parameters.length - 1].isRest()) { + lastIsRest = true; + maxParameterLength = Integer.MAX_VALUE; + } + + if ((expressions.length < minParameterLength || expressions.length > maxParameterLength) && !functionReferencesArguments) { + final String s = (lastIsRest ? minParameterLength + " or more " : String.valueOf(minParameterLength) + + (minParameterLength != maxParameterLength ? ".." + maxParameterLength : "")); + holder.registerProblem( + argumentList != null ? argumentList : node, + JavaScriptLocalize.javascriptInvalidNumberOfParameters(s).get(), + getHighlightTypeForTypeOrSignatureProblem(node) + ); + } + else { + int i = 0; + final PsiFile containingFile = node.getContainingFile(); + + for (JSParameter p : parameters) { + if (i == expressions.length) { + break; + } + if (p.isRest()) { + break; + } + checkExpressionIsAssignableToVariable( + p, + expressions[i], + holder, + containingFile, + JavaScriptLocalize::javascriptArgumentTypeMismatch + ); + ++i; + } + } + } + + private static void checkExpressionIsAssignableToVariable( + final JSVariable p, + JSExpression expr, + final ProblemsHolder holder, + final PsiFile containingFile, + final BiFunction messageGenerator + ) { + final String parameterTypeResolved = JSImportHandlingUtil.resolveTypeName(p.getTypeString(), p); + checkExpressionIsAssignableToType( + expr, + parameterTypeResolved, + holder, + containingFile, + messageGenerator + ); + } + + private static void checkExpressionIsAssignableToType( + final JSExpression expr, + final String type, + final ProblemsHolder holder, + final PsiFile containingFile, + final BiFunction messageGenerator + ) { + if ("*".equals(type) || type == null) { + return; // optimization + } + final String expressionType = JSResolveUtil.getQualifiedExpressionType(expr, containingFile); + + if (!JSResolveUtil.isAssignableType(type, expressionType, containingFile)) { + holder.registerProblem( + expr, + messageGenerator.apply(type, expressionType).get(), + getHighlightTypeForTypeOrSignatureProblem(expr), + new JSInsertCastFix(type) + ); + } + } + + private static ProblemHighlightType getHighlightTypeForTypeOrSignatureProblem(@Nonnull PsiElement node) { + if (node.getContainingFile().getLanguage() == JavaScriptSupportLoader.ECMA_SCRIPT_L4) { + return ProblemHighlightType.GENERIC_ERROR; + } + return ProblemHighlightType.GENERIC_ERROR_OR_WARNING; + } + + private static class JSInsertCastFix implements LocalQuickFix { + private final String type; + + public JSInsertCastFix(final String type) { + this.type = type; + } + + @Override + @Nonnull + public String getName() { + return JavaScriptLocalize.javascriptInsertCastFix().get(); + } + + @Override + @Nonnull + public String getFamilyName() { + return getName(); + } + + @Override + public void applyFix(@Nonnull final Project project, @Nonnull final ProblemDescriptor descriptor) { + final PsiElement element = descriptor.getPsiElement(); + final Editor editor = BaseCreateFix.getEditor(project, element.getContainingFile()); + if (editor == null) { + return; + } + + final String shortenedType = JSResolveUtil.getShortenedType(this.type, element); + final TemplateManager templateManager = TemplateManager.getInstance(project); + Template template = templateManager.createTemplate("", "", shortenedType + "($SELECTION$)"); + template.setToReformat(true); + + final int offset = element.getTextOffset(); + editor.getSelectionModel().setSelection(offset, offset + element.getTextLength()); + editor.getCaretModel().moveToOffset(offset); + templateManager.startTemplate(editor, element.getText(), template); + } + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnresolvedVariableInspection.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnresolvedVariableInspection.java index 1318b365..94dceb46 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnresolvedVariableInspection.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnresolvedVariableInspection.java @@ -50,451 +50,400 @@ * @author Maxim.Mossienko */ @ExtensionImpl -public class JSUnresolvedVariableInspection extends JSInspection -{ - @NonNls - private static final String SHORT_NAME = "JSUnresolvedVariable"; - - @Override - @Nonnull - public String getGroupDisplayName() - { - return "General"; - } - - @Override - @Nonnull - public String getDisplayName() - { - return JavaScriptLocalize.jsUnresolvedVariableInspectionName().get(); - } - - @Override - @Nonnull - @NonNls - public String getShortName() - { - return SHORT_NAME; - } - - @Override - protected JSElementVisitor createVisitor(final ProblemsHolder holder) - { - return new JSElementVisitor() - { - @Override - public void visitJSReferenceExpression(final JSReferenceExpression node) - { - final PsiElement parentElement = node.getParent(); - - if(node.shouldCheckReferences() && !(parentElement instanceof JSCallExpression)) - { - final ResolveResult[] resolveResults = node.multiResolve(false); - boolean emptyResolve = resolveResults.length == 0; - boolean noCompleteResolve = true; - - for(ResolveResult r : resolveResults) - { - if(r.isValidResult()) - { - noCompleteResolve = false; - break; - } - } - - if(emptyResolve || noCompleteResolve) - { - final PsiElement nameIdentifier = node.getReferenceNameElement(); - - if(nameIdentifier != null) - { - final List fixes = new LinkedList(); - final JSExpression qualifier = node.getQualifier(); - - if(myOnTheFly) - { - final PsiFile containingFile = node.getContainingFile(); - final boolean ecma = containingFile.getLanguage() == JavaScriptSupportLoader.ECMA_SCRIPT_L4; - - if((qualifier == null || - JSUtils.isLHSExpression(qualifier) || - qualifier instanceof JSThisExpression) && (!(parentElement instanceof JSDefinitionExpression) || ecma)) - { - final String referencedName = node.getReferencedName(); - boolean isField = qualifier != null; - JSClass contextClass = null; - - if(!isField && ecma) - { - contextClass = JSResolveUtil.getClassOfContext(node); - if(contextClass != null) - { - isField = true; - } - } - - if(!JSResolveUtil.isExprInTypeContext(node)) - { - if(node.getParent() instanceof JSArgumentList) - { - fixes.add(new CreateJSFunctionOrMethodFix(referencedName, !(qualifier == null || (qualifier instanceof - JSThisExpression && ecma))) - { - @Override - protected void addParameters(Template template, JSReferenceExpression referenceExpression, PsiFile file, Set features) - { - JSExpression method = ((JSCallExpression) referenceExpression.getParent().getParent()).getMethodExpression(); - if(method instanceof JSReferenceExpression && "bindSetter".equals(((JSReferenceExpression) method).getReferencedName())) - { - MyExpression expression = new MyExpression("value"); - template.addVariable("value", expression, expression, false); - if(ecma) - { - template.addTextSegment(":int"); - } - } - } - - @Override - protected void addReturnType(Template template, JSReferenceExpression referenceExpression, PsiFile file) - { - template.addTextSegment("void"); - } - }); - } - - boolean suggestCreateVar = true; - - JSClass targetClass = contextClass; - - if(qualifier instanceof JSReferenceExpression) - { - final JSClass clazz = JSResolveUtil.findClassOfQualifier(qualifier, containingFile); - if(clazz != null) - { - targetClass = clazz; - } - } - - if(targetClass != null) - { - suggestCreateVar = !targetClass.isInterface(); - } - - if(suggestCreateVar) - { - fixes.add(new CreateJSVariableIntentionAction(referencedName, isField, false)); - - if(ecma) - { - fixes.add(new CreateJSVariableIntentionAction(referencedName, isField, true)); - } - } - - if(ecma) - { - boolean getter = !(node.getParent() instanceof JSDefinitionExpression); - String invokedName = nameIdentifier.getText(); - fixes.add(new CreateJSPropertyAccessorIntentionAction(invokedName, getter)); - JSCallExpression expression = PsiTreeUtil.getParentOfType(node, JSCallExpression.class); - - if(expression != null) - { - final JSExpression methodExpression = expression.getMethodExpression(); - - if(methodExpression instanceof JSReferenceExpression) - { - final String methodName = ((JSReferenceExpression) methodExpression).getReferencedName(); - - if("addEventListener".equals(methodName) || "removeEventListener".equals(methodName)) - { - final JSArgumentList argumentList = expression.getArgumentList(); - final JSExpression[] params = argumentList != null ? argumentList.getArguments() : JSExpression.EMPTY_ARRAY; - - if(params.length >= 2 && params[0] instanceof JSReferenceExpression) - { - final JSExpression eventNameQualifier = ((JSReferenceExpression) params[0]).getQualifier(); - if(eventNameQualifier != null) - { - fixes.add(new CreateJSEventMethod(invokedName, eventNameQualifier)); - } - } - } - } - } - } - } - if(qualifier != null && !ecma) - { - fixes.add(new CreateJSNamespaceIntentionAction(referencedName)); - } - - if(ecma) - { - if(qualifier == null) - { - fixes.add(new AddImportECMAScriptClassOrFunctionAction(null, node)); - fixes.add(new CreateClassOrInterfaceAction(node, false)); - fixes.add(new CreateClassOrInterfaceAction(node, true)); - } - else - { - fixes.add(new AddImportECMAScriptClassOrFunctionAction(null, node)); - } - } - } - } - - final LocalizeValue message = node.getQualifier() == null - ? JSResolveUtil.isExprInTypeContext(node) - ? JavaScriptLocalize.javascriptUnresolvedTypeNameMessage(node.getReferencedName()) - : JavaScriptLocalize.javascriptUnresolvedVariableOrTypeNameMessage(node.getReferencedName()) - : JavaScriptLocalize.javascriptUnresolvedVariableNameMessage(node.getReferencedName()); - - holder.registerProblem( - nameIdentifier, - message.get(), - JSUnresolvedFunctionInspection.getUnresolveReferenceHighlightType(qualifier, node), - fixes.size() > 0 ? fixes.toArray(new LocalQuickFix[fixes.size()]) : null - ); - } - } - } - super.visitJSReferenceExpression(node); - } - }; - } - - private abstract static class BaseCreateJSVariableIntentionAction extends BaseCreateFix - { - protected final String myReferencedName; - - BaseCreateJSVariableIntentionAction(String referencedName) - { - myReferencedName = referencedName; - } - - @Override - @Nonnull - public String getFamilyName() - { - return JavaScriptLocalize.javascriptCreateVariableIntentionFamily().get(); - } - } - - private static class CreateJSNamespaceIntentionAction extends BaseCreateJSVariableIntentionAction - { - CreateJSNamespaceIntentionAction(String referencedName) - { - super(referencedName); - } - - @Override - @Nonnull - public String getName() - { - return JavaScriptLocalize.javascriptCreateNamespaceIntentionName(myReferencedName).get(); - } - - @RequiredReadAction - @Override - protected void buildTemplate(final Template template, final JSReferenceExpression referenceExpression, final Set features, boolean staticContext, - final PsiFile file, final PsiElement anchorParent) - { - template.addTextSegment("/** @namespace "); - template.addTextSegment(referenceExpression.getText() + " */"); - template.addEndVariable(); - } - } - - private static class CreateJSVariableIntentionAction extends BaseCreateJSVariableIntentionAction - { - @NonNls - private static final String VAR_STATEMENT_START = "var "; - @NonNls - private static final String CONSTANT_STATEMENT_START = "const "; - private boolean isField; - private boolean isConstant; - - CreateJSVariableIntentionAction(String referencedName, boolean isField, boolean isConstant) - { - super(referencedName); - this.isField = isField; - this.isConstant = isConstant; - } - - @Override - @Nonnull - public String getName() - { - return isField - ? isConstant - ? JavaScriptLocalize.javascriptCreateConstantFieldIntentionName(myReferencedName).get() - : JavaScriptLocalize.javascriptCreatePropertyIntentionName(myReferencedName).get() - : isConstant - ? JavaScriptLocalize.javascriptCreateConstantIntentionName(myReferencedName).get() - : JavaScriptLocalize.javascriptCreateVariableIntentionName(myReferencedName).get(); - } - - @RequiredReadAction - @Override - protected void buildTemplate( - final Template template, - final JSReferenceExpression referenceExpression, - final Set features, - boolean staticContext, - final PsiFile file, - final PsiElement anchorParent - ) - { - boolean classFeature = features.contains(JavaScriptFeature.CLASS); - - final JSExpression qualifier = addAccessModifier(template, referenceExpression, classFeature, staticContext); - if(qualifier == null || classFeature) - { - template.addTextSegment(isConstant ? CONSTANT_STATEMENT_START : VAR_STATEMENT_START); - } - - template.addTextSegment(classFeature ? referenceExpression.getReferencedName() : referenceExpression.getText()); - template.addEndVariable(); - if(classFeature) - { - template.addTextSegment(":"); - } - else - { - template.addTextSegment(" = "); - } - - if(classFeature) - { - guessTypeAndAddTemplateVariable(template, referenceExpression, file); - if(isConstant) - { - template.addTextSegment(" = "); - addCompletionVar(template); - } - } - else - { - addCompletionVar(template); - } - addSemicolonSegment(template, file); - } - - } - - private static class CreateJSPropertyAccessorIntentionAction extends CreateJSFunctionFixBase - { - private final boolean myIsGetter; - - public CreateJSPropertyAccessorIntentionAction(String name, boolean getter) - { - super( - getter - ? JavaScriptLocalize.javascriptCreateGetPropertyIntentionName(name) - : JavaScriptLocalize.javascriptCreateSetPropertyIntentionName(name) - ); - myIsGetter = getter; - } - - @Override - protected void writeFunctionAndName(Template template, String referencedName, Set features) - { - template.addTextSegment("function "); - template.addTextSegment(myIsGetter ? "get " : "set "); - template.addTextSegment(referencedName); - } - - @Override - protected void addParameters(Template template, JSReferenceExpression refExpr, PsiFile file, Set features) - { - if(!myIsGetter) - { - template.addTextSegment(refExpr.getReferencedName() + ":"); - guessTypeAndAddTemplateVariable(template, refExpr, file); - } - } - - @Override - protected void addReturnType(Template template, JSReferenceExpression referenceExpression, PsiFile file) - { - if(myIsGetter) - { - guessTypeAndAddTemplateVariable(template, referenceExpression, file); - } - else - { - template.addTextSegment("void"); - } - } - - @Override - protected void addBody(Template template, JSReferenceExpression refExpr, PsiFile file) - { - String varName = refExpr.getReferencedName(); - String paramName = varName; - JSCodeStyleSettings settings = CodeStyleSettingsManager.getInstance(file.getProject()).getCurrentSettings().getCustomSettings(JSCodeStyleSettings - .class); - varName = settings.FIELD_PREFIX + varName; - - if(varName.equals(paramName)) - { - varName = StringUtil.fixVariableNameDerivedFromPropertyName(varName); - } - - if(myIsGetter) - { - template.addTextSegment("return "); - - addVarName(template, varName); - template.addEndVariable(); - } - else - { - addVarName(template, varName); - template.addEndVariable(); - template.addTextSegment(" = " + paramName); - } - addSemicolonSegment(template, file); - } - - private static void addVarName(Template template, String varName) - { - MyExpression expression = new MyExpression(varName); - template.addVariable("name", expression, expression, true); - } - - } - - private static class CreateJSEventMethod extends CreateJSFunctionFixBase - { - private JSExpression myEventQualifier; - - public CreateJSEventMethod(String invokedName, JSExpression eventNameQualifier) - { - super(JavaScriptLocalize.javascriptCreateEventHandlerIntentionName(invokedName)); - myEventQualifier = eventNameQualifier; - } - - - @Override - protected void addParameters(Template template, JSReferenceExpression refExpr, PsiFile file, Set features) - { - template.addTextSegment("event:"); - template.addTextSegment(myEventQualifier.getText()); - } - - @Override - protected void addReturnType(Template template, JSReferenceExpression referenceExpression, PsiFile psifile) - { - template.addTextSegment("void"); - } - - @Override - protected void addBody(Template template, JSReferenceExpression refExpr, PsiFile file) - { - template.addEndVariable(); - } - } +public class JSUnresolvedVariableInspection extends JSInspection { + @NonNls + private static final String SHORT_NAME = "JSUnresolvedVariable"; + + @Override + @Nonnull + public String getGroupDisplayName() { + return "General"; + } + + @Override + @Nonnull + public String getDisplayName() { + return JavaScriptLocalize.jsUnresolvedVariableInspectionName().get(); + } + + @Override + @Nonnull + @NonNls + public String getShortName() { + return SHORT_NAME; + } + + @Override + protected JSElementVisitor createVisitor(final ProblemsHolder holder) { + return new JSElementVisitor() { + @Override + public void visitJSReferenceExpression(final JSReferenceExpression node) { + final PsiElement parentElement = node.getParent(); + + if (node.shouldCheckReferences() && !(parentElement instanceof JSCallExpression)) { + final ResolveResult[] resolveResults = node.multiResolve(false); + boolean emptyResolve = resolveResults.length == 0; + boolean noCompleteResolve = true; + + for (ResolveResult r : resolveResults) { + if (r.isValidResult()) { + noCompleteResolve = false; + break; + } + } + + if (emptyResolve || noCompleteResolve) { + final PsiElement nameIdentifier = node.getReferenceNameElement(); + + if (nameIdentifier != null) { + final List fixes = new LinkedList(); + final JSExpression qualifier = node.getQualifier(); + + if (myOnTheFly) { + final PsiFile containingFile = node.getContainingFile(); + final boolean ecma = containingFile.getLanguage() == JavaScriptSupportLoader.ECMA_SCRIPT_L4; + + if ((qualifier == null || + JSUtils.isLHSExpression(qualifier) || + qualifier instanceof JSThisExpression) && (!(parentElement instanceof JSDefinitionExpression) || ecma)) { + final String referencedName = node.getReferencedName(); + boolean isField = qualifier != null; + JSClass contextClass = null; + + if (!isField && ecma) { + contextClass = JSResolveUtil.getClassOfContext(node); + if (contextClass != null) { + isField = true; + } + } + + if (!JSResolveUtil.isExprInTypeContext(node)) { + if (node.getParent() instanceof JSArgumentList) { + fixes.add(new CreateJSFunctionOrMethodFix( + referencedName, + !(qualifier == null || (qualifier instanceof + JSThisExpression && ecma)) + ) { + @Override + protected void addParameters( + Template template, + JSReferenceExpression referenceExpression, + PsiFile file, + Set features + ) { + JSExpression method = ((JSCallExpression)referenceExpression.getParent() + .getParent()).getMethodExpression(); + if (method instanceof JSReferenceExpression && "bindSetter".equals(((JSReferenceExpression)method).getReferencedName())) { + MyExpression expression = new MyExpression("value"); + template.addVariable("value", expression, expression, false); + if (ecma) { + template.addTextSegment(":int"); + } + } + } + + @Override + protected void addReturnType( + Template template, + JSReferenceExpression referenceExpression, + PsiFile file + ) { + template.addTextSegment("void"); + } + }); + } + + boolean suggestCreateVar = true; + + JSClass targetClass = contextClass; + + if (qualifier instanceof JSReferenceExpression) { + final JSClass clazz = JSResolveUtil.findClassOfQualifier(qualifier, containingFile); + if (clazz != null) { + targetClass = clazz; + } + } + + if (targetClass != null) { + suggestCreateVar = !targetClass.isInterface(); + } + + if (suggestCreateVar) { + fixes.add(new CreateJSVariableIntentionAction(referencedName, isField, false)); + + if (ecma) { + fixes.add(new CreateJSVariableIntentionAction(referencedName, isField, true)); + } + } + + if (ecma) { + boolean getter = !(node.getParent() instanceof JSDefinitionExpression); + String invokedName = nameIdentifier.getText(); + fixes.add(new CreateJSPropertyAccessorIntentionAction(invokedName, getter)); + JSCallExpression expression = PsiTreeUtil.getParentOfType(node, JSCallExpression.class); + + if (expression != null) { + final JSExpression methodExpression = expression.getMethodExpression(); + + if (methodExpression instanceof JSReferenceExpression) { + final String methodName = ((JSReferenceExpression)methodExpression).getReferencedName(); + + if ("addEventListener".equals(methodName) || "removeEventListener".equals(methodName)) { + final JSArgumentList argumentList = expression.getArgumentList(); + final JSExpression[] params = + argumentList != null ? argumentList.getArguments() : JSExpression.EMPTY_ARRAY; + + if (params.length >= 2 && params[0] instanceof JSReferenceExpression) { + final JSExpression eventNameQualifier = + ((JSReferenceExpression)params[0]).getQualifier(); + if (eventNameQualifier != null) { + fixes.add(new CreateJSEventMethod(invokedName, eventNameQualifier)); + } + } + } + } + } + } + } + if (qualifier != null && !ecma) { + fixes.add(new CreateJSNamespaceIntentionAction(referencedName)); + } + + if (ecma) { + if (qualifier == null) { + fixes.add(new AddImportECMAScriptClassOrFunctionAction(null, node)); + fixes.add(new CreateClassOrInterfaceAction(node, false)); + fixes.add(new CreateClassOrInterfaceAction(node, true)); + } + else { + fixes.add(new AddImportECMAScriptClassOrFunctionAction(null, node)); + } + } + } + } + + final LocalizeValue message = node.getQualifier() == null + ? JSResolveUtil.isExprInTypeContext(node) + ? JavaScriptLocalize.javascriptUnresolvedTypeNameMessage(node.getReferencedName()) + : JavaScriptLocalize.javascriptUnresolvedVariableOrTypeNameMessage(node.getReferencedName()) + : JavaScriptLocalize.javascriptUnresolvedVariableNameMessage(node.getReferencedName()); + + holder.registerProblem( + nameIdentifier, + message.get(), + JSUnresolvedFunctionInspection.getUnresolveReferenceHighlightType(qualifier, node), + fixes.size() > 0 ? fixes.toArray(new LocalQuickFix[fixes.size()]) : null + ); + } + } + } + super.visitJSReferenceExpression(node); + } + }; + } + + private abstract static class BaseCreateJSVariableIntentionAction extends BaseCreateFix { + protected final String myReferencedName; + + BaseCreateJSVariableIntentionAction(String referencedName) { + myReferencedName = referencedName; + } + + @Override + @Nonnull + public String getFamilyName() { + return JavaScriptLocalize.javascriptCreateVariableIntentionFamily().get(); + } + } + + private static class CreateJSNamespaceIntentionAction extends BaseCreateJSVariableIntentionAction { + CreateJSNamespaceIntentionAction(String referencedName) { + super(referencedName); + } + + @Override + @Nonnull + public String getName() { + return JavaScriptLocalize.javascriptCreateNamespaceIntentionName(myReferencedName).get(); + } + + @RequiredReadAction + @Override + protected void buildTemplate( + final Template template, + final JSReferenceExpression referenceExpression, + final Set features, + boolean staticContext, + final PsiFile file, + final PsiElement anchorParent + ) { + template.addTextSegment("/** @namespace "); + template.addTextSegment(referenceExpression.getText() + " */"); + template.addEndVariable(); + } + } + + private static class CreateJSVariableIntentionAction extends BaseCreateJSVariableIntentionAction { + @NonNls + private static final String VAR_STATEMENT_START = "var "; + @NonNls + private static final String CONSTANT_STATEMENT_START = "const "; + private boolean isField; + private boolean isConstant; + + CreateJSVariableIntentionAction(String referencedName, boolean isField, boolean isConstant) { + super(referencedName); + this.isField = isField; + this.isConstant = isConstant; + } + + @Override + @Nonnull + public String getName() { + return isField + ? isConstant + ? JavaScriptLocalize.javascriptCreateConstantFieldIntentionName(myReferencedName).get() + : JavaScriptLocalize.javascriptCreatePropertyIntentionName(myReferencedName).get() + : isConstant + ? JavaScriptLocalize.javascriptCreateConstantIntentionName(myReferencedName).get() + : JavaScriptLocalize.javascriptCreateVariableIntentionName(myReferencedName).get(); + } + + @RequiredReadAction + @Override + protected void buildTemplate( + final Template template, + final JSReferenceExpression referenceExpression, + final Set features, + boolean staticContext, + final PsiFile file, + final PsiElement anchorParent + ) { + boolean classFeature = features.contains(JavaScriptFeature.CLASS); + + final JSExpression qualifier = addAccessModifier(template, referenceExpression, classFeature, staticContext); + if (qualifier == null || classFeature) { + template.addTextSegment(isConstant ? CONSTANT_STATEMENT_START : VAR_STATEMENT_START); + } + + template.addTextSegment(classFeature ? referenceExpression.getReferencedName() : referenceExpression.getText()); + template.addEndVariable(); + if (classFeature) { + template.addTextSegment(":"); + } + else { + template.addTextSegment(" = "); + } + + if (classFeature) { + guessTypeAndAddTemplateVariable(template, referenceExpression, file); + if (isConstant) { + template.addTextSegment(" = "); + addCompletionVar(template); + } + } + else { + addCompletionVar(template); + } + addSemicolonSegment(template, file); + } + + } + + private static class CreateJSPropertyAccessorIntentionAction extends CreateJSFunctionFixBase { + private final boolean myIsGetter; + + public CreateJSPropertyAccessorIntentionAction(String name, boolean getter) { + super( + getter + ? JavaScriptLocalize.javascriptCreateGetPropertyIntentionName(name) + : JavaScriptLocalize.javascriptCreateSetPropertyIntentionName(name) + ); + myIsGetter = getter; + } + + @Override + protected void writeFunctionAndName(Template template, String referencedName, Set features) { + template.addTextSegment("function "); + template.addTextSegment(myIsGetter ? "get " : "set "); + template.addTextSegment(referencedName); + } + + @Override + protected void addParameters(Template template, JSReferenceExpression refExpr, PsiFile file, Set features) { + if (!myIsGetter) { + template.addTextSegment(refExpr.getReferencedName() + ":"); + guessTypeAndAddTemplateVariable(template, refExpr, file); + } + } + + @Override + protected void addReturnType(Template template, JSReferenceExpression referenceExpression, PsiFile file) { + if (myIsGetter) { + guessTypeAndAddTemplateVariable(template, referenceExpression, file); + } + else { + template.addTextSegment("void"); + } + } + + @Override + protected void addBody(Template template, JSReferenceExpression refExpr, PsiFile file) { + String varName = refExpr.getReferencedName(); + String paramName = varName; + JSCodeStyleSettings settings = + CodeStyleSettingsManager.getInstance(file.getProject()).getCurrentSettings().getCustomSettings(JSCodeStyleSettings + .class); + varName = settings.FIELD_PREFIX + varName; + + if (varName.equals(paramName)) { + varName = StringUtil.fixVariableNameDerivedFromPropertyName(varName); + } + + if (myIsGetter) { + template.addTextSegment("return "); + + addVarName(template, varName); + template.addEndVariable(); + } + else { + addVarName(template, varName); + template.addEndVariable(); + template.addTextSegment(" = " + paramName); + } + addSemicolonSegment(template, file); + } + + private static void addVarName(Template template, String varName) { + MyExpression expression = new MyExpression(varName); + template.addVariable("name", expression, expression, true); + } + + } + + private static class CreateJSEventMethod extends CreateJSFunctionFixBase { + private JSExpression myEventQualifier; + + public CreateJSEventMethod(String invokedName, JSExpression eventNameQualifier) { + super(JavaScriptLocalize.javascriptCreateEventHandlerIntentionName(invokedName)); + myEventQualifier = eventNameQualifier; + } + + + @Override + protected void addParameters(Template template, JSReferenceExpression refExpr, PsiFile file, Set features) { + template.addTextSegment("event:"); + template.addTextSegment(myEventQualifier.getText()); + } + + @Override + protected void addReturnType(Template template, JSReferenceExpression referenceExpression, PsiFile psifile) { + template.addTextSegment("void"); + } + + @Override + protected void addBody(Template template, JSReferenceExpression refExpr, PsiFile file) { + template.addEndVariable(); + } + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUntypedDeclarationInspection.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUntypedDeclarationInspection.java index fd9ad07d..a68d42d8 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUntypedDeclarationInspection.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUntypedDeclarationInspection.java @@ -45,166 +45,156 @@ import org.jetbrains.annotations.NonNls; import jakarta.annotation.Nonnull; + import java.util.Collections; /** * @author Maxim.Mossienko */ @ExtensionImpl -public class JSUntypedDeclarationInspection extends JSInspection -{ - @NonNls - public static final String SHORT_NAME = "JSUntypedDeclaration"; - - @Override - @Nonnull - public String getGroupDisplayName() - { - return "General"; - } - - @Override - @Nonnull - public String getDisplayName() - { - return JavaScriptLocalize.jsUntypedDeclarationInspectionName().get(); - } - - @Nonnull - @Override - public HighlightDisplayLevel getDefaultLevel() - { - return HighlightDisplayLevel.WARNING; - } - - @Override - @Nonnull - @NonNls - public String getShortName() - { - return SHORT_NAME; - } - - @Override - protected JSElementVisitor createVisitor(final ProblemsHolder holder) - { - return new JSElementVisitor() - { - @Override - public void visitJSVariable(final JSVariable node) - { - process(node, holder); - } - - @Override - public void visitJSFunctionExpression(final JSFunctionExpression node) - { - process(node.getFunction(), holder); - } - - @Override - public void visitJSFunctionDeclaration(final JSFunction node) - { - if(node.isConstructor() || node.isSetProperty()) - { - return; - } - process(node, holder); - } - }; - } - - private static void process(final JSNamedElement node, final ProblemsHolder holder) - { - if(node.getContainingFile().getLanguage() != JavaScriptSupportLoader.ECMA_SCRIPT_L4) - { - return; - } - PsiElement nameIdentifier = node.getNameIdentifier(); - - if(nameIdentifier != null && - JSPsiImplUtils.getTypeFromDeclaration(node) == null && - (!(node instanceof JSParameter) || !((JSParameter) node).isRest())) - { - LocalizeValue description = node instanceof JSFunction - ? JavaScriptLocalize.jsUntypedFunctionProblem(nameIdentifier.getText()) - : JavaScriptLocalize.jsUntypedVariableProblem(nameIdentifier.getText()); - holder.registerProblem( - nameIdentifier, - description.get(), - ProblemHighlightType.GENERIC_ERROR_OR_WARNING, - new AddTypeToDclFix() - ); - } - } - - private static class AddTypeToDclFix implements LocalQuickFix - { - - @Override - @Nonnull - public String getName() - { - return JavaScriptLocalize.jsUntypedDeclarationProblemAddtypeFix().get(); - } - - @Override - @Nonnull - public String getFamilyName() - { - return getName(); - } - - @Override - public void applyFix(@Nonnull final Project project, @Nonnull final ProblemDescriptor descriptor) - { - PsiElement anchor = descriptor.getPsiElement(); - PsiFile containingFile = anchor.getContainingFile(); - if(!FileModificationService.getInstance().prepareFileForWrite(containingFile)) - { - return; - } - - if(anchor.getParent() instanceof JSFunction) - { - anchor = ((JSFunction) anchor.getParent()).getParameterList(); - } - - OpenFileDescriptor openDescriptor = OpenFileDescriptorFactory.getInstance(project).builder(containingFile.getVirtualFile()).offset(anchor.getTextRange().getEndOffset()).build(); - openDescriptor.navigate(true); - Editor textEditor = FileEditorManager.getInstance(project).getSelectedTextEditor(); - TemplateManager templateManager = TemplateManager.getInstance(project); - - Template t = templateManager.createTemplate("", ""); - t.addTextSegment(":"); - boolean hasDetectedTypeFromUsage = false; - final PsiElement anchorParent = anchor.getParent(); - - if(anchorParent instanceof JSVariable) - { - final JSExpression expression = ((JSVariable) anchorParent).getInitializer(); - - if(expression != null) - { - BaseCreateFix.guessExprTypeAndAddSuchVariable(expression, t, "a", containingFile, Collections.singleton(JavaScriptFeature.CLASS)); - hasDetectedTypeFromUsage = true; - } - } - - if(!hasDetectedTypeFromUsage) - { - String defaultValue = "uint"; - if(ApplicationManager.getApplication().isUnitTestMode()) - { - t.addTextSegment(defaultValue); - } - else - { - t.addVariable("a", new MacroCallNode(MacroFactory.createMacro("complete")), new BaseCreateFix.MyExpression(defaultValue), true); - } - } - - templateManager.startTemplate(textEditor, t); - } - } +public class JSUntypedDeclarationInspection extends JSInspection { + @NonNls + public static final String SHORT_NAME = "JSUntypedDeclaration"; + + @Override + @Nonnull + public String getGroupDisplayName() { + return "General"; + } + + @Override + @Nonnull + public String getDisplayName() { + return JavaScriptLocalize.jsUntypedDeclarationInspectionName().get(); + } + + @Nonnull + @Override + public HighlightDisplayLevel getDefaultLevel() { + return HighlightDisplayLevel.WARNING; + } + + @Override + @Nonnull + @NonNls + public String getShortName() { + return SHORT_NAME; + } + + @Override + protected JSElementVisitor createVisitor(final ProblemsHolder holder) { + return new JSElementVisitor() { + @Override + public void visitJSVariable(final JSVariable node) { + process(node, holder); + } + + @Override + public void visitJSFunctionExpression(final JSFunctionExpression node) { + process(node.getFunction(), holder); + } + + @Override + public void visitJSFunctionDeclaration(final JSFunction node) { + if (node.isConstructor() || node.isSetProperty()) { + return; + } + process(node, holder); + } + }; + } + + private static void process(final JSNamedElement node, final ProblemsHolder holder) { + if (node.getContainingFile().getLanguage() != JavaScriptSupportLoader.ECMA_SCRIPT_L4) { + return; + } + PsiElement nameIdentifier = node.getNameIdentifier(); + + if (nameIdentifier != null && + JSPsiImplUtils.getTypeFromDeclaration(node) == null && + (!(node instanceof JSParameter) || !((JSParameter)node).isRest())) { + LocalizeValue description = node instanceof JSFunction + ? JavaScriptLocalize.jsUntypedFunctionProblem(nameIdentifier.getText()) + : JavaScriptLocalize.jsUntypedVariableProblem(nameIdentifier.getText()); + holder.registerProblem( + nameIdentifier, + description.get(), + ProblemHighlightType.GENERIC_ERROR_OR_WARNING, + new AddTypeToDclFix() + ); + } + } + + private static class AddTypeToDclFix implements LocalQuickFix { + + @Override + @Nonnull + public String getName() { + return JavaScriptLocalize.jsUntypedDeclarationProblemAddtypeFix().get(); + } + + @Override + @Nonnull + public String getFamilyName() { + return getName(); + } + + @Override + public void applyFix(@Nonnull final Project project, @Nonnull final ProblemDescriptor descriptor) { + PsiElement anchor = descriptor.getPsiElement(); + PsiFile containingFile = anchor.getContainingFile(); + if (!FileModificationService.getInstance().prepareFileForWrite(containingFile)) { + return; + } + + if (anchor.getParent() instanceof JSFunction) { + anchor = ((JSFunction)anchor.getParent()).getParameterList(); + } + + OpenFileDescriptor openDescriptor = OpenFileDescriptorFactory.getInstance(project) + .builder(containingFile.getVirtualFile()) + .offset(anchor.getTextRange().getEndOffset()) + .build(); + openDescriptor.navigate(true); + Editor textEditor = FileEditorManager.getInstance(project).getSelectedTextEditor(); + TemplateManager templateManager = TemplateManager.getInstance(project); + + Template t = templateManager.createTemplate("", ""); + t.addTextSegment(":"); + boolean hasDetectedTypeFromUsage = false; + final PsiElement anchorParent = anchor.getParent(); + + if (anchorParent instanceof JSVariable) { + final JSExpression expression = ((JSVariable)anchorParent).getInitializer(); + + if (expression != null) { + BaseCreateFix.guessExprTypeAndAddSuchVariable( + expression, + t, + "a", + containingFile, + Collections.singleton(JavaScriptFeature.CLASS) + ); + hasDetectedTypeFromUsage = true; + } + } + + if (!hasDetectedTypeFromUsage) { + String defaultValue = "uint"; + if (ApplicationManager.getApplication().isUnitTestMode()) { + t.addTextSegment(defaultValue); + } + else { + t.addVariable( + "a", + new MacroCallNode(MacroFactory.createMacro("complete")), + new BaseCreateFix.MyExpression(defaultValue), + true + ); + } + } + + templateManager.startTemplate(textEditor, t); + } + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnusedLocalSymbolsInspection.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnusedLocalSymbolsInspection.java index e02dc46c..6999fb54 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnusedLocalSymbolsInspection.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnusedLocalSymbolsInspection.java @@ -45,6 +45,7 @@ import org.jetbrains.annotations.NonNls; import jakarta.annotation.Nonnull; + import java.util.BitSet; import java.util.Collections; import java.util.HashSet; @@ -54,425 +55,347 @@ * @author Maxim.Mossienko */ @ExtensionImpl -public class JSUnusedLocalSymbolsInspection extends JSInspection -{ - private static final Logger LOG = Logger.getInstance("JSUnusedLocalSymbols"); - @NonNls - public static final String SHORT_NAME = "JSUnusedLocalSymbols"; - - @Override - @Nonnull - public String getGroupDisplayName() - { - return "General"; - } - - @Override - @Nonnull - public String getDisplayName() - { - return JavaScriptLocalize.jsUnusedLocalSymbolInspectionName().get(); - } - - @Override - @Nonnull - @NonNls - public String getShortName() - { - return SHORT_NAME; - } - - private static final Key> ourUnusedLocalDeclarationsSetKey = Key.create("js unused local dcls key"); - private static final Key> ourUsedLocalDeclarationsSetKey = Key.create("js used local functions key"); - - @Override - protected JSElementVisitor createVisitor(final ProblemsHolder holder) - { - return new JSElementVisitor() - { - @Override - public void visitJSVariable(final JSVariable node) - { - handleLocalDeclaration(node); - } - - @Override - public void visitJSParameterList(final JSParameterList node) - { - PsiElement parent = node.getParent(); - final Set set = parent.getUserData(ourUnusedLocalDeclarationsSetKey); - - if(set == null) - { - parent.putUserData(ourUnusedLocalDeclarationsSetKey, Collections.synchronizedSet(new HashSet(3))); - } - else if(node.getParameters().length == 0) - { - set.clear(); - } - } - - @Override - public void visitFile(final PsiFile file) - { - final Set set = file.getUserData(ourUnusedLocalDeclarationsSetKey); - if(set != null) - { - set.clear(); - } - } - - @Override - public void visitJSParameter(final JSParameter node) - { - final PsiElement scopeNode = PsiTreeUtil.getParentOfType(node, JSFunction.class, JSCatchBlock.class); - - if(scopeNode == null || scopeNode instanceof JSCatchBlock) - { - return; - } - // TODO: calculate more accurately right here (we depend in this place for slow marker pass to finish before) - if(scopeNode.getUserData(JavaScriptLineMarkerProvider.ourParticipatesInHierarchyKey) != null) - { - return; - } - if(scopeNode instanceof JSFunction) - { - JSAttributeList attributeList = ((JSFunction) scopeNode).getAttributeList(); - if(attributeList != null && attributeList.hasModifier(JSAttributeList.ModifierType.OVERRIDE)) - { - return; - } - } - - final Set unusedParametersSet; - final PsiElement parameterList = node.getParent(); - - if(parameterList.getNode().findChildByType(JSElementTypes.FORMAL_PARAMETER) == node.getNode()) - { - unusedParametersSet = Collections.synchronizedSet(new HashSet(3)); - scopeNode.putUserData(ourUnusedLocalDeclarationsSetKey, unusedParametersSet); - } - else - { - unusedParametersSet = scopeNode.getUserData(ourUnusedLocalDeclarationsSetKey); - if(unusedParametersSet == null) - { - return; - } - } - unusedParametersSet.add(node); - } - - @Override - public void visitJSReferenceExpression(final JSReferenceExpression node) - { - if(node.getParent() instanceof JSFunction) - { - return; - } - if(node.getQualifier() == null) - { - if("arguments".equals(node.getText())) - { - JSFunction function = PsiTreeUtil.getParentOfType(node, JSFunction.class); - if(function == null) - { - return; - } - Set unusedParametersSet = function.getUserData(ourUnusedLocalDeclarationsSetKey); - if(unusedParametersSet == null) - { - return; - } - for(JSParameter p : function.getParameterList().getParameters()) - { - unusedParametersSet.remove(p); - } - return; - } - - ResolveResult[] results = node.multiResolve(false); - - for(ResolveResult r : results) - { - final PsiElement element = r.getElement(); - - if(element instanceof JSVariable || (element instanceof JSFunction && isSupportedFunction((JSFunction) element))) - { - assert !(element instanceof JSFunctionExpression); - PsiElement scopeHandler = PsiTreeUtil.getParentOfType(element, JSFunction.class); - - if(scopeHandler != null) - { - Set unusedParametersSet = scopeHandler.getUserData(ourUnusedLocalDeclarationsSetKey); - - if(unusedParametersSet != null) - { - final boolean removed = unusedParametersSet.remove(element); - - if(!removed) - { - Set set = scopeHandler.getUserData(ourUsedLocalDeclarationsSetKey); - if(set == null) - { - set = new HashSet(3); - scopeHandler.putUserData(ourUsedLocalDeclarationsSetKey, set); - } - set.add(element); - } - } - } - } - } - } - } - - @Override - public void visitJSFunctionExpression(final JSFunctionExpression node) - { - visitJSFunctionDeclaration((JSFunction) node); - } - - @Override - public void visitJSFunctionDeclaration(final JSFunction node) - { - processDeclarationHost(node, holder); - handleLocalDeclaration(node); - } - }; - } - - private static boolean isSupportedFunction(final JSFunction element) - { - return !(element instanceof JSFunctionExpression || element.getParent() instanceof JSProperty); - } - - private static void processDeclarationHost(final PsiElement node, final ProblemsHolder holder) - { - Set unusedDeclarationsSet = node.getUserData(ourUnusedLocalDeclarationsSetKey); - if(unusedDeclarationsSet == null || node instanceof JSFunction && ((JSFunction) node).getBody().length == 0) - { - return; - } - - try - { - unusedDeclarationsSet = new HashSet(unusedDeclarationsSet); - - final int nonCounted = -2; - int lastUsedParameterIndex = nonCounted; - ObjectIntMap parameterIndexMap = null; - - for(final PsiElement p : unusedDeclarationsSet) - { - if(!p.isValid()) - { - continue; - } - final LocalizeValue message; - final @Nonnull PsiElement highlightedElement; - - if (p instanceof JSParameter parameter) - { - // There are cases of predefined sinatures for which we are not interested in reported unused parameters - final boolean ecma = node.getContainingFile().getLanguage() == JavaScriptSupportLoader.ECMA_SCRIPT_L4; - if(ecma && node instanceof JSFunctionExpression) - { - continue; // do not report unused parameters - } - else if (ecma && node instanceof JSFunction function) - { - final JSParameter[] params = function.getParameterList().getParameters(); - - if(params.length == 1) - { - @NonNls String type = parameter.getTypeString(); - if(type != null) - { - type = JSImportHandlingUtil.resolveTypeName(type, p); - } - - if(type != null) - { - String eventType = "flash.events.Event"; - if(eventType.equals(type)) - { - continue; - } - final PsiElement clazz = JSClassImpl.findClassFromNamespace(type, node); - - if(clazz instanceof JSClass) - { - final ResolveProcessor processor = new ResolveProcessor(eventType) - { - { - setTypeContext(true); - setToProcessMembers(false); - setToProcessHierarchy(true); - } - - @Override - public boolean execute(final PsiElement element, final ResolveState state) - { - return !(element instanceof JSClass jsClass && myName.equals(jsClass.getQualifiedName())); - } - }; - processor.setLocalResolve(true); - final boolean b = clazz.processDeclarations(processor, ResolveState.initial(), clazz, clazz); - if(!b) - { - continue; - } - } - } - } - } - - final JSParameter[] params = ((JSFunction) node).getParameterList().getParameters(); - - if(lastUsedParameterIndex == nonCounted) - { - BitSet unusedSet = new BitSet(params.length); - parameterIndexMap = ObjectMaps.newObjectIntHashMap(); - for(int i = 0; i < params.length; ++i) - { - parameterIndexMap.putInt(params[i], i); - } - - for(PsiElement param : unusedDeclarationsSet) - { - if(!(param instanceof JSParameter)) - { - continue; - } - unusedSet.set(parameterIndexMap.getInt((JSParameter) param)); - } - - lastUsedParameterIndex = -1; - - for(int i = params.length - 1; i >= 0; --i) - { - if(!unusedSet.get(i)) - { - lastUsedParameterIndex = i; - break; - } - } - } - - if (parameterIndexMap.getInt(parameter) < lastUsedParameterIndex) - { - continue; // no sense to report unused symbol before used since it will change signature - } - - message = JavaScriptLocalize.jsUnusedParameter(); - highlightedElement = parameter.getNameIdentifier(); - } - else if (p instanceof JSFunction function) - { - final PsiElement nameIdentifier = function.getNameIdentifier(); - if (nameIdentifier == null) - { - continue; - } - highlightedElement = nameIdentifier; - message = JavaScriptLocalize.jsUnusedFunctionDeclaration(); - } - else - { - highlightedElement = ((JSVariable) p).getNameIdentifier(); - message = JavaScriptLocalize.jsUnusedLocalVariable(); - } - - if(p.getParent() instanceof JSCatchBlock) - { - holder.registerProblem( - highlightedElement, - message.get(), - ProblemHighlightType.LIKE_UNUSED_SYMBOL - ); - } - else - { - holder.registerProblem( - highlightedElement, - message.get(), - ProblemHighlightType.LIKE_UNUSED_SYMBOL, - new RemoveElementLocalQuickFix() - ); - } - } - } - finally - { - node.putUserData(ourUnusedLocalDeclarationsSetKey, null); - } - } - - private static void handleLocalDeclaration(final JSNamedElement node) - { - if (node instanceof JSFunction function && !isSupportedFunction(function)) - { - return; - } - final PsiElement scopeNode = PsiTreeUtil.getParentOfType(node, JSFunction.class, JSCatchBlock.class); - if(scopeNode == null) - { - return; - } - final Set unusedParametersSet = scopeNode.getUserData(ourUnusedLocalDeclarationsSetKey); - final Set usedSet = scopeNode.getUserData(ourUsedLocalDeclarationsSetKey); - if(usedSet != null && usedSet.contains(node)) - { - return; - } - if(unusedParametersSet == null) - { - return; - } - unusedParametersSet.add(node); - } - - @Override - @Nonnull - public HighlightDisplayLevel getDefaultLevel() - { - return HighlightDisplayLevel.WARNING; - } - - private static class RemoveElementLocalQuickFix implements LocalQuickFix - { - @Override - @Nonnull - public String getName() - { - return JavaScriptLocalize.jsUnusedSymbolRemove().get(); - } - - @Override - @Nonnull - public String getFamilyName() - { - return getName(); - } - - @Override - public void applyFix(@Nonnull final Project project, @Nonnull final ProblemDescriptor descriptor) - { - try - { - PsiElement element = descriptor.getPsiElement(); - if(!(element instanceof JSNamedElement)) - { - element = element.getParent(); - } - element.delete(); - } - catch(IncorrectOperationException e) - { - LOG.error(e); - } - } - } +public class JSUnusedLocalSymbolsInspection extends JSInspection { + private static final Logger LOG = Logger.getInstance("JSUnusedLocalSymbols"); + @NonNls + public static final String SHORT_NAME = "JSUnusedLocalSymbols"; + + @Override + @Nonnull + public String getGroupDisplayName() { + return "General"; + } + + @Override + @Nonnull + public String getDisplayName() { + return JavaScriptLocalize.jsUnusedLocalSymbolInspectionName().get(); + } + + @Override + @Nonnull + @NonNls + public String getShortName() { + return SHORT_NAME; + } + + private static final Key> ourUnusedLocalDeclarationsSetKey = Key.create("js unused local dcls key"); + private static final Key> ourUsedLocalDeclarationsSetKey = Key.create("js used local functions key"); + + @Override + protected JSElementVisitor createVisitor(final ProblemsHolder holder) { + return new JSElementVisitor() { + @Override + public void visitJSVariable(final JSVariable node) { + handleLocalDeclaration(node); + } + + @Override + public void visitJSParameterList(final JSParameterList node) { + PsiElement parent = node.getParent(); + final Set set = parent.getUserData(ourUnusedLocalDeclarationsSetKey); + + if (set == null) { + parent.putUserData(ourUnusedLocalDeclarationsSetKey, Collections.synchronizedSet(new HashSet(3))); + } + else if (node.getParameters().length == 0) { + set.clear(); + } + } + + @Override + public void visitFile(final PsiFile file) { + final Set set = file.getUserData(ourUnusedLocalDeclarationsSetKey); + if (set != null) { + set.clear(); + } + } + + @Override + public void visitJSParameter(final JSParameter node) { + final PsiElement scopeNode = PsiTreeUtil.getParentOfType(node, JSFunction.class, JSCatchBlock.class); + + if (scopeNode == null || scopeNode instanceof JSCatchBlock) { + return; + } + // TODO: calculate more accurately right here (we depend in this place for slow marker pass to finish before) + if (scopeNode.getUserData(JavaScriptLineMarkerProvider.ourParticipatesInHierarchyKey) != null) { + return; + } + if (scopeNode instanceof JSFunction) { + JSAttributeList attributeList = ((JSFunction)scopeNode).getAttributeList(); + if (attributeList != null && attributeList.hasModifier(JSAttributeList.ModifierType.OVERRIDE)) { + return; + } + } + + final Set unusedParametersSet; + final PsiElement parameterList = node.getParent(); + + if (parameterList.getNode().findChildByType(JSElementTypes.FORMAL_PARAMETER) == node.getNode()) { + unusedParametersSet = Collections.synchronizedSet(new HashSet(3)); + scopeNode.putUserData(ourUnusedLocalDeclarationsSetKey, unusedParametersSet); + } + else { + unusedParametersSet = scopeNode.getUserData(ourUnusedLocalDeclarationsSetKey); + if (unusedParametersSet == null) { + return; + } + } + unusedParametersSet.add(node); + } + + @Override + public void visitJSReferenceExpression(final JSReferenceExpression node) { + if (node.getParent() instanceof JSFunction) { + return; + } + if (node.getQualifier() == null) { + if ("arguments".equals(node.getText())) { + JSFunction function = PsiTreeUtil.getParentOfType(node, JSFunction.class); + if (function == null) { + return; + } + Set unusedParametersSet = function.getUserData(ourUnusedLocalDeclarationsSetKey); + if (unusedParametersSet == null) { + return; + } + for (JSParameter p : function.getParameterList().getParameters()) { + unusedParametersSet.remove(p); + } + return; + } + + ResolveResult[] results = node.multiResolve(false); + + for (ResolveResult r : results) { + final PsiElement element = r.getElement(); + + if (element instanceof JSVariable || (element instanceof JSFunction && isSupportedFunction((JSFunction)element))) { + assert !(element instanceof JSFunctionExpression); + PsiElement scopeHandler = PsiTreeUtil.getParentOfType(element, JSFunction.class); + + if (scopeHandler != null) { + Set unusedParametersSet = scopeHandler.getUserData(ourUnusedLocalDeclarationsSetKey); + + if (unusedParametersSet != null) { + final boolean removed = unusedParametersSet.remove(element); + + if (!removed) { + Set set = scopeHandler.getUserData(ourUsedLocalDeclarationsSetKey); + if (set == null) { + set = new HashSet(3); + scopeHandler.putUserData(ourUsedLocalDeclarationsSetKey, set); + } + set.add(element); + } + } + } + } + } + } + } + + @Override + public void visitJSFunctionExpression(final JSFunctionExpression node) { + visitJSFunctionDeclaration((JSFunction)node); + } + + @Override + public void visitJSFunctionDeclaration(final JSFunction node) { + processDeclarationHost(node, holder); + handleLocalDeclaration(node); + } + }; + } + + private static boolean isSupportedFunction(final JSFunction element) { + return !(element instanceof JSFunctionExpression || element.getParent() instanceof JSProperty); + } + + private static void processDeclarationHost(final PsiElement node, final ProblemsHolder holder) { + Set unusedDeclarationsSet = node.getUserData(ourUnusedLocalDeclarationsSetKey); + if (unusedDeclarationsSet == null || node instanceof JSFunction && ((JSFunction)node).getBody().length == 0) { + return; + } + + try { + unusedDeclarationsSet = new HashSet(unusedDeclarationsSet); + + final int nonCounted = -2; + int lastUsedParameterIndex = nonCounted; + ObjectIntMap parameterIndexMap = null; + + for (final PsiElement p : unusedDeclarationsSet) { + if (!p.isValid()) { + continue; + } + final LocalizeValue message; + final @Nonnull PsiElement highlightedElement; + + if (p instanceof JSParameter parameter) { + // There are cases of predefined sinatures for which we are not interested in reported unused parameters + final boolean ecma = node.getContainingFile().getLanguage() == JavaScriptSupportLoader.ECMA_SCRIPT_L4; + if (ecma && node instanceof JSFunctionExpression) { + continue; // do not report unused parameters + } + else if (ecma && node instanceof JSFunction function) { + final JSParameter[] params = function.getParameterList().getParameters(); + + if (params.length == 1) { + @NonNls String type = parameter.getTypeString(); + if (type != null) { + type = JSImportHandlingUtil.resolveTypeName(type, p); + } + + if (type != null) { + String eventType = "flash.events.Event"; + if (eventType.equals(type)) { + continue; + } + final PsiElement clazz = JSClassImpl.findClassFromNamespace(type, node); + + if (clazz instanceof JSClass) { + final ResolveProcessor processor = new ResolveProcessor(eventType) { + { + setTypeContext(true); + setToProcessMembers(false); + setToProcessHierarchy(true); + } + + @Override + public boolean execute(final PsiElement element, final ResolveState state) { + return !(element instanceof JSClass jsClass && myName.equals(jsClass.getQualifiedName())); + } + }; + processor.setLocalResolve(true); + final boolean b = clazz.processDeclarations(processor, ResolveState.initial(), clazz, clazz); + if (!b) { + continue; + } + } + } + } + } + + final JSParameter[] params = ((JSFunction)node).getParameterList().getParameters(); + + if (lastUsedParameterIndex == nonCounted) { + BitSet unusedSet = new BitSet(params.length); + parameterIndexMap = ObjectMaps.newObjectIntHashMap(); + for (int i = 0; i < params.length; ++i) { + parameterIndexMap.putInt(params[i], i); + } + + for (PsiElement param : unusedDeclarationsSet) { + if (!(param instanceof JSParameter)) { + continue; + } + unusedSet.set(parameterIndexMap.getInt((JSParameter)param)); + } + + lastUsedParameterIndex = -1; + + for (int i = params.length - 1; i >= 0; --i) { + if (!unusedSet.get(i)) { + lastUsedParameterIndex = i; + break; + } + } + } + + if (parameterIndexMap.getInt(parameter) < lastUsedParameterIndex) { + continue; // no sense to report unused symbol before used since it will change signature + } + + message = JavaScriptLocalize.jsUnusedParameter(); + highlightedElement = parameter.getNameIdentifier(); + } + else if (p instanceof JSFunction function) { + final PsiElement nameIdentifier = function.getNameIdentifier(); + if (nameIdentifier == null) { + continue; + } + highlightedElement = nameIdentifier; + message = JavaScriptLocalize.jsUnusedFunctionDeclaration(); + } + else { + highlightedElement = ((JSVariable)p).getNameIdentifier(); + message = JavaScriptLocalize.jsUnusedLocalVariable(); + } + + if (p.getParent() instanceof JSCatchBlock) { + holder.registerProblem( + highlightedElement, + message.get(), + ProblemHighlightType.LIKE_UNUSED_SYMBOL + ); + } + else { + holder.registerProblem( + highlightedElement, + message.get(), + ProblemHighlightType.LIKE_UNUSED_SYMBOL, + new RemoveElementLocalQuickFix() + ); + } + } + } + finally { + node.putUserData(ourUnusedLocalDeclarationsSetKey, null); + } + } + + private static void handleLocalDeclaration(final JSNamedElement node) { + if (node instanceof JSFunction function && !isSupportedFunction(function)) { + return; + } + final PsiElement scopeNode = PsiTreeUtil.getParentOfType(node, JSFunction.class, JSCatchBlock.class); + if (scopeNode == null) { + return; + } + final Set unusedParametersSet = scopeNode.getUserData(ourUnusedLocalDeclarationsSetKey); + final Set usedSet = scopeNode.getUserData(ourUsedLocalDeclarationsSetKey); + if (usedSet != null && usedSet.contains(node)) { + return; + } + if (unusedParametersSet == null) { + return; + } + unusedParametersSet.add(node); + } + + @Override + @Nonnull + public HighlightDisplayLevel getDefaultLevel() { + return HighlightDisplayLevel.WARNING; + } + + private static class RemoveElementLocalQuickFix implements LocalQuickFix { + @Override + @Nonnull + public String getName() { + return JavaScriptLocalize.jsUnusedSymbolRemove().get(); + } + + @Override + @Nonnull + public String getFamilyName() { + return getName(); + } + + @Override + public void applyFix(@Nonnull final Project project, @Nonnull final ProblemDescriptor descriptor) { + try { + PsiElement element = descriptor.getPsiElement(); + if (!(element instanceof JSNamedElement)) { + element = element.getParent(); + } + element.delete(); + } + catch (IncorrectOperationException e) { + LOG.error(e); + } + } + } } \ No newline at end of file From 65d0bf52147d5bbc85a5b24470cf8b1002421cc4 Mon Sep 17 00:00:00 2001 From: UNV Date: Sun, 12 Jan 2025 22:12:02 +0300 Subject: [PATCH 100/150] Refactoring base-api module. --- .../lang/javascript/formatter/JSCodeStyleSettings.java | 3 +-- .../java/consulo/javascript/index/JavaScriptIndexer.java | 2 +- .../javascript/internal/DefaultJavaScriptVersion.java | 2 +- .../consulo/javascript/language/JavaScriptConstants.java | 2 +- .../consulo/javascript/language/JavaScriptFeature.java | 2 +- .../consulo/javascript/language/JavaScriptFileType.java | 8 ++++---- .../language/JavaScriptFileTypeWithVersion.java | 2 +- .../consulo/javascript/language/JavaScriptLanguage.java | 2 +- .../javascript/language/JavaScriptLanguageVersion.java | 2 +- .../javascript/language/JavaScriptVersionUtil.java | 5 ++++- .../javascript/language/StandardJavaScriptVersion.java | 2 +- .../javascript/language/StandardJavaScriptVersions.java | 2 +- .../javascript/language/psi/JavaScriptPrimitiveType.java | 4 ++-- .../consulo/javascript/language/psi/JavaScriptType.java | 4 ++-- .../javascript/language/psi/JavaScriptTypeElement.java | 2 +- .../javascript/language/psi/stub/JavaScriptIndexKeys.java | 2 +- .../module/extension/JavaScriptModuleExtension.java | 2 +- .../extension/JavaScriptMutableModuleExtension.java | 2 +- .../main/java/consulo/javascript/psi/JSComputedName.java | 2 +- .../consulo/javascript/psi/JSSimpleLiteralExpression.java | 2 +- .../javascript/psi/JavaScriptImportStatementBase.java | 4 ++-- .../javascript/psi/JavaScriptLambdaExpression.java | 2 +- .../impl/reference/JSPropertyNameReferenceProvider.java | 2 +- .../java/consulo/javascript/psi/stubs/JSFileStub.java | 2 +- base-api/src/main/java/module-info.java | 8 +++++--- 25 files changed, 38 insertions(+), 34 deletions(-) diff --git a/base-api/src/main/java/com/intellij/lang/javascript/formatter/JSCodeStyleSettings.java b/base-api/src/main/java/com/intellij/lang/javascript/formatter/JSCodeStyleSettings.java index bfed45b3..b33c1586 100644 --- a/base-api/src/main/java/com/intellij/lang/javascript/formatter/JSCodeStyleSettings.java +++ b/base-api/src/main/java/com/intellij/lang/javascript/formatter/JSCodeStyleSettings.java @@ -21,8 +21,7 @@ /** * @author Maxim.Mossienko - * Date: Mar 12, 2008 - * Time: 10:25:17 PM + * @since 2008-03-12 */ public class JSCodeStyleSettings extends CustomCodeStyleSettings { public int INDENT_PACKAGE_CHILDREN = DO_NOT_INDENT; diff --git a/base-api/src/main/java/consulo/javascript/index/JavaScriptIndexer.java b/base-api/src/main/java/consulo/javascript/index/JavaScriptIndexer.java index a0c8ea3e..e2c5226c 100644 --- a/base-api/src/main/java/consulo/javascript/index/JavaScriptIndexer.java +++ b/base-api/src/main/java/consulo/javascript/index/JavaScriptIndexer.java @@ -9,7 +9,7 @@ /** * @author VISTALL - * @since 19.07.2015 + * @since 2015-07-19 */ @ExtensionAPI(ComponentScope.APPLICATION) public abstract class JavaScriptIndexer { diff --git a/base-api/src/main/java/consulo/javascript/internal/DefaultJavaScriptVersion.java b/base-api/src/main/java/consulo/javascript/internal/DefaultJavaScriptVersion.java index 73c18617..f970121f 100644 --- a/base-api/src/main/java/consulo/javascript/internal/DefaultJavaScriptVersion.java +++ b/base-api/src/main/java/consulo/javascript/internal/DefaultJavaScriptVersion.java @@ -4,7 +4,7 @@ * Marker for default javascript file version if not selected * * @author VISTALL - * @since 31/08/2023 + * @since 2023-08-31 */ public interface DefaultJavaScriptVersion { } diff --git a/base-api/src/main/java/consulo/javascript/language/JavaScriptConstants.java b/base-api/src/main/java/consulo/javascript/language/JavaScriptConstants.java index 198434cc..5df5c68b 100644 --- a/base-api/src/main/java/consulo/javascript/language/JavaScriptConstants.java +++ b/base-api/src/main/java/consulo/javascript/language/JavaScriptConstants.java @@ -2,7 +2,7 @@ /** * @author VISTALL - * @since 15.02.2016 + * @since 2016-02-15 */ public interface JavaScriptConstants { String USE_STRICT = "use strict"; diff --git a/base-api/src/main/java/consulo/javascript/language/JavaScriptFeature.java b/base-api/src/main/java/consulo/javascript/language/JavaScriptFeature.java index fdb95933..439be46b 100644 --- a/base-api/src/main/java/consulo/javascript/language/JavaScriptFeature.java +++ b/base-api/src/main/java/consulo/javascript/language/JavaScriptFeature.java @@ -20,7 +20,7 @@ /** * @author VISTALL - * @since 23.02.2016 + * @since 2016-02-23 */ public enum JavaScriptFeature { CLASS("Classes"), diff --git a/base-api/src/main/java/consulo/javascript/language/JavaScriptFileType.java b/base-api/src/main/java/consulo/javascript/language/JavaScriptFileType.java index 81d8d4b7..0f1ca167 100644 --- a/base-api/src/main/java/consulo/javascript/language/JavaScriptFileType.java +++ b/base-api/src/main/java/consulo/javascript/language/JavaScriptFileType.java @@ -32,9 +32,8 @@ import jakarta.annotation.Nullable; /** - * User: max - * Date: Jan 27, 2005 - * Time: 6:02:59 PM + * @author max + * @since 2005-01-27 */ public class JavaScriptFileType extends LanguageFileType implements JavaScriptFileTypeWithVersion { public static final JavaScriptFileType INSTANCE = new JavaScriptFileType(); @@ -61,14 +60,15 @@ public String getDefaultExtension() { return "js"; } + @Nonnull @Override public Image getIcon() { return JavaScriptIconGroup.javascript(); } - @RequiredReadAction @Nonnull @Override + @RequiredReadAction public LanguageVersion getLanguageVersion(@Nullable Module module, @Nullable VirtualFile virtualFile) { if (module == null) { return StandardJavaScriptVersions.getInstance().getDefaultVersion(); diff --git a/base-api/src/main/java/consulo/javascript/language/JavaScriptFileTypeWithVersion.java b/base-api/src/main/java/consulo/javascript/language/JavaScriptFileTypeWithVersion.java index 3bea0f9f..e6a74307 100644 --- a/base-api/src/main/java/consulo/javascript/language/JavaScriptFileTypeWithVersion.java +++ b/base-api/src/main/java/consulo/javascript/language/JavaScriptFileTypeWithVersion.java @@ -26,7 +26,7 @@ /** * @author VISTALL - * @since 11.12.2015 + * @since 2015-12-11 */ public interface JavaScriptFileTypeWithVersion { @Nonnull diff --git a/base-api/src/main/java/consulo/javascript/language/JavaScriptLanguage.java b/base-api/src/main/java/consulo/javascript/language/JavaScriptLanguage.java index 13b0a121..cbaac2a5 100644 --- a/base-api/src/main/java/consulo/javascript/language/JavaScriptLanguage.java +++ b/base-api/src/main/java/consulo/javascript/language/JavaScriptLanguage.java @@ -28,7 +28,7 @@ /** * @author VISTALL - * @since 05.12.2015 + * @since 2015-12-05 */ public class JavaScriptLanguage extends Language { public static final JavaScriptLanguage INSTANCE = new JavaScriptLanguage(); diff --git a/base-api/src/main/java/consulo/javascript/language/JavaScriptLanguageVersion.java b/base-api/src/main/java/consulo/javascript/language/JavaScriptLanguageVersion.java index 62d3ce7f..ac37a2bd 100644 --- a/base-api/src/main/java/consulo/javascript/language/JavaScriptLanguageVersion.java +++ b/base-api/src/main/java/consulo/javascript/language/JavaScriptLanguageVersion.java @@ -10,7 +10,7 @@ /** * @author VISTALL - * @since 23-Dec-17 + * @since 2017-12-23 */ public abstract class JavaScriptLanguageVersion extends LanguageVersion implements LanguageVersionWithParsing { public JavaScriptLanguageVersion(@Nonnull String id, @Nonnull String name, @Nonnull Language language, String... mimeTypes) { diff --git a/base-api/src/main/java/consulo/javascript/language/JavaScriptVersionUtil.java b/base-api/src/main/java/consulo/javascript/language/JavaScriptVersionUtil.java index e54ac86e..bb09748a 100644 --- a/base-api/src/main/java/consulo/javascript/language/JavaScriptVersionUtil.java +++ b/base-api/src/main/java/consulo/javascript/language/JavaScriptVersionUtil.java @@ -16,6 +16,7 @@ package consulo.javascript.language; +import consulo.annotation.access.RequiredReadAction; import consulo.language.psi.PsiElement; import consulo.language.version.LanguageVersion; @@ -26,13 +27,15 @@ /** * @author VISTALL - * @since 23.02.2016 + * @since 2016-02-23 */ public class JavaScriptVersionUtil { + @RequiredReadAction public static boolean containsFeature(@Nonnull PsiElement element, @Nonnull JavaScriptFeature feature) { return getFeatures(element).contains(feature); } + @RequiredReadAction public static Set getFeatures(@Nonnull PsiElement element) { LanguageVersion languageVersion = element.getLanguageVersion(); return languageVersion instanceof JavaScriptLanguageVersion ? ((JavaScriptLanguageVersion)languageVersion).getFeatures() : Collections.emptySet(); diff --git a/base-api/src/main/java/consulo/javascript/language/StandardJavaScriptVersion.java b/base-api/src/main/java/consulo/javascript/language/StandardJavaScriptVersion.java index a01c7e8d..f1ef0473 100644 --- a/base-api/src/main/java/consulo/javascript/language/StandardJavaScriptVersion.java +++ b/base-api/src/main/java/consulo/javascript/language/StandardJavaScriptVersion.java @@ -4,7 +4,7 @@ * Marker for javascript version which can be selected inside combobox for module * * @author VISTALL - * @since 31/08/2023 + * @since 2023-08-31 */ public interface StandardJavaScriptVersion { @Deprecated diff --git a/base-api/src/main/java/consulo/javascript/language/StandardJavaScriptVersions.java b/base-api/src/main/java/consulo/javascript/language/StandardJavaScriptVersions.java index 1cdd1088..af7a6ede 100644 --- a/base-api/src/main/java/consulo/javascript/language/StandardJavaScriptVersions.java +++ b/base-api/src/main/java/consulo/javascript/language/StandardJavaScriptVersions.java @@ -27,7 +27,7 @@ /** * @author VISTALL - * @since 11.12.2015 + * @since 2015-12-11 */ @ServiceAPI(ComponentScope.APPLICATION) public abstract class StandardJavaScriptVersions { diff --git a/base-api/src/main/java/consulo/javascript/language/psi/JavaScriptPrimitiveType.java b/base-api/src/main/java/consulo/javascript/language/psi/JavaScriptPrimitiveType.java index 77f1b4f6..046180f9 100644 --- a/base-api/src/main/java/consulo/javascript/language/psi/JavaScriptPrimitiveType.java +++ b/base-api/src/main/java/consulo/javascript/language/psi/JavaScriptPrimitiveType.java @@ -23,7 +23,7 @@ /** * @author VISTALL - * @since 13.12.2015 + * @since 2015-12-13 */ public class JavaScriptPrimitiveType implements JavaScriptType { public static final JavaScriptPrimitiveType BOOL = new JavaScriptPrimitiveType("Boolean"); @@ -38,9 +38,9 @@ public JavaScriptPrimitiveType(String name) { myName = name; } - @RequiredReadAction @Nonnull @Override + @RequiredReadAction public String getPresentableText() { return myName; } diff --git a/base-api/src/main/java/consulo/javascript/language/psi/JavaScriptType.java b/base-api/src/main/java/consulo/javascript/language/psi/JavaScriptType.java index 5d0ed059..3b1bc07c 100644 --- a/base-api/src/main/java/consulo/javascript/language/psi/JavaScriptType.java +++ b/base-api/src/main/java/consulo/javascript/language/psi/JavaScriptType.java @@ -23,13 +23,13 @@ /** * @author VISTALL - * @since 13.12.2015 + * @since 2015-12-13 */ public interface JavaScriptType { JavaScriptType UNKNOWN = new JavaScriptType() { - @RequiredReadAction @Nonnull @Override + @RequiredReadAction public String getPresentableText() { return "?"; } diff --git a/base-api/src/main/java/consulo/javascript/language/psi/JavaScriptTypeElement.java b/base-api/src/main/java/consulo/javascript/language/psi/JavaScriptTypeElement.java index 6e6aa557..dc7da63f 100644 --- a/base-api/src/main/java/consulo/javascript/language/psi/JavaScriptTypeElement.java +++ b/base-api/src/main/java/consulo/javascript/language/psi/JavaScriptTypeElement.java @@ -21,7 +21,7 @@ /** * @author VISTALL - * @since 29.02.2016 + * @since 2016-02-29 */ public interface JavaScriptTypeElement extends JSElement { @Nonnull diff --git a/base-api/src/main/java/consulo/javascript/language/psi/stub/JavaScriptIndexKeys.java b/base-api/src/main/java/consulo/javascript/language/psi/stub/JavaScriptIndexKeys.java index 38474232..635ddb86 100644 --- a/base-api/src/main/java/consulo/javascript/language/psi/stub/JavaScriptIndexKeys.java +++ b/base-api/src/main/java/consulo/javascript/language/psi/stub/JavaScriptIndexKeys.java @@ -23,7 +23,7 @@ /** * @author VISTALL - * @since 05.12.2015 + * @since 2015-12-05 */ public interface JavaScriptIndexKeys { StubIndexKey CLASSES_BY_NAME = StubIndexKey.createIndexKey("js.class.shortName"); diff --git a/base-api/src/main/java/consulo/javascript/module/extension/JavaScriptModuleExtension.java b/base-api/src/main/java/consulo/javascript/module/extension/JavaScriptModuleExtension.java index ce2b9c7a..db766505 100644 --- a/base-api/src/main/java/consulo/javascript/module/extension/JavaScriptModuleExtension.java +++ b/base-api/src/main/java/consulo/javascript/module/extension/JavaScriptModuleExtension.java @@ -6,7 +6,7 @@ /** * @author VISTALL - * @since 29.06.14 + * @since 2014-06-29 */ public interface JavaScriptModuleExtension> extends ModuleExtensionWithSdk { @Nonnull diff --git a/base-api/src/main/java/consulo/javascript/module/extension/JavaScriptMutableModuleExtension.java b/base-api/src/main/java/consulo/javascript/module/extension/JavaScriptMutableModuleExtension.java index 6d560179..752ecbff 100644 --- a/base-api/src/main/java/consulo/javascript/module/extension/JavaScriptMutableModuleExtension.java +++ b/base-api/src/main/java/consulo/javascript/module/extension/JavaScriptMutableModuleExtension.java @@ -22,7 +22,7 @@ /** * @author VISTALL - * @since 12.12.2015 + * @since 2015-12-12 */ public interface JavaScriptMutableModuleExtension> extends JavaScriptModuleExtension, MutableModuleExtensionWithSdk { void setLanguageVersion(@Nonnull LanguageVersion languageVersion); diff --git a/base-api/src/main/java/consulo/javascript/psi/JSComputedName.java b/base-api/src/main/java/consulo/javascript/psi/JSComputedName.java index cb683d13..c70dde79 100644 --- a/base-api/src/main/java/consulo/javascript/psi/JSComputedName.java +++ b/base-api/src/main/java/consulo/javascript/psi/JSComputedName.java @@ -23,7 +23,7 @@ /** * @author VISTALL - * @since 03.03.2016 + * @since 2016-03-03 */ public interface JSComputedName extends JSElement { @Nullable diff --git a/base-api/src/main/java/consulo/javascript/psi/JSSimpleLiteralExpression.java b/base-api/src/main/java/consulo/javascript/psi/JSSimpleLiteralExpression.java index 5fdd2d36..ab5d457f 100644 --- a/base-api/src/main/java/consulo/javascript/psi/JSSimpleLiteralExpression.java +++ b/base-api/src/main/java/consulo/javascript/psi/JSSimpleLiteralExpression.java @@ -24,7 +24,7 @@ /** * @author VISTALL - * @since 11.12.2015 + * @since 2015-12-11 */ public interface JSSimpleLiteralExpression extends JSLiteralExpression { @Nonnull diff --git a/base-api/src/main/java/consulo/javascript/psi/JavaScriptImportStatementBase.java b/base-api/src/main/java/consulo/javascript/psi/JavaScriptImportStatementBase.java index 243d1f97..77bdf304 100644 --- a/base-api/src/main/java/consulo/javascript/psi/JavaScriptImportStatementBase.java +++ b/base-api/src/main/java/consulo/javascript/psi/JavaScriptImportStatementBase.java @@ -3,10 +3,10 @@ import com.intellij.lang.javascript.psi.JSStatement; /** + * Base interface for all imports in at js implementation. Affects folding. + * * @author VISTALL * @since 2019-12-14 - * - * Base interface for all imports in at js implementation. Affect folding */ public interface JavaScriptImportStatementBase extends JSStatement { } diff --git a/base-api/src/main/java/consulo/javascript/psi/JavaScriptLambdaExpression.java b/base-api/src/main/java/consulo/javascript/psi/JavaScriptLambdaExpression.java index 385a472b..58cfbc2d 100644 --- a/base-api/src/main/java/consulo/javascript/psi/JavaScriptLambdaExpression.java +++ b/base-api/src/main/java/consulo/javascript/psi/JavaScriptLambdaExpression.java @@ -20,7 +20,7 @@ /** * @author VISTALL - * @since 03.03.2016 + * @since 2016-03-03 */ public interface JavaScriptLambdaExpression extends JSFunctionExpression { } diff --git a/base-api/src/main/java/consulo/javascript/psi/impl/reference/JSPropertyNameReferenceProvider.java b/base-api/src/main/java/consulo/javascript/psi/impl/reference/JSPropertyNameReferenceProvider.java index 0da095a0..5fdf53db 100644 --- a/base-api/src/main/java/consulo/javascript/psi/impl/reference/JSPropertyNameReferenceProvider.java +++ b/base-api/src/main/java/consulo/javascript/psi/impl/reference/JSPropertyNameReferenceProvider.java @@ -29,7 +29,7 @@ /** * @author VISTALL - * @since 02.12.2015 + * @since 2015-12-02 */ @ExtensionAPI(ComponentScope.APPLICATION) public interface JSPropertyNameReferenceProvider { diff --git a/base-api/src/main/java/consulo/javascript/psi/stubs/JSFileStub.java b/base-api/src/main/java/consulo/javascript/psi/stubs/JSFileStub.java index ae460555..59d08d1d 100644 --- a/base-api/src/main/java/consulo/javascript/psi/stubs/JSFileStub.java +++ b/base-api/src/main/java/consulo/javascript/psi/stubs/JSFileStub.java @@ -7,7 +7,7 @@ /** * @author VISTALL - * @since 19.07.2015 + * @since 2015-07-19 */ public interface JSFileStub extends PsiFileStub { @Nonnull diff --git a/base-api/src/main/java/module-info.java b/base-api/src/main/java/module-info.java index 461685dd..0a8a9b01 100644 --- a/base-api/src/main/java/module-info.java +++ b/base-api/src/main/java/module-info.java @@ -1,6 +1,6 @@ /** * @author VISTALL - * @since 23-Aug-22 + * @since 2022-08-23 */ open module consulo.javascript.base.api { @@ -15,12 +15,14 @@ exports consulo.javascript.index; exports consulo.javascript.language; exports consulo.javascript.language.psi; + exports consulo.javascript.language.psi.stub; exports consulo.javascript.localize; exports consulo.javascript.module.extension; exports consulo.javascript.psi; exports consulo.javascript.psi.impl.reference; - exports consulo.javascript.language.psi.stub; exports consulo.javascript.psi.stubs; - exports consulo.javascript.internal to consulo.javascript.ecmascript.impl, consulo.javascript.base.impl; + exports consulo.javascript.internal to + consulo.javascript.base.impl, + consulo.javascript.ecmascript.impl; } \ No newline at end of file From b18d8f0a7abd6d56faf50e357c43fe6c112b39da Mon Sep 17 00:00:00 2001 From: UNV Date: Sun, 12 Jan 2025 22:13:47 +0300 Subject: [PATCH 101/150] Refactoring base-impl module. --- .../documentation/JSDocumentationBuilder.java | 38 +- .../JSDocumentationProcessor.java | 6 +- .../JSDocumentationProvider.java | 157 +++--- .../documentation/JSDocumentationUtils.java | 495 +++++++++--------- .../javascript/flex/FlexImportSupport.java | 76 ++- .../lang/javascript/flex/JSResolveHelper.java | 8 +- .../javascript/flex/XmlBackedJSClassImpl.java | 60 +-- .../highlighting/JSHighlighter.java | 97 ++-- .../JavaScriptHighlightingLexer.java | 4 +- .../javascript/index/JSItemPresentation.java | 28 +- .../lang/javascript/index/JSSymbolUtil.java | 143 +++-- .../inspections/qucikFixes/BaseCreateFix.java | 91 ++-- .../CreateJSFunctionOrMethodFix.java | 2 + .../javascript/psi/impl/JSPsiImplUtils.java | 2 +- 14 files changed, 599 insertions(+), 608 deletions(-) diff --git a/base-impl/src/main/java/com/intellij/javascript/documentation/JSDocumentationBuilder.java b/base-impl/src/main/java/com/intellij/javascript/documentation/JSDocumentationBuilder.java index 642fc700..b246fc8b 100644 --- a/base-impl/src/main/java/com/intellij/javascript/documentation/JSDocumentationBuilder.java +++ b/base-impl/src/main/java/com/intellij/javascript/documentation/JSDocumentationBuilder.java @@ -24,6 +24,7 @@ import com.intellij.lang.javascript.index.JSSymbolUtil; import com.intellij.lang.javascript.psi.*; +import consulo.annotation.access.RequiredReadAction; import consulo.language.editor.localize.CodeInsightLocalize; import consulo.language.psi.PsiElement; import consulo.util.io.URLUtil; @@ -75,9 +76,9 @@ private static class ParameterInfo extends SymbolInfo { private int myNewLinesPendingCount; private boolean seenPre; private boolean seenSeeAlso; - @NonNls private static final String BR_DELIMITER = "
\n"; + @RequiredReadAction JSDocumentationBuilder(PsiElement element, PsiElement _contextElement) { myElement = element; contextElement = _contextElement; @@ -119,7 +120,7 @@ else if (element instanceof JSNamedElement namedElement) { result = generationInfo.description; } - private void doAppend(final @NonNls String str) { + private void doAppend(String str) { while (myNewLinesPendingCount > 0) { result.append(seenPre ? "\n" : BR_DELIMITER); --myNewLinesPendingCount; @@ -164,7 +165,7 @@ public boolean onCommentLine(@Nonnull String line) { return true; } - if (line.indexOf("
") != -1) {
+        if (line.contains("
")) {
             seenPre = true;
         }
 
@@ -188,7 +189,7 @@ public boolean onCommentLine(@Nonnull String line) {
         doAppend(line);
         myNewLinesPendingCount = parametersStarted && !parametersEnded ? 0 : 1;
 
-        if (line.indexOf("
") != -1) { + if (line.contains("
")) { seenPre = false; } return true; @@ -258,7 +259,7 @@ else if (seenSeeAlso) { myEventsStarted = true; result.append("
Events:
"); } - result.append("Event " + matchName + " -" + remainingLineContent); + result.append("Event ").append(matchName).append(" -").append(remainingLineContent); return true; } else if (myEventsStarted) { @@ -267,7 +268,7 @@ else if (myEventsStarted) { } if (metaDocType == MetaDocType.NOTE) { - result.append("\n

Note: " + remainingLineContent); + result.append("\n

Note: ").append(remainingLineContent); return true; } @@ -391,6 +392,7 @@ else if (metaDocType == MetaDocType.RETURN) { return true; } + @RequiredReadAction private String getSeeAlsoLink(String remainingLineContent) { if (URLUtil.isAbsoluteURL(remainingLineContent)) { return remainingLineContent; @@ -424,6 +426,7 @@ private String appendCurrentOrDefaultValue(String remainingLineContent, boolean return remainingLineContent; } + @RequiredReadAction String getDoc() { if (seenSeeAlso) { seenSeeAlso = false; @@ -504,27 +507,26 @@ public String getParameterDoc(final String name) { return null; } - + @RequiredReadAction private void startFunction(JSFunction function) { - @NonNls String functionName = function.getName(); - final PsiElement parent = function.getParent(); + String functionName = function.getName(); + PsiElement parent = function.getParent(); - if (parent instanceof JSAssignmentExpression) { - final String unqualifiedFunctionName = functionName; - JSExpression expression = ((JSDefinitionExpression)((JSAssignmentExpression)parent).getLOperand()).getExpression(); + if (parent instanceof JSAssignmentExpression assignment) { + String unqualifiedFunctionName = functionName; + JSExpression expression = ((JSDefinitionExpression)assignment.getLOperand()).getExpression(); functionName = null; - if (expression instanceof JSReferenceExpression) { - final JSExpression qualifierExpression = ((JSReferenceExpression)expression).getQualifier(); - if (qualifierExpression instanceof JSReferenceExpression) { - expression = JSSymbolUtil.findReferenceExpressionUsedForClassExtending((JSReferenceExpression)qualifierExpression); - functionName = expression.getText() + "." + unqualifiedFunctionName; - } + if (expression instanceof JSReferenceExpression refExpr + && refExpr.getQualifier() instanceof JSReferenceExpression qualifierRefExpr) { + expression = JSSymbolUtil.findReferenceExpressionUsedForClassExtending(qualifierRefExpr); + functionName = expression.getText() + "." + unqualifiedFunctionName; } if (functionName == null) { functionName = expression.getText(); } + if (generationInfo.namespace != null && functionName.equals(generationInfo.namespace + "." + unqualifiedFunctionName)) { generationInfo.namespace = null; } diff --git a/base-impl/src/main/java/com/intellij/javascript/documentation/JSDocumentationProcessor.java b/base-impl/src/main/java/com/intellij/javascript/documentation/JSDocumentationProcessor.java index b7f303bd..c79a645b 100644 --- a/base-impl/src/main/java/com/intellij/javascript/documentation/JSDocumentationProcessor.java +++ b/base-impl/src/main/java/com/intellij/javascript/documentation/JSDocumentationProcessor.java @@ -58,9 +58,9 @@ enum MetaDocType { boolean onPatternMatch( @Nonnull MetaDocType type, @Nullable String matchName, - @Nullable final String matchValue, + @Nullable String matchValue, @Nullable String remainingLineContent, - @Nonnull final String line, - final String patternMatched + @Nonnull String line, + String patternMatched ); } \ No newline at end of file diff --git a/base-impl/src/main/java/com/intellij/javascript/documentation/JSDocumentationProvider.java b/base-impl/src/main/java/com/intellij/javascript/documentation/JSDocumentationProvider.java index 0c3699f1..d47e3897 100644 --- a/base-impl/src/main/java/com/intellij/javascript/documentation/JSDocumentationProvider.java +++ b/base-impl/src/main/java/com/intellij/javascript/documentation/JSDocumentationProvider.java @@ -39,12 +39,10 @@ import consulo.project.Project; import consulo.util.lang.Pair; import consulo.util.lang.StringUtil; -import consulo.util.lang.ref.Ref; import consulo.util.lang.ref.SimpleReference; import consulo.xml.psi.xml.XmlToken; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; -import org.jetbrains.annotations.NonNls; import java.io.File; import java.lang.reflect.Method; @@ -65,7 +63,7 @@ public class JSDocumentationProvider implements CodeDocumentationProvider, Langu protected static final String PACKAGE = "package"; protected static final String HTML_EXTENSION = ".html"; - protected static final String PACKAGE_FILE = PACKAGE + HTML_EXTENSION; + protected static String PACKAGE_FILE = PACKAGE + HTML_EXTENSION; protected static final Map DOCUMENTED_ATTRIBUTES; @@ -78,7 +76,7 @@ public class JSDocumentationProvider implements CodeDocumentationProvider, Langu private DocumentationProvider getCssProvider(Project project) throws Exception { if (cssProvider == null) { - final Class aClass = Class.forName("com.intellij.psi.css.impl.util.CssDocumentationProvider"); + Class aClass = Class.forName("com.intellij.psi.css.impl.util.CssDocumentationProvider"); cssProvider = (DocumentationProvider)aClass.getConstructor(new Class[]{}).newInstance(new Object[]{}); } @@ -89,11 +87,8 @@ private DocumentationProvider getCssProvider(Project project) throws Exception { @Nullable @RequiredReadAction public String getQuickNavigateInfo(PsiElement element, PsiElement element2) { - if (element instanceof JSFunction) { - final JSFunction function = (JSFunction)element; - final PsiElement parent = element.getParent(); - - if (function.isConstructor() && parent instanceof JSClass jsClass) { + if (element instanceof JSFunction function) { + if (function.isConstructor() && function.getParent() instanceof JSClass jsClass) { return createQuickNavigateForClazz(jsClass); } return createQuickNavigateForFunction(function); @@ -104,12 +99,12 @@ else if (element instanceof JSClass jsClass) { else if (element instanceof JSVariable variable) { return createQuickNavigateForVariable(variable); } - else if (element instanceof JSAttributeNameValuePair) { - return createQuickNavigateForAnnotationDerived(element); + else if (element instanceof JSAttributeNameValuePair attributeNameValuePair) { + return createQuickNavigateForAnnotationDerived(attributeNameValuePair); } - else if (element instanceof XmlToken) { - BaseJSSymbolProcessor.TagContextBuilder builder = new BaseJSSymbolProcessor.TagContextBuilder(element, "XmlTag"); - return StringUtil.stripQuotesAroundValue(element.getText()) + ":" + builder.typeName; + else if (element instanceof XmlToken xmlToken) { + BaseJSSymbolProcessor.TagContextBuilder builder = new BaseJSSymbolProcessor.TagContextBuilder(xmlToken, "XmlTag"); + return StringUtil.stripQuotesAroundValue(xmlToken.getText()) + ":" + builder.typeName; } else if (element instanceof JSNamespaceDeclaration namespaceDeclaration) { return createQuickNavigateForNamespace(namespaceDeclaration); @@ -119,11 +114,11 @@ else if (element instanceof JSNamespaceDeclaration namespaceDeclaration) { } @RequiredReadAction - private static String createQuickNavigateForAnnotationDerived(final PsiElement element) { - final JSAttributeNameValuePair valuePair = (JSAttributeNameValuePair)element; - final JSAttribute parent = (JSAttribute)valuePair.getParent(); - final StringBuilder builder = new StringBuilder(); - final JSClass clazz = PsiTreeUtil.getParentOfType(valuePair, JSClass.class); + private static String createQuickNavigateForAnnotationDerived(PsiElement element) { + JSAttributeNameValuePair valuePair = (JSAttributeNameValuePair)element; + JSAttribute parent = (JSAttribute)valuePair.getParent(); + StringBuilder builder = new StringBuilder(); + JSClass clazz = PsiTreeUtil.getParentOfType(valuePair, JSClass.class); appendParentInfo(clazz != null ? clazz : parent.getContainingFile(), builder, parent); builder.append(parent.getName()).append(" ").append(valuePair.getSimpleValue()); return builder.toString(); @@ -131,25 +126,25 @@ private static String createQuickNavigateForAnnotationDerived(final PsiElement e @Nullable @RequiredReadAction - private static String createQuickNavigateForFunction(final JSFunction function) { - final PsiElement parent = JSResolveUtil.findParent(function); - final StringBuilder result = new StringBuilder(); + private static String createQuickNavigateForFunction(JSFunction function) { + PsiElement parent = JSResolveUtil.findParent(function); + StringBuilder result = new StringBuilder(); appendParentInfo(parent, result, function); appendAttrList(function, result); - final boolean get = function.isGetProperty(); - final boolean set = function.isSetProperty(); + boolean get = function.isGetProperty(); + boolean set = function.isSetProperty(); result.append(get || set ? "property " : "function "); result.append(function.getName()); if (!get && !set) { result.append('('); - final JSParameterList jsParameterList = function.getParameterList(); + JSParameterList jsParameterList = function.getParameterList(); if (jsParameterList != null) { - final int start = result.length(); + int start = result.length(); for (JSParameter p : jsParameterList.getParameters()) { if (start != result.length()) { @@ -169,10 +164,10 @@ private static String createQuickNavigateForFunction(final JSFunction function) varType = JSImportHandlingUtil.resolveTypeName(function.getReturnTypeString(), function); } else { - final JSParameterList jsParameterList = function.getParameterList(); + JSParameterList jsParameterList = function.getParameterList(); if (jsParameterList != null) { - final JSParameter[] jsParameters = jsParameterList.getParameters(); + JSParameter[] jsParameters = jsParameterList.getParameters(); if (jsParameters != null && jsParameters.length > 0) { varType = JSImportHandlingUtil.resolveTypeName(jsParameters[0].getTypeString(), function); } @@ -186,7 +181,7 @@ private static String createQuickNavigateForFunction(final JSFunction function) } @RequiredReadAction - private static void appendParentInfo(final PsiElement parent, final StringBuilder builder, PsiNamedElement element) { + private static void appendParentInfo(PsiElement parent, StringBuilder builder, PsiNamedElement element) { if (parent instanceof JSClass jsClass) { builder.append(jsClass.getQualifiedName()).append("\n"); } @@ -195,7 +190,7 @@ else if (parent instanceof JSPackageStatement packageStatement) { } else if (parent instanceof JSFile) { if (parent.getContext() != null) { - final String mxmlPackage = JSResolveUtil.findPackageForMxml(parent); + String mxmlPackage = JSResolveUtil.findPackageForMxml(parent); if (mxmlPackage != null) { builder.append(mxmlPackage) .append(mxmlPackage.length() > 0 ? "." : "") @@ -209,7 +204,7 @@ else if (parent instanceof JSFile) { if (element instanceof JSNamedElement namedElement) { PsiElement node = namedElement.getNameIdentifier(); if (node != null) { - final String s = node.getText(); + String s = node.getText(); int i = s.lastIndexOf('.'); if (i != -1) { builder.append(s.substring(0, i)).append("\n"); @@ -226,9 +221,9 @@ else if (parent instanceof JSFile) { @Nullable @RequiredReadAction - private static String createQuickNavigateForVariable(final JSVariable variable) { - final PsiElement parent = JSResolveUtil.findParent(variable); - final StringBuilder result = new StringBuilder(); + private static String createQuickNavigateForVariable(JSVariable variable) { + PsiElement parent = JSResolveUtil.findParent(variable); + StringBuilder result = new StringBuilder(); appendParentInfo(parent, result, variable); @@ -253,8 +248,8 @@ else if (initializer instanceof JSObjectLiteralExpression) { return result.toString(); } - private static void appendVarType(final JSVariable variable, final StringBuilder builder) { - final String varType = variable.getTypeString(); + private static void appendVarType(JSVariable variable, StringBuilder builder) { + String varType = variable.getTypeString(); if (varType != null) { builder.append(':').append(varType); } @@ -262,8 +257,8 @@ private static void appendVarType(final JSVariable variable, final StringBuilder @Nullable @RequiredReadAction - private static String createQuickNavigateForClazz(final JSClass jsClass) { - final String qName = jsClass.getQualifiedName(); + private static String createQuickNavigateForClazz(JSClass jsClass) { + String qName = jsClass.getQualifiedName(); if (qName == null) { return null; } @@ -276,7 +271,7 @@ private static String createQuickNavigateForClazz(final JSClass jsClass) { appendAttrList(jsClass, result); result.append(jsClass.isInterface() ? "interface" : "class"); - final String name = jsClass.getName(); + String name = jsClass.getName(); result.append(" ").append(name); String s = generateReferenceTargetList(jsClass.getExtendsList(), packageName); @@ -296,8 +291,9 @@ private static String createQuickNavigateForClazz(final JSClass jsClass) { } @Nullable + @RequiredReadAction private static String createQuickNavigateForNamespace(JSNamespaceDeclaration ns) { - final String qName = ns.getQualifiedName(); + String qName = ns.getQualifiedName(); if (qName == null) { return null; } @@ -309,8 +305,7 @@ private static String createQuickNavigateForNamespace(JSNamespaceDeclaration ns) result.append("namespace"); - final String name = ns.getName(); - result.append(" ").append(name); + result.append(" ").append(ns.getName()); String s = ns.getInitialValueString(); if (s != null) { @@ -320,8 +315,8 @@ private static String createQuickNavigateForNamespace(JSNamespaceDeclaration ns) } @RequiredReadAction - private static void appendAttrList(final JSAttributeListOwner jsClass, final StringBuilder result) { - final JSAttributeList attributeList = jsClass.getAttributeList(); + private static void appendAttrList(JSAttributeListOwner jsClass, StringBuilder result) { + JSAttributeList attributeList = jsClass.getAttributeList(); if (attributeList != null) { if (attributeList.hasModifier(JSAttributeList.ModifierType.OVERRIDE)) { result.append("override "); @@ -354,13 +349,13 @@ private static void appendAttrList(final JSAttributeListOwner jsClass, final Str @Nullable @RequiredReadAction - private static String generateReferenceTargetList(final @Nullable JSReferenceList implementsList, @Nonnull String packageName) { + private static String generateReferenceTargetList(@Nullable JSReferenceList implementsList, @Nonnull String packageName) { if (implementsList == null) { return null; } StringBuilder result = null; - final String[] referenceExpressionTexts = implementsList.getReferenceTexts(); + String[] referenceExpressionTexts = implementsList.getReferenceTexts(); for (String refExprText : referenceExpressionTexts) { refExprText = JSImportHandlingUtil.resolveTypeName(refExprText, implementsList); @@ -371,7 +366,7 @@ private static String generateReferenceTargetList(final @Nullable JSReferenceLis result.append(","); } - final String referencedPackageName = StringUtil.getPackageName(refExprText); + String referencedPackageName = StringUtil.getPackageName(refExprText); result.append(referencedPackageName.equals(packageName) ? refExprText.substring(refExprText.lastIndexOf('.') + 1) : refExprText); @@ -385,9 +380,9 @@ public List getUrlFor(PsiElement element, PsiElement originalElement) { if (possibleCssName != null) { try { - final DocumentationProvider documentationProvider = getCssProvider(element.getProject()); - final Method method = documentationProvider.getClass().getMethod("getUrlFor", new Class[]{String.class}); - final Object o = method.invoke(null, new Object[]{possibleCssName}); + DocumentationProvider documentationProvider = getCssProvider(element.getProject()); + Method method = documentationProvider.getClass().getMethod("getUrlFor", new Class[]{String.class}); + Object o = method.invoke(null, new Object[]{possibleCssName}); if (o instanceof String) { return Collections.singletonList((String)o); @@ -428,7 +423,7 @@ public String generateDoc(PsiElement _element, PsiElement originalElement) { _element = _element.getNavigationElement(); PsiElement element = findElementForWhichPreviousCommentWillBeSearched(_element); - final boolean parameterDoc = element instanceof JSParameter; + boolean parameterDoc = element instanceof JSParameter; if (parameterDoc) { element = findElementForWhichPreviousCommentWillBeSearched(PsiTreeUtil.getParentOfType(element, JSFunction.class)); } @@ -440,7 +435,7 @@ public String generateDoc(PsiElement _element, PsiElement originalElement) { if (docComment != null) { docComment = findFirstDocComment(docComment); element = findTargetElement(_element, element); - final JSDocumentationBuilder builder = new JSDocumentationBuilder(element, originalElement); + JSDocumentationBuilder builder = new JSDocumentationBuilder(element, originalElement); JSDocumentationUtils.processDocumentationTextFromComment(docComment.getNode(), builder); return parameterDoc ? builder.getParameterDoc(((JSParameter)_element).getName()) : builder.getDoc(); @@ -452,7 +447,7 @@ public String generateDoc(PsiElement _element, PsiElement originalElement) { ASTNode initialComment = JSDocumentationUtils.findLeadingCommentInFunctionBody(element); if (initialComment != null) { - final JSDocumentationBuilder builder = new JSDocumentationBuilder(element, originalElement); + JSDocumentationBuilder builder = new JSDocumentationBuilder(element, originalElement); JSDocumentationUtils.processDocumentationTextFromComment(initialComment, builder); return builder.getDoc(); } @@ -462,10 +457,10 @@ public String generateDoc(PsiElement _element, PsiElement originalElement) { String possibleCssName = findPossibleCssName(_element); if (possibleCssName != null) { try { - final DocumentationProvider documentationProvider = getCssProvider(_element.getProject()); - final Method declaredMethod = + DocumentationProvider documentationProvider = getCssProvider(_element.getProject()); + Method declaredMethod = documentationProvider.getClass().getDeclaredMethod("generateDoc", String.class, PsiElement.class); - final Object o = declaredMethod.invoke(null, possibleCssName, null); + Object o = declaredMethod.invoke(null, possibleCssName, null); if (o instanceof String) { return (String)o; @@ -479,7 +474,7 @@ public String generateDoc(PsiElement _element, PsiElement originalElement) { } @RequiredReadAction - private static PsiElement findTargetElement(final PsiElement _element, PsiElement element) { + private static PsiElement findTargetElement(PsiElement _element, PsiElement element) { if (_element instanceof JSDefinitionExpression definition) { if (definition.getParent() instanceof JSAssignmentExpression assignment) { JSExpression rOperand = assignment.getROperand(); @@ -528,7 +523,7 @@ private static PsiElement findFirstDocComment(PsiElement docComment) { private static String findPossibleCssName(PsiElement _element) { if (_element instanceof JSDefinitionExpression definition) { - final JSExpression expression = definition.getExpression(); + JSExpression expression = definition.getExpression(); if (expression instanceof JSReferenceExpression reference) { String text = reference.getReferencedName(); @@ -538,7 +533,7 @@ private static String findPossibleCssName(PsiElement _element) { StringBuilder sb = new StringBuilder(text.length()); for (int i = 0; i < text.length(); ++i) { - final char ch = text.charAt(i); + char ch = text.charAt(i); if (Character.isUpperCase(ch)) { sb.append('-').append(Character.toLowerCase(ch)); @@ -607,15 +602,15 @@ else if (object instanceof JSProperty || object instanceof JSStatement || object return (PsiElement)object; } else if (object instanceof PsiElement psiElement) { - final PsiElement parent = psiElement.getParent(); - if (parent instanceof JSAssignmentExpression) { - return parent.getParent(); + PsiElement parent = psiElement.getParent(); + if (parent instanceof JSAssignmentExpression assignment) { + return assignment.getParent(); } - else if (parent instanceof JSVarStatement) { - if (parent.getFirstChild() instanceof JSAttributeList && JSDocumentationUtils.findDocComment(psiElement) != null) { + else if (parent instanceof JSVarStatement varStatement) { + if (varStatement.getFirstChild() instanceof JSAttributeList && JSDocumentationUtils.findDocComment(psiElement) != null) { return psiElement; } - return parent; + return varStatement; } else if (parent instanceof JSAttribute attribute) { PsiElement attrParent = attribute.getParent(); @@ -628,8 +623,8 @@ else if (parent instanceof JSAttribute attribute) { } return attribute; } - else if (parent instanceof JSSuppressionHolder) { - return parent; + else if (parent instanceof JSSuppressionHolder suppressionHolder) { + return suppressionHolder; } else { return psiElement; @@ -641,18 +636,18 @@ else if (parent instanceof JSSuppressionHolder) { @Nullable @Override - public PsiElement getDocumentationElementForLink(final PsiManager psiManager, String link, final PsiElement context) { + public PsiElement getDocumentationElementForLink(PsiManager psiManager, String link, PsiElement context) { return getDocumentationElementForLinkStatic(psiManager, link, context); } @Nullable - private static PsiElement getDocumentationElementForLinkStatic(final PsiManager psiManager, String link, @Nonnull PsiElement context) { - final int delimiterIndex = link.lastIndexOf(':'); + private static PsiElement getDocumentationElementForLinkStatic(PsiManager psiManager, String link, @Nonnull PsiElement context) { + int delimiterIndex = link.lastIndexOf(':'); String attributeType = null; String attributeName = null; for (Map.Entry e : DOCUMENTED_ATTRIBUTES.entrySet()) { - final String pattern = "." + e.getValue(); + String pattern = "." + e.getValue(); if (link.contains(pattern)) { attributeType = e.getKey(); attributeName = link.substring(link.indexOf(pattern) + pattern.length()); @@ -661,7 +656,7 @@ private static PsiElement getDocumentationElementForLinkStatic(final PsiManager } } if (delimiterIndex != -1 && attributeType == null) { - final int delimiterIndex2 = link.lastIndexOf(':', delimiterIndex - 1); + int delimiterIndex2 = link.lastIndexOf(':', delimiterIndex - 1); String fileName = link.substring(0, delimiterIndex2).replace(File.separatorChar, '/'); String name = link.substring(delimiterIndex2 + 1, delimiterIndex); int offset = Integer.parseInt(link.substring(delimiterIndex + 1)); @@ -721,14 +716,14 @@ else if (attributeType != null) { @Nullable @RequiredReadAction - protected static JSAttributeNameValuePair findNamedAttribute(JSClass clazz, final String type, final String name) { + protected static JSAttributeNameValuePair findNamedAttribute(JSClass clazz, String type, String name) { SimpleReference attribute = new SimpleReference<>(); JSResolveUtil.processMetaAttributesForClass(clazz, new JSResolveUtil.MetaDataProcessor() { @Override @RequiredReadAction public boolean process(@Nonnull JSAttribute jsAttribute) { if (type.equals(jsAttribute.getName())) { - final JSAttributeNameValuePair jsAttributeNameValuePair = jsAttribute.getValueByName("name"); + JSAttributeNameValuePair jsAttributeNameValuePair = jsAttribute.getValueByName("name"); if (jsAttributeNameValuePair != null && name.equals(jsAttributeNameValuePair.getSimpleValue())) { attribute.set(jsAttributeNameValuePair); return false; @@ -804,11 +799,11 @@ else if (el instanceof JSVarStatement varStatement) { } @RequiredReadAction - private static String doGenerateDoc(final JSFunction function) { + private static String doGenerateDoc(JSFunction function) { StringBuilder builder = new StringBuilder(); - final JSParameterList parameterList = function.getParameterList(); - final PsiFile containingFile = function.getContainingFile(); - final boolean ecma = containingFile.getLanguage() == JavaScriptSupportLoader.ECMA_SCRIPT_L4; + JSParameterList parameterList = function.getParameterList(); + PsiFile containingFile = function.getContainingFile(); + boolean ecma = containingFile.getLanguage() == JavaScriptSupportLoader.ECMA_SCRIPT_L4; if (parameterList != null) { for (JSParameter parameter : parameterList.getParameters()) { @@ -841,7 +836,7 @@ protected static String getSeeAlsoLinkResolved(PsiElement originElement, String return null; } String linkToResolve = getLinkToResolve(qualifiedElement, link); - final PsiElement resolvedElement = getDocumentationElementForLinkStatic(originElement.getManager(), linkToResolve, originElement); + PsiElement resolvedElement = getDocumentationElementForLinkStatic(originElement.getManager(), linkToResolve, originElement); if (resolvedElement != null) { return linkToResolve; } @@ -866,7 +861,7 @@ else if (StringUtil.startsWithChar(link, '#')) { String linkFile = link.contains("#") ? link.substring(0, link.lastIndexOf('#')) : link; String linkAnchor = link.contains("#") ? link.substring(link.lastIndexOf('#') + 1) : null; - final String qname; + String qname; if (StringUtil.endsWithIgnoreCase(linkFile, HTML_EXTENSION)) { String prefix = StringUtil.getPackageName(originQname); while (linkFile.startsWith("../")) { @@ -922,7 +917,7 @@ else if (element instanceof JSAttributeNameValuePair nameValuePair) { } if (attribute != null && DOCUMENTED_ATTRIBUTES.containsKey(attribute.getName())) { - final JSClass jsClass = PsiTreeUtil.getParentOfType(element, JSClass.class); + JSClass jsClass = PsiTreeUtil.getParentOfType(element, JSClass.class); if (jsClass != null) { return jsClass; } diff --git a/base-impl/src/main/java/com/intellij/javascript/documentation/JSDocumentationUtils.java b/base-impl/src/main/java/com/intellij/javascript/documentation/JSDocumentationUtils.java index 1ccad5fe..aace368b 100644 --- a/base-impl/src/main/java/com/intellij/javascript/documentation/JSDocumentationUtils.java +++ b/base-impl/src/main/java/com/intellij/javascript/documentation/JSDocumentationUtils.java @@ -26,6 +26,7 @@ import com.intellij.lang.javascript.JSTokenTypes; import com.intellij.lang.javascript.psi.*; import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; +import consulo.annotation.access.RequiredReadAction; import consulo.language.ast.ASTNode; import consulo.language.ast.IElementType; import consulo.language.ast.TokenSet; @@ -34,9 +35,7 @@ import consulo.language.psi.*; import consulo.language.psi.util.PsiTreeUtil; import consulo.util.lang.StringUtil; -import consulo.util.lang.ref.Ref; -import org.jetbrains.annotations.NonNls; - +import consulo.util.lang.ref.SimpleReference; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @@ -48,135 +47,108 @@ import java.util.regex.Pattern; public class JSDocumentationUtils { - @NonNls - private static final Pattern ourDojoParametersPattern = Pattern.compile("^\\s*(\\w+):(.*)$"); - @NonNls - private static final Pattern ourJSDocParametersPattern = - Pattern.compile("^\\s*@param\\s*(?:\\{([^\\}]+)\\}\\s*)?(\\w+)?(?:\\s:\\s(\\S+))?(?:\\s*\\[(\\w+)(?:\\.(\\w+))?" + - "(?:=([^\\]]*))?\\])?(.*)$"); - @NonNls - private static final Pattern ourJSDocEventPattern = Pattern.compile("^\\s*@event\\s*(\\w+)(?:\\s:\\s(\\S+))?(.*)$"); - @NonNls - private static final Pattern ourJSDocRemarkPattern = Pattern.compile("^\\s*@remarks (.*)$"); - @NonNls - private static final Pattern ourJSDocMethodPattern = Pattern.compile("^\\s*@method\\s*(\\w+)(.*)$"); - @NonNls - private static final Pattern ourJSDocClassPattern = Pattern.compile("^\\s*@class\\s*(\\w+(?:\\.\\w+)*)(.*)$"); - @NonNls - private static final Pattern ourJSDocDeprecatedPattern = Pattern.compile("^\\s*@deprecated\\s*(.*)$"); - @NonNls - private static final Pattern ourJSDocConstructorPattern = Pattern.compile("^\\s*@constructor$"); - @NonNls - private static final Pattern ourJSDocFinalPattern = Pattern.compile("^\\s*@final$"); - @NonNls - private static final Pattern ourJSDocPrivatePattern = Pattern.compile("^\\s*@private$"); - @NonNls - private static final Pattern ourJSDocPublicPattern = Pattern.compile("^\\s*@public$"); - @NonNls - private static final Pattern ourJSDocProtectedPattern = Pattern.compile("^\\s*@protected$"); - @NonNls - private static final Pattern ourJSDocOptionalPattern = Pattern.compile("^\\s*@optional(.*)$"); - @NonNls - private static final Pattern ourJSDocStaticPattern = Pattern.compile("^\\s*@static$"); - @NonNls - private static final Pattern ourJSDocSeePattern = Pattern.compile("^\\s*@see (.*)$"); - @NonNls - private static final Pattern ourJSDocDescriptionPattern = Pattern.compile("^\\s*@description\\s*(.+)$"); - @NonNls - private static final Pattern ourJSDocReturnPattern = + private static final Pattern DOJO_PARAMETERS_PATTERN = Pattern.compile("^\\s*(\\w+):(.*)$"); + private static final Pattern JS_DOC_PARAMETERS_PATTERN = Pattern.compile( + "^\\s*@param\\s*(?:\\{([^}]+)}\\s*)?(\\w+)?(?:\\s:\\s(\\S+))?(?:\\s*\\[(\\w+)(?:\\.(\\w+))?(?:=([^\\]]*))?])?(.*)$" + ); + private static final Pattern JS_DOC_EVENT_PATTERN = Pattern.compile("^\\s*@event\\s*(\\w+)(?:\\s:\\s(\\S+))?(.*)$"); + private static final Pattern JS_DOC_REMARK_PATTERN = Pattern.compile("^\\s*@remarks (.*)$"); + private static final Pattern JS_DOC_METHOD_PATTERN = Pattern.compile("^\\s*@method\\s*(\\w+)(.*)$"); + private static final Pattern JS_DOC_CLASS_PATTERN = Pattern.compile("^\\s*@class\\s*(\\w+(?:\\.\\w+)*)(.*)$"); + private static final Pattern JS_DOC_DEPRECATED_PATTERN = Pattern.compile("^\\s*@deprecated\\s*(.*)$"); + private static final Pattern JS_DOC_CONSTRUCTOR_PATTERN = Pattern.compile("^\\s*@constructor$"); + private static final Pattern JS_DOC_FINAL_PATTERN = Pattern.compile("^\\s*@final$"); + private static final Pattern JS_DOC_PRIVATE_PATTERN = Pattern.compile("^\\s*@private$"); + private static final Pattern JS_DOC_PUBLIC_PATTERN = Pattern.compile("^\\s*@public$"); + private static final Pattern JS_DOC_PROTECTED_PATTERN = Pattern.compile("^\\s*@protected$"); + private static final Pattern JS_DOC_OPTIONAL_PATTERN = Pattern.compile("^\\s*@optional(.*)$"); + private static final Pattern JS_DOC_STATIC_PATTERN = Pattern.compile("^\\s*@static$"); + private static final Pattern JS_DOC_SEE_PATTERN = Pattern.compile("^\\s*@see (.*)$"); + private static final Pattern JS_DOC_DESCRIPTION_PATTERN = Pattern.compile("^\\s*@description\\s*(.+)$"); + private static final Pattern JS_DOC_RETURN_PATTERN = Pattern.compile("^\\s*@return(?:s)?\\s*(?:(?:\\{|:)?\\s*([^\\s\\}]+)\\s*\\}?\\s*)?(.*)$"); - @NonNls - private static final Pattern ourJSDocNamespacePattern = Pattern.compile("^\\s*@namespace\\s*([\\w\\.]+)(.*)$"); - @NonNls - private static final Pattern ourJSDocPropertyPattern = Pattern.compile("^\\s*@property\\s*(\\w+)(.*)$"); - @NonNls - private static final Pattern ourJSDocTypePattern = Pattern.compile("^\\s*@type\\s*\\{?([^\\s\\}]+)\\}?(.*)$"); - @NonNls - private static final Pattern ourJSDocRequiresPattern = Pattern.compile("^\\s*@requires\\s*(\\S+)(.*)$"); - @NonNls - private static final Pattern ourJSDocDefaultPattern = Pattern.compile("^\\s*@default\\s*(.*)$"); - @NonNls - private static final Pattern ourJSDocExtendsPattern = Pattern.compile("^\\s*@extends\\s*(.*)$"); - @NonNls - private static final Map patternToHintMap = new HashMap<>(); - @NonNls - private static final Map patternToMetaDocTypeMap = new HashMap<>(); + private static final Pattern JS_DOC_NAMESPACE_PATTERN = Pattern.compile("^\\s*@namespace\\s*([\\w\\.]+)(.*)$"); + private static final Pattern JS_DOC_PROPERTY_PATTERN = Pattern.compile("^\\s*@property\\s*(\\w+)(.*)$"); + private static final Pattern JS_DOC_TYPE_PATTERN = Pattern.compile("^\\s*@type\\s*\\{?([^\\s\\}]+)\\}?(.*)$"); + private static final Pattern JS_DOC_REQUIRES_PATTERN = Pattern.compile("^\\s*@requires\\s*(\\S+)(.*)$"); + private static final Pattern JS_DOC_DEFAULT_PATTERN = Pattern.compile("^\\s*@default\\s*(.*)$"); + private static final Pattern JS_DOC_EXTENDS_PATTERN = Pattern.compile("^\\s*@extends\\s*(.*)$"); + private static final Map PATTERN_TO_HINT_MAP = new HashMap<>(); + private static final Map PATTERN_TO_META_DOC_TYPE_MAP = new HashMap<>(); static { - patternToHintMap.put(ourDojoParametersPattern, ":"); - patternToMetaDocTypeMap.put(ourDojoParametersPattern, JSDocumentationProcessor.MetaDocType.PARAMETER); - patternToHintMap.put(ourJSDocParametersPattern, "@pa"); - patternToMetaDocTypeMap.put(ourJSDocParametersPattern, JSDocumentationProcessor.MetaDocType.PARAMETER); + PATTERN_TO_HINT_MAP.put(DOJO_PARAMETERS_PATTERN, ":"); + PATTERN_TO_META_DOC_TYPE_MAP.put(DOJO_PARAMETERS_PATTERN, JSDocumentationProcessor.MetaDocType.PARAMETER); + PATTERN_TO_HINT_MAP.put(JS_DOC_PARAMETERS_PATTERN, "@pa"); + PATTERN_TO_META_DOC_TYPE_MAP.put(JS_DOC_PARAMETERS_PATTERN, JSDocumentationProcessor.MetaDocType.PARAMETER); - patternToHintMap.put(ourJSDocMethodPattern, "@m"); - patternToMetaDocTypeMap.put(ourJSDocMethodPattern, JSDocumentationProcessor.MetaDocType.METHOD); + PATTERN_TO_HINT_MAP.put(JS_DOC_METHOD_PATTERN, "@m"); + PATTERN_TO_META_DOC_TYPE_MAP.put(JS_DOC_METHOD_PATTERN, JSDocumentationProcessor.MetaDocType.METHOD); - patternToHintMap.put(ourJSDocOptionalPattern, "@o"); - patternToMetaDocTypeMap.put(ourJSDocOptionalPattern, JSDocumentationProcessor.MetaDocType.OPTIONAL_PARAMETERS); + PATTERN_TO_HINT_MAP.put(JS_DOC_OPTIONAL_PATTERN, "@o"); + PATTERN_TO_META_DOC_TYPE_MAP.put(JS_DOC_OPTIONAL_PATTERN, JSDocumentationProcessor.MetaDocType.OPTIONAL_PARAMETERS); - patternToHintMap.put(ourJSDocEventPattern, "@ev"); - patternToMetaDocTypeMap.put(ourJSDocEventPattern, JSDocumentationProcessor.MetaDocType.EVENT); + PATTERN_TO_HINT_MAP.put(JS_DOC_EVENT_PATTERN, "@ev"); + PATTERN_TO_META_DOC_TYPE_MAP.put(JS_DOC_EVENT_PATTERN, JSDocumentationProcessor.MetaDocType.EVENT); - patternToHintMap.put(ourJSDocExtendsPattern, "@ex"); - patternToMetaDocTypeMap.put(ourJSDocExtendsPattern, JSDocumentationProcessor.MetaDocType.EXTENDS); + PATTERN_TO_HINT_MAP.put(JS_DOC_EXTENDS_PATTERN, "@ex"); + PATTERN_TO_META_DOC_TYPE_MAP.put(JS_DOC_EXTENDS_PATTERN, JSDocumentationProcessor.MetaDocType.EXTENDS); - patternToHintMap.put(ourJSDocRemarkPattern, "@rem"); - patternToMetaDocTypeMap.put(ourJSDocRemarkPattern, JSDocumentationProcessor.MetaDocType.NOTE); + PATTERN_TO_HINT_MAP.put(JS_DOC_REMARK_PATTERN, "@rem"); + PATTERN_TO_META_DOC_TYPE_MAP.put(JS_DOC_REMARK_PATTERN, JSDocumentationProcessor.MetaDocType.NOTE); - patternToHintMap.put(ourJSDocReturnPattern, "@ret"); - patternToMetaDocTypeMap.put(ourJSDocReturnPattern, JSDocumentationProcessor.MetaDocType.RETURN); + PATTERN_TO_HINT_MAP.put(JS_DOC_RETURN_PATTERN, "@ret"); + PATTERN_TO_META_DOC_TYPE_MAP.put(JS_DOC_RETURN_PATTERN, JSDocumentationProcessor.MetaDocType.RETURN); - patternToHintMap.put(ourJSDocPublicPattern, "@pu"); - patternToMetaDocTypeMap.put(ourJSDocPublicPattern, JSDocumentationProcessor.MetaDocType.PUBLIC); + PATTERN_TO_HINT_MAP.put(JS_DOC_PUBLIC_PATTERN, "@pu"); + PATTERN_TO_META_DOC_TYPE_MAP.put(JS_DOC_PUBLIC_PATTERN, JSDocumentationProcessor.MetaDocType.PUBLIC); - patternToHintMap.put(ourJSDocProtectedPattern, "@prot"); - patternToMetaDocTypeMap.put(ourJSDocProtectedPattern, JSDocumentationProcessor.MetaDocType.PROTECTED); + PATTERN_TO_HINT_MAP.put(JS_DOC_PROTECTED_PATTERN, "@prot"); + PATTERN_TO_META_DOC_TYPE_MAP.put(JS_DOC_PROTECTED_PATTERN, JSDocumentationProcessor.MetaDocType.PROTECTED); - patternToHintMap.put(ourJSDocStaticPattern, "@st"); - patternToMetaDocTypeMap.put(ourJSDocStaticPattern, JSDocumentationProcessor.MetaDocType.STATIC); + PATTERN_TO_HINT_MAP.put(JS_DOC_STATIC_PATTERN, "@st"); + PATTERN_TO_META_DOC_TYPE_MAP.put(JS_DOC_STATIC_PATTERN, JSDocumentationProcessor.MetaDocType.STATIC); - patternToHintMap.put(ourJSDocSeePattern, "@se"); - patternToMetaDocTypeMap.put(ourJSDocSeePattern, JSDocumentationProcessor.MetaDocType.SEE); + PATTERN_TO_HINT_MAP.put(JS_DOC_SEE_PATTERN, "@se"); + PATTERN_TO_META_DOC_TYPE_MAP.put(JS_DOC_SEE_PATTERN, JSDocumentationProcessor.MetaDocType.SEE); - patternToHintMap.put(ourJSDocDescriptionPattern, "@des"); - patternToMetaDocTypeMap.put(ourJSDocDescriptionPattern, JSDocumentationProcessor.MetaDocType.DESCRIPTION); + PATTERN_TO_HINT_MAP.put(JS_DOC_DESCRIPTION_PATTERN, "@des"); + PATTERN_TO_META_DOC_TYPE_MAP.put(JS_DOC_DESCRIPTION_PATTERN, JSDocumentationProcessor.MetaDocType.DESCRIPTION); - patternToHintMap.put(ourJSDocDeprecatedPattern, "@dep"); - patternToMetaDocTypeMap.put(ourJSDocDeprecatedPattern, JSDocumentationProcessor.MetaDocType.DEPRECATED); + PATTERN_TO_HINT_MAP.put(JS_DOC_DEPRECATED_PATTERN, "@dep"); + PATTERN_TO_META_DOC_TYPE_MAP.put(JS_DOC_DEPRECATED_PATTERN, JSDocumentationProcessor.MetaDocType.DEPRECATED); - patternToHintMap.put(ourJSDocConstructorPattern, "@co"); + PATTERN_TO_HINT_MAP.put(JS_DOC_CONSTRUCTOR_PATTERN, "@co"); - patternToMetaDocTypeMap.put(ourJSDocConstructorPattern, JSDocumentationProcessor.MetaDocType.CONSTRUCTOR); + PATTERN_TO_META_DOC_TYPE_MAP.put(JS_DOC_CONSTRUCTOR_PATTERN, JSDocumentationProcessor.MetaDocType.CONSTRUCTOR); - patternToHintMap.put(ourJSDocClassPattern, "@cl"); - patternToMetaDocTypeMap.put(ourJSDocClassPattern, JSDocumentationProcessor.MetaDocType.CLASS); - patternToHintMap.put(ourJSDocPrivatePattern, "@pri"); - patternToMetaDocTypeMap.put(ourJSDocPrivatePattern, JSDocumentationProcessor.MetaDocType.PRIVATE); + PATTERN_TO_HINT_MAP.put(JS_DOC_CLASS_PATTERN, "@cl"); + PATTERN_TO_META_DOC_TYPE_MAP.put(JS_DOC_CLASS_PATTERN, JSDocumentationProcessor.MetaDocType.CLASS); + PATTERN_TO_HINT_MAP.put(JS_DOC_PRIVATE_PATTERN, "@pri"); + PATTERN_TO_META_DOC_TYPE_MAP.put(JS_DOC_PRIVATE_PATTERN, JSDocumentationProcessor.MetaDocType.PRIVATE); - patternToHintMap.put(ourJSDocNamespacePattern, "@n"); - patternToMetaDocTypeMap.put(ourJSDocNamespacePattern, JSDocumentationProcessor.MetaDocType.NAMESPACE); + PATTERN_TO_HINT_MAP.put(JS_DOC_NAMESPACE_PATTERN, "@n"); + PATTERN_TO_META_DOC_TYPE_MAP.put(JS_DOC_NAMESPACE_PATTERN, JSDocumentationProcessor.MetaDocType.NAMESPACE); - patternToHintMap.put(ourJSDocPropertyPattern, "@prop"); - patternToHintMap.put(ourJSDocTypePattern, "@t"); - patternToMetaDocTypeMap.put(ourJSDocTypePattern, JSDocumentationProcessor.MetaDocType.TYPE); + PATTERN_TO_HINT_MAP.put(JS_DOC_PROPERTY_PATTERN, "@prop"); + PATTERN_TO_HINT_MAP.put(JS_DOC_TYPE_PATTERN, "@t"); + PATTERN_TO_META_DOC_TYPE_MAP.put(JS_DOC_TYPE_PATTERN, JSDocumentationProcessor.MetaDocType.TYPE); - patternToHintMap.put(ourJSDocFinalPattern, "@f"); - patternToMetaDocTypeMap.put(ourJSDocFinalPattern, JSDocumentationProcessor.MetaDocType.FINAL); - patternToHintMap.put(ourJSDocRequiresPattern, "@req"); - patternToMetaDocTypeMap.put(ourJSDocRequiresPattern, JSDocumentationProcessor.MetaDocType.REQUIRES); + PATTERN_TO_HINT_MAP.put(JS_DOC_FINAL_PATTERN, "@f"); + PATTERN_TO_META_DOC_TYPE_MAP.put(JS_DOC_FINAL_PATTERN, JSDocumentationProcessor.MetaDocType.FINAL); + PATTERN_TO_HINT_MAP.put(JS_DOC_REQUIRES_PATTERN, "@req"); + PATTERN_TO_META_DOC_TYPE_MAP.put(JS_DOC_REQUIRES_PATTERN, JSDocumentationProcessor.MetaDocType.REQUIRES); - patternToHintMap.put(ourJSDocDefaultPattern, "@def"); - patternToMetaDocTypeMap.put(ourJSDocDefaultPattern, JSDocumentationProcessor.MetaDocType.DEFAULT); + PATTERN_TO_HINT_MAP.put(JS_DOC_DEFAULT_PATTERN, "@def"); + PATTERN_TO_META_DOC_TYPE_MAP.put(JS_DOC_DEFAULT_PATTERN, JSDocumentationProcessor.MetaDocType.DEFAULT); } - private static final - @NonNls - Map prefixToPatternToHintMap = new HashMap(); + private static final Map prefixToPatternToHintMap = new HashMap<>(); static { prefixToPatternToHintMap.put(Pattern.compile("^\\s*description:(.*)$"), "descr"); - prefixToPatternToHintMap.put(Pattern.compile("^ summary(?:\\:)?(.*)$"), "summ"); + prefixToPatternToHintMap.put(Pattern.compile("^ summary(?::)?(.*)$"), "summ"); prefixToPatternToHintMap.put(Pattern.compile("^\\s*\\*(?:\\*)?(.*)$"), "*"); @@ -252,7 +224,7 @@ public String nextElement() { String commentText = s.replace('\t', ' '); for (Map.Entry entry : prefixToPatternToHintMap.entrySet()) { - final Matcher matcher = commentText.indexOf(entry.getValue()) != -1 ? entry.getKey().matcher(commentText) : null; + final Matcher matcher = commentText.contains(entry.getValue()) ? entry.getKey().matcher(commentText) : null; if (matcher == null) { continue; } @@ -265,14 +237,14 @@ public String nextElement() { boolean matchedSomething = false; - for (Map.Entry entry : patternToHintMap.entrySet()) { - final Matcher matcher = commentText.indexOf(entry.getValue()) != -1 ? entry.getKey().matcher(commentText) : null; + for (Map.Entry entry : PATTERN_TO_HINT_MAP.entrySet()) { + final Matcher matcher = commentText.contains(entry.getValue()) ? entry.getKey().matcher(commentText) : null; if (matcher == null) { continue; } if (matcher.matches()) { - final JSDocumentationProcessor.MetaDocType docType = patternToMetaDocTypeMap.get(entry.getKey()); + final JSDocumentationProcessor.MetaDocType docType = PATTERN_TO_META_DOC_TYPE_MAP.get(entry.getKey()); if (docType != null) { final int groupCount = matcher.groupCount(); String remainingLineContent = groupCount > 0 ? matcher.group(groupCount) : null; @@ -287,7 +259,7 @@ public String nextElement() { final int groupForFieldName = 5; String fieldName = null; - if (groupCount == 7 && entry.getKey() == ourJSDocParametersPattern) { + if (groupCount == 7 && entry.getKey() == JS_DOC_PARAMETERS_PATTERN) { String paramNameInBracket = matcher.group(4); if (paramNameInBracket != null) { @@ -326,10 +298,8 @@ public String nextElement() { break; } } - else { - if (!processor.onPatternMatch(docType, matchName, matchValue, remainingLineContent, commentText, matched)) { - break; - } + else if (!processor.onPatternMatch(docType, matchName, matchValue, remainingLineContent, commentText, matched)) { + break; } if (reportAboutOptionalParameter) { if (!processor.onPatternMatch( @@ -382,10 +352,9 @@ else if (text.startsWith("/*") || text.startsWith("//")) { return text; } - static @Nullable - ASTNode findTrailingCommentInFunctionBody(final @Nonnull JSFunction function) { - final ASTNode block = function.getNode().findChildByType(JSElementTypes.BLOCK_STATEMENT); + static ASTNode findTrailingCommentInFunctionBody(@Nonnull JSFunction function) { + ASTNode block = function.getNode().findChildByType(JSElementTypes.BLOCK_STATEMENT); if (block == null) { return null; } @@ -401,17 +370,16 @@ else if (prev.getPsi() instanceof JSStatement) { return null; } - static @Nullable - ASTNode findLeadingCommentInFunctionBody(final @Nonnull PsiElement element) { - final ASTNode functionNode = element.getNode(); - final ASTNode block = functionNode.findChildByType(JSElementTypes.BLOCK_STATEMENT); + static ASTNode findLeadingCommentInFunctionBody(@Nonnull PsiElement element) { + ASTNode functionNode = element.getNode(); + ASTNode block = functionNode.findChildByType(JSElementTypes.BLOCK_STATEMENT); if (block == null) { return null; } for (ASTNode node = block.getFirstChildNode().getTreeNext(); node != null; node = node.getTreeNext()) { - final IElementType nodeType = node.getElementType(); + IElementType nodeType = node.getElementType(); if (nodeType != TokenType.WHITE_SPACE) { if (JSTokenTypes.COMMENTS.contains(nodeType)) { @@ -424,28 +392,30 @@ ASTNode findLeadingCommentInFunctionBody(final @Nonnull PsiElement element) { return null; } + @RequiredReadAction public static PsiElement findDocComment(PsiElement element) { return findDocComment(element, null); } + @RequiredReadAction public static PsiElement findDocComment(PsiElement element, PsiElement context) { PsiElement docComment = null; boolean skippedExprStatementOnce = false; if (element instanceof JSAttributeListOwner jsClass && context == null) { - final JSAttributeList attributeList = jsClass.getAttributeList(); + JSAttributeList attributeList = jsClass.getAttributeList(); PsiElement anchor = null; if (attributeList != null) { for (ASTNode currentNode = attributeList.getNode().getLastChildNode(); currentNode != null; currentNode = currentNode.getTreePrev()) { - final IElementType nodeType = currentNode.getElementType(); + IElementType nodeType = currentNode.getElementType(); if (!JSTokenTypes.MODIFIERS.contains(nodeType) && nodeType != JSTokenTypes.WHITE_SPACE && nodeType != JSElementTypes.REFERENCE_EXPRESSION // namespace ) { - final ASTNode nextNode = currentNode.getTreeNext(); + ASTNode nextNode = currentNode.getTreeNext(); if (nextNode != null) { anchor = nextNode.getPsi(); } @@ -509,68 +479,79 @@ else if (shouldSkipPrevExprStatement && return docComment; } - private static @Nullable - String getPropertyNameFromExprStatement(@Nonnull PsiElement element) { + @RequiredReadAction + private static String getPropertyNameFromExprStatement(@Nonnull PsiElement element) { String propName = null; if (element instanceof JSExpressionStatement expressionStatement - && expressionStatement.getExpression() instanceof JSAssignmentExpression assignmentExpression - && assignmentExpression.getROperand() instanceof JSFunctionExpression functionExpression) { - String name = functionExpression.getName(); - if (name != null && (StringUtil.startsWith(name, "get") || (StringUtil.startsWith(name, "set")))) { + && expressionStatement.getExpression() instanceof JSAssignmentExpression assignment + && assignment.getROperand() instanceof JSFunctionExpression functionExpr) { + String name = functionExpr.getName(); + if (name != null && (StringUtil.startsWith(name, "get") || StringUtil.startsWith(name, "set"))) { propName = name.substring(3); } } return propName; } - private static String findTypeFromParameter(final JSVariable parameter, final PsiElement docComment) { + private static String findTypeFromParameter(JSVariable parameter, PsiElement docComment) { if (docComment != null) { - final String[] detectedType = new String[1]; - - processDocumentationTextFromComment(docComment.getNode(), new JSDocumentationProcessor() { - final String name = parameter.getName(); - final boolean isparameter = parameter instanceof JSParameter; + String[] detectedType = new String[1]; - @Override - public boolean needsPlainCommentData() { - return false; - } - - @Override - public boolean onCommentLine(@Nonnull final String line) { - return true; - } + processDocumentationTextFromComment( + docComment.getNode(), + new JSDocumentationProcessor() { + String name = parameter.getName(); + boolean isparameter = parameter instanceof JSParameter; - @Override - public boolean onPatternMatch( - @Nonnull final MetaDocType type, @Nullable final String matchName, @Nullable final String matchValue, - @Nullable final String remainingLineContent, @Nonnull final String line, final String patternMatched - ) { - if (isparameter && type == MetaDocType.PARAMETER && matchName != null && matchName.equals(name)) { - detectedType[0] = matchValue; + @Override + public boolean needsPlainCommentData() { return false; } - else if (type == MetaDocType.TYPE) { - detectedType[0] = matchName; - return false; + + @Override + public boolean onCommentLine(@Nonnull String line) { + return true; + } + + @Override + public boolean onPatternMatch( + @Nonnull MetaDocType type, + @Nullable String matchName, + @Nullable String matchValue, + @Nullable String remainingLineContent, + @Nonnull String line, + String patternMatched + ) { + if (isparameter && type == MetaDocType.PARAMETER && matchName != null && matchName.equals(name)) { + detectedType[0] = matchValue; + return false; + } + else if (type == MetaDocType.TYPE) { + detectedType[0] = matchName; + return false; + } + return true; } - return true; } - }); + ); return detectedType[0]; } return null; } - public static final TokenSet ourPrimitiveTypeFilter = TokenSet.create(JSTokenTypes.INT_KEYWORD, JSTokenTypes.UINT_KEYWORD, - JSTokenTypes.VOID_KEYWORD, JSTokenTypes.ANY_IDENTIFIER + public static final TokenSet PRIMITIVE_TYPE_FILTER = TokenSet.create( + JSTokenTypes.INT_KEYWORD, + JSTokenTypes.UINT_KEYWORD, + JSTokenTypes.VOID_KEYWORD, + JSTokenTypes.ANY_IDENTIFIER ); - public static final TokenSet ourTypeFilter = - TokenSet.orSet(TokenSet.create(JSElementTypes.REFERENCE_EXPRESSION), ourPrimitiveTypeFilter); + public static final TokenSet TYPE_FILTER = + TokenSet.orSet(TokenSet.create(JSElementTypes.REFERENCE_EXPRESSION), PRIMITIVE_TYPE_FILTER); + @RequiredReadAction private static String findDocForAnchor(final PsiElement _anchor, final JSDocumentationProcessor.MetaDocType... expectedTypes) { PsiElement anchor = _anchor; if (_anchor instanceof JSExpression) { @@ -578,50 +559,57 @@ private static String findDocForAnchor(final PsiElement _anchor, final JSDocumen } if (anchor != null) { - final PsiElement docComment = findDocComment(anchor); + PsiElement docComment = findDocComment(anchor); if (docComment != null) { - final Ref detectedType = new Ref<>(); - - final PsiElement anchor1 = anchor; - processDocumentationTextFromComment(docComment.getNode(), new JSDocumentationProcessor() { - @Override - public boolean needsPlainCommentData() { - return false; - } + final SimpleReference detectedType = new SimpleReference<>(); + + processDocumentationTextFromComment( + docComment.getNode(), + new JSDocumentationProcessor() { + @Override + public boolean needsPlainCommentData() { + return false; + } - @Override - public boolean onCommentLine(@Nonnull final String line) { - return true; - } + @Override + public boolean onCommentLine(@Nonnull final String line) { + return true; + } - @Override - public boolean onPatternMatch( - @Nonnull final MetaDocType type, @Nullable final String matchName, @Nullable final String matchValue, - @Nullable final String remainingLineContent, @Nonnull final String line, final String patternMatched - ) { - for (MetaDocType expectedType : expectedTypes) { - if (type == expectedType) { - if (type == MetaDocType.TYPE && _anchor instanceof JSFunction function) { - final JSParameterList jsParameterList = function.getParameterList(); - if (jsParameterList != null && jsParameterList.getParameters().length > 0) { - return true; + @Override + @RequiredReadAction + public boolean onPatternMatch( + @Nonnull MetaDocType type, + @Nullable String matchName, + @Nullable String matchValue, + @Nullable String remainingLineContent, + @Nonnull String line, + String patternMatched + ) { + for (MetaDocType expectedType : expectedTypes) { + if (type == expectedType) { + if (type == MetaDocType.TYPE && _anchor instanceof JSFunction function) { + final JSParameterList jsParameterList = function.getParameterList(); + if (jsParameterList != null && jsParameterList.getParameters().length > 0) { + return true; + } + if (_anchor.getParent() instanceof JSProperty) { + return true; + } } - if (_anchor.getParent() instanceof JSProperty) { - return true; + else if (type == MetaDocType.RETURN) { + //if (!isOurDocComment()) return true; } - } - else if (type == MetaDocType.RETURN) { - //if (!isOurDocComment()) return true; - } - detectedType.set(matchName); - return false; + detectedType.set(matchName); + return false; + } } + return true; } - return true; } - }); + ); return detectedType.get(); } @@ -629,10 +617,12 @@ else if (type == MetaDocType.RETURN) { return null; } + @RequiredReadAction public static String findType(final PsiElement def) { return findDocForAnchor(def, JSDocumentationProcessor.MetaDocType.TYPE); } + @RequiredReadAction public static boolean isDeprecated(PsiElement element) { if (element instanceof JSClass jsClass) { return jsClass.isDeprecated(); @@ -650,6 +640,7 @@ else if (element instanceof JSNamespaceDeclaration namespaceDeclaration) { return calculateDeprecated(element); } + @RequiredReadAction public static boolean calculateDeprecated(PsiElement element) { if (element instanceof JSExpression) { element = PsiTreeUtil.getParentOfType(element, JSStatement.class, JSProperty.class); @@ -659,33 +650,36 @@ public static boolean calculateDeprecated(PsiElement element) { if (docComment != null) { final boolean[] deprecatedStatus = new boolean[1]; - processDocumentationTextFromComment(docComment.getNode(), new JSDocumentationProcessor() { - @Override - public boolean needsPlainCommentData() { - return false; - } + processDocumentationTextFromComment( + docComment.getNode(), + new JSDocumentationProcessor() { + @Override + public boolean needsPlainCommentData() { + return false; + } - @Override - public boolean onCommentLine(@Nonnull final String line) { - return true; - } + @Override + public boolean onCommentLine(@Nonnull final String line) { + return true; + } - @Override - public boolean onPatternMatch( - @Nonnull final MetaDocType type, - @Nullable final String matchName, - @Nullable final String matchValue, - @Nullable final String remainingLineContent, - @Nonnull final String line, - final String patternMatched - ) { - if (type == MetaDocType.DEPRECATED) { - deprecatedStatus[0] = true; - return false; + @Override + public boolean onPatternMatch( + @Nonnull MetaDocType type, + @Nullable String matchName, + @Nullable String matchValue, + @Nullable String remainingLineContent, + @Nonnull String line, + String patternMatched + ) { + if (type == MetaDocType.DEPRECATED) { + deprecatedStatus[0] = true; + return false; + } + return true; } - return true; } - }); + ); return deprecatedStatus[0]; } @@ -695,9 +689,9 @@ public boolean onPatternMatch( public static void appendHyperLinkToElement( @Nullable PsiElement element, String elementName, - final StringBuilder buffer, - final String presentableName, - final @Nullable String presentableFileName + StringBuilder buffer, + String presentableName, + @Nullable String presentableFileName ) { final PsiFile containingFile = element != null ? element.getContainingFile() : null; String fileName = containingFile == null @@ -715,6 +709,7 @@ public static void appendHyperLinkToElement( ); } + @RequiredReadAction private static String evaluateTypeFromParameter(final JSParameter parameter) { String s = evaluateTypeFromVariable(parameter); @@ -725,6 +720,7 @@ private static String evaluateTypeFromParameter(final JSParameter parameter) { return s; } + @RequiredReadAction private static PsiElement findFunctionComment(JSParameter parameter) { PsiElement anchor = PsiTreeUtil.getParentOfType(parameter, JSFunction.class); @@ -738,6 +734,7 @@ private static PsiElement findFunctionComment(JSParameter parameter) { return null; } + @RequiredReadAction private static String evaluateTypeFromFunction(final JSFunction function) { final ASTNode lastCommentInFunctionBody = findTrailingCommentInFunctionBody(function); @@ -752,6 +749,7 @@ private static String evaluateTypeFromFunction(final JSFunction function) { return typeString; } + @RequiredReadAction private static String evaluateTypeFromVariable(final JSVariable variable) { PsiElement prevSibling = variable.getFirstChild(); if (prevSibling != null && prevSibling.getNode().getElementType() == JSTokenTypes.IDENTIFIER) { @@ -787,6 +785,7 @@ private static String evaluateTypeFromVariable(final JSVariable variable) { return null; } + @RequiredReadAction public static String findTypeFromComments(final JSNamedElement element) { if (element instanceof JSParameter parameter) { return evaluateTypeFromParameter(parameter); @@ -809,6 +808,7 @@ public static boolean isSymbolReference(String content) { return text.indexOf('.') != -1 || text.indexOf('#') != -1; } + @RequiredReadAction public static boolean findOptionalStatusFromComments(final JSParameter parameter) { PsiElement docComment = findFunctionComment(parameter); if (docComment == null) { @@ -817,36 +817,39 @@ public static boolean findOptionalStatusFromComments(final JSParameter parameter final boolean[] detectedType = new boolean[1]; - processDocumentationTextFromComment(docComment.getNode(), new JSDocumentationProcessor() { - final String name = parameter.getName(); - - @Override - public boolean needsPlainCommentData() { - return false; - } - - @Override - public boolean onCommentLine(@Nonnull final String line) { - return true; - } + processDocumentationTextFromComment( + docComment.getNode(), + new JSDocumentationProcessor() { + final String name = parameter.getName(); - @Override - public boolean onPatternMatch( - @Nonnull final MetaDocType type, - @Nullable final String matchName, - @Nullable final String matchValue, - @Nullable final String remainingLineContent, - @Nonnull final String line, - final String patternMatched - ) { - if (type == MetaDocType.OPTIONAL_PARAMETERS && matchName != null && matchName.equals(name) && matchValue == null) { - detectedType[0] = true; + @Override + public boolean needsPlainCommentData() { return false; } - return true; + @Override + public boolean onCommentLine(@Nonnull String line) { + return true; + } + + @Override + public boolean onPatternMatch( + @Nonnull MetaDocType type, + @Nullable String matchName, + @Nullable String matchValue, + @Nullable String remainingLineContent, + @Nonnull String line, + String patternMatched + ) { + if (type == MetaDocType.OPTIONAL_PARAMETERS && matchName != null && matchName.equals(name) && matchValue == null) { + detectedType[0] = true; + return false; + } + + return true; + } } - }); + ); return detectedType[0]; } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/flex/FlexImportSupport.java b/base-impl/src/main/java/com/intellij/lang/javascript/flex/FlexImportSupport.java index 1dad91a4..8abcc576 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/flex/FlexImportSupport.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/flex/FlexImportSupport.java @@ -20,10 +20,10 @@ import com.intellij.lang.javascript.psi.JSImportStatement; import com.intellij.lang.javascript.psi.resolve.JSImportedElementResolveResult; import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; +import consulo.annotation.access.RequiredReadAction; import consulo.language.psi.PsiElement; import consulo.language.psi.PsiNamedElement; import consulo.util.collection.ArrayUtil; -import org.jetbrains.annotations.NonNls; import jakarta.annotation.Nonnull; @@ -35,9 +35,7 @@ */ public class FlexImportSupport { // flex2.compiler.mxml.lang.StandardDefs - private static - @NonNls - String[] standardMxmlImports = new String[]{ + private static final String[] STANDARD_MXML_IMPORTS = new String[]{ "mx.styles.*", "mx.binding.*", "mx.core.mx_internal", @@ -49,9 +47,7 @@ public class FlexImportSupport { "mx.core.DeferredInstanceFromFunction", }; - private static - @NonNls - String[] airOnlyImplicitImports = new String[]{ + private static final String[] AIR_ONLY_IMPLICIT_IMPORTS = new String[]{ "flash.data.*", "flash.desktop.*", "flash.filesystem.*", @@ -59,9 +55,7 @@ public class FlexImportSupport { "flash.html.script.*" }; - private static - @NonNls - String[] implicitImports = new String[]{ + private static final String[] IMPLICIT_IMPORTS = new String[]{ "flash.accessibility.*", "flash.debugger.*", "flash.display.*", @@ -81,57 +75,57 @@ public class FlexImportSupport { "flash.xml.*" }; - private static final Map implicitImportListMap = new HashMap(); - private static final Map mxmlImportListMap = new HashMap(); + private static final Map IMPLICIT_IMPORT_LIST_MAP = new HashMap<>(); + private static final Map MXML_IMPORT_LIST_MAP = new HashMap<>(); static { - fillMapFromImportsArray(implicitImports, implicitImportListMap); - fillMapFromImportsArray(standardMxmlImports, mxmlImportListMap); + fillMapFromImportsArray(IMPLICIT_IMPORTS, IMPLICIT_IMPORT_LIST_MAP); + fillMapFromImportsArray(STANDARD_MXML_IMPORTS, MXML_IMPORT_LIST_MAP); } - private static void fillMapFromImportsArray(final String[] strings, final Map map) { + @RequiredReadAction + private static void fillMapFromImportsArray(String[] strings, Map map) { for (String s : strings) { doAppendToMap(map, s); } } - public static void appendToMap(final Map map, final JSImportStatement importStatement) { + @RequiredReadAction + public static void appendToMap(Map map, JSImportStatement importStatement) { doAppendToMap(map, importStatement); } - private static void doAppendToMap(final Map map, final Object stringOrStatement) { + @RequiredReadAction + private static void doAppendToMap(Map map, Object stringOrStatement) { String s = stringOrStatement instanceof String string ? string : ((JSImportStatement)stringOrStatement).getImportText(); - final int index = s.lastIndexOf('.'); + int index = s.lastIndexOf('.'); if (index == -1) { return; // nothing to import, global symbol } - final String key = s.substring(index + 1); - final Object o = map.get(key); + String key = s.substring(index + 1); + Object o = map.get(key); if (o == null) { map.put(key, stringOrStatement); } - else if (o instanceof Object[]) { - map.put(key, ArrayUtil.append((Object[])o, stringOrStatement)); + else if (o instanceof Object[] objects) { + map.put(key, ArrayUtil.append(objects, stringOrStatement)); } else { - map.put(key, new Object[]{ - stringOrStatement, - o - }); + map.put(key, new Object[]{stringOrStatement, o}); } } public static JSImportedElementResolveResult resolveTypeNameUsingImplicitImports(@Nonnull String referenceName, @Nonnull JSFile file) { - final PsiElement context = file.getContext(); + PsiElement context = file.getContext(); if (context != null) { - JSImportedElementResolveResult expression = tryFindInMap(referenceName, file, implicitImportListMap, null); + JSImportedElementResolveResult expression = tryFindInMap(referenceName, file, IMPLICIT_IMPORT_LIST_MAP, null); if (expression != null) { return expression; } - expression = tryFindInMap(referenceName, file, mxmlImportListMap, null); + expression = tryFindInMap(referenceName, file, MXML_IMPORT_LIST_MAP, null); if (expression != null) { return expression; } @@ -139,11 +133,10 @@ public static JSImportedElementResolveResult resolveTypeNameUsingImplicitImports return null; } - public static JSImportedElementResolveResult tryFindInMap( - final String referenceName, - final PsiNamedElement file, - final Map map, + String referenceName, + PsiNamedElement file, + Map map, String qName ) { JSImportedElementResolveResult resolveResult = tryEntry(map.get(referenceName), referenceName, file, qName); @@ -154,9 +147,9 @@ public static JSImportedElementResolveResult tryFindInMap( } public static JSImportedElementResolveResult tryFindInMap( - final String referenceName, - final PsiNamedElement file, - final Map map + String referenceName, + PsiNamedElement file, + Map map ) { return tryFindInMap(referenceName, file, map, null); } @@ -165,8 +158,8 @@ private static JSImportedElementResolveResult tryEntry(Object entry, String refe if (entry == null) { return null; } - else if (entry instanceof Object[]) { - for (Object entryItem : (Object[])entry) { + else if (entry instanceof Object[] entryItems) { + for (Object entryItem : entryItems) { JSImportedElementResolveResult expression = tryFindClass(referenceName, file, entryItem, qName); if (expression != null) { return expression; @@ -179,10 +172,11 @@ else if (entry instanceof Object[]) { } } + @RequiredReadAction private static JSImportedElementResolveResult tryFindClass( - final String referenceName, - final PsiNamedElement file, - final Object entry, + String referenceName, + PsiNamedElement file, + Object entry, String qName ) { String importString = entry instanceof String string ? string : ((JSImportStatement)entry).getImportText(); diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/flex/JSResolveHelper.java b/base-impl/src/main/java/com/intellij/lang/javascript/flex/JSResolveHelper.java index c8489903..94ea4f99 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/flex/JSResolveHelper.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/flex/JSResolveHelper.java @@ -41,14 +41,14 @@ public interface JSResolveHelper { // TODO: drop module @Nullable - PsiElement findClassByQName(final String link, final Project project, final String className, GlobalSearchScope scope); + PsiElement findClassByQName(String link, Project project, String className, GlobalSearchScope scope); - void importClass(final PsiScopeProcessor processor, final PsiNamedElement file, final String packageQualifierText); + void importClass(PsiScopeProcessor processor, PsiNamedElement file, String packageQualifierText); boolean processPackage( - final String packageQualifierText, + String packageQualifierText, String resolvedName, - final Processor processor, + Processor processor, GlobalSearchScope globalSearchScope, Project project ); diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/flex/XmlBackedJSClassImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/flex/XmlBackedJSClassImpl.java index e61cd9bf..4eadc096 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/flex/XmlBackedJSClassImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/flex/XmlBackedJSClassImpl.java @@ -254,13 +254,13 @@ public boolean doImportFromScripts(PsiScopeProcessor processor, PsiElement place } if (adequatePlace && processor instanceof ResolveProcessor resolveProcessor && !processComponentNames(resolveProcessor)) { - return false; + return false; + } } - } return !(processor instanceof ResolveProcessor) || !JSResolveUtil.shouldProcessTopLevelGlobalContext(place, processor) || !notResolvingTypeViaImport || JSResolveUtil.processGlobalThings(processor, ResolveState.initial(), place, this); - } + } @RequiredReadAction public boolean processComponentNames(ResolveProcessor processor) { @@ -294,32 +294,32 @@ public boolean processComponentNames(ResolveProcessor processor) { private static final String SCRIPT_TAG_NAME = "Script"; private static final UserDataCache, XmlTag, Object> CACHED_SCRIPTS = new UserDataCache<>() { - @Override - protected CachedValue compute(XmlTag tag, Object p) { - return CachedValuesManager.getManager(tag.getProject()).createCachedValue( - () -> { - List injectedFiles = new ArrayList<>(2); - List dependencies = new ArrayList<>(); - dependencies.add(tag); - new InjectedScriptsVisitor( - tag, - doProcessAllTags(tag), - false, - false, - (rootTag, file) -> { - injectedFiles.add(file); - dependencies.add(file); - } - ).go(); - return new CachedValueProvider.Result<>( - injectedFiles.toArray(new JSFile[injectedFiles.size()]), - dependencies.toArray() - ); - }, - false - ); - } - }; + @Override + protected CachedValue compute(XmlTag tag, Object p) { + return CachedValuesManager.getManager(tag.getProject()).createCachedValue( + () -> { + List injectedFiles = new ArrayList<>(2); + List dependencies = new ArrayList<>(); + dependencies.add(tag); + new InjectedScriptsVisitor( + tag, + doProcessAllTags(tag), + false, + false, + (rootTag, file) -> { + injectedFiles.add(file); + dependencies.add(file); + } + ).go(); + return new CachedValueProvider.Result<>( + injectedFiles.toArray(new JSFile[injectedFiles.size()]), + dependencies.toArray() + ); + }, + false + ); + } + }; private static final UserDataCache>, XmlFile, Object> CACHED_COMPONENT_IMPORTS_CACHE = new UserDataCache<>() { @@ -420,7 +420,7 @@ public static XmlBackedJSClassImpl getContainingComponent(XmlElement element) { private static final UserDataCache, XmlTag, Object> myCachedClassCache = new UserDataCache<>() { @Override - protected ParameterizedCachedValue compute(final XmlTag tag, final Object p) { + protected ParameterizedCachedValue compute(XmlTag tag, Object p) { return CachedValuesManager.getManager(tag.getProject()).createParameterizedCachedValue( (ParameterizedCachedValueProvider)tag1 -> new CachedValueProvider.Result<>(new XmlBackedJSClassImpl(tag1), tag1), diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/highlighting/JSHighlighter.java b/base-impl/src/main/java/com/intellij/lang/javascript/highlighting/JSHighlighter.java index 1650fbbc..c39bef90 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/highlighting/JSHighlighter.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/highlighting/JSHighlighter.java @@ -31,98 +31,95 @@ import java.util.Map; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 27, 2005 - * Time: 11:22:04 PM + * @author max + * @since 2005-01-27 */ @Deprecated public class JSHighlighter extends SyntaxHighlighterBase implements JavaScriptSyntaxHighlightKeys { - private static Map keys1; - private static Map keys2; + private static final Map KEYS_1; + private static final Map KEYS_2; private final DialectOptionHolder myDialectOptionsHolder; public JSHighlighter(DialectOptionHolder dialectOptionsHolder) { myDialectOptionsHolder = dialectOptionsHolder; } - @Override @Nonnull + @Override public Lexer getHighlightingLexer() { return new JavaScriptHighlightingLexer(myDialectOptionsHolder); } - static { - keys1 = new HashMap<>(); - keys2 = new HashMap<>(); + KEYS_1 = new HashMap<>(); + KEYS_2 = new HashMap<>(); SyntaxHighlighterBase.fillMap( - keys1, + KEYS_1, JSTokenTypes.OPERATIONS, JS_OPERATION_SIGN ); // we do need init OPERATIONS before KEYWORDS because has some // OPERATIONS to be KEYWORDS (is, as) - fillMap(keys1, JSTokenTypes.KEYWORDS, JS_KEYWORD); + fillMap(KEYS_1, JSTokenTypes.KEYWORDS, JS_KEYWORD); - keys1.put(StringEscapesTokenTypes.VALID_STRING_ESCAPE_TOKEN, JS_VALID_STRING_ESCAPE); - keys1.put(StringEscapesTokenTypes.INVALID_CHARACTER_ESCAPE_TOKEN, JS_INVALID_STRING_ESCAPE); - keys1.put(StringEscapesTokenTypes.INVALID_UNICODE_ESCAPE_TOKEN, JS_INVALID_STRING_ESCAPE); + KEYS_1.put(StringEscapesTokenTypes.VALID_STRING_ESCAPE_TOKEN, JS_VALID_STRING_ESCAPE); + KEYS_1.put(StringEscapesTokenTypes.INVALID_CHARACTER_ESCAPE_TOKEN, JS_INVALID_STRING_ESCAPE); + KEYS_1.put(StringEscapesTokenTypes.INVALID_UNICODE_ESCAPE_TOKEN, JS_INVALID_STRING_ESCAPE); - keys1.put(JSTokenTypes.NUMERIC_LITERAL, JS_NUMBER); - keys1.put(JSTokenTypes.STRING_LITERAL, JS_STRING); - keys1.put(JSTokenTypes.SINGLE_QUOTE_STRING_LITERAL, JS_STRING); - keys1.put(JSTokenTypes.REGEXP_LITERAL, JS_REGEXP); + KEYS_1.put(JSTokenTypes.NUMERIC_LITERAL, JS_NUMBER); + KEYS_1.put(JSTokenTypes.STRING_LITERAL, JS_STRING); + KEYS_1.put(JSTokenTypes.SINGLE_QUOTE_STRING_LITERAL, JS_STRING); + KEYS_1.put(JSTokenTypes.REGEXP_LITERAL, JS_REGEXP); - keys1.put(JSTokenTypes.LPAR, JS_PARENTHS); - keys1.put(JSTokenTypes.RPAR, JS_PARENTHS); + KEYS_1.put(JSTokenTypes.LPAR, JS_PARENTHS); + KEYS_1.put(JSTokenTypes.RPAR, JS_PARENTHS); - keys1.put(JSTokenTypes.LBRACE, JS_BRACES); - keys1.put(JSTokenTypes.RBRACE, JS_BRACES); + KEYS_1.put(JSTokenTypes.LBRACE, JS_BRACES); + KEYS_1.put(JSTokenTypes.RBRACE, JS_BRACES); - keys1.put(JSTokenTypes.LBRACKET, JS_BRACKETS); - keys1.put(JSTokenTypes.RBRACKET, JS_BRACKETS); + KEYS_1.put(JSTokenTypes.LBRACKET, JS_BRACKETS); + KEYS_1.put(JSTokenTypes.RBRACKET, JS_BRACKETS); - keys1.put(JSTokenTypes.COMMA, JS_COMMA); - keys1.put(JSTokenTypes.DOT, JS_DOT); - keys1.put(JSTokenTypes.SEMICOLON, JS_SEMICOLON); + KEYS_1.put(JSTokenTypes.COMMA, JS_COMMA); + KEYS_1.put(JSTokenTypes.DOT, JS_DOT); + KEYS_1.put(JSTokenTypes.SEMICOLON, JS_SEMICOLON); - keys1.put(JSTokenTypes.C_STYLE_COMMENT, JS_BLOCK_COMMENT); - keys1.put(JSTokenTypes.XML_STYLE_COMMENT, JS_BLOCK_COMMENT); - keys1.put(JSTokenTypes.DOC_COMMENT, JS_DOC_COMMENT); - keys1.put(JSTokenTypes.END_OF_LINE_COMMENT, JS_LINE_COMMENT); - keys1.put(JSTokenTypes.BAD_CHARACTER, JS_BAD_CHARACTER); + KEYS_1.put(JSTokenTypes.C_STYLE_COMMENT, JS_BLOCK_COMMENT); + KEYS_1.put(JSTokenTypes.XML_STYLE_COMMENT, JS_BLOCK_COMMENT); + KEYS_1.put(JSTokenTypes.DOC_COMMENT, JS_DOC_COMMENT); + KEYS_1.put(JSTokenTypes.END_OF_LINE_COMMENT, JS_LINE_COMMENT); + KEYS_1.put(JSTokenTypes.BAD_CHARACTER, JS_BAD_CHARACTER); - keys1.put(JSDocTokenTypes.DOC_TAG_NAME, JS_DOC_COMMENT); - keys2.put(JSDocTokenTypes.DOC_TAG_NAME, JS_DOC_TAG); + KEYS_1.put(JSDocTokenTypes.DOC_TAG_NAME, JS_DOC_COMMENT); + KEYS_2.put(JSDocTokenTypes.DOC_TAG_NAME, JS_DOC_TAG); IElementType[] javadoc = IElementType.enumerate(type -> type instanceof JSDocElementType); for (IElementType type : javadoc) { - keys1.put(type, JS_DOC_COMMENT); + KEYS_1.put(type, JS_DOC_COMMENT); } - keys1.put(JSTokenTypes.JSDOC_TAG_DATA, JS_DOC_COMMENT); + KEYS_1.put(JSTokenTypes.JSDOC_TAG_DATA, JS_DOC_COMMENT); for (IElementType type : JSTokenTypes.XML_TOKENS.getTypes()) { - keys1.put(type, XmlHighlighterColors.XML_TAG); + KEYS_1.put(type, XmlHighlighterColors.XML_TAG); } - keys2.put(JSTokenTypes.XML_TAG_NAME, XmlHighlighterColors.XML_TAG_NAME); - keys2.put(JSTokenTypes.XML_NAME, XmlHighlighterColors.XML_ATTRIBUTE_NAME); - keys2.put(JSTokenTypes.XML_ATTR_VALUE, XmlHighlighterColors.XML_ATTRIBUTE_VALUE); - keys2.put(JSTokenTypes.XML_ATTR_VALUE_END, XmlHighlighterColors.XML_ATTRIBUTE_VALUE); - keys2.put(JSTokenTypes.XML_ATTR_VALUE_START, XmlHighlighterColors.XML_ATTRIBUTE_VALUE); - keys2.put(JSTokenTypes.XML_ATTR_EQUAL, XmlHighlighterColors.XML_ATTRIBUTE_VALUE); - keys2.put(JSTokenTypes.XML_ENTITY_REF, XmlHighlighterColors.XML_ENTITY_REFERENCE); + KEYS_2.put(JSTokenTypes.XML_TAG_NAME, XmlHighlighterColors.XML_TAG_NAME); + KEYS_2.put(JSTokenTypes.XML_NAME, XmlHighlighterColors.XML_ATTRIBUTE_NAME); + KEYS_2.put(JSTokenTypes.XML_ATTR_VALUE, XmlHighlighterColors.XML_ATTRIBUTE_VALUE); + KEYS_2.put(JSTokenTypes.XML_ATTR_VALUE_END, XmlHighlighterColors.XML_ATTRIBUTE_VALUE); + KEYS_2.put(JSTokenTypes.XML_ATTR_VALUE_START, XmlHighlighterColors.XML_ATTRIBUTE_VALUE); + KEYS_2.put(JSTokenTypes.XML_ATTR_EQUAL, XmlHighlighterColors.XML_ATTRIBUTE_VALUE); + KEYS_2.put(JSTokenTypes.XML_ENTITY_REF, XmlHighlighterColors.XML_ENTITY_REFERENCE); - keys1.put(JSTokenTypes.XML_STYLE_COMMENT, XmlHighlighterColors.XML_COMMENT); - keys1.put(JSTokenTypes.XML_TAG_CONTENT, XmlHighlighterColors.XML_TAG_DATA); + KEYS_1.put(JSTokenTypes.XML_STYLE_COMMENT, XmlHighlighterColors.XML_COMMENT); + KEYS_1.put(JSTokenTypes.XML_TAG_CONTENT, XmlHighlighterColors.XML_TAG_DATA); } - @Override @Nonnull - public TextAttributesKey[] getTokenHighlights(IElementType tokenType) { - return pack(keys1.get(tokenType), keys2.get(tokenType)); + @Override + public TextAttributesKey[] getTokenHighlights(@Nonnull IElementType tokenType) { + return pack(KEYS_1.get(tokenType), KEYS_2.get(tokenType)); } } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/highlighting/JavaScriptHighlightingLexer.java b/base-impl/src/main/java/com/intellij/lang/javascript/highlighting/JavaScriptHighlightingLexer.java index f524df6d..9a52047e 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/highlighting/JavaScriptHighlightingLexer.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/highlighting/JavaScriptHighlightingLexer.java @@ -29,7 +29,7 @@ /** * @author max - * @since 12:13:05 AM Feb 15, 2005 + * @since 2005-02-15 */ public class JavaScriptHighlightingLexer extends LayeredLexer { public JavaScriptHighlightingLexer(Supplier baseLexerFactory) { @@ -120,7 +120,7 @@ public int getBufferEnd() { } public static IElementType getTagContentTokenType() { - final Lexer highlightingLexer = getHtmlHighlightingLexer(); + Lexer highlightingLexer = getHtmlHighlightingLexer(); highlightingLexer.start("a", 0, 1, 0); return highlightingLexer.getTokenType(); } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/index/JSItemPresentation.java b/base-impl/src/main/java/com/intellij/lang/javascript/index/JSItemPresentation.java index f2c24579..78645637 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/index/JSItemPresentation.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/index/JSItemPresentation.java @@ -21,9 +21,9 @@ import com.intellij.lang.javascript.psi.JSNamedElement; import com.intellij.lang.javascript.psi.JSVariable; import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; +import consulo.annotation.access.RequiredReadAction; import consulo.component.util.Iconable; import consulo.language.icon.IconDescriptorUpdaters; -import consulo.language.psi.PsiElement; import consulo.language.psi.PsiFile; import consulo.navigation.ItemPresentation; import consulo.ui.annotation.RequiredUIAccess; @@ -32,7 +32,7 @@ /** * @author Maxim.Mossienko - * @since 9:55:49 PM Apr 7, 2006 + * @since 2006-04-07 */ public class JSItemPresentation implements ItemPresentation { private JSNamedElement myElement; @@ -46,27 +46,26 @@ public String getPresentableText() { return myElement.getName(); } - @Override @Nullable + @Override + @RequiredReadAction public String getLocationString() { final PsiFile psiFile = myElement.getContainingFile(); if (myElement instanceof JSVariable || myElement instanceof JSFunction) { - PsiElement possibleClazz = JSResolveUtil.findParent(myElement); - - if (possibleClazz instanceof JSClass) { - final StringBuilder presentation = new StringBuilder(); + if (JSResolveUtil.findParent(myElement) instanceof JSClass possibleJsClass) { + StringBuilder presentation = new StringBuilder(); - presentation.append(((JSClass)possibleClazz).getQualifiedName()); + presentation.append(possibleJsClass.getQualifiedName()); presentation.append('(').append(getFileName(psiFile)).append(')'); return presentation.toString(); } } - else if (myElement instanceof JSClass) { - final String s = ((JSClass)myElement).getQualifiedName(); - final int i = s.lastIndexOf('.'); + else if (myElement instanceof JSClass jsClass) { + String s = jsClass.getQualifiedName(); + int i = s.lastIndexOf('.'); if (i != -1) { - final StringBuilder presentation = new StringBuilder(); + StringBuilder presentation = new StringBuilder(); presentation.append(s.substring(0, i)); presentation.append('(').append(getFileName(psiFile)).append(')'); @@ -76,8 +75,9 @@ else if (myElement instanceof JSClass) { return getFileName(psiFile); } - private static String getFileName(final PsiFile psiFile) { - final String s = psiFile.getName(); + @RequiredReadAction + private static String getFileName(PsiFile psiFile) { + String s = psiFile.getName(); if (JSResolveUtil.isPredefinedFile(psiFile)) { return s.substring(s.lastIndexOf('/') + 1); } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/index/JSSymbolUtil.java b/base-impl/src/main/java/com/intellij/lang/javascript/index/JSSymbolUtil.java index 0b737f85..8c5d5f08 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/index/JSSymbolUtil.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/index/JSSymbolUtil.java @@ -21,8 +21,6 @@ import com.intellij.lang.javascript.psi.resolve.ResolveProcessor; import consulo.language.psi.PsiElement; import consulo.language.psi.util.PsiTreeUtil; -import org.jetbrains.annotations.NonNls; - import jakarta.annotation.Nullable; import java.util.ArrayList; @@ -31,17 +29,13 @@ import java.util.Set; /** - * @by maxim.mossienko, yole + * @author maxim.mossienko, yole */ public class JSSymbolUtil { - @NonNls private static final String PROTOTYPE_FIELD_NAME = "prototype"; - @NonNls private static final String J_QUERY_VAR_NAME = "jQuery"; - @NonNls private static final String FN_FUN_NAME = "fn"; - private static JSElement findNameComponent(JSElement expr) { if (expr instanceof JSReferenceExpression) { return expr; @@ -52,28 +46,27 @@ private static JSElement findNameComponent(JSElement expr) { if (expr instanceof JSReferenceExpression) { return expr; } - else if (expr instanceof JSAssignmentExpression) { - final JSExpression _lOperand = ((JSAssignmentExpression)expr).getLOperand(); + else if (expr instanceof JSAssignmentExpression assignment) { + JSExpression _lOperand = assignment.getLOperand(); if (!(_lOperand instanceof JSDefinitionExpression)) { break; } - final JSExpression lOperand = ((JSDefinitionExpression)_lOperand).getExpression(); + JSExpression lOperand = ((JSDefinitionExpression)_lOperand).getExpression(); - if (lOperand instanceof JSReferenceExpression) { - expr = lOperand; + if (lOperand instanceof JSReferenceExpression refExpr) { + expr = refExpr; continue; } else { break; } } - else if (expr instanceof JSVariable) { - return expr; + else if (expr instanceof JSVariable variable) { + return variable; } - else if (expr instanceof JSCallExpression) { - final JSExpression method = ((JSCallExpression)expr).getMethodExpression(); - if (method instanceof JSReferenceExpression) { - return method; + else if (expr instanceof JSCallExpression call) { + if (call.getMethodExpression() instanceof JSReferenceExpression methodRefExpr) { + return methodRefExpr; } } else { @@ -81,7 +74,7 @@ else if (expr instanceof JSCallExpression) { } if (current != null) { - final PsiElement parent = current.getParent(); + PsiElement parent = current.getParent(); if (!(parent instanceof JSElement)) { break; } @@ -95,41 +88,43 @@ else if (expr instanceof JSCallExpression) { return null; } - public static String[] buildNameIndexArray(final JSElement _expr) { + public static String[] buildNameIndexArray(JSElement _expr) { final List nameComponents = new ArrayList<>(); JSElement nameComponent = findNameComponent(_expr); JSReferenceExpression expr = null; - if (nameComponent instanceof JSVariable) { - String varName = nameComponent.getName(); + if (nameComponent instanceof JSVariable variable) { + String varName = variable.getName(); if (varName != null) { nameComponents.add(varName); } } - else if (nameComponent instanceof JSReferenceExpression) { - expr = (JSReferenceExpression)nameComponent; + else if (nameComponent instanceof JSReferenceExpression nameRefExpr) { + expr = nameRefExpr; } if (expr != null) { final JSReferenceExpression expr1 = expr; - visitReferenceExpressionComponentsInRootFirstOrder(expr, new ReferenceExpressionProcessor() { - - @Override - public void processExpression(JSReferenceExpression expr) { - nameComponents.add(expr.getReferencedName()); - } + visitReferenceExpressionComponentsInRootFirstOrder( + expr, + new ReferenceExpressionProcessor() { + @Override + public void processExpression(JSReferenceExpression expr) { + nameComponents.add(expr.getReferencedName()); + } - @Override - public void processUnresolvedThis() { - nameComponents.add(""); - } + @Override + public void processUnresolvedThis() { + nameComponents.add(""); + } - @Override - public boolean isTopLevel(final JSReferenceExpression expression) { - return expr1 == expression; + @Override + public boolean isTopLevel(final JSReferenceExpression expression) { + return expr1 == expression; + } } - }); + ); } return nameComponents.toArray(new String[nameComponents.size()]); @@ -140,10 +135,9 @@ interface ReferenceExpressionProcessor { void processUnresolvedThis(); - boolean isTopLevel(final JSReferenceExpression expression); + boolean isTopLevel(JSReferenceExpression expression); } - private static void visitReferenceExpressionComponentsInRootFirstOrder( JSReferenceExpression expr, ReferenceExpressionProcessor processor @@ -166,14 +160,14 @@ private static void visitReferenceExpressionComponentsInRootFirstOrder( processor.processUnresolvedThis(); } - final String refName = expr.getReferencedName(); + String refName = expr.getReferencedName(); if (refName != null && (!refName.equals(PROTOTYPE_FIELD_NAME) || processor.isTopLevel(expr))) { processor.processExpression(expr); } } - private static JSReferenceExpression evaluateInitializedPrototype(final JSExpression initializer) { + private static JSReferenceExpression evaluateInitializedPrototype(JSExpression initializer) { JSReferenceExpression initializedPrototype = null; if (initializer instanceof JSReferenceExpression initializerRefExpr @@ -197,9 +191,9 @@ private static JSReferenceExpression findReferenceExpressionUsedForClassExtendin @Nullable Set visited ) { JSReferenceExpression originalExpr = lOperand; - final ResolveProcessor processor = new ResolveProcessor(lOperand.getText(), true); + ResolveProcessor processor = new ResolveProcessor(lOperand.getText(), true); processor.setLocalResolve(true); - final PsiElement parent = lOperand.getParent(); + PsiElement parent = lOperand.getParent(); JSResolveUtil.treeWalkUp(processor, lOperand, parent, lOperand); PsiElement jsElement = processor.getResult(); @@ -208,8 +202,8 @@ private static JSReferenceExpression findReferenceExpressionUsedForClassExtendin } if (jsElement instanceof JSVariable variable) { - final JSExpression initialization = variable.getInitializer(); - final JSReferenceExpression expression = initialization != null ? evaluateInitializedPrototype(initialization) : null; + JSExpression initialization = variable.getInitializer(); + JSReferenceExpression expression = initialization != null ? evaluateInitializedPrototype(initialization) : null; if (expression != null) { lOperand = expression; @@ -219,7 +213,7 @@ else if (initialization instanceof JSReferenceExpression initializationRefExpr) } } else { - final PsiElement parentJsElement = jsElement != null ? jsElement.getParent() : null; + PsiElement parentJsElement = jsElement != null ? jsElement.getParent() : null; // new expression also could mean something extension ! if (jsElement instanceof JSDefinitionExpression @@ -227,10 +221,10 @@ else if (initialization instanceof JSReferenceExpression initializationRefExpr) JSExpression rOperand = parentAssignExpr.getROperand(); if (rOperand instanceof JSCallExpression callExpression && !(rOperand instanceof JSNewExpression)) { - final JSArgumentList list = callExpression.getArgumentList(); + JSArgumentList list = callExpression.getArgumentList(); if (list != null) { - final JSExpression[] jsExpressions = list.getArguments(); + JSExpression[] jsExpressions = list.getArguments(); if (jsExpressions.length >= 2 && jsExpressions[0] instanceof JSReferenceExpression @@ -240,7 +234,7 @@ else if (initialization instanceof JSReferenceExpression initializationRefExpr) } } else if (rOperand instanceof JSReferenceExpression rOperandRefExpr) { - final JSReferenceExpression expression = evaluateInitializedPrototype(rOperand); + JSReferenceExpression expression = evaluateInitializedPrototype(rOperand); lOperand = expression != null ? expression : rOperandRefExpr; } } @@ -248,7 +242,7 @@ else if (rOperand instanceof JSReferenceExpression rOperandRefExpr) { return lOperand != originalExpr ? replaceLocalVars(lOperand, visited) : lOperand; } - private static JSReferenceExpression replaceLocalVars(final JSReferenceExpression expression, @Nullable Set visited) { + private static JSReferenceExpression replaceLocalVars(JSReferenceExpression expression, @Nullable Set visited) { JSReferenceExpression expr = expression; JSExpression qualifier = expr.getQualifier(); @@ -263,10 +257,10 @@ private static JSReferenceExpression replaceLocalVars(final JSReferenceExpressio } if (qualifier == null) { - final PsiElement ref = JSResolveUtil.getLocalVariableRef(func, expr); + PsiElement ref = JSResolveUtil.getLocalVariableRef(func, expr); if (ref instanceof JSVariable variable && !(ref instanceof JSParameter)) { - final JSExpression initializer = variable.getInitializer(); + JSExpression initializer = variable.getInitializer(); if (initializer instanceof JSReferenceExpression initializerRefExpr) { return replaceExpression(expression, expr, initializerRefExpr); @@ -275,7 +269,7 @@ else if (expr != expression) { if (visited == null) { visited = new HashSet<>(); } - final String replaced = expr.getText(); + String replaced = expr.getText(); if (!visited.contains(replaced)) { visited.add(replaced); @@ -291,16 +285,16 @@ else if (expr != expression) { } private static JSReferenceExpression replaceExpression( - final JSReferenceExpression expression, - final JSReferenceExpression what, - final JSReferenceExpression by + JSReferenceExpression expression, + JSReferenceExpression what, + JSReferenceExpression by ) { if (expression == what) { return by; } int offsetOfExprInExpression = what.getTextOffset() - expression.getTextOffset(); - final JSReferenceExpression copyOfExpr = (JSReferenceExpression)expression.copy(); - final JSReferenceExpression expressionToReplace = PsiTreeUtil.getParentOfType( + JSReferenceExpression copyOfExpr = (JSReferenceExpression)expression.copy(); + JSReferenceExpression expressionToReplace = PsiTreeUtil.getParentOfType( copyOfExpr.findElementAt(offsetOfExprInExpression), JSReferenceExpression.class ); @@ -308,9 +302,9 @@ private static JSReferenceExpression replaceExpression( return copyOfExpr; } - public static JSElement findQualifyingExpressionFromArgumentList(final JSArgumentList parent) { + public static JSElement findQualifyingExpressionFromArgumentList(JSArgumentList parent) { PsiElement firstParent = parent.getParent(); - final PsiElement grandParent = firstParent.getParent(); + PsiElement grandParent = firstParent.getParent(); if (grandParent instanceof JSVariable variable) { return variable; @@ -323,40 +317,41 @@ public static JSElement findQualifyingExpressionFromArgumentList(final JSArgumen return assignedTo; } } - if (grandParent instanceof JSExpressionStatement && firstParent instanceof JSCallExpression call) { - JSExpression methodExpression = call.getMethodExpression(); - String methodName = methodExpression instanceof JSReferenceExpression methodRefExpr ? methodRefExpr.getReferencedName() : null; + if (grandParent instanceof JSExpressionStatement + && firstParent instanceof JSCallExpression call + && call.getMethodExpression() instanceof JSReferenceExpression methodRefExpr) { + + String methodName = methodRefExpr.getReferencedName(); if ("each".equals(methodName) || "extend".equals(methodName)) { - JSExpression expression = ((JSReferenceExpression)methodExpression).getQualifier(); + JSExpression expression = methodRefExpr.getQualifier(); - if (expression instanceof JSReferenceExpression qualifierExpr) { - if (FN_FUN_NAME.equals(qualifierExpr.getReferencedName())) { - expression = qualifierExpr.getQualifier(); - } + if (expression instanceof JSReferenceExpression qualifierRefExpr + && FN_FUN_NAME.equals(qualifierRefExpr.getReferencedName())) { + expression = qualifierRefExpr.getQualifier(); } + if (expression != null && J_QUERY_VAR_NAME.equals(expression.getText())) { return expression; } } else if ("implement".equals(methodName)) { - JSExpression qualifier = ((JSReferenceExpression)methodExpression).getQualifier(); - if (qualifier instanceof JSReferenceExpression && parent.getArguments().length == 1) { - return qualifier; + if (methodRefExpr.getQualifier() instanceof JSReferenceExpression qualifierRefExpr && parent.getArguments().length == 1) { + return qualifierRefExpr; } } } JSExpression[] jsExpressions = parent.getArguments(); for (int i = 0; i < jsExpressions.length; ++i) { - final JSExpression expr = jsExpressions[i]; + JSExpression expr = jsExpressions[i]; if (expr instanceof JSReferenceExpression || (expr instanceof JSLiteralExpression && !expr.textContains(' ') && expr.getTextLength() < 100)) { return expr; } else if (expr instanceof JSCallExpression call) { - final JSArgumentList argumentList = call.getArgumentList(); + JSArgumentList argumentList = call.getArgumentList(); if (argumentList != null) { jsExpressions = argumentList.getArguments(); i = -1; diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/inspections/qucikFixes/BaseCreateFix.java b/base-impl/src/main/java/com/intellij/lang/javascript/inspections/qucikFixes/BaseCreateFix.java index 9746a0e4..4f1abc69 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/inspections/qucikFixes/BaseCreateFix.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/inspections/qucikFixes/BaseCreateFix.java @@ -22,7 +22,7 @@ import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; import com.intellij.lang.javascript.psi.util.JSUtils; import consulo.annotation.access.RequiredReadAction; -import consulo.application.ApplicationManager; +import consulo.application.Application; import consulo.codeEditor.Editor; import consulo.document.Document; import consulo.document.util.TextRange; @@ -46,7 +46,6 @@ import consulo.xml.psi.xml.XmlFile; import consulo.xml.psi.xml.XmlTag; import consulo.xml.psi.xml.XmlText; - import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @@ -63,13 +62,13 @@ public abstract class BaseCreateFix implements LocalQuickFix { @Override @RequiredReadAction public void applyFix(@Nonnull Project project, @Nonnull ProblemDescriptor descriptor) { - final PsiElement psiElement = descriptor.getPsiElement(); + PsiElement psiElement = descriptor.getPsiElement(); PsiFile file = psiElement.getContainingFile(); PsiFile realFile = file.getContext() != null ? file.getContext().getContainingFile() : file; Set features = JavaScriptVersionUtil.getFeatures(psiElement); JSReferenceExpression referenceExpression = (JSReferenceExpression)psiElement.getParent(); - final JSExpression qualifier = referenceExpression.getQualifier(); + JSExpression qualifier = referenceExpression.getQualifier(); PsiElement predefinedAnchor = null; boolean classFeature = features.contains(JavaScriptFeature.CLASS); @@ -83,7 +82,7 @@ public void applyFix(@Nonnull Project project, @Nonnull ProblemDescriptor descri if (type instanceof XmlBackedJSClassImpl) { type = type.getParent().getContainingFile(); } - final PsiElement element = JSResolveUtil.unwrapProxy(type); + PsiElement element = JSResolveUtil.unwrapProxy(type); if (element instanceof JSClass) { file = type.getContainingFile(); @@ -121,7 +120,7 @@ else if (element instanceof XmlFile) { XmlFile contextFile = null; if (anchorParent instanceof JSFile && anchorParent.getContext() != null) { - final PsiElement context = anchorParent.getContext(); + PsiElement context = anchorParent.getContext(); if (context instanceof XmlAttributeValue || context instanceof XmlText && !(SCRIPT_TAG_NAME.equals(((XmlTag)context.getParent()).getLocalName()))) { contextFile = (XmlFile)context.getContainingFile(); @@ -132,7 +131,7 @@ else if (realFile instanceof XmlFile xmlFile) { } if (contextFile != null) { - final XmlTag rootTag = contextFile.getDocument().getRootTag(); + XmlTag rootTag = contextFile.getDocument().getRootTag(); JSClass jsClass = XmlBackedJSClassImpl.getXmlBackedClass(rootTag); JSFile jsFile = ((XmlBackedJSClassImpl)jsClass).findFirstScriptTag(); @@ -157,7 +156,7 @@ else if (realFile instanceof XmlFile xmlFile) { } if (anchor != null) { - final TemplateManager templateManager = TemplateManager.getInstance(project); + TemplateManager templateManager = TemplateManager.getInstance(project); Template template = templateManager.createTemplate("", ""); if (prefix.length() > 0) { @@ -219,12 +218,12 @@ else if (realFile instanceof XmlFile xmlFile) { insertAtEnd = true; } - final TextRange anchorRange = anchor.getTextRange(); + TextRange anchorRange = anchor.getTextRange(); int offset = insertAtEnd ? anchorRange.getEndOffset() : anchorRange.getStartOffset(); if (file != realFile || file instanceof XmlFile) { - final PsiFile anchorContainingFile = anchor.getContainingFile(); - final PsiElement anchorFileContext = anchorContainingFile.getContext(); + PsiFile anchorContainingFile = anchor.getContainingFile(); + PsiElement anchorFileContext = anchorContainingFile.getContext(); if (anchorFileContext != null) { if (anchorFileContext instanceof XmlText xmlText) { @@ -244,7 +243,7 @@ else if (realFile instanceof XmlFile xmlFile) { } @Nullable - public static Editor getEditor(final Project project, final PsiFile realFile) { + public static Editor getEditor(Project project, PsiFile realFile) { if (!FileModificationService.getInstance().prepareFileForWrite(realFile)) { return null; } @@ -255,7 +254,7 @@ public static Editor getEditor(final Project project, final PsiFile realFile) { @RequiredReadAction protected abstract void buildTemplate( - final Template template, + Template template, JSReferenceExpression referenceExpression, Set features, boolean staticContext, @@ -263,13 +262,14 @@ protected abstract void buildTemplate( PsiElement anchorParent ); - private static String getTypeOfValue(final JSExpression passedParameterValue, final PsiFile file, Set features) { - final PsiElement type = getType(passedParameterValue, file, features); + @RequiredReadAction + private static String getTypeOfValue(JSExpression passedParameterValue, PsiFile file, Set features) { + PsiElement type = getType(passedParameterValue, file, features); return type != null ? type instanceof JSClass jsClass ? jsClass.getQualifiedName() : ((PsiNamedElement)type).getName() : ANY_TYPE; } @RequiredReadAction - static PsiElement getType(final JSExpression passedParameterValue, final PsiFile file, Set features) { + static PsiElement getType(JSExpression passedParameterValue, PsiFile file, Set features) { if (passedParameterValue instanceof JSReferenceExpression) { JavaScriptType type = passedParameterValue.getType(); @@ -282,15 +282,15 @@ static PsiElement getType(final JSExpression passedParameterValue, final PsiFile } protected static JSExpression addAccessModifier( - final Template template, - final JSReferenceExpression referenceExpression, - final boolean ecma, + Template template, + JSReferenceExpression referenceExpression, + boolean ecma, boolean staticContext ) { - final JSExpression qualifier = referenceExpression.getQualifier(); + JSExpression qualifier = referenceExpression.getQualifier(); if (ecma) { - if ((qualifier == null || qualifier instanceof JSThisExpression)) { + if (qualifier == null || qualifier instanceof JSThisExpression) { template.addTextSegment("private "); } if (staticContext) { @@ -302,36 +302,38 @@ protected static JSExpression addAccessModifier( private int uniqueCounter; - protected void addCompletionVar(final Template template) { - final Expression paramTypeExpr = new MacroCallNode(MacroFactory.createMacro("complete")); + protected void addCompletionVar(Template template) { + Expression paramTypeExpr = new MacroCallNode(MacroFactory.createMacro("complete")); template.addVariable("__Type" + (uniqueCounter++), paramTypeExpr, paramTypeExpr, true); } - protected void addSemicolonSegment(final Template template, final PsiFile file) { - final String semicolon = JSChangeUtil.getSemicolon(file.getProject()); + protected void addSemicolonSegment(Template template, PsiFile file) { + String semicolon = JSChangeUtil.getSemicolon(file.getProject()); if (semicolon.length() > 0) { template.addTextSegment(semicolon); } } + @RequiredReadAction public static void guessExprTypeAndAddSuchVariable( - final JSExpression passedParameterValue, - final Template template, - final String var1, - final PsiFile file, - final Set features + JSExpression passedParameterValue, + Template template, + String var1, + PsiFile file, + Set features ) { String type = getTypeOfValue(passedParameterValue, file, features); - if (ApplicationManager.getApplication().isUnitTestMode()) { + if (Application.get().isUnitTestMode()) { template.addTextSegment(type); } else { - final MyExpression paramTypeExpr = new MyExpression(type); + MyExpression paramTypeExpr = new MyExpression(type); template.addVariable(var1 + "Type", paramTypeExpr, paramTypeExpr, true); } } + @RequiredReadAction protected void guessTypeAndAddTemplateVariable(Template template, JSExpression referenceExpression, PsiFile file) { String type = null; PsiElement elementForWhichExprTypeToEvaluate = null; @@ -343,18 +345,16 @@ protected void guessTypeAndAddTemplateVariable(Template template, JSExpression r parent = parent.getParent(); } - if (parent instanceof JSDefinitionExpression) { - PsiElement grandParent = parent.getParent(); - - if (grandParent instanceof JSAssignmentExpression assignment) { + if (parent instanceof JSDefinitionExpression definition) { + if (definition.getParent() instanceof JSAssignmentExpression assignment) { elementForWhichExprTypeToEvaluate = assignment.getROperand(); } } else if (parent instanceof JSReturnStatement) { - final JSFunction fun = PsiTreeUtil.getParentOfType(referenceExpression, JSFunction.class); + JSFunction fun = PsiTreeUtil.getParentOfType(referenceExpression, JSFunction.class); if (fun != null) { - final String typeString = fun.getReturnTypeString(); + String typeString = fun.getReturnTypeString(); if (typeString != null) { type = typeString; @@ -384,7 +384,8 @@ else if (parent instanceof JSAssignmentExpression assignment) { } String expressionType = elementForWhichExprTypeToEvaluate instanceof JSExpression expression - ? JSResolveUtil.getExpressionType(expression, file) : null; + ? JSResolveUtil.getExpressionType(expression, file) + : null; if (expressionType != null && !expressionType.equals("*")) { type = expressionType; } @@ -398,17 +399,19 @@ else if (parent instanceof JSAssignmentExpression assignment) { } @Nullable - protected static JSClass findClass(PsiFile file, final PsiElement anchorParent) { - return anchorParent instanceof JSClass jsClass ? jsClass - : file instanceof JSFile jsFile ? JSResolveUtil.getXmlBackedClass(jsFile) + protected static JSClass findClass(PsiFile file, PsiElement anchorParent) { + return anchorParent instanceof JSClass jsClass + ? jsClass + : file instanceof JSFile jsFile + ? JSResolveUtil.getXmlBackedClass(jsFile) : null; } public static class MyExpression extends Expression { - TextResult result; + private TextResult result; private final String myVar1; - public MyExpression(final String var1) { + public MyExpression(String var1) { myVar1 = var1; result = new TextResult(myVar1); } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/inspections/qucikFixes/CreateJSFunctionOrMethodFix.java b/base-impl/src/main/java/com/intellij/lang/javascript/inspections/qucikFixes/CreateJSFunctionOrMethodFix.java index e2f59f3a..ebe1f0a2 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/inspections/qucikFixes/CreateJSFunctionOrMethodFix.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/inspections/qucikFixes/CreateJSFunctionOrMethodFix.java @@ -57,6 +57,7 @@ protected void writeFunctionAndName(Template template, String createdMethodName, } @Override + @RequiredReadAction protected void addParameters( Template template, JSReferenceExpression referenceExpression, @@ -95,6 +96,7 @@ protected void addParameters( } @Override + @RequiredReadAction protected void addReturnType(Template template, JSReferenceExpression referenceExpression, PsiFile file) { guessTypeAndAddTemplateVariable(template, referenceExpression, file); } diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSPsiImplUtils.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSPsiImplUtils.java index 7aca2c90..6227bcf3 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSPsiImplUtils.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSPsiImplUtils.java @@ -99,7 +99,7 @@ public static ASTNode getTypeExpressionFromDeclaration(JSNamedElement element) { ASTNode myNode = element.getNode(); ASTNode node = myNode != null ? myNode.findChildByType(JSTokenTypes.COLON) : null; - return node != null ? myNode.findChildByType(JSDocumentationUtils.ourTypeFilter, node) : null; + return node != null ? myNode.findChildByType(JSDocumentationUtils.TYPE_FILTER, node) : null; } @Deprecated From e988a97517e2cb70839400c7b09fb415668e7e47 Mon Sep 17 00:00:00 2001 From: UNV Date: Sun, 12 Jan 2025 22:14:17 +0300 Subject: [PATCH 102/150] Refactoring inspections. --- .../impl/inspections/CreateClassDialog.java | 21 +- .../CreateClassOrInterfaceAction.java | 33 +- .../JSDeprecatedSymbolsInspection.java | 30 +- .../JSDuplicatedDeclarationInspection.java | 117 ++++--- .../impl/inspections/JSInspection.java | 14 +- .../JSUndeclaredVariableInspection.java | 101 +++--- .../JSUnresolvedFunctionInspection.java | 317 +++++++++--------- .../JSUnresolvedVariableInspection.java | 114 ++++--- .../JSUntypedDeclarationInspection.java | 57 ++-- .../JSUnusedLocalSymbolsInspection.java | 153 ++++----- 10 files changed, 471 insertions(+), 486 deletions(-) diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/CreateClassDialog.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/CreateClassDialog.java index dda34560..d3dbd880 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/CreateClassDialog.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/CreateClassDialog.java @@ -19,10 +19,11 @@ import com.intellij.lang.javascript.psi.JSExpressionStatement; import com.intellij.lang.javascript.psi.JSReferenceExpression; import com.intellij.lang.javascript.psi.impl.JSChangeUtil; +import consulo.annotation.access.RequiredReadAction; import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.ast.ASTNode; -import consulo.language.psi.PsiElement; import consulo.project.Project; +import consulo.ui.annotation.RequiredUIAccess; import consulo.ui.ex.awt.DialogWrapper; import consulo.ui.ex.awt.event.DocumentAdapter; @@ -31,8 +32,7 @@ /** * @author Maxim.Mossienko - * Date: Jun 9, 2008 - * Time: 7:36:22 PM + * @since 2008-06-09 */ class CreateClassDialog extends DialogWrapper { private JPanel myPanel; @@ -47,7 +47,8 @@ protected CreateClassDialog(final Project project, String className, String pack myPackageName.getDocument().addDocumentListener(new DocumentAdapter() { @Override - protected void textChanged(final DocumentEvent e) { + @RequiredReadAction + protected void textChanged(DocumentEvent e) { String text = getPackageName(); boolean enabled; if (text.length() == 0) { @@ -55,12 +56,11 @@ protected void textChanged(final DocumentEvent e) { } else { ASTNode node = JSChangeUtil.createJSTreeFromText(project, text); - PsiElement elt; - enabled = node != null && - (elt = node.getPsi()) instanceof JSExpressionStatement && - (elt = ((JSExpressionStatement)elt).getExpression()) instanceof JSReferenceExpression && - ((JSReferenceExpression)elt).getReferencedName() != null && - elt.textMatches(text); + enabled = node != null + && node.getPsi() instanceof JSExpressionStatement expressionStatement + && expressionStatement.getExpression() instanceof JSReferenceExpression refExpr + && refExpr.getReferencedName() != null + && refExpr.textMatches(text); } getOKAction().setEnabled(enabled); } @@ -78,6 +78,7 @@ protected JComponent createCenterPanel() { } @Override + @RequiredUIAccess public JComponent getPreferredFocusedComponent() { return myPackageName; } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/CreateClassOrInterfaceAction.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/CreateClassOrInterfaceAction.java index b3a80625..ff20b657 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/CreateClassOrInterfaceAction.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/CreateClassOrInterfaceAction.java @@ -20,7 +20,7 @@ import com.intellij.lang.javascript.impl.flex.ImportUtils; import com.intellij.lang.javascript.psi.JSReferenceExpression; import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; -import consulo.application.ApplicationManager; +import consulo.application.Application; import consulo.fileTemplate.FileTemplate; import consulo.fileTemplate.FileTemplateManager; import consulo.fileTemplate.FileTemplateUtil; @@ -36,22 +36,18 @@ import consulo.module.Module; import consulo.module.content.ModuleRootManager; import consulo.project.Project; +import consulo.ui.annotation.RequiredUIAccess; import consulo.ui.ex.awt.DialogWrapper; import consulo.util.lang.text.StringTokenizer; import consulo.virtualFileSystem.VirtualFile; import consulo.virtualFileSystem.util.VirtualFileUtil; -import org.jetbrains.annotations.NonNls; - import jakarta.annotation.Nonnull; import java.util.Properties; /** - * Created by IntelliJ IDEA. - * User: Maxim.Mossienko - * Date: 11.02.2009 - * Time: 14:01:34 - * To change this template use File | Settings | File Templates. + * @author Maxim.Mossienko + * @since 2009-02-11 */ class CreateClassOrInterfaceAction implements LocalQuickFix { private final String classNameToCreate; @@ -80,17 +76,18 @@ public String getFamilyName() { } @Override - public void applyFix(@Nonnull final Project project, @Nonnull final ProblemDescriptor descriptor) { + @RequiredUIAccess + public void applyFix(@Nonnull Project project, @Nonnull ProblemDescriptor descriptor) { PsiFile contextFile = myContext.getContainingFile(); - final PsiElement context = contextFile.getContext(); + PsiElement context = contextFile.getContext(); if (context != null) { contextFile = context.getContainingFile(); } packageName = JSResolveUtil.getExpectedPackageNameFromFile(contextFile.getVirtualFile(), project, false); - if (!ApplicationManager.getApplication().isUnitTestMode()) { - final CreateClassDialog dialog = new CreateClassDialog(project, classNameToCreate, packageName, myIsInterface); + if (!Application.get().isUnitTestMode()) { + CreateClassDialog dialog = new CreateClassDialog(project, classNameToCreate, packageName, myIsInterface); dialog.show(); if (dialog.getExitCode() != DialogWrapper.OK_EXIT_CODE) { return; @@ -102,19 +99,19 @@ public void applyFix(@Nonnull final Project project, @Nonnull final ProblemDescr } final PsiFile contextFile1 = contextFile; - ApplicationManager.getApplication().runWriteAction(new Runnable() { + Application.get().runWriteAction(new Runnable() { @Override public void run() { try { - final FileTemplate template = FileTemplateManager.getInstance().getTemplate( + FileTemplate template = FileTemplateManager.getInstance().getTemplate( myIsInterface ? JavaScriptSupportLoader.ACTION_SCRIPT_INTERFACE_TEMPLATE_NAME : JavaScriptSupportLoader.ACTION_SCRIPT_CLASS_TEMPLATE_NAME ); - @NonNls final String fileName = classNameToCreate + ".as"; - final Properties props = new Properties(); + String fileName = classNameToCreate + ".as"; + Properties props = new Properties(); props.setProperty(FileTemplate.ATTRIBUTE_NAME, classNameToCreate); - final Module element = ModuleUtilCore.findModuleForPsiElement(contextFile1); + Module element = ModuleUtilCore.findModuleForPsiElement(contextFile1); VirtualFile base = ModuleRootManager.getInstance(element).getSourceRoots()[0]; VirtualFile relativeFile = VirtualFileUtil.findRelativeFile(packageName, base); @@ -133,7 +130,7 @@ public void run() { assert relativeFile != null; props.setProperty(FileTemplate.ATTRIBUTE_PACKAGE_NAME, packageName); - final PsiDirectory psiDirectory = PsiManager.getInstance(project).findDirectory(relativeFile); + PsiDirectory psiDirectory = PsiManager.getInstance(project).findDirectory(relativeFile); assert psiDirectory != null; FileTemplateUtil.createFromTemplate(template, fileName, props, psiDirectory); diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSDeprecatedSymbolsInspection.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSDeprecatedSymbolsInspection.java index de077812..1a425404 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSDeprecatedSymbolsInspection.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSDeprecatedSymbolsInspection.java @@ -21,39 +21,36 @@ import com.intellij.lang.javascript.psi.JSDefinitionExpression; import com.intellij.lang.javascript.psi.JSElementVisitor; import com.intellij.lang.javascript.psi.JSReferenceExpression; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.editor.inspection.ProblemHighlightType; import consulo.language.editor.inspection.ProblemsHolder; import consulo.language.psi.PsiElement; import consulo.language.psi.ResolveResult; -import org.jetbrains.annotations.NonNls; - import jakarta.annotation.Nonnull; /** - * @by Maxim.Mossienko + * @author Maxim.Mossienko */ @ExtensionImpl public class JSDeprecatedSymbolsInspection extends JSInspection { - @NonNls private static final String SHORT_NAME = "JSDeprecatedSymbols"; - @Override @Nonnull + @Override public String getGroupDisplayName() { return "General"; } - @Override @Nonnull + @Override public String getDisplayName() { return JavaScriptLocalize.jsDeprecatedSymbolsInspectionName().get(); } - @Override @Nonnull - @NonNls + @Override public String getShortName() { return SHORT_NAME; } @@ -62,18 +59,19 @@ public String getShortName() { protected JSElementVisitor createVisitor(final ProblemsHolder holder) { return new JSElementVisitor() { @Override - public void visitJSReferenceExpression(final JSReferenceExpression node) { + @RequiredReadAction + public void visitJSReferenceExpression(@Nonnull JSReferenceExpression node) { for (ResolveResult r : node.multiResolve(false)) { - final PsiElement element = r.getElement(); - if ((element instanceof JSDefinitionExpression && element.getParent() instanceof JSAssignmentExpression) || element == node.getParent()) { + PsiElement element = r.getElement(); + if (element instanceof JSDefinitionExpression definition && definition.getParent() instanceof JSAssignmentExpression + || element == node.getParent()) { continue; } if (JSDocumentationUtils.isDeprecated(element)) { - holder.registerProblem( - node.getReferenceNameElement(), - JavaScriptLocalize.javascriptDeprecatedSymbolUsedNameMessage().get(), - ProblemHighlightType.LIKE_DEPRECATED - ); + holder.newProblem(JavaScriptLocalize.javascriptDeprecatedSymbolUsedNameMessage()) + .range(node.getReferenceNameElement()) + .highlightType(ProblemHighlightType.LIKE_DEPRECATED) + .create(); break; } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSDuplicatedDeclarationInspection.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSDuplicatedDeclarationInspection.java index df798c6d..be739b32 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSDuplicatedDeclarationInspection.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSDuplicatedDeclarationInspection.java @@ -22,6 +22,7 @@ import com.intellij.lang.javascript.psi.impl.JSEmbeddedContentImpl; import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; import com.intellij.lang.javascript.psi.resolve.ResolveProcessor; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.editor.inspection.ProblemHighlightType; @@ -33,7 +34,6 @@ import consulo.language.psi.PsiWhiteSpace; import consulo.language.psi.resolve.ResolveState; import consulo.language.psi.util.PsiTreeUtil; -import org.jetbrains.annotations.NonNls; import jakarta.annotation.Nonnull; @@ -42,24 +42,22 @@ */ @ExtensionImpl public class JSDuplicatedDeclarationInspection extends JSInspection { - @NonNls private static final String SHORT_NAME = "JSDuplicatedDeclaration"; - @Override @Nonnull + @Override public String getGroupDisplayName() { return "General"; } - @Override @Nonnull + @Override public String getDisplayName() { return JavaScriptLocalize.jsDuplicatedDeclarationInspectionName().get(); } - @Override @Nonnull - @NonNls + @Override public String getShortName() { return SHORT_NAME; } @@ -68,43 +66,53 @@ public String getShortName() { protected JSElementVisitor createVisitor(final ProblemsHolder holder) { return new JSElementVisitor() { @Override - public void visitJSClass(final JSClass node) { - final String name = node.getName(); + @RequiredReadAction + public void visitJSClass(@Nonnull JSClass node) { + String name = node.getName(); if (name == null) { return; } - final PsiElement nameIdentifier = node.getNameIdentifier(); + PsiElement nameIdentifier = node.getNameIdentifier(); checkForDuplicateDeclaration(name, node, nameIdentifier); } @Override - public void visitJSFunctionDeclaration(final JSFunction node) { - final String name = node.getName(); + @RequiredReadAction + public void visitJSFunctionDeclaration(@Nonnull JSFunction node) { + String name = node.getName(); if (name == null) { return; } - final PsiElement nameIdentifier = node.getNameIdentifier(); + PsiElement nameIdentifier = node.getNameIdentifier(); checkForDuplicateDeclaration(name, node, nameIdentifier); } - private void checkForDuplicateDeclaration(final String name, final PsiElement decl, final PsiElement nameIdentifier) { - PsiElement scope = - PsiTreeUtil.getParentOfType(decl, JSFunction.class, JSFile.class, JSEmbeddedContentImpl.class, JSClass.class, - JSObjectLiteralExpression.class, JSPackageStatement.class, PsiFile.class - ); + @RequiredReadAction + private void checkForDuplicateDeclaration(String name, PsiElement decl, PsiElement nameIdentifier) { + PsiElement scope = PsiTreeUtil.getParentOfType( + decl, + JSFunction.class, + JSFile.class, + JSEmbeddedContentImpl.class, + JSClass.class, + JSObjectLiteralExpression.class, + JSPackageStatement.class, + PsiFile.class + ); if (scope instanceof JSPackageStatement) { return; // dedicated inspection } - final PsiElement originalScope = scope; + PsiElement originalScope = scope; if (scope instanceof JSFile && scope.getContext() != null) { scope = scope.getContext().getContainingFile(); } - final ResolveProcessor processor = new ResolveProcessor(name, scope) { + ResolveProcessor processor = new ResolveProcessor(name, scope) { @Override - public boolean execute(PsiElement element, ResolveState state) { + @RequiredReadAction + public boolean execute(@Nonnull PsiElement element, ResolveState state) { if (element == decl) { return true; } @@ -113,25 +121,24 @@ public boolean execute(PsiElement element, ResolveState state) { return false; } - if (element instanceof JSFunction && decl instanceof JSFunction) { - final JSFunction declFunction = (JSFunction)decl; - final JSFunction elementFunction = (JSFunction)element; - if ((declFunction.isGetProperty() && elementFunction.isSetProperty()) || (declFunction.isSetProperty() && elementFunction.isGetProperty())) { + if (element instanceof JSFunction elementFunction && decl instanceof JSFunction declFunction) { + if ((declFunction.isGetProperty() && elementFunction.isSetProperty()) + || (declFunction.isSetProperty() && elementFunction.isGetProperty())) { return true; } } - if (element instanceof JSFunction && - decl instanceof JSClass && element.getParent() == decl) { + if (element instanceof JSFunction function && decl instanceof JSClass jsClass && function.getParent() == jsClass) { return true; } - if (element instanceof JSAttributeListOwner && decl instanceof JSAttributeListOwner) { - JSAttributeList attrList = ((JSAttributeListOwner)element).getAttributeList(); - JSAttributeList attrList2 = ((JSAttributeListOwner)decl).getAttributeList(); + if (element instanceof JSAttributeListOwner elementAttrListOwner + && decl instanceof JSAttributeListOwner declAttrListOwner) { + JSAttributeList attrList = elementAttrListOwner.getAttributeList(); + JSAttributeList attrList2 = declAttrListOwner.getAttributeList(); if (attrList != null && attrList2 != null) { - final String ns = attrList.getNamespace(); - final String ns2 = attrList2.getNamespace(); + String ns = attrList.getNamespace(); + String ns2 = attrList2.getNamespace(); if ((ns != null && !ns.equals(ns2)) || ns2 != null && !ns2.equals(ns) || @@ -139,12 +146,13 @@ public boolean execute(PsiElement element, ResolveState state) { return true; } } - else if ((attrList != null && attrList.getNamespace() != null) || (attrList2 != null && attrList2.getNamespace() != null)) { + else if ((attrList != null && attrList.getNamespace() != null) + || (attrList2 != null && attrList2.getNamespace() != null)) { return true; } - final boolean notStatic2 = attrList2 == null || !attrList2.hasModifier(JSAttributeList.ModifierType.STATIC); - final boolean notStatic = attrList == null || !attrList.hasModifier(JSAttributeList.ModifierType.STATIC); + boolean notStatic2 = attrList2 == null || !attrList2.hasModifier(JSAttributeList.ModifierType.STATIC); + boolean notStatic = attrList == null || !attrList.hasModifier(JSAttributeList.ModifierType.STATIC); if ((notStatic2 && !notStatic) || (notStatic && !notStatic2)) { return true; } @@ -154,11 +162,11 @@ else if ((attrList != null && attrList.getNamespace() != null) || (attrList2 != }; PsiElement parent = JSResolveUtil.findParent(decl); - if (parent instanceof JSClass) { - processor.configureClassScope((JSClass)parent); + if (parent instanceof JSClass jsClass) { + processor.configureClassScope(jsClass); } - if (decl instanceof JSFunction || decl instanceof JSVariable) { + if (decl instanceof JSFunction function || decl instanceof JSVariable) { JSAttributeList attrList = ((JSAttributeListOwner)decl).getAttributeList(); processor.setProcessStatics(attrList != null && attrList.hasModifier(JSAttributeList.ModifierType.STATIC)); } @@ -167,18 +175,21 @@ else if ((attrList != null && attrList.getNamespace() != null) || (attrList2 != JSResolveUtil.treeWalkUp(processor, decl, null, decl, scope); if (processor.getResult() != null && processor.getResult() != scope) { - holder.registerProblem( - nameIdentifier, - JavaScriptLocalize.javascriptValidationMessageDuplicateDeclaration().get(), - originalScope.getContainingFile().getLanguage() == JavaScriptSupportLoader.ECMA_SCRIPT_L4 - ? ProblemHighlightType.ERROR : ProblemHighlightType.GENERIC_ERROR_OR_WARNING - ); + holder.newProblem(JavaScriptLocalize.javascriptValidationMessageDuplicateDeclaration()) + .range(nameIdentifier) + .highlightType( + originalScope.getContainingFile().getLanguage() == JavaScriptSupportLoader.ECMA_SCRIPT_L4 + ? ProblemHighlightType.ERROR + : ProblemHighlightType.GENERIC_ERROR_OR_WARNING + ) + .create(); } } @Override - public void visitJSProperty(final JSProperty node) { - final String name = node.getName(); + @RequiredReadAction + public void visitJSProperty(@Nonnull JSProperty node) { + String name = node.getName(); if (name == null) { return; } @@ -186,19 +197,19 @@ public void visitJSProperty(final JSProperty node) { } @Override - public void visitJSVariable(final JSVariable var) { - final PsiElement nameIdentifier = var.getNameIdentifier(); - final PsiElement next = nameIdentifier != null ? nameIdentifier.getNextSibling() : null; - final String name = nameIdentifier != null ? nameIdentifier.getText() : null; + @RequiredReadAction + public void visitJSVariable(@Nonnull JSVariable var) { + PsiElement nameIdentifier = var.getNameIdentifier(); + PsiElement next = nameIdentifier != null ? nameIdentifier.getNextSibling() : null; + String name = nameIdentifier != null ? nameIdentifier.getText() : null; // Actully skip outer language elements - if (name != null && (next == null || - PsiUtilCore.getElementType(next) instanceof JSElementType || - next instanceof PsiWhiteSpace)) { + if (name != null && (next == null + || PsiUtilCore.getElementType(next) instanceof JSElementType + || next instanceof PsiWhiteSpace)) { checkForDuplicateDeclaration(name, var, nameIdentifier); } } - }; } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSInspection.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSInspection.java index 33d7757c..3e304617 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSInspection.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSInspection.java @@ -42,10 +42,10 @@ public abstract class JSInspection extends LocalInspectionTool implements CustomSuppressableInspectionTool { protected boolean myOnTheFly; - protected abstract JSElementVisitor createVisitor(final ProblemsHolder holder); + protected abstract JSElementVisitor createVisitor(ProblemsHolder holder); - @Override @Nonnull + @Override public PsiElementVisitor buildVisitor(@Nonnull ProblemsHolder holder, boolean isOnTheFly) { myOnTheFly = isOnTheFly; return createVisitor(holder); @@ -62,27 +62,27 @@ public Language getLanguage() { return JavaScriptLanguage.INSTANCE; } - @Override @Nonnull + @Override public HighlightDisplayLevel getDefaultLevel() { return HighlightDisplayLevel.WEAK_WARNING; } @Override - public PsiNamedElement getProblemElement(final PsiElement psiElement) { + public PsiNamedElement getProblemElement(PsiElement psiElement) { return PsiTreeUtil.getNonStrictParentOfType(psiElement, JSNamedElement.class); } + @Nonnull @Override - @Nullable - public SuppressIntentionAction[] getSuppressActions(final PsiElement element) { + public SuppressIntentionAction[] getSuppressActions(PsiElement element) { return new SuppressIntentionAction[]{ /* new AddNoInspectionCommentFix(HighlightDisplayKey.find(getShortName()), JSSuppressionHolder.class),*/ }; } @Override - public boolean isSuppressedFor(final PsiElement element) { + public boolean isSuppressedFor(@Nonnull PsiElement element) { return SuppressionUtil.isSuppressedInStatement(element, getID(), JSSuppressionHolder.class); } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUndeclaredVariableInspection.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUndeclaredVariableInspection.java index ea38b220..0d7032fb 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUndeclaredVariableInspection.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUndeclaredVariableInspection.java @@ -19,16 +19,14 @@ import com.intellij.lang.javascript.JSTokenTypes; import com.intellij.lang.javascript.psi.*; import com.intellij.lang.javascript.psi.util.JSUtils; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.document.Document; import consulo.document.util.TextRange; import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.codeStyle.CodeStyleManager; import consulo.language.editor.FileModificationService; -import consulo.language.editor.inspection.LocalQuickFix; -import consulo.language.editor.inspection.ProblemDescriptor; -import consulo.language.editor.inspection.ProblemHighlightType; -import consulo.language.editor.inspection.ProblemsHolder; +import consulo.language.editor.inspection.*; import consulo.language.psi.PsiDocumentManager; import consulo.language.psi.PsiElement; import consulo.language.psi.PsiFile; @@ -36,36 +34,30 @@ import consulo.language.psi.util.PsiTreeUtil; import consulo.language.util.IncorrectOperationException; import consulo.project.Project; -import org.jetbrains.annotations.NonNls; import jakarta.annotation.Nonnull; -import java.util.LinkedList; -import java.util.List; - /** * @author Maxim.Mossienko */ @ExtensionImpl public class JSUndeclaredVariableInspection extends JSInspection { - @NonNls public static final String SHORT_NAME = "JSUndeclaredVariable"; - @Override @Nonnull + @Override public String getGroupDisplayName() { return "General"; } - @Override @Nonnull + @Override public String getDisplayName() { return JavaScriptLocalize.jsUndeclaredVariableInspectionName().get(); } - @Override @Nonnull - @NonNls + @Override public String getShortName() { return SHORT_NAME; } @@ -74,42 +66,40 @@ public String getShortName() { protected JSElementVisitor createVisitor(final ProblemsHolder holder) { return new JSElementVisitor() { @Override - public void visitJSReferenceExpression(final JSReferenceExpression node) { - final PsiElement parentElement = node.getParent(); + public void visitJSReferenceExpression(@Nonnull JSReferenceExpression node) { + PsiElement parentElement = node.getParent(); - if (!(parentElement instanceof JSCallExpression) && node.shouldCheckReferences() && node.getQualifier() == null && parentElement instanceof - JSDefinitionExpression) { - final JSSourceElement element = PsiTreeUtil.getParentOfType(node, JSWithStatement.class, JSFunction.class); + if (!(parentElement instanceof JSCallExpression) && node.shouldCheckReferences() + && node.getQualifier() == null && parentElement instanceof JSDefinitionExpression) { + JSSourceElement element = PsiTreeUtil.getParentOfType(node, JSWithStatement.class, JSFunction.class); if (!(element instanceof JSWithStatement)) { boolean varReferenceWithoutVar = true; - final ResolveResult[] resolveResults = node.multiResolve(false); + ResolveResult[] resolveResults = node.multiResolve(false); for (ResolveResult r : resolveResults) { - final PsiElement resolveResult = r.getElement(); - if (resolveResult instanceof JSVariable || - resolveResult instanceof JSFunction) { + PsiElement resolveResult = r.getElement(); + if (resolveResult instanceof JSVariable + || resolveResult instanceof JSFunction) { varReferenceWithoutVar = false; break; } } if (varReferenceWithoutVar) { - final PsiElement nameIdentifier = node.getReferenceNameElement(); + PsiElement nameIdentifier = node.getReferenceNameElement(); if (nameIdentifier != null) { - final List fixes = new LinkedList(); + ProblemBuilder problemBuilder = + holder.newProblem(JavaScriptLocalize.javascriptUndeclaredVariableNameMessage(node.getReferencedName())) + .range(nameIdentifier) + .highlightType(ProblemHighlightType.GENERIC_ERROR_OR_WARNING); if (myOnTheFly) { - fixes.add(new DeclareJSVariableIntentionAction(node)); + problemBuilder.withFixes(new DeclareJSVariableIntentionAction(node)); } - holder.registerProblem( - nameIdentifier, - JavaScriptLocalize.javascriptUndeclaredVariableNameMessage(node.getReferencedName()).get(), - ProblemHighlightType.GENERIC_ERROR_OR_WARNING, - !fixes.isEmpty() ? fixes.toArray(new LocalQuickFix[fixes.size()]) : null - ); + problemBuilder.create(); } } } @@ -119,14 +109,15 @@ public void visitJSReferenceExpression(final JSReferenceExpression node) { }; } - private static boolean isImplicitlyDeclared(final JSReferenceExpression node, final PsiElement parentElement) { - if (parentElement instanceof JSForInStatement) { - final JSExpression varExpression = ((JSForInStatement)parentElement).getVariableExpression(); + @RequiredReadAction + private static boolean isImplicitlyDeclared(JSReferenceExpression node, PsiElement parentElement) { + if (parentElement instanceof JSForInStatement forInStatement) { + JSExpression varExpression = forInStatement.getVariableExpression(); return PsiTreeUtil.findCommonParent(varExpression, node) == varExpression; } - else if (parentElement instanceof JSForStatement) { - final JSExpression varExpression = ((JSForStatement)parentElement).getInitialization(); + else if (parentElement instanceof JSForStatement forStatement) { + JSExpression varExpression = forStatement.getInitialization(); return PsiTreeUtil.findCommonParent(varExpression, node) == varExpression; } @@ -135,7 +126,6 @@ else if (parentElement instanceof JSForStatement) { private static class DeclareJSVariableIntentionAction implements LocalQuickFix { private final JSReferenceExpression myReferenceExpression; - @NonNls private static final String VAR_STATEMENT_START = "var "; private final PsiFile myFile; @@ -144,19 +134,20 @@ private static class DeclareJSVariableIntentionAction implements LocalQuickFix { myFile = expression.getContainingFile(); } - @Override @Nonnull + @Override public String getName() { return JavaScriptLocalize.javascriptDeclareVariableIntentionName(myReferenceExpression.getReferencedName()).get(); } - @Override @Nonnull + @Override public String getFamilyName() { return JavaScriptLocalize.javascriptCreateVariableIntentionFamily().get(); } @Override + @RequiredReadAction public void applyFix(@Nonnull Project project, @Nonnull ProblemDescriptor descriptor) { if (!FileModificationService.getInstance().prepareFileForWrite(myFile)) { return; @@ -167,13 +158,13 @@ public void applyFix(@Nonnull Project project, @Nonnull ProblemDescriptor descri if (implicitlyDeclared) { anchor = myReferenceExpression; - final JSStatement statement = PsiTreeUtil.getParentOfType(anchor, JSForStatement.class, JSStatement.class); + JSStatement statement = PsiTreeUtil.getParentOfType(anchor, JSForStatement.class, JSStatement.class); - if (statement instanceof JSForStatement) { - final JSExpression initialization = ((JSForStatement)statement).getInitialization(); + if (statement instanceof JSForStatement forStatement) { + JSExpression initialization = forStatement.getInitialization(); - if (initialization instanceof JSBinaryExpression && ((JSBinaryExpression)initialization).getOperationSign() == JSTokenTypes.COMMA) { - anchor = ((JSAssignmentExpression)((JSBinaryExpression)initialization).getLOperand()).getLOperand(); + if (initialization instanceof JSBinaryExpression binary && binary.getOperationSign() == JSTokenTypes.COMMA) { + anchor = ((JSAssignmentExpression)binary.getLOperand()).getLOperand(); } } } @@ -187,8 +178,11 @@ public void applyFix(@Nonnull Project project, @Nonnull ProblemDescriptor descri while (parent instanceof JSBlockStatement || parent instanceof JSIfStatement || parent instanceof JSLoopStatement) { PsiElement newAnchor = parent.getParent(); - if (newAnchor instanceof JSIfStatement || newAnchor instanceof JSWithStatement || newAnchor instanceof JSLoopStatement || - newAnchor instanceof JSTryStatement || newAnchor instanceof JSSwitchStatement) { + if (newAnchor instanceof JSIfStatement + || newAnchor instanceof JSWithStatement + || newAnchor instanceof JSLoopStatement + || newAnchor instanceof JSTryStatement + || newAnchor instanceof JSSwitchStatement) { anchor = newAnchor; parent = anchor.getParent(); anchorChanged = true; @@ -204,16 +198,15 @@ else if (newAnchor instanceof JSFile) { } } - final TextRange textRange = anchor.getTextRange(); - final int startOffset = textRange.getStartOffset(); - @NonNls StringBuilder builder = new StringBuilder(); + TextRange textRange = anchor.getTextRange(); + int startOffset = textRange.getStartOffset(); + StringBuilder builder = new StringBuilder(); builder.append(VAR_STATEMENT_START); - if (anchor instanceof JSExpressionStatement) { - JSExpression expr = ((JSExpressionStatement)anchor).getExpression(); - if (expr instanceof JSAssignmentExpression && ((JSAssignmentExpression)expr).getOperationSign() != JSTokenTypes.EQ) { - anchorChanged = true; - } + if (anchor instanceof JSExpressionStatement expressionStatement + && expressionStatement.getExpression() instanceof JSAssignmentExpression assignment + && assignment.getOperationSign() != JSTokenTypes.EQ) { + anchorChanged = true; } if ((anchorChanged || !(anchor instanceof JSExpressionStatement)) && !implicitlyDeclared) { diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnresolvedFunctionInspection.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnresolvedFunctionInspection.java index 2018dbed..9043095b 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnresolvedFunctionInspection.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnresolvedFunctionInspection.java @@ -26,6 +26,7 @@ import com.intellij.lang.javascript.psi.resolve.JSImportHandlingUtil; import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; import com.intellij.lang.javascript.psi.util.JSUtils; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.codeEditor.Editor; import consulo.javascript.ide.codeInsight.JavaScriptQuickFixFactory; @@ -46,12 +47,10 @@ import consulo.localize.LocalizeValue; import consulo.project.Project; import consulo.xml.ide.highlighter.XmlFileType; -import jakarta.annotation.Nullable; -import org.jetbrains.annotations.NonNls; - import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; -import java.util.LinkedList; +import java.util.ArrayList; import java.util.List; import java.util.function.BiFunction; @@ -60,24 +59,22 @@ */ @ExtensionImpl public class JSUnresolvedFunctionInspection extends JSInspection { - @NonNls private static final String SHORT_NAME = "JSUnresolvedFunction"; - @Override @Nonnull + @Override public String getGroupDisplayName() { return "General"; } - @Override @Nonnull + @Override public String getDisplayName() { return JavaScriptLocalize.jsUnresolvedFunctionInspectionName().get(); } - @Override @Nonnull - @NonNls + @Override public String getShortName() { return SHORT_NAME; } @@ -86,11 +83,10 @@ public String getShortName() { protected JSElementVisitor createVisitor(final ProblemsHolder holder) { return new JSElementVisitor() { @Override - public void visitJSCallExpression(final JSCallExpression node) { - final JSExpression methodExpression = node.getMethodExpression(); - - if (methodExpression instanceof JSReferenceExpression referenceExpression) { - final ResolveResult[] resolveResults = referenceExpression.multiResolve(false); + @RequiredReadAction + public void visitJSCallExpression(@Nonnull JSCallExpression node) { + if (node.getMethodExpression() instanceof JSReferenceExpression methodRefExpr) { + ResolveResult[] resolveResults = methodRefExpr.multiResolve(false); boolean noCompleteResolve = true; @@ -104,14 +100,11 @@ public void visitJSCallExpression(final JSCallExpression node) { if (element instanceof JSVariable variable) { String typeText = variable.getTypeString(); - if (typeText != null && !"*".equals(typeText)) { - if (!allowMemberReference(inNewExpression, typeText)) { - holder.registerProblem( - referenceExpression.getReferenceNameElement(), - JavaScriptLocalize.javascriptTermDoesNotEvaluateToFunction().get(), - getHighlightTypeForTypeOrSignatureProblem(node) - ); - } + if (typeText != null && !"*".equals(typeText) && !allowMemberReference(inNewExpression, typeText)) { + holder.newProblem(JavaScriptLocalize.javascriptTermDoesNotEvaluateToFunction()) + .range(methodRefExpr.getReferenceNameElement()) + .highlightType(getHighlightTypeForTypeOrSignatureProblem(node)) + .create(); } } else if (element instanceof JSFunction function && function.isGetProperty()) { @@ -130,27 +123,27 @@ else if (element instanceof JSFunction function && function.isGetProperty()) { }; } - holder.registerProblem( - ((JSReferenceExpression)methodExpression).getReferenceNameElement(), - JavaScriptLocalize.javascriptTermDoesNotEvaluateToFunction2().get(), - getHighlightTypeForTypeOrSignatureProblem(node), - fixes - ); + holder.newProblem(JavaScriptLocalize.javascriptTermDoesNotEvaluateToFunction2()) + .range(methodRefExpr.getReferenceNameElement()) + .highlightType(getHighlightTypeForTypeOrSignatureProblem(node)) + .withFixes(fixes) + .create(); } } break; } } - JavaScriptQuickFixFactory javaScriptQuickFixFactory = JavaScriptQuickFixFactory.byElement(referenceExpression); + JavaScriptQuickFixFactory javaScriptQuickFixFactory = JavaScriptQuickFixFactory.byElement(methodRefExpr); if (resolveResults.length == 0 || noCompleteResolve) { - final JSExpression qualifier = referenceExpression.getQualifier(); - final List quickFixes = new LinkedList(); - final String refName = referenceExpression.getReferencedName(); + JSExpression qualifier = methodRefExpr.getQualifier(); + List quickFixes = new ArrayList<>(); + String refName = methodRefExpr.getReferencedName(); - if (myOnTheFly && ((qualifier == null || qualifier instanceof JSThisExpression) || JSUtils.isLHSExpression(qualifier))) { - if (methodExpression.getParent() instanceof JSCallExpression) { - boolean simpleJs = !JavaScriptVersionUtil.containsFeature(referenceExpression, JavaScriptFeature.CLASS); + if (myOnTheFly && ((qualifier == null || qualifier instanceof JSThisExpression) + || JSUtils.isLHSExpression(qualifier))) { + if (node.getMethodExpression().getParent() instanceof JSCallExpression) { + boolean simpleJs = !JavaScriptVersionUtil.containsFeature(methodRefExpr, JavaScriptFeature.CLASS); if (!inNewExpression || simpleJs) { quickFixes.add(javaScriptQuickFixFactory.createFunctionOrMethodFix(refName, true)); @@ -161,67 +154,61 @@ else if (element instanceof JSFunction function && function.isGetProperty()) { quickFixes.add(javaScriptQuickFixFactory.createFunctionOrMethodFix(refName, false)); } else { - quickFixes.add(new AddImportECMAScriptClassOrFunctionAction(null, referenceExpression)); + quickFixes.add(new AddImportECMAScriptClassOrFunctionAction(null, methodRefExpr)); if (inNewExpression) { - quickFixes.add(new CreateClassOrInterfaceAction(referenceExpression, false)); + quickFixes.add(new CreateClassOrInterfaceAction(methodRefExpr, false)); } } } } } - final PsiElement referenceNameElement = referenceExpression.getReferenceNameElement(); + PsiElement referenceNameElement = methodRefExpr.getReferenceNameElement(); if (referenceNameElement != null) { - holder.registerProblem( - referenceNameElement, - inNewExpression - ? JavaScriptLocalize.javascriptUnresolvedTypeNameMessage(refName).get() - : JavaScriptLocalize.javascriptUnresolvedFunctionNameMessage(refName).get(), - getUnresolveReferenceHighlightType(qualifier, node), - quickFixes.size() > 0 ? quickFixes.toArray(new LocalQuickFix[quickFixes.size()]) : null - ); + holder.newProblem( + inNewExpression + ? JavaScriptLocalize.javascriptUnresolvedTypeNameMessage(refName) + : JavaScriptLocalize.javascriptUnresolvedFunctionNameMessage(refName) + ) + .range(referenceNameElement) + .highlightType(getUnresolveReferenceHighlightType(qualifier, node)) + .withFixes(quickFixes.size() > 0 ? quickFixes.toArray(new LocalQuickFix[quickFixes.size()]) : null) + .create(); } } else { PsiElement element = resolveResults[0].getElement(); if (inNewExpression && element instanceof JSClass jsClass && jsClass.isInterface()) { - final PsiElement referenceNameElement = referenceExpression.getReferenceNameElement(); - - holder.registerProblem( - referenceNameElement, - JavaScriptLocalize.javascriptInterfaceCanNotBeInstantiatedMessage().get(), - getUnresolveReferenceHighlightType(referenceExpression.getQualifier(), node) - ); + holder.newProblem(JavaScriptLocalize.javascriptInterfaceCanNotBeInstantiatedMessage()) + .range(methodRefExpr.getReferenceNameElement()) + .highlightType(getUnresolveReferenceHighlightType(methodRefExpr.getQualifier(), node)) + .create(); } else { checkFunction(node, element, holder); } } } - else if (methodExpression instanceof JSSuperExpression) { - final PsiElement element = (methodExpression.getReference()).resolve(); + else if (node.getMethodExpression() instanceof JSSuperExpression superExpression) { + PsiElement element = superExpression.getReference().resolve(); if (element != null) { checkFunction(node, element, holder); } } - else if (methodExpression instanceof JSNewExpression newExpression) { - JSExpression methodExpr = newExpression.getMethodExpression(); - - if (methodExpr instanceof JSReferenceExpression referenceExpression) { - ResolveResult[] results = referenceExpression.multiResolve(false); - PsiElement elt; - - if (results.length > 0 && ((elt = - results[0].getElement()) instanceof JSFunction && ((JSFunction)elt).isConstructor() || elt instanceof - JSClass)) { - holder.registerProblem( - methodExpression, - JavaScriptLocalize.javascriptTermDoesNotEvaluateToFunction().get(), - getUnresolveReferenceHighlightType(null, node) - ); + else if (node.getMethodExpression() instanceof JSNewExpression newExpression) { + if (newExpression.getMethodExpression() instanceof JSReferenceExpression methodRefExpr) { + ResolveResult[] results = methodRefExpr.multiResolve(false); + PsiElement element = results.length > 0 ? results[0].getElement() : null; + if (element instanceof JSFunction function && function.isConstructor() + || element instanceof JSClass) { + + holder.newProblem(JavaScriptLocalize.javascriptTermDoesNotEvaluateToFunction()) + .range(node.getMethodExpression()) + .highlightType(getUnresolveReferenceHighlightType(null, node)) + .create(); } } } @@ -230,33 +217,31 @@ else if (methodExpression instanceof JSNewExpression newExpression) { } @Override - public void visitJSAssignmentExpression(final JSAssignmentExpression node) { - final JSExpression lOperand = node.getLOperand(); + @RequiredReadAction + public void visitJSAssignmentExpression(@Nonnull JSAssignmentExpression node) { + JSExpression lOperand = node.getLOperand(); if (lOperand == null) { return; } - final JSExpression rOperand = node.getROperand(); + + JSExpression rOperand = node.getROperand(); if (rOperand == null) { return; } - final PsiFile containingFile = node.getContainingFile(); + PsiFile containingFile = node.getContainingFile(); if (containingFile.getLanguage() != JavaScriptSupportLoader.ECMA_SCRIPT_L4) { return; } String expressionType = null; - if (lOperand instanceof JSDefinitionExpression) { - JSExpression expression = ((JSDefinitionExpression)lOperand).getExpression(); - if (expression instanceof JSReferenceExpression) { - PsiElement resolve = JSResolveUtil.unwrapProxy(((JSReferenceExpression)expression).resolve()); + if (lOperand instanceof JSDefinitionExpression definition + && definition.getExpression() instanceof JSReferenceExpression refExpr + && JSResolveUtil.unwrapProxy(refExpr.resolve()) instanceof JSNamedElement namedElement) { - if (resolve instanceof JSNamedElement) { - expressionType = JSResolveUtil.getTypeFromSetAccessor((JSNamedElement)resolve); - if (expressionType != null) { - expressionType = JSImportHandlingUtil.resolveTypeName(expressionType, resolve); - } - } + expressionType = JSResolveUtil.getTypeFromSetAccessor(namedElement); + if (expressionType != null) { + expressionType = JSImportHandlingUtil.resolveTypeName(expressionType, namedElement); } } @@ -273,21 +258,22 @@ public void visitJSAssignmentExpression(final JSAssignmentExpression node) { } @Override - public void visitJSReturnStatement(final JSReturnStatement node) { - final JSExpression expression = node.getExpression(); + @RequiredReadAction + public void visitJSReturnStatement(@Nonnull JSReturnStatement node) { + JSExpression expression = node.getExpression(); if (expression == null) { return; } - final JSFunction fun = PsiTreeUtil.getParentOfType(node, JSFunction.class); + JSFunction fun = PsiTreeUtil.getParentOfType(node, JSFunction.class); if (fun == null) { return; // TODO: complain about it } - final String typeString = fun.getReturnTypeString(); + String typeString = fun.getReturnTypeString(); if (typeString == null) { return; } - final PsiFile containingFile = fun.getContainingFile(); + PsiFile containingFile = fun.getContainingFile(); if (containingFile.getLanguage() != JavaScriptSupportLoader.ECMA_SCRIPT_L4) { return; } @@ -302,8 +288,9 @@ public void visitJSReturnStatement(final JSReturnStatement node) { } @Override - public void visitJSVariable(final JSVariable node) { - final JSExpression initializer = node.getInitializer(); + @RequiredReadAction + public void visitJSVariable(@Nonnull JSVariable node) { + JSExpression initializer = node.getInitializer(); if (initializer == null) { return; } @@ -317,24 +304,24 @@ public void visitJSVariable(final JSVariable node) { } @Override - public void visitJSBinaryExpression(JSBinaryExpression node) { + @RequiredReadAction + public void visitJSBinaryExpression(@Nonnull JSBinaryExpression node) { IElementType sign = node.getOperationSign(); if (sign == JSTokenTypes.AS_KEYWORD || sign == JSTokenTypes.IS_KEYWORD) { - JSExpression rOperand = node.getROperand(); - - if (rOperand instanceof JSReferenceExpression) { - ResolveResult[] results = ((JSReferenceExpression)rOperand).multiResolve(false); + if (node.getROperand() instanceof JSReferenceExpression refExpr) { + ResolveResult[] results = refExpr.multiResolve(false); if (results.length > 0 && results[0].getElement() instanceof JSVariable) { - checkTypeIs(rOperand, rOperand, holder, "Class"); + checkTypeIs(refExpr, refExpr, holder, "Class"); } } } } @Override - public void visitJSForInStatement(JSForInStatement node) { + @RequiredReadAction + public void visitJSForInStatement(@Nonnull JSForInStatement node) { if (!node.isForEach()) { JSVarStatement statement = node.getDeclarationStatement(); @@ -347,14 +334,13 @@ public void visitJSForInStatement(JSForInStatement node) { PsiElement typeElement = var.getTypeElement(); String typeElementText; - if (typeElement != null && - "Array".equals(expressionType) && - ("Object".equals(typeElementText = typeElement.getText()) || "*".equals(typeElementText))) { - holder.registerProblem( - typeElement, - JavaScriptLocalize.javascriptIncorrectArrayTypeInForin().get(), - ProblemHighlightType.GENERIC_ERROR_OR_WARNING - ); + if (typeElement != null + && "Array".equals(expressionType) + && ("Object".equals(typeElementText = typeElement.getText()) || "*".equals(typeElementText))) { + holder.newProblem(JavaScriptLocalize.javascriptIncorrectArrayTypeInForin()) + .range(typeElement) + .highlightType(ProblemHighlightType.GENERIC_ERROR_OR_WARNING) + .create(); continue; } @@ -373,26 +359,26 @@ private static boolean allowMemberReference(boolean inNewExpression, String type return ("Class".equals(typeText) && inNewExpression) || "Function".equals(typeText); } + @RequiredReadAction private static void checkTypeIs(PsiElement type, PsiElement node, ProblemsHolder holder, String typeName) { - if (type instanceof JSReferenceExpression referenceExpression) { - String expressionType = JSResolveUtil.getQualifiedExpressionType(referenceExpression, referenceExpression.getContainingFile()); + if (type instanceof JSReferenceExpression refExpr) { + String expressionType = JSResolveUtil.getQualifiedExpressionType(refExpr, refExpr.getContainingFile()); if (!typeName.equals(expressionType)) { - holder.registerProblem( - node, - JavaScriptLocalize.javascriptIncorrectVariableTypeMismatch(typeName, expressionType).get(), - getHighlightTypeForTypeOrSignatureProblem(node) - ); + holder.newProblem(JavaScriptLocalize.javascriptIncorrectVariableTypeMismatch(typeName, expressionType)) + .range(node) + .highlightType(getHighlightTypeForTypeOrSignatureProblem(node)) + .create(); } } else if (type != null) { - holder.registerProblem( - node, - JavaScriptLocalize.javascriptIncorrectVariableTypeMismatch(typeName, type.getText()).get(), - getHighlightTypeForTypeOrSignatureProblem(node) - ); + holder.newProblem(JavaScriptLocalize.javascriptIncorrectVariableTypeMismatch(typeName, type.getText())) + .range(node) + .highlightType(getHighlightTypeForTypeOrSignatureProblem(node)) + .create(); } } + @RequiredReadAction private static void checkTypeIs(JSExpression rOperand, PsiElement node, ProblemsHolder holder, String typeName) { String expressionType = JSResolveUtil.getQualifiedExpressionType(rOperand, rOperand.getContainingFile()); if (!typeName.equals(expressionType)) { @@ -404,10 +390,11 @@ private static void checkTypeIs(JSExpression rOperand, PsiElement node, Problems } } - static ProblemHighlightType getUnresolveReferenceHighlightType(final @Nullable JSExpression qualifier, @Nonnull JSExpression node) { + @RequiredReadAction + static ProblemHighlightType getUnresolveReferenceHighlightType(@Nullable JSExpression qualifier, @Nonnull JSExpression node) { JSClass jsClass; - final PsiFile containingFile = node.getContainingFile(); + PsiFile containingFile = node.getContainingFile(); if (qualifier != null) { jsClass = JSResolveUtil.findClassOfQualifier(qualifier, containingFile); @@ -436,11 +423,11 @@ else if (resultElement instanceof JSFunction function) { jsClass = JSResolveUtil.getClassOfContext(node); } - final boolean ecmaL4File = containingFile.getLanguage() == JavaScriptSupportLoader.ECMA_SCRIPT_L4; + boolean ecmaL4File = containingFile.getLanguage() == JavaScriptSupportLoader.ECMA_SCRIPT_L4; - if (jsClass != null && ecmaL4File && - (!(jsClass instanceof XmlBackedJSClassImpl) || jsClass.getContainingFile().getFileType() == XmlFileType.INSTANCE)) { - final JSAttributeList attributeList = jsClass.getAttributeList(); + if (jsClass != null && ecmaL4File + && (!(jsClass instanceof XmlBackedJSClassImpl) || jsClass.getContainingFile().getFileType() == XmlFileType.INSTANCE)) { + JSAttributeList attributeList = jsClass.getAttributeList(); if (attributeList == null || !attributeList.hasModifier(JSAttributeList.ModifierType.DYNAMIC)) { return ProblemHighlightType.ERROR; } @@ -452,10 +439,11 @@ else if (resultElement instanceof JSFunction function) { return ProblemHighlightType.LIKE_UNKNOWN_SYMBOL; } - private static void checkFunction(final JSCallExpression node, final PsiElement element, final ProblemsHolder holder) { + @RequiredReadAction + private static void checkFunction(JSCallExpression node, PsiElement element, ProblemsHolder holder) { if (element instanceof JSFunction function) { if (!function.isGetProperty() || !"Function".equals(function.getReturnTypeString())) { - final JSParameterList parameterList = function.getParameterList(); + JSParameterList parameterList = function.getParameterList(); if (parameterList != null) { checkCallParameters(node, parameterList.getParameters(), function.isReferencesArguments(), holder); @@ -469,29 +457,31 @@ else if (element instanceof JSClass) { else { JSArgumentList argumentList = node.getArgumentList(); if (argumentList == null || argumentList.getArguments().length != 1) { - holder.registerProblem( - argumentList != null ? argumentList : node, - JavaScriptLocalize.javascriptInvalidNumberOfParameters("one").get(), - getHighlightTypeForTypeOrSignatureProblem(node) - ); + holder.newProblem(JavaScriptLocalize.javascriptInvalidNumberOfParameters("one")) + .range(argumentList != null ? argumentList : node) + .highlightType(getHighlightTypeForTypeOrSignatureProblem(node)) + .create(); } } } } + @RequiredReadAction private static void checkCallParameters( - final JSCallExpression node, final JSParameter[] parameters, boolean functionReferencesArguments, - final ProblemsHolder holder + JSCallExpression node, + JSParameter[] parameters, + boolean functionReferencesArguments, + ProblemsHolder holder ) { - final JSArgumentList argumentList = node.getArgumentList(); - final JSExpression[] expressions = argumentList != null ? argumentList.getArguments() : JSExpression.EMPTY_ARRAY; + JSArgumentList argumentList = node.getArgumentList(); + JSExpression[] expressions = argumentList != null ? argumentList.getArguments() : JSExpression.EMPTY_ARRAY; boolean lastIsRest = false; int minParameterLength = 0; int maxParameterLength = parameters.length; for (int i = 0; i < parameters.length; ++i) { - final JSParameter parameter = parameters[i]; + JSParameter parameter = parameters[i]; if (parameter.isOptional()) { break; } @@ -510,7 +500,7 @@ private static void checkCallParameters( } if ((expressions.length < minParameterLength || expressions.length > maxParameterLength) && !functionReferencesArguments) { - final String s = (lastIsRest ? minParameterLength + " or more " : String.valueOf(minParameterLength) + + String s = (lastIsRest ? minParameterLength + " or more " : String.valueOf(minParameterLength) + (minParameterLength != maxParameterLength ? ".." + maxParameterLength : "")); holder.registerProblem( argumentList != null ? argumentList : node, @@ -520,7 +510,7 @@ private static void checkCallParameters( } else { int i = 0; - final PsiFile containingFile = node.getContainingFile(); + PsiFile containingFile = node.getContainingFile(); for (JSParameter p : parameters) { if (i == expressions.length) { @@ -541,14 +531,15 @@ private static void checkCallParameters( } } + @RequiredReadAction private static void checkExpressionIsAssignableToVariable( - final JSVariable p, + JSVariable p, JSExpression expr, - final ProblemsHolder holder, - final PsiFile containingFile, - final BiFunction messageGenerator + ProblemsHolder holder, + PsiFile containingFile, + BiFunction messageGenerator ) { - final String parameterTypeResolved = JSImportHandlingUtil.resolveTypeName(p.getTypeString(), p); + String parameterTypeResolved = JSImportHandlingUtil.resolveTypeName(p.getTypeString(), p); checkExpressionIsAssignableToType( expr, parameterTypeResolved, @@ -558,28 +549,29 @@ private static void checkExpressionIsAssignableToVariable( ); } + @RequiredReadAction private static void checkExpressionIsAssignableToType( - final JSExpression expr, - final String type, - final ProblemsHolder holder, - final PsiFile containingFile, - final BiFunction messageGenerator + JSExpression expr, + String type, + ProblemsHolder holder, + PsiFile containingFile, + BiFunction messageGenerator ) { if ("*".equals(type) || type == null) { return; // optimization } - final String expressionType = JSResolveUtil.getQualifiedExpressionType(expr, containingFile); + String expressionType = JSResolveUtil.getQualifiedExpressionType(expr, containingFile); if (!JSResolveUtil.isAssignableType(type, expressionType, containingFile)) { - holder.registerProblem( - expr, - messageGenerator.apply(type, expressionType).get(), - getHighlightTypeForTypeOrSignatureProblem(expr), - new JSInsertCastFix(type) - ); + holder.newProblem(messageGenerator.apply(type, expressionType)) + .range(expr) + .highlightType(getHighlightTypeForTypeOrSignatureProblem(expr)) + .withFix(new JSInsertCastFix(type)) + .create(); } } + @RequiredReadAction private static ProblemHighlightType getHighlightTypeForTypeOrSignatureProblem(@Nonnull PsiElement node) { if (node.getContainingFile().getLanguage() == JavaScriptSupportLoader.ECMA_SCRIPT_L4) { return ProblemHighlightType.GENERIC_ERROR; @@ -590,7 +582,7 @@ private static ProblemHighlightType getHighlightTypeForTypeOrSignatureProblem(@N private static class JSInsertCastFix implements LocalQuickFix { private final String type; - public JSInsertCastFix(final String type) { + public JSInsertCastFix(String type) { this.type = type; } @@ -607,19 +599,20 @@ public String getFamilyName() { } @Override - public void applyFix(@Nonnull final Project project, @Nonnull final ProblemDescriptor descriptor) { - final PsiElement element = descriptor.getPsiElement(); - final Editor editor = BaseCreateFix.getEditor(project, element.getContainingFile()); + @RequiredReadAction + public void applyFix(@Nonnull Project project, @Nonnull ProblemDescriptor descriptor) { + PsiElement element = descriptor.getPsiElement(); + Editor editor = BaseCreateFix.getEditor(project, element.getContainingFile()); if (editor == null) { return; } - final String shortenedType = JSResolveUtil.getShortenedType(this.type, element); - final TemplateManager templateManager = TemplateManager.getInstance(project); + String shortenedType = JSResolveUtil.getShortenedType(this.type, element); + TemplateManager templateManager = TemplateManager.getInstance(project); Template template = templateManager.createTemplate("", "", shortenedType + "($SELECTION$)"); template.setToReformat(true); - final int offset = element.getTextOffset(); + int offset = element.getTextOffset(); editor.getSelectionModel().setSelection(offset, offset + element.getTextLength()); editor.getCaretModel().moveToOffset(offset); templateManager.startTemplate(editor, element.getText(), template); diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnresolvedVariableInspection.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnresolvedVariableInspection.java index 94dceb46..1765e1ac 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnresolvedVariableInspection.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnresolvedVariableInspection.java @@ -37,10 +37,8 @@ import consulo.language.psi.PsiFile; import consulo.language.psi.ResolveResult; import consulo.language.psi.util.PsiTreeUtil; -import consulo.localize.LocalizeValue; import consulo.util.lang.StringUtil; import jakarta.annotation.Nonnull; -import org.jetbrains.annotations.NonNls; import java.util.LinkedList; import java.util.List; @@ -51,24 +49,22 @@ */ @ExtensionImpl public class JSUnresolvedVariableInspection extends JSInspection { - @NonNls private static final String SHORT_NAME = "JSUnresolvedVariable"; - @Override @Nonnull + @Override public String getGroupDisplayName() { return "General"; } - @Override @Nonnull + @Override public String getDisplayName() { return JavaScriptLocalize.jsUnresolvedVariableInspectionName().get(); } - @Override @Nonnull - @NonNls + @Override public String getShortName() { return SHORT_NAME; } @@ -77,11 +73,12 @@ public String getShortName() { protected JSElementVisitor createVisitor(final ProblemsHolder holder) { return new JSElementVisitor() { @Override - public void visitJSReferenceExpression(final JSReferenceExpression node) { - final PsiElement parentElement = node.getParent(); + @RequiredReadAction + public void visitJSReferenceExpression(@Nonnull JSReferenceExpression node) { + PsiElement parentElement = node.getParent(); if (node.shouldCheckReferences() && !(parentElement instanceof JSCallExpression)) { - final ResolveResult[] resolveResults = node.multiResolve(false); + ResolveResult[] resolveResults = node.multiResolve(false); boolean emptyResolve = resolveResults.length == 0; boolean noCompleteResolve = true; @@ -93,20 +90,19 @@ public void visitJSReferenceExpression(final JSReferenceExpression node) { } if (emptyResolve || noCompleteResolve) { - final PsiElement nameIdentifier = node.getReferenceNameElement(); + PsiElement nameIdentifier = node.getReferenceNameElement(); if (nameIdentifier != null) { - final List fixes = new LinkedList(); - final JSExpression qualifier = node.getQualifier(); + List fixes = new LinkedList<>(); + JSExpression qualifier = node.getQualifier(); if (myOnTheFly) { - final PsiFile containingFile = node.getContainingFile(); - final boolean ecma = containingFile.getLanguage() == JavaScriptSupportLoader.ECMA_SCRIPT_L4; + PsiFile containingFile = node.getContainingFile(); + boolean ecma = containingFile.getLanguage() == JavaScriptSupportLoader.ECMA_SCRIPT_L4; - if ((qualifier == null || - JSUtils.isLHSExpression(qualifier) || - qualifier instanceof JSThisExpression) && (!(parentElement instanceof JSDefinitionExpression) || ecma)) { - final String referencedName = node.getReferencedName(); + if ((qualifier == null || JSUtils.isLHSExpression(qualifier) || qualifier instanceof JSThisExpression) + && (!(parentElement instanceof JSDefinitionExpression) || ecma)) { + String referencedName = node.getReferencedName(); boolean isField = qualifier != null; JSClass contextClass = null; @@ -121,19 +117,20 @@ public void visitJSReferenceExpression(final JSReferenceExpression node) { if (node.getParent() instanceof JSArgumentList) { fixes.add(new CreateJSFunctionOrMethodFix( referencedName, - !(qualifier == null || (qualifier instanceof - JSThisExpression && ecma)) + !(qualifier == null || (qualifier instanceof JSThisExpression && ecma)) ) { @Override + @RequiredReadAction protected void addParameters( Template template, JSReferenceExpression referenceExpression, PsiFile file, Set features ) { - JSExpression method = ((JSCallExpression)referenceExpression.getParent() - .getParent()).getMethodExpression(); - if (method instanceof JSReferenceExpression && "bindSetter".equals(((JSReferenceExpression)method).getReferencedName())) { + JSCallExpression call = (JSCallExpression)referenceExpression.getParent().getParent(); + JSExpression method = call.getMethodExpression(); + if (method instanceof JSReferenceExpression methodRefExpr + && "bindSetter".equals(methodRefExpr.getReferencedName())) { MyExpression expression = new MyExpression("value"); template.addVariable("value", expression, expression, false); if (ecma) { @@ -143,6 +140,7 @@ protected void addParameters( } @Override + @RequiredReadAction protected void addReturnType( Template template, JSReferenceExpression referenceExpression, @@ -158,7 +156,7 @@ protected void addReturnType( JSClass targetClass = contextClass; if (qualifier instanceof JSReferenceExpression) { - final JSClass clazz = JSResolveUtil.findClassOfQualifier(qualifier, containingFile); + JSClass clazz = JSResolveUtil.findClassOfQualifier(qualifier, containingFile); if (clazz != null) { targetClass = clazz; } @@ -183,19 +181,18 @@ protected void addReturnType( JSCallExpression expression = PsiTreeUtil.getParentOfType(node, JSCallExpression.class); if (expression != null) { - final JSExpression methodExpression = expression.getMethodExpression(); + JSExpression methodExpression = expression.getMethodExpression(); - if (methodExpression instanceof JSReferenceExpression) { - final String methodName = ((JSReferenceExpression)methodExpression).getReferencedName(); + if (methodExpression instanceof JSReferenceExpression methodRefExpr) { + String methodName = methodRefExpr.getReferencedName(); if ("addEventListener".equals(methodName) || "removeEventListener".equals(methodName)) { - final JSArgumentList argumentList = expression.getArgumentList(); - final JSExpression[] params = + JSArgumentList argumentList = expression.getArgumentList(); + JSExpression[] params = argumentList != null ? argumentList.getArguments() : JSExpression.EMPTY_ARRAY; - if (params.length >= 2 && params[0] instanceof JSReferenceExpression) { - final JSExpression eventNameQualifier = - ((JSReferenceExpression)params[0]).getQualifier(); + if (params.length >= 2 && params[0] instanceof JSReferenceExpression paramRefExpr) { + JSExpression eventNameQualifier = paramRefExpr.getQualifier(); if (eventNameQualifier != null) { fixes.add(new CreateJSEventMethod(invokedName, eventNameQualifier)); } @@ -222,18 +219,17 @@ protected void addReturnType( } } - final LocalizeValue message = node.getQualifier() == null - ? JSResolveUtil.isExprInTypeContext(node) - ? JavaScriptLocalize.javascriptUnresolvedTypeNameMessage(node.getReferencedName()) - : JavaScriptLocalize.javascriptUnresolvedVariableOrTypeNameMessage(node.getReferencedName()) - : JavaScriptLocalize.javascriptUnresolvedVariableNameMessage(node.getReferencedName()); - - holder.registerProblem( - nameIdentifier, - message.get(), - JSUnresolvedFunctionInspection.getUnresolveReferenceHighlightType(qualifier, node), - fixes.size() > 0 ? fixes.toArray(new LocalQuickFix[fixes.size()]) : null - ); + holder.newProblem( + node.getQualifier() == null + ? JSResolveUtil.isExprInTypeContext(node) + ? JavaScriptLocalize.javascriptUnresolvedTypeNameMessage(node.getReferencedName()) + : JavaScriptLocalize.javascriptUnresolvedVariableOrTypeNameMessage(node.getReferencedName()) + : JavaScriptLocalize.javascriptUnresolvedVariableNameMessage(node.getReferencedName()) + ) + .range(nameIdentifier) + .highlightType(JSUnresolvedFunctionInspection.getUnresolveReferenceHighlightType(qualifier, node)) + .withFixes(fixes.size() > 0 ? fixes.toArray(new LocalQuickFix[fixes.size()]) : null) + .create(); } } } @@ -270,12 +266,12 @@ public String getName() { @RequiredReadAction @Override protected void buildTemplate( - final Template template, - final JSReferenceExpression referenceExpression, - final Set features, + Template template, + JSReferenceExpression referenceExpression, + Set features, boolean staticContext, - final PsiFile file, - final PsiElement anchorParent + PsiFile file, + PsiElement anchorParent ) { template.addTextSegment("/** @namespace "); template.addTextSegment(referenceExpression.getText() + " */"); @@ -284,9 +280,7 @@ protected void buildTemplate( } private static class CreateJSVariableIntentionAction extends BaseCreateJSVariableIntentionAction { - @NonNls private static final String VAR_STATEMENT_START = "var "; - @NonNls private static final String CONSTANT_STATEMENT_START = "const "; private boolean isField; private boolean isConstant; @@ -312,16 +306,16 @@ public String getName() { @RequiredReadAction @Override protected void buildTemplate( - final Template template, - final JSReferenceExpression referenceExpression, - final Set features, + Template template, + JSReferenceExpression referenceExpression, + Set features, boolean staticContext, - final PsiFile file, - final PsiElement anchorParent + PsiFile file, + PsiElement anchorParent ) { boolean classFeature = features.contains(JavaScriptFeature.CLASS); - final JSExpression qualifier = addAccessModifier(template, referenceExpression, classFeature, staticContext); + JSExpression qualifier = addAccessModifier(template, referenceExpression, classFeature, staticContext); if (qualifier == null || classFeature) { template.addTextSegment(isConstant ? CONSTANT_STATEMENT_START : VAR_STATEMENT_START); } @@ -370,6 +364,7 @@ protected void writeFunctionAndName(Template template, String referencedName, Se } @Override + @RequiredReadAction protected void addParameters(Template template, JSReferenceExpression refExpr, PsiFile file, Set features) { if (!myIsGetter) { template.addTextSegment(refExpr.getReferencedName() + ":"); @@ -378,6 +373,7 @@ protected void addParameters(Template template, JSReferenceExpression refExpr, P } @Override + @RequiredReadAction protected void addReturnType(Template template, JSReferenceExpression referenceExpression, PsiFile file) { if (myIsGetter) { guessTypeAndAddTemplateVariable(template, referenceExpression, file); @@ -431,12 +427,14 @@ public CreateJSEventMethod(String invokedName, JSExpression eventNameQualifier) @Override + @RequiredReadAction protected void addParameters(Template template, JSReferenceExpression refExpr, PsiFile file, Set features) { template.addTextSegment("event:"); template.addTextSegment(myEventQualifier.getText()); } @Override + @RequiredReadAction protected void addReturnType(Template template, JSReferenceExpression referenceExpression, PsiFile psifile) { template.addTextSegment("void"); } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUntypedDeclarationInspection.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUntypedDeclarationInspection.java index a68d42d8..5663e8d1 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUntypedDeclarationInspection.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUntypedDeclarationInspection.java @@ -20,8 +20,9 @@ import com.intellij.lang.javascript.inspections.qucikFixes.BaseCreateFix; import com.intellij.lang.javascript.psi.*; import com.intellij.lang.javascript.psi.impl.JSPsiImplUtils; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; -import consulo.application.ApplicationManager; +import consulo.application.Application; import consulo.codeEditor.Editor; import consulo.fileEditor.FileEditorManager; import consulo.javascript.language.JavaScriptFeature; @@ -42,8 +43,6 @@ import consulo.navigation.OpenFileDescriptor; import consulo.navigation.OpenFileDescriptorFactory; import consulo.project.Project; -import org.jetbrains.annotations.NonNls; - import jakarta.annotation.Nonnull; import java.util.Collections; @@ -53,17 +52,16 @@ */ @ExtensionImpl public class JSUntypedDeclarationInspection extends JSInspection { - @NonNls public static final String SHORT_NAME = "JSUntypedDeclaration"; - @Override @Nonnull + @Override public String getGroupDisplayName() { return "General"; } - @Override @Nonnull + @Override public String getDisplayName() { return JavaScriptLocalize.jsUntypedDeclarationInspectionName().get(); } @@ -76,7 +74,6 @@ public HighlightDisplayLevel getDefaultLevel() { @Override @Nonnull - @NonNls public String getShortName() { return SHORT_NAME; } @@ -85,17 +82,20 @@ public String getShortName() { protected JSElementVisitor createVisitor(final ProblemsHolder holder) { return new JSElementVisitor() { @Override - public void visitJSVariable(final JSVariable node) { + @RequiredReadAction + public void visitJSVariable(@Nonnull JSVariable node) { process(node, holder); } @Override - public void visitJSFunctionExpression(final JSFunctionExpression node) { + @RequiredReadAction + public void visitJSFunctionExpression(@Nonnull JSFunctionExpression node) { process(node.getFunction(), holder); } @Override - public void visitJSFunctionDeclaration(final JSFunction node) { + @RequiredReadAction + public void visitJSFunctionDeclaration(@Nonnull JSFunction node) { if (node.isConstructor() || node.isSetProperty()) { return; } @@ -104,7 +104,8 @@ public void visitJSFunctionDeclaration(final JSFunction node) { }; } - private static void process(final JSNamedElement node, final ProblemsHolder holder) { + @RequiredReadAction + private static void process(JSNamedElement node, ProblemsHolder holder) { if (node.getContainingFile().getLanguage() != JavaScriptSupportLoader.ECMA_SCRIPT_L4) { return; } @@ -112,43 +113,43 @@ private static void process(final JSNamedElement node, final ProblemsHolder hold if (nameIdentifier != null && JSPsiImplUtils.getTypeFromDeclaration(node) == null && - (!(node instanceof JSParameter) || !((JSParameter)node).isRest())) { + !(node instanceof JSParameter parameter && parameter.isRest())) { LocalizeValue description = node instanceof JSFunction ? JavaScriptLocalize.jsUntypedFunctionProblem(nameIdentifier.getText()) : JavaScriptLocalize.jsUntypedVariableProblem(nameIdentifier.getText()); - holder.registerProblem( - nameIdentifier, - description.get(), - ProblemHighlightType.GENERIC_ERROR_OR_WARNING, - new AddTypeToDclFix() - ); + + holder.newProblem(description) + .range(nameIdentifier) + .highlightType(ProblemHighlightType.GENERIC_ERROR_OR_WARNING) + .withFix(new AddTypeToDclFix()) + .create(); } } private static class AddTypeToDclFix implements LocalQuickFix { - - @Override @Nonnull + @Override public String getName() { return JavaScriptLocalize.jsUntypedDeclarationProblemAddtypeFix().get(); } - @Override @Nonnull + @Override public String getFamilyName() { return getName(); } @Override - public void applyFix(@Nonnull final Project project, @Nonnull final ProblemDescriptor descriptor) { + @RequiredReadAction + public void applyFix(@Nonnull Project project, @Nonnull ProblemDescriptor descriptor) { PsiElement anchor = descriptor.getPsiElement(); PsiFile containingFile = anchor.getContainingFile(); if (!FileModificationService.getInstance().prepareFileForWrite(containingFile)) { return; } - if (anchor.getParent() instanceof JSFunction) { - anchor = ((JSFunction)anchor.getParent()).getParameterList(); + if (anchor.getParent() instanceof JSFunction function) { + anchor = function.getParameterList(); } OpenFileDescriptor openDescriptor = OpenFileDescriptorFactory.getInstance(project) @@ -162,10 +163,10 @@ public void applyFix(@Nonnull final Project project, @Nonnull final ProblemDescr Template t = templateManager.createTemplate("", ""); t.addTextSegment(":"); boolean hasDetectedTypeFromUsage = false; - final PsiElement anchorParent = anchor.getParent(); + PsiElement anchorParent = anchor.getParent(); - if (anchorParent instanceof JSVariable) { - final JSExpression expression = ((JSVariable)anchorParent).getInitializer(); + if (anchorParent instanceof JSVariable variable) { + JSExpression expression = variable.getInitializer(); if (expression != null) { BaseCreateFix.guessExprTypeAndAddSuchVariable( @@ -181,7 +182,7 @@ public void applyFix(@Nonnull final Project project, @Nonnull final ProblemDescr if (!hasDetectedTypeFromUsage) { String defaultValue = "uint"; - if (ApplicationManager.getApplication().isUnitTestMode()) { + if (Application.get().isUnitTestMode()) { t.addTextSegment(defaultValue); } else { diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnusedLocalSymbolsInspection.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnusedLocalSymbolsInspection.java index 6999fb54..d3d0d5d4 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnusedLocalSymbolsInspection.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnusedLocalSymbolsInspection.java @@ -23,12 +23,10 @@ import com.intellij.lang.javascript.psi.impl.JSClassImpl; import com.intellij.lang.javascript.psi.resolve.JSImportHandlingUtil; import com.intellij.lang.javascript.psi.resolve.ResolveProcessor; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.javascript.localize.JavaScriptLocalize; -import consulo.language.editor.inspection.LocalQuickFix; -import consulo.language.editor.inspection.ProblemDescriptor; -import consulo.language.editor.inspection.ProblemHighlightType; -import consulo.language.editor.inspection.ProblemsHolder; +import consulo.language.editor.inspection.*; import consulo.language.editor.rawHighlight.HighlightDisplayLevel; import consulo.language.psi.PsiElement; import consulo.language.psi.PsiFile; @@ -42,8 +40,6 @@ import consulo.util.collection.primitive.objects.ObjectIntMap; import consulo.util.collection.primitive.objects.ObjectMaps; import consulo.util.dataholder.Key; -import org.jetbrains.annotations.NonNls; - import jakarta.annotation.Nonnull; import java.util.BitSet; @@ -57,46 +53,44 @@ @ExtensionImpl public class JSUnusedLocalSymbolsInspection extends JSInspection { private static final Logger LOG = Logger.getInstance("JSUnusedLocalSymbols"); - @NonNls public static final String SHORT_NAME = "JSUnusedLocalSymbols"; - @Override @Nonnull + @Override public String getGroupDisplayName() { return "General"; } - @Override @Nonnull + @Override public String getDisplayName() { return JavaScriptLocalize.jsUnusedLocalSymbolInspectionName().get(); } - @Override @Nonnull - @NonNls + @Override public String getShortName() { return SHORT_NAME; } - private static final Key> ourUnusedLocalDeclarationsSetKey = Key.create("js unused local dcls key"); - private static final Key> ourUsedLocalDeclarationsSetKey = Key.create("js used local functions key"); + private static final Key> UNUSED_LOCAL_DECLARATIONS_SET_KEY = Key.create("js unused local dcls key"); + private static final Key> USED_LOCAL_DECLARATIONS_SET_KEY = Key.create("js used local functions key"); @Override protected JSElementVisitor createVisitor(final ProblemsHolder holder) { return new JSElementVisitor() { @Override - public void visitJSVariable(final JSVariable node) { + public void visitJSVariable(@Nonnull JSVariable node) { handleLocalDeclaration(node); } @Override - public void visitJSParameterList(final JSParameterList node) { + public void visitJSParameterList(@Nonnull JSParameterList node) { PsiElement parent = node.getParent(); - final Set set = parent.getUserData(ourUnusedLocalDeclarationsSetKey); + Set set = parent.getUserData(UNUSED_LOCAL_DECLARATIONS_SET_KEY); if (set == null) { - parent.putUserData(ourUnusedLocalDeclarationsSetKey, Collections.synchronizedSet(new HashSet(3))); + parent.putUserData(UNUSED_LOCAL_DECLARATIONS_SET_KEY, Collections.synchronizedSet(new HashSet<>(3))); } else if (node.getParameters().length == 0) { set.clear(); @@ -104,16 +98,17 @@ else if (node.getParameters().length == 0) { } @Override - public void visitFile(final PsiFile file) { - final Set set = file.getUserData(ourUnusedLocalDeclarationsSetKey); + public void visitFile(PsiFile file) { + Set set = file.getUserData(UNUSED_LOCAL_DECLARATIONS_SET_KEY); if (set != null) { set.clear(); } } @Override - public void visitJSParameter(final JSParameter node) { - final PsiElement scopeNode = PsiTreeUtil.getParentOfType(node, JSFunction.class, JSCatchBlock.class); + @RequiredReadAction + public void visitJSParameter(@Nonnull JSParameter node) { + PsiElement scopeNode = PsiTreeUtil.getParentOfType(node, JSFunction.class, JSCatchBlock.class); if (scopeNode == null || scopeNode instanceof JSCatchBlock) { return; @@ -122,22 +117,23 @@ public void visitJSParameter(final JSParameter node) { if (scopeNode.getUserData(JavaScriptLineMarkerProvider.ourParticipatesInHierarchyKey) != null) { return; } - if (scopeNode instanceof JSFunction) { - JSAttributeList attributeList = ((JSFunction)scopeNode).getAttributeList(); + + if (scopeNode instanceof JSFunction function) { + JSAttributeList attributeList = function.getAttributeList(); if (attributeList != null && attributeList.hasModifier(JSAttributeList.ModifierType.OVERRIDE)) { return; } } - final Set unusedParametersSet; - final PsiElement parameterList = node.getParent(); + Set unusedParametersSet; + PsiElement parameterList = node.getParent(); if (parameterList.getNode().findChildByType(JSElementTypes.FORMAL_PARAMETER) == node.getNode()) { unusedParametersSet = Collections.synchronizedSet(new HashSet(3)); - scopeNode.putUserData(ourUnusedLocalDeclarationsSetKey, unusedParametersSet); + scopeNode.putUserData(UNUSED_LOCAL_DECLARATIONS_SET_KEY, unusedParametersSet); } else { - unusedParametersSet = scopeNode.getUserData(ourUnusedLocalDeclarationsSetKey); + unusedParametersSet = scopeNode.getUserData(UNUSED_LOCAL_DECLARATIONS_SET_KEY); if (unusedParametersSet == null) { return; } @@ -146,7 +142,8 @@ public void visitJSParameter(final JSParameter node) { } @Override - public void visitJSReferenceExpression(final JSReferenceExpression node) { + @RequiredReadAction + public void visitJSReferenceExpression(@Nonnull JSReferenceExpression node) { if (node.getParent() instanceof JSFunction) { return; } @@ -156,7 +153,7 @@ public void visitJSReferenceExpression(final JSReferenceExpression node) { if (function == null) { return; } - Set unusedParametersSet = function.getUserData(ourUnusedLocalDeclarationsSetKey); + Set unusedParametersSet = function.getUserData(UNUSED_LOCAL_DECLARATIONS_SET_KEY); if (unusedParametersSet == null) { return; } @@ -169,23 +166,23 @@ public void visitJSReferenceExpression(final JSReferenceExpression node) { ResolveResult[] results = node.multiResolve(false); for (ResolveResult r : results) { - final PsiElement element = r.getElement(); + PsiElement element = r.getElement(); - if (element instanceof JSVariable || (element instanceof JSFunction && isSupportedFunction((JSFunction)element))) { + if (element instanceof JSVariable || (element instanceof JSFunction function && isSupportedFunction(function))) { assert !(element instanceof JSFunctionExpression); PsiElement scopeHandler = PsiTreeUtil.getParentOfType(element, JSFunction.class); if (scopeHandler != null) { - Set unusedParametersSet = scopeHandler.getUserData(ourUnusedLocalDeclarationsSetKey); + Set unusedParametersSet = scopeHandler.getUserData(UNUSED_LOCAL_DECLARATIONS_SET_KEY); if (unusedParametersSet != null) { - final boolean removed = unusedParametersSet.remove(element); + boolean removed = unusedParametersSet.remove(element); if (!removed) { - Set set = scopeHandler.getUserData(ourUsedLocalDeclarationsSetKey); + Set set = scopeHandler.getUserData(USED_LOCAL_DECLARATIONS_SET_KEY); if (set == null) { - set = new HashSet(3); - scopeHandler.putUserData(ourUsedLocalDeclarationsSetKey, set); + set = new HashSet<>(3); + scopeHandler.putUserData(USED_LOCAL_DECLARATIONS_SET_KEY, set); } set.add(element); } @@ -197,53 +194,56 @@ public void visitJSReferenceExpression(final JSReferenceExpression node) { } @Override - public void visitJSFunctionExpression(final JSFunctionExpression node) { - visitJSFunctionDeclaration((JSFunction)node); + @RequiredReadAction + public void visitJSFunctionExpression(@Nonnull JSFunctionExpression node) { + visitJSFunctionDeclaration(node); } @Override - public void visitJSFunctionDeclaration(final JSFunction node) { + @RequiredReadAction + public void visitJSFunctionDeclaration(@Nonnull JSFunction node) { processDeclarationHost(node, holder); handleLocalDeclaration(node); } }; } - private static boolean isSupportedFunction(final JSFunction element) { + private static boolean isSupportedFunction(JSFunction element) { return !(element instanceof JSFunctionExpression || element.getParent() instanceof JSProperty); } - private static void processDeclarationHost(final PsiElement node, final ProblemsHolder holder) { - Set unusedDeclarationsSet = node.getUserData(ourUnusedLocalDeclarationsSetKey); - if (unusedDeclarationsSet == null || node instanceof JSFunction && ((JSFunction)node).getBody().length == 0) { + @RequiredReadAction + private static void processDeclarationHost(PsiElement node, ProblemsHolder holder) { + Set unusedDeclarationsSet = node.getUserData(UNUSED_LOCAL_DECLARATIONS_SET_KEY); + if (unusedDeclarationsSet == null || node instanceof JSFunction function && function.getBody().length == 0) { return; } try { - unusedDeclarationsSet = new HashSet(unusedDeclarationsSet); + unusedDeclarationsSet = new HashSet<>(unusedDeclarationsSet); - final int nonCounted = -2; + int nonCounted = -2; int lastUsedParameterIndex = nonCounted; ObjectIntMap parameterIndexMap = null; - for (final PsiElement p : unusedDeclarationsSet) { + for (PsiElement p : unusedDeclarationsSet) { if (!p.isValid()) { continue; } - final LocalizeValue message; - final @Nonnull PsiElement highlightedElement; + LocalizeValue message; + @Nonnull PsiElement highlightedElement; if (p instanceof JSParameter parameter) { // There are cases of predefined sinatures for which we are not interested in reported unused parameters - final boolean ecma = node.getContainingFile().getLanguage() == JavaScriptSupportLoader.ECMA_SCRIPT_L4; + boolean ecma = node.getContainingFile().getLanguage() == JavaScriptSupportLoader.ECMA_SCRIPT_L4; if (ecma && node instanceof JSFunctionExpression) { continue; // do not report unused parameters } else if (ecma && node instanceof JSFunction function) { - final JSParameter[] params = function.getParameterList().getParameters(); + JSParameter[] params = function.getParameterList().getParameters(); if (params.length == 1) { - @NonNls String type = parameter.getTypeString(); + String type = parameter.getTypeString(); if (type != null) { type = JSImportHandlingUtil.resolveTypeName(type, p); } @@ -253,10 +253,9 @@ else if (ecma && node instanceof JSFunction function) { if (eventType.equals(type)) { continue; } - final PsiElement clazz = JSClassImpl.findClassFromNamespace(type, node); - if (clazz instanceof JSClass) { - final ResolveProcessor processor = new ResolveProcessor(eventType) { + if (JSClassImpl.findClassFromNamespace(type, node) instanceof JSClass jsClass) { + ResolveProcessor processor = new ResolveProcessor(eventType) { { setTypeContext(true); setToProcessMembers(false); @@ -264,12 +263,13 @@ else if (ecma && node instanceof JSFunction function) { } @Override - public boolean execute(final PsiElement element, final ResolveState state) { + @RequiredReadAction + public boolean execute(@Nonnull PsiElement element, ResolveState state) { return !(element instanceof JSClass jsClass && myName.equals(jsClass.getQualifiedName())); } }; processor.setLocalResolve(true); - final boolean b = clazz.processDeclarations(processor, ResolveState.initial(), clazz, clazz); + boolean b = jsClass.processDeclarations(processor, ResolveState.initial(), jsClass, jsClass); if (!b) { continue; } @@ -278,7 +278,7 @@ public boolean execute(final PsiElement element, final ResolveState state) { } } - final JSParameter[] params = ((JSFunction)node).getParameterList().getParameters(); + JSParameter[] params = ((JSFunction)node).getParameterList().getParameters(); if (lastUsedParameterIndex == nonCounted) { BitSet unusedSet = new BitSet(params.length); @@ -312,7 +312,7 @@ public boolean execute(final PsiElement element, final ResolveState state) { highlightedElement = parameter.getNameIdentifier(); } else if (p instanceof JSFunction function) { - final PsiElement nameIdentifier = function.getNameIdentifier(); + PsiElement nameIdentifier = function.getNameIdentifier(); if (nameIdentifier == null) { continue; } @@ -324,38 +324,30 @@ else if (p instanceof JSFunction function) { message = JavaScriptLocalize.jsUnusedLocalVariable(); } - if (p.getParent() instanceof JSCatchBlock) { - holder.registerProblem( - highlightedElement, - message.get(), - ProblemHighlightType.LIKE_UNUSED_SYMBOL - ); - } - else { - holder.registerProblem( - highlightedElement, - message.get(), - ProblemHighlightType.LIKE_UNUSED_SYMBOL, - new RemoveElementLocalQuickFix() - ); + ProblemBuilder problemBuilder = holder.newProblem(message) + .range(highlightedElement) + .highlightType(ProblemHighlightType.LIKE_UNUSED_SYMBOL); + if (!(p.getParent() instanceof JSCatchBlock)) { + problemBuilder.withFix(new RemoveElementLocalQuickFix()); } + problemBuilder.create(); } } finally { - node.putUserData(ourUnusedLocalDeclarationsSetKey, null); + node.putUserData(UNUSED_LOCAL_DECLARATIONS_SET_KEY, null); } } - private static void handleLocalDeclaration(final JSNamedElement node) { + private static void handleLocalDeclaration(JSNamedElement node) { if (node instanceof JSFunction function && !isSupportedFunction(function)) { return; } - final PsiElement scopeNode = PsiTreeUtil.getParentOfType(node, JSFunction.class, JSCatchBlock.class); + PsiElement scopeNode = PsiTreeUtil.getParentOfType(node, JSFunction.class, JSCatchBlock.class); if (scopeNode == null) { return; } - final Set unusedParametersSet = scopeNode.getUserData(ourUnusedLocalDeclarationsSetKey); - final Set usedSet = scopeNode.getUserData(ourUsedLocalDeclarationsSetKey); + Set unusedParametersSet = scopeNode.getUserData(UNUSED_LOCAL_DECLARATIONS_SET_KEY); + Set usedSet = scopeNode.getUserData(USED_LOCAL_DECLARATIONS_SET_KEY); if (usedSet != null && usedSet.contains(node)) { return; } @@ -372,20 +364,21 @@ public HighlightDisplayLevel getDefaultLevel() { } private static class RemoveElementLocalQuickFix implements LocalQuickFix { - @Override @Nonnull + @Override public String getName() { return JavaScriptLocalize.jsUnusedSymbolRemove().get(); } - @Override @Nonnull + @Override public String getFamilyName() { return getName(); } @Override - public void applyFix(@Nonnull final Project project, @Nonnull final ProblemDescriptor descriptor) { + @RequiredReadAction + public void applyFix(@Nonnull Project project, @Nonnull ProblemDescriptor descriptor) { try { PsiElement element = descriptor.getPsiElement(); if (!(element instanceof JSNamedElement)) { From 7b0106a3167427b50598304e0700213ebe95119b Mon Sep 17 00:00:00 2001 From: UNV Date: Sun, 12 Jan 2025 22:14:46 +0300 Subject: [PATCH 103/150] Refactoring some classes from base-impl module. --- .../inspections/qucikFixes/CreateJSFunctionFixBase.java | 4 +++- .../consulo/javascript/lang/parsing/ExpressionParsing.java | 7 +++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/base-impl/src/main/java/consulo/javascript/inspections/qucikFixes/CreateJSFunctionFixBase.java b/base-impl/src/main/java/consulo/javascript/inspections/qucikFixes/CreateJSFunctionFixBase.java index ca5acd4e..9ec0c147 100644 --- a/base-impl/src/main/java/consulo/javascript/inspections/qucikFixes/CreateJSFunctionFixBase.java +++ b/base-impl/src/main/java/consulo/javascript/inspections/qucikFixes/CreateJSFunctionFixBase.java @@ -34,7 +34,7 @@ /** * @author VISTALL - * @since 24.02.2016 + * @since 2016-02-24 */ public abstract class CreateJSFunctionFixBase extends BaseCreateFix { private final LocalizeValue myMessage; @@ -97,8 +97,10 @@ protected void writeFunctionAndName(Template template, String referencedName, Se template.addTextSegment(referencedName); } + @RequiredReadAction protected abstract void addParameters(Template template, JSReferenceExpression refExpr, PsiFile file, Set features); + @RequiredReadAction protected abstract void addReturnType(Template template, JSReferenceExpression referenceExpression, PsiFile psifile); protected abstract void addBody(Template template, JSReferenceExpression refExpr, PsiFile file); diff --git a/base-impl/src/main/java/consulo/javascript/lang/parsing/ExpressionParsing.java b/base-impl/src/main/java/consulo/javascript/lang/parsing/ExpressionParsing.java index bfbf11d7..0e3bc8d8 100644 --- a/base-impl/src/main/java/consulo/javascript/lang/parsing/ExpressionParsing.java +++ b/base-impl/src/main/java/consulo/javascript/lang/parsing/ExpressionParsing.java @@ -32,9 +32,8 @@ /** - * User: max - * Date: Jan 28, 2005 - * Time: 1:18:22 PM + * @author max + * @since 2005-01-28 */ public class ExpressionParsing extends Parsing { private static final Logger LOG = Logger.getInstance(ExpressionParsing.class); @@ -850,7 +849,7 @@ public boolean tryParseType(final PsiBuilder builder) { public boolean parseType(final PsiBuilder builder) { final IElementType tokenType = builder.getTokenType(); - if (JSDocumentationUtils.ourPrimitiveTypeFilter.contains(tokenType)) { + if (JSDocumentationUtils.PRIMITIVE_TYPE_FILTER.contains(tokenType)) { builder.advanceLexer(); } else if (!parseQualifiedTypeName(builder)) { From 31f1821a7f238d1b7a8deb4237390dc5b2804f9d Mon Sep 17 00:00:00 2001 From: UNV Date: Mon, 13 Jan 2025 01:03:05 +0300 Subject: [PATCH 104/150] Fixing NullPointer in JSAttributeListImpl. --- .../javascript/psi/impl/JSAttributeListImpl.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAttributeListImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAttributeListImpl.java index 5e4c23e8..1aee060a 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAttributeListImpl.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSAttributeListImpl.java @@ -16,9 +16,6 @@ package com.intellij.lang.javascript.psi.impl; -import consulo.annotation.access.RequiredReadAction; -import consulo.annotation.access.RequiredWriteAction; -import consulo.language.ast.ASTNode; import com.intellij.lang.javascript.JSElementTypes; import com.intellij.lang.javascript.JSTokenTypes; import com.intellij.lang.javascript.psi.JSAttribute; @@ -26,12 +23,14 @@ import com.intellij.lang.javascript.psi.JSElementVisitor; import com.intellij.lang.javascript.psi.JSReferenceExpression; import com.intellij.lang.javascript.psi.stubs.JSAttributeListStub; +import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.access.RequiredWriteAction; +import consulo.language.ast.ASTNode; +import consulo.language.ast.IElementType; import consulo.language.ast.TokenSet; import consulo.language.psi.PsiElement; -import consulo.language.ast.IElementType; import consulo.language.util.IncorrectOperationException; import jakarta.annotation.Nonnull; - import jakarta.annotation.Nullable; import java.util.ArrayList; @@ -118,7 +117,10 @@ public AccessType getAccessType() { } ASTNode node = getNode().findChildByType(MODIFIERS_TYPE_SET); - return ACCESS_TYPE_MAP.getOrDefault(node != null ? node.getElementType() : null, AccessType.PACKAGE_LOCAL); + if (node == null) { + return AccessType.PACKAGE_LOCAL; + } + return ACCESS_TYPE_MAP.getOrDefault(node.getElementType(), AccessType.PACKAGE_LOCAL); } @Override From 785f279cb6807d5e14452ab6b6855eab6c945e9c Mon Sep 17 00:00:00 2001 From: UNV Date: Mon, 13 Jan 2025 12:49:58 +0300 Subject: [PATCH 105/150] Reformatting the rest of classes in consulo-javascript module. --- .../lang/parsing/ExpressionParsing.java | 34 +- .../impl/flex/ECMAScriptImportOptimizer.java | 560 ++++--- .../javascript/impl/flex/ImportUtils.java | 614 ++++---- .../impl/flex/importer/LabelInfo.java | 27 +- .../impl/flex/importer/MemberInfo.java | 58 +- .../impl/flex/importer/MetaData.java | 9 +- .../impl/flex/importer/MethodInfo.java | 472 +++--- .../impl/flex/importer/Multiname.java | 112 +- .../impl/flex/importer/SlotInfo.java | 57 +- .../javascript/impl/flex/importer/Swf.java | 758 +++++---- .../javascript/impl/flex/importer/Traits.java | 66 +- .../folding/JavaScriptFoldingBuilder.java | 326 ++-- .../impl/formatter/JSCodeStylePanel.java | 263 ++-- .../JSCodeStyleSettingsProvider.java | 38 +- .../impl/formatter/JSFormattingModel.java | 61 +- .../impl/formatter/JSSpacingProcessor.java | 1350 ++++++++--------- .../JavaScriptIndentOptionsProvider.java | 50 +- .../JavascriptFormattingModelBuilder.java | 36 +- .../impl/formatter/blocks/JSBlock.java | 356 ++--- .../formatter/blocks/JSDocCommentBlock.java | 121 +- .../formatter/blocks/SubBlockVisitor.java | 692 ++++----- .../impl/highlighting/JSBraceMatcher.java | 46 +- .../JavaScriptColorsAndFontsPage.java | 197 +-- .../JavaScriptHighlightVisitor.java | 657 ++++---- .../JavaScriptHighlightVisitorFactory.java | 23 +- .../JavaScriptLineMarkerProvider.java | 861 +++++------ .../impl/index/predefined/Marker.java | 3 +- .../JavaScriptGotoSuperHandler.java | 182 +-- .../JavaScriptSymbolContributor.java | 68 +- .../refactoring/BaseIntroduceSettings.java | 9 +- .../BasicJavascriptNamesValidator.java | 21 +- .../JSBaseClassBasedIntroduceDialog.java | 118 +- .../refactoring/JSBaseIntroduceDialog.java | 522 +++---- .../refactoring/JSBaseIntroduceHandler.java | 797 +++++----- .../impl/refactoring/JSNamesValidator.java | 41 +- .../JavascriptRefactoringSupportProvider.java | 79 +- .../JSExtractFunctionDialog.java | 48 +- .../JSExtractFunctionHandler.java | 85 +- .../JSExtractFunctionSettings.java | 5 +- .../JSIntroduceConstantDialog.java | 113 +- .../JSIntroduceConstantHandler.java | 192 ++- .../JSIntroduceConstantSettings.java | 5 +- .../JSIntroduceFieldDialog.java | 296 ++-- .../JSIntroduceFieldHandler.java | 223 ++- .../JSIntroduceFieldSettings.java | 16 +- .../JSIntroduceVariableDialog.java | 160 +- .../JSIntroduceVariableHandler.java | 43 +- .../introduceVariable/Settings.java | 14 +- .../search/JSDeclarationRangeHandler.java | 35 +- .../search/JSDefinitionsSearchExecutor.java | 117 +- .../impl/search/JSFunctionsSearch.java | 163 +- .../search/JSGotoTargetRendererProvider.java | 59 +- .../JSStructureItemPresentation.java | 229 ++- .../JSStructureViewBuilderFactory.java | 46 +- .../structureView/JSStructureViewElement.java | 763 +++++----- .../structureView/JSStructureViewModel.java | 651 ++++---- .../impl/structureView/JSSuperGroup.java | 72 +- .../impl/structureView/JSSuperGrouper.java | 171 +-- .../JSExpressionSurroundDescriptor.java | 101 +- .../surroundWith/JSStatementSurrounder.java | 59 +- .../JSStatementsSurroundDescriptor.java | 267 ++-- .../surroundWith/JSWithBlockSurrounder.java | 41 +- .../surroundWith/JSWithDoWhileSurrounder.java | 43 +- .../surroundWith/JSWithForSurrounder.java | 66 +- .../JSWithFunctionExpressionSurrounder.java | 66 +- .../JSWithFunctionSurrounder.java | 49 +- .../surroundWith/JSWithIfElseSurrounder.java | 21 +- .../impl/surroundWith/JSWithIfSurrounder.java | 51 +- .../JSWithParenthesesSurrounder.java | 42 +- .../JSWithTryCatchFinallySurrounder.java | 81 +- .../JSWithTryCatchSurrounder.java | 21 +- .../JSWithTryFinallySurrounder.java | 21 +- .../surroundWith/JSWithWhileSurrounder.java | 43 +- .../surroundWith/JSWithWithSurrounder.java | 49 +- .../impl/JavaScriptIconDescriptorUpdater.java | 277 ++-- .../UpdateJavaScriptFileCopyright.java | 70 +- ...UpdateJavaScriptFileCopyrightProvider.java | 51 +- .../JavaScriptFindUsagesHandlerFactory.java | 26 +- .../JavaScriptCodeStyleConfigurable.java | 28 +- .../formatter/JavaScriptCodeStylePanel.java | 21 +- ...riptLanguageCodeStyleSettingsProvider.java | 186 ++- .../JavaScriptEmbeddedTokenHighlighter.java | 18 +- .../JavaScriptHtmlScriptContentProvider.java | 34 +- .../actions/JavaScriptCreateFileAction.java | 110 +- .../JavaScriptFileTemplateContributor.java | 12 +- ...avaScriptKeywordCompletionContributor.java | 93 +- .../JavaScriptSkipAutopopupInStrings.java | 14 +- .../ide/completion/SpaceInsertHandler.java | 23 +- .../JavaScriptNavBarModelExtension.java | 27 +- .../impl/lang/JavaScriptFileTypeFactory.java | 12 +- .../lang/JavaScriptLanguageVersionPusher.java | 14 +- .../JavaScriptLanguageVersionResolver.java | 78 +- .../lang/JavaScriptParsingDefinition.java | 83 +- .../JavaScriptClassContributor.java | 47 +- ...efaultJSPropertyNameReferenceProvider.java | 20 +- plugin/src/main/java/module-info.java | 83 +- .../JavaScriptRegExpLiteralLanguageHost.java | 126 +- .../JavaScriptRegexpMultiHostInjector.java | 47 +- regexp-impl/src/main/java/module-info.java | 7 +- 99 files changed, 7322 insertions(+), 8396 deletions(-) diff --git a/base-impl/src/main/java/consulo/javascript/lang/parsing/ExpressionParsing.java b/base-impl/src/main/java/consulo/javascript/lang/parsing/ExpressionParsing.java index 0e3bc8d8..e3df93bb 100644 --- a/base-impl/src/main/java/consulo/javascript/lang/parsing/ExpressionParsing.java +++ b/base-impl/src/main/java/consulo/javascript/lang/parsing/ExpressionParsing.java @@ -44,6 +44,16 @@ public class ExpressionParsing extends Parsi private static final TokenSet DOT_SET = TokenSet.create(JSTokenTypes.DOT); private static final TokenSet MEMBER_OPERATOR_SET = TokenSet.create(JSTokenTypes.DOT, JSTokenTypes.COLON_COLON, JSTokenTypes.DOT_DOT, JSTokenTypes.QUEST_DOT); + private static final TokenSet LITERAL_SET = TokenSet.create( + JSTokenTypes.NUMERIC_LITERAL, + JSTokenTypes.STRING_LITERAL, + JSTokenTypes.SINGLE_QUOTE_STRING_LITERAL, + JSTokenTypes.INTERPOLATION_STRING_LITERAL, + JSTokenTypes.NULL_KEYWORD, + JSTokenTypes.UNDEFINED_KEYWORD, + JSTokenTypes.FALSE_KEYWORD, + JSTokenTypes.TRUE_KEYWORD + ); private final JSXParser myJSXParser = new JSXParser(); @@ -52,7 +62,7 @@ public ExpressionParsing(C context) { } protected boolean parsePrimaryExpression(PsiBuilder builder) { - final IElementType firstToken = builder.getTokenType(); + IElementType firstToken = builder.getTokenType(); if (firstToken == JSTokenTypes.THIS_KEYWORD) { Parsing.buildTokenElement(JSElementTypes.THIS_EXPRESSION, builder); return true; @@ -73,14 +83,7 @@ else if (firstToken == JSTokenTypes.REGEXP_LITERAL) { } return true; } - else if (firstToken == JSTokenTypes.NUMERIC_LITERAL - || firstToken == JSTokenTypes.STRING_LITERAL - || firstToken == JSTokenTypes.SINGLE_QUOTE_STRING_LITERAL - || firstToken == JSTokenTypes.INTERPOLATION_STRING_LITERAL - || firstToken == JSTokenTypes.NULL_KEYWORD - || firstToken == JSTokenTypes.UNDEFINED_KEYWORD - || firstToken == JSTokenTypes.FALSE_KEYWORD - || firstToken == JSTokenTypes.TRUE_KEYWORD) { + else if (LITERAL_SET.contains(firstToken)) { LocalizeValue errorMessage = validateLiteral(builder); Parsing.buildTokenElement(JSElementTypes.LITERAL_EXPRESSION, builder); if (errorMessage != null) { @@ -295,9 +298,9 @@ public void parseArrayLiteralExpression(final PsiBuilder builder) { } } - private void parseParenthesizedExpression(final PsiBuilder builder) { + private void parseParenthesizedExpression(PsiBuilder builder) { ExpressionParsing.LOG.assertTrue(builder.getTokenType() == JSTokenTypes.LPAR); - final PsiBuilder.Marker expr = builder.mark(); + PsiBuilder.Marker expr = builder.mark(); builder.advanceLexer(); parseExpression(builder); Parsing.checkMatches(builder, JSTokenTypes.RPAR, JavaScriptLocalize.javascriptParserMessageExpectedRparen()); @@ -312,11 +315,11 @@ protected boolean parseMemberExpression(PsiBuilder builder, boolean allowCallSyn PsiBuilder.Marker expr = builder.mark(); boolean isNew; - final IElementType type = builder.getTokenType(); + IElementType type = builder.getTokenType(); if (type == JSTokenTypes.NEW_KEYWORD) { isNew = true; - final boolean isfunction = parseNewExpression(builder); + boolean isfunction = parseNewExpression(builder); if (isfunction) { expr.done(JSElementTypes.NEW_EXPRESSION); @@ -399,7 +402,7 @@ public boolean parseQualifiedTypeName(PsiBuilder builder, boolean allowStar) { } public boolean parseQualifiedTypeName(PsiBuilder builder, boolean allowStar, TokenSet separatorsSet) { - if (!JSTokenTypes.IDENTIFIER_TOKENS_SET.contains(builder.getTokenType())) { + if (JSTokenTypes.IDENTIFIER != builder.getTokenType()) { return false; } PsiBuilder.Marker expr = builder.mark(); @@ -414,8 +417,7 @@ public boolean parseQualifiedTypeName(PsiBuilder builder, boolean allowStar, Tok builder.advanceLexer(); stop = true; } - else if (tokenType == JSTokenTypes.DEFAULT_KEYWORD - || (tokenType != JSTokenTypes.IDENTIFIER && JSTokenTypes.IDENTIFIER_TOKENS_SET.contains(tokenType))) { + else if (tokenType == JSTokenTypes.DEFAULT_KEYWORD) { builder.advanceLexer(); // TODO: allow any keyword } else { diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/ECMAScriptImportOptimizer.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/ECMAScriptImportOptimizer.java index 4f7a827a..e6f3001d 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/ECMAScriptImportOptimizer.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/ECMAScriptImportOptimizer.java @@ -38,308 +38,272 @@ import consulo.util.lang.Pair; import jakarta.annotation.Nonnull; + import java.util.*; /** * @author Maxim.Mossienko - * Date: Jul 23, 2008 - * Time: 12:10:44 AM + * Date: Jul 23, 2008 + * Time: 12:10:44 AM */ @ExtensionImpl -public class ECMAScriptImportOptimizer implements ImportOptimizer -{ - @Override - public boolean supports(PsiFile file) - { - return file.getLanguage() == JavaScriptSupportLoader.ECMA_SCRIPT_L4 || JavaScriptSupportLoader.isFlexMxmFile(file); - } - - @Override - @Nonnull - public Runnable processFile(final PsiFile file) - { - if(!FileModificationService.getInstance().prepareFileForWrite(file)) - { - return EmptyRunnable.INSTANCE; - } - - return new Runnable() - { - @Override - @RequiredReadAction - public void run() - { - final JSUnusedImportsHelper.Results unusedImportsResults = JSUnusedImportsHelper.getUnusedImports(file); - - MultiMap importsByHolder = new MultiMap() - { - @Override - protected Collection createCollection() - { - return new HashSet(); - } - }; - - Project project = file.getProject(); - final SmartPointerManager pointerManager = SmartPointerManager.getInstance(project); - final List oldImportsPointers = new ArrayList(unusedImportsResults.allImports.size()); - for(JSImportStatement anImport : unusedImportsResults.allImports) - { - oldImportsPointers.add(pointerManager.createSmartPsiElementPointer(anImport)); - if(unusedImportsResults.unusedImports.contains(anImport)) - { - continue; - } - - JSElement importHolder = ImportUtils.getImportHolder(anImport, JSFunction.class, JSPackageStatement.class, JSFile.class); - assert importHolder != null : "Import holder not found for " + anImport.getText(); - importsByHolder.putValue(importHolder, anImport.getImportText()); - } - - final List replaceWithShortName = new ArrayList(); - for(Map.Entry e : unusedImportsResults.fqnsToReplaceWithImport.entrySet()) - { - final Collection importsInScope; - final Collection importsInEnclosingScope; - final JSElement importHolder; - - JSElement enclosingFunction = ImportUtils.getImportHolder(e.getKey(), JSFunction.class); - JSElement enclosingPackage = ImportUtils.getImportHolder(e.getKey(), JSPackageStatement.class); - - if(enclosingFunction != null && !importsByHolder.get(enclosingFunction).isEmpty()) - { - importHolder = enclosingFunction; - importsInScope = importsByHolder.get(enclosingFunction); - importsInEnclosingScope = importsByHolder.get(enclosingPackage); - } - else if(enclosingPackage != null) - { - importHolder = enclosingPackage; - importsInScope = importsByHolder.get(enclosingPackage); - importsInEnclosingScope = Collections.emptyList(); - } - else - { - importHolder = ImportUtils.getImportHolder(e.getKey(), JSFile.class); - importsInScope = importsByHolder.get(importHolder); - importsInEnclosingScope = Collections.emptyList(); - } - - String fqn = e.getValue(); - - ResolveResult resolve = resolveUsingImports(importsInScope, fqn, file); - ResolveResult implicitResolve = resolveUsingImports(importsInEnclosingScope, fqn, file); - - if(resolve == ResolveResult.None && implicitResolve == ResolveResult.None) - { - importsByHolder.putValue(importHolder, fqn); - replaceWithShortName.add(pointerManager.createSmartPsiElementPointer(e.getKey())); - } - else if((resolve == ResolveResult.ThisOne || resolve == ResolveResult.None) && (implicitResolve == ResolveResult.ThisOne || implicitResolve == - ResolveResult.None)) - { - replaceWithShortName.add(pointerManager.createSmartPsiElementPointer(e.getKey())); - } - } - - final Collection, Collection>> importsByHolderPointer = new - ArrayList, Collection>>(importsByHolder.size()); - for(JSElement holder : importsByHolder.keySet()) - { - importsByHolderPointer.add(Pair.create(pointerManager.createSmartPsiElementPointer(holder), importsByHolder.get(holder))); - } - - for(Pair, Collection> entry : importsByHolderPointer) - { - JSElement holder = entry.getFirst().getElement(); - assert holder != null && holder.isValid(); - - Pair defaultInsertionPlace = ImportUtils.getImportInsertionPlace(holder); - boolean before = defaultInsertionPlace.second; - PsiElement insertionPlace = defaultInsertionPlace.first; - - PsiElement earlyImport = ImportUtils.findEarlyImport(before ? insertionPlace : insertionPlace.getNextSibling()); - Pair elementToDelete = null; - if(earlyImport != null) - { - for(PsiElement e = (before ? insertionPlace : insertionPlace.getNextSibling()); e != earlyImport; e = e.getNextSibling()) - { - if(!(e instanceof PsiWhiteSpace)) - { - break; - } - } - insertionPlace = earlyImport; - before = true; - PsiElement deleteTo = earlyImport; - while(deleteTo.getNextSibling() instanceof PsiWhiteSpace || deleteTo.getNextSibling() instanceof JSImportStatement) - { - deleteTo = deleteTo.getNextSibling(); - } - elementToDelete = Pair.create(insertionPlace, deleteTo); - } - else if(before && insertionPlace instanceof PsiWhiteSpace) - { - insertionPlace = insertionPlace.replace(JSChangeUtil.createJSTreeFromText(insertionPlace.getProject(), " ").getPsi()); - } - else if(insertionPlace.getNextSibling() instanceof PsiWhiteSpace) - { - insertionPlace.getNextSibling().replace(JSChangeUtil.createJSTreeFromText(insertionPlace.getProject(), " ").getPsi()); - } - - String importBlock = ImportUtils.createImportBlock(project, entry.getSecond()); - PsiElement newImports = PsiFileFactory.getInstance(project).createFileFromText("dummy.js", JavaScriptLanguage.INSTANCE, importBlock); - - PsiElement firstAdded; - if(before) - { - firstAdded = insertionPlace.getParent().addRangeBefore(newImports.getFirstChild(), newImports.getLastChild(), insertionPlace); - } - else - { - firstAdded = insertionPlace.getParent().addRangeAfter(newImports.getFirstChild(), newImports.getLastChild(), insertionPlace); - } - - if(elementToDelete != null) - { - deleteRange(elementToDelete.first, elementToDelete.second); - } - - PsiElement lastAdded = firstAdded; - final String lastImportText = newImports.getLastChild().getText(); - while(!lastImportText.equals(lastAdded.getText())) - { - lastAdded = lastAdded.getNextSibling(); - } - - PsiElement formatFrom = firstAdded.getPrevSibling() instanceof PsiWhiteSpace ? firstAdded.getPrevSibling() : firstAdded; - PsiElement formatTo = lastAdded.getNextSibling() instanceof PsiWhiteSpace ? lastAdded.getNextSibling() : lastAdded; - - PsiFile realFile = file.getContext() != null ? file.getContext().getContainingFile() : file; - - TextRange textRange = InjectedLanguageManager.getInstance(file.getProject()).injectedToHost(firstAdded, firstAdded.getTextRange()); - CodeStyleManager.getInstance(project).reformatText(realFile, textRange.getStartOffset(), textRange.getEndOffset()); - } - - for(SmartPsiElementPointer pointer : oldImportsPointers) - { - final JSImportStatement statement = (JSImportStatement) pointer.getElement(); - if(statement != null) - { - deleteImport(statement); - } - } - - for(SmartPsiElementPointer pointer : replaceWithShortName) - { - final JSReferenceExpression fqn = (JSReferenceExpression) pointer.getElement(); - if(fqn == null || !fqn.isValid()) - { - continue; - } - String name = fqn.getReferencedName().substring(fqn.getReferencedName().lastIndexOf('.') + 1); - fqn.replace(JSChangeUtil.createExpressionFromText(project, name)); - } - } - }; - } - - @Nonnull - @Override - public Language getLanguage() - { - return JavaScriptLanguage.INSTANCE; - } - - private enum ResolveResult - { - None, ThisOne, OtherOne - } - - private static ResolveResult resolveUsingImports(Collection imports, String fqnToCheck, PsiElement context) - { - String shortName = fqnToCheck.substring(fqnToCheck.lastIndexOf('.') + 1); - String firstOneResolved = null; - for(String anImport : imports) - { - String name = anImport.substring(anImport.lastIndexOf('.') + 1); - String resolvedFqn = null; - if(name.equals(shortName)) - { - resolvedFqn = anImport; - } - else if("*".equals(name)) - { - String qualifier = anImport.substring(0, anImport.lastIndexOf('.')); - if(JSResolveUtil.findClassByQName(qualifier + "." + shortName, context) != null) - { - resolvedFqn = qualifier + "." + shortName; - } - } - if(resolvedFqn != null) - { - if(firstOneResolved == null) - { - firstOneResolved = resolvedFqn; - } - else - { - assert !firstOneResolved.equals(resolvedFqn); - return ResolveResult.OtherOne; - } - } - } - - if(firstOneResolved == null) - { - return ResolveResult.None; - } - else - { - return fqnToCheck.equals(firstOneResolved) ? ResolveResult.ThisOne : ResolveResult.OtherOne; - } - } - - private static void deleteImport(final JSImportStatement anImport) - { - if(!anImport.isValid()) - { - return; - } - PsiElement nextSibling = anImport.getNextSibling(); - if(nextSibling instanceof PsiWhiteSpace) - { - // remove with the following whitespace - String whitespace = nextSibling.getText(); - if(whitespace.contains("]]>")) - { - nextSibling.replace(JSChangeUtil.createJSTreeFromText(anImport.getProject(), "]]>").getPsi()); - } - // don't remove trailing line break if it is an injection suffix - else if(nextSibling.getNextSibling() == null || nextSibling.getNextSibling().getNode().getElementType() != JSTokenTypes.RBRACE || - !(nextSibling.getParent() instanceof JSBlockStatement) || - !ImportUtils.isAnonymousEventHandler((JSBlockStatement) nextSibling.getParent())) - { - nextSibling.delete(); - } - } - anImport.delete(); - } - - private static void deleteRange(PsiElement first, PsiElement last) - { - PsiElement e = first; - while(true) - { - PsiElement next = e.getNextSibling(); - e.delete(); - if(e == last) - { - break; - } - assert next != null; - e = next; - } - } - +public class ECMAScriptImportOptimizer implements ImportOptimizer { + @Override + public boolean supports(PsiFile file) { + return file.getLanguage() == JavaScriptSupportLoader.ECMA_SCRIPT_L4 || JavaScriptSupportLoader.isFlexMxmFile(file); + } + + @Override + @Nonnull + public Runnable processFile(final PsiFile file) { + if (!FileModificationService.getInstance().prepareFileForWrite(file)) { + return EmptyRunnable.INSTANCE; + } + + return new Runnable() { + @Override + @RequiredReadAction + public void run() { + final JSUnusedImportsHelper.Results unusedImportsResults = JSUnusedImportsHelper.getUnusedImports(file); + + MultiMap importsByHolder = new MultiMap() { + @Override + protected Collection createCollection() { + return new HashSet(); + } + }; + + Project project = file.getProject(); + final SmartPointerManager pointerManager = SmartPointerManager.getInstance(project); + final List oldImportsPointers = + new ArrayList(unusedImportsResults.allImports.size()); + for (JSImportStatement anImport : unusedImportsResults.allImports) { + oldImportsPointers.add(pointerManager.createSmartPsiElementPointer(anImport)); + if (unusedImportsResults.unusedImports.contains(anImport)) { + continue; + } + + JSElement importHolder = + ImportUtils.getImportHolder(anImport, JSFunction.class, JSPackageStatement.class, JSFile.class); + assert importHolder != null : "Import holder not found for " + anImport.getText(); + importsByHolder.putValue(importHolder, anImport.getImportText()); + } + + final List replaceWithShortName = new ArrayList(); + for (Map.Entry e : unusedImportsResults.fqnsToReplaceWithImport.entrySet()) { + final Collection importsInScope; + final Collection importsInEnclosingScope; + final JSElement importHolder; + + JSElement enclosingFunction = ImportUtils.getImportHolder(e.getKey(), JSFunction.class); + JSElement enclosingPackage = ImportUtils.getImportHolder(e.getKey(), JSPackageStatement.class); + + if (enclosingFunction != null && !importsByHolder.get(enclosingFunction).isEmpty()) { + importHolder = enclosingFunction; + importsInScope = importsByHolder.get(enclosingFunction); + importsInEnclosingScope = importsByHolder.get(enclosingPackage); + } + else if (enclosingPackage != null) { + importHolder = enclosingPackage; + importsInScope = importsByHolder.get(enclosingPackage); + importsInEnclosingScope = Collections.emptyList(); + } + else { + importHolder = ImportUtils.getImportHolder(e.getKey(), JSFile.class); + importsInScope = importsByHolder.get(importHolder); + importsInEnclosingScope = Collections.emptyList(); + } + + String fqn = e.getValue(); + + ResolveResult resolve = resolveUsingImports(importsInScope, fqn, file); + ResolveResult implicitResolve = resolveUsingImports(importsInEnclosingScope, fqn, file); + + if (resolve == ResolveResult.None && implicitResolve == ResolveResult.None) { + importsByHolder.putValue(importHolder, fqn); + replaceWithShortName.add(pointerManager.createSmartPsiElementPointer(e.getKey())); + } + else if ((resolve == ResolveResult.ThisOne || resolve == ResolveResult.None) + && (implicitResolve == ResolveResult.ThisOne || implicitResolve == ResolveResult.None)) { + replaceWithShortName.add(pointerManager.createSmartPsiElementPointer(e.getKey())); + } + } + + final Collection, Collection>> importsByHolderPointer = + new ArrayList, Collection>>(importsByHolder.size()); + for (JSElement holder : importsByHolder.keySet()) { + importsByHolderPointer.add(Pair.create( + pointerManager.createSmartPsiElementPointer(holder), + importsByHolder.get(holder) + )); + } + + for (Pair, Collection> entry : importsByHolderPointer) { + JSElement holder = entry.getFirst().getElement(); + assert holder != null && holder.isValid(); + + Pair defaultInsertionPlace = ImportUtils.getImportInsertionPlace(holder); + boolean before = defaultInsertionPlace.second; + PsiElement insertionPlace = defaultInsertionPlace.first; + + PsiElement earlyImport = ImportUtils.findEarlyImport(before ? insertionPlace : insertionPlace.getNextSibling()); + Pair elementToDelete = null; + if (earlyImport != null) { + for (PsiElement e = (before ? insertionPlace : insertionPlace.getNextSibling()); e != earlyImport; + e = e.getNextSibling()) { + if (!(e instanceof PsiWhiteSpace)) { + break; + } + } + insertionPlace = earlyImport; + before = true; + PsiElement deleteTo = earlyImport; + while (deleteTo.getNextSibling() instanceof PsiWhiteSpace + || deleteTo.getNextSibling() instanceof JSImportStatement) { + deleteTo = deleteTo.getNextSibling(); + } + elementToDelete = Pair.create(insertionPlace, deleteTo); + } + else if (before && insertionPlace instanceof PsiWhiteSpace) { + insertionPlace = + insertionPlace.replace(JSChangeUtil.createJSTreeFromText(insertionPlace.getProject(), " ").getPsi()); + } + else if (insertionPlace.getNextSibling() instanceof PsiWhiteSpace) { + insertionPlace.getNextSibling() + .replace(JSChangeUtil.createJSTreeFromText(insertionPlace.getProject(), " ").getPsi()); + } + + String importBlock = ImportUtils.createImportBlock(project, entry.getSecond()); + PsiElement newImports = + PsiFileFactory.getInstance(project).createFileFromText("dummy.js", JavaScriptLanguage.INSTANCE, importBlock); + + PsiElement firstAdded; + if (before) { + firstAdded = insertionPlace.getParent() + .addRangeBefore(newImports.getFirstChild(), newImports.getLastChild(), insertionPlace); + } + else { + firstAdded = + insertionPlace.getParent().addRangeAfter(newImports.getFirstChild(), newImports.getLastChild(), insertionPlace); + } + + if (elementToDelete != null) { + deleteRange(elementToDelete.first, elementToDelete.second); + } + + PsiElement lastAdded = firstAdded; + final String lastImportText = newImports.getLastChild().getText(); + while (!lastImportText.equals(lastAdded.getText())) { + lastAdded = lastAdded.getNextSibling(); + } + + PsiElement formatFrom = firstAdded.getPrevSibling() instanceof PsiWhiteSpace ? firstAdded.getPrevSibling() : firstAdded; + PsiElement formatTo = lastAdded.getNextSibling() instanceof PsiWhiteSpace ? lastAdded.getNextSibling() : lastAdded; + + PsiFile realFile = file.getContext() != null ? file.getContext().getContainingFile() : file; + + TextRange textRange = + InjectedLanguageManager.getInstance(file.getProject()).injectedToHost(firstAdded, firstAdded.getTextRange()); + CodeStyleManager.getInstance(project).reformatText(realFile, textRange.getStartOffset(), textRange.getEndOffset()); + } + + for (SmartPsiElementPointer pointer : oldImportsPointers) { + final JSImportStatement statement = (JSImportStatement)pointer.getElement(); + if (statement != null) { + deleteImport(statement); + } + } + + for (SmartPsiElementPointer pointer : replaceWithShortName) { + final JSReferenceExpression fqn = (JSReferenceExpression)pointer.getElement(); + if (fqn == null || !fqn.isValid()) { + continue; + } + String name = fqn.getReferencedName().substring(fqn.getReferencedName().lastIndexOf('.') + 1); + fqn.replace(JSChangeUtil.createExpressionFromText(project, name)); + } + } + }; + } + + @Nonnull + @Override + public Language getLanguage() { + return JavaScriptLanguage.INSTANCE; + } + + private enum ResolveResult { + None, + ThisOne, + OtherOne + } + + private static ResolveResult resolveUsingImports(Collection imports, String fqnToCheck, PsiElement context) { + String shortName = fqnToCheck.substring(fqnToCheck.lastIndexOf('.') + 1); + String firstOneResolved = null; + for (String anImport : imports) { + String name = anImport.substring(anImport.lastIndexOf('.') + 1); + String resolvedFqn = null; + if (name.equals(shortName)) { + resolvedFqn = anImport; + } + else if ("*".equals(name)) { + String qualifier = anImport.substring(0, anImport.lastIndexOf('.')); + if (JSResolveUtil.findClassByQName(qualifier + "." + shortName, context) != null) { + resolvedFqn = qualifier + "." + shortName; + } + } + if (resolvedFqn != null) { + if (firstOneResolved == null) { + firstOneResolved = resolvedFqn; + } + else { + assert !firstOneResolved.equals(resolvedFqn); + return ResolveResult.OtherOne; + } + } + } + + if (firstOneResolved == null) { + return ResolveResult.None; + } + else { + return fqnToCheck.equals(firstOneResolved) ? ResolveResult.ThisOne : ResolveResult.OtherOne; + } + } + + private static void deleteImport(final JSImportStatement anImport) { + if (!anImport.isValid()) { + return; + } + PsiElement nextSibling = anImport.getNextSibling(); + if (nextSibling instanceof PsiWhiteSpace) { + // remove with the following whitespace + String whitespace = nextSibling.getText(); + if (whitespace.contains("]]>")) { + nextSibling.replace(JSChangeUtil.createJSTreeFromText(anImport.getProject(), "]]>").getPsi()); + } + // don't remove trailing line break if it is an injection suffix + else if (nextSibling.getNextSibling() == null + || nextSibling.getNextSibling().getNode().getElementType() != JSTokenTypes.RBRACE + || !(nextSibling.getParent() instanceof JSBlockStatement) + || !ImportUtils.isAnonymousEventHandler((JSBlockStatement)nextSibling.getParent())) { + nextSibling.delete(); + } + } + anImport.delete(); + } + + private static void deleteRange(PsiElement first, PsiElement last) { + PsiElement e = first; + while (true) { + PsiElement next = e.getNextSibling(); + e.delete(); + if (e == last) { + break; + } + assert next != null; + e = next; + } + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/ImportUtils.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/ImportUtils.java index 204c0203..9aa6a080 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/ImportUtils.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/ImportUtils.java @@ -44,343 +44,289 @@ import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; + import java.util.*; /** * @author Maxim.Mossienko - * Date: May 3, 2008 - * Time: 8:35:33 PM + * Date: May 3, 2008 + * Time: 8:35:33 PM */ -public class ImportUtils -{ - @NonNls - private static final String CDATA = "> ANONYMOUS_EVENT_LISTENER_CLASSES = Arrays.asList(JSBlockStatement.class, - JSFunctionExpression.class, JSParenthesizedExpression.class, JSCallExpression.class, JSExpressionStatement.class, JSFile.class); - - @Nullable - private static PsiElement findLBrace(final JSElement holder) - { - for(PsiElement child = holder.getFirstChild(); child != null; child = child.getNextSibling()) - { - if(child.getNode().getElementType() == JSTokenTypes.LBRACE) - { - return child; - } - } - return null; - } - - private static PsiElement specifyInsertionPlace(PsiElement insertBefore, String fqn) - { - JSImportStatement earlyImport = findEarlyImport(insertBefore); - if(earlyImport == null) - { - return insertBefore; - } - - while(compareImports(fqn, earlyImport.getImportText()) > 0) - { - if(earlyImport.getNextSibling() instanceof JSImportStatement) - { - earlyImport = (JSImportStatement) earlyImport.getNextSibling(); - } - else if(earlyImport.getNextSibling() instanceof PsiWhiteSpace && earlyImport.getNextSibling().getNextSibling() instanceof JSImportStatement) - { - earlyImport = (JSImportStatement) earlyImport.getNextSibling().getNextSibling(); - } - else - { - return earlyImport.getNextSibling(); - } - } - return earlyImport; - } - - public static void doImport(@Nonnull PsiElement subject, final @Nonnull String fqn) - { - assert fqn.contains(".") : "Qualified name belongs to default package: " + fqn; - - if(!FileModificationService.getInstance().prepareFileForWrite(subject.getContainingFile())) - { - return; - } - Project project = subject.getProject(); - - final JSReferenceExpression refExpr = PsiTreeUtil.getNonStrictParentOfType(subject, JSReferenceExpression.class); - if(refExpr != null && JSResolveUtil.referenceExpressionShouldBeQualified(refExpr)) - { - refExpr.replace(JSChangeUtil.createExpressionFromText(project, fqn)); // TODO should commit corresponding document before? - return; - } - - JSElement importHolder = getImportHolder(subject, JSPackageStatement.class, JSFile.class); - if(importHolder == null) - { // importHolder is null when completing js2 class name from js code - return; - } - - PsiFile file = importHolder.getContainingFile(); - Document document = PsiDocumentManager.getInstance(project).getDocument(file); - PsiDocumentManager.getInstance(project).doPostponedOperationsAndUnblockDocument(document); - - String textToInsert = createImportBlock(project, Collections.singletonList(fqn)); - - Pair insertionPlace = getImportInsertionPlace(importHolder); - if(!insertionPlace.second && insertionPlace.first.getNextSibling() != null) - { - insertionPlace = Pair.create(insertionPlace.first.getNextSibling(), true); - } - - final int offset; - final String prefix; - final String suffix; - if(insertionPlace.second) - { - PsiElement insertBefore = specifyInsertionPlace(insertionPlace.first, fqn); - offset = insertBefore.getTextRange().getStartOffset(); - prefix = (insertBefore.getPrevSibling() == null && file.getContext() == null) || insertBefore.getPrevSibling() instanceof PsiWhiteSpace ? "" : - "\n"; - suffix = insertBefore instanceof PsiWhiteSpace ? "" : " "; - } - else - { - offset = insertionPlace.first.getTextRange().getEndOffset(); - prefix = insertionPlace.first instanceof PsiWhiteSpace ? "" : "\n"; - suffix = ""; - } - - document.insertString(offset, prefix + textToInsert + suffix); - PsiDocumentManager.getInstance(project).commitDocument(document); - - PsiElement inserted = file.findElementAt(offset); - if(prefix.length() > 0) - { - if(inserted.getNextSibling() instanceof JSImportStatement) - { - inserted = inserted.getNextSibling(); - } - } - else - { - JSImportStatement importStatement = PsiTreeUtil.getParentOfType(inserted, JSImportStatement.class); - if(importStatement != null) - { - inserted = importStatement; - } - } - PsiElement formatFrom = inserted.getPrevSibling() instanceof PsiWhiteSpace ? inserted.getPrevSibling() : inserted; - PsiElement formatTo = inserted.getNextSibling() instanceof PsiWhiteSpace ? inserted.getNextSibling() : inserted; - - PsiFile realFile = file.getContext() != null ? file.getContext().getContainingFile() : file; - final TextRange injectionOffset = InjectedLanguageManager.getInstance(project).injectedToHost(inserted, inserted.getTextRange()); - - CodeStyleManager.getInstance(project).reformatText(realFile, injectionOffset.getStartOffset() + formatFrom.getTextRange().getStartOffset(), - injectionOffset.getEndOffset() + formatTo.getTextRange().getEndOffset()); - } - - private static JSElement getAnonymousEventHandlerBody(JSFile injectedFile) - { - // TODO more elegant way?! - if(injectedFile.getFirstChild() instanceof JSExpressionStatement) - { - JSExpressionStatement expressionStatement = (JSExpressionStatement) injectedFile.getFirstChild(); - if(expressionStatement.getExpression() instanceof JSCallExpression) - { - JSCallExpression callExpression = (JSCallExpression) expressionStatement.getExpression(); - if(callExpression.getMethodExpression() instanceof JSParenthesizedExpression) - { - JSParenthesizedExpression parenthesizedExpression = (JSParenthesizedExpression) callExpression.getMethodExpression(); - if(parenthesizedExpression.getInnerExpression() instanceof JSFunctionExpression) - { - JSFunctionExpression functionExpression = (JSFunctionExpression) parenthesizedExpression.getInnerExpression(); - JSFunction function = functionExpression.getFunction(); - if(function.getBody().length > 0) - { - return function.getBody()[0]; - } - } - } - } - } - assert false : "Couldn't find anonymous event handler body: " + injectedFile; - return null; - } - - private static boolean isAnonymousEventHandlerTag(JSFile jsFile) - { - PsiElement context = jsFile.getContext(); - return context instanceof XmlText && !SCRIPT_TAG_NAME.equals(((XmlTag) context.getParent()).getLocalName()); - } - - private static boolean isAnonymousEventHandlerAttribute(JSFile jsFile) - { - PsiElement context = jsFile.getContext(); - return context instanceof XmlAttributeValue; - } - - public static boolean isAnonymousEventHandler(JSBlockStatement block) - { - JSFile file = (JSFile) iterateUp(block, ANONYMOUS_EVENT_LISTENER_CLASSES); - return file != null && (isAnonymousEventHandlerTag(file) || isAnonymousEventHandlerAttribute(file)); - } - - @Nullable - private static PsiElement iterateUp(PsiElement element, List> classes) - { - Iterator> i = classes.iterator(); - while(i.hasNext()) - { - if(element == null || !i.next().isInstance(element)) - { - return null; - } - if(i.hasNext()) - { - element = element.getParent(); - } - } - return element; - } - - @Nullable - private static JSElement getImportHolderFromXmlBackedClass(final XmlBackedJSClassImpl jsClass) - { - try - { - return jsClass.createOrGetFirstScriptTag(); - } - catch(IncorrectOperationException ex) - { - Logger.getInstance(ImportUtils.class.getName()).error(ex); - } - return null; - } - - - private static int compareImports(String qname1, String qname2) - { - // TODO keep certain classes at the top - return Comparing.compare(qname1, qname2); - } - - public static Pair getImportInsertionPlace(JSElement holder) - { - PsiElement insertionPlace; - final boolean before; - if(holder instanceof JSPackageStatement) - { - insertionPlace = findLBrace(holder); - assert insertionPlace != null : "LBrace not found"; - before = false; - } - else if(holder instanceof JSFunction) - { - final JSBlockStatement block = PsiTreeUtil.getChildOfType(holder, JSBlockStatement.class); - assert block != null : "Function block not found"; - insertionPlace = findLBrace(block); - before = false; - } - else - { //JSFile - if(isAnonymousEventHandlerTag((JSFile) holder)) - { - holder = getAnonymousEventHandlerBody((JSFile) holder); - insertionPlace = findLBrace(holder); - if(hasCDATA(insertionPlace.getNextSibling())) - { - insertionPlace = insertionPlace.getNextSibling(); - } - before = false; - } - else - { - JSPackageStatement aPackage = PsiTreeUtil.getChildOfType(holder, JSPackageStatement.class); - if(aPackage != null) - { - insertionPlace = aPackage; - before = false; - } - else - { - insertionPlace = holder.getFirstChild(); - before = !hasCDATA(insertionPlace); - } - } - } - return Pair.create(insertionPlace, before); - } - - private static boolean hasCDATA(@Nullable PsiElement element) - { - return element instanceof PsiWhiteSpace && element.getText().contains(CDATA); - } - - @Nullable - public static JSElement getImportHolder(PsiElement origin, Class... classes) - { - if(origin instanceof XmlBackedJSClassImpl) - { - return getImportHolderFromXmlBackedClass((XmlBackedJSClassImpl) origin); - } - - JSElement importHolder = PsiTreeUtil.getParentOfType(origin, classes); - if(importHolder instanceof JSFunctionExpression && (isAnonymousEventHandlerTag((JSFile) importHolder.getContainingFile()) || - isAnonymousEventHandlerAttribute((JSFile) importHolder.getContainingFile()))) - { - importHolder = ArrayUtil.contains(JSFile.class, classes) ? (JSElement) importHolder.getContainingFile() : null; - } - - if(importHolder instanceof JSFile) - { - if(isAnonymousEventHandlerAttribute((JSFile) importHolder)) - { - XmlBackedJSClassImpl jsClass = JSResolveUtil.getXmlBackedClass((JSFile) importHolder); - assert jsClass != null; - importHolder = getImportHolderFromXmlBackedClass(jsClass); - } - } - return importHolder; - } - - public static String createImportBlock(Project project, Collection fqns) - { - List sorted = new ArrayList(fqns); - Collections.sort(sorted, new Comparator() - { - @Override - public int compare(final String o1, final String o2) - { - return compareImports(o1, o2); - } - }); - - final String semicolon = JSChangeUtil.getSemicolon(project); - StringBuilder s = new StringBuilder(); - for(String fqn : sorted) - { - s.append("import ").append(fqn).append(semicolon); - } - return s.toString(); - } - - @Nullable - public static JSImportStatement findEarlyImport(@Nullable PsiElement startFrom) - { - for(PsiElement element = startFrom; element != null; element = element.getNextSibling()) - { - if(element instanceof JSImportStatement) - { - return (JSImportStatement) element; - } - if(element instanceof JSClass || element instanceof JSStatement || element instanceof JSFunction) - { - break; - } - } - return null; - } +public class ImportUtils { + @NonNls + private static final String CDATA = "> ANONYMOUS_EVENT_LISTENER_CLASSES = Arrays.asList(JSBlockStatement.class, + JSFunctionExpression.class, JSParenthesizedExpression.class, JSCallExpression.class, JSExpressionStatement.class, JSFile.class + ); + + @Nullable + private static PsiElement findLBrace(final JSElement holder) { + for (PsiElement child = holder.getFirstChild(); child != null; child = child.getNextSibling()) { + if (child.getNode().getElementType() == JSTokenTypes.LBRACE) { + return child; + } + } + return null; + } + + private static PsiElement specifyInsertionPlace(PsiElement insertBefore, String fqn) { + JSImportStatement earlyImport = findEarlyImport(insertBefore); + if (earlyImport == null) { + return insertBefore; + } + + while (compareImports(fqn, earlyImport.getImportText()) > 0) { + if (earlyImport.getNextSibling() instanceof JSImportStatement) { + earlyImport = (JSImportStatement)earlyImport.getNextSibling(); + } + else if (earlyImport.getNextSibling() instanceof PsiWhiteSpace && earlyImport.getNextSibling() + .getNextSibling() instanceof JSImportStatement) { + earlyImport = (JSImportStatement)earlyImport.getNextSibling().getNextSibling(); + } + else { + return earlyImport.getNextSibling(); + } + } + return earlyImport; + } + + public static void doImport(@Nonnull PsiElement subject, final @Nonnull String fqn) { + assert fqn.contains(".") : "Qualified name belongs to default package: " + fqn; + + if (!FileModificationService.getInstance().prepareFileForWrite(subject.getContainingFile())) { + return; + } + Project project = subject.getProject(); + + final JSReferenceExpression refExpr = PsiTreeUtil.getNonStrictParentOfType(subject, JSReferenceExpression.class); + if (refExpr != null && JSResolveUtil.referenceExpressionShouldBeQualified(refExpr)) { + refExpr.replace(JSChangeUtil.createExpressionFromText(project, fqn)); // TODO should commit corresponding document before? + return; + } + + JSElement importHolder = getImportHolder(subject, JSPackageStatement.class, JSFile.class); + if (importHolder == null) { // importHolder is null when completing js2 class name from js code + return; + } + + PsiFile file = importHolder.getContainingFile(); + Document document = PsiDocumentManager.getInstance(project).getDocument(file); + PsiDocumentManager.getInstance(project).doPostponedOperationsAndUnblockDocument(document); + + String textToInsert = createImportBlock(project, Collections.singletonList(fqn)); + + Pair insertionPlace = getImportInsertionPlace(importHolder); + if (!insertionPlace.second && insertionPlace.first.getNextSibling() != null) { + insertionPlace = Pair.create(insertionPlace.first.getNextSibling(), true); + } + + final int offset; + final String prefix; + final String suffix; + if (insertionPlace.second) { + PsiElement insertBefore = specifyInsertionPlace(insertionPlace.first, fqn); + offset = insertBefore.getTextRange().getStartOffset(); + prefix = + (insertBefore.getPrevSibling() == null && file.getContext() == null) || insertBefore.getPrevSibling() instanceof PsiWhiteSpace ? "" : + "\n"; + suffix = insertBefore instanceof PsiWhiteSpace ? "" : " "; + } + else { + offset = insertionPlace.first.getTextRange().getEndOffset(); + prefix = insertionPlace.first instanceof PsiWhiteSpace ? "" : "\n"; + suffix = ""; + } + + document.insertString(offset, prefix + textToInsert + suffix); + PsiDocumentManager.getInstance(project).commitDocument(document); + + PsiElement inserted = file.findElementAt(offset); + if (prefix.length() > 0) { + if (inserted.getNextSibling() instanceof JSImportStatement) { + inserted = inserted.getNextSibling(); + } + } + else { + JSImportStatement importStatement = PsiTreeUtil.getParentOfType(inserted, JSImportStatement.class); + if (importStatement != null) { + inserted = importStatement; + } + } + PsiElement formatFrom = inserted.getPrevSibling() instanceof PsiWhiteSpace ? inserted.getPrevSibling() : inserted; + PsiElement formatTo = inserted.getNextSibling() instanceof PsiWhiteSpace ? inserted.getNextSibling() : inserted; + + PsiFile realFile = file.getContext() != null ? file.getContext().getContainingFile() : file; + final TextRange injectionOffset = InjectedLanguageManager.getInstance(project).injectedToHost(inserted, inserted.getTextRange()); + + CodeStyleManager.getInstance(project) + .reformatText(realFile, injectionOffset.getStartOffset() + formatFrom.getTextRange().getStartOffset(), + injectionOffset.getEndOffset() + formatTo.getTextRange().getEndOffset() + ); + } + + private static JSElement getAnonymousEventHandlerBody(JSFile injectedFile) { + // TODO more elegant way?! + if (injectedFile.getFirstChild() instanceof JSExpressionStatement) { + JSExpressionStatement expressionStatement = (JSExpressionStatement)injectedFile.getFirstChild(); + if (expressionStatement.getExpression() instanceof JSCallExpression) { + JSCallExpression callExpression = (JSCallExpression)expressionStatement.getExpression(); + if (callExpression.getMethodExpression() instanceof JSParenthesizedExpression) { + JSParenthesizedExpression parenthesizedExpression = (JSParenthesizedExpression)callExpression.getMethodExpression(); + if (parenthesizedExpression.getInnerExpression() instanceof JSFunctionExpression) { + JSFunctionExpression functionExpression = (JSFunctionExpression)parenthesizedExpression.getInnerExpression(); + JSFunction function = functionExpression.getFunction(); + if (function.getBody().length > 0) { + return function.getBody()[0]; + } + } + } + } + } + assert false : "Couldn't find anonymous event handler body: " + injectedFile; + return null; + } + + private static boolean isAnonymousEventHandlerTag(JSFile jsFile) { + PsiElement context = jsFile.getContext(); + return context instanceof XmlText && !SCRIPT_TAG_NAME.equals(((XmlTag)context.getParent()).getLocalName()); + } + + private static boolean isAnonymousEventHandlerAttribute(JSFile jsFile) { + PsiElement context = jsFile.getContext(); + return context instanceof XmlAttributeValue; + } + + public static boolean isAnonymousEventHandler(JSBlockStatement block) { + JSFile file = (JSFile)iterateUp(block, ANONYMOUS_EVENT_LISTENER_CLASSES); + return file != null && (isAnonymousEventHandlerTag(file) || isAnonymousEventHandlerAttribute(file)); + } + + @Nullable + private static PsiElement iterateUp(PsiElement element, List> classes) { + Iterator> i = classes.iterator(); + while (i.hasNext()) { + if (element == null || !i.next().isInstance(element)) { + return null; + } + if (i.hasNext()) { + element = element.getParent(); + } + } + return element; + } + + @Nullable + private static JSElement getImportHolderFromXmlBackedClass(final XmlBackedJSClassImpl jsClass) { + try { + return jsClass.createOrGetFirstScriptTag(); + } + catch (IncorrectOperationException ex) { + Logger.getInstance(ImportUtils.class.getName()).error(ex); + } + return null; + } + + + private static int compareImports(String qname1, String qname2) { + // TODO keep certain classes at the top + return Comparing.compare(qname1, qname2); + } + + public static Pair getImportInsertionPlace(JSElement holder) { + PsiElement insertionPlace; + final boolean before; + if (holder instanceof JSPackageStatement) { + insertionPlace = findLBrace(holder); + assert insertionPlace != null : "LBrace not found"; + before = false; + } + else if (holder instanceof JSFunction) { + final JSBlockStatement block = PsiTreeUtil.getChildOfType(holder, JSBlockStatement.class); + assert block != null : "Function block not found"; + insertionPlace = findLBrace(block); + before = false; + } + else { //JSFile + if (isAnonymousEventHandlerTag((JSFile)holder)) { + holder = getAnonymousEventHandlerBody((JSFile)holder); + insertionPlace = findLBrace(holder); + if (hasCDATA(insertionPlace.getNextSibling())) { + insertionPlace = insertionPlace.getNextSibling(); + } + before = false; + } + else { + JSPackageStatement aPackage = PsiTreeUtil.getChildOfType(holder, JSPackageStatement.class); + if (aPackage != null) { + insertionPlace = aPackage; + before = false; + } + else { + insertionPlace = holder.getFirstChild(); + before = !hasCDATA(insertionPlace); + } + } + } + return Pair.create(insertionPlace, before); + } + + private static boolean hasCDATA(@Nullable PsiElement element) { + return element instanceof PsiWhiteSpace && element.getText().contains(CDATA); + } + + @Nullable + public static JSElement getImportHolder(PsiElement origin, Class... classes) { + if (origin instanceof XmlBackedJSClassImpl) { + return getImportHolderFromXmlBackedClass((XmlBackedJSClassImpl)origin); + } + + JSElement importHolder = PsiTreeUtil.getParentOfType(origin, classes); + if (importHolder instanceof JSFunctionExpression && (isAnonymousEventHandlerTag((JSFile)importHolder.getContainingFile()) || + isAnonymousEventHandlerAttribute((JSFile)importHolder.getContainingFile()))) { + importHolder = ArrayUtil.contains(JSFile.class, classes) ? (JSElement)importHolder.getContainingFile() : null; + } + + if (importHolder instanceof JSFile && isAnonymousEventHandlerAttribute((JSFile)importHolder)) { + XmlBackedJSClassImpl jsClass = JSResolveUtil.getXmlBackedClass((JSFile)importHolder); + assert jsClass != null; + importHolder = getImportHolderFromXmlBackedClass(jsClass); + } + return importHolder; + } + + public static String createImportBlock(Project project, Collection fqns) { + List sorted = new ArrayList(fqns); + Collections.sort( + sorted, + new Comparator() { + @Override + public int compare(final String o1, final String o2) { + return compareImports(o1, o2); + } + } + ); + + final String semicolon = JSChangeUtil.getSemicolon(project); + StringBuilder s = new StringBuilder(); + for (String fqn : sorted) { + s.append("import ").append(fqn).append(semicolon); + } + return s.toString(); + } + + @Nullable + public static JSImportStatement findEarlyImport(@Nullable PsiElement startFrom) { + for (PsiElement element = startFrom; element != null; element = element.getNextSibling()) { + if (element instanceof JSImportStatement) { + return (JSImportStatement)element; + } + if (element instanceof JSClass || element instanceof JSStatement || element instanceof JSFunction) { + break; + } + } + return null; + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/LabelInfo.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/LabelInfo.java index 06e3c7fb..76d15adb 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/LabelInfo.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/LabelInfo.java @@ -20,21 +20,18 @@ /** * @author Maxim.Mossienko - * Date: Oct 20, 2008 - * Time: 7:00:45 PM + * Date: Oct 20, 2008 + * Time: 7:00:45 PM */ -class LabelInfo extends LinkedHashMap -{ - int count; +class LabelInfo extends LinkedHashMap { + int count; - String labelFor(int target) - { - if(containsKey(target)) - { - return get(target); - } - final String s = "L" + (++count); - put(target, s); - return s; - } + String labelFor(int target) { + if (containsKey(target)) { + return get(target); + } + final String s = "L" + (++count); + put(target, s); + return s; + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/MemberInfo.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/MemberInfo.java index 8f985a8f..38737b61 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/MemberInfo.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/MemberInfo.java @@ -20,40 +20,34 @@ /** * @author Maxim.Mossienko - * Date: Oct 20, 2008 - * Time: 7:00:39 PM + * Date: Oct 20, 2008 + * Time: 7:00:39 PM */ -abstract class MemberInfo -{ - Traits parentTraits; - int id; - int kind; - Multiname name; - MetaData[] metadata; - boolean isOverride; - boolean isPublic; - boolean isFinal; +abstract class MemberInfo { + Traits parentTraits; + int id; + int kind; + Multiname name; + MetaData[] metadata; + boolean isOverride; + boolean isPublic; + boolean isFinal; - abstract void dump(Abc abc, String indent, String attr, final @Nonnull FlexByteCodeInformationProcessor processor); + abstract void dump(Abc abc, String indent, String attr, final @Nonnull FlexByteCodeInformationProcessor processor); - protected void dumpMetaData(String indent, final @Nonnull FlexByteCodeInformationProcessor processor) - { - if(metadata != null) - { - for(MetaData md : metadata) - { - if(processor.doDumpMetaData(md)) - { - processor.append(indent); - processor.processMetadata(md); - processor.append("\n"); - } - } - } - } + protected void dumpMetaData(String indent, final @Nonnull FlexByteCodeInformationProcessor processor) { + if (metadata != null) { + for (MetaData md : metadata) { + if (processor.doDumpMetaData(md)) { + processor.append(indent); + processor.processMetadata(md); + processor.append("\n"); + } + } + } + } - String getParentName() - { - return parentTraits != null ? parentTraits.getClassName() : null; - } + String getParentName() { + return parentTraits != null ? parentTraits.getClassName() : null; + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/MetaData.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/MetaData.java index 13edac7a..7f0f2496 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/MetaData.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/MetaData.java @@ -20,10 +20,9 @@ /** * @author Maxim.Mossienko - * Date: Oct 20, 2008 - * Time: 7:00:50 PM + * Date: Oct 20, 2008 + * Time: 7:00:50 PM */ -class MetaData extends LinkedHashMap -{ - String name; +class MetaData extends LinkedHashMap { + String name; } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/MethodInfo.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/MethodInfo.java index cfe00ebb..be026f7b 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/MethodInfo.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/MethodInfo.java @@ -20,250 +20,234 @@ /** * @author Maxim.Mossienko - * Date: Oct 20, 2008 - * Time: 7:00:56 PM + * Date: Oct 20, 2008 + * Time: 7:00:56 PM */ -class MethodInfo extends MemberInfo -{ - int flags; - String debugName; - Multiname paramTypes[]; - String paramNames[]; - Multiname optionalValues[]; - Multiname returnType; - int local_count; - int max_scope; - int max_stack; - int code_length; - ByteBuffer code; - Traits activation; - boolean anon; - - @Override - void dump(Abc abc, String indent, String attr, final FlexByteCodeInformationProcessor processor) - { - if(!processor.doDumpMember(this)) - { - return; - } - - processor.processFunction(this, false, abc, indent, attr); - } - - protected void dumpCode(Abc abc, String indent, FlexByteCodeInformationProcessor processor) - { - processor.append(indent + "{\n"); - String oldindent = indent; - indent += TAB; - - if((flags & NEED_ACTIVATION) != 0) - { - processor.append(indent + "activation {\n"); - activation.dump(abc, indent + TAB, "", processor); - processor.append(indent + "}\n"); - } - processor.append(indent + - "// local_count=" + - local_count + - " max_scope=" + - max_scope + - " max_stack=" + - max_stack + - " code_len=" + - code.bytesSize() + - "\n"); - code.setPosition(0); - LabelInfo labels = new LabelInfo(); - - while(!code.eof()) - { - int start = code.getPosition(); - int opcode = code.readUnsignedByte(); - - if(opcode == OP_label || (labels.containsKey(start))) - { - processor.append(indent + "\n"); - processor.append(indent + labels.labelFor(start) + ": \n"); - } - - String str = indent + start; - processor.append(str); - for(int i = str.length(); i < 12; ++i) - { - processor.append(" "); - } - - processor.append(opNames[opcode]); - processor.append(opNames[opcode].length() < 8 ? "\t\t" : "\t"); - - switch(opcode) - { - case OP_debugfile: - case OP_pushstring: - processor.append('"' + abc.strings[readU32()].replaceAll("/\n/g", "\\n").replaceAll("/\t/g", "\\t") + '"'); - break; - case OP_pushnamespace: - processor.append(abc.namespaces[readU32()]); - break; - case OP_pushint: - int i = abc.ints[readU32()]; - processor.append(i + "\t// 0x" + Integer.toString(i, 16)); - break; - case OP_pushuint: - int u = abc.uints[readU32()]; - processor.append(u + "\t// 0x" + Integer.toString(u, 16)); - break; - case OP_pushdouble: - processor.append(abc.doubles[readU32()].toString()); - break; - case OP_getsuper: - case OP_setsuper: - case OP_getproperty: - case OP_initproperty: - case OP_setproperty: - case OP_getlex: - case OP_findpropstrict: - case OP_findproperty: - case OP_finddef: - case OP_deleteproperty: - case OP_istype: - case OP_coerce: - case OP_astype: - case OP_getdescendants: - processor.append(abc.names[readU32()].toString()); - break; - case OP_constructprop: - case OP_callproperty: - case OP_callproplex: - case OP_callsuper: - case OP_callsupervoid: - case OP_callpropvoid: - processor.append(abc.names[readU32()].toString()); - processor.append(" (" + readU32() + ")"); - break; - case OP_newfunction: - { - int method_id = readU32(); - processor.processFunction(abc.methods[method_id], true, abc, "", ""); - abc.methods[method_id].anon = true; - break; - } - case OP_callstatic: - processor.processFunction(abc.methods[readU32()], true, abc, "", ""); - processor.append(" (" + readU32() + ")"); - break; - case OP_newclass: - processor.append(abc.instances[readU32()].toString()); - break; - case OP_lookupswitch: - int pos = start; - int target = pos + readS24(); - int maxindex = readU32(); - processor.append("default:" + labels.labelFor(target)); // target + "("+(target-pos)+")" - processor.append(" maxcase:" + maxindex); - for(i = 0; i <= maxindex; i++) - { - target = pos + readS24(); - processor.append(" " + labels.labelFor(target)); // target + "("+(target-pos)+")" - } - break; - case OP_jump: - case OP_iftrue: - case OP_iffalse: - case OP_ifeq: - case OP_ifne: - case OP_ifge: - case OP_ifnge: - case OP_ifgt: - case OP_ifngt: - case OP_ifle: - case OP_ifnle: - case OP_iflt: - case OP_ifnlt: - case OP_ifstricteq: - case OP_ifstrictne: - int offset = readS24(); - target = code.getPosition() + offset; - //s += target + " ("+offset+")" - processor.append(labels.labelFor(target)); - if(!(labels.containsKey(code.getPosition()))) - { - processor.append("\n"); - } - break; - case OP_inclocal: - case OP_declocal: - case OP_inclocal_i: - case OP_declocal_i: - case OP_getlocal: - case OP_kill: - case OP_setlocal: - case OP_debugline: - case OP_getglobalslot: - case OP_getslot: - case OP_setglobalslot: - case OP_setslot: - case OP_pushshort: - case OP_newcatch: - processor.append("" + readU32()); - break; - case OP_debug: - processor.append("" + code.readUnsignedByte()); - processor.append(" " + readU32()); - processor.append(" " + code.readUnsignedByte()); - processor.append(" " + readU32()); - break; - case OP_newobject: - processor.append("{" + readU32() + "}"); - break; - case OP_newarray: - processor.append("[" + readU32() + "]"); - break; - case OP_call: - case OP_construct: - case OP_constructsuper: - processor.append("(" + readU32() + ")"); - break; - case OP_pushbyte: - case OP_getscopeobject: - processor.append("" + code.readByte()); - break; - case OP_hasnext2: - processor.append(readU32() + " " + readU32()); - default: - /*if (opNames[opcode] == ("0x"+opcode.toString(16).toUpperCase())) +class MethodInfo extends MemberInfo { + int flags; + String debugName; + Multiname paramTypes[]; + String paramNames[]; + Multiname optionalValues[]; + Multiname returnType; + int local_count; + int max_scope; + int max_stack; + int code_length; + ByteBuffer code; + Traits activation; + boolean anon; + + @Override + void dump(Abc abc, String indent, String attr, final FlexByteCodeInformationProcessor processor) { + if (!processor.doDumpMember(this)) { + return; + } + + processor.processFunction(this, false, abc, indent, attr); + } + + protected void dumpCode(Abc abc, String indent, FlexByteCodeInformationProcessor processor) { + processor.append(indent + "{\n"); + String oldindent = indent; + indent += TAB; + + if ((flags & NEED_ACTIVATION) != 0) { + processor.append(indent + "activation {\n"); + activation.dump(abc, indent + TAB, "", processor); + processor.append(indent + "}\n"); + } + processor.append(indent + + "// local_count=" + + local_count + + " max_scope=" + + max_scope + + " max_stack=" + + max_stack + + " code_len=" + + code.bytesSize() + + "\n"); + code.setPosition(0); + LabelInfo labels = new LabelInfo(); + + while (!code.eof()) { + int start = code.getPosition(); + int opcode = code.readUnsignedByte(); + + if (opcode == OP_label || (labels.containsKey(start))) { + processor.append(indent + "\n"); + processor.append(indent + labels.labelFor(start) + ": \n"); + } + + String str = indent + start; + processor.append(str); + for (int i = str.length(); i < 12; ++i) { + processor.append(" "); + } + + processor.append(opNames[opcode]); + processor.append(opNames[opcode].length() < 8 ? "\t\t" : "\t"); + + switch (opcode) { + case OP_debugfile: + case OP_pushstring: + processor.append('"' + abc.strings[readU32()].replaceAll("/\n/g", "\\n").replaceAll("/\t/g", "\\t") + '"'); + break; + case OP_pushnamespace: + processor.append(abc.namespaces[readU32()]); + break; + case OP_pushint: + int i = abc.ints[readU32()]; + processor.append(i + "\t// 0x" + Integer.toString(i, 16)); + break; + case OP_pushuint: + int u = abc.uints[readU32()]; + processor.append(u + "\t// 0x" + Integer.toString(u, 16)); + break; + case OP_pushdouble: + processor.append(abc.doubles[readU32()].toString()); + break; + case OP_getsuper: + case OP_setsuper: + case OP_getproperty: + case OP_initproperty: + case OP_setproperty: + case OP_getlex: + case OP_findpropstrict: + case OP_findproperty: + case OP_finddef: + case OP_deleteproperty: + case OP_istype: + case OP_coerce: + case OP_astype: + case OP_getdescendants: + processor.append(abc.names[readU32()].toString()); + break; + case OP_constructprop: + case OP_callproperty: + case OP_callproplex: + case OP_callsuper: + case OP_callsupervoid: + case OP_callpropvoid: + processor.append(abc.names[readU32()].toString()); + processor.append(" (" + readU32() + ")"); + break; + case OP_newfunction: { + int method_id = readU32(); + processor.processFunction(abc.methods[method_id], true, abc, "", ""); + abc.methods[method_id].anon = true; + break; + } + case OP_callstatic: + processor.processFunction(abc.methods[readU32()], true, abc, "", ""); + processor.append(" (" + readU32() + ")"); + break; + case OP_newclass: + processor.append(abc.instances[readU32()].toString()); + break; + case OP_lookupswitch: + int pos = start; + int target = pos + readS24(); + int maxindex = readU32(); + processor.append("default:" + labels.labelFor(target)); // target + "("+(target-pos)+")" + processor.append(" maxcase:" + maxindex); + for (i = 0; i <= maxindex; i++) { + target = pos + readS24(); + processor.append(" " + labels.labelFor(target)); // target + "("+(target-pos)+")" + } + break; + case OP_jump: + case OP_iftrue: + case OP_iffalse: + case OP_ifeq: + case OP_ifne: + case OP_ifge: + case OP_ifnge: + case OP_ifgt: + case OP_ifngt: + case OP_ifle: + case OP_ifnle: + case OP_iflt: + case OP_ifnlt: + case OP_ifstricteq: + case OP_ifstrictne: + int offset = readS24(); + target = code.getPosition() + offset; + //s += target + " ("+offset+")" + processor.append(labels.labelFor(target)); + if (!(labels.containsKey(code.getPosition()))) { + processor.append("\n"); + } + break; + case OP_inclocal: + case OP_declocal: + case OP_inclocal_i: + case OP_declocal_i: + case OP_getlocal: + case OP_kill: + case OP_setlocal: + case OP_debugline: + case OP_getglobalslot: + case OP_getslot: + case OP_setglobalslot: + case OP_setslot: + case OP_pushshort: + case OP_newcatch: + processor.append("" + readU32()); + break; + case OP_debug: + processor.append("" + code.readUnsignedByte()); + processor.append(" " + readU32()); + processor.append(" " + code.readUnsignedByte()); + processor.append(" " + readU32()); + break; + case OP_newobject: + processor.append("{" + readU32() + "}"); + break; + case OP_newarray: + processor.append("[" + readU32() + "]"); + break; + case OP_call: + case OP_construct: + case OP_constructsuper: + processor.append("(" + readU32() + ")"); + break; + case OP_pushbyte: + case OP_getscopeobject: + processor.append("" + code.readByte()); + break; + case OP_hasnext2: + processor.append(readU32() + " " + readU32()); + default: + /*if (opNames[opcode] == ("0x"+opcode.toString(16).toUpperCase())) s += " UNKNOWN OPCODE"*/ - break; - } - - int size = code.getPosition() - start; - abc.totalSize += size; - abc.opSizes[opcode] += size; - processor.append("\n"); - } - processor.append(oldindent + "}\n"); - } - - int readU32() - { - return code.readU32(); - } - - int readS24() - { - int b = code.readUnsignedByte(); - b |= code.readUnsignedByte() << 8; - b |= code.readByte() << 16; - return b; - } - - boolean isGetMethod() - { - return traitKinds[kind].indexOf(" get") != -1; - } - - boolean isSetMethod() - { - return traitKinds[kind].indexOf(" set") != -1; - } + break; + } + + int size = code.getPosition() - start; + abc.totalSize += size; + abc.opSizes[opcode] += size; + processor.append("\n"); + } + processor.append(oldindent + "}\n"); + } + + int readU32() { + return code.readU32(); + } + + int readS24() { + int b = code.readUnsignedByte(); + b |= code.readUnsignedByte() << 8; + b |= code.readByte() << 16; + return b; + } + + boolean isGetMethod() { + return traitKinds[kind].indexOf(" get") != -1; + } + + boolean isSetMethod() { + return traitKinds[kind].indexOf(" set") != -1; + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/Multiname.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/Multiname.java index ce9577d1..a32003f1 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/Multiname.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/Multiname.java @@ -18,75 +18,65 @@ /** * @author Maxim.Mossienko - * Date: Oct 20, 2008 - * Time: 7:03:18 PM + * Date: Oct 20, 2008 + * Time: 7:03:18 PM */ -class Multiname -{ - String[] nsset; - String name; +class Multiname { + String[] nsset; + String name; - Multiname(String[] nsset, String name) - { - this.nsset = nsset; - this.name = name; - } + Multiname(String[] nsset, String name) { + this.nsset = nsset; + this.name = name; + } - @Override - public String toString() - { - String s = ""; - if(hasNotEmptyNs()) - { - s += nsset[0] + "::"; - } - s += name; + @Override + public String toString() { + String s = ""; + if (hasNotEmptyNs()) { + s += nsset[0] + "::"; + } + s += name; - return s; - } + return s; + } - boolean hasNotEmptyNs() - { - return nsset != null && nsset.length > 0 && nsset[0] != null && nsset[0].length() > 0; - } + boolean hasNotEmptyNs() { + return nsset != null && nsset.length > 0 && nsset[0] != null && nsset[0].length() > 0; + } - public boolean hasNamespace() - { - return hasNotEmptyNs() && (nsset[0].startsWith("http://") || nsset[0].equals("private") || nsset[0].equals("__AS3__.vec") || - nsset[0].indexOf('$') != -1 || nsset[0].indexOf("/private:") != -1); - } + public boolean hasNamespace() { + return hasNotEmptyNs() && (nsset[0].startsWith("http://") || nsset[0].equals("private") || nsset[0].equals("__AS3__.vec") || + nsset[0].indexOf('$') != -1 || nsset[0].indexOf("/private:") != -1); + } - public String getNsName() - { - // TODO: would be nice to pickup namespace var names automatically - return nsset[0].equals("http://adobe.com/AS3/2006/builtin") ? "AS3" : nsset[0].equals("http://www.adobe.com/2006/flex/mx/internal") ? - "mx_internal" : nsset[0].equals("__AS3__.vec") ? "__AS3__$vec" : nsset[0].equals("http://www.adobe.com/2008/actionscript/Flash10/") ? "flash10" - : nsset[0].equals("http://www.adobe.com/2006/actionscript/flash/objectproxy") ? "object_proxy" : nsset[0].equals("http://www.adobe" + - ".com/2006/actionscript/flash/proxy") ? "flash_proxy" : getValidNsName(); - } + public String getNsName() { + // TODO: would be nice to pickup namespace var names automatically + return nsset[0].equals("http://adobe.com/AS3/2006/builtin") ? "AS3" : nsset[0].equals("http://www.adobe.com/2006/flex/mx/internal") ? + "mx_internal" : nsset[0].equals("__AS3__.vec") ? "__AS3__$vec" : nsset[0].equals( + "http://www.adobe.com/2008/actionscript/Flash10/") ? "flash10" + : nsset[0].equals("http://www.adobe.com/2006/actionscript/flash/objectproxy") ? "object_proxy" : nsset[0].equals( + "http://www.adobe" + + ".com/2006/actionscript/flash/proxy") ? "flash_proxy" : getValidNsName(); + } - public String getValidNsName() - { - return makeIdentifier(nsset[0]); - } + public String getValidNsName() { + return makeIdentifier(nsset[0]); + } - private static String makeIdentifier(String s) - { - StringBuilder builder = new StringBuilder(s.length()); - for(int i = 0; i < s.length(); ++i) - { - char ch = s.charAt(i); - if(!Character.isJavaIdentifierPart(ch)) - { - ch = '_'; - } - builder.append(ch); - } - return builder.toString(); - } + private static String makeIdentifier(String s) { + StringBuilder builder = new StringBuilder(s.length()); + for (int i = 0; i < s.length(); ++i) { + char ch = s.charAt(i); + if (!Character.isJavaIdentifierPart(ch)) { + ch = '_'; + } + builder.append(ch); + } + return builder.toString(); + } - public boolean isStarReference() - { - return "*".equals(name); - } + public boolean isStarReference() { + return "*".equals(name); + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/SlotInfo.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/SlotInfo.java index b99711fa..4fbf3d5e 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/SlotInfo.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/SlotInfo.java @@ -18,42 +18,35 @@ /** * @author Maxim.Mossienko - * Date: Oct 20, 2008 - * Time: 7:01:03 PM + * Date: Oct 20, 2008 + * Time: 7:01:03 PM */ -class SlotInfo extends MemberInfo -{ - Multiname type; - Object value; +class SlotInfo extends MemberInfo { + Multiname type; + Object value; - @Override - void dump(Abc abc, String indent, String attr, final FlexByteCodeInformationProcessor processor) - { - if(!processor.doDumpMember(this)) - { - return; - } + @Override + void dump(Abc abc, String indent, String attr, final FlexByteCodeInformationProcessor processor) { + if (!processor.doDumpMember(this)) { + return; + } - if(kind == Abc.TRAIT_Const || kind == Abc.TRAIT_Slot) - { - processor.processVariable(this, indent, attr); - return; - } + if (kind == Abc.TRAIT_Const || kind == Abc.TRAIT_Slot) { + processor.processVariable(this, indent, attr); + return; + } - processor.processClass(this, abc, attr, indent); - } + processor.processClass(this, abc, attr, indent); + } - boolean isInterfaceClass() - { - if(!(value instanceof Traits)) - { - return false; - } - return (((Traits) value).itraits.flags & Abc.CLASS_FLAG_interface) != 0; - } + boolean isInterfaceClass() { + if (!(value instanceof Traits)) { + return false; + } + return (((Traits)value).itraits.flags & Abc.CLASS_FLAG_interface) != 0; + } - public boolean isConst() - { - return Abc.traitKinds[kind].indexOf("const") != -1; - } + public boolean isConst() { + return Abc.traitKinds[kind].indexOf("const") != -1; + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/Swf.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/Swf.java index ce407aa2..1ede8c29 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/Swf.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/Swf.java @@ -20,394 +20,374 @@ /** * @author Maxim.Mossienko - * Date: Oct 20, 2008 - * Time: 7:01:59 PM + * Date: Oct 20, 2008 + * Time: 7:01:59 PM */ -class Swf -{ - private static class Rect - { - int nBits; - int xMin, xMax; - int yMin, yMax; - - @Override - public - @NonNls - String toString() - { - return "[Rect " + xMin + " " + yMin + " " + xMax + " " + yMax + "]"; - } - } - - private FlexByteCodeInformationProcessor processor; - private int bitPos; - private int bitBuf; - - private ByteBuffer data; - - private static final int stagDoABC = 72; // embedded .abc (AVM+) bytecode - private static final int stagDoABC2 = 82; // revised ABC version with a name - - private static final - @NonNls - String[] tagNames = { - "End", - // 00 - "ShowFrame", - // 01 - "DefineShape", - // 02 - "FreeCharacter", - // 03 - "PlaceObject", - // 04 - "RemoveObject", - // 05 - "DefineBits", - // 06 - "DefineButton", - // 07 - "JPEGTables", - // 08 - "SetBackgroundColor", - // 09 - - "DefineFont", - // 10 - "DefineText", - // 11 - "DoAction", - // 12 - "DefineFontInfo", - // 13 - - "DefineSound", - // 14 - "StartSound", - // 15 - "StopSound", - // 16 - - "DefineButtonSound", - // 17 - - "SoundStreamHead", - // 18 - "SoundStreamBlock", - // 19 - - "DefineBitsLossless", - // 20 - "DefineBitsJPEG2", - // 21 - - "DefineShape2", - // 22 - "DefineButtonCxform", - // 23 - - "Protect", - // 24 - - "PathsArePostScript", - // 25 - - "PlaceObject2", - // 26 - "27 (invalid)", - // 27 - "RemoveObject2", - // 28 - - "SyncFrame", - // 29 - "30 (invalid)", - // 30 - "FreeAll", - // 31 - - "DefineShape3", - // 32 - "DefineText2", - // 33 - "DefineButton2", - // 34 - "DefineBitsJPEG3", - // 35 - "DefineBitsLossless2", - // 36 - "DefineEditText", - // 37 - - "DefineVideo", - // 38 - - "DefineSprite", - // 39 - "NameCharacter", - // 40 - "ProductInfo", - // 41 - "DefineTextFormat", - // 42 - "FrameLabel", - // 43 - "DefineBehavior", - // 44 - "SoundStreamHead2", - // 45 - "DefineMorphShape", - // 46 - "FrameTag", - // 47 - "DefineFont2", - // 48 - "GenCommand", - // 49 - "DefineCommandObj", - // 50 - "CharacterSet", - // 51 - "FontRef", - // 52 - - "DefineFunction", - // 53 - "PlaceFunction", - // 54 - - "GenTagObject", - // 55 - - "ExportAssets", - // 56 - "ImportAssets", - // 57 - - "EnableDebugger", - // 58 - - "DoInitAction", - // 59 - "DefineVideoStream", - // 60 - "VideoFrame", - // 61 - - "DefineFontInfo2", - // 62 - "DebugID", - // 63 - "EnableDebugger2", - // 64 - "ScriptLimits", - // 65 - - "SetTabIndex", - // 66 - - "DefineShape4", - // 67 - "68 (invalid)", - // 68 - - "FileAttributes", - // 69 - - "PlaceObject3", - // 70 - "ImportAssets2", - // 71 - - "DoABC", - // 72 - "DefineFontAlignZones", - // 73 - "CSMTextSettings", - // 74 - "DefineFont3", - // 75 - "SymbolClass", - // 76 - "Metadata", - // 77 - "ScalingGrid", - // 78 - "79 (invalid)", - // 79 - "80 (invalid)", - // 80 - "81 (invalid)", - // 81 - "DoABC2", - // 82 - "DefineShape4", - // 83 - "DefineMorphShape2", - // 84 - "85 (invalid)", - // 85 - "DefineSceneAndFrameLabelData", - // 86 - "DefineBinaryData", - // 87 - "DefineFontName", - // 88 - "89 (unknown) ", - // 89 - "90 (unknown) ", - // 90 - "DefineFont4", - // 91 - "(invalid)" - // end - }; - - - public Swf(final ByteBuffer _data, final FlexByteCodeInformationProcessor _processor) - { - data = _data; - processor = _processor; - - final Rect rect = decodeRect(); - final int rate = data.readUnsignedByte() << 8 | data.readUnsignedByte(); - final int count = data.readUnsignedShort(); - - processor.dumpStat("size " + rect + "\n"); - processor.dumpStat("frame rate " + rate + "\n"); - processor.dumpStat("frame count " + count + "\n"); - - decodeTags(); - } - - private void decodeTags() - { - int type, h, length; - - while(data.getPosition() < data.bytesSize()) - { - type = (h = data.readUnsignedShort()) >> 6; - - if(((length = h & 0x3F) == 0x3F)) - { - length = data.readInt(); - } - - processor.dumpStat((type < tagNames.length ? tagNames[type] : "undefined") + " " + length + "b " + ((int) 100f * length / data.bytesSize()) + - "%\n"); - - switch(type) - { - case 0: - return; - case stagDoABC2: - int pos1 = data.getPosition(); - data.readInt(); - final String abcName = readString(); - processor.dumpStat("\nabc name " + abcName + "\n"); - length -= (data.getPosition() - pos1); - // fall through - case stagDoABC: - ByteBuffer data2 = new ByteBuffer(); - data2.setLittleEndian(); - data.readBytes(data2, length); - new Abc(data2, processor).dump(processor.getAbcInSwfIndent()); - processor.append("\n"); - break; - default: - data.incPosition(length); - } - } - } - - private String readString() - { - String s = ""; - int c; - - while((c = data.readUnsignedByte()) != 0) - { - s += (char) c; - } - - return s; - } - - private void syncBits() - { - bitPos = 0; - } - - private Rect decodeRect() - - { - syncBits(); - - Rect rect = new Rect(); - - int nBits = readUBits(5); - rect.xMin = readSBits(nBits); - rect.xMax = readSBits(nBits); - rect.yMin = readSBits(nBits); - rect.yMax = readSBits(nBits); - - return rect; - } - - int readSBits(int numBits) - { - if(numBits > 32) - { - throw new Error("Number of bits > 32"); - } - - int num = readUBits(numBits); - int shift = 32 - numBits; - // sign extension - num = (num << shift) >> shift; - return num; - } - - int readUBits(int numBits) - { - if(numBits == 0) - { - return 0; - } - - int bitsLeft = numBits; - int result = 0; - - if(bitPos == 0) //no value in the buffer - read a byte - { - bitBuf = data.readUnsignedByte(); - bitPos = 8; - } - - while(true) - { - int shift = bitsLeft - bitPos; - if(shift > 0) - { - // Consume the entire buffer - result |= bitBuf << shift; - bitsLeft -= bitPos; - - // Get the next byte from the input stream - bitBuf = data.readUnsignedByte(); - bitPos = 8; - } - else - { - // Consume a portion of the buffer - result |= bitBuf >> -shift; - bitPos -= bitsLeft; - bitBuf &= 0xff >> (8 - bitPos); // mask off the consumed bits - - // if (sb.append) System.out.sb.appendln(" read"+numBits+" " + result); - return result; - } - } - } +class Swf { + private static class Rect { + int nBits; + int xMin, xMax; + int yMin, yMax; + + @Override + public + @NonNls + String toString() { + return "[Rect " + xMin + " " + yMin + " " + xMax + " " + yMax + "]"; + } + } + + private FlexByteCodeInformationProcessor processor; + private int bitPos; + private int bitBuf; + + private ByteBuffer data; + + private static final int stagDoABC = 72; // embedded .abc (AVM+) bytecode + private static final int stagDoABC2 = 82; // revised ABC version with a name + + private static final + @NonNls + String[] tagNames = { + "End", + // 00 + "ShowFrame", + // 01 + "DefineShape", + // 02 + "FreeCharacter", + // 03 + "PlaceObject", + // 04 + "RemoveObject", + // 05 + "DefineBits", + // 06 + "DefineButton", + // 07 + "JPEGTables", + // 08 + "SetBackgroundColor", + // 09 + + "DefineFont", + // 10 + "DefineText", + // 11 + "DoAction", + // 12 + "DefineFontInfo", + // 13 + + "DefineSound", + // 14 + "StartSound", + // 15 + "StopSound", + // 16 + + "DefineButtonSound", + // 17 + + "SoundStreamHead", + // 18 + "SoundStreamBlock", + // 19 + + "DefineBitsLossless", + // 20 + "DefineBitsJPEG2", + // 21 + + "DefineShape2", + // 22 + "DefineButtonCxform", + // 23 + + "Protect", + // 24 + + "PathsArePostScript", + // 25 + + "PlaceObject2", + // 26 + "27 (invalid)", + // 27 + "RemoveObject2", + // 28 + + "SyncFrame", + // 29 + "30 (invalid)", + // 30 + "FreeAll", + // 31 + + "DefineShape3", + // 32 + "DefineText2", + // 33 + "DefineButton2", + // 34 + "DefineBitsJPEG3", + // 35 + "DefineBitsLossless2", + // 36 + "DefineEditText", + // 37 + + "DefineVideo", + // 38 + + "DefineSprite", + // 39 + "NameCharacter", + // 40 + "ProductInfo", + // 41 + "DefineTextFormat", + // 42 + "FrameLabel", + // 43 + "DefineBehavior", + // 44 + "SoundStreamHead2", + // 45 + "DefineMorphShape", + // 46 + "FrameTag", + // 47 + "DefineFont2", + // 48 + "GenCommand", + // 49 + "DefineCommandObj", + // 50 + "CharacterSet", + // 51 + "FontRef", + // 52 + + "DefineFunction", + // 53 + "PlaceFunction", + // 54 + + "GenTagObject", + // 55 + + "ExportAssets", + // 56 + "ImportAssets", + // 57 + + "EnableDebugger", + // 58 + + "DoInitAction", + // 59 + "DefineVideoStream", + // 60 + "VideoFrame", + // 61 + + "DefineFontInfo2", + // 62 + "DebugID", + // 63 + "EnableDebugger2", + // 64 + "ScriptLimits", + // 65 + + "SetTabIndex", + // 66 + + "DefineShape4", + // 67 + "68 (invalid)", + // 68 + + "FileAttributes", + // 69 + + "PlaceObject3", + // 70 + "ImportAssets2", + // 71 + + "DoABC", + // 72 + "DefineFontAlignZones", + // 73 + "CSMTextSettings", + // 74 + "DefineFont3", + // 75 + "SymbolClass", + // 76 + "Metadata", + // 77 + "ScalingGrid", + // 78 + "79 (invalid)", + // 79 + "80 (invalid)", + // 80 + "81 (invalid)", + // 81 + "DoABC2", + // 82 + "DefineShape4", + // 83 + "DefineMorphShape2", + // 84 + "85 (invalid)", + // 85 + "DefineSceneAndFrameLabelData", + // 86 + "DefineBinaryData", + // 87 + "DefineFontName", + // 88 + "89 (unknown) ", + // 89 + "90 (unknown) ", + // 90 + "DefineFont4", + // 91 + "(invalid)" + // end + }; + + + public Swf(final ByteBuffer _data, final FlexByteCodeInformationProcessor _processor) { + data = _data; + processor = _processor; + + final Rect rect = decodeRect(); + final int rate = data.readUnsignedByte() << 8 | data.readUnsignedByte(); + final int count = data.readUnsignedShort(); + + processor.dumpStat("size " + rect + "\n"); + processor.dumpStat("frame rate " + rate + "\n"); + processor.dumpStat("frame count " + count + "\n"); + + decodeTags(); + } + + private void decodeTags() { + int type, h, length; + + while (data.getPosition() < data.bytesSize()) { + type = (h = data.readUnsignedShort()) >> 6; + + if (((length = h & 0x3F) == 0x3F)) { + length = data.readInt(); + } + + processor.dumpStat((type < tagNames.length ? tagNames[type] : "undefined") + " " + length + "b " + ((int)100f * length / data.bytesSize()) + + "%\n"); + + switch (type) { + case 0: + return; + case stagDoABC2: + int pos1 = data.getPosition(); + data.readInt(); + final String abcName = readString(); + processor.dumpStat("\nabc name " + abcName + "\n"); + length -= (data.getPosition() - pos1); + // fall through + case stagDoABC: + ByteBuffer data2 = new ByteBuffer(); + data2.setLittleEndian(); + data.readBytes(data2, length); + new Abc(data2, processor).dump(processor.getAbcInSwfIndent()); + processor.append("\n"); + break; + default: + data.incPosition(length); + } + } + } + + private String readString() { + String s = ""; + int c; + + while ((c = data.readUnsignedByte()) != 0) { + s += (char)c; + } + + return s; + } + + private void syncBits() { + bitPos = 0; + } + + private Rect decodeRect() { + syncBits(); + + Rect rect = new Rect(); + + int nBits = readUBits(5); + rect.xMin = readSBits(nBits); + rect.xMax = readSBits(nBits); + rect.yMin = readSBits(nBits); + rect.yMax = readSBits(nBits); + + return rect; + } + + int readSBits(int numBits) { + if (numBits > 32) { + throw new Error("Number of bits > 32"); + } + + int num = readUBits(numBits); + int shift = 32 - numBits; + // sign extension + num = (num << shift) >> shift; + return num; + } + + int readUBits(int numBits) { + if (numBits == 0) { + return 0; + } + + int bitsLeft = numBits; + int result = 0; + + if (bitPos == 0) //no value in the buffer - read a byte + { + bitBuf = data.readUnsignedByte(); + bitPos = 8; + } + + while (true) { + int shift = bitsLeft - bitPos; + if (shift > 0) { + // Consume the entire buffer + result |= bitBuf << shift; + bitsLeft -= bitPos; + + // Get the next byte from the input stream + bitBuf = data.readUnsignedByte(); + bitPos = 8; + } + else { + // Consume a portion of the buffer + result |= bitBuf >> -shift; + bitPos -= bitsLeft; + bitBuf &= 0xff >> (8 - bitPos); // mask off the consumed bits + + // if (sb.append) System.out.sb.appendln(" read"+numBits+" " + result); + return result; + } + } + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/Traits.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/Traits.java index ca4f3dff..5b31f74b 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/Traits.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/Traits.java @@ -21,44 +21,38 @@ /** * @author Maxim.Mossienko - * Date: Oct 20, 2008 - * Time: 7:01:09 PM + * Date: Oct 20, 2008 + * Time: 7:01:09 PM */ -class Traits -{ - Object name; - MethodInfo init; - Traits itraits; - Multiname base; - int flags; - String protectedNs; - Multiname interfaces[]; - Map names = new LinkedHashMap(); - Map slots = new LinkedHashMap(); - Map methods = new LinkedHashMap(); - Map members = new LinkedHashMap(); +class Traits { + Object name; + MethodInfo init; + Traits itraits; + Multiname base; + int flags; + String protectedNs; + Multiname interfaces[]; + Map names = new LinkedHashMap(); + Map slots = new LinkedHashMap(); + Map methods = new LinkedHashMap(); + Map members = new LinkedHashMap(); - @Override - public String toString() - { - return name.toString(); - } + @Override + public String toString() { + return name.toString(); + } - public void dump(Abc abc, String indent, String attr, final FlexByteCodeInformationProcessor processor) - { - for(MemberInfo m : members.values()) - { - m.dump(abc, indent, attr, processor); - } - } + public void dump(Abc abc, String indent, String attr, final FlexByteCodeInformationProcessor processor) { + for (MemberInfo m : members.values()) { + m.dump(abc, indent, attr, processor); + } + } - String getClassName() - { - final String s = name.toString(); - if(s.endsWith(Abc.$)) - { - return s.substring(0, s.length() - 1); - } - return s; - } + String getClassName() { + final String s = name.toString(); + if (s.endsWith(Abc.$)) { + return s.substring(0, s.length() - 1); + } + return s; + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/folding/JavaScriptFoldingBuilder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/folding/JavaScriptFoldingBuilder.java index 675d06b9..9b3e2bf0 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/folding/JavaScriptFoldingBuilder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/folding/JavaScriptFoldingBuilder.java @@ -37,6 +37,7 @@ import consulo.language.psi.PsiWhiteSpace; import jakarta.annotation.Nonnull; + import java.util.ArrayList; import java.util.List; @@ -44,179 +45,154 @@ * @author max */ @ExtensionImpl -public class JavaScriptFoldingBuilder implements FoldingBuilder -{ - @RequiredReadAction - @Nonnull - @Override - public FoldingDescriptor[] buildFoldRegions(@Nonnull ASTNode node, @Nonnull Document document) - { - List descriptors = new ArrayList<>(); - appendDescriptors(node, document, descriptors); - return descriptors.toArray(new FoldingDescriptor[descriptors.size()]); - } - - @RequiredReadAction - private static ASTNode appendDescriptors(final ASTNode node, final Document document, final List descriptors) - { - final IElementType type = node.getElementType(); - if(type == JSElementTypes.BLOCK_STATEMENT || - type == JSElementTypes.OBJECT_LITERAL_EXPRESSION || - type == JSElementTypes.ARRAY_LITERAL_EXPRESSION || - type == JSElementTypes.XML_LITERAL_EXPRESSION) - { - TextRange textRange = node.getTextRange(); - if(textRange.getEndOffset() < document.getTextLength() && document.getLineNumber(textRange.getStartOffset()) != document.getLineNumber(textRange - .getEndOffset())) - { - addDescriptorForNode(node, descriptors); - } - } - else if(type == JSTokenTypes.DOC_COMMENT) - { - addDescriptorForNode(node, descriptors); - } - else if(type == JSTokenTypes.C_STYLE_COMMENT) - { - addDescriptorForNode(node, descriptors); - } - else if(type == JSTokenTypes.END_OF_LINE_COMMENT) - { - return collapseConsequentNodesOfSpecifiedType(node, descriptors, JSTokenTypes.END_OF_LINE_COMMENT); - } - else if(node.getPsi() instanceof JavaScriptImportStatementBase) - { - return collapseConsequentNodesOfSpecifiedType(node, descriptors, PsiUtilCore.getElementType(node)); - } - else if(type == JSElementTypes.CLASS || type == JSElementTypes.PACKAGE_STATEMENT) - { - ASTNode lbrace = node.findChildByType(JSTokenTypes.LBRACE); - - if(lbrace != null) - { - addDescriptorForRange(node, descriptors, new TextRange(lbrace.getStartOffset(), node.getTextRange().getEndOffset())); - } - } - - if(type instanceof JSFileElementType) - { - // expand chameleon - node.getPsi().getFirstChild(); - } - - ASTNode child = node.getFirstChildNode(); - while(child != null) - { - child = appendDescriptors(child, document, descriptors).getTreeNext(); - } - - return node; - } - - private static void addDescriptorForRange(ASTNode node, List descriptors, TextRange range) - { - if(range.getLength() > 1) - { - descriptors.add(new FoldingDescriptor(node, range)); - } - } - - private static void addDescriptorForNode(ASTNode node, List descriptors) - { - TextRange range = node.getTextRange(); - addDescriptorForRange(node, descriptors, range); - } - - @RequiredReadAction - private static ASTNode collapseConsequentNodesOfSpecifiedType(final ASTNode node, final List descriptors, final IElementType endOfLineComment) - { - PsiElement lastEoLComment = node.getPsi(); - PsiElement current = lastEoLComment.getNextSibling(); - - while(current != null) - { - if(!(current instanceof PsiWhiteSpace)) - { - break; - } - current = current.getNextSibling(); - if(current != null && current.getNode().getElementType() == endOfLineComment) - { - lastEoLComment = current; - current = current.getNextSibling(); - } - } - - if(lastEoLComment != node) - { - addDescriptorForRange(node, descriptors, new TextRange(node.getStartOffset(), lastEoLComment.getTextOffset() + lastEoLComment.getTextLength())); - return lastEoLComment.getNode(); - } - else - { - return node; - } - } - - @RequiredReadAction - @Override - public String getPlaceholderText(ASTNode node) - { - final IElementType type = node.getElementType(); - if(type == JSTokenTypes.DOC_COMMENT) - { - return "/**...*/"; - } - else if(type == JSTokenTypes.C_STYLE_COMMENT) - { - return "/*...*/"; - } - else if(type == JSTokenTypes.END_OF_LINE_COMMENT) - { - return "//..."; - } - else if(node.getPsi() instanceof JavaScriptImportStatementBase) - { - return "import ..."; - } - else if(type == JSElementTypes.BLOCK_STATEMENT || - type == JSElementTypes.OBJECT_LITERAL_EXPRESSION || - type == JSElementTypes.CLASS || - type == JSElementTypes.PACKAGE_STATEMENT) - { - return "{...}"; - } - else if(type == JSElementTypes.ARRAY_LITERAL_EXPRESSION) - { - return "[...]"; - } - else if(type == JSElementTypes.XML_LITERAL_EXPRESSION) - { - return ""; - } - return null; - } - - @RequiredReadAction - @Override - public boolean isCollapsedByDefault(ASTNode node) - { - if(node.getTreeParent().getElementType() instanceof JSFileElementType && node.getTreePrev() == null && - node.getPsi() instanceof PsiComment) - { - return CodeFoldingSettings.getInstance().COLLAPSE_FILE_HEADER; - } - if(node.getPsi() instanceof JavaScriptImportStatementBase) - { - return CodeFoldingSettings.getInstance().COLLAPSE_IMPORTS; - } - return CodeFoldingSettings.getInstance().COLLAPSE_DOC_COMMENTS && node.getElementType() == JSTokenTypes.DOC_COMMENT; - } - - @Nonnull - @Override - public Language getLanguage() - { - return JavaScriptLanguage.INSTANCE; - } +public class JavaScriptFoldingBuilder implements FoldingBuilder { + @RequiredReadAction + @Nonnull + @Override + public FoldingDescriptor[] buildFoldRegions(@Nonnull ASTNode node, @Nonnull Document document) { + List descriptors = new ArrayList<>(); + appendDescriptors(node, document, descriptors); + return descriptors.toArray(new FoldingDescriptor[descriptors.size()]); + } + + @RequiredReadAction + private static ASTNode appendDescriptors(final ASTNode node, final Document document, final List descriptors) { + final IElementType type = node.getElementType(); + if (type == JSElementTypes.BLOCK_STATEMENT + || type == JSElementTypes.OBJECT_LITERAL_EXPRESSION + || type == JSElementTypes.ARRAY_LITERAL_EXPRESSION + || type == JSElementTypes.XML_LITERAL_EXPRESSION) { + TextRange textRange = node.getTextRange(); + if (textRange.getEndOffset() < document.getTextLength() + && document.getLineNumber(textRange.getStartOffset()) != document.getLineNumber(textRange.getEndOffset())) { + addDescriptorForNode(node, descriptors); + } + } + else if (type == JSTokenTypes.DOC_COMMENT) { + addDescriptorForNode(node, descriptors); + } + else if (type == JSTokenTypes.C_STYLE_COMMENT) { + addDescriptorForNode(node, descriptors); + } + else if (type == JSTokenTypes.END_OF_LINE_COMMENT) { + return collapseConsequentNodesOfSpecifiedType(node, descriptors, JSTokenTypes.END_OF_LINE_COMMENT); + } + else if (node.getPsi() instanceof JavaScriptImportStatementBase) { + return collapseConsequentNodesOfSpecifiedType(node, descriptors, PsiUtilCore.getElementType(node)); + } + else if (type == JSElementTypes.CLASS || type == JSElementTypes.PACKAGE_STATEMENT) { + ASTNode lbrace = node.findChildByType(JSTokenTypes.LBRACE); + + if (lbrace != null) { + addDescriptorForRange(node, descriptors, new TextRange(lbrace.getStartOffset(), node.getTextRange().getEndOffset())); + } + } + + if (type instanceof JSFileElementType) { + // expand chameleon + node.getPsi().getFirstChild(); + } + + ASTNode child = node.getFirstChildNode(); + while (child != null) { + child = appendDescriptors(child, document, descriptors).getTreeNext(); + } + + return node; + } + + private static void addDescriptorForRange(ASTNode node, List descriptors, TextRange range) { + if (range.getLength() > 1) { + descriptors.add(new FoldingDescriptor(node, range)); + } + } + + private static void addDescriptorForNode(ASTNode node, List descriptors) { + TextRange range = node.getTextRange(); + addDescriptorForRange(node, descriptors, range); + } + + @RequiredReadAction + private static ASTNode collapseConsequentNodesOfSpecifiedType( + final ASTNode node, + final List descriptors, + final IElementType endOfLineComment + ) { + PsiElement lastEoLComment = node.getPsi(); + PsiElement current = lastEoLComment.getNextSibling(); + + while (current != null) { + if (!(current instanceof PsiWhiteSpace)) { + break; + } + current = current.getNextSibling(); + if (current != null && current.getNode().getElementType() == endOfLineComment) { + lastEoLComment = current; + current = current.getNextSibling(); + } + } + + if (lastEoLComment != node) { + addDescriptorForRange( + node, + descriptors, + new TextRange(node.getStartOffset(), lastEoLComment.getTextOffset() + lastEoLComment.getTextLength()) + ); + return lastEoLComment.getNode(); + } + else { + return node; + } + } + + @RequiredReadAction + @Override + public String getPlaceholderText(ASTNode node) { + final IElementType type = node.getElementType(); + if (type == JSTokenTypes.DOC_COMMENT) { + return "/**...*/"; + } + else if (type == JSTokenTypes.C_STYLE_COMMENT) { + return "/*...*/"; + } + else if (type == JSTokenTypes.END_OF_LINE_COMMENT) { + return "//..."; + } + else if (node.getPsi() instanceof JavaScriptImportStatementBase) { + return "import ..."; + } + else if (type == JSElementTypes.BLOCK_STATEMENT + || type == JSElementTypes.OBJECT_LITERAL_EXPRESSION + || type == JSElementTypes.CLASS + || type == JSElementTypes.PACKAGE_STATEMENT) { + return "{...}"; + } + else if (type == JSElementTypes.ARRAY_LITERAL_EXPRESSION) { + return "[...]"; + } + else if (type == JSElementTypes.XML_LITERAL_EXPRESSION) { + return ""; + } + return null; + } + + @RequiredReadAction + @Override + public boolean isCollapsedByDefault(ASTNode node) { + if (node.getTreeParent().getElementType() instanceof JSFileElementType + && node.getTreePrev() == null + && node.getPsi() instanceof PsiComment) { + return CodeFoldingSettings.getInstance().COLLAPSE_FILE_HEADER; + } + if (node.getPsi() instanceof JavaScriptImportStatementBase) { + return CodeFoldingSettings.getInstance().COLLAPSE_IMPORTS; + } + return CodeFoldingSettings.getInstance().COLLAPSE_DOC_COMMENTS && node.getElementType() == JSTokenTypes.DOC_COMMENT; + } + + @Nonnull + @Override + public Language getLanguage() { + return JavaScriptLanguage.INSTANCE; + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSCodeStylePanel.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSCodeStylePanel.java index 78b197a6..8184e5c4 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSCodeStylePanel.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSCodeStylePanel.java @@ -30,6 +30,7 @@ import org.jetbrains.annotations.NonNls; import jakarta.annotation.Nonnull; + import javax.swing.*; import javax.swing.event.DocumentEvent; import java.awt.event.ItemEvent; @@ -37,144 +38,128 @@ /** * @author Maxim.Mossienko - * Date: Mar 12, 2008 - * Time: 10:39:21 PM + * Date: Mar 12, 2008 + * Time: 10:39:21 PM */ -public class JSCodeStylePanel extends CodeStyleAbstractPanel -{ - private JPanel myPanel; - private JCheckBox myIndentPackageChildren; - private JPanel myPreviewPanel; - private JTextField myFieldPrefixTextField; - private JTextField myPropertyPrefixTextField; - private JCheckBox myUseSemicolon; - private boolean myInsideUpdate = false; - - public JSCodeStylePanel(final CodeStyleSettings settings) - { - super(settings); - - installPreviewPanel(myPreviewPanel); - addPanelToWatch(myPanel); - - myUseSemicolon.addItemListener(new ItemListener() - { - @Override - public void itemStateChanged(final ItemEvent e) - { - if(!myInsideUpdate) - { - //updatePreviewEditor(); - somethingChanged(); - } - } - }); - - final DocumentAdapter adapter = new DocumentAdapter() - { - @Override - protected void textChanged(final DocumentEvent e) - { - if(!myInsideUpdate) - { - //updatePreviewEditor(); - somethingChanged(); - } - } - }; - - myFieldPrefixTextField.getDocument().addDocumentListener(adapter); - myPropertyPrefixTextField.getDocument().addDocumentListener(adapter); - } - - @Override - protected EditorHighlighter createHighlighter(final EditorColorsScheme scheme) - { - return EditorHighlighterFactory.getInstance().createEditorHighlighter(new LightVirtualFile("a.as"), scheme, null); - } - - @Override - protected int getRightMargin() - { - return 60; - } - - @Override - protected void prepareForReformat(final PsiFile psiFile) - { - } - - @Override - @Nonnull - protected FileType getFileType() - { - return JavaScriptFileType.INSTANCE; - } - - @Override - protected String getPreviewText() - { - final JSCodeStyleSettings jsCodeStyleSettings = getSettings().getCustomSettings(JSCodeStyleSettings.class); - @NonNls String baseName = "field"; - @NonNls String propertyName = (myPropertyPrefixTextField != null ? myPropertyPrefixTextField.getText() : jsCodeStyleSettings.PROPERTY_PREFIX) + - baseName; - @NonNls String varName = (myFieldPrefixTextField != null ? myFieldPrefixTextField.getText() : jsCodeStyleSettings.FIELD_PREFIX) + baseName; - @NonNls String semiColon = (myUseSemicolon != null ? myUseSemicolon.isSelected() : jsCodeStyleSettings.USE_SEMICOLON_AFTER_STATEMENT) ? ";" : ""; - - return "package aaa {\nclass XXX {\n" + - "private var " + varName + semiColon + "\n" + - "function get " + propertyName + "() {\nreturn " + varName + semiColon + "\n" + - "}\n}\n}"; - } - - @Override - public void apply(final CodeStyleSettings settings) - { - final JSCodeStyleSettings jsCodeStyleSettings = settings.getCustomSettings(JSCodeStyleSettings.class); - jsCodeStyleSettings.INDENT_PACKAGE_CHILDREN = myIndentPackageChildren.isSelected() ? JSCodeStyleSettings.INDENT : JSCodeStyleSettings - .DO_NOT_INDENT; - jsCodeStyleSettings.FIELD_PREFIX = myFieldPrefixTextField.getText(); - jsCodeStyleSettings.PROPERTY_PREFIX = myPropertyPrefixTextField.getText(); - jsCodeStyleSettings.USE_SEMICOLON_AFTER_STATEMENT = myUseSemicolon.isSelected(); - } - - @Override - public boolean isModified(final CodeStyleSettings settings) - { - final JSCodeStyleSettings jsCodeStyleSettings = settings.getCustomSettings(JSCodeStyleSettings.class); - return (jsCodeStyleSettings.INDENT_PACKAGE_CHILDREN == JSCodeStyleSettings.INDENT) != myIndentPackageChildren.isSelected() || - !jsCodeStyleSettings.FIELD_PREFIX.equals(myFieldPrefixTextField.getText()) || - !jsCodeStyleSettings.PROPERTY_PREFIX.equals(myPropertyPrefixTextField.getText()) || - jsCodeStyleSettings.USE_SEMICOLON_AFTER_STATEMENT != (myUseSemicolon.isSelected()); - } - - @Override - public JComponent getPanel() - { - return myPanel; - } - - @Override - protected void resetImpl(final CodeStyleSettings settings) - { - try - { - myInsideUpdate = true; - final JSCodeStyleSettings jsCodeStyleSettings = settings.getCustomSettings(JSCodeStyleSettings.class); - myIndentPackageChildren.setSelected(jsCodeStyleSettings.INDENT_PACKAGE_CHILDREN == JSCodeStyleSettings.INDENT); - myFieldPrefixTextField.setText(jsCodeStyleSettings.FIELD_PREFIX); - myPropertyPrefixTextField.setText(jsCodeStyleSettings.PROPERTY_PREFIX); - myUseSemicolon.setSelected(jsCodeStyleSettings.USE_SEMICOLON_AFTER_STATEMENT); - } - finally - { - myInsideUpdate = false; - } - } - - @Override - protected String getFileTypeExtension(final FileType fileType) - { - return "js2"; - } +public class JSCodeStylePanel extends CodeStyleAbstractPanel { + private JPanel myPanel; + private JCheckBox myIndentPackageChildren; + private JPanel myPreviewPanel; + private JTextField myFieldPrefixTextField; + private JTextField myPropertyPrefixTextField; + private JCheckBox myUseSemicolon; + private boolean myInsideUpdate = false; + + public JSCodeStylePanel(final CodeStyleSettings settings) { + super(settings); + + installPreviewPanel(myPreviewPanel); + addPanelToWatch(myPanel); + + myUseSemicolon.addItemListener(new ItemListener() { + @Override + public void itemStateChanged(final ItemEvent e) { + if (!myInsideUpdate) { + //updatePreviewEditor(); + somethingChanged(); + } + } + }); + + final DocumentAdapter adapter = new DocumentAdapter() { + @Override + protected void textChanged(final DocumentEvent e) { + if (!myInsideUpdate) { + //updatePreviewEditor(); + somethingChanged(); + } + } + }; + + myFieldPrefixTextField.getDocument().addDocumentListener(adapter); + myPropertyPrefixTextField.getDocument().addDocumentListener(adapter); + } + + @Override + protected EditorHighlighter createHighlighter(final EditorColorsScheme scheme) { + return EditorHighlighterFactory.getInstance().createEditorHighlighter(new LightVirtualFile("a.as"), scheme, null); + } + + @Override + protected int getRightMargin() { + return 60; + } + + @Override + protected void prepareForReformat(final PsiFile psiFile) { + } + + @Override + @Nonnull + protected FileType getFileType() { + return JavaScriptFileType.INSTANCE; + } + + @Override + protected String getPreviewText() { + final JSCodeStyleSettings jsCodeStyleSettings = getSettings().getCustomSettings(JSCodeStyleSettings.class); + @NonNls String baseName = "field"; + @NonNls String propertyName = + (myPropertyPrefixTextField != null ? myPropertyPrefixTextField.getText() : jsCodeStyleSettings.PROPERTY_PREFIX) + + baseName; + @NonNls String varName = + (myFieldPrefixTextField != null ? myFieldPrefixTextField.getText() : jsCodeStyleSettings.FIELD_PREFIX) + baseName; + @NonNls String semiColon = + (myUseSemicolon != null ? myUseSemicolon.isSelected() : jsCodeStyleSettings.USE_SEMICOLON_AFTER_STATEMENT) ? ";" : ""; + + return "package aaa {\nclass XXX {\n" + + "private var " + varName + semiColon + "\n" + + "function get " + propertyName + "() {\nreturn " + varName + semiColon + "\n" + + "}\n}\n}"; + } + + @Override + public void apply(final CodeStyleSettings settings) { + final JSCodeStyleSettings jsCodeStyleSettings = settings.getCustomSettings(JSCodeStyleSettings.class); + jsCodeStyleSettings.INDENT_PACKAGE_CHILDREN = + myIndentPackageChildren.isSelected() ? JSCodeStyleSettings.INDENT : JSCodeStyleSettings + .DO_NOT_INDENT; + jsCodeStyleSettings.FIELD_PREFIX = myFieldPrefixTextField.getText(); + jsCodeStyleSettings.PROPERTY_PREFIX = myPropertyPrefixTextField.getText(); + jsCodeStyleSettings.USE_SEMICOLON_AFTER_STATEMENT = myUseSemicolon.isSelected(); + } + + @Override + public boolean isModified(final CodeStyleSettings settings) { + final JSCodeStyleSettings jsCodeStyleSettings = settings.getCustomSettings(JSCodeStyleSettings.class); + return (jsCodeStyleSettings.INDENT_PACKAGE_CHILDREN == JSCodeStyleSettings.INDENT) != myIndentPackageChildren.isSelected() || + !jsCodeStyleSettings.FIELD_PREFIX.equals(myFieldPrefixTextField.getText()) || + !jsCodeStyleSettings.PROPERTY_PREFIX.equals(myPropertyPrefixTextField.getText()) || + jsCodeStyleSettings.USE_SEMICOLON_AFTER_STATEMENT != (myUseSemicolon.isSelected()); + } + + @Override + public JComponent getPanel() { + return myPanel; + } + + @Override + protected void resetImpl(final CodeStyleSettings settings) { + try { + myInsideUpdate = true; + final JSCodeStyleSettings jsCodeStyleSettings = settings.getCustomSettings(JSCodeStyleSettings.class); + myIndentPackageChildren.setSelected(jsCodeStyleSettings.INDENT_PACKAGE_CHILDREN == JSCodeStyleSettings.INDENT); + myFieldPrefixTextField.setText(jsCodeStyleSettings.FIELD_PREFIX); + myPropertyPrefixTextField.setText(jsCodeStyleSettings.PROPERTY_PREFIX); + myUseSemicolon.setSelected(jsCodeStyleSettings.USE_SEMICOLON_AFTER_STATEMENT); + } + finally { + myInsideUpdate = false; + } + } + + @Override + protected String getFileTypeExtension(final FileType fileType) { + return "js2"; + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSCodeStyleSettingsProvider.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSCodeStyleSettingsProvider.java index fcadded6..26225fe1 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSCodeStyleSettingsProvider.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSCodeStyleSettingsProvider.java @@ -30,29 +30,25 @@ /** * @author Maxim.Mossienko - * Date: Mar 12, 2008 - * Time: 10:32:33 PM + * Date: Mar 12, 2008 + * Time: 10:32:33 PM */ @ExtensionImpl -public class JSCodeStyleSettingsProvider extends CodeStyleSettingsProvider -{ - @Override - public CustomCodeStyleSettings createCustomSettings(final CodeStyleSettings settings) - { - return new JSCodeStyleSettings(settings); - } +public class JSCodeStyleSettingsProvider extends CodeStyleSettingsProvider { + @Override + public CustomCodeStyleSettings createCustomSettings(final CodeStyleSettings settings) { + return new JSCodeStyleSettings(settings); + } - @Nullable - @Override - public Language getLanguage() - { - return JavaScriptLanguage.INSTANCE; - } + @Nullable + @Override + public Language getLanguage() { + return JavaScriptLanguage.INSTANCE; + } - @Override - @Nonnull - public Configurable createSettingsPage(final CodeStyleSettings settings, final CodeStyleSettings originalSettings) - { - return new JavaScriptCodeStyleConfigurable(settings, originalSettings); - } + @Override + @Nonnull + public Configurable createSettingsPage(final CodeStyleSettings settings, final CodeStyleSettings originalSettings) { + return new JavaScriptCodeStyleConfigurable(settings, originalSettings); + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSFormattingModel.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSFormattingModel.java index 9266d98d..662442fb 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSFormattingModel.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSFormattingModel.java @@ -29,44 +29,37 @@ /** * @author ven */ -public class JSFormattingModel implements FormattingModel -{ - private FormattingModel myModel; +public class JSFormattingModel implements FormattingModel { + private FormattingModel myModel; - public JSFormattingModel(final PsiFile file, CodeStyleSettings settings, final Block rootBlock) - { - myModel = FormattingModelProvider.createFormattingModelForPsiFile(file, rootBlock, settings); - } + public JSFormattingModel(final PsiFile file, CodeStyleSettings settings, final Block rootBlock) { + myModel = FormattingModelProvider.createFormattingModelForPsiFile(file, rootBlock, settings); + } - @Override - @Nonnull - public Block getRootBlock() - { - return myModel.getRootBlock(); - } + @Override + @Nonnull + public Block getRootBlock() { + return myModel.getRootBlock(); + } - @Override - @Nonnull - public FormattingDocumentModel getDocumentModel() - { - return myModel.getDocumentModel(); - } + @Override + @Nonnull + public FormattingDocumentModel getDocumentModel() { + return myModel.getDocumentModel(); + } - @Override - public TextRange replaceWhiteSpace(TextRange textRange, String whiteSpace) - { - return myModel.replaceWhiteSpace(textRange, whiteSpace); - } + @Override + public TextRange replaceWhiteSpace(TextRange textRange, String whiteSpace) { + return myModel.replaceWhiteSpace(textRange, whiteSpace); + } - @Override - public TextRange shiftIndentInsideRange(ASTNode node, TextRange range, int indent) - { - return myModel.shiftIndentInsideRange(node, range, indent); - } + @Override + public TextRange shiftIndentInsideRange(ASTNode node, TextRange range, int indent) { + return myModel.shiftIndentInsideRange(node, range, indent); + } - @Override - public void commitChanges() - { - myModel.commitChanges(); - } + @Override + public void commitChanges() { + myModel.commitChanges(); + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSSpacingProcessor.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSSpacingProcessor.java index 39a4c720..176d312d 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSSpacingProcessor.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSSpacingProcessor.java @@ -37,715 +37,643 @@ /** * @author ven */ -public class JSSpacingProcessor extends JSNodeVisitor -{ - private ASTNode myParent; - private ASTNode myChild1; - private ASTNode myChild2; - private final CommonCodeStyleSettings mySettings; - private Spacing myResult; - private final IElementType type1; - private final IElementType type2; - - public JSSpacingProcessor(final ASTNode parent, final ASTNode child1, final ASTNode child2, final CommonCodeStyleSettings settings) - { - myParent = parent; - myChild1 = child1; - myChild2 = child2; - mySettings = settings; - type1 = child1.getElementType(); - type2 = child2.getElementType(); - visit(parent); - } - - public Spacing getResult() - { - return myResult; - } - - @Override - public void visitObjectLiteralExpression(final ASTNode node) - { - if(((type1 == JSTokenTypes.LBRACE && type2 != JSTokenTypes.RBRACE) || - type1 == JSTokenTypes.COMMA || - (type1 != JSTokenTypes.LBRACE && type2 == JSTokenTypes.RBRACE)) && shouldFormatObjectLiteralExpression()) - { - myResult = Spacing.createSpacing(0, 0, 1, mySettings.KEEP_LINE_BREAKS, mySettings.KEEP_BLANK_LINES_IN_CODE); - } - } - - private boolean shouldFormatObjectLiteralExpression() - { - IElementType grandParentType = myParent.getTreeParent().getElementType(); - if(grandParentType == JSElementTypes.ARRAY_LITERAL_EXPRESSION) - { - return true; - } - - return false; - } - - @Override - public void visitArrayLiteralExpression(final ASTNode node) - { - if(((type1 == JSTokenTypes.LBRACKET && type2 != JSTokenTypes.RBRACKET) || - type1 == JSTokenTypes.COMMA || - (type1 != JSTokenTypes.LBRACKET && type2 == JSTokenTypes.RBRACKET)) && shouldFormatArrayLiteralExpression()) - { - myResult = Spacing.createSpacing(0, 0, 1, mySettings.KEEP_LINE_BREAKS, mySettings.KEEP_BLANK_LINES_IN_CODE); - } - } - - private boolean shouldFormatArrayLiteralExpression() - { - JSExpression jsExpression = PsiTreeUtil.findChildOfType(myParent.getPsi(), JSExpression.class); - if(jsExpression != null) - { - IElementType type = PsiUtilCore.getElementType(jsExpression); - return type == JSElementTypes.ARRAY_LITERAL_EXPRESSION || type == JSElementTypes.OBJECT_LITERAL_EXPRESSION; - } - return false; - } - - @Override - public void visitXmlLiteralExpression(ASTNode node) - { - if((type2 == JSElementTypes.XML_LITERAL_EXPRESSION || - type1 == JSTokenTypes.XML_START_TAG_LIST && type2 != JSTokenTypes.XML_END_TAG_LIST || - type1 == JSElementTypes.XML_LITERAL_EXPRESSION) && shouldFormatXmlLiteralExpression()) - { - myResult = Spacing.createSpacing(0, 0, 1, mySettings.KEEP_LINE_BREAKS, mySettings.KEEP_BLANK_LINES_IN_CODE); - } - } - - private boolean shouldFormatXmlLiteralExpression() - { - return true; - } - - @Override - public void visitAttributeList(final ASTNode node) - { - if(type1 == JSElementTypes.ATTRIBUTE || type2 == JSElementTypes.ATTRIBUTE) - { - myResult = Spacing.createSpacing(0, 0, 1, mySettings.KEEP_LINE_BREAKS, mySettings.KEEP_BLANK_LINES_IN_CODE); - } - else - { - myResult = Spacing.createSpacing(1, 1, 0, mySettings.KEEP_LINE_BREAKS, mySettings.KEEP_BLANK_LINES_IN_CODE); - } - } - - @Override - public void visitEmbeddedContent(final ASTNode node) - { - if(type2 == JSTokenTypes.END_OF_LINE_COMMENT) - { - myResult = Spacing.createSpacing(0, Integer.MAX_VALUE, 0, mySettings.KEEP_LINE_BREAKS, mySettings.KEEP_BLANK_LINES_IN_CODE); - } - else if(JSElementTypes.SOURCE_ELEMENTS.contains(type1) || - JSElementTypes.SOURCE_ELEMENTS.contains(type2) && type1 != JSTokenTypes.DOT || - type2 == JSTokenTypes.RBRACE) - { - myResult = Spacing.createSpacing(0, 0, 1, mySettings.KEEP_LINE_BREAKS, mySettings.KEEP_BLANK_LINES_IN_CODE); - } - } - - @Override - public void visitParameterList(final ASTNode node) - { - if(type1 == JSTokenTypes.LPAR && type2 == JSTokenTypes.RPAR) - { - setSingleSpace(false); - } - else if(type1 == JSTokenTypes.LPAR || type2 == JSTokenTypes.RPAR) - { - setSingleSpace(mySettings.SPACE_WITHIN_METHOD_PARENTHESES); - } - else if(type1 == JSTokenTypes.COMMA) - { - setSingleSpace(mySettings.SPACE_AFTER_COMMA); - } - else if(type2 == JSTokenTypes.COMMA) - { - setSingleSpace(mySettings.SPACE_BEFORE_COMMA); - } - } - - @Override - public void visitPackageStatement(final ASTNode node) - { - if(shouldMakeLBraceOnNextLine()) - { - myResult = Spacing.createSpacing(0, 0, 1, mySettings.KEEP_LINE_BREAKS, mySettings.KEEP_BLANK_LINES_IN_CODE); - return; - } - processBlock(node); - } - - @Override - public void visitClass(final ASTNode node) - { - if(shouldMakeLBraceOnNextLine()) - { - myResult = Spacing.createSpacing(0, 0, 1, mySettings.KEEP_LINE_BREAKS, mySettings.KEEP_BLANK_LINES_IN_CODE); - return; - } - processBlock(node); - } - - private boolean shouldMakeLBraceOnNextLine() - { - return type2 == JSTokenTypes.LBRACE && mySettings.CLASS_BRACE_STYLE == CodeStyleSettings.NEXT_LINE; - } - - @Override - public void visitBlock(final ASTNode node) - { - processBlock(node); - } - - private void processBlock(final ASTNode node) - { - if(JSElementTypes.SOURCE_ELEMENTS.contains(type1) || JSElementTypes.SOURCE_ELEMENTS.contains(type2) || - type2 == JSTokenTypes.RBRACE) - { - if(isInjectedJSHack(type1, type2) || - isInjectedJSHack(type2, type1) || - (type2 == JSTokenTypes.END_OF_LINE_COMMENT && isInlineEndOfLineCommentOnLeft() && type1 != JSElementTypes.ES4_IMPORT_STATEMENT)) - { - myResult = Spacing.getReadOnlySpacing(); - } - else - { - final boolean keepOneLine = myParent.getPsi() instanceof JSFunction ? mySettings.KEEP_SIMPLE_METHODS_IN_ONE_LINE : mySettings - .KEEP_SIMPLE_BLOCKS_IN_ONE_LINE; - - if(keepOneLine && (type1 == JSTokenTypes.LBRACE || type2 == JSTokenTypes.RBRACE)) - { - myResult = Spacing.createDependentLFSpacing(0, 1, node.getTextRange(), mySettings.KEEP_LINE_BREAKS, mySettings.KEEP_BLANK_LINES_IN_CODE); - } - else - { - if((JSElementTypes.ES4_IMPORT_STATEMENT == type1 && JSElementTypes.ES4_IMPORT_STATEMENT != type2 && JSTokenTypes.RBRACE != type2) || (JSElementTypes - .ES4_IMPORT_STATEMENT != type1 && JSTokenTypes.LBRACE != type1 && JSElementTypes.ES4_IMPORT_STATEMENT == type2)) - { - myResult = Spacing.createSpacing(0, 0, 2, mySettings.KEEP_LINE_BREAKS, mySettings.KEEP_BLANK_LINES_IN_CODE); - } - else if(JSElementTypes.ES4_IMPORT_STATEMENT == type1 && JSElementTypes.ES4_IMPORT_STATEMENT == type2) - { - myResult = getSpacingBetweenImports(); - } - else - { - if(shouldPlaceExtraLinesAroundMethod()) - { - myResult = Spacing.createSpacing(0, 0, 1 + mySettings.BLANK_LINES_AROUND_METHOD, mySettings.KEEP_LINE_BREAKS, - mySettings.KEEP_BLANK_LINES_IN_CODE); - } - else - { - myResult = Spacing.createSpacing(0, 0, 1, mySettings.KEEP_LINE_BREAKS, mySettings.KEEP_BLANK_LINES_IN_CODE); - } - } - } - } - } - } - - private boolean shouldPlaceExtraLinesAroundMethod() - { - return (type1 == JSElementTypes.FUNCTION_DECLARATION && type2 != JSTokenTypes.RBRACE) || (type1 == JSElementTypes.VAR_STATEMENT && type2 == - JSElementTypes.FUNCTION_DECLARATION); - } - - private Spacing getSpacingBetweenImports() - { - String fqn1 = ((JSImportStatement) myChild1.getPsi()).getImportText(); - String fqn2 = ((JSImportStatement) myChild2.getPsi()).getImportText(); - String rootPackage1 = fqn1 != null && fqn1.contains(".") ? fqn1.substring(0, fqn1.indexOf(".")) : null; - String rootPackage2 = fqn2 != null && fqn2.contains(".") ? fqn2.substring(0, fqn2.indexOf(".")) : null; - boolean lineBreak = rootPackage1 != null && rootPackage2 != null && !rootPackage1.equals(rootPackage2); - return Spacing.createSpacing(0, 0, lineBreak ? 2 : 1, mySettings.KEEP_LINE_BREAKS, mySettings.KEEP_BLANK_LINES_IN_CODE); - } - - private static boolean isInjectedJSHack(final IElementType type1, final IElementType type2) - { - // Following code attempts NOT to reformat '@xxx:bbb.ccc' in var initializers - return type1 == JSTokenTypes.BAD_CHARACTER && JSElementTypes.SOURCE_ELEMENTS.contains(type2); - } - - @Override - public void visitFile(final ASTNode node) - { - if(JSElementTypes.SOURCE_ELEMENTS.contains(type1) || JSElementTypes.SOURCE_ELEMENTS.contains(type2)) - { - if(type2 == JSTokenTypes.END_OF_LINE_COMMENT && isInlineEndOfLineCommentOnLeft() && type1 != JSElementTypes.ES4_IMPORT_STATEMENT) - { - myResult = Spacing.getReadOnlySpacing(); - } - else - { - if((JSElementTypes.ES4_IMPORT_STATEMENT == type1 && JSElementTypes.ES4_IMPORT_STATEMENT != type2) || (JSElementTypes.ES4_IMPORT_STATEMENT != type1 && - JSElementTypes.ES4_IMPORT_STATEMENT == type2)) - { - myResult = Spacing.createSpacing(0, 0, 2, mySettings.KEEP_LINE_BREAKS, mySettings.KEEP_BLANK_LINES_IN_CODE); - } - else if(JSElementTypes.ES4_IMPORT_STATEMENT == type1 && JSElementTypes.ES4_IMPORT_STATEMENT == type2) - { - myResult = getSpacingBetweenImports(); - } - else - { - if(shouldPlaceExtraLinesAroundMethod() && node.getPsi().getContext() instanceof XmlText) - { - myResult = Spacing.createSpacing(0, 0, 1 + mySettings.BLANK_LINES_AROUND_METHOD, mySettings.KEEP_LINE_BREAKS, - mySettings.KEEP_BLANK_LINES_IN_CODE); - } - else - { - myResult = Spacing.createSpacing(0, 0, 1, mySettings.KEEP_LINE_BREAKS, mySettings.KEEP_BLANK_LINES_IN_CODE); - } - } - } - } - } - - private boolean isInlineEndOfLineCommentOnLeft() - { - final ASTNode prev = myChild2.getTreePrev(); - if(prev == myChild1) - { - return true; - } - if(prev != null && prev.getPsi() instanceof PsiWhiteSpace) - { - return !prev.textContains('\n'); - } - return false; - } - - @Override - public void visitFunctionDeclaration(final ASTNode node) - { - if(type1 == JSTokenTypes.FUNCTION_KEYWORD && type2 == JSElementTypes.REFERENCE_EXPRESSION) - { - setSingleSpace(true); - } - else if(type1 == JSElementTypes.REFERENCE_EXPRESSION && type2 == JSElementTypes.PARAMETER_LIST) - { - setSingleSpace(mySettings.SPACE_BEFORE_METHOD_PARENTHESES); - } - else if(type2 == JSElementTypes.BLOCK_STATEMENT) - { - setBraceSpace(mySettings.SPACE_BEFORE_METHOD_LBRACE, mySettings.METHOD_BRACE_STYLE, myChild1.getTextRange()); - } - else if(type1 == JSElementTypes.ATTRIBUTE_LIST && type2 == JSTokenTypes.FUNCTION_KEYWORD) - { - setSingleSpace(true); - } - } - - - @Override - public void visitFunctionExpression(final ASTNode node) - { - visitFunctionDeclaration(node); - } - - @Override - public void visitReferenceExpression(final ASTNode node) - { - if(type1 == JSTokenTypes.NEW_KEYWORD) - { - setSingleSpace(true); - } - else - { - setSingleSpace(false); // a.b should not have spaces before and after dot - } - } - - @Override - public void visitDocComment(final ASTNode node) - { - //myResult = Spacing.createKeepingFirstColumnSpacing(0, Integer.MAX_VALUE, mySettings.KEEP_LINE_BREAKS, mySettings.KEEP_BLANK_LINES_IN_CODE); - } - - @Override - public void visitIfStatement(final ASTNode node) - { - if(type1 == JSTokenTypes.IF_KEYWORD && type2 == JSTokenTypes.LPAR) - { - setSingleSpace(mySettings.SPACE_BEFORE_IF_PARENTHESES); - } - else if(type1 == JSTokenTypes.LPAR || type2 == JSTokenTypes.RPAR) - { - setSingleSpace(mySettings.SPACE_WITHIN_IF_PARENTHESES); - } - else if(type1 == JSTokenTypes.RPAR && type2 == JSElementTypes.BLOCK_STATEMENT) - { - TextRange dependentRange = new TextRange(myParent.getStartOffset(), myChild1.getTextRange().getEndOffset()); - setBraceSpace(mySettings.SPACE_BEFORE_IF_LBRACE, mySettings.BRACE_STYLE, dependentRange); - } - else if(type2 == JSTokenTypes.ELSE_KEYWORD) - { - setLineBreakSpace(mySettings.ELSE_ON_NEW_LINE); - } - else if(type1 == JSTokenTypes.ELSE_KEYWORD && type2 == JSElementTypes.BLOCK_STATEMENT) - { - setBraceSpace(mySettings.SPACE_BEFORE_ELSE_LBRACE, mySettings.BRACE_STYLE, null); - } - } - - @Override - public void visitCallExpression(final ASTNode node) - { - if(type2 == JSElementTypes.ARGUMENT_LIST) - { - setSingleSpace(mySettings.SPACE_BEFORE_METHOD_CALL_PARENTHESES); - } - } - - @Override - public void visitNewExpression(final ASTNode node) - { - if(type1 == JSTokenTypes.NEW_KEYWORD) - { - setSingleSpace(true); - } - else if(type2 == JSElementTypes.ARGUMENT_LIST) - { - setSingleSpace(mySettings.SPACE_BEFORE_METHOD_CALL_PARENTHESES); - } - } - - @Override - public void visitForStatement(final ASTNode node) - { - if(type1 == JSTokenTypes.SEMICOLON) - { - setSingleSpace(true); - } - else if(type2 == JSTokenTypes.SEMICOLON) - { - setSingleSpace(mySettings.SPACE_BEFORE_SEMICOLON); - } - - if(type1 == JSTokenTypes.FOR_KEYWORD && type2 == JSTokenTypes.LPAR) - { - setSingleSpace(mySettings.SPACE_BEFORE_FOR_PARENTHESES); - } - else if(type1 == JSTokenTypes.RPAR && type2 == JSElementTypes.BLOCK_STATEMENT) - { - TextRange dependentRange = new TextRange(myParent.getStartOffset(), myChild1.getTextRange().getEndOffset()); - setBraceSpace(mySettings.SPACE_BEFORE_FOR_LBRACE, mySettings.BRACE_STYLE, dependentRange); - } - else if(type1 == JSTokenTypes.LPAR || type2 == JSTokenTypes.RPAR) - { - setSingleSpace(mySettings.SPACE_WITHIN_FOR_PARENTHESES); - } - } - - @Override - public void visitDoWhileStatement(final ASTNode node) - { - if(type2 == JSTokenTypes.WHILE_KEYWORD) - { - if(mySettings.WHILE_ON_NEW_LINE) - { - myResult = Spacing.createSpacing(0, 0, 1, mySettings.KEEP_LINE_BREAKS, mySettings.KEEP_BLANK_LINES_IN_CODE); - } - else - { - myResult = Spacing.createSpacing(1, 1, 0, mySettings.KEEP_LINE_BREAKS, mySettings.KEEP_BLANK_LINES_IN_CODE); - } - } - else if(type2 == JSTokenTypes.LPAR) - { - setSingleSpace(mySettings.SPACE_BEFORE_WHILE_PARENTHESES); - } - else if(type1 == JSTokenTypes.LPAR || type2 == JSTokenTypes.RPAR) - { - setSingleSpace(mySettings.SPACE_WITHIN_WHILE_PARENTHESES); - } - - if(type1 == JSTokenTypes.DO_KEYWORD && type2 == JSElementTypes.BLOCK_STATEMENT) - { - setBraceSpace(true, mySettings.BRACE_STYLE, null); - } - } - - @Override - public void visitForInStatement(final ASTNode node) - { - if(type1 == JSTokenTypes.VAR_KEYWORD || type2 == JSTokenTypes.VAR_KEYWORD) - { - setSingleSpace(true); - } - else if(type1 == JSTokenTypes.FOR_KEYWORD && type2 == JSTokenTypes.LPAR) - { - setSingleSpace(mySettings.SPACE_BEFORE_FOR_PARENTHESES); - } - else if(type1 == JSTokenTypes.RPAR && type2 == JSElementTypes.BLOCK_STATEMENT) - { - TextRange dependentRange = new TextRange(myParent.getStartOffset(), myChild1.getTextRange().getEndOffset()); - setBraceSpace(mySettings.SPACE_BEFORE_FOR_LBRACE, mySettings.BRACE_STYLE, dependentRange); - } - else if(type1 == JSTokenTypes.LPAR || type2 == JSTokenTypes.RPAR) - { - setSingleSpace(mySettings.SPACE_WITHIN_FOR_PARENTHESES); - } - } - - @Override - public void visitWhileStatement(final ASTNode node) - { - if(type1 == JSTokenTypes.WHILE_KEYWORD && type2 == JSTokenTypes.LPAR) - { - setSingleSpace(mySettings.SPACE_BEFORE_WHILE_PARENTHESES); - } - else if(type1 == JSTokenTypes.RPAR && type2 == JSElementTypes.BLOCK_STATEMENT) - { - TextRange dependentRange = new TextRange(myParent.getStartOffset(), myChild1.getTextRange().getEndOffset()); - setBraceSpace(mySettings.SPACE_BEFORE_WHILE_LBRACE, mySettings.BRACE_STYLE, dependentRange); - } - else if(type1 == JSTokenTypes.LPAR || type2 == JSTokenTypes.RPAR) - { - setSingleSpace(mySettings.SPACE_WITHIN_WHILE_PARENTHESES); - } - } - - @Override - public void visitWithStatement(final ASTNode node) - { - if(type1 == JSTokenTypes.WITH_KEYWORD && type2 == JSTokenTypes.LPAR) - { - setSingleSpace(mySettings.SPACE_BEFORE_WHILE_PARENTHESES); - } - else if(type1 == JSTokenTypes.RPAR && type2 == JSElementTypes.BLOCK_STATEMENT) - { - TextRange dependentRange = new TextRange(myParent.getStartOffset(), myChild1.getTextRange().getEndOffset()); - setBraceSpace(mySettings.SPACE_BEFORE_WHILE_LBRACE, mySettings.BRACE_STYLE, dependentRange); - } - else if(type1 == JSTokenTypes.LPAR || type2 == JSTokenTypes.RPAR) - { - setSingleSpace(mySettings.SPACE_WITHIN_WHILE_PARENTHESES); - } - } - - public static TokenSet NOT_A_PACKAGE_CONTENT = TokenSet.create(JSTokenTypes.PACKAGE_KEYWORD, JSElementTypes.REFERENCE_EXPRESSION, - JSTokenTypes.LBRACE, JSTokenTypes.RBRACE); - - @Override - public void visitTryStatement(final ASTNode node) - { - if(type1 == JSTokenTypes.TRY_KEYWORD && type2 == JSElementTypes.BLOCK_STATEMENT) - { - setBraceSpace(mySettings.SPACE_BEFORE_TRY_LBRACE, mySettings.BRACE_STYLE, null); - } - else if(type2 == JSElementTypes.CATCH_BLOCK) - { - setLineBreakSpace(mySettings.CATCH_ON_NEW_LINE); - } - else if(type2 == JSTokenTypes.FINALLY_KEYWORD) - { - setLineBreakSpace(mySettings.FINALLY_ON_NEW_LINE); - } - else if(type1 == JSTokenTypes.FINALLY_KEYWORD) - { - setBraceSpace(mySettings.SPACE_BEFORE_FINALLY_LBRACE, mySettings.BRACE_STYLE, null); - } - } - - @Override - public void visitCatchBlock(final ASTNode node) - { - if(type1 == JSTokenTypes.LPAR || type2 == JSTokenTypes.RPAR) - { - setSingleSpace(mySettings.SPACE_WITHIN_CATCH_PARENTHESES); - } - - if(type1 == JSTokenTypes.CATCH_KEYWORD && type2 == JSTokenTypes.LPAR) - { - setSingleSpace(mySettings.SPACE_BEFORE_CATCH_PARENTHESES); - } - - if(type2 == JSElementTypes.BLOCK_STATEMENT) - { - TextRange dependentRange = new TextRange(myParent.getStartOffset(), myChild2.getTextRange().getStartOffset()); - setBraceSpace(mySettings.SPACE_BEFORE_CATCH_LBRACE, mySettings.BRACE_STYLE, dependentRange); - } - } - - @Override - public void visitSwitchStatement(final ASTNode node) - { - if(type1 == JSTokenTypes.SWITCH_KEYWORD && type2 == JSTokenTypes.LPAR) - { - setSingleSpace(mySettings.SPACE_BEFORE_SWITCH_PARENTHESES); - } - else if(type1 == JSTokenTypes.RPAR) - { - TextRange dependentRange = new TextRange(myParent.getStartOffset(), myChild1.getTextRange().getEndOffset()); - setBraceSpace(mySettings.SPACE_BEFORE_SWITCH_LBRACE, mySettings.BRACE_STYLE, dependentRange); - } - else if(type1 == JSTokenTypes.LPAR || type2 == JSTokenTypes.RPAR) - { - setSingleSpace(mySettings.SPACE_WITHIN_SWITCH_PARENTHESES); - } - } - - @Override - public void visitArgumentList(final ASTNode node) - { - if(type1 == JSTokenTypes.LPAR || type2 == JSTokenTypes.RPAR) - { - setSingleSpace(false); - } - else if(type1 == JSTokenTypes.COMMA) - { - setSingleSpace(mySettings.SPACE_AFTER_COMMA); - } - else if(type2 == JSTokenTypes.COMMA) - { - setSingleSpace(mySettings.SPACE_BEFORE_COMMA); - } - } - - @Override - public void visitStatement(final ASTNode node) - { - if(type2 == JSTokenTypes.SEMICOLON) - { - setSingleSpace(false); - } - } - - @Override - public void visitVarStatement(final ASTNode node) - { - if(type1 == JSTokenTypes.VAR_KEYWORD) - { - setSingleSpace(true); - } - } - - @Override - public void visitVariable(final ASTNode node) - { - if(type1 == JSTokenTypes.EQ || type2 == JSTokenTypes.EQ) - { // Initializer - setSingleSpace(mySettings.SPACE_AROUND_ASSIGNMENT_OPERATORS); - } - } - - @Override - public void visitBinaryExpression(final ASTNode node) - { - IElementType opSign = null; - if(JSTokenTypes.OPERATIONS.contains(type1)) - { - opSign = type1; - } - else if(JSTokenTypes.OPERATIONS.contains(type2)) - { - opSign = type2; - } - - if(opSign != null) - { - setSingleSpace(getSpaceAroundOption(opSign)); - } - } - - @Override - public void visitConditionalExpression(final ASTNode node) - { - if(type1 == JSTokenTypes.QUEST) - { - setSingleSpace(mySettings.SPACE_AFTER_QUEST); - } - else if(type2 == JSTokenTypes.QUEST) - { - setSingleSpace(mySettings.SPACE_BEFORE_QUEST); - } - else if(type1 == JSTokenTypes.COLON) - { - setSingleSpace(mySettings.SPACE_AFTER_COLON); - } - else if(type2 == JSTokenTypes.COLON) - { - setSingleSpace(mySettings.SPACE_BEFORE_COLON); - } - } - - private boolean getSpaceAroundOption(final IElementType opSign) - { - boolean option = false; - if(JSTokenTypes.ADDITIVE_OPERATIONS.contains(opSign)) - { - option = mySettings.SPACE_AROUND_ADDITIVE_OPERATORS; - } - else if(JSTokenTypes.MULTIPLICATIVE_OPERATIONS.contains(opSign)) - { - option = mySettings.SPACE_AROUND_MULTIPLICATIVE_OPERATORS; - } - else if(JSTokenTypes.ASSIGNMENT_OPERATIONS.contains(opSign)) - { - option = mySettings.SPACE_AROUND_ASSIGNMENT_OPERATORS; - } - else if(JSTokenTypes.EQUALITY_OPERATIONS.contains(opSign)) - { - option = mySettings.SPACE_AROUND_EQUALITY_OPERATORS; - } - else if(JSTokenTypes.RELATIONAL_OPERATIONS.contains(opSign)) - { - option = mySettings.SPACE_AROUND_RELATIONAL_OPERATORS; - } - else if(JSTokenTypes.SHIFT_OPERATIONS.contains(opSign)) - { - option = mySettings.SPACE_AROUND_BITWISE_OPERATORS; - } - else if(opSign == JSTokenTypes.ANDAND || opSign == JSTokenTypes.OROR) - { - option = mySettings.SPACE_AROUND_LOGICAL_OPERATORS; - } - else if(opSign == JSTokenTypes.OR || opSign == JSTokenTypes.AND || opSign == JSTokenTypes.XOR) - { - option = mySettings.SPACE_AROUND_BITWISE_OPERATORS; - } - else if(opSign == JSTokenTypes.IS_KEYWORD || opSign == JSTokenTypes.AS_KEYWORD) - { - option = true; - } - return option; - } - - private void setSingleSpace(boolean needSpace) - { - final int spaces = needSpace ? 1 : 0; - myResult = Spacing.createSpacing(spaces, spaces, 0, mySettings.KEEP_LINE_BREAKS, mySettings.KEEP_BLANK_LINES_IN_CODE); - } - - private void setBraceSpace(boolean needSpaceSetting, int braceStyleSetting, TextRange textRange) - { - int spaces = needSpaceSetting ? 1 : 0; - if(braceStyleSetting == CodeStyleSettings.NEXT_LINE_IF_WRAPPED && textRange != null) - { - myResult = Spacing.createDependentLFSpacing(spaces, spaces, textRange, mySettings.KEEP_LINE_BREAKS, mySettings.KEEP_BLANK_LINES_IN_CODE); - } - else - { - int lineBreaks = braceStyleSetting == CodeStyleSettings.END_OF_LINE ? 0 : 1; - myResult = Spacing.createSpacing(spaces, spaces, lineBreaks, mySettings.KEEP_LINE_BREAKS, mySettings.KEEP_BLANK_LINES_IN_CODE); - } - } - - private void setLineBreakSpace(final boolean needLineBreak) - { - final int breaks = needLineBreak || myChild1.getElementType() == JSTokenTypes.END_OF_LINE_COMMENT ? 1 : 0; - myResult = Spacing.createSpacing(1, 1, breaks, mySettings.KEEP_LINE_BREAKS, mySettings.KEEP_BLANK_LINES_IN_CODE); - } - +public class JSSpacingProcessor extends JSNodeVisitor { + private ASTNode myParent; + private ASTNode myChild1; + private ASTNode myChild2; + private final CommonCodeStyleSettings mySettings; + private Spacing myResult; + private final IElementType type1; + private final IElementType type2; + + public JSSpacingProcessor(final ASTNode parent, final ASTNode child1, final ASTNode child2, final CommonCodeStyleSettings settings) { + myParent = parent; + myChild1 = child1; + myChild2 = child2; + mySettings = settings; + type1 = child1.getElementType(); + type2 = child2.getElementType(); + visit(parent); + } + + public Spacing getResult() { + return myResult; + } + + @Override + public void visitObjectLiteralExpression(final ASTNode node) { + if (((type1 == JSTokenTypes.LBRACE && type2 != JSTokenTypes.RBRACE) + || type1 == JSTokenTypes.COMMA + || (type1 != JSTokenTypes.LBRACE && type2 == JSTokenTypes.RBRACE)) + && shouldFormatObjectLiteralExpression()) { + myResult = Spacing.createSpacing(0, 0, 1, mySettings.KEEP_LINE_BREAKS, mySettings.KEEP_BLANK_LINES_IN_CODE); + } + } + + private boolean shouldFormatObjectLiteralExpression() { + IElementType grandParentType = myParent.getTreeParent().getElementType(); + if (grandParentType == JSElementTypes.ARRAY_LITERAL_EXPRESSION) { + return true; + } + + return false; + } + + @Override + public void visitArrayLiteralExpression(final ASTNode node) { + if (((type1 == JSTokenTypes.LBRACKET && type2 != JSTokenTypes.RBRACKET) + || type1 == JSTokenTypes.COMMA + || (type1 != JSTokenTypes.LBRACKET && type2 == JSTokenTypes.RBRACKET)) + && shouldFormatArrayLiteralExpression()) { + myResult = Spacing.createSpacing(0, 0, 1, mySettings.KEEP_LINE_BREAKS, mySettings.KEEP_BLANK_LINES_IN_CODE); + } + } + + private boolean shouldFormatArrayLiteralExpression() { + JSExpression jsExpression = PsiTreeUtil.findChildOfType(myParent.getPsi(), JSExpression.class); + if (jsExpression != null) { + IElementType type = PsiUtilCore.getElementType(jsExpression); + return type == JSElementTypes.ARRAY_LITERAL_EXPRESSION || type == JSElementTypes.OBJECT_LITERAL_EXPRESSION; + } + return false; + } + + @Override + public void visitXmlLiteralExpression(ASTNode node) { + if ((type2 == JSElementTypes.XML_LITERAL_EXPRESSION + || type1 == JSTokenTypes.XML_START_TAG_LIST && type2 != JSTokenTypes.XML_END_TAG_LIST + || type1 == JSElementTypes.XML_LITERAL_EXPRESSION) + && shouldFormatXmlLiteralExpression()) { + myResult = Spacing.createSpacing(0, 0, 1, mySettings.KEEP_LINE_BREAKS, mySettings.KEEP_BLANK_LINES_IN_CODE); + } + } + + private boolean shouldFormatXmlLiteralExpression() { + return true; + } + + @Override + public void visitAttributeList(final ASTNode node) { + if (type1 == JSElementTypes.ATTRIBUTE || type2 == JSElementTypes.ATTRIBUTE) { + myResult = Spacing.createSpacing(0, 0, 1, mySettings.KEEP_LINE_BREAKS, mySettings.KEEP_BLANK_LINES_IN_CODE); + } + else { + myResult = Spacing.createSpacing(1, 1, 0, mySettings.KEEP_LINE_BREAKS, mySettings.KEEP_BLANK_LINES_IN_CODE); + } + } + + @Override + public void visitEmbeddedContent(final ASTNode node) { + if (type2 == JSTokenTypes.END_OF_LINE_COMMENT) { + myResult = Spacing.createSpacing(0, Integer.MAX_VALUE, 0, mySettings.KEEP_LINE_BREAKS, mySettings.KEEP_BLANK_LINES_IN_CODE); + } + else if (JSElementTypes.SOURCE_ELEMENTS.contains(type1) + || JSElementTypes.SOURCE_ELEMENTS.contains(type2) && type1 != JSTokenTypes.DOT + || type2 == JSTokenTypes.RBRACE) { + myResult = Spacing.createSpacing(0, 0, 1, mySettings.KEEP_LINE_BREAKS, mySettings.KEEP_BLANK_LINES_IN_CODE); + } + } + + @Override + public void visitParameterList(final ASTNode node) { + if (type1 == JSTokenTypes.LPAR && type2 == JSTokenTypes.RPAR) { + setSingleSpace(false); + } + else if (type1 == JSTokenTypes.LPAR || type2 == JSTokenTypes.RPAR) { + setSingleSpace(mySettings.SPACE_WITHIN_METHOD_PARENTHESES); + } + else if (type1 == JSTokenTypes.COMMA) { + setSingleSpace(mySettings.SPACE_AFTER_COMMA); + } + else if (type2 == JSTokenTypes.COMMA) { + setSingleSpace(mySettings.SPACE_BEFORE_COMMA); + } + } + + @Override + public void visitPackageStatement(final ASTNode node) { + if (shouldMakeLBraceOnNextLine()) { + myResult = Spacing.createSpacing( + 0, + 0, + 1, + mySettings.KEEP_LINE_BREAKS, + mySettings.KEEP_BLANK_LINES_IN_CODE + ); + return; + } + processBlock(node); + } + + @Override + public void visitClass(final ASTNode node) { + if (shouldMakeLBraceOnNextLine()) { + myResult = Spacing.createSpacing( + 0, + 0, + 1, + mySettings.KEEP_LINE_BREAKS, + mySettings.KEEP_BLANK_LINES_IN_CODE + ); + return; + } + processBlock(node); + } + + private boolean shouldMakeLBraceOnNextLine() { + return type2 == JSTokenTypes.LBRACE && mySettings.CLASS_BRACE_STYLE == CodeStyleSettings.NEXT_LINE; + } + + @Override + public void visitBlock(final ASTNode node) { + processBlock(node); + } + + private void processBlock(final ASTNode node) { + if (JSElementTypes.SOURCE_ELEMENTS.contains(type1) || JSElementTypes.SOURCE_ELEMENTS.contains(type2) || + type2 == JSTokenTypes.RBRACE) { + if (isInjectedJSHack(type1, type2) || isInjectedJSHack(type2, type1) + || (type2 == JSTokenTypes.END_OF_LINE_COMMENT + && isInlineEndOfLineCommentOnLeft() && type1 != JSElementTypes.ES4_IMPORT_STATEMENT)) { + myResult = Spacing.getReadOnlySpacing(); + } + else { + final boolean keepOneLine = myParent.getPsi() instanceof JSFunction + ? mySettings.KEEP_SIMPLE_METHODS_IN_ONE_LINE + : mySettings.KEEP_SIMPLE_BLOCKS_IN_ONE_LINE; + + if (keepOneLine && (type1 == JSTokenTypes.LBRACE || type2 == JSTokenTypes.RBRACE)) { + myResult = Spacing.createDependentLFSpacing(0, + 1, + node.getTextRange(), + mySettings.KEEP_LINE_BREAKS, + mySettings.KEEP_BLANK_LINES_IN_CODE + ); + } + else if ((JSElementTypes.ES4_IMPORT_STATEMENT == type1 && JSElementTypes.ES4_IMPORT_STATEMENT != type2 + && JSTokenTypes.RBRACE != type2) + || (JSElementTypes.ES4_IMPORT_STATEMENT != type1 && JSTokenTypes.LBRACE != type1 + && JSElementTypes.ES4_IMPORT_STATEMENT == type2)) { + myResult = Spacing.createSpacing( + 0, + 0, + 2, + mySettings.KEEP_LINE_BREAKS, + mySettings.KEEP_BLANK_LINES_IN_CODE + ); + } + else if (JSElementTypes.ES4_IMPORT_STATEMENT == type1 && JSElementTypes.ES4_IMPORT_STATEMENT == type2) { + myResult = getSpacingBetweenImports(); + } + else if (shouldPlaceExtraLinesAroundMethod()) { + myResult = Spacing.createSpacing( + 0, + 0, + 1 + mySettings.BLANK_LINES_AROUND_METHOD, + mySettings.KEEP_LINE_BREAKS, + mySettings.KEEP_BLANK_LINES_IN_CODE + ); + } + else { + myResult = Spacing.createSpacing( + 0, + 0, + 1, + mySettings.KEEP_LINE_BREAKS, + mySettings.KEEP_BLANK_LINES_IN_CODE + ); + } + } + } + } + + private boolean shouldPlaceExtraLinesAroundMethod() { + return (type1 == JSElementTypes.FUNCTION_DECLARATION && type2 != JSTokenTypes.RBRACE) + || (type1 == JSElementTypes.VAR_STATEMENT && type2 == JSElementTypes.FUNCTION_DECLARATION); + } + + private Spacing getSpacingBetweenImports() { + String fqn1 = ((JSImportStatement)myChild1.getPsi()).getImportText(); + String fqn2 = ((JSImportStatement)myChild2.getPsi()).getImportText(); + String rootPackage1 = fqn1 != null && fqn1.contains(".") ? fqn1.substring(0, fqn1.indexOf(".")) : null; + String rootPackage2 = fqn2 != null && fqn2.contains(".") ? fqn2.substring(0, fqn2.indexOf(".")) : null; + boolean lineBreak = rootPackage1 != null && rootPackage2 != null && !rootPackage1.equals(rootPackage2); + return Spacing.createSpacing( + 0, + 0, + lineBreak ? 2 : 1, + mySettings.KEEP_LINE_BREAKS, + mySettings.KEEP_BLANK_LINES_IN_CODE + ); + } + + private static boolean isInjectedJSHack(final IElementType type1, final IElementType type2) { + // Following code attempts NOT to reformat '@xxx:bbb.ccc' in var initializers + return type1 == JSTokenTypes.BAD_CHARACTER && JSElementTypes.SOURCE_ELEMENTS.contains(type2); + } + + @Override + public void visitFile(final ASTNode node) { + if (JSElementTypes.SOURCE_ELEMENTS.contains(type1) || JSElementTypes.SOURCE_ELEMENTS.contains(type2)) { + if (type2 == JSTokenTypes.END_OF_LINE_COMMENT + && isInlineEndOfLineCommentOnLeft() + && type1 != JSElementTypes.ES4_IMPORT_STATEMENT) { + myResult = Spacing.getReadOnlySpacing(); + } + else if ((JSElementTypes.ES4_IMPORT_STATEMENT == type1 && JSElementTypes.ES4_IMPORT_STATEMENT != type2) + || (JSElementTypes.ES4_IMPORT_STATEMENT != type1 && JSElementTypes.ES4_IMPORT_STATEMENT == type2)) { + myResult = Spacing.createSpacing( + 0, + 0, + 2, + mySettings.KEEP_LINE_BREAKS, + mySettings.KEEP_BLANK_LINES_IN_CODE + ); + } + else if (JSElementTypes.ES4_IMPORT_STATEMENT == type1 && JSElementTypes.ES4_IMPORT_STATEMENT == type2) { + myResult = getSpacingBetweenImports(); + } + else if (shouldPlaceExtraLinesAroundMethod() && node.getPsi().getContext() instanceof XmlText) { + myResult = Spacing.createSpacing( + 0, + 0, + 1 + mySettings.BLANK_LINES_AROUND_METHOD, + mySettings.KEEP_LINE_BREAKS, + mySettings.KEEP_BLANK_LINES_IN_CODE + ); + } + else { + myResult = Spacing.createSpacing( + 0, + 0, + 1, + mySettings.KEEP_LINE_BREAKS, + mySettings.KEEP_BLANK_LINES_IN_CODE + ); + } + } + } + + private boolean isInlineEndOfLineCommentOnLeft() { + final ASTNode prev = myChild2.getTreePrev(); + if (prev == myChild1) { + return true; + } + if (prev != null && prev.getPsi() instanceof PsiWhiteSpace) { + return !prev.textContains('\n'); + } + return false; + } + + @Override + public void visitFunctionDeclaration(final ASTNode node) { + if (type1 == JSTokenTypes.FUNCTION_KEYWORD && type2 == JSElementTypes.REFERENCE_EXPRESSION) { + setSingleSpace(true); + } + else if (type1 == JSElementTypes.REFERENCE_EXPRESSION && type2 == JSElementTypes.PARAMETER_LIST) { + setSingleSpace(mySettings.SPACE_BEFORE_METHOD_PARENTHESES); + } + else if (type2 == JSElementTypes.BLOCK_STATEMENT) { + setBraceSpace(mySettings.SPACE_BEFORE_METHOD_LBRACE, mySettings.METHOD_BRACE_STYLE, myChild1.getTextRange()); + } + else if (type1 == JSElementTypes.ATTRIBUTE_LIST && type2 == JSTokenTypes.FUNCTION_KEYWORD) { + setSingleSpace(true); + } + } + + @Override + public void visitFunctionExpression(final ASTNode node) { + visitFunctionDeclaration(node); + } + + @Override + public void visitReferenceExpression(final ASTNode node) { + if (type1 == JSTokenTypes.NEW_KEYWORD) { + setSingleSpace(true); + } + else { + setSingleSpace(false); // a.b should not have spaces before and after dot + } + } + + @Override + public void visitDocComment(final ASTNode node) { + //myResult = Spacing.createKeepingFirstColumnSpacing( + // 0, + // Integer.MAX_VALUE, + // mySettings.KEEP_LINE_BREAKS, + // mySettings.KEEP_BLANK_LINES_IN_CODE + //); + } + + @Override + public void visitIfStatement(final ASTNode node) { + if (type1 == JSTokenTypes.IF_KEYWORD && type2 == JSTokenTypes.LPAR) { + setSingleSpace(mySettings.SPACE_BEFORE_IF_PARENTHESES); + } + else if (type1 == JSTokenTypes.LPAR || type2 == JSTokenTypes.RPAR) { + setSingleSpace(mySettings.SPACE_WITHIN_IF_PARENTHESES); + } + else if (type1 == JSTokenTypes.RPAR && type2 == JSElementTypes.BLOCK_STATEMENT) { + TextRange dependentRange = new TextRange(myParent.getStartOffset(), myChild1.getTextRange().getEndOffset()); + setBraceSpace(mySettings.SPACE_BEFORE_IF_LBRACE, mySettings.BRACE_STYLE, dependentRange); + } + else if (type2 == JSTokenTypes.ELSE_KEYWORD) { + setLineBreakSpace(mySettings.ELSE_ON_NEW_LINE); + } + else if (type1 == JSTokenTypes.ELSE_KEYWORD && type2 == JSElementTypes.BLOCK_STATEMENT) { + setBraceSpace(mySettings.SPACE_BEFORE_ELSE_LBRACE, mySettings.BRACE_STYLE, null); + } + } + + @Override + public void visitCallExpression(final ASTNode node) { + if (type2 == JSElementTypes.ARGUMENT_LIST) { + setSingleSpace(mySettings.SPACE_BEFORE_METHOD_CALL_PARENTHESES); + } + } + + @Override + public void visitNewExpression(final ASTNode node) { + if (type1 == JSTokenTypes.NEW_KEYWORD) { + setSingleSpace(true); + } + else if (type2 == JSElementTypes.ARGUMENT_LIST) { + setSingleSpace(mySettings.SPACE_BEFORE_METHOD_CALL_PARENTHESES); + } + } + + @Override + public void visitForStatement(final ASTNode node) { + if (type1 == JSTokenTypes.SEMICOLON) { + setSingleSpace(true); + } + else if (type2 == JSTokenTypes.SEMICOLON) { + setSingleSpace(mySettings.SPACE_BEFORE_SEMICOLON); + } + + if (type1 == JSTokenTypes.FOR_KEYWORD && type2 == JSTokenTypes.LPAR) { + setSingleSpace(mySettings.SPACE_BEFORE_FOR_PARENTHESES); + } + else if (type1 == JSTokenTypes.RPAR && type2 == JSElementTypes.BLOCK_STATEMENT) { + TextRange dependentRange = new TextRange(myParent.getStartOffset(), myChild1.getTextRange().getEndOffset()); + setBraceSpace(mySettings.SPACE_BEFORE_FOR_LBRACE, mySettings.BRACE_STYLE, dependentRange); + } + else if (type1 == JSTokenTypes.LPAR || type2 == JSTokenTypes.RPAR) { + setSingleSpace(mySettings.SPACE_WITHIN_FOR_PARENTHESES); + } + } + + @Override + public void visitDoWhileStatement(final ASTNode node) { + if (type2 == JSTokenTypes.WHILE_KEYWORD) { + if (mySettings.WHILE_ON_NEW_LINE) { + myResult = Spacing.createSpacing( + 0, + 0, + 1, + mySettings.KEEP_LINE_BREAKS, + mySettings.KEEP_BLANK_LINES_IN_CODE + ); + } + else { + myResult = Spacing.createSpacing( + 1, + 1, + 0, + mySettings.KEEP_LINE_BREAKS, + mySettings.KEEP_BLANK_LINES_IN_CODE + ); + } + } + else if (type2 == JSTokenTypes.LPAR) { + setSingleSpace(mySettings.SPACE_BEFORE_WHILE_PARENTHESES); + } + else if (type1 == JSTokenTypes.LPAR || type2 == JSTokenTypes.RPAR) { + setSingleSpace(mySettings.SPACE_WITHIN_WHILE_PARENTHESES); + } + + if (type1 == JSTokenTypes.DO_KEYWORD && type2 == JSElementTypes.BLOCK_STATEMENT) { + setBraceSpace(true, mySettings.BRACE_STYLE, null); + } + } + + @Override + public void visitForInStatement(final ASTNode node) { + if (type1 == JSTokenTypes.VAR_KEYWORD || type2 == JSTokenTypes.VAR_KEYWORD) { + setSingleSpace(true); + } + else if (type1 == JSTokenTypes.FOR_KEYWORD && type2 == JSTokenTypes.LPAR) { + setSingleSpace(mySettings.SPACE_BEFORE_FOR_PARENTHESES); + } + else if (type1 == JSTokenTypes.RPAR && type2 == JSElementTypes.BLOCK_STATEMENT) { + TextRange dependentRange = new TextRange(myParent.getStartOffset(), myChild1.getTextRange().getEndOffset()); + setBraceSpace(mySettings.SPACE_BEFORE_FOR_LBRACE, mySettings.BRACE_STYLE, dependentRange); + } + else if (type1 == JSTokenTypes.LPAR || type2 == JSTokenTypes.RPAR) { + setSingleSpace(mySettings.SPACE_WITHIN_FOR_PARENTHESES); + } + } + + @Override + public void visitWhileStatement(final ASTNode node) { + if (type1 == JSTokenTypes.WHILE_KEYWORD && type2 == JSTokenTypes.LPAR) { + setSingleSpace(mySettings.SPACE_BEFORE_WHILE_PARENTHESES); + } + else if (type1 == JSTokenTypes.RPAR && type2 == JSElementTypes.BLOCK_STATEMENT) { + TextRange dependentRange = new TextRange(myParent.getStartOffset(), myChild1.getTextRange().getEndOffset()); + setBraceSpace(mySettings.SPACE_BEFORE_WHILE_LBRACE, mySettings.BRACE_STYLE, dependentRange); + } + else if (type1 == JSTokenTypes.LPAR || type2 == JSTokenTypes.RPAR) { + setSingleSpace(mySettings.SPACE_WITHIN_WHILE_PARENTHESES); + } + } + + @Override + public void visitWithStatement(final ASTNode node) { + if (type1 == JSTokenTypes.WITH_KEYWORD && type2 == JSTokenTypes.LPAR) { + setSingleSpace(mySettings.SPACE_BEFORE_WHILE_PARENTHESES); + } + else if (type1 == JSTokenTypes.RPAR && type2 == JSElementTypes.BLOCK_STATEMENT) { + TextRange dependentRange = new TextRange(myParent.getStartOffset(), myChild1.getTextRange().getEndOffset()); + setBraceSpace(mySettings.SPACE_BEFORE_WHILE_LBRACE, mySettings.BRACE_STYLE, dependentRange); + } + else if (type1 == JSTokenTypes.LPAR || type2 == JSTokenTypes.RPAR) { + setSingleSpace(mySettings.SPACE_WITHIN_WHILE_PARENTHESES); + } + } + + public static TokenSet NOT_A_PACKAGE_CONTENT = TokenSet.create(JSTokenTypes.PACKAGE_KEYWORD, JSElementTypes.REFERENCE_EXPRESSION, + JSTokenTypes.LBRACE, JSTokenTypes.RBRACE + ); + + @Override + public void visitTryStatement(final ASTNode node) { + if (type1 == JSTokenTypes.TRY_KEYWORD && type2 == JSElementTypes.BLOCK_STATEMENT) { + setBraceSpace(mySettings.SPACE_BEFORE_TRY_LBRACE, mySettings.BRACE_STYLE, null); + } + else if (type2 == JSElementTypes.CATCH_BLOCK) { + setLineBreakSpace(mySettings.CATCH_ON_NEW_LINE); + } + else if (type2 == JSTokenTypes.FINALLY_KEYWORD) { + setLineBreakSpace(mySettings.FINALLY_ON_NEW_LINE); + } + else if (type1 == JSTokenTypes.FINALLY_KEYWORD) { + setBraceSpace(mySettings.SPACE_BEFORE_FINALLY_LBRACE, mySettings.BRACE_STYLE, null); + } + } + + @Override + public void visitCatchBlock(final ASTNode node) { + if (type1 == JSTokenTypes.LPAR || type2 == JSTokenTypes.RPAR) { + setSingleSpace(mySettings.SPACE_WITHIN_CATCH_PARENTHESES); + } + + if (type1 == JSTokenTypes.CATCH_KEYWORD && type2 == JSTokenTypes.LPAR) { + setSingleSpace(mySettings.SPACE_BEFORE_CATCH_PARENTHESES); + } + + if (type2 == JSElementTypes.BLOCK_STATEMENT) { + TextRange dependentRange = new TextRange(myParent.getStartOffset(), myChild2.getTextRange().getStartOffset()); + setBraceSpace(mySettings.SPACE_BEFORE_CATCH_LBRACE, mySettings.BRACE_STYLE, dependentRange); + } + } + + @Override + public void visitSwitchStatement(final ASTNode node) { + if (type1 == JSTokenTypes.SWITCH_KEYWORD && type2 == JSTokenTypes.LPAR) { + setSingleSpace(mySettings.SPACE_BEFORE_SWITCH_PARENTHESES); + } + else if (type1 == JSTokenTypes.RPAR) { + TextRange dependentRange = new TextRange(myParent.getStartOffset(), myChild1.getTextRange().getEndOffset()); + setBraceSpace(mySettings.SPACE_BEFORE_SWITCH_LBRACE, mySettings.BRACE_STYLE, dependentRange); + } + else if (type1 == JSTokenTypes.LPAR || type2 == JSTokenTypes.RPAR) { + setSingleSpace(mySettings.SPACE_WITHIN_SWITCH_PARENTHESES); + } + } + + @Override + public void visitArgumentList(final ASTNode node) { + if (type1 == JSTokenTypes.LPAR || type2 == JSTokenTypes.RPAR) { + setSingleSpace(false); + } + else if (type1 == JSTokenTypes.COMMA) { + setSingleSpace(mySettings.SPACE_AFTER_COMMA); + } + else if (type2 == JSTokenTypes.COMMA) { + setSingleSpace(mySettings.SPACE_BEFORE_COMMA); + } + } + + @Override + public void visitStatement(final ASTNode node) { + if (type2 == JSTokenTypes.SEMICOLON) { + setSingleSpace(false); + } + } + + @Override + public void visitVarStatement(final ASTNode node) { + if (type1 == JSTokenTypes.VAR_KEYWORD) { + setSingleSpace(true); + } + } + + @Override + public void visitVariable(final ASTNode node) { + if (type1 == JSTokenTypes.EQ || type2 == JSTokenTypes.EQ) { // Initializer + setSingleSpace(mySettings.SPACE_AROUND_ASSIGNMENT_OPERATORS); + } + } + + @Override + public void visitBinaryExpression(final ASTNode node) { + IElementType opSign = null; + if (JSTokenTypes.OPERATIONS.contains(type1)) { + opSign = type1; + } + else if (JSTokenTypes.OPERATIONS.contains(type2)) { + opSign = type2; + } + + if (opSign != null) { + setSingleSpace(getSpaceAroundOption(opSign)); + } + } + + @Override + public void visitConditionalExpression(final ASTNode node) { + if (type1 == JSTokenTypes.QUEST) { + setSingleSpace(mySettings.SPACE_AFTER_QUEST); + } + else if (type2 == JSTokenTypes.QUEST) { + setSingleSpace(mySettings.SPACE_BEFORE_QUEST); + } + else if (type1 == JSTokenTypes.COLON) { + setSingleSpace(mySettings.SPACE_AFTER_COLON); + } + else if (type2 == JSTokenTypes.COLON) { + setSingleSpace(mySettings.SPACE_BEFORE_COLON); + } + } + + private boolean getSpaceAroundOption(final IElementType opSign) { + boolean option = false; + if (JSTokenTypes.ADDITIVE_OPERATIONS.contains(opSign)) { + option = mySettings.SPACE_AROUND_ADDITIVE_OPERATORS; + } + else if (JSTokenTypes.MULTIPLICATIVE_OPERATIONS.contains(opSign)) { + option = mySettings.SPACE_AROUND_MULTIPLICATIVE_OPERATORS; + } + else if (JSTokenTypes.ASSIGNMENT_OPERATIONS.contains(opSign)) { + option = mySettings.SPACE_AROUND_ASSIGNMENT_OPERATORS; + } + else if (JSTokenTypes.EQUALITY_OPERATIONS.contains(opSign)) { + option = mySettings.SPACE_AROUND_EQUALITY_OPERATORS; + } + else if (JSTokenTypes.RELATIONAL_OPERATIONS.contains(opSign)) { + option = mySettings.SPACE_AROUND_RELATIONAL_OPERATORS; + } + else if (JSTokenTypes.SHIFT_OPERATIONS.contains(opSign)) { + option = mySettings.SPACE_AROUND_BITWISE_OPERATORS; + } + else if (opSign == JSTokenTypes.ANDAND || opSign == JSTokenTypes.OROR) { + option = mySettings.SPACE_AROUND_LOGICAL_OPERATORS; + } + else if (opSign == JSTokenTypes.OR || opSign == JSTokenTypes.AND || opSign == JSTokenTypes.XOR) { + option = mySettings.SPACE_AROUND_BITWISE_OPERATORS; + } + else if (opSign == JSTokenTypes.IS_KEYWORD || opSign == JSTokenTypes.AS_KEYWORD) { + option = true; + } + return option; + } + + private void setSingleSpace(boolean needSpace) { + final int spaces = needSpace ? 1 : 0; + myResult = Spacing.createSpacing(spaces, spaces, 0, mySettings.KEEP_LINE_BREAKS, mySettings.KEEP_BLANK_LINES_IN_CODE); + } + + private void setBraceSpace(boolean needSpaceSetting, int braceStyleSetting, TextRange textRange) { + int spaces = needSpaceSetting ? 1 : 0; + if (braceStyleSetting == CodeStyleSettings.NEXT_LINE_IF_WRAPPED && textRange != null) { + myResult = Spacing.createDependentLFSpacing( + spaces, + spaces, + textRange, + mySettings.KEEP_LINE_BREAKS, + mySettings.KEEP_BLANK_LINES_IN_CODE + ); + } + else { + int lineBreaks = braceStyleSetting == CodeStyleSettings.END_OF_LINE ? 0 : 1; + myResult = Spacing.createSpacing(spaces, spaces, lineBreaks, mySettings.KEEP_LINE_BREAKS, mySettings.KEEP_BLANK_LINES_IN_CODE); + } + } + + private void setLineBreakSpace(final boolean needLineBreak) { + final int breaks = needLineBreak || myChild1.getElementType() == JSTokenTypes.END_OF_LINE_COMMENT ? 1 : 0; + myResult = Spacing.createSpacing(1, 1, breaks, mySettings.KEEP_LINE_BREAKS, mySettings.KEEP_BLANK_LINES_IN_CODE); + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JavaScriptIndentOptionsProvider.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JavaScriptIndentOptionsProvider.java index de4f6919..40a96eea 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JavaScriptIndentOptionsProvider.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JavaScriptIndentOptionsProvider.java @@ -29,36 +29,30 @@ * @author yole */ @ExtensionImpl -public class JavaScriptIndentOptionsProvider implements FileTypeIndentOptionsProvider -{ - @Override - public CodeStyleSettings.IndentOptions createIndentOptions() - { - return new CodeStyleSettings.IndentOptions(); - } +public class JavaScriptIndentOptionsProvider implements FileTypeIndentOptionsProvider { + @Override + public CodeStyleSettings.IndentOptions createIndentOptions() { + return new CodeStyleSettings.IndentOptions(); + } - @Override - public FileType getFileType() - { - return JavaScriptFileType.INSTANCE; - } + @Override + public FileType getFileType() { + return JavaScriptFileType.INSTANCE; + } - @Override - public IndentOptionsEditor createOptionsEditor() - { - return new SmartIndentOptionsEditor(); - } + @Override + public IndentOptionsEditor createOptionsEditor() { + return new SmartIndentOptionsEditor(); + } - @Override - public String getPreviewText() - { - return "function a() {\n" + - " alert(\"test\");\n" + - "}"; - } + @Override + public String getPreviewText() { + return "function a() {\n" + + " alert(\"test\");\n" + + "}"; + } - @Override - public void prepareForReformat(final PsiFile psiFile) - { - } + @Override + public void prepareForReformat(final PsiFile psiFile) { + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JavascriptFormattingModelBuilder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JavascriptFormattingModelBuilder.java index a518c1d0..4e93fb4d 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JavascriptFormattingModelBuilder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JavascriptFormattingModelBuilder.java @@ -31,27 +31,27 @@ import jakarta.annotation.Nonnull; @ExtensionImpl -public class JavascriptFormattingModelBuilder implements FormattingModelBuilder -{ - @Nonnull - public FormattingModel createModel(@Nonnull FormattingContext formattingContext) - { - PsiElement element = formattingContext.getPsiElement(); +public class JavascriptFormattingModelBuilder implements FormattingModelBuilder { + @Nonnull + public FormattingModel createModel(@Nonnull FormattingContext formattingContext) { + PsiElement element = formattingContext.getPsiElement(); - CodeStyleSettings settings = formattingContext.getCodeStyleSettings(); + CodeStyleSettings settings = formattingContext.getCodeStyleSettings(); - final PsiFile psiFile = element.getContainingFile(); + final PsiFile psiFile = element.getContainingFile(); - CommonCodeStyleSettings commonSettings = settings.getCommonSettings(JavaScriptLanguage.INSTANCE); + CommonCodeStyleSettings commonSettings = settings.getCommonSettings(JavaScriptLanguage.INSTANCE); - return new JSFormattingModel(psiFile, settings, new JSBlock(psiFile instanceof JSFile ? psiFile.getNode() : element.getNode(), null, null, null, commonSettings)); + return new JSFormattingModel( + psiFile, + settings, + new JSBlock(psiFile instanceof JSFile ? psiFile.getNode() : element.getNode(), null, null, null, commonSettings) + ); + } - } - - @Nonnull - @Override - public Language getLanguage() - { - return JavaScriptLanguage.INSTANCE; - } + @Nonnull + @Override + public Language getLanguage() { + return JavaScriptLanguage.INSTANCE; + } } \ No newline at end of file diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/blocks/JSBlock.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/blocks/JSBlock.java index 0aff8bda..7addfa96 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/blocks/JSBlock.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/blocks/JSBlock.java @@ -30,199 +30,175 @@ import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; + import java.util.List; /** * @author ven */ -public class JSBlock implements Block -{ - private ASTNode myNode; - - private final CommonCodeStyleSettings mySettings; - - private Alignment myAlignment; - private Indent myIndent; - private Wrap myWrap; - private List mySubBlocks = null; - - public JSBlock(final ASTNode node, final Alignment alignment, final Indent indent, final Wrap wrap, final CommonCodeStyleSettings settings) - { - myAlignment = alignment; - myIndent = indent; - myNode = node; - myWrap = wrap; - mySettings = settings; - } - - public ASTNode getNode() - { - return myNode; - } - - @Override - @Nonnull - public TextRange getTextRange() - { - return myNode.getTextRange(); - } - - @Override - @Nonnull - public List getSubBlocks() - { - if(mySubBlocks == null) - { - SubBlockVisitor visitor = new SubBlockVisitor(getSettings()); - visitor.visit(myNode); - mySubBlocks = visitor.getBlocks(); - } - return mySubBlocks; - } - - @Override - @Nullable - public Wrap getWrap() - { - return myWrap; - } - - @Override - @Nullable - public Indent getIndent() - { - return myIndent; - } - - @Override - @Nullable - public Alignment getAlignment() - { - return myAlignment; - } - - @Override - @Nullable - public Spacing getSpacing(Block child1, Block child2) - { - if(child1 instanceof JSDocCommentBlock || child2 instanceof JSDocCommentBlock || child1 == null) - { - return null; - } - return new JSSpacingProcessor(getNode(), ((JSBlock) child1).getNode(), ((JSBlock) child2).getNode(), mySettings).getResult(); - } - - @Override - @Nonnull - public ChildAttributes getChildAttributes(final int newChildIndex) - { - Indent indent = null; - final IElementType blockElementType = myNode.getElementType(); - - if(blockElementType == JSTokenTypes.DOC_COMMENT) - { - return new ChildAttributes(Indent.getSpaceIndent(1), null); - } - - if(blockElementType == JSElementTypes.PACKAGE_STATEMENT) - { - final JSCodeStyleSettings customSettings = CodeStyleSettingsManager.getSettings(myNode.getPsi().getProject()).getCustomSettings - (JSCodeStyleSettings.class); - if(customSettings.INDENT_PACKAGE_CHILDREN == JSCodeStyleSettings.INDENT) - { - indent = Indent.getNormalIndent(); - } - else - { - indent = Indent.getNoneIndent(); - } - } - else if(blockElementType == JSElementTypes.BLOCK_STATEMENT || - blockElementType == JSElementTypes.CLASS || - blockElementType == JSElementTypes.OBJECT_LITERAL_EXPRESSION) - { - indent = Indent.getNormalIndent(); - } - else if(blockElementType instanceof JSFileElementType || blockElementType == JSElementTypes.EMBEDDED_CONTENT) - { - indent = Indent.getNoneIndent(); - } - else if(JSElementTypes.SOURCE_ELEMENTS.contains(blockElementType) || - blockElementType == JSElementTypes.FUNCTION_EXPRESSION || - blockElementType == JSElementTypes.ATTRIBUTE_LIST) - { - indent = Indent.getNoneIndent(); - } - - Alignment alignment = null; - final List subBlocks = getSubBlocks(); - for(int i = 0; i < newChildIndex; i++) - { - if(i == subBlocks.size()) - { - break; - } - final Alignment childAlignment = subBlocks.get(i).getAlignment(); - if(childAlignment != null) - { - alignment = childAlignment; - break; - } - } - - // in for loops, alignment is required only for items within parentheses - if(blockElementType == JSElementTypes.FOR_STATEMENT || blockElementType == JSElementTypes.FOR_IN_STATEMENT) - { - for(int i = 0; i < newChildIndex; i++) - { - if(((JSBlock) subBlocks.get(i)).getNode().getElementType() == JSTokenTypes.RPAR) - { - alignment = null; - break; - } - } - } - - return new ChildAttributes(indent, alignment); - } - - @Override - public boolean isIncomplete() - { - return isIncomplete(myNode); - } - - private boolean isIncomplete(ASTNode node) - { - node.getPsi().getFirstChild(); // expand chameleon - ASTNode lastChild = node.getLastChildNode(); - while(lastChild != null && lastChild.getPsi() instanceof PsiWhiteSpace) - { - lastChild = lastChild.getTreePrev(); - } - if(lastChild == null) - { - return false; - } - if(lastChild.getPsi() instanceof PsiErrorElement) - { - return true; - } - return isIncomplete(lastChild); - } - - public CommonCodeStyleSettings getSettings() - { - return mySettings; - } - - @Override - public boolean isLeaf() - { - if(myNode.getElementType() == JSTokenTypes.DOC_COMMENT) - { - return false; - } - return myNode.getFirstChildNode() == null; - } +public class JSBlock implements Block { + private ASTNode myNode; + + private final CommonCodeStyleSettings mySettings; + + private Alignment myAlignment; + private Indent myIndent; + private Wrap myWrap; + private List mySubBlocks = null; + + public JSBlock( + final ASTNode node, + final Alignment alignment, + final Indent indent, + final Wrap wrap, + final CommonCodeStyleSettings settings + ) { + myAlignment = alignment; + myIndent = indent; + myNode = node; + myWrap = wrap; + mySettings = settings; + } + + public ASTNode getNode() { + return myNode; + } + + @Override + @Nonnull + public TextRange getTextRange() { + return myNode.getTextRange(); + } + + @Override + @Nonnull + public List getSubBlocks() { + if (mySubBlocks == null) { + SubBlockVisitor visitor = new SubBlockVisitor(getSettings()); + visitor.visit(myNode); + mySubBlocks = visitor.getBlocks(); + } + return mySubBlocks; + } + + @Override + @Nullable + public Wrap getWrap() { + return myWrap; + } + + @Override + @Nullable + public Indent getIndent() { + return myIndent; + } + + @Override + @Nullable + public Alignment getAlignment() { + return myAlignment; + } + + @Override + @Nullable + public Spacing getSpacing(Block child1, Block child2) { + if (child1 instanceof JSDocCommentBlock || child2 instanceof JSDocCommentBlock || child1 == null) { + return null; + } + return new JSSpacingProcessor(getNode(), ((JSBlock)child1).getNode(), ((JSBlock)child2).getNode(), mySettings).getResult(); + } + + @Override + @Nonnull + public ChildAttributes getChildAttributes(final int newChildIndex) { + Indent indent = null; + final IElementType blockElementType = myNode.getElementType(); + + if (blockElementType == JSTokenTypes.DOC_COMMENT) { + return new ChildAttributes(Indent.getSpaceIndent(1), null); + } + + if (blockElementType == JSElementTypes.PACKAGE_STATEMENT) { + final JSCodeStyleSettings customSettings = + CodeStyleSettingsManager.getSettings(myNode.getPsi().getProject()).getCustomSettings(JSCodeStyleSettings.class); + if (customSettings.INDENT_PACKAGE_CHILDREN == JSCodeStyleSettings.INDENT) { + indent = Indent.getNormalIndent(); + } + else { + indent = Indent.getNoneIndent(); + } + } + else if (blockElementType == JSElementTypes.BLOCK_STATEMENT + || blockElementType == JSElementTypes.CLASS + || blockElementType == JSElementTypes.OBJECT_LITERAL_EXPRESSION) { + indent = Indent.getNormalIndent(); + } + else if (blockElementType instanceof JSFileElementType || blockElementType == JSElementTypes.EMBEDDED_CONTENT) { + indent = Indent.getNoneIndent(); + } + else if (JSElementTypes.SOURCE_ELEMENTS.contains(blockElementType) + || blockElementType == JSElementTypes.FUNCTION_EXPRESSION + || blockElementType == JSElementTypes.ATTRIBUTE_LIST) { + indent = Indent.getNoneIndent(); + } + + Alignment alignment = null; + final List subBlocks = getSubBlocks(); + for (int i = 0; i < newChildIndex; i++) { + if (i == subBlocks.size()) { + break; + } + final Alignment childAlignment = subBlocks.get(i).getAlignment(); + if (childAlignment != null) { + alignment = childAlignment; + break; + } + } + + // in for loops, alignment is required only for items within parentheses + if (blockElementType == JSElementTypes.FOR_STATEMENT || blockElementType == JSElementTypes.FOR_IN_STATEMENT) { + for (int i = 0; i < newChildIndex; i++) { + if (((JSBlock)subBlocks.get(i)).getNode().getElementType() == JSTokenTypes.RPAR) { + alignment = null; + break; + } + } + } + + return new ChildAttributes(indent, alignment); + } + + @Override + public boolean isIncomplete() { + return isIncomplete(myNode); + } + + private boolean isIncomplete(ASTNode node) { + node.getPsi().getFirstChild(); // expand chameleon + ASTNode lastChild = node.getLastChildNode(); + while (lastChild != null && lastChild.getPsi() instanceof PsiWhiteSpace) { + lastChild = lastChild.getTreePrev(); + } + + if (lastChild == null) { + return false; + } + + if (lastChild.getPsi() instanceof PsiErrorElement) { + return true; + } + return isIncomplete(lastChild); + } + + public CommonCodeStyleSettings getSettings() { + return mySettings; + } + + @Override + public boolean isLeaf() { + if (myNode.getElementType() == JSTokenTypes.DOC_COMMENT) { + return false; + } + return myNode.getFirstChildNode() == null; + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/blocks/JSDocCommentBlock.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/blocks/JSDocCommentBlock.java index 237900e2..22f4af2d 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/blocks/JSDocCommentBlock.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/blocks/JSDocCommentBlock.java @@ -33,80 +33,69 @@ /** * @author yole */ -public class JSDocCommentBlock implements Block -{ - private ASTNode myNode; - private int myStartOffset; - private int myEndOffset; - private Indent myIndent; - private static final List EMPTY_BLOCK_LIST = new ArrayList(); +public class JSDocCommentBlock implements Block { + private ASTNode myNode; + private int myStartOffset; + private int myEndOffset; + private Indent myIndent; + private static final List EMPTY_BLOCK_LIST = new ArrayList(); - public JSDocCommentBlock(final ASTNode node, final int startOffset, final int endOffset, final Indent indent) - { - myNode = node; - myStartOffset = startOffset; - myEndOffset = endOffset; - myIndent = indent; - } + public JSDocCommentBlock(final ASTNode node, final int startOffset, final int endOffset, final Indent indent) { + myNode = node; + myStartOffset = startOffset; + myEndOffset = endOffset; + myIndent = indent; + } - @Override - @Nonnull - public TextRange getTextRange() - { - return new TextRange(myNode.getStartOffset() + myStartOffset, myNode.getStartOffset() + myEndOffset); - } + @Override + @Nonnull + public TextRange getTextRange() { + return new TextRange(myNode.getStartOffset() + myStartOffset, myNode.getStartOffset() + myEndOffset); + } - @Override - @Nonnull - public List getSubBlocks() - { - return EMPTY_BLOCK_LIST; - } + @Override + @Nonnull + public List getSubBlocks() { + return EMPTY_BLOCK_LIST; + } - @Override - @Nullable - public Wrap getWrap() - { - return null; - } + @Override + @Nullable + public Wrap getWrap() { + return null; + } - @Override - @Nullable - public Indent getIndent() - { - return myIndent; - } + @Override + @Nullable + public Indent getIndent() { + return myIndent; + } - @Override - @Nullable - public Alignment getAlignment() - { - return null; - } + @Override + @Nullable + public Alignment getAlignment() { + return null; + } - @Override - @Nullable - public Spacing getSpacing(Block child1, Block child2) - { - return null; - } + @Override + @Nullable + public Spacing getSpacing(Block child1, Block child2) { + return null; + } - @Override - @Nonnull - public ChildAttributes getChildAttributes(final int newChildIndex) - { - return null; - } + @Override + @Nonnull + public ChildAttributes getChildAttributes(final int newChildIndex) { + return null; + } - @Override - public boolean isIncomplete() - { - return false; - } + @Override + public boolean isIncomplete() { + return false; + } - @Override - public boolean isLeaf() - { - return true; - } + @Override + public boolean isLeaf() { + return true; + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/blocks/SubBlockVisitor.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/blocks/SubBlockVisitor.java index e00e940f..89afd838 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/blocks/SubBlockVisitor.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/blocks/SubBlockVisitor.java @@ -37,386 +37,314 @@ /** * @author ven */ -public class SubBlockVisitor extends JSNodeVisitor -{ - private final List myBlocks = new ArrayList<>(); - private final CommonCodeStyleSettings mySettings; - - public SubBlockVisitor(CommonCodeStyleSettings settings) - { - mySettings = settings; - } - - public List getBlocks() - { - return myBlocks; - } - - @Override - @RequiredReadAction - public void visitElement(final ASTNode node) - { - Alignment alignment = getDefaultAlignment(node); - - PsiElement elt = node.getPsi().getFirstChild(); // expand chameleon - - while(elt != null) - { - final ASTNode child = elt.getNode(); - assert child != null; - - if(child.getElementType() != JSTokenTypes.WHITE_SPACE && child.getTextRange().getLength() > 0) - { - Wrap wrap = getWrap(node, child); - Alignment childAlignment = alignmentProjection(alignment, node, child); - Indent childIndent = getIndent(node, child); - myBlocks.add(new JSBlock(child, childAlignment, childIndent, wrap, mySettings)); - } - - elt = elt.getNextSibling(); // expand chameleon - } - } - - - @Override - public void visitDocComment(final ASTNode node) - { - final ASTNode child = node.getFirstChildNode(); - if(child != null && child.getElementType() == JSTokenTypes.DOC_COMMENT) - { - visit(child); - } - else - { - super.visitDocComment(node); - } - } - - @Override - public void visitComment(final ASTNode node) - { - buildCommentBlocks(node); - } - - private void buildCommentBlocks(final ASTNode node) - { - String commentText = node.getText(); - int pos = 0; - while(pos < commentText.length()) - { - int nextPos = commentText.indexOf('\n', pos); - if(nextPos < 0) - { - nextPos = commentText.length(); - } - - if(pos != nextPos) - { - final Indent childIndent = (pos == 0) ? Indent.getNoneIndent() : Indent.getSpaceIndent(1); - myBlocks.add(new JSDocCommentBlock(node, pos, nextPos, childIndent)); - } - pos = nextPos + 1; - while(pos < commentText.length() && (commentText.charAt(pos) == ' ' || - commentText.charAt(pos) == '\t' || - commentText.charAt(pos) == '\n')) - { - pos++; - } - } - } - - @Nullable - static Alignment getDefaultAlignment(final ASTNode node) - { - if(node.getElementType() == JSElementTypes.FOR_STATEMENT || - node.getElementType() == JSElementTypes.PARAMETER_LIST || - node.getElementType() == JSElementTypes.BINARY_EXPRESSION || - node.getElementType() == JSElementTypes.ASSIGNMENT_EXPRESSION || - node.getElementType() == JSElementTypes.CONDITIONAL_EXPRESSION) - { - return Alignment.createAlignment(); - } - - return null; - } - - @Nullable - private Indent getIndent(final ASTNode node, final ASTNode child) - { - final IElementType nodeElementType = node.getElementType(); - - if(nodeElementType instanceof JSFileElementType || nodeElementType == JSElementTypes.EMBEDDED_CONTENT) - { - return Indent.getNoneIndent(); - } - - if(nodeElementType == JSTokenTypes.DOC_COMMENT) - { - final ASTNode treePrev = child.getTreePrev(); - if(treePrev != null && treePrev.getPsi() instanceof PsiWhiteSpace && treePrev.getText().indexOf("\n") != -1) - { - return Indent.getSpaceIndent(1); - } - return Indent.getNoneIndent(); - } - - final IElementType childElementType = child.getElementType(); - - if(nodeElementType == JSElementTypes.PACKAGE_STATEMENT && !JSSpacingProcessor.NOT_A_PACKAGE_CONTENT.contains(childElementType)) - { - final JSCodeStyleSettings customSettings = CodeStyleSettingsManager.getSettings(node.getPsi().getProject()).getCustomSettings(JSCodeStyleSettings - .class); - if(customSettings.INDENT_PACKAGE_CHILDREN == JSCodeStyleSettings.INDENT) - { - return Indent.getNormalIndent(); - } - return Indent.getNoneIndent(); - } - - if(nodeElementType == JSElementTypes.ATTRIBUTE_LIST) - { - return Indent.getNoneIndent(); - } - - if(childElementType == JSElementTypes.BLOCK_STATEMENT) - { - if(nodeElementType == JSElementTypes.FUNCTION_DECLARATION && (mySettings.METHOD_BRACE_STYLE == CodeStyleSettings.NEXT_LINE_SHIFTED || mySettings - .METHOD_BRACE_STYLE == CodeStyleSettings.NEXT_LINE_SHIFTED2)) - { - return Indent.getNormalIndent(); - } - if(mySettings.BRACE_STYLE == CodeStyleSettings.NEXT_LINE_SHIFTED || mySettings.BRACE_STYLE == CodeStyleSettings.NEXT_LINE_SHIFTED2) - { - return Indent.getNormalIndent(); - } - return Indent.getNoneIndent(); - } - - if(childElementType == JSElementTypes.CATCH_BLOCK) - { - return Indent.getNoneIndent(); - } - - if(childElementType == JSElementTypes.CASE_CLAUSE) - { - return mySettings.INDENT_CASE_FROM_SWITCH ? Indent.getNormalIndent() : Indent.getNoneIndent(); - } - - if(nodeElementType == JSElementTypes.CASE_CLAUSE) - { - if(child.getPsi() instanceof JSStatement || JSTokenTypes.COMMENTS.contains(childElementType)) - { - return Indent.getNormalIndent(); - } - return Indent.getNoneIndent(); - } - - if(nodeElementType == JSElementTypes.SWITCH_STATEMENT && (childElementType == JSTokenTypes.LBRACE || childElementType == JSTokenTypes.RBRACE)) - { - return Indent.getNoneIndent(); - } - - if(nodeElementType == JSElementTypes.IF_STATEMENT) - { - return Indent.getNoneIndent(); - } - - if(nodeElementType == JSElementTypes.WITH_STATEMENT && JSElementTypes.SOURCE_ELEMENTS.contains(childElementType)) - { - return Indent.getNormalIndent(); - } - - if(nodeElementType == JSElementTypes.DOWHILE_STATEMENT && childElementType == JSTokenTypes.WHILE_KEYWORD) - { - return Indent.getNoneIndent(); - } - - if(nodeElementType == JSElementTypes.TRY_STATEMENT && childElementType == JSTokenTypes.FINALLY_KEYWORD) - { - return Indent.getNoneIndent(); - } - - if(nodeElementType == JSElementTypes.BLOCK_STATEMENT || - nodeElementType == JSElementTypes.CLASS || - nodeElementType == JSElementTypes.PACKAGE_STATEMENT) - { - final ASTNode parent = node.getTreeParent(); - if(parent != null && parent.getElementType() == JSElementTypes.FUNCTION_DECLARATION && - mySettings.METHOD_BRACE_STYLE == CodeStyleSettings.NEXT_LINE_SHIFTED) - { - return Indent.getNoneIndent(); - } - if(mySettings.BRACE_STYLE == CodeStyleSettings.NEXT_LINE_SHIFTED) - { - return Indent.getNoneIndent(); - } - if(JSElementTypes.SOURCE_ELEMENTS.contains(childElementType) || JSTokenTypes.COMMENTS.contains(childElementType)) - { - return Indent.getNormalIndent(); - } - return Indent.getNoneIndent(); - } - else if(node.getPsi() instanceof JSLoopStatement) - { - if(child.getPsi() == ((JSLoopStatement) node.getPsi()).getBody()) - { - if(childElementType == JSElementTypes.BLOCK_STATEMENT) - { - return Indent.getNoneIndent(); - } - else - { - return Indent.getNormalIndent(); - } - } - } - - if(JSTokenTypes.COMMENTS.contains(childElementType)) - { - return Indent.getNormalIndent(); - } - if(childElementType == JSElementTypes.OBJECT_LITERAL_EXPRESSION) - { - return nodeElementType == JSElementTypes.ARRAY_LITERAL_EXPRESSION ? Indent.getNormalIndent() : Indent.getNoneIndent(); - } - - if(nodeElementType == JSElementTypes.XML_LITERAL_EXPRESSION) - { - return childElementType == JSElementTypes.XML_LITERAL_EXPRESSION ? Indent.getNormalIndent() : Indent.getNoneIndent(); - } - - if(nodeElementType == JSElementTypes.ARRAY_LITERAL_EXPRESSION) - { - if(childElementType == JSTokenTypes.LBRACKET || childElementType == JSTokenTypes.RBRACKET) - { - return Indent.getNoneIndent(); - } - return Indent.getNormalIndent(); - } - - if(nodeElementType == JSElementTypes.EMBEDDED_EXPRESSION) - { - if(childElementType == JSTokenTypes.LBRACE || childElementType == JSTokenTypes.RBRACE) - { - return Indent.getNoneIndent(); - } - return Indent.getNormalIndent(); - } - - if(nodeElementType == JSElementTypes.OBJECT_LITERAL_EXPRESSION) - { - if(childElementType == JSTokenTypes.LBRACE || childElementType == JSTokenTypes.RBRACE) - { - return Indent.getNoneIndent(); - } - return Indent.getNormalIndent(); - } - return null; - } - - @Nullable - private static Alignment alignmentProjection(final Alignment defaultAlignment, final ASTNode parent, final ASTNode child) - { - if(parent.getElementType() == JSElementTypes.FOR_STATEMENT && (JSElementTypes.EXPRESSIONS.contains(child.getElementType()) || child.getElementType - () == JSElementTypes.VAR_STATEMENT)) - { - return defaultAlignment; - } - else if(parent.getElementType() == JSElementTypes.PARAMETER_LIST && child.getElementType() == JSElementTypes.FORMAL_PARAMETER) - { - return defaultAlignment; - } - else if(parent.getPsi() instanceof JSBinaryExpression && JSElementTypes.EXPRESSIONS.contains(child.getElementType())) - { - return defaultAlignment; - } - else if(parent.getElementType() == JSElementTypes.CONDITIONAL_EXPRESSION && JSElementTypes.EXPRESSIONS.contains(child.getElementType())) - { - return defaultAlignment; - } - - return null; - } - - @Nullable - private Wrap getWrap(final ASTNode node, final ASTNode child) - { - WrapType wrapType = null; - if(node.getElementType() == JSElementTypes.ASSIGNMENT_EXPRESSION) - { - final JSAssignmentExpression assignment = (JSAssignmentExpression) node.getPsi(); - if(child.getElementType() == assignment.getOperationSign() && mySettings.PLACE_ASSIGNMENT_SIGN_ON_NEXT_LINE || child.getPsi() == assignment - .getROperand() && !mySettings.PLACE_ASSIGNMENT_SIGN_ON_NEXT_LINE) - { - wrapType = WrapType.byLegacyRepresentation(mySettings.ASSIGNMENT_WRAP); - } - } - else if(node.getElementType() == JSElementTypes.BINARY_EXPRESSION) - { - final JSBinaryExpression binary = (JSBinaryExpression) node.getPsi(); - if(child.getElementType() == binary.getOperationSign() && mySettings.BINARY_OPERATION_SIGN_ON_NEXT_LINE || child.getPsi() == binary.getROperand() - && !mySettings.BINARY_OPERATION_SIGN_ON_NEXT_LINE) - { - wrapType = WrapType.byLegacyRepresentation(mySettings.BINARY_OPERATION_WRAP); - } - } - else if(node.getElementType() == JSElementTypes.PARENTHESIZED_EXPRESSION) - { - if(child == node.findChildByType(JSTokenTypes.LPAR) && mySettings.PARENTHESES_EXPRESSION_LPAREN_WRAP) - { - wrapType = WrapType.NORMAL; - } - else if(child == node.findChildByType(JSTokenTypes.RPAR) && mySettings.PARENTHESES_EXPRESSION_RPAREN_WRAP) - { - wrapType = WrapType.ALWAYS; - } - } - else if(node.getElementType() == JSElementTypes.ARRAY_LITERAL_EXPRESSION) - { - if(child == node.findChildByType(JSTokenTypes.LBRACE) && mySettings.ARRAY_INITIALIZER_LBRACE_ON_NEXT_LINE) - { - wrapType = WrapType.NORMAL; - } - else if(child == node.findChildByType(JSTokenTypes.RPAR) && mySettings.ARRAY_INITIALIZER_RBRACE_ON_NEXT_LINE) - { - wrapType = WrapType.ALWAYS; - } - } - else if(node.getElementType() == JSElementTypes.CONDITIONAL_EXPRESSION) - { - final IElementType elementType = child.getElementType(); - if((mySettings.TERNARY_OPERATION_SIGNS_ON_NEXT_LINE && (elementType == JSTokenTypes.QUEST || elementType == JSTokenTypes.COLON)) || (!mySettings - .TERNARY_OPERATION_SIGNS_ON_NEXT_LINE && child.getPsi() instanceof JSExpression)) - { - wrapType = WrapType.byLegacyRepresentation(mySettings.TERNARY_OPERATION_WRAP); - } - } - else if(node.getElementType() == JSElementTypes.CALL_EXPRESSION) - { - if(child == node.findChildByType(JSTokenTypes.LPAR) && mySettings.CALL_PARAMETERS_LPAREN_ON_NEXT_LINE) - { - wrapType = WrapType.NORMAL; - } - else if(child == node.findChildByType(JSTokenTypes.RPAR) && mySettings.CALL_PARAMETERS_RPAREN_ON_NEXT_LINE) - { - wrapType = WrapType.ALWAYS; - } - } - else if(node.getElementType() == JSElementTypes.PARAMETER_LIST) - { - if(child.getElementType() == JSElementTypes.FORMAL_PARAMETER) - { - wrapType = WrapType.byLegacyRepresentation(mySettings.METHOD_PARAMETERS_WRAP); - } - } - else if(node.getElementType() == JSElementTypes.FOR_STATEMENT || node.getElementType() == JSElementTypes.FOR_IN_STATEMENT) - { - if(JSElementTypes.EXPRESSIONS.contains(child.getElementType())) - { - wrapType = WrapType.byLegacyRepresentation(mySettings.FOR_STATEMENT_WRAP); - } - } - - return wrapType == null ? null : Wrap.createWrap(wrapType, false); - } +public class SubBlockVisitor extends JSNodeVisitor { + private final List myBlocks = new ArrayList<>(); + private final CommonCodeStyleSettings mySettings; + + public SubBlockVisitor(CommonCodeStyleSettings settings) { + mySettings = settings; + } + + public List getBlocks() { + return myBlocks; + } + + @Override + @RequiredReadAction + public void visitElement(final ASTNode node) { + Alignment alignment = getDefaultAlignment(node); + + PsiElement elt = node.getPsi().getFirstChild(); // expand chameleon + + while (elt != null) { + final ASTNode child = elt.getNode(); + assert child != null; + + if (child.getElementType() != JSTokenTypes.WHITE_SPACE && child.getTextRange().getLength() > 0) { + Wrap wrap = getWrap(node, child); + Alignment childAlignment = alignmentProjection(alignment, node, child); + Indent childIndent = getIndent(node, child); + myBlocks.add(new JSBlock(child, childAlignment, childIndent, wrap, mySettings)); + } + + elt = elt.getNextSibling(); // expand chameleon + } + } + + + @Override + public void visitDocComment(final ASTNode node) { + final ASTNode child = node.getFirstChildNode(); + if (child != null && child.getElementType() == JSTokenTypes.DOC_COMMENT) { + visit(child); + } + else { + super.visitDocComment(node); + } + } + + @Override + public void visitComment(final ASTNode node) { + buildCommentBlocks(node); + } + + private void buildCommentBlocks(final ASTNode node) { + String commentText = node.getText(); + int pos = 0; + while (pos < commentText.length()) { + int nextPos = commentText.indexOf('\n', pos); + if (nextPos < 0) { + nextPos = commentText.length(); + } + + if (pos != nextPos) { + final Indent childIndent = (pos == 0) ? Indent.getNoneIndent() : Indent.getSpaceIndent(1); + myBlocks.add(new JSDocCommentBlock(node, pos, nextPos, childIndent)); + } + pos = nextPos + 1; + while (pos < commentText.length() && (commentText.charAt(pos) == ' ' || + commentText.charAt(pos) == '\t' || + commentText.charAt(pos) == '\n')) { + pos++; + } + } + } + + @Nullable + static Alignment getDefaultAlignment(final ASTNode node) { + if (node.getElementType() == JSElementTypes.FOR_STATEMENT + || node.getElementType() == JSElementTypes.PARAMETER_LIST + || node.getElementType() == JSElementTypes.BINARY_EXPRESSION + || node.getElementType() == JSElementTypes.ASSIGNMENT_EXPRESSION + || node.getElementType() == JSElementTypes.CONDITIONAL_EXPRESSION) { + return Alignment.createAlignment(); + } + + return null; + } + + @Nullable + private Indent getIndent(final ASTNode node, final ASTNode child) { + final IElementType nodeElementType = node.getElementType(); + + if (nodeElementType instanceof JSFileElementType || nodeElementType == JSElementTypes.EMBEDDED_CONTENT) { + return Indent.getNoneIndent(); + } + + if (nodeElementType == JSTokenTypes.DOC_COMMENT) { + final ASTNode treePrev = child.getTreePrev(); + if (treePrev != null && treePrev.getPsi() instanceof PsiWhiteSpace && treePrev.getText().indexOf("\n") != -1) { + return Indent.getSpaceIndent(1); + } + return Indent.getNoneIndent(); + } + + final IElementType childElementType = child.getElementType(); + + if (nodeElementType == JSElementTypes.PACKAGE_STATEMENT && !JSSpacingProcessor.NOT_A_PACKAGE_CONTENT.contains(childElementType)) { + final JSCodeStyleSettings customSettings = + CodeStyleSettingsManager.getSettings(node.getPsi().getProject()).getCustomSettings(JSCodeStyleSettings.class); + if (customSettings.INDENT_PACKAGE_CHILDREN == JSCodeStyleSettings.INDENT) { + return Indent.getNormalIndent(); + } + return Indent.getNoneIndent(); + } + + if (nodeElementType == JSElementTypes.ATTRIBUTE_LIST) { + return Indent.getNoneIndent(); + } + + if (childElementType == JSElementTypes.BLOCK_STATEMENT) { + if (nodeElementType == JSElementTypes.FUNCTION_DECLARATION + && (mySettings.METHOD_BRACE_STYLE == CodeStyleSettings.NEXT_LINE_SHIFTED + || mySettings.METHOD_BRACE_STYLE == CodeStyleSettings.NEXT_LINE_SHIFTED2)) { + return Indent.getNormalIndent(); + } + if (mySettings.BRACE_STYLE == CodeStyleSettings.NEXT_LINE_SHIFTED + || mySettings.BRACE_STYLE == CodeStyleSettings.NEXT_LINE_SHIFTED2) { + return Indent.getNormalIndent(); + } + return Indent.getNoneIndent(); + } + + if (childElementType == JSElementTypes.CATCH_BLOCK) { + return Indent.getNoneIndent(); + } + + if (childElementType == JSElementTypes.CASE_CLAUSE) { + return mySettings.INDENT_CASE_FROM_SWITCH ? Indent.getNormalIndent() : Indent.getNoneIndent(); + } + + if (nodeElementType == JSElementTypes.CASE_CLAUSE) { + if (child.getPsi() instanceof JSStatement || JSTokenTypes.COMMENTS.contains(childElementType)) { + return Indent.getNormalIndent(); + } + return Indent.getNoneIndent(); + } + + if (nodeElementType == JSElementTypes.SWITCH_STATEMENT + && (childElementType == JSTokenTypes.LBRACE || childElementType == JSTokenTypes.RBRACE)) { + return Indent.getNoneIndent(); + } + + if (nodeElementType == JSElementTypes.IF_STATEMENT) { + return Indent.getNoneIndent(); + } + + if (nodeElementType == JSElementTypes.WITH_STATEMENT && JSElementTypes.SOURCE_ELEMENTS.contains(childElementType)) { + return Indent.getNormalIndent(); + } + + if (nodeElementType == JSElementTypes.DOWHILE_STATEMENT && childElementType == JSTokenTypes.WHILE_KEYWORD) { + return Indent.getNoneIndent(); + } + + if (nodeElementType == JSElementTypes.TRY_STATEMENT && childElementType == JSTokenTypes.FINALLY_KEYWORD) { + return Indent.getNoneIndent(); + } + + if (nodeElementType == JSElementTypes.BLOCK_STATEMENT || + nodeElementType == JSElementTypes.CLASS || + nodeElementType == JSElementTypes.PACKAGE_STATEMENT) { + final ASTNode parent = node.getTreeParent(); + if (parent != null && parent.getElementType() == JSElementTypes.FUNCTION_DECLARATION && + mySettings.METHOD_BRACE_STYLE == CodeStyleSettings.NEXT_LINE_SHIFTED) { + return Indent.getNoneIndent(); + } + if (mySettings.BRACE_STYLE == CodeStyleSettings.NEXT_LINE_SHIFTED) { + return Indent.getNoneIndent(); + } + if (JSElementTypes.SOURCE_ELEMENTS.contains(childElementType) || JSTokenTypes.COMMENTS.contains(childElementType)) { + return Indent.getNormalIndent(); + } + return Indent.getNoneIndent(); + } + else if (node.getPsi() instanceof JSLoopStatement) { + if (child.getPsi() == ((JSLoopStatement)node.getPsi()).getBody()) { + if (childElementType == JSElementTypes.BLOCK_STATEMENT) { + return Indent.getNoneIndent(); + } + else { + return Indent.getNormalIndent(); + } + } + } + + if (JSTokenTypes.COMMENTS.contains(childElementType)) { + return Indent.getNormalIndent(); + } + if (childElementType == JSElementTypes.OBJECT_LITERAL_EXPRESSION) { + return nodeElementType == JSElementTypes.ARRAY_LITERAL_EXPRESSION ? Indent.getNormalIndent() : Indent.getNoneIndent(); + } + + if (nodeElementType == JSElementTypes.XML_LITERAL_EXPRESSION) { + return childElementType == JSElementTypes.XML_LITERAL_EXPRESSION ? Indent.getNormalIndent() : Indent.getNoneIndent(); + } + + if (nodeElementType == JSElementTypes.ARRAY_LITERAL_EXPRESSION) { + if (childElementType == JSTokenTypes.LBRACKET || childElementType == JSTokenTypes.RBRACKET) { + return Indent.getNoneIndent(); + } + return Indent.getNormalIndent(); + } + + if (nodeElementType == JSElementTypes.EMBEDDED_EXPRESSION) { + if (childElementType == JSTokenTypes.LBRACE || childElementType == JSTokenTypes.RBRACE) { + return Indent.getNoneIndent(); + } + return Indent.getNormalIndent(); + } + + if (nodeElementType == JSElementTypes.OBJECT_LITERAL_EXPRESSION) { + if (childElementType == JSTokenTypes.LBRACE || childElementType == JSTokenTypes.RBRACE) { + return Indent.getNoneIndent(); + } + return Indent.getNormalIndent(); + } + return null; + } + + @Nullable + private static Alignment alignmentProjection(final Alignment defaultAlignment, final ASTNode parent, final ASTNode child) { + if (parent.getElementType() == JSElementTypes.FOR_STATEMENT + && (JSElementTypes.EXPRESSIONS.contains(child.getElementType()) + || child.getElementType() == JSElementTypes.VAR_STATEMENT)) { + return defaultAlignment; + } + else if (parent.getElementType() == JSElementTypes.PARAMETER_LIST && child.getElementType() == JSElementTypes.FORMAL_PARAMETER) { + return defaultAlignment; + } + else if (parent.getPsi() instanceof JSBinaryExpression && JSElementTypes.EXPRESSIONS.contains(child.getElementType())) { + return defaultAlignment; + } + else if (parent.getElementType() == JSElementTypes.CONDITIONAL_EXPRESSION + && JSElementTypes.EXPRESSIONS.contains(child.getElementType())) { + return defaultAlignment; + } + + return null; + } + + @Nullable + private Wrap getWrap(final ASTNode node, final ASTNode child) { + WrapType wrapType = null; + if (node.getElementType() == JSElementTypes.ASSIGNMENT_EXPRESSION) { + final JSAssignmentExpression assignment = (JSAssignmentExpression)node.getPsi(); + if (child.getElementType() == assignment.getOperationSign() && mySettings.PLACE_ASSIGNMENT_SIGN_ON_NEXT_LINE + || child.getPsi() == assignment.getROperand() && !mySettings.PLACE_ASSIGNMENT_SIGN_ON_NEXT_LINE) { + wrapType = WrapType.byLegacyRepresentation(mySettings.ASSIGNMENT_WRAP); + } + } + else if (node.getElementType() == JSElementTypes.BINARY_EXPRESSION) { + final JSBinaryExpression binary = (JSBinaryExpression)node.getPsi(); + if (child.getElementType() == binary.getOperationSign() && mySettings.BINARY_OPERATION_SIGN_ON_NEXT_LINE + || child.getPsi() == binary.getROperand() && !mySettings.BINARY_OPERATION_SIGN_ON_NEXT_LINE) { + wrapType = WrapType.byLegacyRepresentation(mySettings.BINARY_OPERATION_WRAP); + } + } + else if (node.getElementType() == JSElementTypes.PARENTHESIZED_EXPRESSION) { + if (child == node.findChildByType(JSTokenTypes.LPAR) && mySettings.PARENTHESES_EXPRESSION_LPAREN_WRAP) { + wrapType = WrapType.NORMAL; + } + else if (child == node.findChildByType(JSTokenTypes.RPAR) && mySettings.PARENTHESES_EXPRESSION_RPAREN_WRAP) { + wrapType = WrapType.ALWAYS; + } + } + else if (node.getElementType() == JSElementTypes.ARRAY_LITERAL_EXPRESSION) { + if (child == node.findChildByType(JSTokenTypes.LBRACE) && mySettings.ARRAY_INITIALIZER_LBRACE_ON_NEXT_LINE) { + wrapType = WrapType.NORMAL; + } + else if (child == node.findChildByType(JSTokenTypes.RPAR) && mySettings.ARRAY_INITIALIZER_RBRACE_ON_NEXT_LINE) { + wrapType = WrapType.ALWAYS; + } + } + else if (node.getElementType() == JSElementTypes.CONDITIONAL_EXPRESSION) { + final IElementType elementType = child.getElementType(); + if ((mySettings.TERNARY_OPERATION_SIGNS_ON_NEXT_LINE + && (elementType == JSTokenTypes.QUEST || elementType == JSTokenTypes.COLON)) + || (!mySettings.TERNARY_OPERATION_SIGNS_ON_NEXT_LINE && child.getPsi() instanceof JSExpression)) { + wrapType = WrapType.byLegacyRepresentation(mySettings.TERNARY_OPERATION_WRAP); + } + } + else if (node.getElementType() == JSElementTypes.CALL_EXPRESSION) { + if (child == node.findChildByType(JSTokenTypes.LPAR) && mySettings.CALL_PARAMETERS_LPAREN_ON_NEXT_LINE) { + wrapType = WrapType.NORMAL; + } + else if (child == node.findChildByType(JSTokenTypes.RPAR) && mySettings.CALL_PARAMETERS_RPAREN_ON_NEXT_LINE) { + wrapType = WrapType.ALWAYS; + } + } + else if (node.getElementType() == JSElementTypes.PARAMETER_LIST) { + if (child.getElementType() == JSElementTypes.FORMAL_PARAMETER) { + wrapType = WrapType.byLegacyRepresentation(mySettings.METHOD_PARAMETERS_WRAP); + } + } + else if (node.getElementType() == JSElementTypes.FOR_STATEMENT || node.getElementType() == JSElementTypes.FOR_IN_STATEMENT) { + if (JSElementTypes.EXPRESSIONS.contains(child.getElementType())) { + wrapType = WrapType.byLegacyRepresentation(mySettings.FOR_STATEMENT_WRAP); + } + } + + return wrapType == null ? null : Wrap.createWrap(wrapType, false); + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JSBraceMatcher.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JSBraceMatcher.java index 3e804004..b14a5ac2 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JSBraceMatcher.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JSBraceMatcher.java @@ -33,32 +33,28 @@ * Time: 12:10:44 PM */ @ExtensionImpl -public class JSBraceMatcher implements PairedBraceMatcher -{ - private static final BracePair[] PAIRS = new BracePair[]{ - new BracePair(JSTokenTypes.LPAR, JSTokenTypes.RPAR, false), - new BracePair(JSTokenTypes.LBRACKET, JSTokenTypes.RBRACKET, false), - new BracePair(JSTokenTypes.LBRACE, JSTokenTypes.RBRACE, true) - }; +public class JSBraceMatcher implements PairedBraceMatcher { + private static final BracePair[] PAIRS = new BracePair[]{ + new BracePair(JSTokenTypes.LPAR, JSTokenTypes.RPAR, false), + new BracePair(JSTokenTypes.LBRACKET, JSTokenTypes.RBRACKET, false), + new BracePair(JSTokenTypes.LBRACE, JSTokenTypes.RBRACE, true) + }; - @Override - public BracePair[] getPairs() - { - return PAIRS; - } + @Override + public BracePair[] getPairs() { + return PAIRS; + } - @Override - public boolean isPairedBracesAllowedBeforeType(@Nonnull final IElementType lbraceType, @Nullable final IElementType tokenType) - { - return JSTokenTypes.WHITE_SPACE == tokenType || JSTokenTypes.COMMENTS.contains(tokenType) || tokenType == JSTokenTypes.SEMICOLON || tokenType == - JSTokenTypes.COMMA || tokenType == JSTokenTypes.RPAR || tokenType == JSTokenTypes.RBRACKET || tokenType == JSTokenTypes.RBRACE || null == - tokenType; - } + @Override + public boolean isPairedBracesAllowedBeforeType(@Nonnull final IElementType lbraceType, @Nullable final IElementType tokenType) { + return JSTokenTypes.WHITE_SPACE == tokenType || JSTokenTypes.COMMENTS.contains(tokenType) || tokenType == JSTokenTypes.SEMICOLON || tokenType == + JSTokenTypes.COMMA || tokenType == JSTokenTypes.RPAR || tokenType == JSTokenTypes.RBRACKET || tokenType == JSTokenTypes.RBRACE || null == + tokenType; + } - @Nonnull - @Override - public Language getLanguage() - { - return JavaScriptLanguage.INSTANCE; - } + @Nonnull + @Override + public Language getLanguage() { + return JavaScriptLanguage.INSTANCE; + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptColorsAndFontsPage.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptColorsAndFontsPage.java index 05b881d6..97b3c457 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptColorsAndFontsPage.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptColorsAndFontsPage.java @@ -28,6 +28,7 @@ import org.jetbrains.annotations.NonNls; import jakarta.annotation.Nonnull; + import java.util.HashMap; import java.util.Map; @@ -37,106 +38,116 @@ * Time: 10:12:13 PM */ @ExtensionImpl -public class JavaScriptColorsAndFontsPage implements ColorSettingsPage -{ - private static final AttributesDescriptor[] ATTRS; +public class JavaScriptColorsAndFontsPage implements ColorSettingsPage { + private static final AttributesDescriptor[] ATTRS; - @NonNls - private static Map ADDITIONAL_HIGHLIGHT_DESCRIPTORS = new HashMap(); + @NonNls + private static Map ADDITIONAL_HIGHLIGHT_DESCRIPTORS = new HashMap(); - static - { - ATTRS = new AttributesDescriptor[]{ - new AttributesDescriptor(JavaScriptLocalize.javascriptKeyword(), JavaScriptSyntaxHighlightKeys.JS_KEYWORD), - new AttributesDescriptor(JavaScriptLocalize.javascriptString(), JavaScriptSyntaxHighlightKeys.JS_STRING), - new AttributesDescriptor(JavaScriptLocalize.javascriptValidStringEscape(), JavaScriptSyntaxHighlightKeys.JS_VALID_STRING_ESCAPE), - new AttributesDescriptor(JavaScriptLocalize.javascriptInvalidStringEscape(), JavaScriptSyntaxHighlightKeys.JS_INVALID_STRING_ESCAPE), - new AttributesDescriptor(JavaScriptLocalize.javascriptNumber(), JavaScriptSyntaxHighlightKeys.JS_NUMBER), - new AttributesDescriptor(JavaScriptLocalize.javascriptRegexp(), JavaScriptSyntaxHighlightKeys.JS_REGEXP), - new AttributesDescriptor(JavaScriptLocalize.javascriptLinecomment(), JavaScriptSyntaxHighlightKeys.JS_LINE_COMMENT), - new AttributesDescriptor(JavaScriptLocalize.javascriptBlockcomment(), JavaScriptSyntaxHighlightKeys.JS_BLOCK_COMMENT), - new AttributesDescriptor(JavaScriptLocalize.javascriptDoccomment(), JavaScriptSyntaxHighlightKeys.JS_DOC_COMMENT), - new AttributesDescriptor(JavaScriptLocalize.javascriptOperation(), JavaScriptSyntaxHighlightKeys.JS_OPERATION_SIGN), - new AttributesDescriptor(JavaScriptLocalize.javascriptParens(), JavaScriptSyntaxHighlightKeys.JS_PARENTHS), - new AttributesDescriptor(JavaScriptLocalize.javascriptBrackets(), JavaScriptSyntaxHighlightKeys.JS_BRACKETS), - new AttributesDescriptor(JavaScriptLocalize.javascriptBraces(), JavaScriptSyntaxHighlightKeys.JS_BRACES), - new AttributesDescriptor(JavaScriptLocalize.javascriptComma(), JavaScriptSyntaxHighlightKeys.JS_COMMA), - new AttributesDescriptor(JavaScriptLocalize.javascriptDot(), JavaScriptSyntaxHighlightKeys.JS_DOT), - new AttributesDescriptor(JavaScriptLocalize.javascriptSemicolon(), JavaScriptSyntaxHighlightKeys.JS_SEMICOLON), - new AttributesDescriptor(JavaScriptLocalize.javascriptBadcharacter(), JavaScriptSyntaxHighlightKeys.JS_BAD_CHARACTER), - new AttributesDescriptor(JavaScriptLocalize.javascriptDocmarkup(), JavaScriptSyntaxHighlightKeys.JS_DOC_MARKUP), - new AttributesDescriptor(JavaScriptLocalize.javascriptDoctag(), JavaScriptSyntaxHighlightKeys.JS_DOC_TAG), - new AttributesDescriptor(JavaScriptLocalize.javascriptParameter(), JavaScriptSyntaxHighlightKeys.JS_PARAMETER), - new AttributesDescriptor(JavaScriptLocalize.javascriptLocalVariable(), JavaScriptSyntaxHighlightKeys.JS_LOCAL_VARIABLE), - new AttributesDescriptor(JavaScriptLocalize.javascriptGlobalVariable(), JavaScriptSyntaxHighlightKeys.JS_GLOBAL_VARIABLE), - new AttributesDescriptor(JavaScriptLocalize.javascriptGlobalFunction(), JavaScriptSyntaxHighlightKeys.JS_GLOBAL_FUNCTION), - new AttributesDescriptor(JavaScriptLocalize.javascriptInstanceMemberFunction(), JavaScriptSyntaxHighlightKeys.JS_INSTANCE_MEMBER_FUNCTION), - new AttributesDescriptor(JavaScriptLocalize.javascriptStaticMemberFunction(), JavaScriptSyntaxHighlightKeys.JS_STATIC_MEMBER_FUNCTION), - new AttributesDescriptor(JavaScriptLocalize.javascriptStaticMemberVariable(), JavaScriptSyntaxHighlightKeys.JS_STATIC_MEMBER_VARIABLE), - new AttributesDescriptor(JavaScriptLocalize.javascriptInstanceMemberVariable(), JavaScriptSyntaxHighlightKeys.JS_INSTANCE_MEMBER_VARIABLE), - new AttributesDescriptor(JavaScriptLocalize.javascriptMetadata(), JavaScriptSyntaxHighlightKeys.JS_METADATA), - }; - ADDITIONAL_HIGHLIGHT_DESCRIPTORS.put("local_variable", JavaScriptSyntaxHighlightKeys.JS_LOCAL_VARIABLE); - ADDITIONAL_HIGHLIGHT_DESCRIPTORS.put("global_variable", JavaScriptSyntaxHighlightKeys.JS_GLOBAL_VARIABLE); - ADDITIONAL_HIGHLIGHT_DESCRIPTORS.put("instance_variable", JavaScriptSyntaxHighlightKeys.JS_INSTANCE_MEMBER_VARIABLE); - ADDITIONAL_HIGHLIGHT_DESCRIPTORS.put("instance_method", JavaScriptSyntaxHighlightKeys.JS_INSTANCE_MEMBER_FUNCTION); - ADDITIONAL_HIGHLIGHT_DESCRIPTORS.put("global_function", JavaScriptSyntaxHighlightKeys.JS_GLOBAL_FUNCTION); - ADDITIONAL_HIGHLIGHT_DESCRIPTORS.put("parameter", JavaScriptSyntaxHighlightKeys.JS_PARAMETER); - } + static { + ATTRS = new AttributesDescriptor[]{ + new AttributesDescriptor(JavaScriptLocalize.javascriptKeyword(), JavaScriptSyntaxHighlightKeys.JS_KEYWORD), + new AttributesDescriptor(JavaScriptLocalize.javascriptString(), JavaScriptSyntaxHighlightKeys.JS_STRING), + new AttributesDescriptor( + JavaScriptLocalize.javascriptValidStringEscape(), + JavaScriptSyntaxHighlightKeys.JS_VALID_STRING_ESCAPE + ), + new AttributesDescriptor( + JavaScriptLocalize.javascriptInvalidStringEscape(), + JavaScriptSyntaxHighlightKeys.JS_INVALID_STRING_ESCAPE + ), + new AttributesDescriptor(JavaScriptLocalize.javascriptNumber(), JavaScriptSyntaxHighlightKeys.JS_NUMBER), + new AttributesDescriptor(JavaScriptLocalize.javascriptRegexp(), JavaScriptSyntaxHighlightKeys.JS_REGEXP), + new AttributesDescriptor(JavaScriptLocalize.javascriptLinecomment(), JavaScriptSyntaxHighlightKeys.JS_LINE_COMMENT), + new AttributesDescriptor(JavaScriptLocalize.javascriptBlockcomment(), JavaScriptSyntaxHighlightKeys.JS_BLOCK_COMMENT), + new AttributesDescriptor(JavaScriptLocalize.javascriptDoccomment(), JavaScriptSyntaxHighlightKeys.JS_DOC_COMMENT), + new AttributesDescriptor(JavaScriptLocalize.javascriptOperation(), JavaScriptSyntaxHighlightKeys.JS_OPERATION_SIGN), + new AttributesDescriptor(JavaScriptLocalize.javascriptParens(), JavaScriptSyntaxHighlightKeys.JS_PARENTHS), + new AttributesDescriptor(JavaScriptLocalize.javascriptBrackets(), JavaScriptSyntaxHighlightKeys.JS_BRACKETS), + new AttributesDescriptor(JavaScriptLocalize.javascriptBraces(), JavaScriptSyntaxHighlightKeys.JS_BRACES), + new AttributesDescriptor(JavaScriptLocalize.javascriptComma(), JavaScriptSyntaxHighlightKeys.JS_COMMA), + new AttributesDescriptor(JavaScriptLocalize.javascriptDot(), JavaScriptSyntaxHighlightKeys.JS_DOT), + new AttributesDescriptor(JavaScriptLocalize.javascriptSemicolon(), JavaScriptSyntaxHighlightKeys.JS_SEMICOLON), + new AttributesDescriptor(JavaScriptLocalize.javascriptBadcharacter(), JavaScriptSyntaxHighlightKeys.JS_BAD_CHARACTER), + new AttributesDescriptor(JavaScriptLocalize.javascriptDocmarkup(), JavaScriptSyntaxHighlightKeys.JS_DOC_MARKUP), + new AttributesDescriptor(JavaScriptLocalize.javascriptDoctag(), JavaScriptSyntaxHighlightKeys.JS_DOC_TAG), + new AttributesDescriptor(JavaScriptLocalize.javascriptParameter(), JavaScriptSyntaxHighlightKeys.JS_PARAMETER), + new AttributesDescriptor(JavaScriptLocalize.javascriptLocalVariable(), JavaScriptSyntaxHighlightKeys.JS_LOCAL_VARIABLE), + new AttributesDescriptor(JavaScriptLocalize.javascriptGlobalVariable(), JavaScriptSyntaxHighlightKeys.JS_GLOBAL_VARIABLE), + new AttributesDescriptor(JavaScriptLocalize.javascriptGlobalFunction(), JavaScriptSyntaxHighlightKeys.JS_GLOBAL_FUNCTION), + new AttributesDescriptor( + JavaScriptLocalize.javascriptInstanceMemberFunction(), + JavaScriptSyntaxHighlightKeys.JS_INSTANCE_MEMBER_FUNCTION + ), + new AttributesDescriptor( + JavaScriptLocalize.javascriptStaticMemberFunction(), + JavaScriptSyntaxHighlightKeys.JS_STATIC_MEMBER_FUNCTION + ), + new AttributesDescriptor( + JavaScriptLocalize.javascriptStaticMemberVariable(), + JavaScriptSyntaxHighlightKeys.JS_STATIC_MEMBER_VARIABLE + ), + new AttributesDescriptor( + JavaScriptLocalize.javascriptInstanceMemberVariable(), + JavaScriptSyntaxHighlightKeys.JS_INSTANCE_MEMBER_VARIABLE + ), + new AttributesDescriptor(JavaScriptLocalize.javascriptMetadata(), JavaScriptSyntaxHighlightKeys.JS_METADATA), + }; + ADDITIONAL_HIGHLIGHT_DESCRIPTORS.put("local_variable", JavaScriptSyntaxHighlightKeys.JS_LOCAL_VARIABLE); + ADDITIONAL_HIGHLIGHT_DESCRIPTORS.put("global_variable", JavaScriptSyntaxHighlightKeys.JS_GLOBAL_VARIABLE); + ADDITIONAL_HIGHLIGHT_DESCRIPTORS.put("instance_variable", JavaScriptSyntaxHighlightKeys.JS_INSTANCE_MEMBER_VARIABLE); + ADDITIONAL_HIGHLIGHT_DESCRIPTORS.put("instance_method", JavaScriptSyntaxHighlightKeys.JS_INSTANCE_MEMBER_FUNCTION); + ADDITIONAL_HIGHLIGHT_DESCRIPTORS.put("global_function", JavaScriptSyntaxHighlightKeys.JS_GLOBAL_FUNCTION); + ADDITIONAL_HIGHLIGHT_DESCRIPTORS.put("parameter", JavaScriptSyntaxHighlightKeys.JS_PARAMETER); + } - @Override - @Nonnull - public String getDisplayName() - { - return "JavaScript"; - } + @Override + @Nonnull + public String getDisplayName() { + return "JavaScript"; + } - @Override - @Nonnull - public AttributesDescriptor[] getAttributeDescriptors() - { - return ATTRS; - } + @Override + @Nonnull + public AttributesDescriptor[] getAttributeDescriptors() { + return ATTRS; + } - @Override - @Nonnull - public ColorDescriptor[] getColorDescriptors() - { - return ColorDescriptor.EMPTY_ARRAY; - } + @Override + @Nonnull + public ColorDescriptor[] getColorDescriptors() { + return ColorDescriptor.EMPTY_ARRAY; + } - @Override - @Nonnull - public SyntaxHighlighter getHighlighter() - { - return JavaScript15LanguageVersion.getInstance().getSyntaxHighlighter(); - } + @Override + @Nonnull + public SyntaxHighlighter getHighlighter() { + return JavaScript15LanguageVersion.getInstance().getSyntaxHighlighter(); + } - @Override - @Nonnull - public String getDemoText() - { - return "var globalVar;\n" + - "/**\n" + - " * Constructor for AjaxRequest class\n" + - " * @param url the url for the request

\n" + - " */\n" + - "function AjaxRequest(url) {\n" + - " var urls = [ \"www.cnn.com\", 5, globalVar];\n" + - " this.request = new XMLHttpRequest();\n" + - " url = url.replace(/^\\s*(.*)/, \"$1\"); // skip leading whitespace\n" + - " /* check the url to be in urls */\n" + - " var a = \"\\u1111\\z\\n\\u11\";\n" + - " this.foo = new function() {};\n" + - " foo();\n" + - " #\n" + - "}"; - } + @Override + @Nonnull + public String getDemoText() { + return "var globalVar;\n" + + "/**\n" + + " * Constructor for AjaxRequest class\n" + + " * @param url the url for the request

\n" + + " */\n" + + "function AjaxRequest(url) {\n" + + " var urls = [ \"www.cnn.com\", 5, globalVar];\n" + + " this.request = new XMLHttpRequest();\n" + + " url = url.replace(/^\\s*(.*)/, \"$1\"); // skip leading whitespace\n" + + " /* check the url to be in urls */\n" + + " var a = \"\\u1111\\z\\n\\u11\";\n" + + " this.foo = new function() {};\n" + + " foo();\n" + + " #\n" + + "}"; + } - @Override - public Map getAdditionalHighlightingTagToDescriptorMap() - { - return ADDITIONAL_HIGHLIGHT_DESCRIPTORS; - } + @Override + public Map getAdditionalHighlightingTagToDescriptorMap() { + return ADDITIONAL_HIGHLIGHT_DESCRIPTORS; + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptHighlightVisitor.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptHighlightVisitor.java index 0f2b72b2..dc8fd4e9 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptHighlightVisitor.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptHighlightVisitor.java @@ -41,348 +41,317 @@ import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; -public class JavaScriptHighlightVisitor extends JSElementVisitor implements HighlightVisitor -{ - private HighlightInfoHolder myHighlightInfoHolder; - - @Override - @RequiredReadAction - public void visitJSBinaryExpression(JSBinaryExpression node) - { - super.visitJSBinaryExpression(node); - - IElementType operationSign = node.getOperationSign(); - if(operationSign == JSTokenTypes.MULTMULT) - { - reportFeatureUsage(node.getOperationElement(), JavaScriptFeature.EXPONENTIATION_OPERATOR); - } - } - - @Override - @RequiredReadAction - public void visitJSAssignmentExpression(JSAssignmentExpression node) - { - super.visitJSAssignmentExpression(node); - - IElementType operationSign = node.getOperationSign(); - if(operationSign == JSTokenTypes.MULT_MULT_EQ) - { - reportFeatureUsage(node.getOperationElement(), JavaScriptFeature.EXPONENTIATION_OPERATOR); - } - } - - @Override - @RequiredReadAction - public void visitElement(PsiElement element) - { - super.visitElement(element); - - PsiElement parent = element.getParent(); - IElementType elementType = PsiUtilCore.getElementType(element); - if((JavaScriptTokenSets.STRING_LITERALS.contains(elementType) || elementType == JSTokenTypes.IDENTIFIER) && parent instanceof JSProperty && ((JSProperty) parent).getNameIdentifier() == - element) - { - highlightPropertyName((JSProperty) parent, element); - } - else if(elementType == JSTokenTypes.IDENTIFIER) - { - addElementHighlight(parent, element); - } - else if(JavaScriptContextKeywordElementType.containsKeyword(elementType)) - { - myHighlightInfoHolder.add(HighlightInfo.newHighlightInfo(HighlightInfoType.INFORMATION).textAttributes(JavaScriptSyntaxHighlightKeys.JS_KEYWORD).range(element).create()); - } - } - - @Override - public void visitJSProperty(JSProperty node) - { - super.visitJSProperty(node); - - if(node instanceof JSFunction) - { - reportFeatureUsage(node.getNameIdentifier(), JavaScriptFeature.FUNCTION_PROPERTY); - } - } - - @Override - @RequiredReadAction - public void visitJSLiteralExpression(JSSimpleLiteralExpression node) - { - super.visitJSLiteralExpression(node); - if(node.getLiteralElementType() == JSTokenTypes.NUMERIC_LITERAL) - { - String text = node.getText(); - if(StringUtil.startsWithIgnoreCase(text, "0o")) - { - reportFeatureUsage(node, JavaScriptFeature.OCTAL_LITERAL); - } - else if(StringUtil.startsWithIgnoreCase(text, "0b")) - { - reportFeatureUsage(node, JavaScriptFeature.BINARY_LITERAL); - } - } - } - - @RequiredReadAction - private void highlightPropertyName(@Nonnull JSProperty property, @Nonnull PsiElement nameIdentifier) - { - final JSExpression expression = property.getValue(); - TextAttributesKey type; - - if(expression instanceof JSFunctionExpression) - { - type = JavaScriptSyntaxHighlightKeys.JS_INSTANCE_MEMBER_FUNCTION; - } - else - { - type = JavaScriptSyntaxHighlightKeys.JS_INSTANCE_MEMBER_VARIABLE; - } - myHighlightInfoHolder.add(HighlightInfo.newHighlightInfo(HighlightInfoType.INFORMATION).needsUpdateOnTyping(false).range(nameIdentifier).textAttributes(type).create()); - } - - @Override - @RequiredReadAction - public void visitJSAttribute(JSAttribute jsAttribute) - { - super.visitJSAttribute(jsAttribute); - - myHighlightInfoHolder.add(HighlightInfo.newHighlightInfo(HighlightInfoType.INFORMATION).needsUpdateOnTyping(false).range(jsAttribute).textAttributes(JavaScriptSyntaxHighlightKeys - .JS_METADATA).create()); - } - - @Override - @RequiredReadAction - public void visitJSParameter(JSParameter parameter) - { - super.visitJSParameter(parameter); - - JSExpression initializer = parameter.getInitializer(); - if(initializer != null) - { - reportFeatureUsage(initializer, JavaScriptFeature.PARAMETER_DEFAULT_VALUE); - } - - PsiElement restElement = parameter.getRestElement(); - if(restElement != null) - { - reportFeatureUsage(restElement, JavaScriptFeature.REST_PARAMETER); - } - } - - @Override - @RequiredReadAction - public void visitJSReferenceExpression(JSReferenceExpression element) - { - super.visitJSReferenceExpression(element); - - PsiElement parent = element.getParent(); - - if(parent instanceof PsiNameIdentifierOwner && ((PsiNameIdentifierOwner) parent).getNameIdentifier() == element) - { - return; - } - - final ResolveResult[] results = element.multiResolve(false); - - PsiElement validResult = null; - for(ResolveResult result : results) - { - if(result.isValidResult()) - { - validResult = result.getElement(); - break; - } - } - - if(validResult == null) - { - return; - } - - PsiElement referenceNameElement = element.getReferenceNameElement(); - if(referenceNameElement == null) - { - return; - } - addElementHighlight(validResult, referenceNameElement); - } - - @Override - @RequiredReadAction - public void visitJSPrefixExpression(JSPrefixExpression expression) - { - super.visitJSPrefixExpression(expression); - - if(expression.getOperationSign() == JSTokenTypes.DOT_DOT_DOT) - { - PsiElement operatorElement = expression.getOperatorElement(); - assert operatorElement != null; - reportFeatureUsage(operatorElement, JavaScriptFeature.SPREAD_OPERATOR); - } - } - - @RequiredReadAction - private void addElementHighlight(@Nonnull PsiElement resolvedElement, @Nonnull PsiElement targetForHighlight) - { - boolean isStatic = false; - boolean isMethod = false; - boolean isFunction = false; - boolean isField = false; - TextAttributesKey type = null; - - if(resolvedElement instanceof JSAttributeListOwner) - { - if(resolvedElement instanceof JSClass) - { - type = DefaultLanguageHighlighterColors.CLASS_NAME; - } - else - { - final JSAttributeList attributeList = ((JSAttributeListOwner) resolvedElement).getAttributeList(); - - if(attributeList != null) - { - isStatic = attributeList.hasModifier(JSAttributeList.ModifierType.STATIC); - } - - isMethod = resolvedElement instanceof JSFunction; - if(isMethod && !isClass(resolvedElement.getParent())) - { - isMethod = false; - isFunction = true; - } - } - } - else if(resolvedElement instanceof JSDefinitionExpression) - { - final PsiElement parent = resolvedElement.getParent(); - if(parent instanceof JSAssignmentExpression) - { - final JSExpression jsExpression = ((JSAssignmentExpression) parent).getROperand(); - if(jsExpression instanceof JSFunctionExpression) - { - isMethod = true; - } - else - { - isField = true; - } - } - } - else if(resolvedElement instanceof JSProperty) - { - final JSExpression expression = ((JSProperty) resolvedElement).getValue(); - - if(expression instanceof JSFunctionExpression) - { - isMethod = true; - } - else - { - isField = true; - } - } - - if(isMethod) - { - if(isStatic) - { - type = JavaScriptSyntaxHighlightKeys.JS_STATIC_MEMBER_FUNCTION; - } - else - { - type = JavaScriptSyntaxHighlightKeys.JS_INSTANCE_MEMBER_FUNCTION; - } - } - else if(isFunction) - { - type = JavaScriptSyntaxHighlightKeys.JS_GLOBAL_FUNCTION; - } - else if(isField) - { - type = JavaScriptSyntaxHighlightKeys.JS_INSTANCE_MEMBER_VARIABLE; - } - - if(type == null) - { - if(resolvedElement instanceof JSVariable) - { - myHighlightInfoHolder.add(buildHighlightForVariable(resolvedElement, targetForHighlight)); - } - return; - } - - myHighlightInfoHolder.add(HighlightInfo.newHighlightInfo(HighlightInfoType.INFORMATION).needsUpdateOnTyping(false).range(targetForHighlight).textAttributes(type).create()); - } - - @Nullable - @RequiredReadAction - private static HighlightInfo buildHighlightForVariable(@Nonnull final PsiElement element, @Nonnull final PsiElement markerAddTo) - { - TextAttributesKey type; - - if(element instanceof JSParameter) - { - type = JavaScriptSyntaxHighlightKeys.JS_PARAMETER; - } - else - { - if(isClass(element.getParent().getParent())) - { - final JSAttributeList attributeList = ((JSAttributeListOwner) element).getAttributeList(); - final boolean isStatic = attributeList != null && attributeList.hasModifier(JSAttributeList.ModifierType.STATIC); - type = isStatic ? JavaScriptSyntaxHighlightKeys.JS_STATIC_MEMBER_VARIABLE : JavaScriptSyntaxHighlightKeys.JS_INSTANCE_MEMBER_VARIABLE; - } - else - { - if(PsiTreeUtil.getParentOfType(element, JSFunction.class) != null) - { - type = JavaScriptSyntaxHighlightKeys.JS_LOCAL_VARIABLE; - } - else - { - type = JavaScriptSyntaxHighlightKeys.JS_GLOBAL_VARIABLE; - } - } - } - - if(type == null) - { - return null; - } - - return HighlightInfo.newHighlightInfo(HighlightInfoType.INFORMATION).range(markerAddTo).needsUpdateOnTyping(false).textAttributes(type).create(); - } - - private void reportFeatureUsage(@Nonnull PsiElement element, @Nonnull JavaScriptFeature javaScriptFeature) - { - if(JavaScriptVersionUtil.containsFeature(element, javaScriptFeature)) - { - return; - } - - LocalizeValue message = JavaScriptLocalize.thisFeatureIsNotSupportedByCurrentLanguage(javaScriptFeature.getName()); - - myHighlightInfoHolder.add(HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(element).descriptionAndTooltip(message).create()); - } - - @Override - public void visit(@Nonnull PsiElement element) - { - element.acceptChildren(this); - } - - @Override - public boolean analyze(@Nonnull PsiFile psiFile, boolean b, @Nonnull HighlightInfoHolder highlightInfoHolder, @Nonnull Runnable runnable) - { - myHighlightInfoHolder = highlightInfoHolder; - runnable.run(); - return true; - } - - private static boolean isClass(final PsiElement element) - { - return element instanceof JSClass || element instanceof JSFile && element.getContext() != null; - } +public class JavaScriptHighlightVisitor extends JSElementVisitor implements HighlightVisitor { + private HighlightInfoHolder myHighlightInfoHolder; + + @Override + @RequiredReadAction + public void visitJSBinaryExpression(JSBinaryExpression node) { + super.visitJSBinaryExpression(node); + + IElementType operationSign = node.getOperationSign(); + if (operationSign == JSTokenTypes.MULTMULT) { + reportFeatureUsage(node.getOperationElement(), JavaScriptFeature.EXPONENTIATION_OPERATOR); + } + } + + @Override + @RequiredReadAction + public void visitJSAssignmentExpression(JSAssignmentExpression node) { + super.visitJSAssignmentExpression(node); + + IElementType operationSign = node.getOperationSign(); + if (operationSign == JSTokenTypes.MULT_MULT_EQ) { + reportFeatureUsage(node.getOperationElement(), JavaScriptFeature.EXPONENTIATION_OPERATOR); + } + } + + @Override + @RequiredReadAction + public void visitElement(PsiElement element) { + super.visitElement(element); + + PsiElement parent = element.getParent(); + IElementType elementType = PsiUtilCore.getElementType(element); + if ((JavaScriptTokenSets.STRING_LITERALS.contains(elementType) || elementType == JSTokenTypes.IDENTIFIER) + && parent instanceof JSProperty && ((JSProperty)parent).getNameIdentifier() == element) { + highlightPropertyName((JSProperty)parent, element); + } + else if (elementType == JSTokenTypes.IDENTIFIER) { + addElementHighlight(parent, element); + } + else if (JavaScriptContextKeywordElementType.containsKeyword(elementType)) { + myHighlightInfoHolder.add( + HighlightInfo.newHighlightInfo(HighlightInfoType.INFORMATION) + .textAttributes(JavaScriptSyntaxHighlightKeys.JS_KEYWORD) + .range(element) + .create() + ); + } + } + + @Override + public void visitJSProperty(JSProperty node) { + super.visitJSProperty(node); + + if (node instanceof JSFunction) { + reportFeatureUsage(node.getNameIdentifier(), JavaScriptFeature.FUNCTION_PROPERTY); + } + } + + @Override + @RequiredReadAction + public void visitJSLiteralExpression(JSSimpleLiteralExpression node) { + super.visitJSLiteralExpression(node); + if (node.getLiteralElementType() == JSTokenTypes.NUMERIC_LITERAL) { + String text = node.getText(); + if (StringUtil.startsWithIgnoreCase(text, "0o")) { + reportFeatureUsage(node, JavaScriptFeature.OCTAL_LITERAL); + } + else if (StringUtil.startsWithIgnoreCase(text, "0b")) { + reportFeatureUsage(node, JavaScriptFeature.BINARY_LITERAL); + } + } + } + + @RequiredReadAction + private void highlightPropertyName(@Nonnull JSProperty property, @Nonnull PsiElement nameIdentifier) { + final JSExpression expression = property.getValue(); + TextAttributesKey type; + + if (expression instanceof JSFunctionExpression) { + type = JavaScriptSyntaxHighlightKeys.JS_INSTANCE_MEMBER_FUNCTION; + } + else { + type = JavaScriptSyntaxHighlightKeys.JS_INSTANCE_MEMBER_VARIABLE; + } + myHighlightInfoHolder.add(HighlightInfo.newHighlightInfo(HighlightInfoType.INFORMATION) + .needsUpdateOnTyping(false) + .range(nameIdentifier) + .textAttributes(type) + .create()); + } + + @Override + @RequiredReadAction + public void visitJSAttribute(JSAttribute jsAttribute) { + super.visitJSAttribute(jsAttribute); + + myHighlightInfoHolder.add( + HighlightInfo.newHighlightInfo(HighlightInfoType.INFORMATION) + .needsUpdateOnTyping(false) + .range(jsAttribute) + .textAttributes(JavaScriptSyntaxHighlightKeys.JS_METADATA) + .create() + ); + } + + @Override + @RequiredReadAction + public void visitJSParameter(JSParameter parameter) { + super.visitJSParameter(parameter); + + JSExpression initializer = parameter.getInitializer(); + if (initializer != null) { + reportFeatureUsage(initializer, JavaScriptFeature.PARAMETER_DEFAULT_VALUE); + } + + PsiElement restElement = parameter.getRestElement(); + if (restElement != null) { + reportFeatureUsage(restElement, JavaScriptFeature.REST_PARAMETER); + } + } + + @Override + @RequiredReadAction + public void visitJSReferenceExpression(JSReferenceExpression element) { + super.visitJSReferenceExpression(element); + + PsiElement parent = element.getParent(); + + if (parent instanceof PsiNameIdentifierOwner && ((PsiNameIdentifierOwner)parent).getNameIdentifier() == element) { + return; + } + + final ResolveResult[] results = element.multiResolve(false); + + PsiElement validResult = null; + for (ResolveResult result : results) { + if (result.isValidResult()) { + validResult = result.getElement(); + break; + } + } + + if (validResult == null) { + return; + } + + PsiElement referenceNameElement = element.getReferenceNameElement(); + if (referenceNameElement == null) { + return; + } + addElementHighlight(validResult, referenceNameElement); + } + + @Override + @RequiredReadAction + public void visitJSPrefixExpression(JSPrefixExpression expression) { + super.visitJSPrefixExpression(expression); + + if (expression.getOperationSign() == JSTokenTypes.DOT_DOT_DOT) { + PsiElement operatorElement = expression.getOperatorElement(); + assert operatorElement != null; + reportFeatureUsage(operatorElement, JavaScriptFeature.SPREAD_OPERATOR); + } + } + + @RequiredReadAction + private void addElementHighlight(@Nonnull PsiElement resolvedElement, @Nonnull PsiElement targetForHighlight) { + boolean isStatic = false; + boolean isMethod = false; + boolean isFunction = false; + boolean isField = false; + TextAttributesKey type = null; + + if (resolvedElement instanceof JSAttributeListOwner) { + if (resolvedElement instanceof JSClass) { + type = DefaultLanguageHighlighterColors.CLASS_NAME; + } + else { + final JSAttributeList attributeList = ((JSAttributeListOwner)resolvedElement).getAttributeList(); + + if (attributeList != null) { + isStatic = attributeList.hasModifier(JSAttributeList.ModifierType.STATIC); + } + + isMethod = resolvedElement instanceof JSFunction; + if (isMethod && !isClass(resolvedElement.getParent())) { + isMethod = false; + isFunction = true; + } + } + } + else if (resolvedElement instanceof JSDefinitionExpression) { + final PsiElement parent = resolvedElement.getParent(); + if (parent instanceof JSAssignmentExpression) { + final JSExpression jsExpression = ((JSAssignmentExpression)parent).getROperand(); + if (jsExpression instanceof JSFunctionExpression) { + isMethod = true; + } + else { + isField = true; + } + } + } + else if (resolvedElement instanceof JSProperty) { + final JSExpression expression = ((JSProperty)resolvedElement).getValue(); + + if (expression instanceof JSFunctionExpression) { + isMethod = true; + } + else { + isField = true; + } + } + + if (isMethod) { + if (isStatic) { + type = JavaScriptSyntaxHighlightKeys.JS_STATIC_MEMBER_FUNCTION; + } + else { + type = JavaScriptSyntaxHighlightKeys.JS_INSTANCE_MEMBER_FUNCTION; + } + } + else if (isFunction) { + type = JavaScriptSyntaxHighlightKeys.JS_GLOBAL_FUNCTION; + } + else if (isField) { + type = JavaScriptSyntaxHighlightKeys.JS_INSTANCE_MEMBER_VARIABLE; + } + + if (type == null) { + if (resolvedElement instanceof JSVariable) { + myHighlightInfoHolder.add(buildHighlightForVariable(resolvedElement, targetForHighlight)); + } + return; + } + + myHighlightInfoHolder.add( + HighlightInfo.newHighlightInfo(HighlightInfoType.INFORMATION) + .needsUpdateOnTyping(false) + .range(targetForHighlight) + .textAttributes(type) + .create() + ); + } + + @Nullable + @RequiredReadAction + private static HighlightInfo buildHighlightForVariable(@Nonnull final PsiElement element, @Nonnull final PsiElement markerAddTo) { + TextAttributesKey type; + + if (element instanceof JSParameter) { + type = JavaScriptSyntaxHighlightKeys.JS_PARAMETER; + } + else if (isClass(element.getParent().getParent())) { + final JSAttributeList attributeList = ((JSAttributeListOwner)element).getAttributeList(); + final boolean isStatic = attributeList != null && attributeList.hasModifier(JSAttributeList.ModifierType.STATIC); + type = isStatic + ? JavaScriptSyntaxHighlightKeys.JS_STATIC_MEMBER_VARIABLE + : JavaScriptSyntaxHighlightKeys.JS_INSTANCE_MEMBER_VARIABLE; + } + else if (PsiTreeUtil.getParentOfType(element, JSFunction.class) != null) { + type = JavaScriptSyntaxHighlightKeys.JS_LOCAL_VARIABLE; + } + else { + type = JavaScriptSyntaxHighlightKeys.JS_GLOBAL_VARIABLE; + } + + if (type == null) { + return null; + } + + return HighlightInfo.newHighlightInfo(HighlightInfoType.INFORMATION) + .range(markerAddTo) + .needsUpdateOnTyping(false) + .textAttributes(type) + .create(); + } + + private void reportFeatureUsage(@Nonnull PsiElement element, @Nonnull JavaScriptFeature javaScriptFeature) { + if (JavaScriptVersionUtil.containsFeature(element, javaScriptFeature)) { + return; + } + + LocalizeValue message = JavaScriptLocalize.thisFeatureIsNotSupportedByCurrentLanguage(javaScriptFeature.getName()); + + myHighlightInfoHolder.add( + HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR) + .range(element) + .descriptionAndTooltip(message) + .create() + ); + } + + @Override + public void visit(@Nonnull PsiElement element) { + element.acceptChildren(this); + } + + @Override + public boolean analyze( + @Nonnull PsiFile psiFile, + boolean b, + @Nonnull HighlightInfoHolder highlightInfoHolder, + @Nonnull Runnable runnable + ) { + myHighlightInfoHolder = highlightInfoHolder; + runnable.run(); + return true; + } + + private static boolean isClass(final PsiElement element) { + return element instanceof JSClass || element instanceof JSFile && element.getContext() != null; + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptHighlightVisitorFactory.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptHighlightVisitorFactory.java index 91204479..7c024ead 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptHighlightVisitorFactory.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptHighlightVisitorFactory.java @@ -13,18 +13,15 @@ * @since 25/03/2023 */ @ExtensionImpl -public class JavaScriptHighlightVisitorFactory implements HighlightVisitorFactory -{ - @Override - public boolean suitableForFile(@Nonnull PsiFile psiFile) - { - return psiFile instanceof JSFile; - } +public class JavaScriptHighlightVisitorFactory implements HighlightVisitorFactory { + @Override + public boolean suitableForFile(@Nonnull PsiFile psiFile) { + return psiFile instanceof JSFile; + } - @Nonnull - @Override - public HighlightVisitor createVisitor() - { - return new JavaScriptHighlightVisitor(); - } + @Nonnull + @Override + public HighlightVisitor createVisitor() { + return new JavaScriptHighlightVisitor(); + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptLineMarkerProvider.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptLineMarkerProvider.java index 3f8f956b..a1eeeef7 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptLineMarkerProvider.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptLineMarkerProvider.java @@ -46,6 +46,7 @@ import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; + import java.awt.event.MouseEvent; import java.util.*; import java.util.function.Function; @@ -56,450 +57,418 @@ * Time: 11:43:47 PM */ @ExtensionImpl -public class JavaScriptLineMarkerProvider implements LineMarkerProvider -{ - private static final String OVERRIDES_METHOD_IN = "overrides method in "; - - private static final Function ourClassInheritorsTooltipProvider = clazz -> "Has subclasses"; - - private static final Function ourImplementedInterfacesTooltipProvider = clazz -> "Has implementations"; - - private static final Function ourOverriddenFunctionsTooltipProvider = psiElement -> "Is overridden"; - - private static final Function ourImplementingFunctionsTooltipProvider = psiElement -> "Is implemented"; - - private static final BasicGutterIconNavigationHandler ourClassInheritorsNavHandler = new BasicGutterIconNavigationHandler() - { - @Override - protected String getTitle(final JSClass elt) - { - return "Choose Subclass of " + elt.getName(); - } - - @Override - protected Query search(final JSClass elt) - { - return JSClassSearch.searchClassInheritors(elt, true); - } - }; - - private static final BasicGutterIconNavigationHandler ourInterfaceImplementationsNavHandler = new - BasicGutterIconNavigationHandler() - { - @Override - protected String getTitle(final JSClass elt) - { - return "Choose Implementation of " + elt.getName(); - } - - @Override - protected Query search(final JSClass elt) - { - return JSClassSearch.searchInterfaceImplementations(elt, true); - } - }; - - private static final BasicGutterIconNavigationHandler ourOverriddenFunctionsNavHandler = new - BasicGutterIconNavigationHandler() - { - @Override - protected String getTitle(final JSFunction elt) - { - return "Choose Overriden Function of " + elt.getName(); - } - - @Override - protected Query search(final JSFunction elt) - { - return doFindOverridenFunctionStatic(elt); - } - }; - private final boolean myUnitTestMode = ApplicationManager.getApplication().isUnitTestMode(); - - - public static Query doFindOverridenFunctionStatic(final JSFunction elt) - { - PsiElement parent = JSResolveUtil.findParent(elt); - if(parent instanceof JSClass) - { - return JSFunctionsSearch.searchOverridingFunctions(elt, true); - } - final String qName = JSResolveUtil.getQNameToStartHierarchySearch(elt); - if(qName != null) - { - final ArrayList result = new ArrayList<>(); - - return new CollectionQuery<>(result); - } - - return new CollectionQuery<>(Collections.emptyList()); - } - - private static final BasicGutterIconNavigationHandler ourImplementingFunctionsNavHandler = new - BasicGutterIconNavigationHandler() - { - @Override - protected String getTitle(final JSFunction elt) - { - return "Choose Implementation of " + elt.getName(); - } - - @Override - protected Query search(final JSFunction elt) - { - return JSFunctionsSearch.searchImplementingFunctions(elt, true); - } - }; - - public static Key ourParticipatesInHierarchyKey = Key.create("js.named.item.participates.in.hierarchy"); - - @Override - public LineMarkerInfo getLineMarkerInfo(@Nonnull final PsiElement element) - { - if(element instanceof JSFunction) - { - final JSFunction function = (JSFunction) element; - function.putUserData(ourParticipatesInHierarchyKey, null); - if(function.getNameIdentifier() == null) - { - return null; - } - final String qName = JSResolveUtil.getQNameToStartHierarchySearch(function); - - if(qName != null) - { - PsiElement parentNode = element.getParent(); - if(parentNode instanceof JSFile) - { - JSClass xmlBackedClass = JSResolveUtil.getXmlBackedClass((JSFile) parentNode); - if(xmlBackedClass != null) - { - parentNode = xmlBackedClass; - } - } - - if(element instanceof JSFunctionExpression) - { - parentNode = element.getContainingFile(); - } - - final MyOverrideHandler overrideHandler = new MyOverrideHandler(); - final String typeName = parentNode instanceof JSClass ? ((JSClass) parentNode).getQualifiedName() : qName; - JSResolveUtil.iterateType(function, parentNode, typeName, overrideHandler); - - if(overrideHandler.className != null) - { - final PsiElement parentNode1 = parentNode; - function.putUserData(ourParticipatesInHierarchyKey, Boolean.TRUE); - - return new LineMarkerInfo<>(function, function.getNameIdentifier().getTextRange().getStartOffset(), AllIcons.Gutter.OverridingMethod, - Pass.UPDATE_ALL, psiElement -> OVERRIDES_METHOD_IN + overrideHandler.className, new GutterIconNavigationHandler() - { - @Override - public void navigate(final MouseEvent e, final JSFunction elt) - { - final Set results = new HashSet<>(); - JSResolveUtil.iterateType(function, parentNode1, typeName, new JSResolveUtil.OverrideHandler() - { - @Override - public boolean process(final ResolveProcessor processor, final PsiElement scope, final String className) - { - for(PsiElement e : processor.getResults()) - { - results.add((NavigationItem) e); - } - return true; - } - }); - - if(results.size() == 1) - { - results.iterator().next().navigate(true); - } - else if(results.size() > 1) - { - PopupNavigationUtil.getPsiElementPopup(results.toArray(new PsiElement[results.size()]), "Choose super class or interface").show(new RelativePoint - (e)); - } - } - } - ); - } - } - } - - return null; - } - - @Override - public void collectSlowLineMarkers(@Nonnull final List elements, @Nonnull final Collection result) - { - final Map> jsFunctionsToProcess = new HashMap<>(); - final Map> jsMethodsToProcess = new HashMap<>(); - - for(final PsiElement el : elements) - { - ProgressManager.getInstance().checkCanceled(); - - if(el instanceof JSFunction) - { - final JSFunction function = (JSFunction) el; - if(isNotApplicableForOverride(function)) - { - continue; - } - - PsiElement parent = function.getParent(); - if(parent instanceof JSFile) - { - parent = JSResolveUtil.getClassReferenceForXmlFromContext(parent); - } - - if(parent instanceof JSClass) - { - final JSClass clazz = (JSClass) parent; - - Set functions = jsMethodsToProcess.get(clazz); - if(functions == null) - { - functions = new HashSet<>(); - jsMethodsToProcess.put(clazz, functions); - } - - functions.add(function); - } - else if(parent instanceof JSFile || function instanceof JSFunctionExpression) - { - final String qName = JSResolveUtil.getQNameToStartHierarchySearch(function); - if(qName != null) - { - Set functions = jsFunctionsToProcess.get(qName); - - if(functions == null) - { - functions = new HashSet<>(); - jsFunctionsToProcess.put(qName, functions); - } - - functions.add(function); - } - } - } - else if(el instanceof JSClass) - { - final JSClass clazz = (JSClass) el; - if(!jsMethodsToProcess.containsKey(clazz)) - { - jsMethodsToProcess.put(clazz, null); - } - } - } - - for(Map.Entry> entry : jsMethodsToProcess.entrySet()) - { - ProgressManager.getInstance().checkCanceled(); - final JSClass clazz = entry.getKey(); - final Set methods = entry.getValue(); - - Query classQuery = JSClassSearch.searchClassInheritors(clazz, methods != null); - - classQuery.forEach(new Processor() - { - boolean addedClassMarker; - final Set methodsClone = methods == null || clazz.isInterface() ? null : new HashSet<>(methods); - - @Override - public boolean process(final JSClass jsClass) - { - if(!addedClassMarker) - { - result.add(new LineMarkerInfo<>(clazz, clazz.getTextOffset(), AllIcons.Gutter.OverridenMethod, Pass.LINE_MARKERS, - ourClassInheritorsTooltipProvider, ourClassInheritorsNavHandler)); - addedClassMarker = true; - } - - if(methodsClone != null) - { - for(final Iterator functionIterator = methodsClone.iterator(); functionIterator.hasNext(); ) - { - final JSFunction function = functionIterator.next(); - - final JSFunction byName = jsClass.findFunctionByNameAndKind(function.getName(), function.getKind()); - if(byName != null && !isNotApplicableForOverride(byName)) - { - // TODO: more correct check for override - function.putUserData(ourParticipatesInHierarchyKey, Boolean.TRUE); - result.add(new LineMarkerInfo<>(function, function.getTextOffset(), AllIcons.Gutter.OverridenMethod, Pass.LINE_MARKERS, - ourOverriddenFunctionsTooltipProvider, ourOverriddenFunctionsNavHandler)); - functionIterator.remove(); - } - } - } - return methodsClone != null && !methodsClone.isEmpty(); - } - }); - - - if(clazz.isInterface()) - { - classQuery = JSClassSearch.searchInterfaceImplementations(clazz, false); - - if(classQuery.findFirst() != null) - { - result.add(new LineMarkerInfo<>(clazz, clazz.getTextOffset(), AllIcons.Gutter.ImplementedMethod, Pass.LINE_MARKERS, - ourImplementedInterfacesTooltipProvider, ourInterfaceImplementationsNavHandler)); - } - } - - if(methods == null) - { - continue; - } - - for(final JSFunction function : methods) - { - - if(clazz.isInterface()) - { - final Query query = JSFunctionsSearch.searchImplementingFunctions(function, false); - if(query.findFirst() != null) - { - function.putUserData(ourParticipatesInHierarchyKey, Boolean.TRUE); - result.add(new LineMarkerInfo<>(function, function.getTextOffset(), AllIcons.Gutter.ImplementedMethod, Pass.LINE_MARKERS, - ourImplementingFunctionsTooltipProvider, ourImplementingFunctionsNavHandler)); - } - } - else - { - final JSAttributeList attributeList = function.getAttributeList(); - if(attributeList != null && attributeList.hasModifier(JSAttributeList.ModifierType.OVERRIDE)) - { - continue; - } - - final JSFunction implementedFunction = findImplementedFunction(function); - if(implementedFunction != null) - { - function.putUserData(ourParticipatesInHierarchyKey, Boolean.TRUE); - - result.add(new LineMarkerInfo<>(function, function.getTextOffset(), AllIcons.Gutter.ImplementingMethod, Pass.LINE_MARKERS, - jsFunction -> "Implementation of " + jsFunction.getName() + " in " + ((NavigationItem) implementedFunction.getParent()).getName(), new - GutterIconNavigationHandler() - { - @Override - public void navigate(final MouseEvent e, final JSFunction elt) - { - final JSFunction implementedFunction = findImplementedFunction(elt); - if(implementedFunction != null) - { - implementedFunction.navigate(true); - } - } - } - )); - } - } - } - } - } - - private static boolean isClass(final PsiElement element) - { - if(element instanceof JSClass) - { - return true; - } - if(element instanceof JSFile && element.getContext() != null) - { - return true; - } - return false; - } - - @Nullable - private static JSFunction findImplementedFunction(JSFunction implementingFunction) - { - PsiElement clazz = implementingFunction.getParent(); - if(!(clazz instanceof JSClass)) - { - clazz = JSResolveUtil.getClassReferenceForXmlFromContext(clazz); - } - if(!(clazz instanceof JSClass)) - { - return null; - } - final Ref result = new Ref<>(); - JSResolveUtil.processInterfaceMethods((JSClass) clazz, new JSResolveUtil.CollectMethodsToImplementProcessor(implementingFunction.getName(), - implementingFunction) - { - @Override - protected boolean process(final ResolveProcessor processor) - { - result.set((JSFunction) processor.getResult()); - return false; - } - }); - return result.get(); - } - - private static boolean isNotApplicableForOverride(final JSFunction function) - { - final JSAttributeList attributeList = function.getAttributeList(); - - return function.isConstructor() || (attributeList != null && (attributeList.getAccessType() == JSAttributeList.AccessType.PRIVATE || - attributeList.hasModifier(JSAttributeList.ModifierType.STATIC) || - attributeList.hasModifier(JSAttributeList.ModifierType.NATIVE))); - } - - static class MyOverrideHandler implements JSResolveUtil.OverrideHandler - { - String className; - - @Override - public boolean process(final ResolveProcessor processor, final PsiElement scope, final String className) - { - this.className = className; - return true; - } - } - - private abstract static class BasicGutterIconNavigationHandler implements GutterIconNavigationHandler - { - @Override - public void navigate(final MouseEvent e, final T elt) - { - final List navElements = new ArrayList<>(); - Query elementQuery = search(elt); - if(elementQuery == null) - { - return; - } - elementQuery.forEach(new Processor() - { - @Override - public boolean process(final T psiElement) - { - if(psiElement instanceof NavigatablePsiElement) - { - navElements.add((NavigatablePsiElement) psiElement); - } - return true; - } - }); - final NavigatablePsiElement[] methods = navElements.toArray(new NavigatablePsiElement[navElements.size()]); - PsiElementListNavigator.openTargets(e, methods, getTitle(elt), "", new DefaultPsiElementCellRenderer()); - } - - protected abstract String getTitle(T elt); - - @Nullable - protected abstract Query search(T elt); - } - - @Nonnull - @Override - public Language getLanguage() - { - return JavaScriptLanguage.INSTANCE; - } +public class JavaScriptLineMarkerProvider implements LineMarkerProvider { + private static final String OVERRIDES_METHOD_IN = "overrides method in "; + + private static final Function ourClassInheritorsTooltipProvider = clazz -> "Has subclasses"; + + private static final Function ourImplementedInterfacesTooltipProvider = clazz -> "Has implementations"; + + private static final Function ourOverriddenFunctionsTooltipProvider = psiElement -> "Is overridden"; + + private static final Function ourImplementingFunctionsTooltipProvider = psiElement -> "Is implemented"; + + private static final BasicGutterIconNavigationHandler ourClassInheritorsNavHandler = + new BasicGutterIconNavigationHandler() { + @Override + protected String getTitle(final JSClass elt) { + return "Choose Subclass of " + elt.getName(); + } + + @Override + protected Query search(final JSClass elt) { + return JSClassSearch.searchClassInheritors(elt, true); + } + }; + + private static final BasicGutterIconNavigationHandler ourInterfaceImplementationsNavHandler = new + BasicGutterIconNavigationHandler() { + @Override + protected String getTitle(final JSClass elt) { + return "Choose Implementation of " + elt.getName(); + } + + @Override + protected Query search(final JSClass elt) { + return JSClassSearch.searchInterfaceImplementations(elt, true); + } + }; + + private static final BasicGutterIconNavigationHandler ourOverriddenFunctionsNavHandler = new + BasicGutterIconNavigationHandler() { + @Override + protected String getTitle(final JSFunction elt) { + return "Choose Overriden Function of " + elt.getName(); + } + + @Override + protected Query search(final JSFunction elt) { + return doFindOverridenFunctionStatic(elt); + } + }; + private final boolean myUnitTestMode = ApplicationManager.getApplication().isUnitTestMode(); + + + public static Query doFindOverridenFunctionStatic(final JSFunction elt) { + PsiElement parent = JSResolveUtil.findParent(elt); + if (parent instanceof JSClass) { + return JSFunctionsSearch.searchOverridingFunctions(elt, true); + } + final String qName = JSResolveUtil.getQNameToStartHierarchySearch(elt); + if (qName != null) { + final ArrayList result = new ArrayList<>(); + + return new CollectionQuery<>(result); + } + + return new CollectionQuery<>(Collections.emptyList()); + } + + private static final BasicGutterIconNavigationHandler ourImplementingFunctionsNavHandler = new + BasicGutterIconNavigationHandler() { + @Override + protected String getTitle(final JSFunction elt) { + return "Choose Implementation of " + elt.getName(); + } + + @Override + protected Query search(final JSFunction elt) { + return JSFunctionsSearch.searchImplementingFunctions(elt, true); + } + }; + + public static Key ourParticipatesInHierarchyKey = Key.create("js.named.item.participates.in.hierarchy"); + + @Override + public LineMarkerInfo getLineMarkerInfo(@Nonnull final PsiElement element) { + if (element instanceof JSFunction) { + final JSFunction function = (JSFunction)element; + function.putUserData(ourParticipatesInHierarchyKey, null); + if (function.getNameIdentifier() == null) { + return null; + } + final String qName = JSResolveUtil.getQNameToStartHierarchySearch(function); + + if (qName != null) { + PsiElement parentNode = element.getParent(); + if (parentNode instanceof JSFile) { + JSClass xmlBackedClass = JSResolveUtil.getXmlBackedClass((JSFile)parentNode); + if (xmlBackedClass != null) { + parentNode = xmlBackedClass; + } + } + + if (element instanceof JSFunctionExpression) { + parentNode = element.getContainingFile(); + } + + final MyOverrideHandler overrideHandler = new MyOverrideHandler(); + final String typeName = parentNode instanceof JSClass ? ((JSClass)parentNode).getQualifiedName() : qName; + JSResolveUtil.iterateType(function, parentNode, typeName, overrideHandler); + + if (overrideHandler.className != null) { + final PsiElement parentNode1 = parentNode; + function.putUserData(ourParticipatesInHierarchyKey, Boolean.TRUE); + + return new LineMarkerInfo<>( + function, + function.getNameIdentifier().getTextRange().getStartOffset(), + AllIcons.Gutter.OverridingMethod, + Pass.UPDATE_ALL, + psiElement -> OVERRIDES_METHOD_IN + overrideHandler.className, + new GutterIconNavigationHandler() { + @Override + public void navigate(final MouseEvent e, final JSFunction elt) { + final Set results = new HashSet<>(); + JSResolveUtil.iterateType( + function, + parentNode1, + typeName, + new JSResolveUtil.OverrideHandler() { + @Override + public boolean process( + final ResolveProcessor processor, + final PsiElement scope, + final String className + ) { + for (PsiElement e : processor.getResults()) { + results.add((NavigationItem)e); + } + return true; + } + } + ); + + if (results.size() == 1) { + results.iterator().next().navigate(true); + } + else if (results.size() > 1) { + PopupNavigationUtil.getPsiElementPopup( + results.toArray(new PsiElement[results.size()]), + "Choose super class or interface" + ).show(new RelativePoint(e)); + } + } + } + ); + } + } + } + + return null; + } + + @Override + public void collectSlowLineMarkers(@Nonnull final List elements, @Nonnull final Collection result) { + final Map> jsFunctionsToProcess = new HashMap<>(); + final Map> jsMethodsToProcess = new HashMap<>(); + + for (final PsiElement el : elements) { + ProgressManager.getInstance().checkCanceled(); + + if (el instanceof JSFunction) { + final JSFunction function = (JSFunction)el; + if (isNotApplicableForOverride(function)) { + continue; + } + + PsiElement parent = function.getParent(); + if (parent instanceof JSFile) { + parent = JSResolveUtil.getClassReferenceForXmlFromContext(parent); + } + + if (parent instanceof JSClass) { + final JSClass clazz = (JSClass)parent; + + Set functions = jsMethodsToProcess.get(clazz); + if (functions == null) { + functions = new HashSet<>(); + jsMethodsToProcess.put(clazz, functions); + } + + functions.add(function); + } + else if (parent instanceof JSFile || function instanceof JSFunctionExpression) { + final String qName = JSResolveUtil.getQNameToStartHierarchySearch(function); + if (qName != null) { + Set functions = jsFunctionsToProcess.get(qName); + + if (functions == null) { + functions = new HashSet<>(); + jsFunctionsToProcess.put(qName, functions); + } + + functions.add(function); + } + } + } + else if (el instanceof JSClass) { + final JSClass clazz = (JSClass)el; + if (!jsMethodsToProcess.containsKey(clazz)) { + jsMethodsToProcess.put(clazz, null); + } + } + } + + for (Map.Entry> entry : jsMethodsToProcess.entrySet()) { + ProgressManager.getInstance().checkCanceled(); + final JSClass clazz = entry.getKey(); + final Set methods = entry.getValue(); + + Query classQuery = JSClassSearch.searchClassInheritors(clazz, methods != null); + + classQuery.forEach(new Processor() { + boolean addedClassMarker; + final Set methodsClone = methods == null || clazz.isInterface() ? null : new HashSet<>(methods); + + @Override + public boolean process(final JSClass jsClass) { + if (!addedClassMarker) { + result.add(new LineMarkerInfo<>( + clazz, + clazz.getTextOffset(), + AllIcons.Gutter.OverridenMethod, + Pass.LINE_MARKERS, + ourClassInheritorsTooltipProvider, + ourClassInheritorsNavHandler + )); + addedClassMarker = true; + } + + if (methodsClone != null) { + for (final Iterator functionIterator = methodsClone.iterator(); functionIterator.hasNext(); ) { + final JSFunction function = functionIterator.next(); + + final JSFunction byName = jsClass.findFunctionByNameAndKind(function.getName(), function.getKind()); + if (byName != null && !isNotApplicableForOverride(byName)) { + // TODO: more correct check for override + function.putUserData(ourParticipatesInHierarchyKey, Boolean.TRUE); + result.add(new LineMarkerInfo<>( + function, + function.getTextOffset(), + AllIcons.Gutter.OverridenMethod, + Pass.LINE_MARKERS, + ourOverriddenFunctionsTooltipProvider, + ourOverriddenFunctionsNavHandler + )); + functionIterator.remove(); + } + } + } + return methodsClone != null && !methodsClone.isEmpty(); + } + }); + + + if (clazz.isInterface()) { + classQuery = JSClassSearch.searchInterfaceImplementations(clazz, false); + + if (classQuery.findFirst() != null) { + result.add(new LineMarkerInfo<>( + clazz, + clazz.getTextOffset(), + AllIcons.Gutter.ImplementedMethod, + Pass.LINE_MARKERS, + ourImplementedInterfacesTooltipProvider, + ourInterfaceImplementationsNavHandler + )); + } + } + + if (methods == null) { + continue; + } + + for (final JSFunction function : methods) { + if (clazz.isInterface()) { + final Query query = JSFunctionsSearch.searchImplementingFunctions(function, false); + if (query.findFirst() != null) { + function.putUserData(ourParticipatesInHierarchyKey, Boolean.TRUE); + result.add(new LineMarkerInfo<>( + function, + function.getTextOffset(), + AllIcons.Gutter.ImplementedMethod, + Pass.LINE_MARKERS, + ourImplementingFunctionsTooltipProvider, + ourImplementingFunctionsNavHandler + )); + } + } + else { + final JSAttributeList attributeList = function.getAttributeList(); + if (attributeList != null && attributeList.hasModifier(JSAttributeList.ModifierType.OVERRIDE)) { + continue; + } + + final JSFunction implementedFunction = findImplementedFunction(function); + if (implementedFunction != null) { + function.putUserData(ourParticipatesInHierarchyKey, Boolean.TRUE); + + result.add(new LineMarkerInfo<>( + function, + function.getTextOffset(), + AllIcons.Gutter.ImplementingMethod, + Pass.LINE_MARKERS, + jsFunction -> "Implementation of " + jsFunction.getName() + " in " + + ((NavigationItem)implementedFunction.getParent()).getName(), + new GutterIconNavigationHandler() { + @Override + public void navigate(final MouseEvent e, final JSFunction elt) { + final JSFunction implementedFunction = findImplementedFunction(elt); + if (implementedFunction != null) { + implementedFunction.navigate(true); + } + } + } + )); + } + } + } + } + } + + private static boolean isClass(final PsiElement element) { + if (element instanceof JSClass) { + return true; + } + if (element instanceof JSFile && element.getContext() != null) { + return true; + } + return false; + } + + @Nullable + private static JSFunction findImplementedFunction(JSFunction implementingFunction) { + PsiElement clazz = implementingFunction.getParent(); + if (!(clazz instanceof JSClass)) { + clazz = JSResolveUtil.getClassReferenceForXmlFromContext(clazz); + } + if (!(clazz instanceof JSClass)) { + return null; + } + final Ref result = new Ref<>(); + JSResolveUtil.processInterfaceMethods((JSClass)clazz, new JSResolveUtil.CollectMethodsToImplementProcessor( + implementingFunction.getName(), + implementingFunction + ) { + @Override + protected boolean process(final ResolveProcessor processor) { + result.set((JSFunction)processor.getResult()); + return false; + } + }); + return result.get(); + } + + private static boolean isNotApplicableForOverride(final JSFunction function) { + final JSAttributeList attributeList = function.getAttributeList(); + + return function.isConstructor() || (attributeList != null + && (attributeList.getAccessType() == JSAttributeList.AccessType.PRIVATE + || attributeList.hasModifier(JSAttributeList.ModifierType.STATIC) + || attributeList.hasModifier(JSAttributeList.ModifierType.NATIVE))); + } + + static class MyOverrideHandler implements JSResolveUtil.OverrideHandler { + String className; + + @Override + public boolean process(final ResolveProcessor processor, final PsiElement scope, final String className) { + this.className = className; + return true; + } + } + + private abstract static class BasicGutterIconNavigationHandler implements GutterIconNavigationHandler { + @Override + public void navigate(final MouseEvent e, final T elt) { + final List navElements = new ArrayList<>(); + Query elementQuery = search(elt); + if (elementQuery == null) { + return; + } + elementQuery.forEach(new Processor() { + @Override + public boolean process(final T psiElement) { + if (psiElement instanceof NavigatablePsiElement) { + navElements.add((NavigatablePsiElement)psiElement); + } + return true; + } + }); + final NavigatablePsiElement[] methods = navElements.toArray(new NavigatablePsiElement[navElements.size()]); + PsiElementListNavigator.openTargets(e, methods, getTitle(elt), "", new DefaultPsiElementCellRenderer()); + } + + protected abstract String getTitle(T elt); + + @Nullable + protected abstract Query search(T elt); + } + + @Nonnull + @Override + public Language getLanguage() { + return JavaScriptLanguage.INSTANCE; + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/index/predefined/Marker.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/index/predefined/Marker.java index 188d0423..f3a84c6b 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/index/predefined/Marker.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/index/predefined/Marker.java @@ -23,6 +23,5 @@ * Time: 8:09:53 PM * To change this template use File | Settings | File Templates. */ -public class Marker -{ +public class Marker { } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/navigation/JavaScriptGotoSuperHandler.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/navigation/JavaScriptGotoSuperHandler.java index 90e1d7b8..1d9e7b55 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/navigation/JavaScriptGotoSuperHandler.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/navigation/JavaScriptGotoSuperHandler.java @@ -38,114 +38,96 @@ import jakarta.annotation.Nonnull; @ExtensionImpl -public class JavaScriptGotoSuperHandler implements GotoSuperActionHander -{ - @Override - public void invoke(final Project project, final Editor editor, final PsiFile file) - { - final PsiElement at = file.findElementAt(editor.getCaretModel().getOffset()); - if(at == null) - { - return; - } - JSNamedElement namedElement = PsiTreeUtil.getParentOfType(at, JSNamedElement.class); - PsiElement parent = namedElement != null ? namedElement.getParent() : null; +public class JavaScriptGotoSuperHandler implements GotoSuperActionHander { + @Override + public void invoke(final Project project, final Editor editor, final PsiFile file) { + final PsiElement at = file.findElementAt(editor.getCaretModel().getOffset()); + if (at == null) { + return; + } + JSNamedElement namedElement = PsiTreeUtil.getParentOfType(at, JSNamedElement.class); + PsiElement parent = namedElement != null ? namedElement.getParent() : null; - if(namedElement instanceof JSDefinitionExpression) - { - if(parent instanceof JSAssignmentExpression) - { - PsiElement rOperand = ((JSAssignmentExpression) parent).getROperand(); - if(rOperand instanceof JSFunctionExpression) - { - namedElement = (JSNamedElement) rOperand; - } - } - } + if (namedElement instanceof JSDefinitionExpression && parent instanceof JSAssignmentExpression) { + PsiElement rOperand = ((JSAssignmentExpression)parent).getROperand(); + if (rOperand instanceof JSFunctionExpression) { + namedElement = (JSNamedElement)rOperand; + } + } - if(namedElement instanceof JSFunction) - { - final JSFunction function = (JSFunction) namedElement; - final String qName = JSResolveUtil.getQNameToStartHierarchySearch(function); + if (namedElement instanceof JSFunction) { + final JSFunction function = (JSFunction)namedElement; + final String qName = JSResolveUtil.getQNameToStartHierarchySearch(function); - if(qName != null) - { - if(parent instanceof JSFile) - { - JSClass xmlBackedClass = JSResolveUtil.getXmlBackedClass((JSFile) parent); - if(xmlBackedClass != null) - { - parent = xmlBackedClass; - } - } - boolean result = JSResolveUtil.iterateType(function, parent instanceof JSClass ? parent : parent.getContainingFile(), qName, - new JSResolveUtil.OverrideHandler() - { - @Override - public boolean process(final ResolveProcessor processor, final PsiElement scope, final String className) - { - ((NavigationItem) processor.getResult()).navigate(true); - return false; - } - }); + if (qName != null) { + if (parent instanceof JSFile) { + JSClass xmlBackedClass = JSResolveUtil.getXmlBackedClass((JSFile)parent); + if (xmlBackedClass != null) { + parent = xmlBackedClass; + } + } + boolean result = JSResolveUtil.iterateType( + function, + parent instanceof JSClass ? parent : parent.getContainingFile(), + qName, + new JSResolveUtil.OverrideHandler() { + @Override + public boolean process(final ResolveProcessor processor, final PsiElement scope, final String className) { + ((NavigationItem)processor.getResult()).navigate(true); + return false; + } + } + ); - if(!result) - { - return; - } - } + if (!result) { + return; + } + } - if(parent instanceof JSClass) - { - JSResolveUtil.processInterfaceMethods((JSClass) parent, new JSResolveUtil.CollectMethodsToImplementProcessor(function.getName(), function) - { - @Override - protected boolean process(final ResolveProcessor processor) - { - ((NavigationItem) processor.getResult()).navigate(true); - return true; - } - }); - } - } - else if(namedElement instanceof JSClass) - { - final JSClass clazz = (JSClass) namedElement; - final JSClass[] classes = clazz.getSupers(); + if (parent instanceof JSClass) { + JSResolveUtil.processInterfaceMethods( + (JSClass)parent, + new JSResolveUtil.CollectMethodsToImplementProcessor(function.getName(), function) { + @Override + protected boolean process(final ResolveProcessor processor) { + ((NavigationItem)processor.getResult()).navigate(true); + return true; + } + } + ); + } + } + else if (namedElement instanceof JSClass) { + final JSClass clazz = (JSClass)namedElement; + final JSClass[] classes = clazz.getSupers(); - if(classes.length == 0) - { - return; - } - if(classes.length == 1) - { - classes[0].navigate(true); - } - else - { - JBPopup psiElementPopup = PopupNavigationUtil.getPsiElementPopup(classes, "Choose super class or interface"); + if (classes.length == 0) { + return; + } + if (classes.length == 1) { + classes[0].navigate(true); + } + else { + JBPopup psiElementPopup = PopupNavigationUtil.getPsiElementPopup(classes, "Choose super class or interface"); - EditorPopupHelper.getInstance().showPopupInBestPositionFor(editor, psiElementPopup); - } - } - } + EditorPopupHelper.getInstance().showPopupInBestPositionFor(editor, psiElementPopup); + } + } + } - @Override - public boolean startInWriteAction() - { - return false; - } + @Override + public boolean startInWriteAction() { + return false; + } - @Override - public boolean isValidFor(final Editor editor, final PsiFile file) - { - return true; - } + @Override + public boolean isValidFor(final Editor editor, final PsiFile file) { + return true; + } - @Nonnull - @Override - public Language getLanguage() - { - return JavaScriptLanguage.INSTANCE; - } + @Nonnull + @Override + public Language getLanguage() { + return JavaScriptLanguage.INSTANCE; + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/navigation/JavaScriptSymbolContributor.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/navigation/JavaScriptSymbolContributor.java index 3ead17b8..ef87fc29 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/navigation/JavaScriptSymbolContributor.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/navigation/JavaScriptSymbolContributor.java @@ -36,48 +36,50 @@ import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; + import java.util.Collection; /** * @author maxim */ @ExtensionImpl -public class JavaScriptSymbolContributor implements GotoSymbolContributor -{ - @Override - public void processNames(@Nonnull Processor processor, @Nonnull SearchScope searchScope, @Nullable IdFilter idFilter) - { - StubIndex.getInstance().processAllKeys(JavaScriptIndexKeys.ELEMENTS_BY_NAME, processor, (GlobalSearchScope) searchScope, idFilter); +public class JavaScriptSymbolContributor implements GotoSymbolContributor { + @Override + public void processNames(@Nonnull Processor processor, @Nonnull SearchScope searchScope, @Nullable IdFilter idFilter) { + StubIndex.getInstance().processAllKeys(JavaScriptIndexKeys.ELEMENTS_BY_NAME, processor, (GlobalSearchScope)searchScope, idFilter); - FileBasedIndex.getInstance().processAllKeys(FilenameIndex.NAME, new Processor() - { - @Override - public boolean process(String s) - { - if(JavaScriptSupportLoader.isFlexMxmFile(s)) - { - return processor.process(FileUtil.getNameWithoutExtension(s)); - } - return true; - } - }, searchScope, idFilter); - } + FileBasedIndex.getInstance().processAllKeys( + FilenameIndex.NAME, + new Processor() { + @Override + public boolean process(String s) { + if (JavaScriptSupportLoader.isFlexMxmFile(s)) { + return processor.process(FileUtil.getNameWithoutExtension(s)); + } + return true; + } + }, + searchScope, + idFilter + ); + } - @Override - public void processElementsWithName(@Nonnull String name, @Nonnull Processor processor, @Nonnull FindSymbolParameters findSymbolParameters) - { - Project project = findSymbolParameters.getProject(); + @Override + public void processElementsWithName( + @Nonnull String name, + @Nonnull Processor processor, + @Nonnull FindSymbolParameters findSymbolParameters + ) { + Project project = findSymbolParameters.getProject(); - GlobalSearchScope scope = (GlobalSearchScope) findSymbolParameters.getSearchScope(); + GlobalSearchScope scope = (GlobalSearchScope)findSymbolParameters.getSearchScope(); - Collection result = JSResolveUtil.findElementsByName(name, project, scope); + Collection result = JSResolveUtil.findElementsByName(name, project, scope); - for(JSQualifiedNamedElement element : result) - { - if(!processor.process(element)) - { - break; - } - } - } + for (JSQualifiedNamedElement element : result) { + if (!processor.process(element)) { + break; + } + } + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/BaseIntroduceSettings.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/BaseIntroduceSettings.java index 383007dd..d74986cb 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/BaseIntroduceSettings.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/BaseIntroduceSettings.java @@ -19,11 +19,10 @@ /** * @author ven */ -public interface BaseIntroduceSettings -{ - boolean isReplaceAllOccurences(); +public interface BaseIntroduceSettings { + boolean isReplaceAllOccurences(); - String getVariableName(); + String getVariableName(); - String getVariableType(); + String getVariableType(); } \ No newline at end of file diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/BasicJavascriptNamesValidator.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/BasicJavascriptNamesValidator.java index 1eb1bb04..6a76f98a 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/BasicJavascriptNamesValidator.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/BasicJavascriptNamesValidator.java @@ -26,17 +26,14 @@ import jakarta.annotation.Nonnull; @ExtensionImpl -public class BasicJavascriptNamesValidator extends JSNamesValidator -{ - public BasicJavascriptNamesValidator() - { - super(DialectOptionHolder.dummy()); - } +public class BasicJavascriptNamesValidator extends JSNamesValidator { + public BasicJavascriptNamesValidator() { + super(DialectOptionHolder.dummy()); + } - @Nonnull - @Override - public Language getLanguage() - { - return JavaScriptLanguage.INSTANCE; - } + @Nonnull + @Override + public Language getLanguage() { + return JavaScriptLanguage.INSTANCE; + } } \ No newline at end of file diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseClassBasedIntroduceDialog.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseClassBasedIntroduceDialog.java index 45f7c8d6..efbc9d22 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseClassBasedIntroduceDialog.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseClassBasedIntroduceDialog.java @@ -27,78 +27,66 @@ /** * @author ven */ -public abstract class JSBaseClassBasedIntroduceDialog extends JSBaseIntroduceDialog -{ - private static JSAttributeList.AccessType lastType; +public abstract class JSBaseClassBasedIntroduceDialog extends JSBaseIntroduceDialog { + private static JSAttributeList.AccessType lastType; - protected JSBaseClassBasedIntroduceDialog( - final Project project, - final JSExpression[] occurences, - final JSExpression mainOccurence, - LocalizeValue title - ) - { - super(project, occurences, mainOccurence, title); - } + protected JSBaseClassBasedIntroduceDialog( + final Project project, + final JSExpression[] occurences, + final JSExpression mainOccurence, + LocalizeValue title + ) { + super(project, occurences, mainOccurence, title); + } - @Override - protected void doInit() - { - super.doInit(); + @Override + protected void doInit() { + super.doInit(); - final ButtonGroup group = new ButtonGroup(); - group.add(getPrivateRadioButton()); - group.add(getPublicRadioButton()); - group.add(getPackageLocalRadioButton()); - group.add(getProtectedRadioButton()); + final ButtonGroup group = new ButtonGroup(); + group.add(getPrivateRadioButton()); + group.add(getPublicRadioButton()); + group.add(getPackageLocalRadioButton()); + group.add(getProtectedRadioButton()); - if(lastType == JSAttributeList.AccessType.PRIVATE || lastType == null) - { - getPrivateRadioButton().setSelected(true); - } - else if(lastType == JSAttributeList.AccessType.PROTECTED) - { - getProtectedRadioButton().setSelected(true); - } - else if(lastType == JSAttributeList.AccessType.PACKAGE_LOCAL) - { - getPackageLocalRadioButton().setSelected(true); - } - else if(lastType == JSAttributeList.AccessType.PUBLIC) - { - getPublicRadioButton().setSelected(true); - } - } + if (lastType == JSAttributeList.AccessType.PRIVATE || lastType == null) { + getPrivateRadioButton().setSelected(true); + } + else if (lastType == JSAttributeList.AccessType.PROTECTED) { + getProtectedRadioButton().setSelected(true); + } + else if (lastType == JSAttributeList.AccessType.PACKAGE_LOCAL) { + getPackageLocalRadioButton().setSelected(true); + } + else if (lastType == JSAttributeList.AccessType.PUBLIC) { + getPublicRadioButton().setSelected(true); + } + } - public JSAttributeList.AccessType getAccessType() - { - JSAttributeList.AccessType type = null; - if(getPublicRadioButton().isSelected()) - { - type = JSAttributeList.AccessType.PUBLIC; - } - if(getPrivateRadioButton().isSelected()) - { - type = JSAttributeList.AccessType.PRIVATE; - } - if(getPackageLocalRadioButton().isSelected()) - { - type = JSAttributeList.AccessType.PACKAGE_LOCAL; - } - if(getProtectedRadioButton().isSelected()) - { - type = JSAttributeList.AccessType.PROTECTED; - } - assert type != null; - lastType = type; - return type; - } + public JSAttributeList.AccessType getAccessType() { + JSAttributeList.AccessType type = null; + if (getPublicRadioButton().isSelected()) { + type = JSAttributeList.AccessType.PUBLIC; + } + if (getPrivateRadioButton().isSelected()) { + type = JSAttributeList.AccessType.PRIVATE; + } + if (getPackageLocalRadioButton().isSelected()) { + type = JSAttributeList.AccessType.PACKAGE_LOCAL; + } + if (getProtectedRadioButton().isSelected()) { + type = JSAttributeList.AccessType.PROTECTED; + } + assert type != null; + lastType = type; + return type; + } - protected abstract JRadioButton getPrivateRadioButton(); + protected abstract JRadioButton getPrivateRadioButton(); - protected abstract JRadioButton getPublicRadioButton(); + protected abstract JRadioButton getPublicRadioButton(); - protected abstract JRadioButton getProtectedRadioButton(); + protected abstract JRadioButton getProtectedRadioButton(); - protected abstract JRadioButton getPackageLocalRadioButton(); + protected abstract JRadioButton getPackageLocalRadioButton(); } \ No newline at end of file diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseIntroduceDialog.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseIntroduceDialog.java index 468aab80..3afb64ba 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseIntroduceDialog.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseIntroduceDialog.java @@ -46,288 +46,242 @@ /** * @author ven */ -public abstract class JSBaseIntroduceDialog extends DialogWrapper implements BaseIntroduceSettings -{ - private final Project myProject; - private final JSExpression[] myOccurences; - protected final JSExpression myMainOccurence; - - private Alarm myAlarm = new Alarm(Alarm.ThreadToUse.SWING_THREAD); - - protected JSBaseIntroduceDialog( - final Project project, - final JSExpression[] occurences, - final JSExpression mainOccurence, - LocalizeValue title - ) - { - super(project, false); - - myProject = project; - myOccurences = occurences; - myMainOccurence = mainOccurence; - setTitle(title); - } - - protected void doInit() - { - JCheckBox replaceAllCheckBox = getReplaceAllCheckBox(); - if(myOccurences.length > 1) - { - replaceAllCheckBox.setText(JavaScriptLocalize.javascriptIntroduceVariableReplaceAllOccurrences(myOccurences.length).get()); - } - else - { - replaceAllCheckBox.setVisible(false); - } - - final JTextField nameField = getNameField(); - nameField.setText(suggestCandidateName(myMainOccurence)); - nameField.selectAll(); - - nameField.addKeyListener(new KeyAdapter() - { - @Override - public void keyPressed(KeyEvent e) - { - initiateValidation(); - } - }); - - replaceAllCheckBox.setFocusable(false); - - final JComboBox typeField = getVarTypeField(); - - final List possibleTypes = new ArrayList(); - final String type = JSResolveUtil.getExpressionType(myMainOccurence, myMainOccurence.getContainingFile()); - possibleTypes.add(type); - - typeField.setModel(new DefaultComboBoxModel(possibleTypes.toArray(new Object[possibleTypes.size()]))); - - init(); - - SwingUtilities.invokeLater(new Runnable() - { - @Override - public void run() - { - initiateValidation(); - } - }); - } - - protected String suggestCandidateName(JSExpression mainOccurence) - { - final String s = evaluateCandidate(mainOccurence); - return s != null ? s.replace('.', '_') : null; - } - - private static String evaluateCandidate(JSExpression mainOccurence) - { - if(mainOccurence instanceof JSCallExpression) - { - mainOccurence = ((JSCallExpression) mainOccurence).getMethodExpression(); - } - - if(mainOccurence instanceof JSReferenceExpression) - { - final ResolveResult[] results = ((JSReferenceExpression) mainOccurence).multiResolve(false); - - if(results.length > 0) - { - final PsiElement element = results[0].getElement(); - - if(element instanceof JSFunction) - { - String typeString = ((JSFunction) element).getReturnTypeString(); - if(isValidIdentifier(typeString, mainOccurence)) - { - return typeString; - } - return ((JSFunction) element).getName(); - } - else if(element instanceof JSVariable) - { - String typeString = ((JSVariable) element).getTypeString(); - if(isValidIdentifier(typeString, mainOccurence)) - { - return typeString; - } - return typeString; - } - } - - return ((JSReferenceExpression) mainOccurence).getReferencedName(); - } - else if(mainOccurence.getParent() instanceof JSArgumentList) - { - JSParameter param = JSResolveUtil.findParameterForUsedArgument(mainOccurence, (JSArgumentList) mainOccurence.getParent()); - if(param != null) - { - return param.getName(); - } - } - - return JSResolveUtil.getExpressionType(mainOccurence, mainOccurence.getContainingFile()); - } - - private static boolean isValidIdentifier(String typeString, PsiElement context) - { - if(typeString == null) - { - return false; - } - Language language = context.getContainingFile().getLanguage(); - return NamesValidator.forLanguage(language).isIdentifier(typeString, context.getProject()); - } - - protected abstract JTextField getNameField(); - - protected abstract JPanel getPanel(); - - protected abstract JCheckBox getReplaceAllCheckBox(); - - private void initiateValidation() - { - myAlarm.cancelAllRequests(); - myAlarm.addRequest(new Runnable() - { - @Override - public void run() - { - final String nameCandidate = getNameField().getText(); - setOKActionEnabled(nameCandidate.length() != 0 && isValidName(nameCandidate)); - } - }, 100, Application.get().getCurrentModalityState()); - } - - @Override - public JComponent getPreferredFocusedComponent() - { - return getNameField(); - } - - @Override - protected JComponent createCenterPanel() - { - return getPanel(); - } - - @Override - protected void doOKAction() - { - final String name = getVariableName(); - if(name.length() == 0 || !isValidName(name)) - { - Messages.showErrorDialog( - myProject, - JavaScriptLocalize.javascriptIntroduceVariableInvalidName().get(), - JavaScriptLocalize.javascriptIntroduceVariableTitle().get() - ); - getNameField().requestFocus(); - return; - } - - if(!checkConflicts(name)) - { - return; - } - - super.doOKAction(); - } - - private boolean checkConflicts(final String name) - { - PsiElement tmp = isReplaceAllOccurences() ? PsiTreeUtil.findCommonParent(myOccurences) : myMainOccurence; - assert tmp != null; - JSElement scope = PsiTreeUtil.getNonStrictParentOfType(tmp, JSBlockStatement.class, JSFile.class, JSEmbeddedContentImpl.class); - assert scope != null; - - final Ref existing = new Ref(); - scope.accept(new JSElementVisitor() - { - @Override - public void visitJSElement(final JSElement node) - { - if(existing.isNull()) - { - node.acceptChildren(this); - } - } - - @Override - public void visitJSVariable(final JSVariable node) - { - if(name.equals(node.getName())) - { - existing.set(node); - } - super.visitJSVariable(node); - } - - @Override - public void visitJSFunctionDeclaration(final JSFunction node) - { - if(name.equals(node.getName())) - { - existing.set(node); - } - super.visitJSFunctionDeclaration(node); - } - }); - - if(existing.isNull()) - { - final ResolveProcessor processor = new ResolveProcessor(name); - JSResolveUtil.treeWalkUp(processor, scope, null, scope); - final PsiElement resolved = processor.getResult(); - if(resolved instanceof JSNamedElement) - { - existing.set((JSNamedElement) resolved); - } - } - - if(!existing.isNull()) - { - return showConflictsDialog(existing.get(), name); - } - - return true; - } - - private boolean showConflictsDialog(final JSNamedElement existing, final String name) - { - final LocalizeValue message = existing instanceof JSFunction - ? JavaScriptLocalize.javascriptIntroduceVariableFunctionAlreadyExists(CommonRefactoringUtil.htmlEmphasize(name)) - : JavaScriptLocalize.javascriptIntroduceVariableVariableAlreadyExists(CommonRefactoringUtil.htmlEmphasize(name)); - final ConflictsDialog conflictsDialog = new ConflictsDialog(myProject, message.get()); - conflictsDialog.show(); - return conflictsDialog.isOK(); - } - - @Override - public boolean isReplaceAllOccurences() - { - return getReplaceAllCheckBox().isSelected(); - } - - @Override - public String getVariableName() - { - return getNameField().getText().trim(); - } - - @Override - public String getVariableType() - { - return (String) getVarTypeField().getSelectedItem(); - } - - private boolean isValidName(final String name) - { - final PsiFile containingFile = myMainOccurence.getContainingFile(); - return NamesValidator.forLanguage(containingFile.getLanguage()).isIdentifier(name, myProject); - } - - public abstract JComboBox getVarTypeField(); +public abstract class JSBaseIntroduceDialog extends DialogWrapper implements BaseIntroduceSettings { + private final Project myProject; + private final JSExpression[] myOccurences; + protected final JSExpression myMainOccurence; + + private Alarm myAlarm = new Alarm(Alarm.ThreadToUse.SWING_THREAD); + + protected JSBaseIntroduceDialog( + final Project project, + final JSExpression[] occurences, + final JSExpression mainOccurence, + LocalizeValue title + ) { + super(project, false); + + myProject = project; + myOccurences = occurences; + myMainOccurence = mainOccurence; + setTitle(title); + } + + protected void doInit() { + JCheckBox replaceAllCheckBox = getReplaceAllCheckBox(); + if (myOccurences.length > 1) { + replaceAllCheckBox.setText(JavaScriptLocalize.javascriptIntroduceVariableReplaceAllOccurrences(myOccurences.length).get()); + } + else { + replaceAllCheckBox.setVisible(false); + } + + final JTextField nameField = getNameField(); + nameField.setText(suggestCandidateName(myMainOccurence)); + nameField.selectAll(); + + nameField.addKeyListener(new KeyAdapter() { + @Override + public void keyPressed(KeyEvent e) { + initiateValidation(); + } + }); + + replaceAllCheckBox.setFocusable(false); + + final JComboBox typeField = getVarTypeField(); + + final List possibleTypes = new ArrayList(); + final String type = JSResolveUtil.getExpressionType(myMainOccurence, myMainOccurence.getContainingFile()); + possibleTypes.add(type); + + typeField.setModel(new DefaultComboBoxModel(possibleTypes.toArray(new Object[possibleTypes.size()]))); + + init(); + + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + initiateValidation(); + } + }); + } + + protected String suggestCandidateName(JSExpression mainOccurence) { + final String s = evaluateCandidate(mainOccurence); + return s != null ? s.replace('.', '_') : null; + } + + private static String evaluateCandidate(JSExpression mainOccurence) { + if (mainOccurence instanceof JSCallExpression) { + mainOccurence = ((JSCallExpression)mainOccurence).getMethodExpression(); + } + + if (mainOccurence instanceof JSReferenceExpression) { + final ResolveResult[] results = ((JSReferenceExpression)mainOccurence).multiResolve(false); + + if (results.length > 0) { + final PsiElement element = results[0].getElement(); + + if (element instanceof JSFunction) { + String typeString = ((JSFunction)element).getReturnTypeString(); + if (isValidIdentifier(typeString, mainOccurence)) { + return typeString; + } + return ((JSFunction)element).getName(); + } + else if (element instanceof JSVariable) { + String typeString = ((JSVariable)element).getTypeString(); + if (isValidIdentifier(typeString, mainOccurence)) { + return typeString; + } + return typeString; + } + } + + return ((JSReferenceExpression)mainOccurence).getReferencedName(); + } + else if (mainOccurence.getParent() instanceof JSArgumentList) { + JSParameter param = JSResolveUtil.findParameterForUsedArgument(mainOccurence, (JSArgumentList)mainOccurence.getParent()); + if (param != null) { + return param.getName(); + } + } + + return JSResolveUtil.getExpressionType(mainOccurence, mainOccurence.getContainingFile()); + } + + private static boolean isValidIdentifier(String typeString, PsiElement context) { + if (typeString == null) { + return false; + } + Language language = context.getContainingFile().getLanguage(); + return NamesValidator.forLanguage(language).isIdentifier(typeString, context.getProject()); + } + + protected abstract JTextField getNameField(); + + protected abstract JPanel getPanel(); + + protected abstract JCheckBox getReplaceAllCheckBox(); + + private void initiateValidation() { + myAlarm.cancelAllRequests(); + myAlarm.addRequest(new Runnable() { + @Override + public void run() { + final String nameCandidate = getNameField().getText(); + setOKActionEnabled(nameCandidate.length() != 0 && isValidName(nameCandidate)); + } + }, 100, Application.get().getCurrentModalityState()); + } + + @Override + public JComponent getPreferredFocusedComponent() { + return getNameField(); + } + + @Override + protected JComponent createCenterPanel() { + return getPanel(); + } + + @Override + protected void doOKAction() { + final String name = getVariableName(); + if (name.length() == 0 || !isValidName(name)) { + Messages.showErrorDialog( + myProject, + JavaScriptLocalize.javascriptIntroduceVariableInvalidName().get(), + JavaScriptLocalize.javascriptIntroduceVariableTitle().get() + ); + getNameField().requestFocus(); + return; + } + + if (!checkConflicts(name)) { + return; + } + + super.doOKAction(); + } + + private boolean checkConflicts(final String name) { + PsiElement tmp = isReplaceAllOccurences() ? PsiTreeUtil.findCommonParent(myOccurences) : myMainOccurence; + assert tmp != null; + JSElement scope = PsiTreeUtil.getNonStrictParentOfType(tmp, JSBlockStatement.class, JSFile.class, JSEmbeddedContentImpl.class); + assert scope != null; + + final Ref existing = new Ref(); + scope.accept(new JSElementVisitor() { + @Override + public void visitJSElement(final JSElement node) { + if (existing.isNull()) { + node.acceptChildren(this); + } + } + + @Override + public void visitJSVariable(final JSVariable node) { + if (name.equals(node.getName())) { + existing.set(node); + } + super.visitJSVariable(node); + } + + @Override + public void visitJSFunctionDeclaration(final JSFunction node) { + if (name.equals(node.getName())) { + existing.set(node); + } + super.visitJSFunctionDeclaration(node); + } + }); + + if (existing.isNull()) { + final ResolveProcessor processor = new ResolveProcessor(name); + JSResolveUtil.treeWalkUp(processor, scope, null, scope); + final PsiElement resolved = processor.getResult(); + if (resolved instanceof JSNamedElement) { + existing.set((JSNamedElement)resolved); + } + } + + if (!existing.isNull()) { + return showConflictsDialog(existing.get(), name); + } + + return true; + } + + private boolean showConflictsDialog(final JSNamedElement existing, final String name) { + final LocalizeValue message = existing instanceof JSFunction + ? JavaScriptLocalize.javascriptIntroduceVariableFunctionAlreadyExists(CommonRefactoringUtil.htmlEmphasize(name)) + : JavaScriptLocalize.javascriptIntroduceVariableVariableAlreadyExists(CommonRefactoringUtil.htmlEmphasize(name)); + final ConflictsDialog conflictsDialog = new ConflictsDialog(myProject, message.get()); + conflictsDialog.show(); + return conflictsDialog.isOK(); + } + + @Override + public boolean isReplaceAllOccurences() { + return getReplaceAllCheckBox().isSelected(); + } + + @Override + public String getVariableName() { + return getNameField().getText().trim(); + } + + @Override + public String getVariableType() { + return (String)getVarTypeField().getSelectedItem(); + } + + private boolean isValidName(final String name) { + final PsiFile containingFile = myMainOccurence.getContainingFile(); + return NamesValidator.forLanguage(containingFile.getLanguage()).isIdentifier(name, myProject); + } + + public abstract JComboBox getVarTypeField(); } \ No newline at end of file diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseIntroduceHandler.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseIntroduceHandler.java index 93f366ff..e60c5d41 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseIntroduceHandler.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseIntroduceHandler.java @@ -56,432 +56,373 @@ /** * @author ven */ -public abstract class JSBaseIntroduceHandler implements - RefactoringActionHandler -{ - protected static final Logger LOG = Logger.getInstance("#com.intellij.lang.javascript.refactoring.JSBaseIntroduceHandler"); - - protected static JSExpression findExpressionInRange(PsiFile file, int startOffset, int endOffset) - { - PsiElement element1 = file.findElementAt(startOffset); - PsiElement element2 = file.findElementAt(endOffset - 1); - if(element1 instanceof PsiWhiteSpace) - { - startOffset = element1.getTextRange().getEndOffset(); - } - if(element2 instanceof PsiWhiteSpace) - { - endOffset = element2.getTextRange().getStartOffset(); - } - - JSExpression expression = PsiTreeUtil.findElementOfClassAtRange(file, startOffset, endOffset, JSExpression.class); - int expressionEnd; - PsiElement sibling; - - if(expression == null || (expressionEnd = expression.getTextRange().getEndOffset()) != endOffset && (expressionEnd != endOffset - 1 || - (sibling = expression.getNextSibling()) == null || - sibling.getNode().getElementType() != JSTokenTypes.SEMICOLON)) - { - return null; - } - - if(expression instanceof JSReferenceExpression && expression.getParent() instanceof JSCallExpression) - { - return null; - } - /*if(file.getLanguage() == JavaScriptSupportLoader.JSON) - { - expression = null; // there is no vars in json - }*/ - return expression; - } - - protected static JSExpression unparenthesize(JSExpression expression) - { - while(expression instanceof JSParenthesizedExpression) - { - expression = ((JSParenthesizedExpression) expression).getInnerExpression(); - } - - return expression; - } - - public static JSExpression[] findExpressionOccurrences(JSElement scope, JSExpression expr) - { - List array = new ArrayList(); - addExpressionOccurrences(unparenthesize(expr), array, scope); - return array.toArray(new JSExpression[array.size()]); - } - - protected static void addExpressionOccurrences(JSExpression expr, List array, PsiElement scope) - { - PsiElement[] children = scope.getChildren(); - - for(PsiElement child : children) - { - if(child instanceof JSExpression) - { - final JSExpression childExpression = unparenthesize((JSExpression) child); - - if(childExpression != null && - PsiEquivalenceUtil.areElementsEquivalent(childExpression, expr) && - !JSResolveUtil.isSelfReference(scope, child)) - { - array.add((JSExpression) child); - continue; - } - } - if(!(child instanceof JSFunction)) - { - addExpressionOccurrences(expr, array, child); - } - } - } - - @Override - public void invoke(@Nonnull final Project project, final Editor editor, PsiFile file, DataContext dataContext) - { - if(!editor.getSelectionModel().hasSelection()) - { - editor.getSelectionModel().selectLineAtCaret(); - } - int start = editor.getSelectionModel().getSelectionStart(); - int end = editor.getSelectionModel().getSelectionEnd(); - - final JSExpression expression = findIntroducedExpression(file, start, end, editor); - if(expression == null) - { - return; - } - - if(!CommonRefactoringUtil.checkReadOnlyStatus(project, file)) - { - return; - } - - editor.getSelectionModel().removeSelection(); - JSElement scope = findIntroducedScope(expression); - LOG.assertTrue(scope != null); - final JSExpression[] occurrences = findExpressionOccurrences(scope, expression); - final S settings = getSettings(project, editor, expression, occurrences); - if(settings == null) - { - return; - } - - CommandProcessor.getInstance().executeCommand( - project, - () -> ApplicationManager.getApplication().runWriteAction( - () -> doRefactoring(project, editor, new BaseIntroduceContext<>(expression, occurrences, settings)) - ), - getRefactoringName(), - null - ); - } - - protected static final class BaseIntroduceContext - { - public final S settings; - final JSExpression[] occurences; - public final JSExpression expression; - - public BaseIntroduceContext(JSExpression _mainoccurence, final JSExpression[] _occurences, S _settings) - { - occurences = _occurences; - expression = _mainoccurence; - settings = _settings; - } - } - - protected JSElement findIntroducedScope(final JSExpression expression) - { - return PsiTreeUtil.getParentOfType(expression, JSFunction.class, JSFile.class, JSEmbeddedContentImpl.class); - } - - protected abstract String getRefactoringName(); - - protected abstract LocalizeValue getCannotIntroduceMessage(); - - @Nullable - protected JSExpression findIntroducedExpression(final PsiFile file, final int start, final int end, Editor editor) - { - final JSExpression expression = findExpressionInRange(file, start, end); - if(expression == null) - { - CommonRefactoringUtil.showErrorHint( - file.getProject(), - editor, - getCannotIntroduceMessage().get(), - getRefactoringName(), - null - ); - } - return expression; - } - - @Nullable - protected S getSettings(Project project, Editor editor, JSExpression expression, final JSExpression[] occurrences) - { - ArrayList highlighters = null; - if(occurrences.length > 1) - { - highlighters = highlightOccurences(project, editor, occurrences); - } - - final D dialog = createDialog(project, expression, occurrences); - dialog.show(); - if(highlighters != null) - { - for(RangeHighlighter highlighter : highlighters) - { - HighlightManager.getInstance(project).removeSegmentHighlighter(editor, highlighter); - } - } - - if(dialog.getExitCode() != DialogWrapper.OK_EXIT_CODE) - { - return null; - } - - return createSettings(dialog); - } - - protected S createSettings(final D dialog) - { - return (S) dialog; - } - - protected abstract D createDialog(final Project project, final JSExpression expression, final JSExpression[] occurrences); - - private void doRefactoring(final Project project, final Editor editor, BaseIntroduceContext introduceContext) - { - final S settings = introduceContext.settings; - JSExpression expression = introduceContext.expression; - final JSExpression[] occurrences = introduceContext.occurences; - - final boolean replaceAllOccurences = settings.isReplaceAllOccurences(); - @NonNls String varDeclText = getDeclText(settings); - final PsiFile containingFile = expression.getContainingFile(); - final boolean ecma = false; - if(ecma) - { - String type = settings.getVariableType(); - if(type == null) - { - type = JSResolveUtil.getExpressionType(expression, containingFile); - } - varDeclText += ":" + type; - } - - try - { - T anchorStatement = findAnchor(introduceContext, replaceAllOccurences); - JSVarStatement declaration = prepareDeclaration(varDeclText, introduceContext, project); - - LOG.assertTrue(anchorStatement != null); - - boolean replacedOriginal = false; - - if(anchorStatement == expression.getParent() && anchorStatement instanceof JSExpressionStatement) - { - declaration = (JSVarStatement) anchorStatement.replace(declaration); - editor.getCaretModel().moveToOffset(declaration.getTextRange().getEndOffset()); - replacedOriginal = true; - } - else - { - JSExpression oldExpression = expression; - final TextRange expressionTextRange = expression.getTextRange(); - final TextRange statementTextRange = anchorStatement.getTextRange(); - - RangeMarker marker = editor.getDocument().createRangeMarker(expressionTextRange); - - // Adding declaration to anchorStatement may invalidate original expression so we need to find it in new tree - final T jsStatement = addStatementBefore(anchorStatement, declaration); - - if(!expression.isValid()) - { - final T newAnchorStatement = (T) PsiTreeUtil.getNextSiblingOfType(jsStatement, anchorStatement.getClass()); - final int relativeOffset = marker.getStartOffset() - statementTextRange.getStartOffset(); - JSExpression newExpression = PsiTreeUtil.getParentOfType(newAnchorStatement.findElementAt(relativeOffset), oldExpression.getClass()); - - if(newExpression == null) - { - assert false : "Could not find " + oldExpression.getClass() + " in " + newAnchorStatement.getText() + " with offset " + marker - .getStartOffset(); - } - - while(newExpression.getTextRange().getLength() != expressionTextRange.getLength()) - { - JSExpression candidateExpression = PsiTreeUtil.getParentOfType(newExpression, oldExpression.getClass()); - if(candidateExpression == null) - { - break; - } - if(candidateExpression.getTextRange().getStartOffset() - newAnchorStatement.getTextRange().getStartOffset() != marker.getStartOffset()) - { - break; - } - newExpression = candidateExpression; - } - - for(int i = 0; i < occurrences.length; ++i) - { - if(occurrences[i] == oldExpression) - { - occurrences[i] = newExpression; - break; - } - } - - expression = newExpression; - } - } - - final JSExpression refExpr = JSChangeUtil.createExpressionFromText(project, settings.getVariableName()); - if(replaceAllOccurences) - { - List toHighight = new ArrayList<>(); - for(JSExpression occurence : occurrences) - { - if(occurence != expression || !replacedOriginal) - { - toHighight.add(occurence.replace(refExpr)); - } - else - { - toHighight.add(declaration.getVariables()[0].getInitializer()); - } - } - - highlightOccurences(project, editor, toHighight.toArray(new JSExpression[toHighight.size()])); - } - else if(!replacedOriginal) - { - expression.replace(refExpr); - } - } - catch(IncorrectOperationException e) - { - LOG.error(e); - } - } - - protected JSVarStatement prepareDeclaration(final String varDeclText, BaseIntroduceContext context, final Project project) - throws IncorrectOperationException - { - JSVarStatement declaration = (JSVarStatement) JSChangeUtil.createStatementFromText( - project, - varDeclText + " = 0" + JSChangeUtil.getSemicolon(project) - ).getPsi(); - declaration.getVariables()[0].getInitializer().replace(context.expression); - return declaration; - } - - @NonNls - protected String getDeclText(S settings) - { - return "var " + settings.getVariableName(); - } - - protected T addStatementBefore(final T anchorStatement, final JSVarStatement declaration) throws IncorrectOperationException - { - return (T) ((JSStatement) anchorStatement).addStatementBefore(declaration); - } - - protected T findAnchor(final BaseIntroduceContext context, final boolean replaceAllOccurences) - { - JSStatement anchorStatement = replaceAllOccurences ? getAnchorToInsert(context.occurences) : PsiTreeUtil.getParentOfType(context.expression, - JSStatement.class); - if(anchorStatement instanceof JSVarStatement && - anchorStatement.getParent() instanceof JSStatement && - !(anchorStatement.getParent() instanceof JSBlockStatement)) - { - anchorStatement = (JSStatement) anchorStatement.getParent(); - } - return (T) anchorStatement; - } - - private static ArrayList highlightOccurences(Project project, Editor editor, JSExpression[] occurences) - { - HighlightManager highlightManager = HighlightManager.getInstance(project); - EditorColorsManager colorsManager = EditorColorsManager.getInstance(); - TextAttributes attributes = colorsManager.getGlobalScheme().getAttributes(EditorColors.SEARCH_RESULT_ATTRIBUTES); - ArrayList result = new ArrayList<>(); - highlightManager.addOccurrenceHighlights(editor, occurences, attributes, true, result); - WindowManager.getInstance().getStatusBar(project).setInfo(RefactoringLocalize.pressEscapeToRemoveTheHighlighting().get()); - return result; - } - - private static JSStatement getAnchorToInsert(final JSExpression[] expressions) - { - JSElement place = expressions[0]; - next: - do - { - JSStatement statement = PsiTreeUtil.getParentOfType(place, JSStatement.class); //this is the first expression textually - LOG.assertTrue(statement != null); - - final PsiElement parent = statement.getParent(); - for(JSExpression expression : expressions) - { - if(!PsiTreeUtil.isAncestor(parent, expression, true)) - { - place = statement; - continue next; - } - } - - return statement; - } - while(true); - } - - protected static JSElement findClassAnchor(final PsiElement expression) - { - PsiElement nearestParent = PsiTreeUtil.getParentOfType(expression, JSVarStatement.class, JSFunction.class); - while(nearestParent != null) - { - final PsiElement nextParent = PsiTreeUtil.getParentOfType(nearestParent, JSVarStatement.class, JSFunction.class); - if(nextParent == null) - { - break; - } - nearestParent = nextParent; - } - - if(nearestParent != null) - { - return (JSElement) nearestParent; - } - - JSElement parent = PsiTreeUtil.getParentOfType(expression, JSFile.class, JSClass.class); - - if (parent instanceof JSFile) - { - final PsiElement classRef = JSResolveUtil.getClassReferenceForXmlFromContext(parent); - if (classRef instanceof JSClass jsClass) - { - parent = jsClass; - } - } - - return parent; - } - - protected static JSElement addToClassAnchor(final JSElement anchorStatement, final JSVarStatement declaration) throws IncorrectOperationException - { - if(!(anchorStatement instanceof JSClass)) - { - final JSElement element = findClassAnchor(anchorStatement); - return (JSElement) element.addBefore(declaration, anchorStatement); - } - return (JSElement) anchorStatement.add(declaration); - } - - @Override - public void invoke(@Nonnull Project project, @Nonnull PsiElement[] elements, DataContext dataContext) - { - throw new RuntimeException("Not implemented"); - } +public abstract class JSBaseIntroduceHandler + implements RefactoringActionHandler { + + protected static final Logger LOG = Logger.getInstance("#com.intellij.lang.javascript.refactoring.JSBaseIntroduceHandler"); + + protected static JSExpression findExpressionInRange(PsiFile file, int startOffset, int endOffset) { + PsiElement element1 = file.findElementAt(startOffset); + PsiElement element2 = file.findElementAt(endOffset - 1); + if (element1 instanceof PsiWhiteSpace) { + startOffset = element1.getTextRange().getEndOffset(); + } + if (element2 instanceof PsiWhiteSpace) { + endOffset = element2.getTextRange().getStartOffset(); + } + + JSExpression expression = PsiTreeUtil.findElementOfClassAtRange(file, startOffset, endOffset, JSExpression.class); + int expressionEnd; + PsiElement sibling; + + if (expression == null || (expressionEnd = + expression.getTextRange().getEndOffset()) != endOffset && (expressionEnd != endOffset - 1 || + (sibling = expression.getNextSibling()) == null || + sibling.getNode().getElementType() != JSTokenTypes.SEMICOLON)) { + return null; + } + + if (expression instanceof JSReferenceExpression && expression.getParent() instanceof JSCallExpression) { + return null; + } + /*if (file.getLanguage() == JavaScriptSupportLoader.JSON) { + expression = null; // there is no vars in json + }*/ + return expression; + } + + protected static JSExpression unparenthesize(JSExpression expression) { + while (expression instanceof JSParenthesizedExpression) { + expression = ((JSParenthesizedExpression)expression).getInnerExpression(); + } + + return expression; + } + + public static JSExpression[] findExpressionOccurrences(JSElement scope, JSExpression expr) { + List array = new ArrayList(); + addExpressionOccurrences(unparenthesize(expr), array, scope); + return array.toArray(new JSExpression[array.size()]); + } + + protected static void addExpressionOccurrences(JSExpression expr, List array, PsiElement scope) { + PsiElement[] children = scope.getChildren(); + + for (PsiElement child : children) { + if (child instanceof JSExpression) { + final JSExpression childExpression = unparenthesize((JSExpression)child); + + if (childExpression != null + && PsiEquivalenceUtil.areElementsEquivalent(childExpression, expr) + && !JSResolveUtil.isSelfReference(scope, child)) { + array.add((JSExpression)child); + continue; + } + } + + if (!(child instanceof JSFunction)) { + addExpressionOccurrences(expr, array, child); + } + } + } + + @Override + public void invoke(@Nonnull final Project project, final Editor editor, PsiFile file, DataContext dataContext) { + if (!editor.getSelectionModel().hasSelection()) { + editor.getSelectionModel().selectLineAtCaret(); + } + int start = editor.getSelectionModel().getSelectionStart(); + int end = editor.getSelectionModel().getSelectionEnd(); + + final JSExpression expression = findIntroducedExpression(file, start, end, editor); + if (expression == null) { + return; + } + + if (!CommonRefactoringUtil.checkReadOnlyStatus(project, file)) { + return; + } + + editor.getSelectionModel().removeSelection(); + JSElement scope = findIntroducedScope(expression); + LOG.assertTrue(scope != null); + final JSExpression[] occurrences = findExpressionOccurrences(scope, expression); + final S settings = getSettings(project, editor, expression, occurrences); + if (settings == null) { + return; + } + + CommandProcessor.getInstance().executeCommand( + project, + () -> ApplicationManager.getApplication().runWriteAction( + () -> doRefactoring(project, editor, new BaseIntroduceContext<>(expression, occurrences, settings)) + ), + getRefactoringName(), + null + ); + } + + protected static final class BaseIntroduceContext { + public final S settings; + final JSExpression[] occurences; + public final JSExpression expression; + + public BaseIntroduceContext(JSExpression _mainoccurence, final JSExpression[] _occurences, S _settings) { + occurences = _occurences; + expression = _mainoccurence; + settings = _settings; + } + } + + protected JSElement findIntroducedScope(final JSExpression expression) { + return PsiTreeUtil.getParentOfType(expression, JSFunction.class, JSFile.class, JSEmbeddedContentImpl.class); + } + + protected abstract String getRefactoringName(); + + protected abstract LocalizeValue getCannotIntroduceMessage(); + + @Nullable + protected JSExpression findIntroducedExpression(final PsiFile file, final int start, final int end, Editor editor) { + final JSExpression expression = findExpressionInRange(file, start, end); + if (expression == null) { + CommonRefactoringUtil.showErrorHint( + file.getProject(), + editor, + getCannotIntroduceMessage().get(), + getRefactoringName(), + null + ); + } + return expression; + } + + @Nullable + protected S getSettings(Project project, Editor editor, JSExpression expression, final JSExpression[] occurrences) { + ArrayList highlighters = null; + if (occurrences.length > 1) { + highlighters = highlightOccurences(project, editor, occurrences); + } + + final D dialog = createDialog(project, expression, occurrences); + dialog.show(); + if (highlighters != null) { + for (RangeHighlighter highlighter : highlighters) { + HighlightManager.getInstance(project).removeSegmentHighlighter(editor, highlighter); + } + } + + if (dialog.getExitCode() != DialogWrapper.OK_EXIT_CODE) { + return null; + } + + return createSettings(dialog); + } + + protected S createSettings(final D dialog) { + return (S)dialog; + } + + protected abstract D createDialog(final Project project, final JSExpression expression, final JSExpression[] occurrences); + + private void doRefactoring(final Project project, final Editor editor, BaseIntroduceContext introduceContext) { + final S settings = introduceContext.settings; + JSExpression expression = introduceContext.expression; + final JSExpression[] occurrences = introduceContext.occurences; + + final boolean replaceAllOccurences = settings.isReplaceAllOccurences(); + @NonNls String varDeclText = getDeclText(settings); + final PsiFile containingFile = expression.getContainingFile(); + final boolean ecma = false; + if (ecma) { + String type = settings.getVariableType(); + if (type == null) { + type = JSResolveUtil.getExpressionType(expression, containingFile); + } + varDeclText += ":" + type; + } + + try { + T anchorStatement = findAnchor(introduceContext, replaceAllOccurences); + JSVarStatement declaration = prepareDeclaration(varDeclText, introduceContext, project); + + LOG.assertTrue(anchorStatement != null); + + boolean replacedOriginal = false; + + if (anchorStatement == expression.getParent() && anchorStatement instanceof JSExpressionStatement) { + declaration = (JSVarStatement)anchorStatement.replace(declaration); + editor.getCaretModel().moveToOffset(declaration.getTextRange().getEndOffset()); + replacedOriginal = true; + } + else { + JSExpression oldExpression = expression; + final TextRange expressionTextRange = expression.getTextRange(); + final TextRange statementTextRange = anchorStatement.getTextRange(); + + RangeMarker marker = editor.getDocument().createRangeMarker(expressionTextRange); + + // Adding declaration to anchorStatement may invalidate original expression so we need to find it in new tree + final T jsStatement = addStatementBefore(anchorStatement, declaration); + + if (!expression.isValid()) { + final T newAnchorStatement = (T)PsiTreeUtil.getNextSiblingOfType(jsStatement, anchorStatement.getClass()); + final int relativeOffset = marker.getStartOffset() - statementTextRange.getStartOffset(); + JSExpression newExpression = + PsiTreeUtil.getParentOfType(newAnchorStatement.findElementAt(relativeOffset), oldExpression.getClass()); + + if (newExpression == null) { + assert false : "Could not find " + oldExpression.getClass() + " in " + newAnchorStatement.getText() + " with offset " + marker + .getStartOffset(); + } + + while (newExpression.getTextRange().getLength() != expressionTextRange.getLength()) { + JSExpression candidateExpression = PsiTreeUtil.getParentOfType(newExpression, oldExpression.getClass()); + if (candidateExpression == null) { + break; + } + if (candidateExpression.getTextRange().getStartOffset() - newAnchorStatement.getTextRange() + .getStartOffset() != marker.getStartOffset()) { + break; + } + newExpression = candidateExpression; + } + + for (int i = 0; i < occurrences.length; ++i) { + if (occurrences[i] == oldExpression) { + occurrences[i] = newExpression; + break; + } + } + + expression = newExpression; + } + } + + final JSExpression refExpr = JSChangeUtil.createExpressionFromText(project, settings.getVariableName()); + if (replaceAllOccurences) { + List toHighight = new ArrayList<>(); + for (JSExpression occurence : occurrences) { + if (occurence != expression || !replacedOriginal) { + toHighight.add(occurence.replace(refExpr)); + } + else { + toHighight.add(declaration.getVariables()[0].getInitializer()); + } + } + + highlightOccurences(project, editor, toHighight.toArray(new JSExpression[toHighight.size()])); + } + else if (!replacedOriginal) { + expression.replace(refExpr); + } + } + catch (IncorrectOperationException e) { + LOG.error(e); + } + } + + protected JSVarStatement prepareDeclaration(final String varDeclText, BaseIntroduceContext context, final Project project) + throws IncorrectOperationException { + JSVarStatement declaration = (JSVarStatement)JSChangeUtil.createStatementFromText( + project, + varDeclText + " = 0" + JSChangeUtil.getSemicolon(project) + ).getPsi(); + declaration.getVariables()[0].getInitializer().replace(context.expression); + return declaration; + } + + @NonNls + protected String getDeclText(S settings) { + return "var " + settings.getVariableName(); + } + + protected T addStatementBefore(final T anchorStatement, final JSVarStatement declaration) throws IncorrectOperationException { + return (T)((JSStatement)anchorStatement).addStatementBefore(declaration); + } + + protected T findAnchor(final BaseIntroduceContext context, final boolean replaceAllOccurences) { + JSStatement anchorStatement = replaceAllOccurences ? getAnchorToInsert(context.occurences) : PsiTreeUtil.getParentOfType( + context.expression, + JSStatement.class + ); + if (anchorStatement instanceof JSVarStatement && + anchorStatement.getParent() instanceof JSStatement && + !(anchorStatement.getParent() instanceof JSBlockStatement)) { + anchorStatement = (JSStatement)anchorStatement.getParent(); + } + return (T)anchorStatement; + } + + private static ArrayList highlightOccurences(Project project, Editor editor, JSExpression[] occurences) { + HighlightManager highlightManager = HighlightManager.getInstance(project); + EditorColorsManager colorsManager = EditorColorsManager.getInstance(); + TextAttributes attributes = colorsManager.getGlobalScheme().getAttributes(EditorColors.SEARCH_RESULT_ATTRIBUTES); + ArrayList result = new ArrayList<>(); + highlightManager.addOccurrenceHighlights(editor, occurences, attributes, true, result); + WindowManager.getInstance().getStatusBar(project).setInfo(RefactoringLocalize.pressEscapeToRemoveTheHighlighting().get()); + return result; + } + + private static JSStatement getAnchorToInsert(final JSExpression[] expressions) { + JSElement place = expressions[0]; + next: + do { + JSStatement statement = PsiTreeUtil.getParentOfType(place, JSStatement.class); //this is the first expression textually + LOG.assertTrue(statement != null); + + final PsiElement parent = statement.getParent(); + for (JSExpression expression : expressions) { + if (!PsiTreeUtil.isAncestor(parent, expression, true)) { + place = statement; + continue next; + } + } + + return statement; + } + while (true); + } + + protected static JSElement findClassAnchor(final PsiElement expression) { + PsiElement nearestParent = PsiTreeUtil.getParentOfType(expression, JSVarStatement.class, JSFunction.class); + while (nearestParent != null) { + final PsiElement nextParent = PsiTreeUtil.getParentOfType(nearestParent, JSVarStatement.class, JSFunction.class); + if (nextParent == null) { + break; + } + nearestParent = nextParent; + } + + if (nearestParent != null) { + return (JSElement)nearestParent; + } + + JSElement parent = PsiTreeUtil.getParentOfType(expression, JSFile.class, JSClass.class); + + if (parent instanceof JSFile) { + final PsiElement classRef = JSResolveUtil.getClassReferenceForXmlFromContext(parent); + if (classRef instanceof JSClass jsClass) { + parent = jsClass; + } + } + + return parent; + } + + protected static JSElement addToClassAnchor( + final JSElement anchorStatement, + final JSVarStatement declaration + ) throws IncorrectOperationException { + if (!(anchorStatement instanceof JSClass)) { + final JSElement element = findClassAnchor(anchorStatement); + return (JSElement)element.addBefore(declaration, anchorStatement); + } + return (JSElement)anchorStatement.add(declaration); + } + + @Override + public void invoke(@Nonnull Project project, @Nonnull PsiElement[] elements, DataContext dataContext) { + throw new RuntimeException("Not implemented"); + } } \ No newline at end of file diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSNamesValidator.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSNamesValidator.java index c11d846e..86d9beb1 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSNamesValidator.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSNamesValidator.java @@ -30,31 +30,26 @@ * Time: 8:28:35 PM * To change this template use File | Settings | File Templates. */ -abstract class JSNamesValidator implements NamesValidator -{ - protected final Lexer myLexer; +abstract class JSNamesValidator implements NamesValidator { + protected final Lexer myLexer; - JSNamesValidator(DialectOptionHolder optionHolder) - { - myLexer = createLexer(optionHolder); - } + JSNamesValidator(DialectOptionHolder optionHolder) { + myLexer = createLexer(optionHolder); + } - protected Lexer createLexer(final DialectOptionHolder optionHolder) - { - return new JSFlexAdapter(false, optionHolder); - } + protected Lexer createLexer(final DialectOptionHolder optionHolder) { + return new JSFlexAdapter(false, optionHolder); + } - @Override - public synchronized boolean isKeyword(String name, Project project) - { - myLexer.start(name, 0, name.length(), 0); - return JSTokenTypes.KEYWORDS.contains(myLexer.getTokenType()) && myLexer.getTokenEnd() == name.length(); - } + @Override + public synchronized boolean isKeyword(String name, Project project) { + myLexer.start(name, 0, name.length(), 0); + return JSTokenTypes.KEYWORDS.contains(myLexer.getTokenType()) && myLexer.getTokenEnd() == name.length(); + } - @Override - public synchronized boolean isIdentifier(String name, Project project) - { - myLexer.start(name, 0, name.length(), 0); - return JSTokenTypes.IDENTIFIER_TOKENS_SET.contains(myLexer.getTokenType()) && myLexer.getTokenEnd() == name.length(); - } + @Override + public synchronized boolean isIdentifier(String name, Project project) { + myLexer.start(name, 0, name.length(), 0); + return JSTokenTypes.IDENTIFIER_TOKENS_SET.contains(myLexer.getTokenType()) && myLexer.getTokenEnd() == name.length(); + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JavascriptRefactoringSupportProvider.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JavascriptRefactoringSupportProvider.java index 0f153d79..ba1980db 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JavascriptRefactoringSupportProvider.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JavascriptRefactoringSupportProvider.java @@ -35,53 +35,48 @@ import jakarta.annotation.Nullable; @ExtensionImpl -public class JavascriptRefactoringSupportProvider extends RefactoringSupportProvider -{ - @Override - public boolean isSafeDeleteAvailable(PsiElement element) - { - boolean simpleElement = element instanceof JSFunction || element instanceof JSVariable || element instanceof JSDefinitionExpression || - element instanceof JSProperty || element instanceof JSClass; +public class JavascriptRefactoringSupportProvider extends RefactoringSupportProvider { + @Override + public boolean isSafeDeleteAvailable(PsiElement element) { + boolean simpleElement = element instanceof JSFunction + || element instanceof JSVariable + || element instanceof JSDefinitionExpression + || element instanceof JSProperty + || element instanceof JSClass; - return simpleElement && ((JSNamedElement) element).getName() != null; - } + return simpleElement && ((JSNamedElement)element).getName() != null; + } - @Override - @Nullable - public RefactoringActionHandler getIntroduceVariableHandler() - { - return new JSIntroduceVariableHandler(); - } + @Override + @Nullable + public RefactoringActionHandler getIntroduceVariableHandler() { + return new JSIntroduceVariableHandler(); + } - @Override - @Nullable - public RefactoringActionHandler getExtractMethodHandler() - { - return new JSExtractFunctionHandler(); - } + @Override + @Nullable + public RefactoringActionHandler getExtractMethodHandler() { + return new JSExtractFunctionHandler(); + } - @Override - public RefactoringActionHandler getIntroduceConstantHandler() - { - return new JSIntroduceConstantHandler(); - } + @Override + public RefactoringActionHandler getIntroduceConstantHandler() { + return new JSIntroduceConstantHandler(); + } - @Override - public RefactoringActionHandler getIntroduceFieldHandler() - { - return new JSIntroduceFieldHandler(); - } + @Override + public RefactoringActionHandler getIntroduceFieldHandler() { + return new JSIntroduceFieldHandler(); + } - @Override - public boolean isInplaceRenameAvailable(PsiElement element, PsiElement context) - { - return element instanceof JSNamedElement && element.getUseScope() instanceof LocalSearchScope; - } + @Override + public boolean isInplaceRenameAvailable(PsiElement element, PsiElement context) { + return element instanceof JSNamedElement && element.getUseScope() instanceof LocalSearchScope; + } - @Nonnull - @Override - public Language getLanguage() - { - return JavaScriptLanguage.INSTANCE; - } + @Nonnull + @Override + public Language getLanguage() { + return JavaScriptLanguage.INSTANCE; + } } \ No newline at end of file diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/extractMethod/JSExtractFunctionDialog.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/extractMethod/JSExtractFunctionDialog.java index 0999ea77..c69295ec 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/extractMethod/JSExtractFunctionDialog.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/extractMethod/JSExtractFunctionDialog.java @@ -23,31 +23,27 @@ /** * @author Maxim.Mossienko - * Date: Aug 9, 2008 - * Time: 9:22:10 AM + * Date: Aug 9, 2008 + * Time: 9:22:10 AM */ -public class JSExtractFunctionDialog extends DialogWrapper implements JSExtractFunctionSettings -{ - private JPanel myPanel; - private JTextField myFunctionName; - - JSExtractFunctionDialog() - { - super(false); - - setTitle(JavaScriptLocalize.javascriptExtractMethodTitle()); - init(); - } - - @Override - protected JComponent createCenterPanel() - { - return myPanel; - } - - @Override - public String getMethodName() - { - return myFunctionName.getText(); - } +public class JSExtractFunctionDialog extends DialogWrapper implements JSExtractFunctionSettings { + private JPanel myPanel; + private JTextField myFunctionName; + + JSExtractFunctionDialog() { + super(false); + + setTitle(JavaScriptLocalize.javascriptExtractMethodTitle()); + init(); + } + + @Override + protected JComponent createCenterPanel() { + return myPanel; + } + + @Override + public String getMethodName() { + return myFunctionName.getText(); + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/extractMethod/JSExtractFunctionHandler.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/extractMethod/JSExtractFunctionHandler.java index 2bd40121..15089216 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/extractMethod/JSExtractFunctionHandler.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/extractMethod/JSExtractFunctionHandler.java @@ -31,58 +31,49 @@ /** * @author Maxim.Mossienko - * Date: May 29, 2008 - * Time: 8:19:48 PM + * Date: May 29, 2008 + * Time: 8:19:48 PM */ -public class JSExtractFunctionHandler implements RefactoringActionHandler -{ - @Override - public void invoke(@Nonnull final Project project, final Editor editor, PsiFile file, DataContext dataContext) - { - if(!editor.getSelectionModel().hasSelection()) - { - editor.getSelectionModel().selectLineAtCaret(); - } - int start = editor.getSelectionModel().getSelectionStart(); - int end = editor.getSelectionModel().getSelectionEnd(); +public class JSExtractFunctionHandler implements RefactoringActionHandler { + @Override + public void invoke(@Nonnull final Project project, final Editor editor, PsiFile file, DataContext dataContext) { + if (!editor.getSelectionModel().hasSelection()) { + editor.getSelectionModel().selectLineAtCaret(); + } + int start = editor.getSelectionModel().getSelectionStart(); + int end = editor.getSelectionModel().getSelectionEnd(); - if(!CommonRefactoringUtil.checkReadOnlyStatus(project, file)) - { - return; - } + if (!CommonRefactoringUtil.checkReadOnlyStatus(project, file)) { + return; + } - final JSExtractFunctionSettings settings = getSettings(project, editor); - if(settings == null) - { - return; - } + final JSExtractFunctionSettings settings = getSettings(project, editor); + if (settings == null) { + return; + } - CommandProcessor.getInstance().executeCommand( - project, - () -> project.getApplication().runWriteAction(() -> doRefactoring(project, editor, settings)), - JavaScriptLocalize.javascriptExtractMethodTitle().get(), - null - ); - } + CommandProcessor.getInstance().executeCommand( + project, + () -> project.getApplication().runWriteAction(() -> doRefactoring(project, editor, settings)), + JavaScriptLocalize.javascriptExtractMethodTitle().get(), + null + ); + } - protected JSExtractFunctionSettings getSettings(final Project project, final Editor editor) - { - final JSExtractFunctionDialog dialog = new JSExtractFunctionDialog(); - dialog.show(); - if(dialog.getExitCode() != DialogWrapper.OK_EXIT_CODE) - { - return null; - } - return dialog; - } + protected JSExtractFunctionSettings getSettings(final Project project, final Editor editor) { + final JSExtractFunctionDialog dialog = new JSExtractFunctionDialog(); + dialog.show(); + if (dialog.getExitCode() != DialogWrapper.OK_EXIT_CODE) { + return null; + } + return dialog; + } - private void doRefactoring(final Project project, final Editor editor, final JSExtractFunctionSettings settings) - { - } + private void doRefactoring(final Project project, final Editor editor, final JSExtractFunctionSettings settings) { + } - @Override - public void invoke(@Nonnull final Project project, @Nonnull final PsiElement[] elements, final DataContext dataContext) - { - throw new UnsupportedOperationException(); - } + @Override + public void invoke(@Nonnull final Project project, @Nonnull final PsiElement[] elements, final DataContext dataContext) { + throw new UnsupportedOperationException(); + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/extractMethod/JSExtractFunctionSettings.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/extractMethod/JSExtractFunctionSettings.java index 510cc659..65d507ff 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/extractMethod/JSExtractFunctionSettings.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/extractMethod/JSExtractFunctionSettings.java @@ -19,7 +19,6 @@ /** * @author ven */ -public interface JSExtractFunctionSettings -{ - String getMethodName(); +public interface JSExtractFunctionSettings { + String getMethodName(); } \ No newline at end of file diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceConstant/JSIntroduceConstantDialog.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceConstant/JSIntroduceConstantDialog.java index 099ebf16..1d560f59 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceConstant/JSIntroduceConstantDialog.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceConstant/JSIntroduceConstantDialog.java @@ -25,78 +25,67 @@ /** * @author Maxim.Mossienko - * Date: Jul 24, 2008 - * Time: 8:48:34 PM + * Date: Jul 24, 2008 + * Time: 8:48:34 PM */ -class JSIntroduceConstantDialog extends JSBaseClassBasedIntroduceDialog implements JSIntroduceConstantSettings -{ - private JTextField myNameField; - private JCheckBox myReplaceAllCheckBox; - private JPanel myPanel; - private JRadioButton myPrivate; - private JRadioButton myProtected; - private JRadioButton myPackageLocal; - private JRadioButton myPublic; - private JComboBox myVarType; +class JSIntroduceConstantDialog extends JSBaseClassBasedIntroduceDialog implements JSIntroduceConstantSettings { + private JTextField myNameField; + private JCheckBox myReplaceAllCheckBox; + private JPanel myPanel; + private JRadioButton myPrivate; + private JRadioButton myProtected; + private JRadioButton myPackageLocal; + private JRadioButton myPublic; + private JComboBox myVarType; - protected JSIntroduceConstantDialog(final Project project, final JSExpression[] occurences, final JSExpression mainOccurence) - { - super(project, occurences, mainOccurence, JavaScriptLocalize.javascriptIntroduceConstantTitle()); + protected JSIntroduceConstantDialog(final Project project, final JSExpression[] occurences, final JSExpression mainOccurence) { + super(project, occurences, mainOccurence, JavaScriptLocalize.javascriptIntroduceConstantTitle()); - doInit(); - } + doInit(); + } - @Override - protected JRadioButton getPrivateRadioButton() - { - return myPrivate; - } + @Override + protected JRadioButton getPrivateRadioButton() { + return myPrivate; + } - @Override - protected JRadioButton getPublicRadioButton() - { - return myPublic; - } + @Override + protected JRadioButton getPublicRadioButton() { + return myPublic; + } - @Override - protected JRadioButton getProtectedRadioButton() - { - return myProtected; - } + @Override + protected JRadioButton getProtectedRadioButton() { + return myProtected; + } - @Override - protected JRadioButton getPackageLocalRadioButton() - { - return myPackageLocal; - } + @Override + protected JRadioButton getPackageLocalRadioButton() { + return myPackageLocal; + } - @Override - protected JTextField getNameField() - { - return myNameField; - } + @Override + protected JTextField getNameField() { + return myNameField; + } - @Override - protected JPanel getPanel() - { - return myPanel; - } + @Override + protected JPanel getPanel() { + return myPanel; + } - @Override - protected JCheckBox getReplaceAllCheckBox() - { - return myReplaceAllCheckBox; - } + @Override + protected JCheckBox getReplaceAllCheckBox() { + return myReplaceAllCheckBox; + } - @Override - public JComboBox getVarTypeField() - { - return myVarType; - } + @Override + public JComboBox getVarTypeField() { + return myVarType; + } - @Override - protected String suggestCandidateName(final JSExpression mainOccurence) - { - return super.suggestCandidateName(mainOccurence).toUpperCase(); - } + @Override + protected String suggestCandidateName(final JSExpression mainOccurence) { + return super.suggestCandidateName(mainOccurence).toUpperCase(); + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceConstant/JSIntroduceConstantHandler.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceConstant/JSIntroduceConstantHandler.java index 6f88c1a2..fb6a6e44 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceConstant/JSIntroduceConstantHandler.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceConstant/JSIntroduceConstantHandler.java @@ -32,119 +32,107 @@ /** * @author Maxim.Mossienko - * Date: May 29, 2008 - * Time: 8:20:03 PM + * Date: May 29, 2008 + * Time: 8:20:03 PM */ -public class JSIntroduceConstantHandler extends JSBaseIntroduceHandler -{ - @Override - protected String getRefactoringName() - { - return JavaScriptLocalize.javascriptIntroduceConstantTitle().get(); - } +public class JSIntroduceConstantHandler extends JSBaseIntroduceHandler { + @Override + protected String getRefactoringName() { + return JavaScriptLocalize.javascriptIntroduceConstantTitle().get(); + } - @Override - protected LocalizeValue getCannotIntroduceMessage() - { - return JavaScriptLocalize.javascriptIntroduceConstantErrorNoExpressionSelected(); - } + @Override + protected LocalizeValue getCannotIntroduceMessage() { + return JavaScriptLocalize.javascriptIntroduceConstantErrorNoExpressionSelected(); + } - @Override - protected JSIntroduceConstantDialog createDialog(final Project project, final JSExpression expression, final JSExpression[] occurrences) - { - return new JSIntroduceConstantDialog(project, occurrences, expression); - } + @Override + protected JSIntroduceConstantDialog createDialog( + final Project project, + final JSExpression expression, + final JSExpression[] occurrences + ) { + return new JSIntroduceConstantDialog(project, occurrences, expression); + } - @Override - protected String getDeclText(final JSIntroduceConstantSettings settings) - { - @NonNls String baseDeclText = "static const " + settings.getVariableName(); - final JSAttributeList.AccessType type = settings.getAccessType(); - if (type != JSAttributeList.AccessType.PACKAGE_LOCAL) - { - baseDeclText = type.toString().toLowerCase() + " " + baseDeclText; - } + @Override + protected String getDeclText(final JSIntroduceConstantSettings settings) { + @NonNls String baseDeclText = "static const " + settings.getVariableName(); + final JSAttributeList.AccessType type = settings.getAccessType(); + if (type != JSAttributeList.AccessType.PACKAGE_LOCAL) { + baseDeclText = type.toString().toLowerCase() + " " + baseDeclText; + } - return baseDeclText; - } + return baseDeclText; + } - @Override - protected JSElement findAnchor(final BaseIntroduceContext context, final boolean replaceAllOccurences) - { - return findClassAnchor(context.expression); - } + @Override + protected JSElement findAnchor(final BaseIntroduceContext context, final boolean replaceAllOccurences) { + return findClassAnchor(context.expression); + } - @Override - protected JSElement addStatementBefore(final JSElement anchorStatement, final JSVarStatement declaration) throws IncorrectOperationException - { - return addToClassAnchor(anchorStatement, declaration); - } + @Override + protected JSElement addStatementBefore( + final JSElement anchorStatement, + final JSVarStatement declaration + ) throws IncorrectOperationException { + return addToClassAnchor(anchorStatement, declaration); + } - @Override - protected JSExpression findIntroducedExpression(final PsiFile file, final int start, final int end, Editor editor) - { - if (file.getLanguage() != JavaScriptSupportLoader.ECMA_SCRIPT_L4) - { - CommonRefactoringUtil.showErrorHint( - file.getProject(), - editor, - JavaScriptLocalize.javascriptIntroduceConstantErrorNotAvailableInJavascriptCode().get(), - getRefactoringName(), - null - ); - return null; - } + @Override + protected JSExpression findIntroducedExpression(final PsiFile file, final int start, final int end, Editor editor) { + if (file.getLanguage() != JavaScriptSupportLoader.ECMA_SCRIPT_L4) { + CommonRefactoringUtil.showErrorHint( + file.getProject(), + editor, + JavaScriptLocalize.javascriptIntroduceConstantErrorNotAvailableInJavascriptCode().get(), + getRefactoringName(), + null + ); + return null; + } - final JSExpression expression = super.findIntroducedExpression(file, start, end, editor); - if(expression == null) - { - return null; - } + final JSExpression expression = super.findIntroducedExpression(file, start, end, editor); + if (expression == null) { + return null; + } - final Ref hasAccesibilityProblem = new Ref(); - expression.accept(new JSElementVisitor() - { - @Override - public void visitJSReferenceExpression(final JSReferenceExpression node) - { - if(node.getQualifier() == null) - { - final PsiElement element = node.resolve(); + final Ref hasAccesibilityProblem = new Ref(); + expression.accept(new JSElementVisitor() { + @Override + public void visitJSReferenceExpression(final JSReferenceExpression node) { + if (node.getQualifier() == null) { + final PsiElement element = node.resolve(); - if(element instanceof JSAttributeListOwner && !(element instanceof JSClass)) - { - final JSAttributeList attributeList = ((JSAttributeListOwner) element).getAttributeList(); - if(attributeList == null || !attributeList.hasModifier(JSAttributeList.ModifierType.STATIC)) - { - hasAccesibilityProblem.set(Boolean.TRUE); - } - } - else if(element == null) - { - hasAccesibilityProblem.set(Boolean.TRUE); - } - } - super.visitJSReferenceExpression(node); - } + if (element instanceof JSAttributeListOwner && !(element instanceof JSClass)) { + final JSAttributeList attributeList = ((JSAttributeListOwner)element).getAttributeList(); + if (attributeList == null || !attributeList.hasModifier(JSAttributeList.ModifierType.STATIC)) { + hasAccesibilityProblem.set(Boolean.TRUE); + } + } + else if (element == null) { + hasAccesibilityProblem.set(Boolean.TRUE); + } + } + super.visitJSReferenceExpression(node); + } - @Override - public void visitJSElement(final JSElement node) - { - node.acceptChildren(this); - } - }); + @Override + public void visitJSElement(final JSElement node) { + node.acceptChildren(this); + } + }); - if(Boolean.TRUE.equals(hasAccesibilityProblem.get())) - { - CommonRefactoringUtil.showErrorHint( - file.getProject(), - editor, - JavaScriptLocalize.javascriptIntroduceConstantErrorNotConstantExpressionSelected().get(), - getRefactoringName(), - null - ); - return null; - } - return expression; - } + if (Boolean.TRUE.equals(hasAccesibilityProblem.get())) { + CommonRefactoringUtil.showErrorHint( + file.getProject(), + editor, + JavaScriptLocalize.javascriptIntroduceConstantErrorNotConstantExpressionSelected().get(), + getRefactoringName(), + null + ); + return null; + } + return expression; + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceConstant/JSIntroduceConstantSettings.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceConstant/JSIntroduceConstantSettings.java index 90e29353..90fbf723 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceConstant/JSIntroduceConstantSettings.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceConstant/JSIntroduceConstantSettings.java @@ -22,7 +22,6 @@ /** * @author ven */ -public interface JSIntroduceConstantSettings extends BaseIntroduceSettings -{ - JSAttributeList.AccessType getAccessType(); +public interface JSIntroduceConstantSettings extends BaseIntroduceSettings { + JSAttributeList.AccessType getAccessType(); } \ No newline at end of file diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceField/JSIntroduceFieldDialog.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceField/JSIntroduceFieldDialog.java index 0c1004f8..22f7cefd 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceField/JSIntroduceFieldDialog.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceField/JSIntroduceFieldDialog.java @@ -31,168 +31,138 @@ /** * @author Maxim.Mossienko - * Date: Jul 24, 2008 - * Time: 8:46:13 PM + * Date: Jul 24, 2008 + * Time: 8:46:13 PM */ -class JSIntroduceFieldDialog extends JSBaseClassBasedIntroduceDialog implements JSIntroduceFieldSettings -{ - private JCheckBox myReplaceAllCheckBox; - private JTextField myNameField; - private JPanel myPanel; - private JRadioButton myPublic; - private JRadioButton myPackageLocal; - private JRadioButton myProtected; - private JRadioButton myPrivate; - private JComboBox myVarType; - - private JRadioButton myFieldDeclaration; - private JRadioButton myCurrentMethod; - private JRadioButton myConstructor; - - private static InitializationPlace lastInitializationPlace = InitializationPlace.FieldDeclaration; - - public JSIntroduceFieldDialog(final Project project, final JSExpression[] occurrences, final JSExpression expression) - { - super(project, occurrences, expression, JavaScriptLocalize.javascriptIntroduceFieldTitle()); - doInit(); - } - - @Override - protected void doInit() - { - super.doInit(); - - final Ref localContextDependent = new Ref(); - myMainOccurence.accept(new JSElementVisitor() - { - @Override - public void visitJSReferenceExpression(final JSReferenceExpression node) - { - if(node.getQualifier() == null) - { - final ResolveResult[] results = node.multiResolve(true); - if(results.length == 0) - { - localContextDependent.set(Boolean.TRUE); - } - else - { - final PsiElement element = results[0].getElement(); - if(element instanceof JSVariable && !(element.getParent().getParent() instanceof JSClass)) - { - localContextDependent.set(Boolean.TRUE); - } - } - } - super.visitJSReferenceExpression(node); - } - - @Override - public void visitJSElement(final JSElement node) - { - node.acceptChildren(this); - } - }); - - if(Boolean.TRUE.equals(localContextDependent.get())) - { - myConstructor.setEnabled(false); - myFieldDeclaration.setEnabled(false); - myCurrentMethod.setSelected(true); - } - else - { - if(lastInitializationPlace == InitializationPlace.Constructor) - { - myConstructor.setSelected(true); - } - else if(lastInitializationPlace == InitializationPlace.CurrentMethod) - { - myCurrentMethod.setSelected(true); - } - else - { - myFieldDeclaration.setSelected(true); - } - } - } - - @Override - protected JTextField getNameField() - { - return myNameField; - } - - @Override - protected JPanel getPanel() - { - return myPanel; - } - - @Override - protected JCheckBox getReplaceAllCheckBox() - { - return myReplaceAllCheckBox; - } - - @Override - public JComboBox getVarTypeField() - { - return myVarType; - } - - @Override - protected JRadioButton getPrivateRadioButton() - { - return myPrivate; - } - - @Override - protected JRadioButton getPublicRadioButton() - { - return myPublic; - } - - @Override - protected JRadioButton getProtectedRadioButton() - { - return myProtected; - } - - @Override - protected JRadioButton getPackageLocalRadioButton() - { - return myPackageLocal; - } - - @Override - public InitializationPlace getInitializationPlace() - { - return myFieldDeclaration.isSelected() ? InitializationPlace.FieldDeclaration : myCurrentMethod.isSelected() ? InitializationPlace.CurrentMethod : - InitializationPlace.Constructor; - } - - @Override - protected void doOKAction() - { - super.doOKAction(); - lastInitializationPlace = getInitializationPlace(); - } - - @Override - protected String suggestCandidateName(final JSExpression mainOccurence) - { - final String s = super.suggestCandidateName(mainOccurence); - final JSCodeStyleSettings jsCodeStyleSettings = CodeStyleSettingsManager.getSettings(mainOccurence.getProject()).getCustomSettings - (JSCodeStyleSettings.class); - if(jsCodeStyleSettings.FIELD_PREFIX.length() > 0) - { - return jsCodeStyleSettings.FIELD_PREFIX + s; - } - if(s.length() > 0) - { - return StringUtil.decapitalize(s); - } - return s; - } +class JSIntroduceFieldDialog extends JSBaseClassBasedIntroduceDialog implements JSIntroduceFieldSettings { + private JCheckBox myReplaceAllCheckBox; + private JTextField myNameField; + private JPanel myPanel; + private JRadioButton myPublic; + private JRadioButton myPackageLocal; + private JRadioButton myProtected; + private JRadioButton myPrivate; + private JComboBox myVarType; + + private JRadioButton myFieldDeclaration; + private JRadioButton myCurrentMethod; + private JRadioButton myConstructor; + + private static InitializationPlace lastInitializationPlace = InitializationPlace.FieldDeclaration; + + public JSIntroduceFieldDialog(final Project project, final JSExpression[] occurrences, final JSExpression expression) { + super(project, occurrences, expression, JavaScriptLocalize.javascriptIntroduceFieldTitle()); + doInit(); + } + + @Override + protected void doInit() { + super.doInit(); + + final Ref localContextDependent = new Ref(); + myMainOccurence.accept(new JSElementVisitor() { + @Override + public void visitJSReferenceExpression(final JSReferenceExpression node) { + if (node.getQualifier() == null) { + final ResolveResult[] results = node.multiResolve(true); + if (results.length == 0) { + localContextDependent.set(Boolean.TRUE); + } + else { + final PsiElement element = results[0].getElement(); + if (element instanceof JSVariable && !(element.getParent().getParent() instanceof JSClass)) { + localContextDependent.set(Boolean.TRUE); + } + } + } + super.visitJSReferenceExpression(node); + } + + @Override + public void visitJSElement(final JSElement node) { + node.acceptChildren(this); + } + }); + + if (Boolean.TRUE.equals(localContextDependent.get())) { + myConstructor.setEnabled(false); + myFieldDeclaration.setEnabled(false); + myCurrentMethod.setSelected(true); + } + else if (lastInitializationPlace == InitializationPlace.Constructor) { + myConstructor.setSelected(true); + } + else if (lastInitializationPlace == InitializationPlace.CurrentMethod) { + myCurrentMethod.setSelected(true); + } + else { + myFieldDeclaration.setSelected(true); + } + } + + @Override + protected JTextField getNameField() { + return myNameField; + } + + @Override + protected JPanel getPanel() { + return myPanel; + } + + @Override + protected JCheckBox getReplaceAllCheckBox() { + return myReplaceAllCheckBox; + } + + @Override + public JComboBox getVarTypeField() { + return myVarType; + } + + @Override + protected JRadioButton getPrivateRadioButton() { + return myPrivate; + } + + @Override + protected JRadioButton getPublicRadioButton() { + return myPublic; + } + + @Override + protected JRadioButton getProtectedRadioButton() { + return myProtected; + } + + @Override + protected JRadioButton getPackageLocalRadioButton() { + return myPackageLocal; + } + + @Override + public InitializationPlace getInitializationPlace() { + return myFieldDeclaration.isSelected() ? InitializationPlace.FieldDeclaration : myCurrentMethod.isSelected() ? InitializationPlace.CurrentMethod : + InitializationPlace.Constructor; + } + + @Override + protected void doOKAction() { + super.doOKAction(); + lastInitializationPlace = getInitializationPlace(); + } + + @Override + protected String suggestCandidateName(final JSExpression mainOccurence) { + final String s = super.suggestCandidateName(mainOccurence); + final JSCodeStyleSettings jsCodeStyleSettings = CodeStyleSettingsManager.getSettings(mainOccurence.getProject()).getCustomSettings + (JSCodeStyleSettings.class); + if (jsCodeStyleSettings.FIELD_PREFIX.length() > 0) { + return jsCodeStyleSettings.FIELD_PREFIX + s; + } + if (s.length() > 0) { + return StringUtil.decapitalize(s); + } + return s; + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceField/JSIntroduceFieldHandler.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceField/JSIntroduceFieldHandler.java index 466a89c2..0440d94c 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceField/JSIntroduceFieldHandler.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceField/JSIntroduceFieldHandler.java @@ -36,121 +36,112 @@ /** * @author Maxim.Mossienko - * Date: May 29, 2008 - * Time: 8:20:03 PM + * Date: May 29, 2008 + * Time: 8:20:03 PM */ -public class JSIntroduceFieldHandler extends JSBaseIntroduceHandler -{ - @Override - protected String getRefactoringName() - { - return JavaScriptLocalize.javascriptIntroduceFieldTitle().get(); - } - - @Override - protected LocalizeValue getCannotIntroduceMessage() { - return JavaScriptLocalize.javascriptIntroduceFieldErrorNoExpressionSelected(); - } - - @Override - protected JSIntroduceFieldDialog createDialog(final Project project, final JSExpression expression, final JSExpression[] occurrences) - { - return new JSIntroduceFieldDialog(project, occurrences, expression); - } - - @Override - protected JSElement findAnchor(final BaseIntroduceContext context, final boolean replaceAllOccurences) - { - return findClassAnchor(context.expression); - } - - @Override - protected JSElement addStatementBefore(final JSElement anchorStatement, final JSVarStatement declaration) throws IncorrectOperationException - { - return addToClassAnchor(anchorStatement, declaration); - } - - @Override - protected String getDeclText(final JSIntroduceFieldSettings settings) - { - @NonNls String baseDeclText = super.getDeclText(settings); - final JSAttributeList.AccessType type = settings.getAccessType(); - if(type != JSAttributeList.AccessType.PACKAGE_LOCAL) - { - baseDeclText = type.toString().toLowerCase() + " " + baseDeclText; - } - - return baseDeclText; - } - - @Override - protected JSExpression findIntroducedExpression(final PsiFile file, final int start, final int end, Editor editor) - { - if(file.getLanguage() != JavaScriptSupportLoader.ECMA_SCRIPT_L4) - { - CommonRefactoringUtil.showErrorHint( - file.getProject(), - editor, - JavaScriptLocalize.javascriptIntroduceFieldErrorNotAvailableInJavascriptCode().get(), - getRefactoringName(), - null - ); - return null; - } - - return super.findIntroducedExpression(file, start, end, editor); - } - - @Override - protected JSVarStatement prepareDeclaration(final String varDeclText, BaseIntroduceContext context, final Project project) throws IncorrectOperationException - { - final JSIntroduceFieldSettings.InitializationPlace place = context.settings.getInitializationPlace(); - - if(place == JSIntroduceFieldSettings.InitializationPlace.FieldDeclaration) - { - return super.prepareDeclaration(varDeclText, context, project); - } - else - { - final String assignmentText = context.settings.getVariableName() + "=" + context.expression.getText() + JSChangeUtil.getSemicolon(project); - final PsiElement psiToInsert = JSChangeUtil.createStatementFromText(project, assignmentText).getPsi(); - - if(place == JSIntroduceFieldSettings.InitializationPlace.CurrentMethod) - { - final JSElement element = super.findAnchor(context, context.settings.isReplaceAllOccurences()); - final PsiElement parent = element.getParent(); - final PsiElement addedElement = parent.addBefore(psiToInsert, element); - CodeStyleManager.getInstance(project).reformatNewlyAddedElement(parent.getNode(), addedElement.getNode()); - } - else - { - PsiElement parent = PsiTreeUtil.getParentOfType(context.expression, JSClass.class, JSFile.class); - if(parent instanceof JSFile) - { - final PsiFile containingFile = parent.getContext().getContainingFile(); - assert containingFile instanceof XmlFile; - parent = XmlBackedJSClassImpl.getXmlBackedClass((XmlFile) containingFile); - } - - assert parent instanceof JSClass; - final JSClass clazz = (JSClass) parent; - JSFunction fun = clazz.findFunctionByName(clazz.getName()); - - if(fun == null) - { - @NonNls String constr = "function " + clazz.getName() + "() {}"; - if(clazz.getAttributeList() != null && clazz.getAttributeList().getAccessType() == JSAttributeList.AccessType.PUBLIC) - { - constr = "public " + constr; - } - - fun = (JSFunction) clazz.add(JSChangeUtil.createJSTreeFromText(project, constr).getPsi()); - } - - fun.getBody()[0].add(psiToInsert); - } - - return (JSVarStatement) JSChangeUtil.createStatementFromText(project, varDeclText + JSChangeUtil.getSemicolon(project)).getPsi(); - } - } +public class JSIntroduceFieldHandler extends JSBaseIntroduceHandler { + @Override + protected String getRefactoringName() { + return JavaScriptLocalize.javascriptIntroduceFieldTitle().get(); + } + + @Override + protected LocalizeValue getCannotIntroduceMessage() { + return JavaScriptLocalize.javascriptIntroduceFieldErrorNoExpressionSelected(); + } + + @Override + protected JSIntroduceFieldDialog createDialog(final Project project, final JSExpression expression, final JSExpression[] occurrences) { + return new JSIntroduceFieldDialog(project, occurrences, expression); + } + + @Override + protected JSElement findAnchor(final BaseIntroduceContext context, final boolean replaceAllOccurences) { + return findClassAnchor(context.expression); + } + + @Override + protected JSElement addStatementBefore( + final JSElement anchorStatement, + final JSVarStatement declaration + ) throws IncorrectOperationException { + return addToClassAnchor(anchorStatement, declaration); + } + + @Override + protected String getDeclText(final JSIntroduceFieldSettings settings) { + @NonNls String baseDeclText = super.getDeclText(settings); + final JSAttributeList.AccessType type = settings.getAccessType(); + if (type != JSAttributeList.AccessType.PACKAGE_LOCAL) { + baseDeclText = type.toString().toLowerCase() + " " + baseDeclText; + } + + return baseDeclText; + } + + @Override + protected JSExpression findIntroducedExpression(final PsiFile file, final int start, final int end, Editor editor) { + if (file.getLanguage() != JavaScriptSupportLoader.ECMA_SCRIPT_L4) { + CommonRefactoringUtil.showErrorHint( + file.getProject(), + editor, + JavaScriptLocalize.javascriptIntroduceFieldErrorNotAvailableInJavascriptCode().get(), + getRefactoringName(), + null + ); + return null; + } + + return super.findIntroducedExpression(file, start, end, editor); + } + + @Override + protected JSVarStatement prepareDeclaration( + final String varDeclText, + BaseIntroduceContext context, + final Project project + ) throws IncorrectOperationException { + final JSIntroduceFieldSettings.InitializationPlace place = context.settings.getInitializationPlace(); + + if (place == JSIntroduceFieldSettings.InitializationPlace.FieldDeclaration) { + return super.prepareDeclaration(varDeclText, context, project); + } + else { + final String assignmentText = + context.settings.getVariableName() + "=" + context.expression.getText() + JSChangeUtil.getSemicolon(project); + final PsiElement psiToInsert = JSChangeUtil.createStatementFromText(project, assignmentText).getPsi(); + + if (place == JSIntroduceFieldSettings.InitializationPlace.CurrentMethod) { + final JSElement element = super.findAnchor(context, context.settings.isReplaceAllOccurences()); + final PsiElement parent = element.getParent(); + final PsiElement addedElement = parent.addBefore(psiToInsert, element); + CodeStyleManager.getInstance(project).reformatNewlyAddedElement(parent.getNode(), addedElement.getNode()); + } + else { + PsiElement parent = PsiTreeUtil.getParentOfType(context.expression, JSClass.class, JSFile.class); + if (parent instanceof JSFile) { + final PsiFile containingFile = parent.getContext().getContainingFile(); + assert containingFile instanceof XmlFile; + parent = XmlBackedJSClassImpl.getXmlBackedClass((XmlFile)containingFile); + } + + assert parent instanceof JSClass; + final JSClass clazz = (JSClass)parent; + JSFunction fun = clazz.findFunctionByName(clazz.getName()); + + if (fun == null) { + @NonNls String constr = "function " + clazz.getName() + "() {}"; + if (clazz.getAttributeList() != null && clazz.getAttributeList().getAccessType() == JSAttributeList.AccessType.PUBLIC) { + constr = "public " + constr; + } + + fun = (JSFunction)clazz.add(JSChangeUtil.createJSTreeFromText(project, constr).getPsi()); + } + + fun.getBody()[0].add(psiToInsert); + } + + return (JSVarStatement)JSChangeUtil.createStatementFromText(project, varDeclText + JSChangeUtil.getSemicolon(project)).getPsi(); + } + } } \ No newline at end of file diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceField/JSIntroduceFieldSettings.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceField/JSIntroduceFieldSettings.java index f86bd5e6..28a31ee1 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceField/JSIntroduceFieldSettings.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceField/JSIntroduceFieldSettings.java @@ -22,14 +22,14 @@ /** * @author ven */ -public interface JSIntroduceFieldSettings extends BaseIntroduceSettings -{ - JSAttributeList.AccessType getAccessType(); +public interface JSIntroduceFieldSettings extends BaseIntroduceSettings { + JSAttributeList.AccessType getAccessType(); - enum InitializationPlace - { - CurrentMethod, FieldDeclaration, Constructor - } + enum InitializationPlace { + CurrentMethod, + FieldDeclaration, + Constructor + } - InitializationPlace getInitializationPlace(); + InitializationPlace getInitializationPlace(); } \ No newline at end of file diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceVariable/JSIntroduceVariableDialog.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceVariable/JSIntroduceVariableDialog.java index b666c57d..81f2e46b 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceVariable/JSIntroduceVariableDialog.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceVariable/JSIntroduceVariableDialog.java @@ -27,88 +27,80 @@ /** * @author ven */ -public class JSIntroduceVariableDialog extends JSBaseIntroduceDialog implements Settings -{ - private JCheckBox myReplaceAllCheckBox; - private JTextField myNameField; - private JPanel myPanel; - - private JRadioButton myIntroduceLocalVariable; - private JRadioButton myIntroduceConstant; - private JRadioButton myIntroduceVariable; - private JComboBox myVarType; - private JLabel myVariableTypeLabel; - - private static IntroducedVarType ourLastIntroduceType = IntroducedVarType.VAR; - private IntroducedVarType myIntroducedVarType; - - protected JSIntroduceVariableDialog(final Project project, final JSExpression[] occurences, final JSExpression mainOccurence) - { - super(project, occurences, mainOccurence, JavaScriptLocalize.javascriptIntroduceVariableTitle()); - - if(ourLastIntroduceType == Settings.IntroducedVarType.CONST) - { - myIntroduceConstant.setSelected(true); - } - else if(ourLastIntroduceType == Settings.IntroducedVarType.LET) - { - myIntroduceLocalVariable.setSelected(true); - } - else if(ourLastIntroduceType == Settings.IntroducedVarType.VAR) - { - myIntroduceVariable.setSelected(true); - } - - doInit(); - } - - @Override - protected JTextField getNameField() - { - return myNameField; - } - - @Override - protected JPanel getPanel() - { - return myPanel; - } - - @Override - protected JCheckBox getReplaceAllCheckBox() - { - return myReplaceAllCheckBox; - } - - @Override - protected void doOKAction() - { - super.doOKAction(); - - if(!isShowing()) - { - myIntroducedVarType = myIntroduceConstant.isSelected() ? Settings.IntroducedVarType.CONST : myIntroduceLocalVariable.isSelected() ? Settings - .IntroducedVarType.LET : myIntroduceVariable.isSelected() ? Settings.IntroducedVarType.VAR : Settings.IntroducedVarType.VAR; - - ourLastIntroduceType = myIntroducedVarType; - } - } - - @Override - public JComboBox getVarTypeField() - { - return myVarType; - } - - @Override - public IntroducedVarType getIntroducedVarType() - { - return myIntroducedVarType; - } - - @Override - protected String suggestCandidateName(final JSExpression mainOccurence) - { - return StringUtil.decapitalize(super.suggestCandidateName(mainOccurence)); - } +public class JSIntroduceVariableDialog extends JSBaseIntroduceDialog implements Settings { + private JCheckBox myReplaceAllCheckBox; + private JTextField myNameField; + private JPanel myPanel; + + private JRadioButton myIntroduceLocalVariable; + private JRadioButton myIntroduceConstant; + private JRadioButton myIntroduceVariable; + private JComboBox myVarType; + private JLabel myVariableTypeLabel; + + private static IntroducedVarType ourLastIntroduceType = IntroducedVarType.VAR; + private IntroducedVarType myIntroducedVarType; + + protected JSIntroduceVariableDialog(final Project project, final JSExpression[] occurences, final JSExpression mainOccurence) { + super(project, occurences, mainOccurence, JavaScriptLocalize.javascriptIntroduceVariableTitle()); + + if (ourLastIntroduceType == Settings.IntroducedVarType.CONST) { + myIntroduceConstant.setSelected(true); + } + else if (ourLastIntroduceType == Settings.IntroducedVarType.LET) { + myIntroduceLocalVariable.setSelected(true); + } + else if (ourLastIntroduceType == Settings.IntroducedVarType.VAR) { + myIntroduceVariable.setSelected(true); + } + + doInit(); + } + + @Override + protected JTextField getNameField() { + return myNameField; + } + + @Override + protected JPanel getPanel() { + return myPanel; + } + + @Override + protected JCheckBox getReplaceAllCheckBox() { + return myReplaceAllCheckBox; + } + + @Override + protected void doOKAction() { + super.doOKAction(); + + if (!isShowing()) { + myIntroducedVarType = myIntroduceConstant.isSelected() + ? Settings.IntroducedVarType.CONST + : myIntroduceLocalVariable.isSelected() + ? Settings.IntroducedVarType.LET + : myIntroduceVariable.isSelected() + ? Settings.IntroducedVarType.VAR + : Settings.IntroducedVarType.VAR; + + ourLastIntroduceType = myIntroducedVarType; + } + } + + @Override + public JComboBox getVarTypeField() { + return myVarType; + } + + @Override + public IntroducedVarType getIntroducedVarType() { + return myIntroducedVarType; + } + + @Override + protected String suggestCandidateName(final JSExpression mainOccurence) { + return StringUtil.decapitalize(super.suggestCandidateName(mainOccurence)); + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceVariable/JSIntroduceVariableHandler.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceVariable/JSIntroduceVariableHandler.java index 7377bd06..657e4707 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceVariable/JSIntroduceVariableHandler.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceVariable/JSIntroduceVariableHandler.java @@ -26,29 +26,28 @@ /** * @author ven */ -public class JSIntroduceVariableHandler extends JSBaseIntroduceHandler -{ - @Override - protected String getRefactoringName() - { - return JavaScriptLocalize.javascriptIntroduceVariableTitle().get(); - } +public class JSIntroduceVariableHandler extends JSBaseIntroduceHandler { + @Override + protected String getRefactoringName() { + return JavaScriptLocalize.javascriptIntroduceVariableTitle().get(); + } - @Override - protected LocalizeValue getCannotIntroduceMessage() - { - return JavaScriptLocalize.javascriptIntroduceVariableErrorNoExpressionSelected(); - } + @Override + protected LocalizeValue getCannotIntroduceMessage() { + return JavaScriptLocalize.javascriptIntroduceVariableErrorNoExpressionSelected(); + } - @Override - protected String getDeclText(Settings settings) - { - return settings.getIntroducedVarType().toString().toLowerCase() + " " + settings.getVariableName(); - } + @Override + protected String getDeclText(Settings settings) { + return settings.getIntroducedVarType().toString().toLowerCase() + " " + settings.getVariableName(); + } - @Override - protected JSIntroduceVariableDialog createDialog(final Project project, final JSExpression expression, final JSExpression[] occurrences) - { - return new JSIntroduceVariableDialog(project, occurrences, expression); - } + @Override + protected JSIntroduceVariableDialog createDialog( + final Project project, + final JSExpression expression, + final JSExpression[] occurrences + ) { + return new JSIntroduceVariableDialog(project, occurrences, expression); + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceVariable/Settings.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceVariable/Settings.java index 6da63a20..6499fe7f 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceVariable/Settings.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceVariable/Settings.java @@ -21,12 +21,12 @@ /** * @author ven */ -public interface Settings extends BaseIntroduceSettings -{ - enum IntroducedVarType - { - VAR, CONST, LET - } +public interface Settings extends BaseIntroduceSettings { + enum IntroducedVarType { + VAR, + CONST, + LET + } - IntroducedVarType getIntroducedVarType(); + IntroducedVarType getIntroducedVarType(); } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSDeclarationRangeHandler.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSDeclarationRangeHandler.java index 5f6a662d..2871ba11 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSDeclarationRangeHandler.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSDeclarationRangeHandler.java @@ -29,25 +29,22 @@ * @since 2008-04-28 */ @ExtensionImpl -public class JSDeclarationRangeHandler implements DeclarationRangeHandler -{ - @Nonnull - @Override - public Class getElementClass() - { - return JSNamedElement.class; - } +public class JSDeclarationRangeHandler implements DeclarationRangeHandler { + @Nonnull + @Override + public Class getElementClass() { + return JSNamedElement.class; + } - @Override - @Nonnull - public TextRange getDeclarationRange(@Nonnull JSNamedElement namedElement) - { - final TextRange textRange = namedElement.getTextRange(); - final PsiElement nameIdentifier = namedElement.getNameIdentifier(); - final TextRange nameIdentifierRange = nameIdentifier != null ? nameIdentifier.getTextRange() : null; - int startOffset = nameIdentifierRange != null ? nameIdentifierRange.getStartOffset() : textRange.getStartOffset(); - int endOffset = nameIdentifierRange != null ? nameIdentifierRange.getEndOffset() : textRange.getEndOffset(); + @Override + @Nonnull + public TextRange getDeclarationRange(@Nonnull JSNamedElement namedElement) { + final TextRange textRange = namedElement.getTextRange(); + final PsiElement nameIdentifier = namedElement.getNameIdentifier(); + final TextRange nameIdentifierRange = nameIdentifier != null ? nameIdentifier.getTextRange() : null; + int startOffset = nameIdentifierRange != null ? nameIdentifierRange.getStartOffset() : textRange.getStartOffset(); + int endOffset = nameIdentifierRange != null ? nameIdentifierRange.getEndOffset() : textRange.getEndOffset(); - return new TextRange(startOffset, endOffset); - } + return new TextRange(startOffset, endOffset); + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSDefinitionsSearchExecutor.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSDefinitionsSearchExecutor.java index 2e8e59b3..2dd89ac1 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSDefinitionsSearchExecutor.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSDefinitionsSearchExecutor.java @@ -37,77 +37,66 @@ /** * @author Maxim.Mossienko - * Date: Apr 28, 2008 - * Time: 8:34:30 PM + * Date: Apr 28, 2008 + * Time: 8:34:30 PM */ @ExtensionImpl -public class JSDefinitionsSearchExecutor implements DefinitionsScopedSearchExecutor -{ - @Override - public boolean execute(@Nonnull final DefinitionsScopedSearch.SearchParameters parameters, @Nonnull final Processor consumer) - { - final PsiElement sourceElement = parameters.getElement(); - if(sourceElement instanceof PsiNamedElement && sourceElement.getLanguage().isKindOf(JavaScriptLanguage.INSTANCE)) - { - ReferencesSearch.search(sourceElement, GlobalSearchScope.projectScope(sourceElement.getProject())).forEach(t -> { - if (t instanceof JSReferenceExpression referenceExpression) - { - final PsiElement parent = referenceExpression.getParent(); - final ResolveResult[] resolveResults = referenceExpression.multiResolve(true); +public class JSDefinitionsSearchExecutor implements DefinitionsScopedSearchExecutor { + @Override + public boolean execute( + @Nonnull final DefinitionsScopedSearch.SearchParameters parameters, + @Nonnull final Processor consumer + ) { + final PsiElement sourceElement = parameters.getElement(); + if (sourceElement instanceof PsiNamedElement && sourceElement.getLanguage().isKindOf(JavaScriptLanguage.INSTANCE)) { + ReferencesSearch.search(sourceElement, GlobalSearchScope.projectScope(sourceElement.getProject())).forEach(t -> { + if (t instanceof JSReferenceExpression referenceExpression) { + final PsiElement parent = referenceExpression.getParent(); + final ResolveResult[] resolveResults = referenceExpression.multiResolve(true); - for (ResolveResult r : resolveResults) - { - PsiElement psiElement = r.getElement(); + for (ResolveResult r : resolveResults) { + PsiElement psiElement = r.getElement(); - if (psiElement != null && - !JavaScriptIndex.isFromPredefinedFile(psiElement.getContainingFile()) && - sourceElement != psiElement) - { - if (psiElement instanceof JSFunction fun && sourceElement instanceof JSFunction sourceFun) - { - if ((sourceFun.isGetProperty() && fun.isSetProperty()) || (sourceFun.isSetProperty() && fun.isGetProperty())) - { - return true; - } - } + if (psiElement != null && + !JavaScriptIndex.isFromPredefinedFile(psiElement.getContainingFile()) && + sourceElement != psiElement) { + if (psiElement instanceof JSFunction fun && sourceElement instanceof JSFunction sourceFun) { + if ((sourceFun.isGetProperty() && fun.isSetProperty()) || (sourceFun.isSetProperty() && fun.isGetProperty())) { + return true; + } + } - if ((psiElement != sourceElement || !(psiElement instanceof JSClass)) && !consumer.process(psiElement)) - { - return false; - } - } - } + if ((psiElement != sourceElement || !(psiElement instanceof JSClass)) && !consumer.process(psiElement)) { + return false; + } + } + } - if (!(parent instanceof JSDefinitionExpression)) - { - return false; - } - } - return true; - }); + if (!(parent instanceof JSDefinitionExpression)) { + return false; + } + } + return true; + }); - if (sourceElement instanceof JSClass clazz) - { - final Processor delegatingProcessor = jsClass -> consumer.process(jsClass); - JSClassSearch.searchClassInheritors(clazz, true).forEach(delegatingProcessor); + if (sourceElement instanceof JSClass clazz) { + final Processor delegatingProcessor = jsClass -> consumer.process(jsClass); + JSClassSearch.searchClassInheritors(clazz, true).forEach(delegatingProcessor); - if (clazz.isInterface()) - { - JSClassSearch.searchInterfaceImplementations(clazz, true).forEach(delegatingProcessor); - } - } - else if (sourceElement instanceof JSFunction baseFunction) - { - final Processor delegatingProcessor = jsFunction -> consumer.process(jsFunction); - JSFunctionsSearch.searchOverridingFunctions(baseFunction, true).forEach(delegatingProcessor); + if (clazz.isInterface()) { + JSClassSearch.searchInterfaceImplementations(clazz, true).forEach(delegatingProcessor); + } + } + else if (sourceElement instanceof JSFunction baseFunction) { + final Processor delegatingProcessor = jsFunction -> consumer.process(jsFunction); + JSFunctionsSearch.searchOverridingFunctions(baseFunction, true).forEach(delegatingProcessor); - final PsiElement parent = baseFunction.getParent(); - if (parent instanceof JSClass jsClass && jsClass.isInterface()) - { - JSFunctionsSearch.searchImplementingFunctions(baseFunction, true).forEach(delegatingProcessor); - } - } - } - return true; - } + final PsiElement parent = baseFunction.getParent(); + if (parent instanceof JSClass jsClass && jsClass.isInterface()) { + JSFunctionsSearch.searchImplementingFunctions(baseFunction, true).forEach(delegatingProcessor); + } + } + } + return true; + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSFunctionsSearch.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSFunctionsSearch.java index 3d02c5ec..f7df2064 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSFunctionsSearch.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSFunctionsSearch.java @@ -26,93 +26,78 @@ import consulo.application.util.query.QueryFactory; import consulo.language.psi.PsiElement; -public abstract class JSFunctionsSearch implements QueryExecutor -{ - public static class SearchParameters - { - private JSFunction myBaseFunction; - private boolean myCheckDeepInheritance; - - public SearchParameters(final JSFunction baseFunction, final boolean checkDeepInheritance) - { - myBaseFunction = baseFunction; - myCheckDeepInheritance = checkDeepInheritance; - } - - public JSFunction getBaseFunction() - { - return myBaseFunction; - } - - public boolean isCheckDeepInheritance() - { - return myCheckDeepInheritance; - } - } - - public static Query searchOverridingFunctions(final JSFunction baseFunction, final boolean checkDeepInheritance) - { - final SearchParameters parameters = new SearchParameters(baseFunction, checkDeepInheritance); - return OVERRIDDEN_FUNCTIONS_QUERY_FACTORY.createUniqueResultsQuery(parameters); - } - - public static Query searchImplementingFunctions(final JSFunction baseFunction, final boolean checkDeepInheritance) - { - final SearchParameters parameters = new SearchParameters(baseFunction, checkDeepInheritance); - return IMPLEMENTING_FUNCTIONS_QUERY_FACTORY.createUniqueResultsQuery(parameters); - } - - private static QueryFactory OVERRIDDEN_FUNCTIONS_QUERY_FACTORY = new QueryFactory(); - private static QueryFactory IMPLEMENTING_FUNCTIONS_QUERY_FACTORY = new QueryFactory(); - - static - { - OVERRIDDEN_FUNCTIONS_QUERY_FACTORY.registerExecutor(new JSFunctionsSearch() - { - @Override - protected Query makeQuery(final SearchParameters queryParameters, final PsiElement parent) - { - return JSClassSearch.searchClassInheritors((JSClass) parent, queryParameters.isCheckDeepInheritance()); - } - }); - - IMPLEMENTING_FUNCTIONS_QUERY_FACTORY.registerExecutor(new ImplementingFunctionsSearch()); - } - - @Override - public boolean execute(final SearchParameters queryParameters, final Processor consumer) - { - final JSFunction baseFunction = queryParameters.getBaseFunction(); - PsiElement clazz = JSResolveUtil.findParent(baseFunction); - - if(!(clazz instanceof JSClass)) - { - return true; - } - - return makeQuery(queryParameters, clazz).forEach(new Processor() - { - @Override - public boolean process(final JSClass jsClass) - { - JSFunction function = jsClass.findFunctionByNameAndKind(baseFunction.getName(), baseFunction.getKind()); - if(function != null) - { - return consumer.process(function); - } - return true; - } - }); - } - - protected abstract Query makeQuery(final SearchParameters queryParameters, final PsiElement parent); - - private static class ImplementingFunctionsSearch extends JSFunctionsSearch - { - @Override - protected Query makeQuery(final SearchParameters queryParameters, final PsiElement parent) - { - return JSClassSearch.searchInterfaceImplementations((JSClass) parent, true); - } - } +public abstract class JSFunctionsSearch implements QueryExecutor { + public static class SearchParameters { + private JSFunction myBaseFunction; + private boolean myCheckDeepInheritance; + + public SearchParameters(final JSFunction baseFunction, final boolean checkDeepInheritance) { + myBaseFunction = baseFunction; + myCheckDeepInheritance = checkDeepInheritance; + } + + public JSFunction getBaseFunction() { + return myBaseFunction; + } + + public boolean isCheckDeepInheritance() { + return myCheckDeepInheritance; + } + } + + public static Query searchOverridingFunctions(final JSFunction baseFunction, final boolean checkDeepInheritance) { + final SearchParameters parameters = new SearchParameters(baseFunction, checkDeepInheritance); + return OVERRIDDEN_FUNCTIONS_QUERY_FACTORY.createUniqueResultsQuery(parameters); + } + + public static Query searchImplementingFunctions(final JSFunction baseFunction, final boolean checkDeepInheritance) { + final SearchParameters parameters = new SearchParameters(baseFunction, checkDeepInheritance); + return IMPLEMENTING_FUNCTIONS_QUERY_FACTORY.createUniqueResultsQuery(parameters); + } + + private static QueryFactory OVERRIDDEN_FUNCTIONS_QUERY_FACTORY = + new QueryFactory(); + private static QueryFactory IMPLEMENTING_FUNCTIONS_QUERY_FACTORY = + new QueryFactory(); + + static { + OVERRIDDEN_FUNCTIONS_QUERY_FACTORY.registerExecutor(new JSFunctionsSearch() { + @Override + protected Query makeQuery(final SearchParameters queryParameters, final PsiElement parent) { + return JSClassSearch.searchClassInheritors((JSClass)parent, queryParameters.isCheckDeepInheritance()); + } + }); + + IMPLEMENTING_FUNCTIONS_QUERY_FACTORY.registerExecutor(new ImplementingFunctionsSearch()); + } + + @Override + public boolean execute(final SearchParameters queryParameters, final Processor consumer) { + final JSFunction baseFunction = queryParameters.getBaseFunction(); + PsiElement clazz = JSResolveUtil.findParent(baseFunction); + + if (!(clazz instanceof JSClass)) { + return true; + } + + return makeQuery(queryParameters, clazz).forEach(new Processor() { + @Override + public boolean process(final JSClass jsClass) { + JSFunction function = jsClass.findFunctionByNameAndKind(baseFunction.getName(), baseFunction.getKind()); + if (function != null) { + return consumer.process(function); + } + return true; + } + }); + } + + protected abstract Query makeQuery(final SearchParameters queryParameters, final PsiElement parent); + + private static class ImplementingFunctionsSearch extends JSFunctionsSearch { + @Override + protected Query makeQuery(final SearchParameters queryParameters, final PsiElement parent) { + return JSClassSearch.searchInterfaceImplementations((JSClass)parent, true); + } + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSGotoTargetRendererProvider.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSGotoTargetRendererProvider.java index 9c4e0dbc..c3f10c20 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSGotoTargetRendererProvider.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSGotoTargetRendererProvider.java @@ -27,43 +27,36 @@ /** * @author Maxim.Mossienko - * Date: Apr 28, 2008 - * Time: 8:14:14 PM + * Date: Apr 28, 2008 + * Time: 8:14:14 PM */ @ExtensionImpl -public class JSGotoTargetRendererProvider implements GotoTargetRendererProvider -{ - static class JSClassListCellRenderer extends PsiElementListCellRenderer - { - @Override - public String getElementText(final JSNamedElement element) - { - return element.getName(); - } +public class JSGotoTargetRendererProvider implements GotoTargetRendererProvider { + static class JSClassListCellRenderer extends PsiElementListCellRenderer { + @Override + public String getElementText(final JSNamedElement element) { + return element.getName(); + } - @Override - protected String getContainerText(final JSNamedElement element, final String name) - { - final ItemPresentation presentation = ((NavigationItem) element).getPresentation(); - return presentation != null ? presentation.getLocationString() : null; - } + @Override + protected String getContainerText(final JSNamedElement element, final String name) { + final ItemPresentation presentation = ((NavigationItem)element).getPresentation(); + return presentation != null ? presentation.getLocationString() : null; + } - @Override - protected int getIconFlags() - { - return 0; - } - } + @Override + protected int getIconFlags() { + return 0; + } + } - @Nullable - @Override - public PsiElementListCellRenderer getRenderer(PsiElement element) - { - if(!(element instanceof JSNamedElement)) - { - return null; - } + @Nullable + @Override + public PsiElementListCellRenderer getRenderer(PsiElement element) { + if (!(element instanceof JSNamedElement)) { + return null; + } - return new JSClassListCellRenderer(); - } + return new JSClassListCellRenderer(); + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureItemPresentation.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureItemPresentation.java index ae9b4c7e..90b11892 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureItemPresentation.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureItemPresentation.java @@ -28,132 +28,107 @@ /** * @author Maxim.Mossienko - * Date: Jul 23, 2008 - * Time: 6:54:27 PM + * Date: Jul 23, 2008 + * Time: 6:54:27 PM */ -public class JSStructureItemPresentation extends JSStructureViewElement.JSStructureItemPresentationBase -{ - public JSStructureItemPresentation(final JSStructureViewElement jsStructureViewElement) - { - super(jsStructureViewElement); - } - - @Override - @RequiredReadAction - public String getPresentableText() - { - PsiElement psiElement = element.getUpToDateElement(); - if(psiElement == null || !psiElement.isValid()) - { - return "*invalid*"; - } - - return getName(psiElement); - } - - @RequiredReadAction - public static String getName(@Nonnull PsiElement psiElement) - { - if(psiElement instanceof JSObjectLiteralExpression) - { - if (psiElement.getParent() instanceof JSAssignmentExpression assignmentExpression) - { - final JSExpression expression = ((JSDefinitionExpression) assignmentExpression.getLOperand()).getExpression(); - return JSResolveUtil.findClassIdentifier(expression).getText(); - } - else - { - return JavaScriptLocalize.javascriptLanguageTermPrototype().get(); - } - } - - if (psiElement instanceof JSDefinitionExpression definitionExpression) - { - psiElement = definitionExpression.getExpression(); - } - - if (psiElement instanceof JSReferenceExpression expression) - { - String s = expression.getReferencedName(); - - if(JSResolveUtil.PROTOTYPE_FIELD_NAME.equals(s)) - { - final JSExpression jsExpression = expression.getQualifier(); - if (jsExpression instanceof JSReferenceExpression referenceExpression) - { - s = referenceExpression.getReferencedName(); - } - } - return s; - } - - if(!(psiElement instanceof PsiNamedElement)) - { - return psiElement.getText(); - } - - String name = ((PsiNamedElement) psiElement).getName(); - - if (psiElement instanceof JSProperty property) - { - psiElement = property.getValue(); - } - - if(psiElement instanceof JSFunction) - { - if(name == null) - { - name = ""; - } - name += "("; - JSParameterList parameterList = ((JSFunction) psiElement).getParameterList(); - if(parameterList != null) - { - for(JSParameter p : parameterList.getParameters()) - { - if(!name.endsWith("(")) - { - name += ", "; - } - name += p.getName(); - final String variableType = p.getTypeString(); - if(variableType != null) - { - name += ":" + variableType; - } - } - } - name += ")"; - - final String type = ((JSFunction) psiElement).getReturnTypeString(); - if(type != null) - { - name += ":" + type; - } - } - - if (name == null && psiElement.getParent() instanceof JSAssignmentExpression assignmentExpression) - { - JSExpression lOperand = ((JSDefinitionExpression) assignmentExpression.getLOperand()).getExpression(); - lOperand = JSResolveUtil.findClassIdentifier(lOperand); - if (lOperand instanceof JSReferenceExpression referenceExpression) - { - return referenceExpression.getReferencedName(); - } - return lOperand.getText(); - } - return name; - } - - @Override - @RequiredReadAction - public Image getIcon() - { - final PsiElement psiElement = this.element.getRealElement(); - if(!psiElement.isValid()) - { - return null; - } - return IconDescriptorUpdaters.getIcon(psiElement, 0); - } +public class JSStructureItemPresentation extends JSStructureViewElement.JSStructureItemPresentationBase { + public JSStructureItemPresentation(final JSStructureViewElement jsStructureViewElement) { + super(jsStructureViewElement); + } + + @Override + @RequiredReadAction + public String getPresentableText() { + PsiElement psiElement = element.getUpToDateElement(); + if (psiElement == null || !psiElement.isValid()) { + return "*invalid*"; + } + + return getName(psiElement); + } + + @RequiredReadAction + public static String getName(@Nonnull PsiElement psiElement) { + if (psiElement instanceof JSObjectLiteralExpression) { + if (psiElement.getParent() instanceof JSAssignmentExpression assignmentExpression) { + final JSExpression expression = ((JSDefinitionExpression)assignmentExpression.getLOperand()).getExpression(); + return JSResolveUtil.findClassIdentifier(expression).getText(); + } + else { + return JavaScriptLocalize.javascriptLanguageTermPrototype().get(); + } + } + + if (psiElement instanceof JSDefinitionExpression definitionExpression) { + psiElement = definitionExpression.getExpression(); + } + + if (psiElement instanceof JSReferenceExpression expression) { + String s = expression.getReferencedName(); + + if (JSResolveUtil.PROTOTYPE_FIELD_NAME.equals(s)) { + final JSExpression jsExpression = expression.getQualifier(); + if (jsExpression instanceof JSReferenceExpression referenceExpression) { + s = referenceExpression.getReferencedName(); + } + } + return s; + } + + if (!(psiElement instanceof PsiNamedElement)) { + return psiElement.getText(); + } + + String name = ((PsiNamedElement)psiElement).getName(); + + if (psiElement instanceof JSProperty property) { + psiElement = property.getValue(); + } + + if (psiElement instanceof JSFunction) { + if (name == null) { + name = ""; + } + name += "("; + JSParameterList parameterList = ((JSFunction)psiElement).getParameterList(); + if (parameterList != null) { + for (JSParameter p : parameterList.getParameters()) { + if (!name.endsWith("(")) { + name += ", "; + } + name += p.getName(); + final String variableType = p.getTypeString(); + if (variableType != null) { + name += ":" + variableType; + } + } + } + name += ")"; + + final String type = ((JSFunction)psiElement).getReturnTypeString(); + if (type != null) { + name += ":" + type; + } + } + + if (name == null && psiElement.getParent() instanceof JSAssignmentExpression assignmentExpression) { + JSExpression lOperand = ((JSDefinitionExpression)assignmentExpression.getLOperand()).getExpression(); + lOperand = JSResolveUtil.findClassIdentifier(lOperand); + if (lOperand instanceof JSReferenceExpression referenceExpression) { + return referenceExpression.getReferencedName(); + } + return lOperand.getText(); + } + return name; + } + + @Override + @RequiredReadAction + public Image getIcon() { + final PsiElement psiElement = this.element.getRealElement(); + if (!psiElement.isValid()) { + return null; + } + return IconDescriptorUpdaters.getIcon(psiElement, 0); + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewBuilderFactory.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewBuilderFactory.java index fa676c23..e0c6677b 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewBuilderFactory.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewBuilderFactory.java @@ -31,32 +31,26 @@ import jakarta.annotation.Nonnull; @ExtensionImpl -public class JSStructureViewBuilderFactory implements PsiStructureViewFactory -{ - @Override - public StructureViewBuilder getStructureViewBuilder(final PsiFile psiFile) - { - return new TreeBasedStructureViewBuilder() - { - @Override - @Nonnull - public StructureViewModel createStructureViewModel(Editor editor) - { - return new JSStructureViewModel(psiFile); - } +public class JSStructureViewBuilderFactory implements PsiStructureViewFactory { + @Override + public StructureViewBuilder getStructureViewBuilder(final PsiFile psiFile) { + return new TreeBasedStructureViewBuilder() { + @Override + @Nonnull + public StructureViewModel createStructureViewModel(Editor editor) { + return new JSStructureViewModel(psiFile); + } - @Override - public boolean isRootNodeShown() - { - return false; - } - }; - } + @Override + public boolean isRootNodeShown() { + return false; + } + }; + } - @Nonnull - @Override - public Language getLanguage() - { - return JavaScriptLanguage.INSTANCE; - } + @Nonnull + @Override + public Language getLanguage() { + return JavaScriptLanguage.INSTANCE; + } } \ No newline at end of file diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewElement.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewElement.java index 52fb4034..afe01ee2 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewElement.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewElement.java @@ -32,424 +32,357 @@ import consulo.util.collection.primitive.ints.IntObjectMap; import jakarta.annotation.Nullable; + import java.util.*; /** * @author max */ -public class JSStructureViewElement implements StructureViewTreeElement -{ - protected PsiElement myElement; - private boolean myInherited; - - public JSStructureViewElement(final PsiElement element) - { - myElement = element; - } - - @Override - public PsiElement getValue() - { - return myElement; - } - - PsiElement getRealElement() - { - return myElement; - } - - @Override - public void navigate(boolean requestFocus) - { - ((Navigatable) myElement).navigate(requestFocus); - } - - @Override - public boolean canNavigate() - { - return ((Navigatable) myElement).canNavigate(); - } - - @Override - public boolean canNavigateToSource() - { - return canNavigate(); - } - - @Override - public StructureViewTreeElement[] getChildren() - { - final PsiElement element = getUpToDateElement(); - // since we use proxies for StructureViewElement then real element may invalidate due to structural change - if(element == null) - { - return EMPTY_ARRAY; - } - - final Set referencedNamedIds = new HashSet(); - - - List children = collectMyElements(referencedNamedIds); - - ArrayList elementsFromSupers = null; - - if(element instanceof JSClass) - { - for(JSClass clazz : ((JSClass) element).getSuperClasses()) - { - final StructureViewTreeElement[] structureViewTreeElements = createStructureViewElement(clazz).getChildren(); - - if(elementsFromSupers == null) - { - elementsFromSupers = new ArrayList(structureViewTreeElements.length); - } - else - { - elementsFromSupers.ensureCapacity(elementsFromSupers.size() + structureViewTreeElements.length); - } - - for(StructureViewTreeElement e : structureViewTreeElements) - { - if(!isVisible((PsiElement) e.getValue(), element)) - { - continue; - } - // TODO CSS styles can also be inherited, so we better show them - // This can't be done until 'inherited' property is elevated up to StructureViewTreeElement interface - if(!(e instanceof JSStructureViewElement)) - { - continue; - } - ((JSStructureViewElement) e).setInherited(true); - elementsFromSupers.add(e); - } - } - } - - - Collections.sort(children, new Comparator() - { - @Override - public int compare(final StructureViewTreeElement _o1, final StructureViewTreeElement _o2) - { - PsiElement e = getPsiElement(_o1); - PsiElement e2 = getPsiElement(_o2); - - TextRange t1 = InjectedLanguageManager.getInstance(e.getProject()).injectedToHost(e, e.getTextRange()); - TextRange t2 = InjectedLanguageManager.getInstance(e.getProject()).injectedToHost(e, e.getTextRange()); - final int offset = e.getTextOffset() + t1.getStartOffset(); - final int offset2 = e2.getTextOffset() + t2.getStartOffset(); - - return offset - offset2; - } - }); - - if(elementsFromSupers != null) - { - Map functionsByNames = new HashMap(); - for(StructureViewTreeElement child : children) - { - PsiElement el = getPsiElementResolveProxy(child); - if(el instanceof JSFunction) - { - JSFunction function = (JSFunction) el; - functionsByNames.put(function.getName(), function); - } - } - - for(StructureViewTreeElement superTreeElement : elementsFromSupers) - { - PsiElement superElement = getPsiElementResolveProxy(superTreeElement); - boolean addSuperElement = true; - if(superElement instanceof JSFunction) - { - JSFunction superFunction = (JSFunction) superElement; - JSFunction function = functionsByNames.get(superFunction.getName()); - if(function != null) - { - // TODO check signature - addSuperElement = false; - } - } - - if(addSuperElement) - { - children.add(superTreeElement); - } - } - } - return children.toArray(new StructureViewTreeElement[children.size()]); - } - - protected JSStructureViewElement createStructureViewElement(PsiElement element) - { - return new JSStructureViewElement(element); - } - - private static PsiElement getPsiElement(StructureViewTreeElement element) - { - PsiElement e; - if(element instanceof JSStructureViewElement) - { - final JSStructureViewElement o1 = (JSStructureViewElement) element; - e = o1.myElement; - } - else - { - e = (PsiElement) element.getValue(); - } - return e; - } - - public static PsiElement getPsiElementResolveProxy(StructureViewTreeElement element) - { - return getPsiElement(element); - } - - - protected List collectMyElements(final Set referencedNamedIds) - { - final IntObjectMap offset2Element = IntMaps.newIntObjectHashMap(); - - collectChildrenFromElement(myElement, referencedNamedIds, offset2Element); - - final List children = new ArrayList(offset2Element.size()); - offset2Element.forEach((textOffset, element) -> children.add(createStructureViewElement(element))); - return children; - } - - private static boolean isVisible(PsiElement namedElement, final PsiElement element) - { - if(namedElement instanceof JSAttributeListOwner) - { - final JSAttributeListOwner attributeListOwner = (JSAttributeListOwner) namedElement; - final JSAttributeList attributeList = attributeListOwner.getAttributeList(); - - if(attributeList != null) - { - final JSAttributeList.AccessType type = attributeList.getAccessType(); - - if(type == JSAttributeList.AccessType.PACKAGE_LOCAL) - { - final JSPackageStatement packageStatement = PsiTreeUtil.getParentOfType(namedElement, JSPackageStatement.class); - final JSPackageStatement packageStatement2 = PsiTreeUtil.getParentOfType(element, JSPackageStatement.class); - String packageQName; - - return packageStatement == packageStatement2 || (packageStatement != null && - packageStatement2 != null && - (packageQName = packageStatement.getQualifiedName()) != null && - packageQName.equals(packageStatement2.getQualifiedName())); - } - return type != JSAttributeList.AccessType.PRIVATE; - } - } - return true; - } - - private static void collectChildrenFromElement(final PsiElement element, final Set referencedNamedIds, final IntObjectMap offset2Element) - { - element.acceptChildren(new JSElementVisitor() - { - Set visited; - PsiElement context = element; - - @Override - public void visitElement(PsiElement element) - { - if(element instanceof JSNamedElement && - ((JSNamedElement) element).getName() != null && - !(element instanceof JSDefinitionExpression) && - !(element instanceof JSLabeledStatement) && - !(element instanceof JSPackageStatement) && - !(element instanceof JavaScriptImportStatementBase)) - { - if(!(element instanceof JSFunction) || !(element.getParent() instanceof JSProperty)) - { - addElement(element); - } - else - { - element.acceptChildren(this); - } - } - else - { - element.acceptChildren(this); - } - } - - @Override - public void visitJSParameter(final JSParameter node) - { - // Do not add parameters to structure view - } - - @Override - public void visitJSIncludeDirective(final JSIncludeDirective includeDirective) - { - final PsiFile file = includeDirective.resolveFile(); - if(file instanceof JSFile) - { - if(visited != null && visited.contains(file)) - { - return; - } - if(visited == null) - { - visited = new HashSet(); - } - visited.add(file); - - final PsiElement prevContext = context; - context = file; - context.putUserData(JSResolveUtil.contextKey, element); - file.acceptChildren(this); - context = prevContext; - } - } - - @Override - public void visitJSObjectLiteralExpression(final JSObjectLiteralExpression node) - { - final PsiElement parent = node.getParent(); - if(parent instanceof JSVariable || - parent instanceof JSProperty || - parent instanceof JSFile || - parent instanceof JSReturnStatement || - parent instanceof JSAssignmentExpression) - { - node.acceptChildren(this); - return; - } - if(parent instanceof JSArgumentList) - { - final JSElement expression = JSSymbolUtil.findQualifyingExpressionFromArgumentList((JSArgumentList) parent); - if(expression != null) - { - return; - } - } - if(node.getProperties().length > 0) - { - addElement(node); - } - } - - @Override - public void visitJSVariable(final JSVariable node) - { - if(element instanceof JSFunction) - { - return; - } - super.visitJSVariable(node); - } - - @Override - public void visitJSAssignmentExpression(final JSAssignmentExpression node) - { - JSExpression rOperand = node.getROperand(); - final JSExpression lOperand = node.getLOperand(); - - final boolean outsideFunction = PsiTreeUtil.getParentOfType(node, JSFunction.class) == null; - if(!outsideFunction) - { - return; - } - - if(rOperand instanceof JSCallExpression) - { - rOperand = ((JSCallExpression) rOperand).getMethodExpression(); - } - - if(rOperand instanceof JSFunction) - { - JSExpression qualifier = null; - final JSExpression operand = ((JSDefinitionExpression) lOperand).getExpression(); - - if(operand instanceof JSReferenceExpression) - { - qualifier = ((JSReferenceExpression) operand).getQualifier(); - } - if((qualifier == null || qualifier instanceof JSThisExpression)) - { - addElement(rOperand); - } - } - else if(lOperand != null) - { - final JSExpression operand = ((JSDefinitionExpression) lOperand).getExpression(); - if(operand instanceof JSReferenceExpression && ((JSReferenceExpression) operand).getQualifier() instanceof JSThisExpression) - { - final PsiElement resolved = ((JSReferenceExpression) operand).resolve(); - if(resolved == lOperand) - { - addElement(lOperand); - } - } - //super.visitJSAssignmentExpression(node); - } - } - - private void addElement(final PsiElement lOperand) - { - if(lOperand instanceof JSNamedElement) - { - final String namedId = ((JSNamedElement) lOperand).getName(); - if(referencedNamedIds.contains(namedId)) - { - return; - } - referencedNamedIds.add(namedId); - } - offset2Element.put(lOperand.getTextOffset(), lOperand); - } - }); - } - - @Override - public ItemPresentation getPresentation() - { - return new JSStructureItemPresentation(this); - } - - public boolean isInherited() - { - return myInherited; - } - - private void setInherited(boolean b) - { - myInherited = b; - } - - public - @Nullable - PsiElement getUpToDateElement() - { - boolean isValid = myElement.isValid(); - - if(!isValid) - { - return null; - } - - return myElement; - } - - static abstract class JSStructureItemPresentationBase implements ItemPresentation - { - final protected JSStructureViewElement element; - - JSStructureItemPresentationBase(JSStructureViewElement _element) - { - element = _element; - } - - @Override - public String getLocationString() - { - return null; - } - } +public class JSStructureViewElement implements StructureViewTreeElement { + protected PsiElement myElement; + private boolean myInherited; + + public JSStructureViewElement(final PsiElement element) { + myElement = element; + } + + @Override + public PsiElement getValue() { + return myElement; + } + + PsiElement getRealElement() { + return myElement; + } + + @Override + public void navigate(boolean requestFocus) { + ((Navigatable)myElement).navigate(requestFocus); + } + + @Override + public boolean canNavigate() { + return ((Navigatable)myElement).canNavigate(); + } + + @Override + public boolean canNavigateToSource() { + return canNavigate(); + } + + @Override + public StructureViewTreeElement[] getChildren() { + final PsiElement element = getUpToDateElement(); + // since we use proxies for StructureViewElement then real element may invalidate due to structural change + if (element == null) { + return EMPTY_ARRAY; + } + + final Set referencedNamedIds = new HashSet(); + + + List children = collectMyElements(referencedNamedIds); + + ArrayList elementsFromSupers = null; + + if (element instanceof JSClass) { + for (JSClass clazz : ((JSClass)element).getSuperClasses()) { + final StructureViewTreeElement[] structureViewTreeElements = createStructureViewElement(clazz).getChildren(); + + if (elementsFromSupers == null) { + elementsFromSupers = new ArrayList(structureViewTreeElements.length); + } + else { + elementsFromSupers.ensureCapacity(elementsFromSupers.size() + structureViewTreeElements.length); + } + + for (StructureViewTreeElement e : structureViewTreeElements) { + if (!isVisible((PsiElement)e.getValue(), element)) { + continue; + } + // TODO CSS styles can also be inherited, so we better show them + // This can't be done until 'inherited' property is elevated up to StructureViewTreeElement interface + if (!(e instanceof JSStructureViewElement)) { + continue; + } + ((JSStructureViewElement)e).setInherited(true); + elementsFromSupers.add(e); + } + } + } + + + Collections.sort(children, new Comparator() { + @Override + public int compare(final StructureViewTreeElement _o1, final StructureViewTreeElement _o2) { + PsiElement e = getPsiElement(_o1); + PsiElement e2 = getPsiElement(_o2); + + TextRange t1 = InjectedLanguageManager.getInstance(e.getProject()).injectedToHost(e, e.getTextRange()); + TextRange t2 = InjectedLanguageManager.getInstance(e.getProject()).injectedToHost(e, e.getTextRange()); + final int offset = e.getTextOffset() + t1.getStartOffset(); + final int offset2 = e2.getTextOffset() + t2.getStartOffset(); + + return offset - offset2; + } + }); + + if (elementsFromSupers != null) { + Map functionsByNames = new HashMap(); + for (StructureViewTreeElement child : children) { + PsiElement el = getPsiElementResolveProxy(child); + if (el instanceof JSFunction) { + JSFunction function = (JSFunction)el; + functionsByNames.put(function.getName(), function); + } + } + + for (StructureViewTreeElement superTreeElement : elementsFromSupers) { + PsiElement superElement = getPsiElementResolveProxy(superTreeElement); + boolean addSuperElement = true; + if (superElement instanceof JSFunction) { + JSFunction superFunction = (JSFunction)superElement; + JSFunction function = functionsByNames.get(superFunction.getName()); + if (function != null) { + // TODO check signature + addSuperElement = false; + } + } + + if (addSuperElement) { + children.add(superTreeElement); + } + } + } + return children.toArray(new StructureViewTreeElement[children.size()]); + } + + protected JSStructureViewElement createStructureViewElement(PsiElement element) { + return new JSStructureViewElement(element); + } + + private static PsiElement getPsiElement(StructureViewTreeElement element) { + PsiElement e; + if (element instanceof JSStructureViewElement) { + final JSStructureViewElement o1 = (JSStructureViewElement)element; + e = o1.myElement; + } + else { + e = (PsiElement)element.getValue(); + } + return e; + } + + public static PsiElement getPsiElementResolveProxy(StructureViewTreeElement element) { + return getPsiElement(element); + } + + + protected List collectMyElements(final Set referencedNamedIds) { + final IntObjectMap offset2Element = IntMaps.newIntObjectHashMap(); + + collectChildrenFromElement(myElement, referencedNamedIds, offset2Element); + + final List children = new ArrayList(offset2Element.size()); + offset2Element.forEach((textOffset, element) -> children.add(createStructureViewElement(element))); + return children; + } + + private static boolean isVisible(PsiElement namedElement, final PsiElement element) { + if (namedElement instanceof JSAttributeListOwner) { + final JSAttributeListOwner attributeListOwner = (JSAttributeListOwner)namedElement; + final JSAttributeList attributeList = attributeListOwner.getAttributeList(); + + if (attributeList != null) { + final JSAttributeList.AccessType type = attributeList.getAccessType(); + + if (type == JSAttributeList.AccessType.PACKAGE_LOCAL) { + final JSPackageStatement packageStatement = PsiTreeUtil.getParentOfType(namedElement, JSPackageStatement.class); + final JSPackageStatement packageStatement2 = PsiTreeUtil.getParentOfType(element, JSPackageStatement.class); + String packageQName; + + return packageStatement == packageStatement2 || (packageStatement != null && + packageStatement2 != null && + (packageQName = packageStatement.getQualifiedName()) != null && + packageQName.equals(packageStatement2.getQualifiedName())); + } + return type != JSAttributeList.AccessType.PRIVATE; + } + } + return true; + } + + private static void collectChildrenFromElement( + final PsiElement element, + final Set referencedNamedIds, + final IntObjectMap offset2Element + ) { + element.acceptChildren(new JSElementVisitor() { + Set visited; + PsiElement context = element; + + @Override + public void visitElement(PsiElement element) { + if (element instanceof JSNamedElement + && ((JSNamedElement)element).getName() != null + && !(element instanceof JSDefinitionExpression) + && !(element instanceof JSLabeledStatement) + && !(element instanceof JSPackageStatement) + && !(element instanceof JavaScriptImportStatementBase)) { + if (!(element instanceof JSFunction) || !(element.getParent() instanceof JSProperty)) { + addElement(element); + } + else { + element.acceptChildren(this); + } + } + else { + element.acceptChildren(this); + } + } + + @Override + public void visitJSParameter(final JSParameter node) { + // Do not add parameters to structure view + } + + @Override + public void visitJSIncludeDirective(final JSIncludeDirective includeDirective) { + final PsiFile file = includeDirective.resolveFile(); + if (file instanceof JSFile) { + if (visited != null && visited.contains(file)) { + return; + } + if (visited == null) { + visited = new HashSet(); + } + visited.add(file); + + final PsiElement prevContext = context; + context = file; + context.putUserData(JSResolveUtil.contextKey, element); + file.acceptChildren(this); + context = prevContext; + } + } + + @Override + public void visitJSObjectLiteralExpression(final JSObjectLiteralExpression node) { + final PsiElement parent = node.getParent(); + if (parent instanceof JSVariable + || parent instanceof JSProperty + || parent instanceof JSFile + || parent instanceof JSReturnStatement + || parent instanceof JSAssignmentExpression) { + node.acceptChildren(this); + return; + } + if (parent instanceof JSArgumentList) { + final JSElement expression = JSSymbolUtil.findQualifyingExpressionFromArgumentList((JSArgumentList)parent); + if (expression != null) { + return; + } + } + + if (node.getProperties().length > 0) { + addElement(node); + } + } + + @Override + public void visitJSVariable(final JSVariable node) { + if (element instanceof JSFunction) { + return; + } + super.visitJSVariable(node); + } + + @Override + public void visitJSAssignmentExpression(final JSAssignmentExpression node) { + JSExpression rOperand = node.getROperand(); + final JSExpression lOperand = node.getLOperand(); + + final boolean outsideFunction = PsiTreeUtil.getParentOfType(node, JSFunction.class) == null; + if (!outsideFunction) { + return; + } + + if (rOperand instanceof JSCallExpression) { + rOperand = ((JSCallExpression)rOperand).getMethodExpression(); + } + + if (rOperand instanceof JSFunction) { + JSExpression qualifier = null; + final JSExpression operand = ((JSDefinitionExpression)lOperand).getExpression(); + + if (operand instanceof JSReferenceExpression) { + qualifier = ((JSReferenceExpression)operand).getQualifier(); + } + + if ((qualifier == null || qualifier instanceof JSThisExpression)) { + addElement(rOperand); + } + } + else if (lOperand != null) { + final JSExpression operand = ((JSDefinitionExpression)lOperand).getExpression(); + if (operand instanceof JSReferenceExpression && ((JSReferenceExpression)operand).getQualifier() instanceof JSThisExpression) { + final PsiElement resolved = ((JSReferenceExpression)operand).resolve(); + if (resolved == lOperand) { + addElement(lOperand); + } + } + //super.visitJSAssignmentExpression(node); + } + } + + private void addElement(final PsiElement lOperand) { + if (lOperand instanceof JSNamedElement) { + final String namedId = ((JSNamedElement)lOperand).getName(); + if (referencedNamedIds.contains(namedId)) { + return; + } + referencedNamedIds.add(namedId); + } + offset2Element.put(lOperand.getTextOffset(), lOperand); + } + }); + } + + @Override + public ItemPresentation getPresentation() { + return new JSStructureItemPresentation(this); + } + + public boolean isInherited() { + return myInherited; + } + + private void setInherited(boolean b) { + myInherited = b; + } + + public + @Nullable + PsiElement getUpToDateElement() { + boolean isValid = myElement.isValid(); + + if (!isValid) { + return null; + } + + return myElement; + } + + static abstract class JSStructureItemPresentationBase implements ItemPresentation { + final protected JSStructureViewElement element; + + JSStructureItemPresentationBase(JSStructureViewElement _element) { + element = _element; + } + + @Override + public String getLocationString() { + return null; + } + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewModel.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewModel.java index 8b5a7384..d82f7a40 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewModel.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewModel.java @@ -36,359 +36,312 @@ import org.jetbrains.annotations.NonNls; import jakarta.annotation.Nonnull; + import java.util.Comparator; import java.util.List; /** * @by max, maxim */ -public class JSStructureViewModel extends TextEditorBasedStructureViewModel -{ - private PsiElement myRoot; - private Filter[] myFilters = new Filter[]{ - ourFieldsFilter, - ourInheritedFilter - }; - - @NonNls - private static final String ID = "KIND"; - private static Sorter ourKindSorter = new Sorter() - { - private Comparator myComparator = new Comparator() - { - @Override - public int compare(final Object o, final Object o2) - { - return getWeight(o) - getWeight(o2); - } - - private int getWeight(final Object s) - { - if(s instanceof JSSuperGroup) - { - return 5; - } - Object o = ((StructureViewTreeElement) s).getValue(); - - if(o instanceof JSProperty) - { - JSElement propertyValue = ((JSProperty) o).getValue(); - if(propertyValue instanceof JSFunction) - { - o = propertyValue; - } - } - - if(o instanceof JSClass) - { - return 7; - } - return 30; - } - }; - - @Override - public Comparator getComparator() - { - return myComparator; - } - - @Override - public boolean isVisible() - { - return false; - } - - @Override - @Nonnull - public ActionPresentation getPresentation() - { - return null; // will not be shown - } - - @Override - @Nonnull - public String getName() - { - return ID; - } - }; - - private Sorter[] mySorters = new Sorter[]{ - ourKindSorter, - Sorter.ALPHA_SORTER - }; - - private static Filter ourFieldsFilter = new Filter() - { - @NonNls - public static final String ID = "SHOW_FIELDS"; - - @Override - public boolean isVisible(TreeElement treeNode) - { - if(!(treeNode instanceof JSStructureViewElement)) - { - return true; - } - final PsiElement element = ((JSStructureViewElement) treeNode).getRealElement(); - - if(element instanceof JSClass) - { - return true; - } - - return element instanceof JSFunction || - (element instanceof JSProperty && ((JSProperty) element).getValue() instanceof JSFunction) || - element instanceof JSObjectLiteralExpression; - } - - @Override - public boolean isReverted() - { - return true; - } - - @Override - @Nonnull - public ActionPresentation getPresentation() - { - return new ActionPresentationData(IdeLocalize.actionStructureviewShowFields().get(), null, AllIcons.Nodes.Variable); - } - - @Override - @Nonnull - public String getName() - { - return ID; - } - }; - - private static final Filter ourInheritedFilter = new FileStructureFilter() - { - @NonNls - public static final String ID = "SHOW_INHERITED"; - - @Override - public boolean isVisible(TreeElement treeNode) - { - if(treeNode instanceof JSStructureViewElement) - { - return !((JSStructureViewElement) treeNode).isInherited(); - } - else - { - return true; - } - } - - @Override - @Nonnull - public ActionPresentation getPresentation() - { - return new ActionPresentationData( - IdeLocalize.actionStructureviewShowInherited().get(), - null, - PlatformIconGroup.hierarchySupertypes() - ); - } - - @Override - @Nonnull - public String getName() - { - return ID; - } - - @Override - public boolean isReverted() - { - return true; - } - - @Override - public String getCheckBoxText() - { - return IdeLocalize.fileStructureToggleShowInherited().get(); - } - - @Override - public Shortcut[] getShortcut() - { - return KeymapManager.getInstance().getActiveKeymap().getShortcuts("FileStructurePopup"); - } - }; - - private static Grouper myInheritedGrouper = new JSSuperGrouper(); - - private Grouper[] myGroupers = new Grouper[]{ - myInheritedGrouper - }; - private final Class[] myClasses = new Class[]{ - JSFunction.class, - JSVariable.class, - JSDefinitionExpression.class, - JSClass.class, - JSProperty.class - }; - - public JSStructureViewModel(final PsiElement root) - { - super(root.getContainingFile()); - myRoot = root; - } - - public JSStructureViewModel(PsiElement root, final Editor editor) - { - super(editor); - myRoot = root; - } - - @Override - @Nonnull - public StructureViewTreeElement getRoot() - { - return new JSStructureViewElement(myRoot); - } - - @Override - @Nonnull - public Grouper[] getGroupers() - { - return myGroupers; - } - - @Override - @Nonnull - public Sorter[] getSorters() - { - return mySorters; - } - - @Override - @Nonnull - public Filter[] getFilters() - { - return myFilters; - } - - @Override - protected boolean isSuitable(final PsiElement element) - { - return super.isSuitable(element) && (!(element instanceof JSVariable) || PsiTreeUtil.getParentOfType(element, JSFunction.class) == null); - } - - @Override - public Object getCurrentEditorElement() - { - Object editorElement = super.getCurrentEditorElement(); - - final PsiFile file = getPsiFile(); - if(editorElement == null && !(file instanceof JSFile)) - { - final int offset = getEditor().getCaretModel().getOffset(); - final PsiElement at = file.findElementAt(offset); - final PsiLanguageInjectionHost injectionHost = PsiTreeUtil.getParentOfType(at, PsiLanguageInjectionHost.class); - - if(injectionHost != null) - { - final Ref ref = new Ref(); - InjectedLanguageManager.getInstance(file.getProject()).enumerate(injectionHost, new PsiLanguageInjectionHost.InjectedPsiVisitor() - { - @Override - public void visit(@Nonnull final PsiFile injectedPsi, @Nonnull final List places) - { - final PsiLanguageInjectionHost.Shred shred = places.get(0); - final int injectedStart = shred.getRangeInsideHost().getStartOffset() + shred.getHost().getTextOffset(); - final int offsetInInjected = offset - injectedStart; - - ref.set(injectedPsi.findElementAt(offsetInInjected)); - } - }); - - final PsiElement element = ref.get(); - if(element != null) - { - editorElement = findAcceptableElement(element); - return editorElement; - } - } - } - - if(editorElement instanceof JSDefinitionExpression) - { - final PsiElement element = ((PsiElement) editorElement).getParent(); - - if(element instanceof JSAssignmentExpression) - { - final JSExpression roperand = ((JSAssignmentExpression) element).getROperand(); - if(roperand instanceof JSFunctionExpression) - { - editorElement = roperand; - } - } - } - - if(editorElement instanceof JSNamedElement) - { - final PsiFile containingFile = ((PsiElement) editorElement).getContainingFile(); - final PsiElement context = containingFile.getContext(); - final int offset = ((PsiElement) editorElement).getTextOffset(); - final PsiElement element; - - if(context != null) - { - element = JavaScriptIndex.findSymbolWithNameAndOffsetInEntry(((JSNamedElement) editorElement).getName(), offset); - } - else - { - element = JavaScriptIndex.findSymbolByFileAndNameAndOffset(containingFile.getVirtualFile().getPath(), ((JSNamedElement) editorElement).getName(), - offset); - } - if(element != null) - { - editorElement = element; - } - } - return editorElement; - } - - @Override - protected PsiFile getPsiFile() - { - return myRoot.getContainingFile(); - } - - @Override - @Nonnull - protected Class[] getSuitableClasses() - { - return myClasses; - } - - public void setFilters(final Filter[] filters) - { - myFilters = filters; - } - - public void setGroupers(final Grouper[] groupers) - { - myGroupers = groupers; - } - - public void setSorters(final Sorter[] sorters) - { - mySorters = sorters; - } - - @Override - public boolean shouldEnterElement(final Object element) - { - return shouldEnterElementStatic(element); - } - - public static boolean shouldEnterElementStatic(final Object element) - { - return element instanceof JSClass; - } +public class JSStructureViewModel extends TextEditorBasedStructureViewModel { + private PsiElement myRoot; + private Filter[] myFilters = new Filter[]{ + ourFieldsFilter, + ourInheritedFilter + }; + + @NonNls + private static final String ID = "KIND"; + private static Sorter ourKindSorter = new Sorter() { + private Comparator myComparator = new Comparator() { + @Override + public int compare(final Object o, final Object o2) { + return getWeight(o) - getWeight(o2); + } + + private int getWeight(final Object s) { + if (s instanceof JSSuperGroup) { + return 5; + } + Object o = ((StructureViewTreeElement)s).getValue(); + + if (o instanceof JSProperty) { + JSElement propertyValue = ((JSProperty)o).getValue(); + if (propertyValue instanceof JSFunction) { + o = propertyValue; + } + } + + if (o instanceof JSClass) { + return 7; + } + return 30; + } + }; + + @Override + public Comparator getComparator() { + return myComparator; + } + + @Override + public boolean isVisible() { + return false; + } + + @Override + @Nonnull + public ActionPresentation getPresentation() { + return null; // will not be shown + } + + @Override + @Nonnull + public String getName() { + return ID; + } + }; + + private Sorter[] mySorters = new Sorter[]{ + ourKindSorter, + Sorter.ALPHA_SORTER + }; + + private static Filter ourFieldsFilter = new Filter() { + @NonNls + public static final String ID = "SHOW_FIELDS"; + + @Override + public boolean isVisible(TreeElement treeNode) { + if (!(treeNode instanceof JSStructureViewElement)) { + return true; + } + final PsiElement element = ((JSStructureViewElement)treeNode).getRealElement(); + + if (element instanceof JSClass) { + return true; + } + + return element instanceof JSFunction || + (element instanceof JSProperty && ((JSProperty)element).getValue() instanceof JSFunction) || + element instanceof JSObjectLiteralExpression; + } + + @Override + public boolean isReverted() { + return true; + } + + @Override + @Nonnull + public ActionPresentation getPresentation() { + return new ActionPresentationData(IdeLocalize.actionStructureviewShowFields().get(), null, AllIcons.Nodes.Variable); + } + + @Override + @Nonnull + public String getName() { + return ID; + } + }; + + private static final Filter ourInheritedFilter = new FileStructureFilter() { + @NonNls + public static final String ID = "SHOW_INHERITED"; + + @Override + public boolean isVisible(TreeElement treeNode) { + if (treeNode instanceof JSStructureViewElement) { + return !((JSStructureViewElement)treeNode).isInherited(); + } + else { + return true; + } + } + + @Override + @Nonnull + public ActionPresentation getPresentation() { + return new ActionPresentationData( + IdeLocalize.actionStructureviewShowInherited().get(), + null, + PlatformIconGroup.hierarchySupertypes() + ); + } + + @Override + @Nonnull + public String getName() { + return ID; + } + + @Override + public boolean isReverted() { + return true; + } + + @Override + public String getCheckBoxText() { + return IdeLocalize.fileStructureToggleShowInherited().get(); + } + + @Override + public Shortcut[] getShortcut() { + return KeymapManager.getInstance().getActiveKeymap().getShortcuts("FileStructurePopup"); + } + }; + + private static Grouper myInheritedGrouper = new JSSuperGrouper(); + + private Grouper[] myGroupers = new Grouper[]{ + myInheritedGrouper + }; + private final Class[] myClasses = new Class[]{ + JSFunction.class, + JSVariable.class, + JSDefinitionExpression.class, + JSClass.class, + JSProperty.class + }; + + public JSStructureViewModel(final PsiElement root) { + super(root.getContainingFile()); + myRoot = root; + } + + public JSStructureViewModel(PsiElement root, final Editor editor) { + super(editor); + myRoot = root; + } + + @Override + @Nonnull + public StructureViewTreeElement getRoot() { + return new JSStructureViewElement(myRoot); + } + + @Override + @Nonnull + public Grouper[] getGroupers() { + return myGroupers; + } + + @Override + @Nonnull + public Sorter[] getSorters() { + return mySorters; + } + + @Override + @Nonnull + public Filter[] getFilters() { + return myFilters; + } + + @Override + protected boolean isSuitable(final PsiElement element) { + return super.isSuitable(element) + && (!(element instanceof JSVariable) || PsiTreeUtil.getParentOfType(element, JSFunction.class) == null); + } + + @Override + public Object getCurrentEditorElement() { + Object editorElement = super.getCurrentEditorElement(); + + final PsiFile file = getPsiFile(); + if (editorElement == null && !(file instanceof JSFile)) { + final int offset = getEditor().getCaretModel().getOffset(); + final PsiElement at = file.findElementAt(offset); + final PsiLanguageInjectionHost injectionHost = PsiTreeUtil.getParentOfType(at, PsiLanguageInjectionHost.class); + + if (injectionHost != null) { + final Ref ref = new Ref(); + InjectedLanguageManager.getInstance(file.getProject()).enumerate( + injectionHost, + new PsiLanguageInjectionHost.InjectedPsiVisitor() { + @Override + public void visit(@Nonnull final PsiFile injectedPsi, @Nonnull final List places) { + final PsiLanguageInjectionHost.Shred shred = places.get(0); + final int injectedStart = shred.getRangeInsideHost().getStartOffset() + shred.getHost().getTextOffset(); + final int offsetInInjected = offset - injectedStart; + + ref.set(injectedPsi.findElementAt(offsetInInjected)); + } + } + ); + + final PsiElement element = ref.get(); + if (element != null) { + editorElement = findAcceptableElement(element); + return editorElement; + } + } + } + + if (editorElement instanceof JSDefinitionExpression) { + final PsiElement element = ((PsiElement)editorElement).getParent(); + + if (element instanceof JSAssignmentExpression) { + final JSExpression roperand = ((JSAssignmentExpression)element).getROperand(); + if (roperand instanceof JSFunctionExpression) { + editorElement = roperand; + } + } + } + + if (editorElement instanceof JSNamedElement) { + final PsiFile containingFile = ((PsiElement)editorElement).getContainingFile(); + final PsiElement context = containingFile.getContext(); + final int offset = ((PsiElement)editorElement).getTextOffset(); + final PsiElement element; + + if (context != null) { + element = JavaScriptIndex.findSymbolWithNameAndOffsetInEntry(((JSNamedElement)editorElement).getName(), offset); + } + else { + element = JavaScriptIndex.findSymbolByFileAndNameAndOffset( + containingFile.getVirtualFile().getPath(), + ((JSNamedElement)editorElement).getName(), + offset + ); + } + + if (element != null) { + editorElement = element; + } + } + return editorElement; + } + + @Override + protected PsiFile getPsiFile() { + return myRoot.getContainingFile(); + } + + @Override + @Nonnull + protected Class[] getSuitableClasses() { + return myClasses; + } + + public void setFilters(final Filter[] filters) { + myFilters = filters; + } + + public void setGroupers(final Grouper[] groupers) { + myGroupers = groupers; + } + + public void setSorters(final Sorter[] sorters) { + mySorters = sorters; + } + + @Override + public boolean shouldEnterElement(final Object element) { + return shouldEnterElementStatic(element); + } + + public static boolean shouldEnterElementStatic(final Object element) { + return element instanceof JSClass; + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSSuperGroup.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSSuperGroup.java index 05e7b8d8..47151a44 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSSuperGroup.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSSuperGroup.java @@ -30,51 +30,43 @@ /** * @author Maxim.Mossienko */ -public class JSSuperGroup implements Group, ItemPresentation -{ - private final String myName; - private final List myChildren; +public class JSSuperGroup implements Group, ItemPresentation { + private final String myName; + private final List myChildren; - public JSSuperGroup(final String name) - { - myName = name; - myChildren = new ArrayList(); - } + public JSSuperGroup(final String name) { + myName = name; + myChildren = new ArrayList(); + } - @Override - public ItemPresentation getPresentation() - { - return this; - } + @Override + public ItemPresentation getPresentation() { + return this; + } - @Override - public Collection getChildren() - { - return myChildren; - } + @Override + public Collection getChildren() { + return myChildren; + } - @Override - public String getPresentableText() - { - return myName; - } + @Override + public String getPresentableText() { + return myName; + } - @Override - @Nullable - public String getLocationString() - { - return null; - } + @Override + @Nullable + public String getLocationString() { + return null; + } - @Override - @Nullable - public Image getIcon() - { - return AllIcons.General.InheritedMethod; - } + @Override + @Nullable + public Image getIcon() { + return AllIcons.General.InheritedMethod; + } - void addChild(TreeElement element) - { - myChildren.add(element); - } + void addChild(TreeElement element) { + myChildren.add(element); + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSSuperGrouper.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSSuperGrouper.java index a6d76e1c..e779c2ca 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSSuperGrouper.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSSuperGrouper.java @@ -37,106 +37,91 @@ /** * @author Maxim.Mossienko */ -class JSSuperGrouper implements Grouper -{ - @NonNls - private static final String SHOW_CLASSES = "SHOW_CLASSES"; +class JSSuperGrouper implements Grouper { + @NonNls + private static final String SHOW_CLASSES = "SHOW_CLASSES"; - @Override - @Nonnull - public Collection group(final Object parent, final Collection children) - { - if (isParentGrouped((AbstractTreeNode) parent)) - { - return Collections.emptyList(); - } - final Map groups = new HashMap<>(); + @Override + @Nonnull + public Collection group(final Object parent, final Collection children) { + if (isParentGrouped((AbstractTreeNode)parent)) { + return Collections.emptyList(); + } + final Map groups = new HashMap<>(); - for (TreeElement _child : children) - { - if (!(_child instanceof JSStructureViewElement)) - { - continue; - } - JSStructureViewElement child = (JSStructureViewElement) _child; - final PsiElement value = child.getValue(); + for (TreeElement _child : children) { + if (!(_child instanceof JSStructureViewElement)) { + continue; + } + JSStructureViewElement child = (JSStructureViewElement)_child; + final PsiElement value = child.getValue(); - if (value instanceof JSVariable) - { - if (!child.isInherited()) - { - continue; - } - PsiElement parentElement = value.getParent(); - if (parentElement instanceof JSVarStatement) - { - parentElement = parentElement.getParent(); - } - if (parentElement instanceof JSClass jsClass) - { - addGroup(groups, _child, jsClass.getQualifiedName()); - } - } - else if (value instanceof JSFunction) - { - processFunction((JSStructureViewElement) ((AbstractTreeNode) parent).getValue(), groups, _child, value); - } - } - return groups.values(); - } + if (value instanceof JSVariable) { + if (!child.isInherited()) { + continue; + } + PsiElement parentElement = value.getParent(); + if (parentElement instanceof JSVarStatement) { + parentElement = parentElement.getParent(); + } + if (parentElement instanceof JSClass jsClass) { + addGroup(groups, _child, jsClass.getQualifiedName()); + } + } + else if (value instanceof JSFunction) { + processFunction((JSStructureViewElement)((AbstractTreeNode)parent).getValue(), groups, _child, value); + } + } + return groups.values(); + } - private static void processFunction(JSStructureViewElement parentElement, Map groups, TreeElement _child, PsiElement value) - { - final PsiElement element = JSStructureViewElement.getPsiElementResolveProxy(parentElement); - if (element instanceof JSClass parentClass) - { - JSClass declaringClass = JSResolveUtil.findDeclaringClass((JSFunction) value); - if (parentClass != declaringClass) - { - addGroup(groups, _child, declaringClass.getQualifiedName()); - } - } - } + private static void processFunction( + JSStructureViewElement parentElement, + Map groups, + TreeElement _child, + PsiElement value + ) { + final PsiElement element = JSStructureViewElement.getPsiElementResolveProxy(parentElement); + if (element instanceof JSClass parentClass) { + JSClass declaringClass = JSResolveUtil.findDeclaringClass((JSFunction)value); + if (parentClass != declaringClass) { + addGroup(groups, _child, declaringClass.getQualifiedName()); + } + } + } - private static void addGroup(final Map groups, final TreeElement _child, final String qName) - { - JSSuperGroup group = (JSSuperGroup) groups.get(qName); - if (group == null) - { - groups.put(qName, group = new JSSuperGroup(qName)); - } + private static void addGroup(final Map groups, final TreeElement _child, final String qName) { + JSSuperGroup group = (JSSuperGroup)groups.get(qName); + if (group == null) { + groups.put(qName, group = new JSSuperGroup(qName)); + } - group.addChild(_child); - } + group.addChild(_child); + } - @Override - @Nonnull - public ActionPresentation getPresentation() - { - return new ActionPresentationData( - IdeLocalize.actionStructureviewGroupMethodsByDefiningType().get(), - null, - PlatformIconGroup.gutterImplementingmethod() - ); - } + @Override + @Nonnull + public ActionPresentation getPresentation() { + return new ActionPresentationData( + IdeLocalize.actionStructureviewGroupMethodsByDefiningType().get(), + null, + PlatformIconGroup.gutterImplementingmethod() + ); + } - @Override - @Nonnull - public String getName() - { - return SHOW_CLASSES; - } + @Override + @Nonnull + public String getName() { + return SHOW_CLASSES; + } - private static boolean isParentGrouped(AbstractTreeNode parent) - { - while (parent != null) - { - if (parent.getValue() instanceof JSSuperGroup) - { - return true; - } - parent = (AbstractTreeNode) parent.getParent(); - } - return false; - } + private static boolean isParentGrouped(AbstractTreeNode parent) { + while (parent != null) { + if (parent.getValue() instanceof JSSuperGroup) { + return true; + } + parent = (AbstractTreeNode)parent.getParent(); + } + return false; + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSExpressionSurroundDescriptor.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSExpressionSurroundDescriptor.java index 75908cbe..c4f9b9ac 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSExpressionSurroundDescriptor.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSExpressionSurroundDescriptor.java @@ -36,65 +36,54 @@ * Time: 12:46:24 */ @ExtensionImpl -public class JSExpressionSurroundDescriptor implements SurroundDescriptor -{ - private static final Surrounder[] SURROUNDERS = { - new JSWithParenthesesSurrounder() - }; +public class JSExpressionSurroundDescriptor implements SurroundDescriptor { + private static final Surrounder[] SURROUNDERS = { + new JSWithParenthesesSurrounder() + }; - @Override - @Nonnull - public PsiElement[] getElementsToSurround(PsiFile file, int startOffset, int endOffset) - { - final JSExpression expr = findExpressionInRange(file, startOffset, endOffset); - if(expr == null) - { - return PsiElement.EMPTY_ARRAY; - } - return new PsiElement[]{expr}; - } + @Override + @Nonnull + public PsiElement[] getElementsToSurround(PsiFile file, int startOffset, int endOffset) { + final JSExpression expr = findExpressionInRange(file, startOffset, endOffset); + if (expr == null) { + return PsiElement.EMPTY_ARRAY; + } + return new PsiElement[]{expr}; + } - @Override - @Nonnull - public Surrounder[] getSurrounders() - { - return SURROUNDERS; - } + @Override + @Nonnull + public Surrounder[] getSurrounders() { + return SURROUNDERS; + } - @Override - public boolean isExclusive() - { - return false; - } + @Override + public boolean isExclusive() { + return false; + } - private static JSExpression findExpressionInRange(PsiFile file, int startOffset, int endOffset) - { - PsiElement element1 = file.findElementAt(startOffset); - PsiElement element2 = file.findElementAt(endOffset - 1); - if(element1 instanceof PsiWhiteSpace) - { - startOffset = element1.getTextRange().getEndOffset(); - } - if(element2 instanceof PsiWhiteSpace) - { - endOffset = element2.getTextRange().getStartOffset(); - } - JSExpression expression = PsiTreeUtil.findElementOfClassAtRange(file, startOffset, endOffset, JSExpression.class); - if(expression == null || expression.getTextRange().getEndOffset() != endOffset) - { - return null; - } - if(expression instanceof JSReferenceExpression && expression.getParent() instanceof JSCallExpression) - { - return null; - } - return expression; - } + private static JSExpression findExpressionInRange(PsiFile file, int startOffset, int endOffset) { + PsiElement element1 = file.findElementAt(startOffset); + PsiElement element2 = file.findElementAt(endOffset - 1); + if (element1 instanceof PsiWhiteSpace) { + startOffset = element1.getTextRange().getEndOffset(); + } + if (element2 instanceof PsiWhiteSpace) { + endOffset = element2.getTextRange().getStartOffset(); + } + JSExpression expression = PsiTreeUtil.findElementOfClassAtRange(file, startOffset, endOffset, JSExpression.class); + if (expression == null || expression.getTextRange().getEndOffset() != endOffset) { + return null; + } + if (expression instanceof JSReferenceExpression && expression.getParent() instanceof JSCallExpression) { + return null; + } + return expression; + } - @Nonnull - @Override - public Language getLanguage() - { - return JavaScriptLanguage.INSTANCE; - } + @Nonnull + @Override + public Language getLanguage() { + return JavaScriptLanguage.INSTANCE; + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSStatementSurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSStatementSurrounder.java index 7cff56ec..f70002a6 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSStatementSurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSStatementSurrounder.java @@ -35,45 +35,40 @@ * @author yole * @since 2005-07-12 */ -public abstract class JSStatementSurrounder implements Surrounder -{ - @Override - public boolean isApplicable(@Nonnull PsiElement[] elements) - { - return true; - } +public abstract class JSStatementSurrounder implements Surrounder { + @Override + public boolean isApplicable(@Nonnull PsiElement[] elements) { + return true; + } - @Override - @Nullable - public TextRange surroundElements(@Nonnull Project project, @Nonnull Editor editor, @Nonnull PsiElement[] elements) throws - IncorrectOperationException - { - ASTNode node = JSChangeUtil.createStatementFromText(project, getStatementTemplate(project, elements[0])); + @Override + @Nullable + public TextRange surroundElements(@Nonnull Project project, @Nonnull Editor editor, @Nonnull PsiElement[] elements) + throws IncorrectOperationException { + ASTNode node = JSChangeUtil.createStatementFromText(project, getStatementTemplate(project, elements[0])); - PsiElement container = elements[0].getParent(); - container.getNode().addChild(node, elements[0].getNode()); - final ASTNode insertBeforeNode = getInsertBeforeNode(node); + PsiElement container = elements[0].getParent(); + container.getNode().addChild(node, elements[0].getNode()); + final ASTNode insertBeforeNode = getInsertBeforeNode(node); - for(int i = 0; i < elements.length; i++) - { - final ASTNode childNode = elements[i].getNode(); - final ASTNode childNodeCopy = childNode.copyElement(); + for (int i = 0; i < elements.length; i++) { + final ASTNode childNode = elements[i].getNode(); + final ASTNode childNodeCopy = childNode.copyElement(); - container.getNode().removeChild(childNode); - insertBeforeNode.getTreeParent().addChild(childNodeCopy, insertBeforeNode); - } + container.getNode().removeChild(childNode); + insertBeforeNode.getTreeParent().addChild(childNodeCopy, insertBeforeNode); + } - final CodeStyleManager csManager = CodeStyleManager.getInstance(project); - csManager.reformat(node.getPsi()); + final CodeStyleManager csManager = CodeStyleManager.getInstance(project); + csManager.reformat(node.getPsi()); - return getSurroundSelectionRange(node); - } + return getSurroundSelectionRange(node); + } - protected abstract - @NonNls - String getStatementTemplate(final Project project, PsiElement context); + @NonNls + protected abstract String getStatementTemplate(final Project project, PsiElement context); - protected abstract ASTNode getInsertBeforeNode(final ASTNode statementNode); + protected abstract ASTNode getInsertBeforeNode(final ASTNode statementNode); - protected abstract TextRange getSurroundSelectionRange(final ASTNode statementNode); + protected abstract TextRange getSurroundSelectionRange(final ASTNode statementNode); } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSStatementsSurroundDescriptor.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSStatementsSurroundDescriptor.java index 4fbfa002..533fe40a 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSStatementsSurroundDescriptor.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSStatementsSurroundDescriptor.java @@ -33,6 +33,7 @@ import consulo.language.psi.util.PsiTreeUtil; import jakarta.annotation.Nonnull; + import java.util.ArrayList; import java.util.List; @@ -41,149 +42,125 @@ * @since 2005-07-12 */ @ExtensionImpl -public class JSStatementsSurroundDescriptor implements SurroundDescriptor -{ - private static final Surrounder[] SURROUNDERS = { - new JSWithBlockSurrounder(), - new JSWithIfSurrounder(), - new JSWithIfElseSurrounder(), - new JSWithWhileSurrounder(), - new JSWithDoWhileSurrounder(), - new JSWithForSurrounder(), - new JSWithTryCatchSurrounder(), - new JSWithTryFinallySurrounder(), - new JSWithTryCatchFinallySurrounder(), - new JSWithWithSurrounder(), - new JSWithFunctionSurrounder(), - new JSWithFunctionExpressionSurrounder(), - }; - - @Override - @Nonnull - public PsiElement[] getElementsToSurround(PsiFile file, int startOffset, int endOffset) - { - final PsiElement[] statements = findStatementsInRange(file, startOffset, endOffset); - if(statements == null) - { - return PsiElement.EMPTY_ARRAY; - } - return statements; - } - - @Override - @Nonnull - public Surrounder[] getSurrounders() - { - return SURROUNDERS; - } - - @Override - public boolean isExclusive() - { - return false; - } - - private PsiElement[] findStatementsInRange(PsiFile file, int startOffset, int endOffset) - { - PsiElement element1 = file.findElementAt(startOffset); - PsiElement element2 = file.findElementAt(endOffset - 1); - if(element1 instanceof PsiWhiteSpace) - { - startOffset = element1.getTextRange().getEndOffset(); - element1 = file.findElementAt(startOffset); - } - if(element2 instanceof PsiWhiteSpace) - { - endOffset = element2.getTextRange().getStartOffset(); - element2 = file.findElementAt(endOffset - 1); - } - if(element1 == null || element2 == null) - { - return null; - } - - final JSStatement statement = PsiTreeUtil.getParentOfType(element1, JSStatement.class); - final JSStatement statement2 = PsiTreeUtil.getParentOfType(element2, JSStatement.class); - - PsiElement parent = PsiTreeUtil.findCommonParent(element1, element2); - while(true) - { - if(parent instanceof JSBlockStatement || ((parent instanceof JSEmbeddedContentImpl || parent instanceof JSFile) && (statement != null && - statement2 != null && PsiTreeUtil.isAncestor(parent, statement, false) && PsiTreeUtil.isAncestor(parent, statement2, false)))) - { - break; - } - if(parent instanceof JSStatement) - { - parent = parent.getParent(); - break; - } - if(parent instanceof PsiFile) - { - return null; - } - parent = parent.getParent(); - } - - - while(!element1.getParent().equals(parent)) - { - element1 = element1.getParent(); - } - if(startOffset != element1.getTextRange().getStartOffset()) - { - return null; - } - - while(!element2.getParent().equals(parent)) - { - element2 = element2.getParent(); - } - if(endOffset != element2.getTextRange().getEndOffset()) - { - return null; - } - - final ASTNode[] astNodes = parent.getNode().getChildren(null); - List children = new ArrayList(astNodes.length); - for(ASTNode node : astNodes) - { - children.add(node.getPsi()); - } - - ArrayList array = new ArrayList(); - boolean flag = false; - for(PsiElement child : children) - { - if(child.equals(element1)) - { - flag = true; - } - if(flag /*&& !(child instanceof PsiWhiteSpace)*/) - { - array.add(child); - } - if(child.equals(element2)) - { - break; - } - } - - for(PsiElement element : array) - { - if(!(element instanceof JSStatement || element instanceof PsiWhiteSpace || element instanceof PsiComment)) - { - return null; - } - } - - return array.toArray(new PsiElement[array.size()]); - } - - @Nonnull - @Override - public Language getLanguage() - { - return JavaScriptLanguage.INSTANCE; - } +public class JSStatementsSurroundDescriptor implements SurroundDescriptor { + private static final Surrounder[] SURROUNDERS = { + new JSWithBlockSurrounder(), + new JSWithIfSurrounder(), + new JSWithIfElseSurrounder(), + new JSWithWhileSurrounder(), + new JSWithDoWhileSurrounder(), + new JSWithForSurrounder(), + new JSWithTryCatchSurrounder(), + new JSWithTryFinallySurrounder(), + new JSWithTryCatchFinallySurrounder(), + new JSWithWithSurrounder(), + new JSWithFunctionSurrounder(), + new JSWithFunctionExpressionSurrounder(), + }; + + @Override + @Nonnull + public PsiElement[] getElementsToSurround(PsiFile file, int startOffset, int endOffset) { + final PsiElement[] statements = findStatementsInRange(file, startOffset, endOffset); + if (statements == null) { + return PsiElement.EMPTY_ARRAY; + } + return statements; + } + + @Override + @Nonnull + public Surrounder[] getSurrounders() { + return SURROUNDERS; + } + + @Override + public boolean isExclusive() { + return false; + } + + private PsiElement[] findStatementsInRange(PsiFile file, int startOffset, int endOffset) { + PsiElement element1 = file.findElementAt(startOffset); + PsiElement element2 = file.findElementAt(endOffset - 1); + if (element1 instanceof PsiWhiteSpace) { + startOffset = element1.getTextRange().getEndOffset(); + element1 = file.findElementAt(startOffset); + } + if (element2 instanceof PsiWhiteSpace) { + endOffset = element2.getTextRange().getStartOffset(); + element2 = file.findElementAt(endOffset - 1); + } + if (element1 == null || element2 == null) { + return null; + } + + final JSStatement statement = PsiTreeUtil.getParentOfType(element1, JSStatement.class); + final JSStatement statement2 = PsiTreeUtil.getParentOfType(element2, JSStatement.class); + + PsiElement parent = PsiTreeUtil.findCommonParent(element1, element2); + while (true) { + if (parent instanceof JSBlockStatement || ((parent instanceof JSEmbeddedContentImpl || parent instanceof JSFile) + && (statement != null && statement2 != null && PsiTreeUtil.isAncestor(parent, statement, false) + && PsiTreeUtil.isAncestor(parent, statement2, false)))) { + break; + } + if (parent instanceof JSStatement) { + parent = parent.getParent(); + break; + } + if (parent instanceof PsiFile) { + return null; + } + parent = parent.getParent(); + } + + + while (!element1.getParent().equals(parent)) { + element1 = element1.getParent(); + } + if (startOffset != element1.getTextRange().getStartOffset()) { + return null; + } + + while (!element2.getParent().equals(parent)) { + element2 = element2.getParent(); + } + if (endOffset != element2.getTextRange().getEndOffset()) { + return null; + } + + final ASTNode[] astNodes = parent.getNode().getChildren(null); + List children = new ArrayList(astNodes.length); + for (ASTNode node : astNodes) { + children.add(node.getPsi()); + } + + ArrayList array = new ArrayList(); + boolean flag = false; + for (PsiElement child : children) { + if (child.equals(element1)) { + flag = true; + } + if (flag /*&& !(child instanceof PsiWhiteSpace)*/) { + array.add(child); + } + if (child.equals(element2)) { + break; + } + } + + for (PsiElement element : array) { + if (!(element instanceof JSStatement || element instanceof PsiWhiteSpace || element instanceof PsiComment)) { + return null; + } + } + + return array.toArray(new PsiElement[array.size()]); + } + + @Nonnull + @Override + public Language getLanguage() { + return JavaScriptLanguage.INSTANCE; + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithBlockSurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithBlockSurrounder.java index e7d8acb1..e8a61738 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithBlockSurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithBlockSurrounder.java @@ -25,30 +25,25 @@ * @author yole * @since 2005-07-12 */ -public class JSWithBlockSurrounder extends JSStatementSurrounder -{ - @Override - public String getTemplateDescription() - { - return "{ }"; - } +public class JSWithBlockSurrounder extends JSStatementSurrounder { + @Override + public String getTemplateDescription() { + return "{ }"; + } - @Override - protected String getStatementTemplate(final Project project, PsiElement context) - { - return "{ }"; - } + @Override + protected String getStatementTemplate(final Project project, PsiElement context) { + return "{ }"; + } - @Override - protected ASTNode getInsertBeforeNode(final ASTNode statementNode) - { - return statementNode.getLastChildNode(); - } + @Override + protected ASTNode getInsertBeforeNode(final ASTNode statementNode) { + return statementNode.getLastChildNode(); + } - @Override - protected TextRange getSurroundSelectionRange(final ASTNode statementNode) - { - int endOffset = statementNode.getTextRange().getEndOffset(); - return new TextRange(endOffset, endOffset); - } + @Override + protected TextRange getSurroundSelectionRange(final ASTNode statementNode) { + int endOffset = statementNode.getTextRange().getEndOffset(); + return new TextRange(endOffset, endOffset); + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithDoWhileSurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithDoWhileSurrounder.java index 1a387200..3deb26ef 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithDoWhileSurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithDoWhileSurrounder.java @@ -27,31 +27,26 @@ * @author yole * @since 2005-07-12 */ -public class JSWithDoWhileSurrounder extends JSStatementSurrounder -{ - @Override - public String getTemplateDescription() - { - return JavaScriptLocalize.javascriptSurroundWithDoWhile().get(); - } +public class JSWithDoWhileSurrounder extends JSStatementSurrounder { + @Override + public String getTemplateDescription() { + return JavaScriptLocalize.javascriptSurroundWithDoWhile().get(); + } - @Override - protected String getStatementTemplate(final Project project, PsiElement context) - { - return "do { } while (true);"; - } + @Override + protected String getStatementTemplate(final Project project, PsiElement context) { + return "do { } while (true);"; + } - @Override - protected ASTNode getInsertBeforeNode(final ASTNode statementNode) - { - JSDoWhileStatement stmt = (JSDoWhileStatement) statementNode.getPsi(); - return stmt.getBody().getLastChild().getNode(); - } + @Override + protected ASTNode getInsertBeforeNode(final ASTNode statementNode) { + JSDoWhileStatement stmt = (JSDoWhileStatement)statementNode.getPsi(); + return stmt.getBody().getLastChild().getNode(); + } - @Override - protected TextRange getSurroundSelectionRange(final ASTNode statementNode) - { - JSDoWhileStatement stmt = (JSDoWhileStatement) statementNode.getPsi(); - return stmt.getCondition().getTextRange(); - } + @Override + protected TextRange getSurroundSelectionRange(final ASTNode statementNode) { + JSDoWhileStatement stmt = (JSDoWhileStatement)statementNode.getPsi(); + return stmt.getCondition().getTextRange(); + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithForSurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithForSurrounder.java index 63d1223b..ec2cb53c 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithForSurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithForSurrounder.java @@ -30,44 +30,36 @@ * @author yole * @since 2005-07-12 */ -public class JSWithForSurrounder extends JSStatementSurrounder -{ - @Override - public String getTemplateDescription() - { - return JavaScriptLocalize.javascriptSurroundWithFor().get(); - } +public class JSWithForSurrounder extends JSStatementSurrounder { + @Override + public String getTemplateDescription() { + return JavaScriptLocalize.javascriptSurroundWithFor().get(); + } - @Override - protected String getStatementTemplate(final Project project, PsiElement context) - { - return "for(i=0; i<1; i++) { }"; - } + @Override + protected String getStatementTemplate(final Project project, PsiElement context) { + return "for(i=0; i<1; i++) { }"; + } - @Override - protected ASTNode getInsertBeforeNode(final ASTNode statementNode) - { - JSForStatement forStatement = (JSForStatement) statementNode.getPsi(); - return forStatement.getBody().getLastChild().getNode(); - } + @Override + protected ASTNode getInsertBeforeNode(final ASTNode statementNode) { + JSForStatement forStatement = (JSForStatement)statementNode.getPsi(); + return forStatement.getBody().getLastChild().getNode(); + } - @Override - protected TextRange getSurroundSelectionRange(final ASTNode statementNode) - { - for(ASTNode childNode : statementNode.getChildren(null)) - { - if(childNode.getElementType() == JSTokenTypes.SEMICOLON || - childNode.getPsi() instanceof PsiWhiteSpace || - childNode.getPsi() instanceof JSExpression) - { - statementNode.removeChild(childNode); - } - else if(childNode.getElementType() == JSTokenTypes.RPAR) - { - int offset = childNode.getStartOffset(); - return new TextRange(offset, offset); - } - } - return null; - } + @Override + protected TextRange getSurroundSelectionRange(final ASTNode statementNode) { + for (ASTNode childNode : statementNode.getChildren(null)) { + if (childNode.getElementType() == JSTokenTypes.SEMICOLON || + childNode.getPsi() instanceof PsiWhiteSpace || + childNode.getPsi() instanceof JSExpression) { + statementNode.removeChild(childNode); + } + else if (childNode.getElementType() == JSTokenTypes.RPAR) { + int offset = childNode.getStartOffset(); + return new TextRange(offset, offset); + } + } + return null; + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithFunctionExpressionSurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithFunctionExpressionSurrounder.java index fd0c4258..1f648288 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithFunctionExpressionSurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithFunctionExpressionSurrounder.java @@ -26,40 +26,34 @@ import consulo.language.psi.PsiElement; import consulo.project.Project; -public class JSWithFunctionExpressionSurrounder extends JSStatementSurrounder -{ - @Override - public String getTemplateDescription() - { - return JavaScriptLocalize.javascriptSurroundWithFunctionExpression().get(); - } - - @Override - protected String getStatementTemplate(final Project project, PsiElement context) - { - return "aaa = function () { }" + JSChangeUtil.getSemicolon(project); - } - - @Override - protected ASTNode getInsertBeforeNode(final ASTNode statementNode) - { - JSFunctionExpression stmt = getFunctionExpr(statementNode); - return stmt.getBody()[0].getLastChild().getNode(); - } - - private static JSFunctionExpression getFunctionExpr(final ASTNode statementNode) - { - return (JSFunctionExpression) ((JSAssignmentExpression) ((JSExpressionStatement) statementNode.getPsi()).getExpression()).getROperand(); - } - - @Override - protected TextRange getSurroundSelectionRange(final ASTNode statementNode) - { - JSFunctionExpression stmt = getFunctionExpr(statementNode); - ASTNode conditionNode = stmt.getNameIdentifier().getNode(); - int offset = conditionNode.getStartOffset(); - stmt.getParent().getNode().removeChild(conditionNode); - - return new TextRange(offset, offset); - } +public class JSWithFunctionExpressionSurrounder extends JSStatementSurrounder { + @Override + public String getTemplateDescription() { + return JavaScriptLocalize.javascriptSurroundWithFunctionExpression().get(); + } + + @Override + protected String getStatementTemplate(final Project project, PsiElement context) { + return "aaa = function () { }" + JSChangeUtil.getSemicolon(project); + } + + @Override + protected ASTNode getInsertBeforeNode(final ASTNode statementNode) { + JSFunctionExpression stmt = getFunctionExpr(statementNode); + return stmt.getBody()[0].getLastChild().getNode(); + } + + private static JSFunctionExpression getFunctionExpr(final ASTNode statementNode) { + return (JSFunctionExpression)((JSAssignmentExpression)((JSExpressionStatement)statementNode.getPsi()).getExpression()).getROperand(); + } + + @Override + protected TextRange getSurroundSelectionRange(final ASTNode statementNode) { + JSFunctionExpression stmt = getFunctionExpr(statementNode); + ASTNode conditionNode = stmt.getNameIdentifier().getNode(); + int offset = conditionNode.getStartOffset(); + stmt.getParent().getNode().removeChild(conditionNode); + + return new TextRange(offset, offset); + } } \ No newline at end of file diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithFunctionSurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithFunctionSurrounder.java index 713c9d12..3d15810b 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithFunctionSurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithFunctionSurrounder.java @@ -23,35 +23,30 @@ import consulo.language.psi.PsiElement; import consulo.project.Project; -public class JSWithFunctionSurrounder extends JSStatementSurrounder -{ - @Override - public String getTemplateDescription() - { - return JavaScriptLocalize.javascriptSurroundWithFunction().get(); - } +public class JSWithFunctionSurrounder extends JSStatementSurrounder { + @Override + public String getTemplateDescription() { + return JavaScriptLocalize.javascriptSurroundWithFunction().get(); + } - @Override - protected String getStatementTemplate(final Project project, PsiElement context) - { - return "function $name$() { }"; - } + @Override + protected String getStatementTemplate(final Project project, PsiElement context) { + return "function $name$() { }"; + } - @Override - protected ASTNode getInsertBeforeNode(final ASTNode statementNode) - { - JSFunction stmt = (JSFunction) statementNode.getPsi(); - return stmt.getBody()[0].getLastChild().getNode(); - } + @Override + protected ASTNode getInsertBeforeNode(final ASTNode statementNode) { + JSFunction stmt = (JSFunction)statementNode.getPsi(); + return stmt.getBody()[0].getLastChild().getNode(); + } - @Override - protected TextRange getSurroundSelectionRange(final ASTNode statementNode) - { - JSFunction stmt = (JSFunction) statementNode.getPsi(); - ASTNode conditionNode = stmt.getNameIdentifier().getNode(); - int offset = conditionNode.getStartOffset(); - stmt.getNode().removeChild(conditionNode); + @Override + protected TextRange getSurroundSelectionRange(final ASTNode statementNode) { + JSFunction stmt = (JSFunction)statementNode.getPsi(); + ASTNode conditionNode = stmt.getNameIdentifier().getNode(); + int offset = conditionNode.getStartOffset(); + stmt.getNode().removeChild(conditionNode); - return new TextRange(offset, offset); - } + return new TextRange(offset, offset); + } } \ No newline at end of file diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithIfElseSurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithIfElseSurrounder.java index 9c71d351..edf1dc8d 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithIfElseSurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithIfElseSurrounder.java @@ -24,17 +24,14 @@ * @author yole * @since 2005-07-12 */ -public class JSWithIfElseSurrounder extends JSWithIfSurrounder -{ - @Override - public String getTemplateDescription() - { - return JavaScriptLocalize.javascriptSurroundWithIfElse().get(); - } +public class JSWithIfElseSurrounder extends JSWithIfSurrounder { + @Override + public String getTemplateDescription() { + return JavaScriptLocalize.javascriptSurroundWithIfElse().get(); + } - @Override - protected String getStatementTemplate(final Project project, PsiElement context) - { - return "if (a) { } else { }"; - } + @Override + protected String getStatementTemplate(final Project project, PsiElement context) { + return "if (a) { } else { }"; + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithIfSurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithIfSurrounder.java index dd3492e8..d5e4a826 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithIfSurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithIfSurrounder.java @@ -28,36 +28,31 @@ * @author yole * @since 2005-07-12 */ -public class JSWithIfSurrounder extends JSStatementSurrounder -{ - @Override - public String getTemplateDescription() - { - return JavaScriptLocalize.javascriptSurroundWithIf().get(); - } +public class JSWithIfSurrounder extends JSStatementSurrounder { + @Override + public String getTemplateDescription() { + return JavaScriptLocalize.javascriptSurroundWithIf().get(); + } - @Override - @NonNls - protected String getStatementTemplate(final Project project, PsiElement context) - { - return "if(a) { }"; - } + @Override + @NonNls + protected String getStatementTemplate(final Project project, PsiElement context) { + return "if(a) { }"; + } - @Override - protected ASTNode getInsertBeforeNode(final ASTNode statementNode) - { - JSIfStatement stmt = (JSIfStatement) statementNode.getPsi(); - return stmt.getThen().getNode().getLastChildNode(); - } + @Override + protected ASTNode getInsertBeforeNode(final ASTNode statementNode) { + JSIfStatement stmt = (JSIfStatement)statementNode.getPsi(); + return stmt.getThen().getNode().getLastChildNode(); + } - @Override - protected TextRange getSurroundSelectionRange(final ASTNode statementNode) - { - JSIfStatement stmt = (JSIfStatement) statementNode.getPsi(); - ASTNode conditionNode = stmt.getCondition().getNode(); - int offset = conditionNode.getStartOffset(); - stmt.getNode().removeChild(conditionNode); + @Override + protected TextRange getSurroundSelectionRange(final ASTNode statementNode) { + JSIfStatement stmt = (JSIfStatement)statementNode.getPsi(); + ASTNode conditionNode = stmt.getCondition().getNode(); + int offset = conditionNode.getStartOffset(); + stmt.getNode().removeChild(conditionNode); - return new TextRange(offset, offset); - } + return new TextRange(offset, offset); + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithParenthesesSurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithParenthesesSurrounder.java index 267b0e15..5ed80841 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithParenthesesSurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithParenthesesSurrounder.java @@ -34,29 +34,25 @@ * @author yole * @since 2005-07-12 */ -public class JSWithParenthesesSurrounder implements Surrounder -{ - @Override - public String getTemplateDescription() - { - return JavaScriptLocalize.javascriptSurroundWithParenthesis().get(); - } +public class JSWithParenthesesSurrounder implements Surrounder { + @Override + public String getTemplateDescription() { + return JavaScriptLocalize.javascriptSurroundWithParenthesis().get(); + } - @Override - public boolean isApplicable(@Nonnull PsiElement[] elements) - { - return true; - } + @Override + public boolean isApplicable(@Nonnull PsiElement[] elements) { + return true; + } - @Override - @Nullable - public TextRange surroundElements(@Nonnull Project project, @Nonnull Editor editor, @Nonnull PsiElement[] elements) throws - IncorrectOperationException - { - JSExpression expr = (JSExpression) elements[0]; - ASTNode parenthExprNode = JSChangeUtil.createExpressionFromText(project, "(" + expr.getText() + ")").getNode(); - expr.getNode().getTreeParent().replaceChild(expr.getNode(), parenthExprNode); - int offset = parenthExprNode.getTextRange().getEndOffset(); - return new TextRange(offset, offset); - } + @Override + @Nullable + public TextRange surroundElements(@Nonnull Project project, @Nonnull Editor editor, @Nonnull PsiElement[] elements) + throws IncorrectOperationException { + JSExpression expr = (JSExpression)elements[0]; + ASTNode parenthExprNode = JSChangeUtil.createExpressionFromText(project, "(" + expr.getText() + ")").getNode(); + expr.getNode().getTreeParent().replaceChild(expr.getNode(), parenthExprNode); + int offset = parenthExprNode.getTextRange().getEndOffset(); + return new TextRange(offset, offset); + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryCatchFinallySurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryCatchFinallySurrounder.java index 5ce9d2d9..64ee1929 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryCatchFinallySurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryCatchFinallySurrounder.java @@ -32,53 +32,44 @@ * @author yole * @since 2005-07-12 */ -public class JSWithTryCatchFinallySurrounder extends JSStatementSurrounder -{ - @Override - public String getTemplateDescription() - { - return JavaScriptLocalize.javascriptSurroundWithTryCatchFinally().get(); - } +public class JSWithTryCatchFinallySurrounder extends JSStatementSurrounder { + @Override + public String getTemplateDescription() { + return JavaScriptLocalize.javascriptSurroundWithTryCatchFinally().get(); + } - @Override - @NonNls - protected String getStatementTemplate(final Project project, PsiElement context) - { - return "try { } catch(e" + getExceptionVarTypeBasedOnContext(context) + ") { } finally { }"; - } + @Override + @NonNls + protected String getStatementTemplate(final Project project, PsiElement context) { + return "try { } catch(e" + getExceptionVarTypeBasedOnContext(context) + ") { } finally { }"; + } - protected static String getExceptionVarTypeBasedOnContext(@Nonnull PsiElement context) - { - if(context.getContainingFile().getLanguage() == JavaScriptSupportLoader.ECMA_SCRIPT_L4) - { - return ":Error"; - } - return ""; - } + protected static String getExceptionVarTypeBasedOnContext(@Nonnull PsiElement context) { + if (context.getContainingFile().getLanguage() == JavaScriptSupportLoader.ECMA_SCRIPT_L4) { + return ":Error"; + } + return ""; + } - @Override - protected ASTNode getInsertBeforeNode(final ASTNode statementNode) - { - JSTryStatement stmt = (JSTryStatement) statementNode.getPsi(); - return stmt.getStatement().getLastChild().getNode(); - } + @Override + protected ASTNode getInsertBeforeNode(final ASTNode statementNode) { + JSTryStatement stmt = (JSTryStatement)statementNode.getPsi(); + return stmt.getStatement().getLastChild().getNode(); + } - @Override - protected TextRange getSurroundSelectionRange(final ASTNode statementNode) - { - JSTryStatement stmt = (JSTryStatement) statementNode.getPsi(); - final JSCatchBlock catchBlock = stmt.getCatchBlock(); - if(catchBlock != null) - { - int offset = catchBlock.getStatement().getFirstChild().getNode().getStartOffset() + 1; - return new TextRange(offset, offset); - } - final JSStatement finallyStmt = stmt.getFinallyStatement(); - if(finallyStmt != null) - { - int offset = finallyStmt.getFirstChild().getNode().getStartOffset() + 1; - return new TextRange(offset, offset); - } - return null; - } + @Override + protected TextRange getSurroundSelectionRange(final ASTNode statementNode) { + JSTryStatement stmt = (JSTryStatement)statementNode.getPsi(); + final JSCatchBlock catchBlock = stmt.getCatchBlock(); + if (catchBlock != null) { + int offset = catchBlock.getStatement().getFirstChild().getNode().getStartOffset() + 1; + return new TextRange(offset, offset); + } + final JSStatement finallyStmt = stmt.getFinallyStatement(); + if (finallyStmt != null) { + int offset = finallyStmt.getFirstChild().getNode().getStartOffset() + 1; + return new TextRange(offset, offset); + } + return null; + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryCatchSurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryCatchSurrounder.java index c5f918d6..44397c6b 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryCatchSurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryCatchSurrounder.java @@ -24,17 +24,14 @@ * @author yole * @since 2005-07-12 */ -public class JSWithTryCatchSurrounder extends JSWithTryCatchFinallySurrounder -{ - @Override - public String getTemplateDescription() - { - return JavaScriptLocalize.javascriptSurroundWithTryCatch().get(); - } +public class JSWithTryCatchSurrounder extends JSWithTryCatchFinallySurrounder { + @Override + public String getTemplateDescription() { + return JavaScriptLocalize.javascriptSurroundWithTryCatch().get(); + } - @Override - protected String getStatementTemplate(final Project project, PsiElement context) - { - return "try { } catch(e" + getExceptionVarTypeBasedOnContext(context) + ") { }"; - } + @Override + protected String getStatementTemplate(final Project project, PsiElement context) { + return "try { } catch(e" + getExceptionVarTypeBasedOnContext(context) + ") { }"; + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryFinallySurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryFinallySurrounder.java index 79caef66..9c56f549 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryFinallySurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryFinallySurrounder.java @@ -24,17 +24,14 @@ * @author yole * @since 2005-07-12 */ -public class JSWithTryFinallySurrounder extends JSWithTryCatchFinallySurrounder -{ - @Override - public String getTemplateDescription() - { - return JavaScriptLocalize.javascriptSurroundWithTryFinally().get(); - } +public class JSWithTryFinallySurrounder extends JSWithTryCatchFinallySurrounder { + @Override + public String getTemplateDescription() { + return JavaScriptLocalize.javascriptSurroundWithTryFinally().get(); + } - @Override - protected String getStatementTemplate(final Project project, PsiElement context) - { - return "try { } finally { }"; - } + @Override + protected String getStatementTemplate(final Project project, PsiElement context) { + return "try { } finally { }"; + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithWhileSurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithWhileSurrounder.java index aa269fb2..f7b1a6ac 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithWhileSurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithWhileSurrounder.java @@ -27,31 +27,26 @@ * @author yole * @since 2005-07-12 */ -public class JSWithWhileSurrounder extends JSStatementSurrounder -{ - @Override - public String getTemplateDescription() - { - return JavaScriptLocalize.javascriptSurroundWithWhile().get(); - } +public class JSWithWhileSurrounder extends JSStatementSurrounder { + @Override + public String getTemplateDescription() { + return JavaScriptLocalize.javascriptSurroundWithWhile().get(); + } - @Override - protected String getStatementTemplate(final Project project, PsiElement context) - { - return "while(true) { }"; - } + @Override + protected String getStatementTemplate(final Project project, PsiElement context) { + return "while(true) { }"; + } - @Override - protected ASTNode getInsertBeforeNode(ASTNode statementNode) - { - JSWhileStatement stmt = (JSWhileStatement) statementNode.getPsi(); - return stmt.getBody().getLastChild().getNode(); - } + @Override + protected ASTNode getInsertBeforeNode(ASTNode statementNode) { + JSWhileStatement stmt = (JSWhileStatement)statementNode.getPsi(); + return stmt.getBody().getLastChild().getNode(); + } - @Override - protected TextRange getSurroundSelectionRange(final ASTNode statementNode) - { - JSWhileStatement stmt = (JSWhileStatement) statementNode.getPsi(); - return stmt.getCondition().getTextRange(); - } + @Override + protected TextRange getSurroundSelectionRange(final ASTNode statementNode) { + JSWhileStatement stmt = (JSWhileStatement)statementNode.getPsi(); + return stmt.getCondition().getTextRange(); + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithWithSurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithWithSurrounder.java index b0b00fb8..2f1b2044 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithWithSurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithWithSurrounder.java @@ -30,35 +30,30 @@ * Time: 19:34:54 * To change this template use File | Settings | File Templates. */ -public class JSWithWithSurrounder extends JSStatementSurrounder -{ - @Override - public String getTemplateDescription() - { - return JavaScriptLocalize.javascriptSurroundWithWith().get(); - } +public class JSWithWithSurrounder extends JSStatementSurrounder { + @Override + public String getTemplateDescription() { + return JavaScriptLocalize.javascriptSurroundWithWith().get(); + } - @Override - protected String getStatementTemplate(final Project project, PsiElement context) - { - return "with(a) { }"; - } + @Override + protected String getStatementTemplate(final Project project, PsiElement context) { + return "with(a) { }"; + } - @Override - protected ASTNode getInsertBeforeNode(final ASTNode statementNode) - { - JSWithStatement stmt = (JSWithStatement) statementNode.getPsi(); - return stmt.getStatement().getLastChild().getNode(); - } + @Override + protected ASTNode getInsertBeforeNode(final ASTNode statementNode) { + JSWithStatement stmt = (JSWithStatement)statementNode.getPsi(); + return stmt.getStatement().getLastChild().getNode(); + } - @Override - protected TextRange getSurroundSelectionRange(final ASTNode statementNode) - { - JSWithStatement stmt = (JSWithStatement) statementNode.getPsi(); - ASTNode conditionNode = stmt.getExpression().getNode(); - int offset = conditionNode.getStartOffset(); - stmt.getNode().removeChild(conditionNode); + @Override + protected TextRange getSurroundSelectionRange(final ASTNode statementNode) { + JSWithStatement stmt = (JSWithStatement)statementNode.getPsi(); + ASTNode conditionNode = stmt.getExpression().getNode(); + int offset = conditionNode.getStartOffset(); + stmt.getNode().removeChild(conditionNode); - return new TextRange(offset, offset); - } + return new TextRange(offset, offset); + } } diff --git a/plugin/src/main/java/consulo/javascript/impl/JavaScriptIconDescriptorUpdater.java b/plugin/src/main/java/consulo/javascript/impl/JavaScriptIconDescriptorUpdater.java index e121fbd7..3b40f86a 100644 --- a/plugin/src/main/java/consulo/javascript/impl/JavaScriptIconDescriptorUpdater.java +++ b/plugin/src/main/java/consulo/javascript/impl/JavaScriptIconDescriptorUpdater.java @@ -37,175 +37,130 @@ * @since 05.12.2015 */ @ExtensionImpl -public class JavaScriptIconDescriptorUpdater implements IconDescriptorUpdater -{ - @RequiredReadAction - @Override - public void updateIcon(@Nonnull IconDescriptor iconDescriptor, @Nonnull PsiElement element, int flags) - { - if(element instanceof JSProperty) - { - if(element instanceof JSFunction && ((JSFunction) element).isGetProperty()) - { - iconDescriptor.setMainIcon(PlatformIconGroup.nodesPropertyread()); - } - else if(element instanceof JSFunction && ((JSFunction) element).isSetProperty()) - { - iconDescriptor.setMainIcon(PlatformIconGroup.nodesPropertywrite()); - } - else - { - iconDescriptor.setMainIcon(AllIcons.Nodes.Property); - } +public class JavaScriptIconDescriptorUpdater implements IconDescriptorUpdater { + @RequiredReadAction + @Override + public void updateIcon(@Nonnull IconDescriptor iconDescriptor, @Nonnull PsiElement element, int flags) { + if (element instanceof JSProperty) { + if (element instanceof JSFunction && ((JSFunction)element).isGetProperty()) { + iconDescriptor.setMainIcon(PlatformIconGroup.nodesPropertyread()); + } + else if (element instanceof JSFunction && ((JSFunction)element).isSetProperty()) { + iconDescriptor.setMainIcon(PlatformIconGroup.nodesPropertywrite()); + } + else { + iconDescriptor.setMainIcon(AllIcons.Nodes.Property); + } - JSExpression value = ((JSProperty) element).getValue(); - if(value instanceof JSFunctionExpression) - { - iconDescriptor.setMainIcon(AllIcons.Nodes.Function); - } + JSExpression value = ((JSProperty)element).getValue(); + if (value instanceof JSFunctionExpression) { + iconDescriptor.setMainIcon(AllIcons.Nodes.Function); + } - if(BitUtil.isSet(flags, Iconable.ICON_FLAG_VISIBILITY)) - { - iconDescriptor.setRightIcon(AllIcons.Nodes.C_public); - } - } - else if(element instanceof JSClass) - { - final JSAttributeList attributeList = ((JSClass) element).getAttributeList(); + if (BitUtil.isSet(flags, Iconable.ICON_FLAG_VISIBILITY)) { + iconDescriptor.setRightIcon(AllIcons.Nodes.C_public); + } + } + else if (element instanceof JSClass) { + final JSAttributeList attributeList = ((JSClass)element).getAttributeList(); - iconDescriptor.setMainIcon(((JSClass) element).isInterface() ? AllIcons.Nodes.Interface : AllIcons.Nodes.Class); - addStaticAndFinalIcons(iconDescriptor, attributeList); + iconDescriptor.setMainIcon(((JSClass)element).isInterface() ? AllIcons.Nodes.Interface : AllIcons.Nodes.Class); + addStaticAndFinalIcons(iconDescriptor, attributeList); - if(BitUtil.isSet(flags, Iconable.ICON_FLAG_VISIBILITY)) - { - final JSAttributeList.AccessType accessType = attributeList != null ? attributeList.getAccessType() : JSAttributeList.AccessType.PACKAGE_LOCAL; - iconDescriptor.setRightIcon(getAccessIcon(accessType)); - } - } - else if(element instanceof JSParameter) - { - iconDescriptor.setMainIcon(AllIcons.Nodes.Parameter); - if(BitUtil.isSet(flags, Iconable.ICON_FLAG_VISIBILITY)) - { - iconDescriptor.setRightIcon(AllIcons.Nodes.C_plocal); - } - } - else if(element instanceof JSVariable) - { - iconDescriptor.setMainIcon(AllIcons.Nodes.Variable); + if (BitUtil.isSet(flags, Iconable.ICON_FLAG_VISIBILITY)) { + final JSAttributeList.AccessType accessType = + attributeList != null ? attributeList.getAccessType() : JSAttributeList.AccessType.PACKAGE_LOCAL; + iconDescriptor.setRightIcon(getAccessIcon(accessType)); + } + } + else if (element instanceof JSParameter) { + iconDescriptor.setMainIcon(AllIcons.Nodes.Parameter); + if (BitUtil.isSet(flags, Iconable.ICON_FLAG_VISIBILITY)) { + iconDescriptor.setRightIcon(AllIcons.Nodes.C_plocal); + } + } + else if (element instanceof JSVariable) { + iconDescriptor.setMainIcon(AllIcons.Nodes.Variable); - final PsiElement grandParent = JSResolveUtil.findParent(element); + final PsiElement grandParent = JSResolveUtil.findParent(element); - if(grandParent instanceof JSClass) - { - final JSAttributeList attributeList = ((JSVariable) element).getAttributeList(); - if(attributeList != null) - { - addStaticAndFinalIcons(iconDescriptor, attributeList); + if (grandParent instanceof JSClass) { + final JSAttributeList attributeList = ((JSVariable)element).getAttributeList(); + if (attributeList != null) { + addStaticAndFinalIcons(iconDescriptor, attributeList); - if(BitUtil.isSet(flags, Iconable.ICON_FLAG_VISIBILITY)) - { - iconDescriptor.setRightIcon(getAccessIcon(attributeList.getAccessType())); - } - } - else - { - if(BitUtil.isSet(flags, Iconable.ICON_FLAG_VISIBILITY)) - { - iconDescriptor.setRightIcon(getAccessIcon(JSAttributeList.AccessType.PUBLIC)); - } - } - } - else if(grandParent instanceof JSBlockStatement || grandParent instanceof JSLoopStatement) - { - if(BitUtil.isSet(flags, Iconable.ICON_FLAG_VISIBILITY)) - { - iconDescriptor.setRightIcon(AllIcons.Nodes.C_private); - } - } - else - { - if(BitUtil.isSet(flags, Iconable.ICON_FLAG_VISIBILITY)) - { - iconDescriptor.setRightIcon(AllIcons.Nodes.C_public); - } - } - } - else if(element instanceof JSNamespaceDeclaration) - { - iconDescriptor.setMainIcon(AllIcons.Nodes.Package); - } - else if(element instanceof JSFunction) - { - iconDescriptor.setMainIcon(AllIcons.Nodes.Function); + if (BitUtil.isSet(flags, Iconable.ICON_FLAG_VISIBILITY)) { + iconDescriptor.setRightIcon(getAccessIcon(attributeList.getAccessType())); + } + } + else if (BitUtil.isSet(flags, Iconable.ICON_FLAG_VISIBILITY)) { + iconDescriptor.setRightIcon(getAccessIcon(JSAttributeList.AccessType.PUBLIC)); + } + } + else if (grandParent instanceof JSBlockStatement || grandParent instanceof JSLoopStatement) { + if (BitUtil.isSet(flags, Iconable.ICON_FLAG_VISIBILITY)) { + iconDescriptor.setRightIcon(AllIcons.Nodes.C_private); + } + } + else if (BitUtil.isSet(flags, Iconable.ICON_FLAG_VISIBILITY)) { + iconDescriptor.setRightIcon(AllIcons.Nodes.C_public); + } + } + else if (element instanceof JSNamespaceDeclaration) { + iconDescriptor.setMainIcon(AllIcons.Nodes.Package); + } + else if (element instanceof JSFunction) { + iconDescriptor.setMainIcon(AllIcons.Nodes.Function); - final PsiElement parent = JSResolveUtil.findParent(element); - if(parent instanceof JSBlockStatement) - { - if(BitUtil.isSet(flags, Iconable.ICON_FLAG_VISIBILITY)) - { - iconDescriptor.setRightIcon(AllIcons.Nodes.C_private); - } - } - else if(parent instanceof JSClass) - { - final JSAttributeList attributeList = ((JSFunction) element).getAttributeList(); - if(attributeList != null) - { - addStaticAndFinalIcons(iconDescriptor, attributeList); - if(BitUtil.isSet(flags, Iconable.ICON_FLAG_VISIBILITY)) - { - iconDescriptor.setRightIcon(getAccessIcon(attributeList.getAccessType())); - } - } - else - { - if(BitUtil.isSet(flags, Iconable.ICON_FLAG_VISIBILITY)) - { - iconDescriptor.setRightIcon(getAccessIcon(JSAttributeList.AccessType.PUBLIC)); - } - } - } - else - { - if(BitUtil.isSet(flags, Iconable.ICON_FLAG_VISIBILITY)) - { - iconDescriptor.setRightIcon(getAccessIcon(JSAttributeList.AccessType.PUBLIC)); - } - } - } - } + final PsiElement parent = JSResolveUtil.findParent(element); + if (parent instanceof JSBlockStatement) { + if (BitUtil.isSet(flags, Iconable.ICON_FLAG_VISIBILITY)) { + iconDescriptor.setRightIcon(AllIcons.Nodes.C_private); + } + } + else if (parent instanceof JSClass) { + final JSAttributeList attributeList = ((JSFunction)element).getAttributeList(); + if (attributeList != null) { + addStaticAndFinalIcons(iconDescriptor, attributeList); + if (BitUtil.isSet(flags, Iconable.ICON_FLAG_VISIBILITY)) { + iconDescriptor.setRightIcon(getAccessIcon(attributeList.getAccessType())); + } + } + else if (BitUtil.isSet(flags, Iconable.ICON_FLAG_VISIBILITY)) { + iconDescriptor.setRightIcon(getAccessIcon(JSAttributeList.AccessType.PUBLIC)); + } + } + else if (BitUtil.isSet(flags, Iconable.ICON_FLAG_VISIBILITY)) { + iconDescriptor.setRightIcon(getAccessIcon(JSAttributeList.AccessType.PUBLIC)); + } + } + } - @Nullable - public Image getAccessIcon(JSAttributeList.AccessType accessType) - { - switch(accessType) - { - case PUBLIC: - return AllIcons.Nodes.C_public; - case PRIVATE: - return AllIcons.Nodes.C_private; - case PROTECTED: - return AllIcons.Nodes.C_protected; - case PACKAGE_LOCAL: - return AllIcons.Nodes.C_plocal; - } - return null; - } + @Nullable + public Image getAccessIcon(JSAttributeList.AccessType accessType) { + switch (accessType) { + case PUBLIC: + return AllIcons.Nodes.C_public; + case PRIVATE: + return AllIcons.Nodes.C_private; + case PROTECTED: + return AllIcons.Nodes.C_protected; + case PACKAGE_LOCAL: + return AllIcons.Nodes.C_plocal; + } + return null; + } - private static void addStaticAndFinalIcons(IconDescriptor iconDescriptor, JSAttributeList attrList) - { - if(attrList == null) - { - return; - } - if(attrList.hasModifier(JSAttributeList.ModifierType.STATIC) || attrList.hasModifier(JSAttributeList.ModifierType.DYNAMIC)) // dynamic? - { - iconDescriptor.addLayerIcon(AllIcons.Nodes.StaticMark); - } - if(attrList.hasModifier(JSAttributeList.ModifierType.FINAL)) - { - iconDescriptor.addLayerIcon(AllIcons.Nodes.FinalMark); - } - } + private static void addStaticAndFinalIcons(IconDescriptor iconDescriptor, JSAttributeList attrList) { + if (attrList == null) { + return; + } + if (attrList.hasModifier(JSAttributeList.ModifierType.STATIC) || attrList.hasModifier(JSAttributeList.ModifierType.DYNAMIC)) // dynamic? + { + iconDescriptor.addLayerIcon(AllIcons.Nodes.StaticMark); + } + if (attrList.hasModifier(JSAttributeList.ModifierType.FINAL)) { + iconDescriptor.addLayerIcon(AllIcons.Nodes.FinalMark); + } + } } diff --git a/plugin/src/main/java/consulo/javascript/impl/copyright/UpdateJavaScriptFileCopyright.java b/plugin/src/main/java/consulo/javascript/impl/copyright/UpdateJavaScriptFileCopyright.java index 752e7313..b7dcfa0d 100644 --- a/plugin/src/main/java/consulo/javascript/impl/copyright/UpdateJavaScriptFileCopyright.java +++ b/plugin/src/main/java/consulo/javascript/impl/copyright/UpdateJavaScriptFileCopyright.java @@ -25,46 +25,36 @@ import consulo.language.psi.PsiWhiteSpace; import jakarta.annotation.Nonnull; -public class UpdateJavaScriptFileCopyright extends UpdatePsiFileCopyright -{ - public UpdateJavaScriptFileCopyright(@Nonnull PsiFile psiFile, @Nonnull CopyrightProfile copyrightProfile) - { - super(psiFile, copyrightProfile); - } +public class UpdateJavaScriptFileCopyright extends UpdatePsiFileCopyright { + public UpdateJavaScriptFileCopyright(@Nonnull PsiFile psiFile, @Nonnull CopyrightProfile copyrightProfile) { + super(psiFile, copyrightProfile); + } - protected void scanFile() - { - PsiElement first = getFile().getFirstChild(); - if(first != null) - { - final PsiElement child = first.getFirstChild(); - if(child instanceof PsiComment) - { - first = child; - } - } - PsiElement last = first; - PsiElement next = first; - while(next != null) - { - if(next instanceof PsiComment || next instanceof PsiWhiteSpace) - { - next = getNextSibling(next); - } - else - { - break; - } - last = next; - } + protected void scanFile() { + PsiElement first = getFile().getFirstChild(); + if (first != null) { + final PsiElement child = first.getFirstChild(); + if (child instanceof PsiComment) { + first = child; + } + } + PsiElement last = first; + PsiElement next = first; + while (next != null) { + if (next instanceof PsiComment || next instanceof PsiWhiteSpace) { + next = getNextSibling(next); + } + else { + break; + } + last = next; + } - if(first != null) - { - checkComments(first, last, true); - } - else - { - checkComments(null, null, true); - } - } + if (first != null) { + checkComments(first, last, true); + } + else { + checkComments(null, null, true); + } + } } \ No newline at end of file diff --git a/plugin/src/main/java/consulo/javascript/impl/copyright/UpdateJavaScriptFileCopyrightProvider.java b/plugin/src/main/java/consulo/javascript/impl/copyright/UpdateJavaScriptFileCopyrightProvider.java index 2d08111a..585a489c 100644 --- a/plugin/src/main/java/consulo/javascript/impl/copyright/UpdateJavaScriptFileCopyrightProvider.java +++ b/plugin/src/main/java/consulo/javascript/impl/copyright/UpdateJavaScriptFileCopyrightProvider.java @@ -18,33 +18,32 @@ * @since 16.02.2015 */ @ExtensionImpl -public class UpdateJavaScriptFileCopyrightProvider extends UpdateCopyrightsProvider -{ - @Nonnull - @Override - public FileType getFileType() - { - return JavaScriptFileType.INSTANCE; - } +public class UpdateJavaScriptFileCopyrightProvider extends UpdateCopyrightsProvider { + @Nonnull + @Override + public FileType getFileType() { + return JavaScriptFileType.INSTANCE; + } - @Nonnull - @Override - public UpdatePsiFileCopyright createInstance(@Nonnull PsiFile file, @Nonnull CopyrightProfile copyrightProfile) - { - return new UpdateJavaScriptFileCopyright(file, copyrightProfile); - } + @Nonnull + @Override + public UpdatePsiFileCopyright createInstance(@Nonnull PsiFile file, @Nonnull CopyrightProfile copyrightProfile) { + return new UpdateJavaScriptFileCopyright(file, copyrightProfile); + } - @Nonnull - @Override - public CopyrightFileConfig createDefaultOptions() - { - return new CopyrightFileConfig(); - } + @Nonnull + @Override + public CopyrightFileConfig createDefaultOptions() { + return new CopyrightFileConfig(); + } - @Nonnull - @Override - public TemplateCommentPanel createConfigurable(@Nonnull Project project, @Nonnull TemplateCommentPanel parentPane, @Nonnull FileType fileType) - { - return new TemplateCommentPanel(fileType, parentPane, project); - } + @Nonnull + @Override + public TemplateCommentPanel createConfigurable( + @Nonnull Project project, + @Nonnull TemplateCommentPanel parentPane, + @Nonnull FileType fileType + ) { + return new TemplateCommentPanel(fileType, parentPane, project); + } } diff --git a/plugin/src/main/java/consulo/javascript/impl/findUsages/JavaScriptFindUsagesHandlerFactory.java b/plugin/src/main/java/consulo/javascript/impl/findUsages/JavaScriptFindUsagesHandlerFactory.java index 4ce94cc9..820a60f0 100644 --- a/plugin/src/main/java/consulo/javascript/impl/findUsages/JavaScriptFindUsagesHandlerFactory.java +++ b/plugin/src/main/java/consulo/javascript/impl/findUsages/JavaScriptFindUsagesHandlerFactory.java @@ -14,21 +14,17 @@ * @since 2019-12-16 */ @ExtensionImpl -public class JavaScriptFindUsagesHandlerFactory extends FindUsagesHandlerFactory -{ - @Override - public boolean canFindUsages(@Nonnull PsiElement element) - { - return element instanceof JSDefinitionExpression; - } +public class JavaScriptFindUsagesHandlerFactory extends FindUsagesHandlerFactory { + @Override + public boolean canFindUsages(@Nonnull PsiElement element) { + return element instanceof JSDefinitionExpression; + } - @Nullable - @Override - public FindUsagesHandler createFindUsagesHandler(@Nonnull PsiElement element, boolean forHighlightUsages) - { - return new FindUsagesHandler(element) - { + @Nullable + @Override + public FindUsagesHandler createFindUsagesHandler(@Nonnull PsiElement element, boolean forHighlightUsages) { + return new FindUsagesHandler(element) { - }; - } + }; + } } diff --git a/plugin/src/main/java/consulo/javascript/impl/formatter/JavaScriptCodeStyleConfigurable.java b/plugin/src/main/java/consulo/javascript/impl/formatter/JavaScriptCodeStyleConfigurable.java index 7af99a38..63d90bed 100644 --- a/plugin/src/main/java/consulo/javascript/impl/formatter/JavaScriptCodeStyleConfigurable.java +++ b/plugin/src/main/java/consulo/javascript/impl/formatter/JavaScriptCodeStyleConfigurable.java @@ -10,22 +10,18 @@ * @author VISTALL * @since 16.02.2015 */ -public class JavaScriptCodeStyleConfigurable extends CodeStyleAbstractConfigurable -{ - public JavaScriptCodeStyleConfigurable(@Nonnull CodeStyleSettings settings, CodeStyleSettings cloneSettings) - { - super(settings, cloneSettings, "JavaScript"); - } +public class JavaScriptCodeStyleConfigurable extends CodeStyleAbstractConfigurable { + public JavaScriptCodeStyleConfigurable(@Nonnull CodeStyleSettings settings, CodeStyleSettings cloneSettings) { + super(settings, cloneSettings, "JavaScript"); + } - @Override - protected CodeStyleAbstractPanel createPanel(CodeStyleSettings settings) - { - return new JavaScriptCodeStylePanel(getCurrentSettings(), settings); - } + @Override + protected CodeStyleAbstractPanel createPanel(CodeStyleSettings settings) { + return new JavaScriptCodeStylePanel(getCurrentSettings(), settings); + } - @Override - public String getHelpTopic() - { - return "reference.settingsdialog.codestyle.javascript"; - } + @Override + public String getHelpTopic() { + return "reference.settingsdialog.codestyle.javascript"; + } } \ No newline at end of file diff --git a/plugin/src/main/java/consulo/javascript/impl/formatter/JavaScriptCodeStylePanel.java b/plugin/src/main/java/consulo/javascript/impl/formatter/JavaScriptCodeStylePanel.java index 1ef0d456..85492813 100644 --- a/plugin/src/main/java/consulo/javascript/impl/formatter/JavaScriptCodeStylePanel.java +++ b/plugin/src/main/java/consulo/javascript/impl/formatter/JavaScriptCodeStylePanel.java @@ -9,17 +9,14 @@ * @author VISTALL * @since 16.02.2015 */ -public class JavaScriptCodeStylePanel extends TabbedLanguageCodeStylePanel -{ - public JavaScriptCodeStylePanel(CodeStyleSettings currentSettings, CodeStyleSettings cloneSettings) - { - super(JavaScriptLanguage.INSTANCE, currentSettings, cloneSettings); - } +public class JavaScriptCodeStylePanel extends TabbedLanguageCodeStylePanel { + public JavaScriptCodeStylePanel(CodeStyleSettings currentSettings, CodeStyleSettings cloneSettings) { + super(JavaScriptLanguage.INSTANCE, currentSettings, cloneSettings); + } - @Override - protected void initTabs(CodeStyleSettings settings) - { - super.initTabs(settings); - addTab(new JSCodeStylePanel(settings)); - } + @Override + protected void initTabs(CodeStyleSettings settings) { + super.initTabs(settings); + addTab(new JSCodeStylePanel(settings)); + } } diff --git a/plugin/src/main/java/consulo/javascript/impl/formatter/JavaScriptLanguageCodeStyleSettingsProvider.java b/plugin/src/main/java/consulo/javascript/impl/formatter/JavaScriptLanguageCodeStyleSettingsProvider.java index e94004bf..3242968a 100644 --- a/plugin/src/main/java/consulo/javascript/impl/formatter/JavaScriptLanguageCodeStyleSettingsProvider.java +++ b/plugin/src/main/java/consulo/javascript/impl/formatter/JavaScriptLanguageCodeStyleSettingsProvider.java @@ -11,6 +11,7 @@ import consulo.util.io.FileUtil; import jakarta.annotation.Nonnull; + import java.io.IOException; /** @@ -18,83 +19,124 @@ * @since 16.02.2015 */ @ExtensionImpl -public class JavaScriptLanguageCodeStyleSettingsProvider extends LanguageCodeStyleSettingsProvider -{ - @Override - public IndentOptionsEditor getIndentOptionsEditor() - { - return new SmartIndentOptionsEditor(); - } +public class JavaScriptLanguageCodeStyleSettingsProvider extends LanguageCodeStyleSettingsProvider { + @Override + public IndentOptionsEditor getIndentOptionsEditor() { + return new SmartIndentOptionsEditor(); + } - @Override - public CommonCodeStyleSettings getDefaultCommonSettings() - { - CommonCodeStyleSettings defaultSettings = new CommonCodeStyleSettings(getLanguage()); - CommonCodeStyleSettings.IndentOptions indentOptions = defaultSettings.initIndentOptions(); - indentOptions.INDENT_SIZE = 2; - indentOptions.CONTINUATION_INDENT_SIZE = 4; - indentOptions.TAB_SIZE = 2; + @Override + public CommonCodeStyleSettings getDefaultCommonSettings() { + CommonCodeStyleSettings defaultSettings = new CommonCodeStyleSettings(getLanguage()); + CommonCodeStyleSettings.IndentOptions indentOptions = defaultSettings.initIndentOptions(); + indentOptions.INDENT_SIZE = 2; + indentOptions.CONTINUATION_INDENT_SIZE = 4; + indentOptions.TAB_SIZE = 2; - defaultSettings.KEEP_LINE_BREAKS = false; + defaultSettings.KEEP_LINE_BREAKS = false; - return defaultSettings; - } + return defaultSettings; + } - @Nonnull - @Override - public Language getLanguage() - { - return JavaScriptLanguage.INSTANCE; - } + @Nonnull + @Override + public Language getLanguage() { + return JavaScriptLanguage.INSTANCE; + } - @Override - public void customizeSettings(@Nonnull CodeStyleSettingsCustomizable consumer, @Nonnull SettingsType settingsType) - { - if(settingsType == SettingsType.SPACING_SETTINGS) - { - consumer.showStandardOptions("SPACE_BEFORE_METHOD_CALL_PARENTHESES", "SPACE_BEFORE_METHOD_PARENTHESES", "SPACE_BEFORE_IF_PARENTHESES", - "SPACE_BEFORE_WHILE_PARENTHESES", "SPACE_BEFORE_FOR_PARENTHESES", "SPACE_BEFORE_CATCH_PARENTHESES", - "SPACE_BEFORE_SWITCH_PARENTHESES", "SPACE_AROUND_ASSIGNMENT_OPERATORS", "SPACE_AROUND_LOGICAL_OPERATORS", - "SPACE_AROUND_EQUALITY_OPERATORS", "SPACE_AROUND_RELATIONAL_OPERATORS", "SPACE_AROUND_ADDITIVE_OPERATORS", - "SPACE_AROUND_MULTIPLICATIVE_OPERATORS", "SPACE_AROUND_SHIFT_OPERATORS", "SPACE_BEFORE_CLASS_LBRACE", - "SPACE_BEFORE_METHOD_LBRACE", "SPACE_BEFORE_IF_LBRACE", "SPACE_BEFORE_ELSE_LBRACE", "SPACE_BEFORE_WHILE_LBRACE", - "SPACE_BEFORE_FOR_LBRACE", "SPACE_BEFORE_SWITCH_LBRACE", "SPACE_BEFORE_TRY_LBRACE", "SPACE_BEFORE_CATCH_LBRACE", - "SPACE_BEFORE_WHILE_KEYWORD", "SPACE_BEFORE_ELSE_KEYWORD", "SPACE_BEFORE_CATCH_KEYWORD", "SPACE_WITHIN_METHOD_CALL_PARENTHESES", - "SPACE_WITHIN_METHOD_PARENTHESES", "SPACE_WITHIN_IF_PARENTHESES", "SPACE_WITHIN_WHILE_PARENTHESES", - "SPACE_WITHIN_FOR_PARENTHESES", "SPACE_WITHIN_CATCH_PARENTHESES", "SPACE_WITHIN_SWITCH_PARENTHESES", "SPACE_BEFORE_QUEST", - "SPACE_AFTER_QUEST", "SPACE_BEFORE_COLON", "SPACE_AFTER_COLON", "SPACE_AFTER_COMMA", "SPACE_AFTER_COMMA_IN_TYPE_ARGUMENTS", - "SPACE_BEFORE_COMMA", "SPACE_AROUND_UNARY_OPERATOR", "SPACE_WITHIN_BRACKETS", "SPACE_BEFORE_METHOD_PARENTHESES"); - } - else if(settingsType == SettingsType.BLANK_LINES_SETTINGS) - { - consumer.showStandardOptions("KEEP_BLANK_LINES_IN_CODE"); - } - else if(settingsType == SettingsType.WRAPPING_AND_BRACES_SETTINGS) - { - consumer.showStandardOptions("KEEP_LINE_BREAKS", "KEEP_FIRST_COLUMN_COMMENT", "BRACE_STYLE", "CLASS_BRACE_STYLE", "METHOD_BRACE_STYLE", - "CALL_PARAMETERS_WRAP", "CALL_PARAMETERS_LPAREN_ON_NEXT_LINE", "CALL_PARAMETERS_RPAREN_ON_NEXT_LINE", "METHOD_PARAMETERS_WRAP", - "METHOD_PARAMETERS_LPAREN_ON_NEXT_LINE", "METHOD_PARAMETERS_RPAREN_ON_NEXT_LINE", "ELSE_ON_NEW_LINE", "WHILE_ON_NEW_LINE", - "CATCH_ON_NEW_LINE", "ALIGN_MULTILINE_PARAMETERS", "ALIGN_MULTILINE_PARAMETERS_IN_CALLS", "ALIGN_MULTILINE_BINARY_OPERATION", - "BINARY_OPERATION_WRAP", "BINARY_OPERATION_SIGN_ON_NEXT_LINE", "TERNARY_OPERATION_WRAP", "TERNARY_OPERATION_SIGNS_ON_NEXT_LINE", - "PARENTHESES_EXPRESSION_LPAREN_WRAP", "PARENTHESES_EXPRESSION_RPAREN_WRAP", "ALIGN_MULTILINE_TERNARY_OPERATION"); - } - } + @Override + public void customizeSettings(@Nonnull CodeStyleSettingsCustomizable consumer, @Nonnull SettingsType settingsType) { + if (settingsType == SettingsType.SPACING_SETTINGS) { + consumer.showStandardOptions( + "SPACE_BEFORE_METHOD_CALL_PARENTHESES", + "SPACE_BEFORE_METHOD_PARENTHESES", + "SPACE_BEFORE_IF_PARENTHESES", + "SPACE_BEFORE_WHILE_PARENTHESES", + "SPACE_BEFORE_FOR_PARENTHESES", + "SPACE_BEFORE_CATCH_PARENTHESES", + "SPACE_BEFORE_SWITCH_PARENTHESES", + "SPACE_AROUND_ASSIGNMENT_OPERATORS", + "SPACE_AROUND_LOGICAL_OPERATORS", + "SPACE_AROUND_EQUALITY_OPERATORS", + "SPACE_AROUND_RELATIONAL_OPERATORS", + "SPACE_AROUND_ADDITIVE_OPERATORS", + "SPACE_AROUND_MULTIPLICATIVE_OPERATORS", + "SPACE_AROUND_SHIFT_OPERATORS", + "SPACE_BEFORE_CLASS_LBRACE", + "SPACE_BEFORE_METHOD_LBRACE", + "SPACE_BEFORE_IF_LBRACE", + "SPACE_BEFORE_ELSE_LBRACE", + "SPACE_BEFORE_WHILE_LBRACE", + "SPACE_BEFORE_FOR_LBRACE", + "SPACE_BEFORE_SWITCH_LBRACE", + "SPACE_BEFORE_TRY_LBRACE", + "SPACE_BEFORE_CATCH_LBRACE", + "SPACE_BEFORE_WHILE_KEYWORD", + "SPACE_BEFORE_ELSE_KEYWORD", + "SPACE_BEFORE_CATCH_KEYWORD", + "SPACE_WITHIN_METHOD_CALL_PARENTHESES", + "SPACE_WITHIN_METHOD_PARENTHESES", + "SPACE_WITHIN_IF_PARENTHESES", + "SPACE_WITHIN_WHILE_PARENTHESES", + "SPACE_WITHIN_FOR_PARENTHESES", + "SPACE_WITHIN_CATCH_PARENTHESES", + "SPACE_WITHIN_SWITCH_PARENTHESES", + "SPACE_BEFORE_QUEST", + "SPACE_AFTER_QUEST", + "SPACE_BEFORE_COLON", + "SPACE_AFTER_COLON", + "SPACE_AFTER_COMMA", + "SPACE_AFTER_COMMA_IN_TYPE_ARGUMENTS", + "SPACE_BEFORE_COMMA", + "SPACE_AROUND_UNARY_OPERATOR", + "SPACE_WITHIN_BRACKETS", + "SPACE_BEFORE_METHOD_PARENTHESES" + ); + } + else if (settingsType == SettingsType.BLANK_LINES_SETTINGS) { + consumer.showStandardOptions("KEEP_BLANK_LINES_IN_CODE"); + } + else if (settingsType == SettingsType.WRAPPING_AND_BRACES_SETTINGS) { + consumer.showStandardOptions( + "KEEP_LINE_BREAKS", + "KEEP_FIRST_COLUMN_COMMENT", + "BRACE_STYLE", + "CLASS_BRACE_STYLE", + "METHOD_BRACE_STYLE", + "CALL_PARAMETERS_WRAP", + "CALL_PARAMETERS_LPAREN_ON_NEXT_LINE", + "CALL_PARAMETERS_RPAREN_ON_NEXT_LINE", + "METHOD_PARAMETERS_WRAP", + "METHOD_PARAMETERS_LPAREN_ON_NEXT_LINE", + "METHOD_PARAMETERS_RPAREN_ON_NEXT_LINE", + "ELSE_ON_NEW_LINE", + "WHILE_ON_NEW_LINE", + "CATCH_ON_NEW_LINE", + "ALIGN_MULTILINE_PARAMETERS", + "ALIGN_MULTILINE_PARAMETERS_IN_CALLS", + "ALIGN_MULTILINE_BINARY_OPERATION", + "BINARY_OPERATION_WRAP", + "BINARY_OPERATION_SIGN_ON_NEXT_LINE", + "TERNARY_OPERATION_WRAP", + "TERNARY_OPERATION_SIGNS_ON_NEXT_LINE", + "PARENTHESES_EXPRESSION_LPAREN_WRAP", + "PARENTHESES_EXPRESSION_RPAREN_WRAP", + "ALIGN_MULTILINE_TERNARY_OPERATION" + ); + } + } - @Override - public String getCodeSample(@Nonnull SettingsType settingsType) - { - return loadPreview("codeStyle.txt"); - } + @Override + public String getCodeSample(@Nonnull SettingsType settingsType) { + return loadPreview("codeStyle.txt"); + } - private static String loadPreview(String file) - { - try - { - return FileUtil.loadTextAndClose(JavaScriptLanguageCodeStyleSettingsProvider.class.getResourceAsStream("/codeStyle/" + file)); - } - catch(IOException e) - { - throw new Error(e); - } - } + private static String loadPreview(String file) { + try { + return FileUtil.loadTextAndClose(JavaScriptLanguageCodeStyleSettingsProvider.class.getResourceAsStream("/codeStyle/" + file)); + } + catch (IOException e) { + throw new Error(e); + } + } } diff --git a/plugin/src/main/java/consulo/javascript/impl/html/JavaScriptEmbeddedTokenHighlighter.java b/plugin/src/main/java/consulo/javascript/impl/html/JavaScriptEmbeddedTokenHighlighter.java index 8eea8195..5e515c57 100644 --- a/plugin/src/main/java/consulo/javascript/impl/html/JavaScriptEmbeddedTokenHighlighter.java +++ b/plugin/src/main/java/consulo/javascript/impl/html/JavaScriptEmbeddedTokenHighlighter.java @@ -14,14 +14,12 @@ * @since 2024-04-19 */ @ExtensionImpl -public class JavaScriptEmbeddedTokenHighlighter implements EmbeddedTokenHighlighter -{ - @Nonnull - @Override - public MultiMap getEmbeddedTokenAttributes(@Nonnull XMLLanguage language) - { - MultiMap keys = MultiMap.createLinked(); - JavaScriptHighlighter.storeDefaults(keys); - return keys; - } +public class JavaScriptEmbeddedTokenHighlighter implements EmbeddedTokenHighlighter { + @Nonnull + @Override + public MultiMap getEmbeddedTokenAttributes(@Nonnull XMLLanguage language) { + MultiMap keys = MultiMap.createLinked(); + JavaScriptHighlighter.storeDefaults(keys); + return keys; + } } diff --git a/plugin/src/main/java/consulo/javascript/impl/html/JavaScriptHtmlScriptContentProvider.java b/plugin/src/main/java/consulo/javascript/impl/html/JavaScriptHtmlScriptContentProvider.java index a1b03520..66a6f987 100644 --- a/plugin/src/main/java/consulo/javascript/impl/html/JavaScriptHtmlScriptContentProvider.java +++ b/plugin/src/main/java/consulo/javascript/impl/html/JavaScriptHtmlScriptContentProvider.java @@ -17,25 +17,21 @@ * @since 2024-04-19 */ @ExtensionImpl -public class JavaScriptHtmlScriptContentProvider implements HtmlScriptContentProvider -{ - @Override - public IElementType getScriptElementType() - { - return JSElementTypes.EMBEDDED_CONTENT; - } +public class JavaScriptHtmlScriptContentProvider implements HtmlScriptContentProvider { + @Override + public IElementType getScriptElementType() { + return JSElementTypes.EMBEDDED_CONTENT; + } - @Nullable - @Override - public Lexer getHighlightingLexer() - { - return new JavaScript15Lexer(); - } + @Nullable + @Override + public Lexer getHighlightingLexer() { + return new JavaScript15Lexer(); + } - @Nonnull - @Override - public Language getLanguage() - { - return JavaScriptLanguage.INSTANCE; - } + @Nonnull + @Override + public Language getLanguage() { + return JavaScriptLanguage.INSTANCE; + } } diff --git a/plugin/src/main/java/consulo/javascript/impl/ide/actions/JavaScriptCreateFileAction.java b/plugin/src/main/java/consulo/javascript/impl/ide/actions/JavaScriptCreateFileAction.java index a970fc86..94aba41c 100644 --- a/plugin/src/main/java/consulo/javascript/impl/ide/actions/JavaScriptCreateFileAction.java +++ b/plugin/src/main/java/consulo/javascript/impl/ide/actions/JavaScriptCreateFileAction.java @@ -23,72 +23,62 @@ * @author VISTALL * @since 06.12.2015 */ -public class JavaScriptCreateFileAction extends CreateFileFromTemplateAction -{ - public JavaScriptCreateFileAction() - { - super( - JavaScriptLocalize.actionJavascriptFileText(), - JavaScriptLocalize.actionJavascriptFileText(), - JavaScriptFileType.INSTANCE.getIcon() - ); - } +public class JavaScriptCreateFileAction extends CreateFileFromTemplateAction { + public JavaScriptCreateFileAction() { + super( + JavaScriptLocalize.actionJavascriptFileText(), + JavaScriptLocalize.actionJavascriptFileText(), + JavaScriptFileType.INSTANCE.getIcon() + ); + } - @Override - @RequiredUIAccess - protected boolean isAvailable(DataContext dataContext) - { - if(!super.isAvailable(dataContext)) - { - return false; - } - Module module = findModule(dataContext); - return module != null && ModuleUtilCore.getExtension(module, JavaScriptModuleExtension.class) != null; - } + @Override + @RequiredUIAccess + protected boolean isAvailable(DataContext dataContext) { + if (!super.isAvailable(dataContext)) { + return false; + } + Module module = findModule(dataContext); + return module != null && ModuleUtilCore.getExtension(module, JavaScriptModuleExtension.class) != null; + } - @Nullable - @Override - protected FileType getFileTypeForModuleResolve() - { - return JavaScriptFileType.INSTANCE; - } + @Nullable + @Override + protected FileType getFileTypeForModuleResolve() { + return JavaScriptFileType.INSTANCE; + } - @RequiredReadAction - private static Module findModule(DataContext dataContext) - { - Project project = dataContext.getData(CommonDataKeys.PROJECT); - assert project != null; - final IdeView view = dataContext.getData(IdeView.KEY); - if(view == null) - { - return null; - } + @RequiredReadAction + private static Module findModule(DataContext dataContext) { + Project project = dataContext.getData(CommonDataKeys.PROJECT); + assert project != null; + final IdeView view = dataContext.getData(IdeView.KEY); + if (view == null) { + return null; + } - final PsiDirectory directory = view.getOrChooseDirectory(); - if(directory == null) - { - return null; - } + final PsiDirectory directory = view.getOrChooseDirectory(); + if (directory == null) { + return null; + } - Module resolvedModule = NewFileModuleResolver.resolveModule(directory.getProject(), directory.getVirtualFile(), JavaScriptFileType.INSTANCE); - if(resolvedModule != null) - { - return resolvedModule; - } - return dataContext.getData(Module.KEY); - } + Module resolvedModule = + NewFileModuleResolver.resolveModule(directory.getProject(), directory.getVirtualFile(), JavaScriptFileType.INSTANCE); + if (resolvedModule != null) { + return resolvedModule; + } + return dataContext.getData(Module.KEY); + } - @Override - protected void buildDialog(Project project, PsiDirectory directory, CreateFileFromTemplateDialog.Builder builder) - { - builder.setTitle("Create JavaScript File"); + @Override + protected void buildDialog(Project project, PsiDirectory directory, CreateFileFromTemplateDialog.Builder builder) { + builder.setTitle("Create JavaScript File"); - builder.addKind("Empty File", JavaScriptFileType.INSTANCE.getIcon(), "JavaScriptFile"); - } + builder.addKind("Empty File", JavaScriptFileType.INSTANCE.getIcon(), "JavaScriptFile"); + } - @Override - protected String getActionName(PsiDirectory directory, String newName, String templateName) - { - return "Create JavaScript File"; - } + @Override + protected String getActionName(PsiDirectory directory, String newName, String templateName) { + return "Create JavaScript File"; + } } diff --git a/plugin/src/main/java/consulo/javascript/impl/ide/actions/JavaScriptFileTemplateContributor.java b/plugin/src/main/java/consulo/javascript/impl/ide/actions/JavaScriptFileTemplateContributor.java index db5ada54..9c216013 100644 --- a/plugin/src/main/java/consulo/javascript/impl/ide/actions/JavaScriptFileTemplateContributor.java +++ b/plugin/src/main/java/consulo/javascript/impl/ide/actions/JavaScriptFileTemplateContributor.java @@ -10,11 +10,9 @@ * @since 29-Aug-22 */ @ExtensionImpl -public class JavaScriptFileTemplateContributor implements FileTemplateContributor -{ - @Override - public void register(@Nonnull FileTemplateRegistrator fileTemplateRegistrator) - { - fileTemplateRegistrator.registerInternalTemplate("JavaScriptFile"); - } +public class JavaScriptFileTemplateContributor implements FileTemplateContributor { + @Override + public void register(@Nonnull FileTemplateRegistrator fileTemplateRegistrator) { + fileTemplateRegistrator.registerInternalTemplate("JavaScriptFile"); + } } diff --git a/plugin/src/main/java/consulo/javascript/impl/ide/completion/JavaScriptKeywordCompletionContributor.java b/plugin/src/main/java/consulo/javascript/impl/ide/completion/JavaScriptKeywordCompletionContributor.java index 0d4202db..adad88a8 100644 --- a/plugin/src/main/java/consulo/javascript/impl/ide/completion/JavaScriptKeywordCompletionContributor.java +++ b/plugin/src/main/java/consulo/javascript/impl/ide/completion/JavaScriptKeywordCompletionContributor.java @@ -37,58 +37,57 @@ * @since 20.12.2015 */ @ExtensionImpl -public class JavaScriptKeywordCompletionContributor extends CompletionContributor -{ - public JavaScriptKeywordCompletionContributor() - { - extend(CompletionType.BASIC, StandardPatterns.psiElement().withParent(JSReferenceExpression.class), new CompletionProvider() - { - @RequiredReadAction - @Override - public void addCompletions(@Nonnull CompletionParameters parameters, ProcessingContext context, @Nonnull CompletionResultSet result) - { - PsiElement position = parameters.getPosition(); - JSReferenceExpression parent = (JSReferenceExpression) position.getParent(); - if(parent.getQualifier() != null) - { - return; - } +public class JavaScriptKeywordCompletionContributor extends CompletionContributor { + public JavaScriptKeywordCompletionContributor() { + extend( + CompletionType.BASIC, + StandardPatterns.psiElement().withParent(JSReferenceExpression.class), + new CompletionProvider() { + @RequiredReadAction + @Override + public void addCompletions( + @Nonnull CompletionParameters parameters, + ProcessingContext context, + @Nonnull CompletionResultSet result + ) { + PsiElement position = parameters.getPosition(); + JSReferenceExpression parent = (JSReferenceExpression)position.getParent(); + if (parent.getQualifier() != null) { + return; + } - boolean parentIsStatement = parent.getParent() instanceof JSExpressionStatement; + boolean parentIsStatement = parent.getParent() instanceof JSExpressionStatement; - LookupElementBuilder functionKeyword = LookupElementBuilder.create("function"); - functionKeyword = functionKeyword.bold(); - if(parentIsStatement) - { - functionKeyword = functionKeyword.withInsertHandler(SpaceInsertHandler.INSTANCE); - } - else - { - functionKeyword = functionKeyword.withInsertHandler(ParenthesesInsertHandler.getInstance(false)); - functionKeyword = functionKeyword.withPresentableText("function()"); - } + LookupElementBuilder functionKeyword = LookupElementBuilder.create("function"); + functionKeyword = functionKeyword.bold(); + if (parentIsStatement) { + functionKeyword = functionKeyword.withInsertHandler(SpaceInsertHandler.INSTANCE); + } + else { + functionKeyword = functionKeyword.withInsertHandler(ParenthesesInsertHandler.getInstance(false)); + functionKeyword = functionKeyword.withPresentableText("function()"); + } - result.addElement(functionKeyword); + result.addElement(functionKeyword); - result.addElement(LookupElementBuilder.create("var").withInsertHandler(SpaceInsertHandler.INSTANCE).bold()); - result.addElement(LookupElementBuilder.create("const").withInsertHandler(SpaceInsertHandler.INSTANCE).bold()); + result.addElement(LookupElementBuilder.create("var").withInsertHandler(SpaceInsertHandler.INSTANCE).bold()); + result.addElement(LookupElementBuilder.create("const").withInsertHandler(SpaceInsertHandler.INSTANCE).bold()); - result.addElement(LookupElementBuilder.create("if").bold()); - result.addElement(LookupElementBuilder.create("for").bold()); - result.addElement(LookupElementBuilder.create("return").bold()); + result.addElement(LookupElementBuilder.create("if").bold()); + result.addElement(LookupElementBuilder.create("for").bold()); + result.addElement(LookupElementBuilder.create("return").bold()); - for(JavaScriptKeywordCompletionExtender extender : JavaScriptKeywordCompletionExtender.EP_NAME.getExtensionList()) - { - extender.fillCompletion(parameters, context, result); - } - } - }); - } + for (JavaScriptKeywordCompletionExtender extender : JavaScriptKeywordCompletionExtender.EP_NAME.getExtensionList()) { + extender.fillCompletion(parameters, context, result); + } + } + } + ); + } - @Nonnull - @Override - public Language getLanguage() - { - return JavaScriptLanguage.INSTANCE; - } + @Nonnull + @Override + public Language getLanguage() { + return JavaScriptLanguage.INSTANCE; + } } diff --git a/plugin/src/main/java/consulo/javascript/impl/ide/completion/JavaScriptSkipAutopopupInStrings.java b/plugin/src/main/java/consulo/javascript/impl/ide/completion/JavaScriptSkipAutopopupInStrings.java index 3aa22d1c..2d72af51 100644 --- a/plugin/src/main/java/consulo/javascript/impl/ide/completion/JavaScriptSkipAutopopupInStrings.java +++ b/plugin/src/main/java/consulo/javascript/impl/ide/completion/JavaScriptSkipAutopopupInStrings.java @@ -12,12 +12,10 @@ * @since 29-Aug-22 */ @ExtensionImpl -public class JavaScriptSkipAutopopupInStrings extends SkipAutopopupInStrings -{ - @Nonnull - @Override - public Language getLanguage() - { - return JavaScriptLanguage.INSTANCE; - } +public class JavaScriptSkipAutopopupInStrings extends SkipAutopopupInStrings { + @Nonnull + @Override + public Language getLanguage() { + return JavaScriptLanguage.INSTANCE; + } } diff --git a/plugin/src/main/java/consulo/javascript/impl/ide/completion/SpaceInsertHandler.java b/plugin/src/main/java/consulo/javascript/impl/ide/completion/SpaceInsertHandler.java index cbea4f2f..0923166b 100644 --- a/plugin/src/main/java/consulo/javascript/impl/ide/completion/SpaceInsertHandler.java +++ b/plugin/src/main/java/consulo/javascript/impl/ide/completion/SpaceInsertHandler.java @@ -25,18 +25,15 @@ * @author VISTALL * @since 20.12.2015 */ -public class SpaceInsertHandler implements InsertHandler -{ - public static final SpaceInsertHandler INSTANCE = new SpaceInsertHandler(); +public class SpaceInsertHandler implements InsertHandler { + public static final SpaceInsertHandler INSTANCE = new SpaceInsertHandler(); - @Override - public void handleInsert(InsertionContext context, LookupElement item) - { - if(context.getCompletionChar() != ' ') - { - int tailOffset = context.getTailOffset(); - TailType.insertChar(context.getEditor(), tailOffset, ' '); - context.getEditor().getCaretModel().moveToOffset(tailOffset + 1); - } - } + @Override + public void handleInsert(InsertionContext context, LookupElement item) { + if (context.getCompletionChar() != ' ') { + int tailOffset = context.getTailOffset(); + TailType.insertChar(context.getEditor(), tailOffset, ' '); + context.getEditor().getCaretModel().moveToOffset(tailOffset + 1); + } + } } diff --git a/plugin/src/main/java/consulo/javascript/impl/ide/navigationToolbar/JavaScriptNavBarModelExtension.java b/plugin/src/main/java/consulo/javascript/impl/ide/navigationToolbar/JavaScriptNavBarModelExtension.java index 38e217ae..5426ea5c 100644 --- a/plugin/src/main/java/consulo/javascript/impl/ide/navigationToolbar/JavaScriptNavBarModelExtension.java +++ b/plugin/src/main/java/consulo/javascript/impl/ide/navigationToolbar/JavaScriptNavBarModelExtension.java @@ -16,20 +16,17 @@ * @since 17/01/2021 */ @ExtensionImpl -public class JavaScriptNavBarModelExtension extends StructureAwareNavBarModelExtension -{ - @Nonnull - @Override - protected Language getLanguage() - { - return JavaScriptLanguage.INSTANCE; - } +public class JavaScriptNavBarModelExtension extends StructureAwareNavBarModelExtension { + @Nonnull + @Override + protected Language getLanguage() { + return JavaScriptLanguage.INSTANCE; + } - @Nullable - @Override - @RequiredReadAction - public String getPresentableText(Object object) - { - return object instanceof PsiElement ? JSStructureItemPresentation.getName((PsiElement) object) : null; - } + @Nullable + @Override + @RequiredReadAction + public String getPresentableText(Object object) { + return object instanceof PsiElement ? JSStructureItemPresentation.getName((PsiElement)object) : null; + } } diff --git a/plugin/src/main/java/consulo/javascript/impl/lang/JavaScriptFileTypeFactory.java b/plugin/src/main/java/consulo/javascript/impl/lang/JavaScriptFileTypeFactory.java index cad8e12c..5e3500e9 100644 --- a/plugin/src/main/java/consulo/javascript/impl/lang/JavaScriptFileTypeFactory.java +++ b/plugin/src/main/java/consulo/javascript/impl/lang/JavaScriptFileTypeFactory.java @@ -28,11 +28,9 @@ * @since 11.12.2015 */ @ExtensionImpl -public class JavaScriptFileTypeFactory extends FileTypeFactory -{ - @Override - public void createFileTypes(@Nonnull FileTypeConsumer consumer) - { - consumer.consume(JavaScriptFileType.INSTANCE); - } +public class JavaScriptFileTypeFactory extends FileTypeFactory { + @Override + public void createFileTypes(@Nonnull FileTypeConsumer consumer) { + consumer.consume(JavaScriptFileType.INSTANCE); + } } diff --git a/plugin/src/main/java/consulo/javascript/impl/lang/JavaScriptLanguageVersionPusher.java b/plugin/src/main/java/consulo/javascript/impl/lang/JavaScriptLanguageVersionPusher.java index 2606e88a..993ede74 100644 --- a/plugin/src/main/java/consulo/javascript/impl/lang/JavaScriptLanguageVersionPusher.java +++ b/plugin/src/main/java/consulo/javascript/impl/lang/JavaScriptLanguageVersionPusher.java @@ -39,9 +39,11 @@ public class JavaScriptLanguageVersionPusher implements FilePropertyPusher { - if (oldExtension instanceof JavaScriptModuleExtension && newExtension instanceof JavaScriptModuleExtension) { - if (((JavaScriptModuleExtension) oldExtension).getLanguageVersion() != ((JavaScriptModuleExtension) newExtension).getLanguageVersion()) { + project.getMessageBus().connect().subscribe( + ModuleExtensionChangeListener.class, + (oldExtension, newExtension) -> { + if (oldExtension instanceof JavaScriptModuleExtension oldJsExtension && newExtension instanceof JavaScriptModuleExtension newJsExtension) { + if (((JavaScriptModuleExtension)oldExtension).getLanguageVersion() != ((JavaScriptModuleExtension)newExtension).getLanguageVersion()) { addChanged(project, newExtension); } } @@ -110,7 +112,11 @@ public boolean acceptsDirectory(@Nonnull VirtualFile virtualFile, @Nonnull Proje } @Override - public void persistAttribute(@Nonnull Project project, @Nonnull VirtualFile virtualFile, @Nonnull LanguageVersion newAttribute) throws IOException { + public void persistAttribute( + @Nonnull Project project, + @Nonnull VirtualFile virtualFile, + @Nonnull LanguageVersion newAttribute + ) throws IOException { DataInputStream inputStream = ourFileAttribute.readAttribute(virtualFile); if (inputStream != null) { try { diff --git a/plugin/src/main/java/consulo/javascript/impl/lang/JavaScriptLanguageVersionResolver.java b/plugin/src/main/java/consulo/javascript/impl/lang/JavaScriptLanguageVersionResolver.java index 0832af44..ddfd5c6d 100644 --- a/plugin/src/main/java/consulo/javascript/impl/lang/JavaScriptLanguageVersionResolver.java +++ b/plugin/src/main/java/consulo/javascript/impl/lang/JavaScriptLanguageVersionResolver.java @@ -40,52 +40,44 @@ * @since 11.12.2015 */ @ExtensionImpl -public class JavaScriptLanguageVersionResolver implements LanguageVersionResolver -{ - @RequiredReadAction - @Nonnull - @Override - public LanguageVersion getLanguageVersion(@Nonnull Language language, @Nullable PsiElement element) - { - PsiFile containingFile = element == null ? null : element.getContainingFile(); - if(containingFile == null) - { - return StandardJavaScriptVersions.getInstance().getDefaultVersion(); - } - FileType fileType = containingFile.getFileType(); - if(fileType instanceof JavaScriptFileTypeWithVersion) - { - Module module = element.getModule(); - return ((JavaScriptFileTypeWithVersion) fileType).getLanguageVersion(module, element.getContainingFile().getVirtualFile()); - } +public class JavaScriptLanguageVersionResolver implements LanguageVersionResolver { + @RequiredReadAction + @Nonnull + @Override + public LanguageVersion getLanguageVersion(@Nonnull Language language, @Nullable PsiElement element) { + PsiFile containingFile = element == null ? null : element.getContainingFile(); + if (containingFile == null) { + return StandardJavaScriptVersions.getInstance().getDefaultVersion(); + } + FileType fileType = containingFile.getFileType(); + if (fileType instanceof JavaScriptFileTypeWithVersion) { + Module module = element.getModule(); + return ((JavaScriptFileTypeWithVersion)fileType).getLanguageVersion(module, element.getContainingFile().getVirtualFile()); + } - return StandardJavaScriptVersions.getInstance().getDefaultVersion(); - } + return StandardJavaScriptVersions.getInstance().getDefaultVersion(); + } - @Nonnull - @RequiredReadAction - @Override - public LanguageVersion getLanguageVersion(@Nonnull Language language, @Nullable Project project, @Nullable VirtualFile virtualFile) - { - if(project == null || virtualFile == null) - { - return StandardJavaScriptVersions.getInstance().getDefaultVersion(); - } + @Nonnull + @RequiredReadAction + @Override + public LanguageVersion getLanguageVersion(@Nonnull Language language, @Nullable Project project, @Nullable VirtualFile virtualFile) { + if (project == null || virtualFile == null) { + return StandardJavaScriptVersions.getInstance().getDefaultVersion(); + } - FileType fileType = virtualFile.getFileType(); - if(fileType instanceof JavaScriptFileTypeWithVersion) - { - Module module = ModuleUtilCore.findModuleForFile(virtualFile, project); - return ((JavaScriptFileTypeWithVersion) fileType).getLanguageVersion(module, virtualFile); - } + FileType fileType = virtualFile.getFileType(); + if (fileType instanceof JavaScriptFileTypeWithVersion) { + Module module = ModuleUtilCore.findModuleForFile(virtualFile, project); + return ((JavaScriptFileTypeWithVersion)fileType).getLanguageVersion(module, virtualFile); + } - return StandardJavaScriptVersions.getInstance().getDefaultVersion(); - } + return StandardJavaScriptVersions.getInstance().getDefaultVersion(); + } - @Nonnull - @Override - public Language getLanguage() - { - return JavaScriptLanguage.INSTANCE; - } + @Nonnull + @Override + public Language getLanguage() { + return JavaScriptLanguage.INSTANCE; + } } diff --git a/plugin/src/main/java/consulo/javascript/impl/lang/JavaScriptParsingDefinition.java b/plugin/src/main/java/consulo/javascript/impl/lang/JavaScriptParsingDefinition.java index 3fc68a65..8969acfa 100644 --- a/plugin/src/main/java/consulo/javascript/impl/lang/JavaScriptParsingDefinition.java +++ b/plugin/src/main/java/consulo/javascript/impl/lang/JavaScriptParsingDefinition.java @@ -41,56 +41,47 @@ * @since 24.08.14 */ @ExtensionImpl -public class JavaScriptParsingDefinition extends LanguageVersionableParserDefinition -{ - @Nonnull - @Override - public Language getLanguage() - { - return JavaScriptLanguage.INSTANCE; - } +public class JavaScriptParsingDefinition extends LanguageVersionableParserDefinition { + @Nonnull + @Override + public Language getLanguage() { + return JavaScriptLanguage.INSTANCE; + } - @Nonnull - @Override - public IFileElementType getFileNodeType() - { - return JSElementTypes.FILE; - } + @Nonnull + @Override + public IFileElementType getFileNodeType() { + return JSElementTypes.FILE; + } - @Nonnull - @Override - public PsiElement createElement(ASTNode node) - { - final IElementType type = node.getElementType(); + @Nonnull + @Override + public PsiElement createElement(ASTNode node) { + final IElementType type = node.getElementType(); - if(type == JSElementTypes.EMBEDDED_CONTENT) - { - return new JSEmbeddedContentImpl(node); - } - else if(type == JSTokenTypes.XML_JS_SCRIPT) - { - return new JSEmbeddedContentImpl(node); - } - else if(type == JSTokenTypes.DOC_COMMENT) - { - return new JSDocCommentImpl(node); - } + if (type == JSElementTypes.EMBEDDED_CONTENT) { + return new JSEmbeddedContentImpl(node); + } + else if (type == JSTokenTypes.XML_JS_SCRIPT) { + return new JSEmbeddedContentImpl(node); + } + else if (type == JSTokenTypes.DOC_COMMENT) { + return new JSDocCommentImpl(node); + } - return new ASTWrapperPsiElement(node); - } + return new ASTWrapperPsiElement(node); + } - @Override - public PsiFile createFile(FileViewProvider fileViewProvider) - { - return new JSFileImpl(fileViewProvider); - } + @Override + public PsiFile createFile(FileViewProvider fileViewProvider) { + return new JSFileImpl(fileViewProvider); + } - @Nonnull - @Override - public SpaceRequirements spaceExistanceTypeBetweenTokens(ASTNode left, ASTNode right) - { - PsiElement leftPsi = left.getPsi(); - final Lexer lexer = createLexer(leftPsi.getLanguageVersion()); - return LanguageUtil.canStickTokensTogetherByLexer(left, right, lexer); - } + @Nonnull + @Override + public SpaceRequirements spaceExistanceTypeBetweenTokens(ASTNode left, ASTNode right) { + PsiElement leftPsi = left.getPsi(); + final Lexer lexer = createLexer(leftPsi.getLanguageVersion()); + return LanguageUtil.canStickTokensTogetherByLexer(left, right, lexer); + } } diff --git a/plugin/src/main/java/consulo/javascript/impl/lang/navigation/JavaScriptClassContributor.java b/plugin/src/main/java/consulo/javascript/impl/lang/navigation/JavaScriptClassContributor.java index d2eaefee..6848bff8 100644 --- a/plugin/src/main/java/consulo/javascript/impl/lang/navigation/JavaScriptClassContributor.java +++ b/plugin/src/main/java/consulo/javascript/impl/lang/navigation/JavaScriptClassContributor.java @@ -38,27 +38,32 @@ * @author VISTALL */ @ExtensionImpl -public class JavaScriptClassContributor implements GotoClassOrTypeContributor -{ - @Override - public void processNames(@Nonnull Processor processor, @Nonnull SearchScope searchScope, @Nullable IdFilter idFilter) - { - StubIndex.getInstance().processAllKeys(JavaScriptIndexKeys.CLASSES_BY_NAME, processor, (GlobalSearchScope) searchScope, idFilter); - } +public class JavaScriptClassContributor implements GotoClassOrTypeContributor { + @Override + public void processNames(@Nonnull Processor processor, @Nonnull SearchScope searchScope, @Nullable IdFilter idFilter) { + StubIndex.getInstance().processAllKeys(JavaScriptIndexKeys.CLASSES_BY_NAME, processor, (GlobalSearchScope)searchScope, idFilter); + } - @Override - public void processElementsWithName(@Nonnull String name, @Nonnull Processor processor, @Nonnull FindSymbolParameters findSymbolParameters) - { - Project project = findSymbolParameters.getProject(); - Collection elements = StubIndex.getElements(JavaScriptIndexKeys.CLASSES_BY_NAME, name, project, GlobalSearchScope.allScope(project), findSymbolParameters.getIdFilter(), JSClass - .class); + @Override + public void processElementsWithName( + @Nonnull String name, + @Nonnull Processor processor, + @Nonnull FindSymbolParameters findSymbolParameters + ) { + Project project = findSymbolParameters.getProject(); + Collection elements = StubIndex.getElements( + JavaScriptIndexKeys.CLASSES_BY_NAME, + name, + project, + GlobalSearchScope.allScope(project), + findSymbolParameters.getIdFilter(), + JSClass.class + ); - for(JSClass element : elements) - { - if(!processor.process(element)) - { - break; - } - } - } + for (JSClass element : elements) { + if (!processor.process(element)) { + break; + } + } + } } diff --git a/plugin/src/main/java/consulo/javascript/impl/psi/impl/reference/DefaultJSPropertyNameReferenceProvider.java b/plugin/src/main/java/consulo/javascript/impl/psi/impl/reference/DefaultJSPropertyNameReferenceProvider.java index 61a95b1b..001fda5f 100644 --- a/plugin/src/main/java/consulo/javascript/impl/psi/impl/reference/DefaultJSPropertyNameReferenceProvider.java +++ b/plugin/src/main/java/consulo/javascript/impl/psi/impl/reference/DefaultJSPropertyNameReferenceProvider.java @@ -33,15 +33,13 @@ * @since 02.12.2015 */ @ExtensionImpl(id = "default", order = "last") -public class DefaultJSPropertyNameReferenceProvider implements JSPropertyNameReferenceProvider -{ - @RequiredReadAction - @Nullable - @Override - public PsiReference getReference(@Nonnull JSProperty property) - { - PsiElement nameIdentifier = property.getNameIdentifier(); - assert nameIdentifier != null; - return new JSPropertyNameReference(property, nameIdentifier); - } +public class DefaultJSPropertyNameReferenceProvider implements JSPropertyNameReferenceProvider { + @RequiredReadAction + @Nullable + @Override + public PsiReference getReference(@Nonnull JSProperty property) { + PsiElement nameIdentifier = property.getNameIdentifier(); + assert nameIdentifier != null; + return new JSPropertyNameReference(property, nameIdentifier); + } } diff --git a/plugin/src/main/java/module-info.java b/plugin/src/main/java/module-info.java index c4d9dd24..25b52a99 100644 --- a/plugin/src/main/java/module-info.java +++ b/plugin/src/main/java/module-info.java @@ -2,50 +2,49 @@ * @author VISTALL * @since 23-Aug-22 */ -open module consulo.javascript -{ - requires transitive consulo.javascript.base.api; - requires transitive consulo.javascript.base.impl; +open module consulo.javascript { + requires transitive consulo.javascript.base.api; + requires transitive consulo.javascript.base.impl; - requires consulo.language.editor.impl; + requires consulo.language.editor.impl; - requires com.intellij.xml; + requires com.intellij.xml; - // TODO remove in future - requires java.desktop; - requires forms.rt; + // TODO remove in future + requires java.desktop; + requires forms.rt; - exports com.intellij.javascript; - exports com.intellij.javascript.manipulators; - exports com.intellij.lang.javascript.impl; - exports com.intellij.lang.javascript.impl.findUsages; - exports com.intellij.lang.javascript.impl.flex; - exports com.intellij.lang.javascript.impl.flex.importer; - exports com.intellij.lang.javascript.impl.folding; - exports com.intellij.lang.javascript.impl.formatter; - exports com.intellij.lang.javascript.impl.formatter.blocks; - exports com.intellij.lang.javascript.impl.generation; - exports com.intellij.lang.javascript.impl.highlighting; - exports com.intellij.lang.javascript.impl.index.predefined; - exports com.intellij.lang.javascript.impl.inspections; - exports com.intellij.lang.javascript.impl.navigation; - exports com.intellij.lang.javascript.impl.refactoring; - exports com.intellij.lang.javascript.impl.refactoring.extractMethod; - exports com.intellij.lang.javascript.impl.refactoring.introduceConstant; - exports com.intellij.lang.javascript.impl.refactoring.introduceField; - exports com.intellij.lang.javascript.impl.refactoring.introduceVariable; - exports com.intellij.lang.javascript.impl.search; - exports com.intellij.lang.javascript.impl.structureView; - exports com.intellij.lang.javascript.impl.surroundWith; - exports consulo.javascript.impl; - exports consulo.javascript.impl.copyright; - exports consulo.javascript.impl.findUsages; - exports consulo.javascript.impl.formatter; - exports consulo.javascript.impl.ide.actions; - exports consulo.javascript.impl.ide.completion; - exports consulo.javascript.impl.ide.navigationToolbar; - exports consulo.javascript.impl.lang; - exports consulo.javascript.impl.lang.navigation; - exports consulo.javascript.impl.psi.impl.reference; - exports com.intellij.lang.javascript.impl.validation; + exports com.intellij.javascript; + exports com.intellij.javascript.manipulators; + exports com.intellij.lang.javascript.impl; + exports com.intellij.lang.javascript.impl.findUsages; + exports com.intellij.lang.javascript.impl.flex; + exports com.intellij.lang.javascript.impl.flex.importer; + exports com.intellij.lang.javascript.impl.folding; + exports com.intellij.lang.javascript.impl.formatter; + exports com.intellij.lang.javascript.impl.formatter.blocks; + exports com.intellij.lang.javascript.impl.generation; + exports com.intellij.lang.javascript.impl.highlighting; + exports com.intellij.lang.javascript.impl.index.predefined; + exports com.intellij.lang.javascript.impl.inspections; + exports com.intellij.lang.javascript.impl.navigation; + exports com.intellij.lang.javascript.impl.refactoring; + exports com.intellij.lang.javascript.impl.refactoring.extractMethod; + exports com.intellij.lang.javascript.impl.refactoring.introduceConstant; + exports com.intellij.lang.javascript.impl.refactoring.introduceField; + exports com.intellij.lang.javascript.impl.refactoring.introduceVariable; + exports com.intellij.lang.javascript.impl.search; + exports com.intellij.lang.javascript.impl.structureView; + exports com.intellij.lang.javascript.impl.surroundWith; + exports consulo.javascript.impl; + exports consulo.javascript.impl.copyright; + exports consulo.javascript.impl.findUsages; + exports consulo.javascript.impl.formatter; + exports consulo.javascript.impl.ide.actions; + exports consulo.javascript.impl.ide.completion; + exports consulo.javascript.impl.ide.navigationToolbar; + exports consulo.javascript.impl.lang; + exports consulo.javascript.impl.lang.navigation; + exports consulo.javascript.impl.psi.impl.reference; + exports com.intellij.lang.javascript.impl.validation; } \ No newline at end of file diff --git a/regexp-impl/src/main/java/consulo/javascript/regexp/impl/JavaScriptRegExpLiteralLanguageHost.java b/regexp-impl/src/main/java/consulo/javascript/regexp/impl/JavaScriptRegExpLiteralLanguageHost.java index ca822653..de39f74e 100644 --- a/regexp-impl/src/main/java/consulo/javascript/regexp/impl/JavaScriptRegExpLiteralLanguageHost.java +++ b/regexp-impl/src/main/java/consulo/javascript/regexp/impl/JavaScriptRegExpLiteralLanguageHost.java @@ -16,85 +16,71 @@ * @since 21/12/2021 */ @ExtensionImpl -public class JavaScriptRegExpLiteralLanguageHost implements RegExpLanguageHost -{ - @Nonnull - @Override - public Class getHostClass() - { - return JSRegExpLiteralExpressionImpl.class; - } +public class JavaScriptRegExpLiteralLanguageHost implements RegExpLanguageHost { + @Nonnull + @Override + public Class getHostClass() { + return JSRegExpLiteralExpressionImpl.class; + } - @Override - public boolean characterNeedsEscaping(char c) - { - if(c == '/') - { - return true; - } - return false; - } + @Override + public boolean characterNeedsEscaping(char c) { + if (c == '/') { + return true; + } + return false; + } - @Override - public boolean supportsPerl5EmbeddedComments() - { - return false; - } + @Override + public boolean supportsPerl5EmbeddedComments() { + return false; + } - @Override - public boolean supportsPossessiveQuantifiers() - { - return false; - } + @Override + public boolean supportsPossessiveQuantifiers() { + return false; + } - @Override - public boolean supportsPythonConditionalRefs() - { - return false; - } + @Override + public boolean supportsPythonConditionalRefs() { + return false; + } - @Override - public boolean supportsNamedGroupSyntax(RegExpGroup group) - { - return false; - } + @Override + public boolean supportsNamedGroupSyntax(RegExpGroup group) { + return false; + } - @Override - public boolean supportsNamedGroupRefSyntax(RegExpNamedGroupRef ref) - { - return false; - } + @Override + public boolean supportsNamedGroupRefSyntax(RegExpNamedGroupRef ref) { + return false; + } - @Override - public boolean supportsExtendedHexCharacter(RegExpChar regExpChar) - { - return false; - } + @Override + public boolean supportsExtendedHexCharacter(RegExpChar regExpChar) { + return false; + } - @Override - public boolean isValidCategory(@Nonnull String category) - { - return DefaultRegExpPropertiesProvider.getInstance().isValidCategory(category); - } + @Override + public boolean isValidCategory(@Nonnull String category) { + return DefaultRegExpPropertiesProvider.getInstance().isValidCategory(category); + } - @Nonnull - @Override - public String[][] getAllKnownProperties() - { - return DefaultRegExpPropertiesProvider.getInstance().getAllKnownProperties(); - } + @Nonnull + @Override + public String[][] getAllKnownProperties() { + return DefaultRegExpPropertiesProvider.getInstance().getAllKnownProperties(); + } - @Nullable - @Override - public String getPropertyDescription(@Nullable String name) - { - return DefaultRegExpPropertiesProvider.getInstance().getPropertyDescription(name); - } + @Nullable + @Override + public String getPropertyDescription(@Nullable String name) { + return DefaultRegExpPropertiesProvider.getInstance().getPropertyDescription(name); + } - @Nonnull - @Override - public String[][] getKnownCharacterClasses() - { - return DefaultRegExpPropertiesProvider.getInstance().getKnownCharacterClasses(); - } + @Nonnull + @Override + public String[][] getKnownCharacterClasses() { + return DefaultRegExpPropertiesProvider.getInstance().getKnownCharacterClasses(); + } } diff --git a/regexp-impl/src/main/java/consulo/javascript/regexp/impl/JavaScriptRegexpMultiHostInjector.java b/regexp-impl/src/main/java/consulo/javascript/regexp/impl/JavaScriptRegexpMultiHostInjector.java index 44606933..ad1f4108 100644 --- a/regexp-impl/src/main/java/consulo/javascript/regexp/impl/JavaScriptRegexpMultiHostInjector.java +++ b/regexp-impl/src/main/java/consulo/javascript/regexp/impl/JavaScriptRegexpMultiHostInjector.java @@ -33,32 +33,29 @@ * @since 11.12.2015 */ @ExtensionImpl -public class JavaScriptRegexpMultiHostInjector implements MultiHostInjector -{ - @Nonnull - @Override - public Class getElementClass() - { - return JSRegExpLiteralExpressionImpl.class; - } +public class JavaScriptRegexpMultiHostInjector implements MultiHostInjector { + @Nonnull + @Override + public Class getElementClass() { + return JSRegExpLiteralExpressionImpl.class; + } - @Override - @RequiredReadAction - public void injectLanguages(@Nonnull MultiHostRegistrar registrar, @Nonnull PsiElement context) - { - if(context instanceof JSRegExpLiteralExpressionImpl) - { - String text = context.getText(); + @Override + @RequiredReadAction + public void injectLanguages(@Nonnull MultiHostRegistrar registrar, @Nonnull PsiElement context) { + if (context instanceof JSRegExpLiteralExpressionImpl) { + String text = context.getText(); - // ignore flags for regexp - int lastIndex = text.lastIndexOf('/'); - // empty regexp - if(lastIndex == 0) - { - return; - } + // ignore flags for regexp + int lastIndex = text.lastIndexOf('/'); + // empty regexp + if (lastIndex == 0) { + return; + } - registrar.startInjecting(RegExpLanguage.INSTANCE).addPlace(null, null, (PsiLanguageInjectionHost) context, new TextRange(1, lastIndex)).doneInjecting(); - } - } + registrar.startInjecting(RegExpLanguage.INSTANCE) + .addPlace(null, null, (PsiLanguageInjectionHost)context, new TextRange(1, lastIndex)) + .doneInjecting(); + } + } } diff --git a/regexp-impl/src/main/java/module-info.java b/regexp-impl/src/main/java/module-info.java index 27b41292..f02a05fa 100644 --- a/regexp-impl/src/main/java/module-info.java +++ b/regexp-impl/src/main/java/module-info.java @@ -2,8 +2,7 @@ * @author VISTALL * @since 18-Sep-22 */ -module consulo.javascript.regexp.impl -{ - requires com.intellij.regexp; - requires consulo.javascript.base.impl; +module consulo.javascript.regexp.impl { + requires com.intellij.regexp; + requires consulo.javascript.base.impl; } \ No newline at end of file From b879cc5ad3083c551e24f44971991a45130a11a9 Mon Sep 17 00:00:00 2001 From: UNV Date: Tue, 14 Jan 2025 03:10:55 +0300 Subject: [PATCH 106/150] Refactoring the rest of classes in consulo-javascript module (part 1). --- .../findUsages/JSReadWriteAccessDetector.java | 17 +- .../impl/findUsages/JSWordsScanner.java | 7 +- .../JavaScriptClassGroupRuleProvider.java | 2 +- .../JavaScriptFindUsagesProvider.java | 5 +- .../JavaScriptFunctionGroupRuleProvider.java | 2 +- .../JavaScriptGroupRuleProviderBase.java | 44 +-- ...ImportECMAScriptClassOrFunctionAction.java | 63 +++-- .../impl/flex/ECMAScriptImportOptimizer.java | 66 +++-- .../javascript/impl/flex/ImportUtils.java | 167 ++++++----- .../flex/importer/AS3InterfaceDumper.java | 56 ++-- .../flex/importer/AS3InterfaceStubDumper.java | 175 ++++++------ .../javascript/impl/flex/importer/Abc.java | 71 ++--- .../impl/flex/importer/AbcDumper.java | 29 +- .../flex/importer/AbstractDumpProcessor.java | 43 ++- .../impl/flex/importer/ByteBuffer.java | 17 +- .../FlexByteCodeInformationProcessor.java | 22 +- .../impl/flex/importer/FlexImporter.java | 35 +-- .../impl/flex/importer/LabelInfo.java | 5 +- .../impl/flex/importer/MemberInfo.java | 7 +- .../impl/flex/importer/MetaData.java | 3 +- .../impl/flex/importer/MethodInfo.java | 9 +- .../impl/flex/importer/Multiname.java | 5 +- .../impl/flex/importer/SlotInfo.java | 12 +- .../javascript/impl/flex/importer/Swf.java | 34 +-- .../javascript/impl/flex/importer/Traits.java | 15 +- .../folding/JavaScriptFoldingBuilder.java | 14 +- .../impl/formatter/JSCodeStylePanel.java | 70 +++-- .../JSCodeStyleSettingsProvider.java | 7 +- .../impl/formatter/JSFormattingModel.java | 2 +- .../impl/formatter/JSSpacingProcessor.java | 146 ++++++---- .../JavaScriptIndentOptionsProvider.java | 4 +- .../JavascriptFormattingModelBuilder.java | 11 +- .../impl/formatter/blocks/JSBlock.java | 33 +-- .../formatter/blocks/JSDocCommentBlock.java | 38 ++- .../formatter/blocks/SubBlockVisitor.java | 74 +++-- .../impl/generation/BaseJSGenerateAction.java | 10 +- .../generation/BaseJSGenerateHandler.java | 43 +-- .../impl/generation/JSNamedElementNode.java | 20 +- .../JavaScriptGenerateAccessorHandler.java | 65 +++-- .../JavaScriptImplementMethodsHandler.java | 6 +- .../JavaScriptOverrideMethodsHandler.java | 18 +- .../impl/generation/OverrideMethodsFix.java | 12 +- .../impl/highlighting/JSBraceMatcher.java | 18 +- .../JavaScriptColorsAndFontsPage.java | 10 +- .../JavaScriptHighlightVisitor.java | 97 +++---- .../JavaScriptHighlightVisitorFactory.java | 2 +- .../JavaScriptLineMarkerProvider.java | 266 ++++++++---------- .../impl/index/predefined/Marker.java | 7 +- .../JSExtractFunctionDialog.java | 3 +- .../JSExtractFunctionHandler.java | 30 +- 50 files changed, 934 insertions(+), 983 deletions(-) diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/findUsages/JSReadWriteAccessDetector.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/findUsages/JSReadWriteAccessDetector.java index 588f8b22..7c403bec 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/findUsages/JSReadWriteAccessDetector.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/findUsages/JSReadWriteAccessDetector.java @@ -23,6 +23,7 @@ import com.intellij.lang.javascript.psi.JSPostfixExpression; import com.intellij.lang.javascript.psi.JSPrefixExpression; import com.intellij.lang.javascript.psi.JSVariable; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; import consulo.language.editor.highlight.ReadWriteAccessDetector; @@ -30,13 +31,13 @@ import consulo.language.psi.PsiReference; /** - * User: Maxim.Mossienko - * Date: 15.04.2009 - * Time: 21:51:25 + * @author Maxim.Mossienko + * @since 2009-04-15 */ @ExtensionImpl public class JSReadWriteAccessDetector extends ReadWriteAccessDetector { @Override + @RequiredReadAction public boolean isReadWriteAccessible(PsiElement element) { return element instanceof JSVariable || (element instanceof JSFunction function && (function.isGetProperty() || function.isSetProperty())) @@ -44,22 +45,24 @@ public boolean isReadWriteAccessible(PsiElement element) { } @Override + @RequiredReadAction public boolean isDeclarationWriteAccess(PsiElement element) { return (element instanceof JSVariable variable && variable.getInitializer() != null); } @Override + @RequiredReadAction public Access getReferenceAccess(PsiElement referencedElement, PsiReference reference) { return getExpressionAccess(reference.getElement()); } @Override + @RequiredReadAction public Access getExpressionAccess(PsiElement expression) { expression = expression.getParent(); - if (expression instanceof JSDefinitionExpression) { - PsiElement grandParent = expression.getParent(); - if (expression.getParent() instanceof JSAssignmentExpression assignmentExpression - && assignmentExpression.getOperationSign() == JSTokenTypes.EQ) { + if (expression instanceof JSDefinitionExpression definition) { + if (definition.getParent() instanceof JSAssignmentExpression assignment + && assignment.getOperationSign() == JSTokenTypes.EQ) { return Access.Write; } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/findUsages/JSWordsScanner.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/findUsages/JSWordsScanner.java index cce7bde8..b26a1f68 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/findUsages/JSWordsScanner.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/findUsages/JSWordsScanner.java @@ -23,11 +23,8 @@ import consulo.language.cacheBuilder.DefaultWordsScanner; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 31, 2005 - * Time: 9:34:58 PM - * To change this template use File | Settings | File Templates. + * @author max + * @since 2005-01-31 */ public class JSWordsScanner extends DefaultWordsScanner { public JSWordsScanner() { diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/findUsages/JavaScriptClassGroupRuleProvider.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/findUsages/JavaScriptClassGroupRuleProvider.java index da683da4..58d08e6e 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/findUsages/JavaScriptClassGroupRuleProvider.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/findUsages/JavaScriptClassGroupRuleProvider.java @@ -35,7 +35,7 @@ protected Class getUsageClass() { } @Override - protected UsageGroup createUsageGroup(final JSClass clazz) { + protected UsageGroup createUsageGroup(JSClass clazz) { return new ClassUsageGroup(clazz); } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/findUsages/JavaScriptFindUsagesProvider.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/findUsages/JavaScriptFindUsagesProvider.java index 1a37cd57..93a87a93 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/findUsages/JavaScriptFindUsagesProvider.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/findUsages/JavaScriptFindUsagesProvider.java @@ -31,9 +31,8 @@ import jakarta.annotation.Nonnull; /** - * User: max - * Date: Feb 14, 2005 - * Time: 6:44:02 PM + * @author max + * @since 2005-02-14 */ @ExtensionImpl public class JavaScriptFindUsagesProvider implements FindUsagesProvider { diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/findUsages/JavaScriptFunctionGroupRuleProvider.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/findUsages/JavaScriptFunctionGroupRuleProvider.java index f600e83b..4f37ea46 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/findUsages/JavaScriptFunctionGroupRuleProvider.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/findUsages/JavaScriptFunctionGroupRuleProvider.java @@ -34,7 +34,7 @@ protected Class getUsageClass() { } @Override - protected UsageGroup createUsageGroup(final JSFunction jsFunction) { + protected UsageGroup createUsageGroup(JSFunction jsFunction) { return new FunctionUsageGroup(jsFunction); } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/findUsages/JavaScriptGroupRuleProviderBase.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/findUsages/JavaScriptGroupRuleProviderBase.java index 0ec9b64f..19158a11 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/findUsages/JavaScriptGroupRuleProviderBase.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/findUsages/JavaScriptGroupRuleProviderBase.java @@ -17,6 +17,7 @@ package com.intellij.lang.javascript.impl.findUsages; import com.intellij.lang.javascript.psi.JSNamedElement; +import consulo.annotation.access.RequiredReadAction; import consulo.dataContext.DataSink; import consulo.dataContext.TypeSafeDataProvider; import consulo.language.editor.LangDataKeys; @@ -46,20 +47,22 @@ * @author Maxim.Mossienko */ abstract class JavaScriptGroupRuleProviderBase implements FileStructureGroupRuleProvider { - @Override @Nullable - public UsageGroupingRule getUsageGroupingRule(final Project project) { + @Override + public UsageGroupingRule getUsageGroupingRule(Project project) { return new UsageGroupingRule() { - @Override @Nullable - public UsageGroup groupUsage(final Usage usage) { - if (usage instanceof PsiElementUsage) { - PsiElement psiElement = ((PsiElementUsage)usage).getElement(); + @Override + @RequiredReadAction + @SuppressWarnings("unchecked") + public UsageGroup groupUsage(@Nonnull Usage usage) { + if (usage instanceof PsiElementUsage elementUsage) { + PsiElement psiElement = elementUsage.getElement(); if (!psiElement.getLanguage().isKindOf(JavaScriptLanguage.INSTANCE)) { return null; } - final JSNamedElement element = PsiTreeUtil.getParentOfType(psiElement, getUsageClass()); + JSNamedElement element = PsiTreeUtil.getParentOfType(psiElement, getUsageClass()); if (isAcceptableElement(element)) { return createUsageGroup((T)element); @@ -76,12 +79,14 @@ protected boolean isAcceptableElement(JSNamedElement element) { protected abstract Class getUsageClass(); - protected abstract UsageGroup createUsageGroup(final T t); + protected abstract UsageGroup createUsageGroup(T t); /** * @author Maxim.Mossienko */ - abstract static class PsiNamedElementUsageGroupBase implements UsageGroup, TypeSafeDataProvider { + abstract static class PsiNamedElementUsageGroupBase + implements UsageGroup, TypeSafeDataProvider { + private SmartPsiElementPointer myElementPointer; private String myName; private Image myIcon; @@ -119,7 +124,7 @@ public FileStatus getFileStatus() { @Override public boolean isValid() { - final T element = getElement(); + T element = getElement(); return element != null && element.isValid(); } @@ -145,20 +150,19 @@ public void update() { } @Override - public int compareTo(final UsageGroup o) { + public int compareTo(UsageGroup o) { return myName.compareTo(((PsiNamedElementUsageGroupBase)o).myName); } @Override - public boolean equals(final Object obj) { - if (!(obj instanceof PsiNamedElementUsageGroupBase)) { - return false; - } - PsiNamedElementUsageGroupBase group = (PsiNamedElementUsageGroupBase)obj; - if (isValid() && group.isValid()) { - return getElement().getManager().areElementsEquivalent(getElement(), group.getElement()); + public boolean equals(Object obj) { + if (obj instanceof PsiNamedElementUsageGroupBase group) { + if (isValid() && group.isValid()) { + return getElement().getManager().areElementsEquivalent(getElement(), group.getElement()); + } + return Comparing.equal(myName, group.myName); } - return Comparing.equal(myName, ((PsiNamedElementUsageGroupBase)obj).myName); + return false; } @Override @@ -167,7 +171,7 @@ public int hashCode() { } @Override - public void calcData(final Key key, final DataSink sink) { + public void calcData(Key key, DataSink sink) { if (!isValid()) { return; } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/AddImportECMAScriptClassOrFunctionAction.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/AddImportECMAScriptClassOrFunctionAction.java index d04ec5de..db4bb86c 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/AddImportECMAScriptClassOrFunctionAction.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/AddImportECMAScriptClassOrFunctionAction.java @@ -21,7 +21,9 @@ import com.intellij.lang.javascript.psi.JSReferenceExpression; import com.intellij.lang.javascript.psi.impl.JSPsiImplUtils; import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; -import consulo.application.ApplicationManager; +import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.access.RequiredWriteAction; +import consulo.application.Application; import consulo.codeEditor.Editor; import consulo.codeEditor.EditorPopupHelper; import consulo.document.util.TextRange; @@ -41,15 +43,16 @@ import consulo.language.psi.resolve.PsiElementProcessor; import consulo.language.psi.scope.GlobalSearchScope; import consulo.language.util.ModuleUtilCore; +import consulo.localize.LocalizeValue; import consulo.module.Module; import consulo.project.Project; +import consulo.ui.annotation.RequiredUIAccess; import consulo.ui.ex.popup.JBPopup; import consulo.undoRedo.CommandProcessor; import consulo.util.collection.Sets; import consulo.util.collection.SmartList; import consulo.util.lang.StringUtil; import jakarta.annotation.Nonnull; -import org.jetbrains.annotations.NonNls; import java.util.Collection; import java.util.Collections; @@ -57,8 +60,7 @@ /** * @author Maxim.Mossienko - * Date: Apr 25, 2008 - * Time: 8:36:38 PM + * @since 2008-04-25 */ public class AddImportECMAScriptClassOrFunctionAction implements HintAction, QuestionAction, LocalQuickFix { private final PsiPolyVariantReference myReference; @@ -67,17 +69,17 @@ public class AddImportECMAScriptClassOrFunctionAction implements HintAction, Que private boolean isAvailableCalculated; private long modificationCount = -1; private String calculatedClass; - @NonNls private static final String HAS_MORE_SUFFIX = ", ..."; private boolean isFunction; - public AddImportECMAScriptClassOrFunctionAction(Editor editor, final PsiPolyVariantReference psiReference) { + public AddImportECMAScriptClassOrFunctionAction(Editor editor, PsiPolyVariantReference psiReference) { myReference = psiReference; myEditor = editor; } @Override - public boolean showHint(final Editor editor) { + @RequiredUIAccess + public boolean showHint(@Nonnull Editor editor) { myEditor = editor; final PsiElement element = myReference.getElement(); TextRange textRange = InjectedLanguageManager.getInstance(element.getProject()).injectedToHost(element, element.getTextRange()); @@ -107,12 +109,14 @@ public String getFamilyName() { } @Override - public void applyFix(@Nonnull final Project project, @Nonnull final ProblemDescriptor descriptor) { + @RequiredWriteAction + public void applyFix(@Nonnull Project project, @Nonnull ProblemDescriptor descriptor) { invoke(project, myEditor, descriptor.getPsiElement().getContainingFile()); } @Override - public boolean isAvailable(@Nonnull final Project project, final Editor editor, final PsiFile file) { + @RequiredReadAction + public boolean isAvailable(@Nonnull Project project, Editor editor, PsiFile file) { if (!myReference.getElement().isValid()) { return false; } @@ -135,7 +139,7 @@ public boolean isAvailable(@Nonnull final Project project, final Editor editor, isAvailableCalculated = true; isAvailable = candidates.size() > 0; if (isAvailable) { - final JSQualifiedNamedElement element = candidates.iterator().next(); + JSQualifiedNamedElement element = candidates.iterator().next(); calculatedClass = element.getQualifiedName(); isFunction = element instanceof JSFunction; if (candidates.size() > 1) { @@ -157,6 +161,7 @@ public boolean isAvailable(@Nonnull final Project project, final Editor editor, return isAvailable; } + @RequiredReadAction private Collection getCandidates(Editor editor, PsiFile file) { final Collection candidates; @@ -170,12 +175,12 @@ private Collection getCandidates(Editor editor, PsiFile for (ResolveResult r : myReference.multiResolve(false)) { PsiElement element = r.getElement(); - if (element instanceof JSQualifiedNamedElement) { - invalidResult = (JSQualifiedNamedElement) element; + if (element instanceof JSQualifiedNamedElement qualifiedNamedElement) { + invalidResult = qualifiedNamedElement; } } if (invalidResult != null) { - candidates = new SmartList(); + candidates = new SmartList<>(); candidates.add(invalidResult); } else { @@ -185,7 +190,8 @@ private Collection getCandidates(Editor editor, PsiFile return candidates; } - public static Collection getCandidates(final Editor editor, final PsiFile file, final String name) { + @RequiredReadAction + public static Collection getCandidates(Editor editor, PsiFile file, String name) { final Module element = ModuleUtilCore.findModuleForPsiElement(file); if (element != null) { return JSResolveUtil.findElementsByName( @@ -200,6 +206,7 @@ public static Collection getCandidates(final Editor edi } @Override + @RequiredWriteAction public void invoke(@Nonnull final Project project, final Editor editor, final PsiFile file) { final Collection candidates = getCandidates(editor, file); @@ -209,15 +216,19 @@ public void invoke(@Nonnull final Project project, final Editor editor, final Ps candidates.toArray(new JSQualifiedNamedElement[candidates.size()]), new PsiElementListCellRenderer<>() { @Override + @RequiredReadAction public String getElementText(final JSQualifiedNamedElement element) { return element.getName(); } @Override + @RequiredReadAction protected String getContainerText(final JSQualifiedNamedElement element, final String name) { final String qName = element.getQualifiedName(); final String elementName = element.getName(); - String s = qName.equals(elementName) ? "" : qName.substring(0, qName.length() - elementName.length() - 1); + String s = qName.equals(elementName) + ? "" + : qName.substring(0, qName.length() - elementName.length() - 1); if ("".equals(s)) { s = element.getContainingFile().getName(); } @@ -232,13 +243,12 @@ protected int getIconFlags() { JavaScriptLocalize.chooseClassTitle().get(), new PsiElementProcessor<>() { @Override - public boolean execute(final JSQualifiedNamedElement element) { - CommandProcessor.getInstance().executeCommand( - project, - () -> doImport(editor, element.getQualifiedName()), - getClass().getName(), - this - ); + public boolean execute(@Nonnull JSQualifiedNamedElement element) { + CommandProcessor.getInstance().newCommand() + .project(project) + .name(LocalizeValue.ofNullable(getClass().getName())) + .groupId(this) + .run(() -> doImport(editor, element.getQualifiedName())); return false; } @@ -253,8 +263,9 @@ public boolean execute(final JSQualifiedNamedElement element) { } } - private void doImport(final Editor editor, final String qName) { - ApplicationManager.getApplication().runWriteAction(() -> { + @RequiredWriteAction + private void doImport(Editor editor, final String qName) { + Application.get().runWriteAction(() -> { final PsiElement element = myReference.getElement(); ImportUtils.doImport(element, qName); }); @@ -266,6 +277,7 @@ public boolean startInWriteAction() { } @Override + @RequiredWriteAction public boolean execute() { final PsiFile containingFile = myReference.getElement().getContainingFile(); invoke(containingFile.getProject(), myEditor, containingFile); @@ -273,6 +285,7 @@ public boolean execute() { return true; } + @RequiredReadAction private static void filterDefaultPackage(Collection candidates) { for (Iterator i = candidates.iterator(); i.hasNext(); ) { if (!i.next().getQualifiedName().contains(".")) { @@ -280,6 +293,4 @@ private static void filterDefaultPackage(Collection can } } } - - } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/ECMAScriptImportOptimizer.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/ECMAScriptImportOptimizer.java index e6f3001d..5e6a6f71 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/ECMAScriptImportOptimizer.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/ECMAScriptImportOptimizer.java @@ -23,6 +23,7 @@ import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; import com.intellij.lang.javascript.validation.JSUnusedImportsHelper; import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.access.RequiredWriteAction; import consulo.annotation.component.ExtensionImpl; import consulo.document.util.TextRange; import consulo.javascript.language.JavaScriptLanguage; @@ -34,6 +35,7 @@ import consulo.language.psi.*; import consulo.project.Project; import consulo.util.collection.MultiMap; +import consulo.util.lang.Couple; import consulo.util.lang.EmptyRunnable; import consulo.util.lang.Pair; @@ -43,12 +45,12 @@ /** * @author Maxim.Mossienko - * Date: Jul 23, 2008 - * Time: 12:10:44 AM + * @since 2008-07-23 */ @ExtensionImpl public class ECMAScriptImportOptimizer implements ImportOptimizer { @Override + @RequiredReadAction public boolean supports(PsiFile file) { return file.getLanguage() == JavaScriptSupportLoader.ECMA_SCRIPT_L4 || JavaScriptSupportLoader.isFlexMxmFile(file); } @@ -62,21 +64,21 @@ public Runnable processFile(final PsiFile file) { return new Runnable() { @Override - @RequiredReadAction + @RequiredWriteAction public void run() { - final JSUnusedImportsHelper.Results unusedImportsResults = JSUnusedImportsHelper.getUnusedImports(file); + JSUnusedImportsHelper.Results unusedImportsResults = JSUnusedImportsHelper.getUnusedImports(file); - MultiMap importsByHolder = new MultiMap() { + MultiMap importsByHolder = new MultiMap<>() { @Override protected Collection createCollection() { - return new HashSet(); + return new HashSet<>(); } }; Project project = file.getProject(); - final SmartPointerManager pointerManager = SmartPointerManager.getInstance(project); - final List oldImportsPointers = - new ArrayList(unusedImportsResults.allImports.size()); + SmartPointerManager pointerManager = SmartPointerManager.getInstance(project); + List oldImportsPointers = + new ArrayList<>(unusedImportsResults.allImports.size()); for (JSImportStatement anImport : unusedImportsResults.allImports) { oldImportsPointers.add(pointerManager.createSmartPsiElementPointer(anImport)); if (unusedImportsResults.unusedImports.contains(anImport)) { @@ -89,11 +91,11 @@ protected Collection createCollection() { importsByHolder.putValue(importHolder, anImport.getImportText()); } - final List replaceWithShortName = new ArrayList(); + List replaceWithShortName = new ArrayList<>(); for (Map.Entry e : unusedImportsResults.fqnsToReplaceWithImport.entrySet()) { - final Collection importsInScope; - final Collection importsInEnclosingScope; - final JSElement importHolder; + Collection importsInScope; + Collection importsInEnclosingScope; + JSElement importHolder; JSElement enclosingFunction = ImportUtils.getImportHolder(e.getKey(), JSFunction.class); JSElement enclosingPackage = ImportUtils.getImportHolder(e.getKey(), JSPackageStatement.class); @@ -129,8 +131,8 @@ else if ((resolve == ResolveResult.ThisOne || resolve == ResolveResult.None) } } - final Collection, Collection>> importsByHolderPointer = - new ArrayList, Collection>>(importsByHolder.size()); + Collection, Collection>> importsByHolderPointer = + new ArrayList<>(importsByHolder.size()); for (JSElement holder : importsByHolder.keySet()) { importsByHolderPointer.add(Pair.create( pointerManager.createSmartPsiElementPointer(holder), @@ -147,7 +149,7 @@ else if ((resolve == ResolveResult.ThisOne || resolve == ResolveResult.None) PsiElement insertionPlace = defaultInsertionPlace.first; PsiElement earlyImport = ImportUtils.findEarlyImport(before ? insertionPlace : insertionPlace.getNextSibling()); - Pair elementToDelete = null; + Couple elementToDelete = null; if (earlyImport != null) { for (PsiElement e = (before ? insertionPlace : insertionPlace.getNextSibling()); e != earlyImport; e = e.getNextSibling()) { @@ -162,15 +164,14 @@ else if ((resolve == ResolveResult.ThisOne || resolve == ResolveResult.None) || deleteTo.getNextSibling() instanceof JSImportStatement) { deleteTo = deleteTo.getNextSibling(); } - elementToDelete = Pair.create(insertionPlace, deleteTo); + elementToDelete = Couple.of(insertionPlace, deleteTo); } else if (before && insertionPlace instanceof PsiWhiteSpace) { insertionPlace = insertionPlace.replace(JSChangeUtil.createJSTreeFromText(insertionPlace.getProject(), " ").getPsi()); } - else if (insertionPlace.getNextSibling() instanceof PsiWhiteSpace) { - insertionPlace.getNextSibling() - .replace(JSChangeUtil.createJSTreeFromText(insertionPlace.getProject(), " ").getPsi()); + else if (insertionPlace.getNextSibling() instanceof PsiWhiteSpace whiteSpace) { + whiteSpace.replace(JSChangeUtil.createJSTreeFromText(insertionPlace.getProject(), " ").getPsi()); } String importBlock = ImportUtils.createImportBlock(project, entry.getSecond()); @@ -192,7 +193,7 @@ else if (insertionPlace.getNextSibling() instanceof PsiWhiteSpace) { } PsiElement lastAdded = firstAdded; - final String lastImportText = newImports.getLastChild().getText(); + String lastImportText = newImports.getLastChild().getText(); while (!lastImportText.equals(lastAdded.getText())) { lastAdded = lastAdded.getNextSibling(); } @@ -208,14 +209,14 @@ else if (insertionPlace.getNextSibling() instanceof PsiWhiteSpace) { } for (SmartPsiElementPointer pointer : oldImportsPointers) { - final JSImportStatement statement = (JSImportStatement)pointer.getElement(); + JSImportStatement statement = (JSImportStatement)pointer.getElement(); if (statement != null) { deleteImport(statement); } } for (SmartPsiElementPointer pointer : replaceWithShortName) { - final JSReferenceExpression fqn = (JSReferenceExpression)pointer.getElement(); + JSReferenceExpression fqn = (JSReferenceExpression)pointer.getElement(); if (fqn == null || !fqn.isValid()) { continue; } @@ -238,6 +239,7 @@ private enum ResolveResult { OtherOne } + @RequiredReadAction private static ResolveResult resolveUsingImports(Collection imports, String fqnToCheck, PsiElement context) { String shortName = fqnToCheck.substring(fqnToCheck.lastIndexOf('.') + 1); String firstOneResolved = null; @@ -272,28 +274,30 @@ else if ("*".equals(name)) { } } - private static void deleteImport(final JSImportStatement anImport) { + @RequiredWriteAction + private static void deleteImport(JSImportStatement anImport) { if (!anImport.isValid()) { return; } PsiElement nextSibling = anImport.getNextSibling(); - if (nextSibling instanceof PsiWhiteSpace) { + if (nextSibling instanceof PsiWhiteSpace whiteSpace) { // remove with the following whitespace - String whitespace = nextSibling.getText(); + String whitespace = whiteSpace.getText(); if (whitespace.contains("]]>")) { - nextSibling.replace(JSChangeUtil.createJSTreeFromText(anImport.getProject(), "]]>").getPsi()); + whiteSpace.replace(JSChangeUtil.createJSTreeFromText(anImport.getProject(), "]]>").getPsi()); } // don't remove trailing line break if it is an injection suffix - else if (nextSibling.getNextSibling() == null - || nextSibling.getNextSibling().getNode().getElementType() != JSTokenTypes.RBRACE - || !(nextSibling.getParent() instanceof JSBlockStatement) - || !ImportUtils.isAnonymousEventHandler((JSBlockStatement)nextSibling.getParent())) { + else if (whiteSpace.getNextSibling() == null + || whiteSpace.getNextSibling().getNode().getElementType() != JSTokenTypes.RBRACE + || !(whiteSpace.getParent() instanceof JSBlockStatement block) + || !ImportUtils.isAnonymousEventHandler(block)) { nextSibling.delete(); } } anImport.delete(); } + @RequiredReadAction private static void deleteRange(PsiElement first, PsiElement last) { PsiElement e = first; while (true) { diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/ImportUtils.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/ImportUtils.java index 9aa6a080..1b8515b5 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/ImportUtils.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/ImportUtils.java @@ -21,6 +21,8 @@ import com.intellij.lang.javascript.psi.*; import com.intellij.lang.javascript.psi.impl.JSChangeUtil; import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; +import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.access.RequiredWriteAction; import consulo.document.Document; import consulo.document.util.TextRange; import consulo.language.codeStyle.CodeStyleManager; @@ -40,8 +42,6 @@ import consulo.xml.psi.xml.XmlAttributeValue; import consulo.xml.psi.xml.XmlTag; import consulo.xml.psi.xml.XmlText; -import org.jetbrains.annotations.NonNls; - import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @@ -49,13 +49,10 @@ /** * @author Maxim.Mossienko - * Date: May 3, 2008 - * Time: 8:35:33 PM + * @since 2008-03-03 */ public class ImportUtils { - @NonNls private static final String CDATA = "> ANONYMOUS_EVENT_LISTENER_CLASSES = Arrays.asList(JSBlockStatement.class, @@ -63,7 +60,8 @@ public class ImportUtils { ); @Nullable - private static PsiElement findLBrace(final JSElement holder) { + @RequiredReadAction + private static PsiElement findLBrace(JSElement holder) { for (PsiElement child = holder.getFirstChild(); child != null; child = child.getNextSibling()) { if (child.getNode().getElementType() == JSTokenTypes.LBRACE) { return child; @@ -72,6 +70,7 @@ private static PsiElement findLBrace(final JSElement holder) { return null; } + @RequiredReadAction private static PsiElement specifyInsertionPlace(PsiElement insertBefore, String fqn) { JSImportStatement earlyImport = findEarlyImport(insertBefore); if (earlyImport == null) { @@ -79,12 +78,12 @@ private static PsiElement specifyInsertionPlace(PsiElement insertBefore, String } while (compareImports(fqn, earlyImport.getImportText()) > 0) { - if (earlyImport.getNextSibling() instanceof JSImportStatement) { - earlyImport = (JSImportStatement)earlyImport.getNextSibling(); + if (earlyImport.getNextSibling() instanceof JSImportStatement importStatement) { + earlyImport = importStatement; } - else if (earlyImport.getNextSibling() instanceof PsiWhiteSpace && earlyImport.getNextSibling() - .getNextSibling() instanceof JSImportStatement) { - earlyImport = (JSImportStatement)earlyImport.getNextSibling().getNextSibling(); + else if (earlyImport.getNextSibling() instanceof PsiWhiteSpace whiteSpace + && whiteSpace.getNextSibling() instanceof JSImportStatement importStatement) { + earlyImport = importStatement; } else { return earlyImport.getNextSibling(); @@ -93,7 +92,8 @@ else if (earlyImport.getNextSibling() instanceof PsiWhiteSpace && earlyImport.ge return earlyImport; } - public static void doImport(@Nonnull PsiElement subject, final @Nonnull String fqn) { + @RequiredWriteAction + public static void doImport(@Nonnull PsiElement subject, @Nonnull String fqn) { assert fqn.contains(".") : "Qualified name belongs to default package: " + fqn; if (!FileModificationService.getInstance().prepareFileForWrite(subject.getContainingFile())) { @@ -101,7 +101,7 @@ public static void doImport(@Nonnull PsiElement subject, final @Nonnull String f } Project project = subject.getProject(); - final JSReferenceExpression refExpr = PsiTreeUtil.getNonStrictParentOfType(subject, JSReferenceExpression.class); + JSReferenceExpression refExpr = PsiTreeUtil.getNonStrictParentOfType(subject, JSReferenceExpression.class); if (refExpr != null && JSResolveUtil.referenceExpressionShouldBeQualified(refExpr)) { refExpr.replace(JSChangeUtil.createExpressionFromText(project, fqn)); // TODO should commit corresponding document before? return; @@ -123,15 +123,14 @@ public static void doImport(@Nonnull PsiElement subject, final @Nonnull String f insertionPlace = Pair.create(insertionPlace.first.getNextSibling(), true); } - final int offset; - final String prefix; - final String suffix; + int offset; + String prefix; + String suffix; if (insertionPlace.second) { PsiElement insertBefore = specifyInsertionPlace(insertionPlace.first, fqn); offset = insertBefore.getTextRange().getStartOffset(); - prefix = - (insertBefore.getPrevSibling() == null && file.getContext() == null) || insertBefore.getPrevSibling() instanceof PsiWhiteSpace ? "" : - "\n"; + prefix = (insertBefore.getPrevSibling() == null && file.getContext() == null) + || insertBefore.getPrevSibling() instanceof PsiWhiteSpace ? "" : "\n"; suffix = insertBefore instanceof PsiWhiteSpace ? "" : " "; } else { @@ -145,8 +144,8 @@ public static void doImport(@Nonnull PsiElement subject, final @Nonnull String f PsiElement inserted = file.findElementAt(offset); if (prefix.length() > 0) { - if (inserted.getNextSibling() instanceof JSImportStatement) { - inserted = inserted.getNextSibling(); + if (inserted.getNextSibling() instanceof JSImportStatement importStatement) { + inserted = importStatement; } } else { @@ -155,34 +154,29 @@ public static void doImport(@Nonnull PsiElement subject, final @Nonnull String f inserted = importStatement; } } - PsiElement formatFrom = inserted.getPrevSibling() instanceof PsiWhiteSpace ? inserted.getPrevSibling() : inserted; - PsiElement formatTo = inserted.getNextSibling() instanceof PsiWhiteSpace ? inserted.getNextSibling() : inserted; + PsiElement formatFrom = inserted.getPrevSibling() instanceof PsiWhiteSpace prevWhiteSpace ? prevWhiteSpace : inserted; + PsiElement formatTo = inserted.getNextSibling() instanceof PsiWhiteSpace nextWhiteSpace ? nextWhiteSpace : inserted; PsiFile realFile = file.getContext() != null ? file.getContext().getContainingFile() : file; - final TextRange injectionOffset = InjectedLanguageManager.getInstance(project).injectedToHost(inserted, inserted.getTextRange()); + TextRange injectionOffset = InjectedLanguageManager.getInstance(project).injectedToHost(inserted, inserted.getTextRange()); - CodeStyleManager.getInstance(project) - .reformatText(realFile, injectionOffset.getStartOffset() + formatFrom.getTextRange().getStartOffset(), - injectionOffset.getEndOffset() + formatTo.getTextRange().getEndOffset() - ); + CodeStyleManager.getInstance(project).reformatText( + realFile, + injectionOffset.getStartOffset() + formatFrom.getTextRange().getStartOffset(), + injectionOffset.getEndOffset() + formatTo.getTextRange().getEndOffset() + ); } + @RequiredReadAction private static JSElement getAnonymousEventHandlerBody(JSFile injectedFile) { - // TODO more elegant way?! - if (injectedFile.getFirstChild() instanceof JSExpressionStatement) { - JSExpressionStatement expressionStatement = (JSExpressionStatement)injectedFile.getFirstChild(); - if (expressionStatement.getExpression() instanceof JSCallExpression) { - JSCallExpression callExpression = (JSCallExpression)expressionStatement.getExpression(); - if (callExpression.getMethodExpression() instanceof JSParenthesizedExpression) { - JSParenthesizedExpression parenthesizedExpression = (JSParenthesizedExpression)callExpression.getMethodExpression(); - if (parenthesizedExpression.getInnerExpression() instanceof JSFunctionExpression) { - JSFunctionExpression functionExpression = (JSFunctionExpression)parenthesizedExpression.getInnerExpression(); - JSFunction function = functionExpression.getFunction(); - if (function.getBody().length > 0) { - return function.getBody()[0]; - } - } - } + if (injectedFile.getFirstChild() instanceof JSExpressionStatement expression + && expression.getExpression() instanceof JSCallExpression call + && call.getMethodExpression() instanceof JSParenthesizedExpression parenthesized + && parenthesized.getInnerExpression() instanceof JSFunctionExpression functionExpr) { + + JSFunction function = functionExpr.getFunction(); + if (function.getBody().length > 0) { + return function.getBody()[0]; } } assert false : "Couldn't find anonymous event handler body: " + injectedFile; @@ -191,7 +185,7 @@ private static JSElement getAnonymousEventHandlerBody(JSFile injectedFile) { private static boolean isAnonymousEventHandlerTag(JSFile jsFile) { PsiElement context = jsFile.getContext(); - return context instanceof XmlText && !SCRIPT_TAG_NAME.equals(((XmlTag)context.getParent()).getLocalName()); + return context instanceof XmlText xmlText && !SCRIPT_TAG_NAME.equals(((XmlTag)xmlText.getParent()).getLocalName()); } private static boolean isAnonymousEventHandlerAttribute(JSFile jsFile) { @@ -219,12 +213,13 @@ private static PsiElement iterateUp(PsiElement element, List getImportInsertionPlace(JSElement holder) { PsiElement insertionPlace; - final boolean before; - if (holder instanceof JSPackageStatement) { - insertionPlace = findLBrace(holder); + boolean before; + if (holder instanceof JSPackageStatement packageStatement) { + insertionPlace = findLBrace(packageStatement); assert insertionPlace != null : "LBrace not found"; before = false; } - else if (holder instanceof JSFunction) { - final JSBlockStatement block = PsiTreeUtil.getChildOfType(holder, JSBlockStatement.class); + else if (holder instanceof JSFunction function) { + JSBlockStatement block = PsiTreeUtil.getChildOfType(function, JSBlockStatement.class); assert block != null : "Function block not found"; insertionPlace = findLBrace(block); before = false; } - else { //JSFile - if (isAnonymousEventHandlerTag((JSFile)holder)) { - holder = getAnonymousEventHandlerBody((JSFile)holder); - insertionPlace = findLBrace(holder); - if (hasCDATA(insertionPlace.getNextSibling())) { - insertionPlace = insertionPlace.getNextSibling(); - } + else if (holder instanceof JSFile jsFile && isAnonymousEventHandlerTag(jsFile)) { + holder = getAnonymousEventHandlerBody(jsFile); + insertionPlace = findLBrace(holder); + if (hasCDATA(insertionPlace.getNextSibling())) { + insertionPlace = insertionPlace.getNextSibling(); + } + before = false; + } + else { + JSPackageStatement aPackage = PsiTreeUtil.getChildOfType(holder, JSPackageStatement.class); + if (aPackage != null) { + insertionPlace = aPackage; before = false; } else { - JSPackageStatement aPackage = PsiTreeUtil.getChildOfType(holder, JSPackageStatement.class); - if (aPackage != null) { - insertionPlace = aPackage; - before = false; - } - else { - insertionPlace = holder.getFirstChild(); - before = !hasCDATA(insertionPlace); - } + insertionPlace = holder.getFirstChild(); + before = !hasCDATA(insertionPlace); } } return Pair.create(insertionPlace, before); } + @RequiredReadAction private static boolean hasCDATA(@Nullable PsiElement element) { - return element instanceof PsiWhiteSpace && element.getText().contains(CDATA); + return element instanceof PsiWhiteSpace whiteSpace && whiteSpace.getText().contains(CDATA); } @Nullable + @RequiredReadAction + @SafeVarargs public static JSElement getImportHolder(PsiElement origin, Class... classes) { - if (origin instanceof XmlBackedJSClassImpl) { - return getImportHolderFromXmlBackedClass((XmlBackedJSClassImpl)origin); + if (origin instanceof XmlBackedJSClassImpl xmlBackedJSClass) { + return getImportHolderFromXmlBackedClass(xmlBackedJSClass); } JSElement importHolder = PsiTreeUtil.getParentOfType(origin, classes); - if (importHolder instanceof JSFunctionExpression && (isAnonymousEventHandlerTag((JSFile)importHolder.getContainingFile()) || - isAnonymousEventHandlerAttribute((JSFile)importHolder.getContainingFile()))) { - importHolder = ArrayUtil.contains(JSFile.class, classes) ? (JSElement)importHolder.getContainingFile() : null; + if (importHolder instanceof JSFunctionExpression functionExpr + && functionExpr.getContainingFile() instanceof JSFile jsFile + && (isAnonymousEventHandlerTag(jsFile) || isAnonymousEventHandlerAttribute(jsFile))) { + importHolder = ArrayUtil.contains(JSFile.class, classes) ? jsFile : null; } - if (importHolder instanceof JSFile && isAnonymousEventHandlerAttribute((JSFile)importHolder)) { - XmlBackedJSClassImpl jsClass = JSResolveUtil.getXmlBackedClass((JSFile)importHolder); + if (importHolder instanceof JSFile jsFile && isAnonymousEventHandlerAttribute(jsFile)) { + XmlBackedJSClassImpl jsClass = JSResolveUtil.getXmlBackedClass(jsFile); assert jsClass != null; importHolder = getImportHolderFromXmlBackedClass(jsClass); } @@ -298,16 +296,8 @@ public static JSElement getImportHolder(PsiElement origin, Class fqns) { - List sorted = new ArrayList(fqns); - Collections.sort( - sorted, - new Comparator() { - @Override - public int compare(final String o1, final String o2) { - return compareImports(o1, o2); - } - } - ); + List sorted = new ArrayList<>(fqns); + Collections.sort(sorted, ImportUtils::compareImports); final String semicolon = JSChangeUtil.getSemicolon(project); StringBuilder s = new StringBuilder(); @@ -318,10 +308,11 @@ public int compare(final String o1, final String o2) { } @Nullable + @RequiredReadAction public static JSImportStatement findEarlyImport(@Nullable PsiElement startFrom) { for (PsiElement element = startFrom; element != null; element = element.getNextSibling()) { - if (element instanceof JSImportStatement) { - return (JSImportStatement)element; + if (element instanceof JSImportStatement importStatement) { + return importStatement; } if (element instanceof JSClass || element instanceof JSStatement || element instanceof JSFunction) { break; diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/AS3InterfaceDumper.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/AS3InterfaceDumper.java index 25e1b265..e0d2f1f1 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/AS3InterfaceDumper.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/AS3InterfaceDumper.java @@ -16,8 +16,6 @@ package com.intellij.lang.javascript.impl.flex.importer; -import org.jetbrains.annotations.NonNls; - import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @@ -25,35 +23,28 @@ /** * @author Maxim.Mossienko - * Date: Oct 20, 2008 - * Time: 7:02:29 PM + * @since 2008-10-20 */ class AS3InterfaceDumper extends AbstractDumpProcessor { private int memberCount; private boolean isInterface; @Override - public void dumpStat(@Nonnull final String stat) { + public void dumpStat(@Nonnull String stat) { } @Override - public void dumpToplevelAnonymousMethod(final @Nonnull Abc abc, final @Nonnull MethodInfo m) { + public void dumpToplevelAnonymousMethod(@Nonnull Abc abc, @Nonnull MethodInfo m) { } @Override - public void dumpTopLevelTraits(final Abc abc, final @Nonnull Traits t, final String indent) { + public void dumpTopLevelTraits(@Nonnull Abc abc, @Nonnull Traits t, String indent) { t.dump(abc, indent, "", this); } @Override - public boolean doDumpMember(final @Nonnull MemberInfo memberInfo) { - if (memberInfo.name == null) { - return false; - } - if (memberInfo.name.name != null && memberInfo.name.name.indexOf(Abc.$CINIT) >= 0) { - return false; - } - return true; + public boolean doDumpMember(@Nonnull MemberInfo memberInfo) { + return memberInfo.name != null && (memberInfo.name.name == null || !memberInfo.name.name.contains(Abc.$CINIT)); } @Override @@ -72,7 +63,7 @@ public String getAbcInSwfIndent() { } @Override - public void processValue(final Multiname typeName, final Object valueObject) { + public void processValue(Multiname typeName, Object valueObject) { append(" = "); append(getValueRepr(valueObject)); } @@ -81,7 +72,7 @@ protected static String getValueRepr(Object valueObject) { if (valueObject == null) { return null; } - @NonNls String value = valueObject.toString(); + String value = valueObject.toString(); char ch; if (needsQuoting(value)) { @@ -92,7 +83,7 @@ protected static String getValueRepr(Object valueObject) { Double.parseDouble(value); doQoute = false; } - catch (NumberFormatException ex) { + catch (NumberFormatException ignored) { } } else if (value.length() > 0 && (Character.isDigit( @@ -102,7 +93,7 @@ else if (value.length() > 0 && (Character.isDigit( Integer.parseInt(value); doQoute = false; } - catch (NumberFormatException ex) { + catch (NumberFormatException ignored) { } } @@ -113,17 +104,16 @@ else if (value.length() > 0 && (Character.isDigit( return value; } - private static - @NonNls - Set doNotNeedQoting = Set.of("null", "NaN", "undefined", "true", "false", "Infinity", "-Infinity"); + private static final Set DO_NOT_NEED_QOTING = + Set.of("null", "NaN", "undefined", "true", "false", "Infinity", "-Infinity"); - private static boolean needsQuoting(final String value) { - return !doNotNeedQoting.contains(value); + private static boolean needsQuoting(String value) { + return !DO_NOT_NEED_QOTING.contains(value); } @Override - public boolean doDumpMetaData(final @Nonnull MetaData md) { - return md.name.indexOf("__") == -1; + public boolean doDumpMetaData(@Nonnull MetaData md) { + return !md.name.contains("__"); } @Override @@ -159,17 +149,17 @@ public boolean doStarMetaAttrNameDump() { } @Override - public void setProcessingInterface(final boolean anInterface) { + public void setProcessingInterface(boolean anInterface) { isInterface = anInterface; } @Override - public void hasError(@Nonnull final String error) { - sb.append("/*" + error + "*/"); + public void hasError(@Nonnull String error) { + sb.append("/*").append(error).append("*/"); } @Override - public void processMultinameAsPackageName(Multiname name, String parentName, boolean verbose) { + public void processMultinameAsPackageName(@Nonnull Multiname name, String parentName, boolean verbose) { append(getMultinameAsPackageName(name, parentName, verbose)); } @@ -188,7 +178,7 @@ protected static String getMultinameAsPackageName(Multiname name, String parentN @Override protected String appendModifiers(MemberInfo member, String attr) { - @NonNls String s = attr; + String s = attr; s += "native "; boolean hasNs = false; @@ -197,8 +187,8 @@ protected String appendModifiers(MemberInfo member, String attr) { s += member.name.getNsName() + " "; } - if (s.indexOf("private") == -1 && !hasNs && !isInterface) { - @NonNls String parentName; + if (!s.contains("private") && !hasNs && !isInterface) { + String parentName; if (member.isPublic || member.name.nsset[0].length() == 0 || diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/AS3InterfaceStubDumper.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/AS3InterfaceStubDumper.java index ccc2b853..b9f2e711 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/AS3InterfaceStubDumper.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/AS3InterfaceStubDumper.java @@ -16,23 +16,19 @@ package com.intellij.lang.javascript.impl.flex.importer; -import java.util.LinkedList; - -import org.jetbrains.annotations.NonNls; -import jakarta.annotation.Nonnull; -import jakarta.annotation.Nullable; import com.intellij.lang.javascript.JSElementTypes; import com.intellij.lang.javascript.psi.stubs.impl.JSAttributeNameValuePairStubImpl; import com.intellij.lang.javascript.psi.stubs.impl.JSReferenceListStubImpl; -import consulo.util.lang.StringUtil; import consulo.language.psi.stub.StubElement; +import consulo.util.lang.StringUtil; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; + +import java.util.LinkedList; /** - * Created by IntelliJ IDEA. - * User: Maxim.Mossienko - * Date: 05.03.2009 - * Time: 0:43:37 - * To change this template use File | Settings | File Templates. + * @author Maxim.Mossienko + * @since 2009-03-05 */ class AS3InterfaceStubDumper extends AS3InterfaceDumper { final LinkedList parents; @@ -46,7 +42,7 @@ public AS3InterfaceStubDumper(StubElement parent) { public void processMetadata(MetaData metaData) { /*parents.addLast(new JSAttributeStubImpl(metaData.name, parents.getLast())); super.processMetadata(metaData); - parents.removeLast(); */ + parents.removeLast();*/ } @Override @@ -56,9 +52,9 @@ public void addMetaDataValue(String s, String s1) { @Override protected void processArgumentList(MethodInfo methodInfo, String parentName) { - /*parents.add(new JSParameterListStubImpl(parents.getLast())); - super.processArgumentList(methodInfo, parentName); - parents.removeLast(); */ + /*parents.add(new JSParameterListStubImpl(parents.getLast())); + super.processArgumentList(methodInfo, parentName); + parents.removeLast();*/ } @Override @@ -69,89 +65,110 @@ public void processParameter( @Nullable Multiname value, boolean rest ) { - /*new JSParameterStubImpl(name, rest ? JSParameterStubImpl.REST_MASK : 0, getMultinameAsPackageName(type, parentName, true), - getValueRepr(value), - parents.getLast());*/ + /*new JSParameterStubImpl( + name, + rest ? JSParameterStubImpl.REST_MASK : 0, + getMultinameAsPackageName(type, parentName, true), + getValueRepr(value), + parents.getLast() + );*/ } @Override - public void append(@Nonnull @NonNls String str) { + public void append(@Nonnull String str) { } @Override public void processFunction(MethodInfo methodInfo, boolean referenceNameRequested, Abc abc, String indent, String attr) { - /*parents.add(new JSFunctionStubImpl(methodInfo.name.name, methodInfo.isGetMethod() ? JSFunctionStubImpl.GET_PROPERTY_MASK : methodInfo - .isSetMethod - () ? JSFunctionStubImpl.SET_PROPERTY_MASK : methodInfo.parentTraits != null && methodInfo.parentTraits.name == methodInfo.name ? - JSFunctionStubImpl.CONSTRUCTOR_MASK : 0, getMultinameAsPackageName(methodInfo.name, methodInfo.parentTraits != null ? methodInfo.parentTraits - .getClassName() : null, referenceNameRequested), getMultinameAsPackageName(methodInfo.returnType, methodInfo.getParentName(), - referenceNameRequested), parents.getLast())); - super.processFunction(methodInfo, referenceNameRequested, abc, indent, attr); - parents.removeLast(); */ + /*parents.add(new JSFunctionStubImpl( + methodInfo.name.name, + methodInfo.isGetMethod() + ? JSFunctionStubImpl.GET_PROPERTY_MASK + : methodInfo.isSetMethod() + ? JSFunctionStubImpl.SET_PROPERTY_MASK + : methodInfo.parentTraits != null && methodInfo.parentTraits.name == methodInfo.name + ? JSFunctionStubImpl.CONSTRUCTOR_MASK + : 0, + getMultinameAsPackageName( + methodInfo.name, + methodInfo.parentTraits != null ? methodInfo.parentTraits.getClassName() : null, + referenceNameRequested + ), + getMultinameAsPackageName( + methodInfo.returnType, + methodInfo.getParentName(), + referenceNameRequested + ), + parents.getLast() + )); + super.processFunction(methodInfo, referenceNameRequested, abc, indent, attr); + parents.removeLast();*/ } @Override public void processVariable(SlotInfo info, String indent, String attr) { - /*parents.add(new JSVarStatementStubImpl(parents.getLast())); - super.processVariable(info, indent, attr); - String parentName = info.getParentName(); - String qName = getMultinameAsPackageName(info.name, parentName, false); - new JSVariableStubImpl(qName.substring(qName.lastIndexOf('.') + 1), info.isConst() ? JSVariableStubImpl.CONST_MASK : 0, - getMultinameAsPackageName(info.type, parentName, false), getValueRepr(info.value), qName, parents.getLast()); - parents.removeLast(); */ + /*parents.add(new JSVarStatementStubImpl(parents.getLast())); + super.processVariable(info, indent, attr); + String parentName = info.getParentName(); + String qName = getMultinameAsPackageName(info.name, parentName, false); + new JSVariableStubImpl( + qName.substring(qName.lastIndexOf('.') + 1), info.isConst() ? JSVariableStubImpl.CONST_MASK : 0, + getMultinameAsPackageName(info.type, parentName, false), getValueRepr(info.value), qName, parents.getLast() + ); + parents.removeLast();*/ } @Override public void processClass(SlotInfo slotInfo, Abc abc, String attr, String indent) { - /*parents.add(new JSClassStubImpl(slotInfo.name.name, slotInfo.isInterfaceClass() ? JSClassStubImpl.INTERFACE_MASK : 0, - getMultinameAsPackageName(slotInfo.name, null, false), parents.getLast())); - super.processClass(slotInfo, abc, attr, indent); - parents.removeLast(); */ + /*parents.add( + new JSClassStubImpl(slotInfo.name.name, slotInfo.isInterfaceClass() ? JSClassStubImpl.INTERFACE_MASK : 0, + getMultinameAsPackageName(slotInfo.name, null, false), parents.getLast()) + ); + super.processClass(slotInfo, abc, attr, indent); + parents.removeLast();*/ } @Override protected void processModifierList(MemberInfo memberInfo, String attr, String indent) { - /*StringTokenizer tokenizer = new StringTokenizer(attr, " "); - List modifiers = new SmartList(); - JSAttributeList.AccessType accessType = null; - String ns = null; - - while(tokenizer.hasMoreTokens()) - { - String next = tokenizer.nextToken(); - boolean foundModifier = false; - - for(JSAttributeList.AccessType type : JSAttributeList.AccessType.values()) - { - if(next.equalsIgnoreCase(type.name())) - { - accessType = type; - foundModifier = true; - break; - } - } - - if(!foundModifier) - { - for(JSAttributeList.ModifierType type : JSAttributeList.ModifierType.values()) - { - if(next.equalsIgnoreCase(type.name())) - { - modifiers.add(type); - foundModifier = true; - break; - } - } - } - - if(!foundModifier) - { - ns = next; - } - } - parents.add(new JSAttributeListStubImpl(parents.getLast(), ns, accessType, modifiers.toArray(new JSAttributeList.ModifierType[modifiers.size()]))); - super.processModifierList(memberInfo, attr, indent); - parents.removeLast(); */ + /*StringTokenizer tokenizer = new StringTokenizer(attr, " "); + List modifiers = new SmartList(); + JSAttributeList.AccessType accessType = null; + String ns = null; + + while(tokenizer.hasMoreTokens()) { + String next = tokenizer.nextToken(); + boolean foundModifier = false; + + for (JSAttributeList.AccessType type : JSAttributeList.AccessType.values()) { + if (next.equalsIgnoreCase(type.name())) { + accessType = type; + foundModifier = true; + break; + } + } + + if (!foundModifier) { + for (JSAttributeList.ModifierType type : JSAttributeList.ModifierType.values()) { + if (next.equalsIgnoreCase(type.name())) { + modifiers.add(type); + foundModifier = true; + break; + } + } + } + + if(!foundModifier) { + ns = next; + } + } + parents.add(new JSAttributeListStubImpl( + parents.getLast(), + ns, + accessType, + modifiers.toArray(new JSAttributeList.ModifierType[modifiers.size()]) + )); + super.processModifierList(memberInfo, attr, indent); + parents.removeLast();*/ } @Override diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/Abc.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/Abc.java index 23f9a447..e80c423c 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/Abc.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/Abc.java @@ -16,26 +16,20 @@ package com.intellij.lang.javascript.impl.flex.importer; -import java.util.HashSet; -import java.util.Set; - import consulo.util.collection.ArrayUtil; -import org.jetbrains.annotations.NonNls; -import jakarta.annotation.Nonnull; import consulo.util.lang.StringUtil; +import jakarta.annotation.Nonnull; + +import java.util.HashSet; +import java.util.Set; /** * @author Maxim.Mossienko - * Date: Oct 20, 2008 - * Time: 7:01:16 PM + * @since 2008-10-20 */ class Abc { - static final - @NonNls - String TAB = " "; - @NonNls + static final String TAB = " "; static final String $CINIT = "$cinit"; - @NonNls static final String $ = "$"; private static final int ATTR_final = 0x01; // 1=final, 0=virtual @@ -48,7 +42,6 @@ class Abc { static final int CLASS_FLAG_interface = 0x04; static final int CLASS_FLAG_protected = 0x08; - // method flags private static final int NEED_ARGUMENTS = 0x01; static final int NEED_ACTIVATION = 0x02; @@ -87,9 +80,7 @@ class Abc { private static final int CONSTANT_MultinameLA = 0x1C; private static final int CONSTANT_TypeName = 0x1D; - static final - @NonNls - String[] constantKinds = { + static final String[] constantKinds = { "0", "utf8", "2", @@ -122,9 +113,7 @@ class Abc { private static final int TRAIT_Function = 0x05; static final int TRAIT_Const = 0x06; - static final - @NonNls - String[] traitKinds = { + static final String[] traitKinds = { "var", "function", "function get", @@ -294,9 +283,7 @@ class Abc { static final int OP_debugfile = 0xF1; private static final int OP_bkptline = 0xF2; - static final - @NonNls - String[] opNames = { + static final String[] opNames = { "OP_0x00 ", "bkpt ", "nop ", @@ -559,7 +546,7 @@ class Abc { int totalSize; final int opSizes[] = new int[256]; - public Abc(final @Nonnull ByteBuffer _data, @Nonnull FlexByteCodeInformationProcessor _processor) { + public Abc(@Nonnull ByteBuffer _data, @Nonnull FlexByteCodeInformationProcessor _processor) { data = _data; processor = _processor; @@ -598,8 +585,8 @@ public Abc(final @Nonnull ByteBuffer _data, @Nonnull FlexByteCodeInformationProc parseMethodBodies(); } - private static Object[] buildSparseArray(int index, @NonNls String s1) { - final Object[] result = new Object[index + 1]; + private static Object[] buildSparseArray(int index, String s1) { + Object[] result = new Object[index + 1]; result[index] = s1; return result; } @@ -616,7 +603,7 @@ public void dump(String indent) { } processor.dumpStat("OPCODE\tSIZE\t% OF " + totalSize + "\n"); - final Set done = new HashSet(); + Set done = new HashSet<>(); while (true) { int max = -1; int maxsize = 0; @@ -641,11 +628,8 @@ public void dump(String indent) { Integer[] ints; Integer[] uints; Double[] doubles; - @NonNls String[] strings; - @NonNls String[] namespaces; - @NonNls String[][] nssets; Multiname[] names; @@ -657,9 +641,7 @@ public void dump(String indent) { Traits[] scripts; MetaData metadata[]; - @NonNls String publicNs = ""; - @NonNls String anyNs = "*"; final int magic; @@ -803,11 +785,11 @@ void parseCpool() { nsName += ","; } nameId = readU32(); - final Multiname typeArgName = names[nameId]; + Multiname typeArgName = names[nameId]; String typeArgNameString; if (processor instanceof AS3InterfaceDumper) { - final boolean vector = typeArgName.hasNotEmptyNs() && typeArgName.nsset[0].equals("__AS3__.vec"); + boolean vector = typeArgName.hasNotEmptyNs() && typeArgName.nsset[0].equals("__AS3__.vec"); typeArgNameString = vector ? typeArgName.name : typeArgName.toString(); typeArgNameString = typeArgNameString.replaceAll("::", ".") + (vector ? " " : ""); } @@ -820,7 +802,7 @@ void parseCpool() { nsName += ">"; } - final int index = nsName.indexOf("::"); + int index = nsName.indexOf("::"); names[i] = new Multiname( new String[]{index != -1 ? nsName.substring(0, index) : ""}, @@ -867,8 +849,8 @@ void parseMethodInfos() { if (index == 0) { // kind is ignored, default value is based on type - @NonNls String value; - final @NonNls String type = m.paramTypes[k].toString(); + String value; + String type = m.paramTypes[k].toString(); if ("Number".equals(type) || "decimal".equals(type)) { value = "0"; @@ -884,21 +866,19 @@ else if ("String".equals(type)) { } m.optionalValues[k] = new Multiname(null, value); } + else if (defaults[kind] == null) { + processor.hasError("ERROR kind=" + kind + " method_id " + i + "\n"); + } else { - if (defaults[kind] == null) { - processor.hasError("ERROR kind=" + kind + " method_id " + i + "\n"); - } - else { - m.optionalValues[k] = new Multiname(null, defaults[kind][index].toString()); - } + m.optionalValues[k] = new Multiname(null, defaults[kind][index].toString()); } } } if ((m.flags & HAS_ParamNames) != 0) { m.paramNames = new String[param_count]; for (int k = 0; k < param_count; ++k) { - final int index = readU32(); - final String name = strings[index]; + int index = readU32(); + String name = strings[index]; m.paramNames[k] = StringUtil.isJavaIdentifier(name) ? name : "_" + index; } } @@ -1012,7 +992,7 @@ void parseTraits(Traits t) { t.names.put(name.toString(), member); member.parentTraits = t; - final int val = tag >> 4; + int val = tag >> 4; if ((val & ATTR_metadata) != 0) { int mdCount = readU32(); member.metadata = new MetaData[mdCount]; @@ -1111,5 +1091,4 @@ void parseMethodBodies() { private static void reportAboutPercentage(String s, ByteBuffer data, int start, @Nonnull FlexByteCodeInformationProcessor processor) { processor.dumpStat(s + (data.getPosition() - start) + " " + (int)100f * (data.getPosition() - start) / data.bytesSize() + " %\n"); } - } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/AbcDumper.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/AbcDumper.java index 1a724ff5..e46484b4 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/AbcDumper.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/AbcDumper.java @@ -21,8 +21,7 @@ /** * @author Maxim.Mossienko - * Date: Oct 20, 2008 - * Time: 7:02:22 PM + * @since 2008-10-20 */ class AbcDumper extends AbstractDumpProcessor { private boolean dumpCode; @@ -32,44 +31,44 @@ public AbcDumper(final boolean _dumpCode) { } @Override - public void dumpStat(@Nonnull final String stat) { + public void dumpStat(@Nonnull String stat) { sb.append(stat); } @Override - public void hasError(@Nonnull final String error) { + public void hasError(@Nonnull String error) { sb.append(error); } @Override protected String appendModifiers(MemberInfo member, String attr) { - attr += (member instanceof MethodInfo && (((MethodInfo)member).flags & Abc.NATIVE) != 0 ? "native " : ""); + attr += member instanceof MethodInfo methodInfo && (methodInfo.flags & Abc.NATIVE) != 0 ? "native " : ""; return attr; } @Override public void processMultinameAsPackageName( - @Nonnull final Multiname name, - @Nullable final String parentName, - final boolean referenceNameRequested + @Nonnull Multiname name, + @Nullable String parentName, + boolean referenceNameRequested ) { append(name.toString()); } @Override - public void dumpToplevelAnonymousMethod(final @Nonnull Abc abc, final @Nonnull MethodInfo m) { + public void dumpToplevelAnonymousMethod(@Nonnull Abc abc, @Nonnull MethodInfo m) { m.dump(abc, "", "", this); } @Override - public void dumpTopLevelTraits(final Abc abc, final @Nonnull Traits t, final String indent) { - sb.append(indent + t.name + "\n"); + public void dumpTopLevelTraits(@Nonnull Abc abc, @Nonnull Traits t, String indent) { + sb.append(indent).append(t.name).append("\n"); t.dump(abc, indent, "", this); t.init.dump(abc, indent, "", this); } @Override - public boolean doDumpMember(final @Nonnull MemberInfo memberInfo) { + public boolean doDumpMember(@Nonnull MemberInfo memberInfo) { return true; } @@ -89,12 +88,12 @@ public String getAbcInSwfIndent() { } @Override - public void processValue(final Multiname type, final Object value) { + public void processValue(Multiname type, Object value) { append(" = " + String.valueOf(value instanceof String ? ('"' + value.toString() + '"') : value)); } @Override - public boolean doDumpMetaData(final @Nonnull MetaData md) { + public boolean doDumpMetaData(@Nonnull MetaData md) { return true; } @@ -120,7 +119,7 @@ public boolean doStarMetaAttrNameDump() { } @Override - public void setProcessingInterface(final boolean anInterface) { + public void setProcessingInterface(boolean anInterface) { } @Override diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/AbstractDumpProcessor.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/AbstractDumpProcessor.java index 42fa8194..7eecd220 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/AbstractDumpProcessor.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/AbstractDumpProcessor.java @@ -17,17 +17,13 @@ package com.intellij.lang.javascript.impl.flex.importer; import jakarta.annotation.Nonnull; -import org.jetbrains.annotations.NonNls; /** * @author Maxim.Mossienko - * Date: Oct 20, 2008 - * Time: 7:02:13 PM + * @since 2008-10-20 */ abstract class AbstractDumpProcessor implements FlexByteCodeInformationProcessor { - protected - @NonNls - StringBuilder sb = new StringBuilder(); + protected StringBuilder sb = new StringBuilder(); private boolean firstMetaDataMember; String getResult() { @@ -35,21 +31,17 @@ String getResult() { } @Override - public void append(@Nonnull @NonNls String str) { + public void append(@Nonnull String str) { sb.append(str); } @Override - public String getParentName(final MemberInfo member) { + public String getParentName(MemberInfo member) { String parentName = null; if (member.parentTraits != null) { - if (member.parentTraits.name instanceof Multiname) { - final Multiname multiname = (Multiname)member.parentTraits.name; - - if (multiname.hasNamespace()) { - parentName = multiname.name; - } + if (member.parentTraits.name instanceof Multiname multiname && multiname.hasNamespace()) { + parentName = multiname.name; } if (parentName == null) { parentName = member.parentTraits.name.toString().replaceAll("::", "."); @@ -96,13 +88,13 @@ public void processFunction(MethodInfo methodInfo, boolean referenceNameRequeste append(indent + attr); processMemberKindAndName(methodInfo); - final String parentName = methodInfo.getParentName(); + String parentName = methodInfo.getParentName(); processArgumentList(methodInfo, parentName); append(":"); processMultinameAsPackageName(methodInfo.returnType, parentName, referenceNameRequested); } - protected void processMemberKindAndName(@Nonnull final MemberInfo member) { + protected void processMemberKindAndName(@Nonnull MemberInfo member) { append(Abc.traitKinds[member.kind]); append(" "); @@ -122,8 +114,8 @@ protected void processArgumentList(MethodInfo methodInfo, String parentName) { append("("); for (int i = 0; i < methodInfo.paramTypes.length; ++i) { - final Multiname paramType = methodInfo.paramTypes[i]; - final boolean restParameter = FlexByteCodeInformationProcessor.REST_PARAMETER_TYPE.equals(paramType.name); + Multiname paramType = methodInfo.paramTypes[i]; + boolean restParameter = FlexByteCodeInformationProcessor.REST_PARAMETER_TYPE.equals(paramType.name); if (restParameter && !dumpRestParameter()) { break; // original one do not dump } @@ -131,7 +123,8 @@ protected void processArgumentList(MethodInfo methodInfo, String parentName) { append(","); } - processParameter(methodInfo.paramNames != null ? methodInfo.paramNames[i] : "a" + (i > 0 ? "" + (i + 1) : ""), + processParameter( + methodInfo.paramNames != null ? methodInfo.paramNames[i] : "a" + (i > 0 ? "" + (i + 1) : ""), methodInfo.paramTypes[i], parentName, methodInfo.optionalValues != null && i < methodInfo.optionalValues.length ? methodInfo.optionalValues[i] : null, @@ -164,8 +157,8 @@ public void processMetadata(MetaData metaData) { public void processClass(SlotInfo slotInfo, Abc abc, String attr, String indent) { append("\n"); - @NonNls String def; - final boolean isInterface = slotInfo.isInterfaceClass(); + String def; + boolean isInterface = slotInfo.isInterfaceClass(); if (isInterface) { def = "interface"; } @@ -174,7 +167,7 @@ public void processClass(SlotInfo slotInfo, Abc abc, String attr, String indent) } if (!doStarTypeDumpInExtends()) { - final String ns = slotInfo.name.hasNamespace() ? slotInfo.name.getNsName() : null; + String ns = slotInfo.name.hasNamespace() ? slotInfo.name.getNsName() : null; if (ns != null && ns.length() > 0) { attr += ns; @@ -245,14 +238,14 @@ protected void dumpInterfacesList(String indent, Traits it, boolean anInterface) } } - protected static String quote(final String s) { + protected static String quote(String s) { if (s.length() == 0) { return s; } - final StringBuilder b = new StringBuilder(s.length()); + StringBuilder b = new StringBuilder(s.length()); for (int i = 0; i < s.length(); ++i) { - final char ch = s.charAt(i); + char ch = s.charAt(i); if (ch == '\\' || ch == '"') { b.append('\\'); diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/ByteBuffer.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/ByteBuffer.java index a3b58bde..2a250b8e 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/ByteBuffer.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/ByteBuffer.java @@ -26,8 +26,7 @@ /** * @author Maxim.Mossienko - * Date: Oct 20, 2008 - * Time: 7:02:53 PM + * @since 2008-10-20 */ class ByteBuffer { private byte[] bytes; @@ -69,7 +68,7 @@ public int readUnsignedInt() { return readInt(); } - public void setPosition(final int i) { + public void setPosition(int i) { position = i; } @@ -78,15 +77,15 @@ public int bytesSize() { } public void uncompress() throws IOException { - final InflaterInputStream zipInputStream = new InflaterInputStream(new ByteArrayInputStream(bytes)); + InflaterInputStream zipInputStream = new InflaterInputStream(new ByteArrayInputStream(bytes)); bytes = readStream(zipInputStream); zipInputStream.close(); } - private static byte[] readStream(final InputStream zipInputStream) throws IOException { - final byte[] buf = new byte[8192]; + private static byte[] readStream(InputStream zipInputStream) throws IOException { + byte[] buf = new byte[8192]; byte[] result = new byte[8192]; int total = 0; @@ -105,7 +104,7 @@ private static byte[] readStream(final InputStream zipInputStream) throws IOExce total += read; } - final byte[] realResult = new byte[total]; + byte[] realResult = new byte[total]; System.arraycopy(result, 0, realResult, 0, total); return realResult; } @@ -142,7 +141,7 @@ public boolean eof() { public String readUTFBytes(int i) { try { - final byte[] buf = new byte[i]; + byte[] buf = new byte[i]; while (i > 0) { buf[buf.length - i] = (byte)readByte(); --i; @@ -188,7 +187,7 @@ public int getPosition() { return position; } - public void incPosition(final int length) { + public void incPosition(int length) { position += length; } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/FlexByteCodeInformationProcessor.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/FlexByteCodeInformationProcessor.java index 50b3de24..247e7cef 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/FlexByteCodeInformationProcessor.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/FlexByteCodeInformationProcessor.java @@ -16,29 +16,27 @@ package com.intellij.lang.javascript.impl.flex.importer; -import org.jetbrains.annotations.NonNls; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; /** * @author Maxim.Mossienko - * Date: Oct 20, 2008 - * Time: 7:02:07 PM + * @since 2008-10-20 */ interface FlexByteCodeInformationProcessor { - void dumpStat(@Nonnull @NonNls String stat); + void dumpStat(@Nonnull String stat); void hasError(@Nonnull String error); - void append(@Nonnull @NonNls String str); + void append(@Nonnull String str); void processMultinameAsPackageName(@Nonnull Multiname name, @Nullable String parentName, boolean referenceNameRequested); - void dumpToplevelAnonymousMethod(final @Nonnull Abc abc, final @Nonnull MethodInfo m); + void dumpToplevelAnonymousMethod(@Nonnull Abc abc, @Nonnull MethodInfo m); - void dumpTopLevelTraits(final @Nonnull Abc abc, final @Nonnull Traits t, final String indent); + void dumpTopLevelTraits(@Nonnull Abc abc, @Nonnull Traits t, String indent); - boolean doDumpMember(final @Nonnull MemberInfo memberInfo); + boolean doDumpMember(@Nonnull MemberInfo memberInfo); void appendMethodSeparator(); @@ -46,19 +44,19 @@ interface FlexByteCodeInformationProcessor { String getAbcInSwfIndent(); - boolean doDumpMetaData(final @Nonnull MetaData md); + boolean doDumpMetaData(@Nonnull MetaData md); String REST_PARAMETER_TYPE = "..."; - void processParameter(final @Nonnull String name, @Nullable Multiname type, String parentName, @Nullable Multiname value, boolean rest); + void processParameter(@Nonnull String name, @Nullable Multiname type, String parentName, @Nullable Multiname value, boolean rest); boolean doStarTypeDumpInExtends(); boolean doStarMetaAttrNameDump(); - void setProcessingInterface(final boolean anInterface); + void setProcessingInterface(boolean anInterface); - String getParentName(final MemberInfo member); + String getParentName(MemberInfo member); void processVariable(SlotInfo info, String indent, String attr); diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/FlexImporter.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/FlexImporter.java index 701abf3a..be190018 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/FlexImporter.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/FlexImporter.java @@ -16,15 +16,10 @@ package com.intellij.lang.javascript.impl.flex.importer; -import java.io.BufferedInputStream; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; - import consulo.language.psi.stub.StubElement; import jakarta.annotation.Nonnull; -import org.jetbrains.annotations.NonNls; + +import java.io.*; /** * Produced from abcdump.as @@ -51,28 +46,23 @@ public static void main(String[] args) throws IOException { } } - private static void saveStringAsFile(final String result, final String fileName) throws IOException { - final FileOutputStream fileOutputStream = new FileOutputStream(fileName); - try { + private static void saveStringAsFile(String result, String fileName) throws IOException { + try (FileOutputStream fileOutputStream = new FileOutputStream(fileName)) { fileOutputStream.write(result.getBytes()); } - finally { - fileOutputStream.close(); - } } - public static String dumpContentsFromStream(final InputStream in, boolean _dumpCode) throws IOException { - final AbstractDumpProcessor abcDumper = new AbcDumper(_dumpCode); + public static String dumpContentsFromStream(InputStream in, boolean _dumpCode) throws IOException { + AbstractDumpProcessor abcDumper = new AbcDumper(_dumpCode); processFlexByteCode(in, abcDumper); return abcDumper.getResult(); } - @NonNls - public static String buildInterfaceFromStream(final InputStream in) { + public static String buildInterfaceFromStream(InputStream in) { try { - final AbstractDumpProcessor abcDumper = new AS3InterfaceDumper(); + AbstractDumpProcessor abcDumper = new AS3InterfaceDumper(); processFlexByteCode(in, abcDumper); - final String s = abcDumper.getResult(); + String s = abcDumper.getResult(); //saveStringAsFile(s, File.createTempFile("fleximport", ".as").getPath()); return s; } @@ -84,13 +74,12 @@ public static String buildInterfaceFromStream(final InputStream in) { } } - @NonNls - public static void buildStubsInterfaceFromStream(final InputStream in, final StubElement parent) throws Exception { + public static void buildStubsInterfaceFromStream(InputStream in, StubElement parent) throws Exception { processFlexByteCode(in, new AS3InterfaceStubDumper(parent)); } private static void processFlexByteCode( - @Nonnull final InputStream in, + @Nonnull InputStream in, @Nonnull FlexByteCodeInformationProcessor processor ) throws IOException { ByteBuffer data = new ByteBuffer(); @@ -110,7 +99,7 @@ private static void processFlexByteCode( case 67 | 87 << 8 | 83 << 16 | 8 << 24: // SWC8 case 67 | 87 << 8 | 83 << 16 | 7 << 24: // SWC7 case 67 | 87 << 8 | 83 << 16 | 6 << 24: // SWC6 - final int delta = 8; + int delta = 8; data.setPosition(delta); ByteBuffer udata = new ByteBuffer(); udata.setLittleEndian(); diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/LabelInfo.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/LabelInfo.java index 76d15adb..769a0609 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/LabelInfo.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/LabelInfo.java @@ -20,8 +20,7 @@ /** * @author Maxim.Mossienko - * Date: Oct 20, 2008 - * Time: 7:00:45 PM + * @since 2008-10-20 */ class LabelInfo extends LinkedHashMap { int count; @@ -30,7 +29,7 @@ String labelFor(int target) { if (containsKey(target)) { return get(target); } - final String s = "L" + (++count); + String s = "L" + (++count); put(target, s); return s; } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/MemberInfo.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/MemberInfo.java index 38737b61..12b910a3 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/MemberInfo.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/MemberInfo.java @@ -20,8 +20,7 @@ /** * @author Maxim.Mossienko - * Date: Oct 20, 2008 - * Time: 7:00:39 PM + * @since 2008-10-20 */ abstract class MemberInfo { Traits parentTraits; @@ -33,9 +32,9 @@ abstract class MemberInfo { boolean isPublic; boolean isFinal; - abstract void dump(Abc abc, String indent, String attr, final @Nonnull FlexByteCodeInformationProcessor processor); + abstract void dump(Abc abc, String indent, String attr, @Nonnull FlexByteCodeInformationProcessor processor); - protected void dumpMetaData(String indent, final @Nonnull FlexByteCodeInformationProcessor processor) { + protected void dumpMetaData(String indent, @Nonnull FlexByteCodeInformationProcessor processor) { if (metadata != null) { for (MetaData md : metadata) { if (processor.doDumpMetaData(md)) { diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/MetaData.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/MetaData.java index 7f0f2496..9daf422e 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/MetaData.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/MetaData.java @@ -20,8 +20,7 @@ /** * @author Maxim.Mossienko - * Date: Oct 20, 2008 - * Time: 7:00:50 PM + * @since 2008-10-20 */ class MetaData extends LinkedHashMap { String name; diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/MethodInfo.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/MethodInfo.java index be026f7b..ec270bd3 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/MethodInfo.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/MethodInfo.java @@ -20,8 +20,7 @@ /** * @author Maxim.Mossienko - * Date: Oct 20, 2008 - * Time: 7:00:56 PM + * @since 2008-10-20 */ class MethodInfo extends MemberInfo { int flags; @@ -39,7 +38,7 @@ class MethodInfo extends MemberInfo { boolean anon; @Override - void dump(Abc abc, String indent, String attr, final FlexByteCodeInformationProcessor processor) { + void dump(Abc abc, String indent, String attr, FlexByteCodeInformationProcessor processor) { if (!processor.doDumpMember(this)) { return; } @@ -244,10 +243,10 @@ int readS24() { } boolean isGetMethod() { - return traitKinds[kind].indexOf(" get") != -1; + return traitKinds[kind].contains(" get"); } boolean isSetMethod() { - return traitKinds[kind].indexOf(" set") != -1; + return traitKinds[kind].contains(" set"); } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/Multiname.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/Multiname.java index a32003f1..8f5b4a5e 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/Multiname.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/Multiname.java @@ -18,8 +18,7 @@ /** * @author Maxim.Mossienko - * Date: Oct 20, 2008 - * Time: 7:03:18 PM + * @since 2008-10-20 */ class Multiname { String[] nsset; @@ -47,7 +46,7 @@ boolean hasNotEmptyNs() { public boolean hasNamespace() { return hasNotEmptyNs() && (nsset[0].startsWith("http://") || nsset[0].equals("private") || nsset[0].equals("__AS3__.vec") || - nsset[0].indexOf('$') != -1 || nsset[0].indexOf("/private:") != -1); + nsset[0].indexOf('$') != -1 || nsset[0].contains("/private:")); } public String getNsName() { diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/SlotInfo.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/SlotInfo.java index 4fbf3d5e..8caea010 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/SlotInfo.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/SlotInfo.java @@ -18,15 +18,14 @@ /** * @author Maxim.Mossienko - * Date: Oct 20, 2008 - * Time: 7:01:03 PM + * @since 2008-10-20 */ class SlotInfo extends MemberInfo { Multiname type; Object value; @Override - void dump(Abc abc, String indent, String attr, final FlexByteCodeInformationProcessor processor) { + void dump(Abc abc, String indent, String attr, FlexByteCodeInformationProcessor processor) { if (!processor.doDumpMember(this)) { return; } @@ -40,13 +39,10 @@ void dump(Abc abc, String indent, String attr, final FlexByteCodeInformationProc } boolean isInterfaceClass() { - if (!(value instanceof Traits)) { - return false; - } - return (((Traits)value).itraits.flags & Abc.CLASS_FLAG_interface) != 0; + return value instanceof Traits traits && (traits.itraits.flags & Abc.CLASS_FLAG_interface) != 0; } public boolean isConst() { - return Abc.traitKinds[kind].indexOf("const") != -1; + return Abc.traitKinds[kind].contains("const"); } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/Swf.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/Swf.java index 1ede8c29..477b4bca 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/Swf.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/Swf.java @@ -16,12 +16,9 @@ package com.intellij.lang.javascript.impl.flex.importer; -import org.jetbrains.annotations.NonNls; - /** * @author Maxim.Mossienko - * Date: Oct 20, 2008 - * Time: 7:01:59 PM + * @since 2008-10-20 */ class Swf { private static class Rect { @@ -30,9 +27,7 @@ private static class Rect { int yMin, yMax; @Override - public - @NonNls - String toString() { + public String toString() { return "[Rect " + xMin + " " + yMin + " " + xMax + " " + yMax + "]"; } } @@ -43,12 +38,10 @@ String toString() { private ByteBuffer data; - private static final int stagDoABC = 72; // embedded .abc (AVM+) bytecode - private static final int stagDoABC2 = 82; // revised ABC version with a name + private static final int STAG_DO_ABC = 72; // embedded .abc (AVM+) bytecode + private static final int STAG_DO_ABC_2 = 82; // revised ABC version with a name - private static final - @NonNls - String[] tagNames = { + private static final String[] TAG_NAMES = { "End", // 00 "ShowFrame", @@ -261,14 +254,13 @@ String toString() { // end }; - - public Swf(final ByteBuffer _data, final FlexByteCodeInformationProcessor _processor) { + public Swf(ByteBuffer _data, FlexByteCodeInformationProcessor _processor) { data = _data; processor = _processor; - final Rect rect = decodeRect(); - final int rate = data.readUnsignedByte() << 8 | data.readUnsignedByte(); - final int count = data.readUnsignedShort(); + Rect rect = decodeRect(); + int rate = data.readUnsignedByte() << 8 | data.readUnsignedByte(); + int count = data.readUnsignedShort(); processor.dumpStat("size " + rect + "\n"); processor.dumpStat("frame rate " + rate + "\n"); @@ -287,20 +279,20 @@ private void decodeTags() { length = data.readInt(); } - processor.dumpStat((type < tagNames.length ? tagNames[type] : "undefined") + " " + length + "b " + ((int)100f * length / data.bytesSize()) + + processor.dumpStat((type < TAG_NAMES.length ? TAG_NAMES[type] : "undefined") + " " + length + "b " + ((int)100f * length / data.bytesSize()) + "%\n"); switch (type) { case 0: return; - case stagDoABC2: + case STAG_DO_ABC_2: int pos1 = data.getPosition(); data.readInt(); - final String abcName = readString(); + String abcName = readString(); processor.dumpStat("\nabc name " + abcName + "\n"); length -= (data.getPosition() - pos1); // fall through - case stagDoABC: + case STAG_DO_ABC: ByteBuffer data2 = new ByteBuffer(); data2.setLittleEndian(); data.readBytes(data2, length); diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/Traits.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/Traits.java index 5b31f74b..d399cde7 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/Traits.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/Traits.java @@ -21,8 +21,7 @@ /** * @author Maxim.Mossienko - * Date: Oct 20, 2008 - * Time: 7:01:09 PM + * @since 2008-10-20 */ class Traits { Object name; @@ -32,24 +31,24 @@ class Traits { int flags; String protectedNs; Multiname interfaces[]; - Map names = new LinkedHashMap(); - Map slots = new LinkedHashMap(); - Map methods = new LinkedHashMap(); - Map members = new LinkedHashMap(); + Map names = new LinkedHashMap<>(); + Map slots = new LinkedHashMap<>(); + Map methods = new LinkedHashMap<>(); + Map members = new LinkedHashMap<>(); @Override public String toString() { return name.toString(); } - public void dump(Abc abc, String indent, String attr, final FlexByteCodeInformationProcessor processor) { + public void dump(Abc abc, String indent, String attr, FlexByteCodeInformationProcessor processor) { for (MemberInfo m : members.values()) { m.dump(abc, indent, attr, processor); } } String getClassName() { - final String s = name.toString(); + String s = name.toString(); if (s.endsWith(Abc.$)) { return s.substring(0, s.length() - 1); } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/folding/JavaScriptFoldingBuilder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/folding/JavaScriptFoldingBuilder.java index 9b3e2bf0..800aa297 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/folding/JavaScriptFoldingBuilder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/folding/JavaScriptFoldingBuilder.java @@ -46,9 +46,9 @@ */ @ExtensionImpl public class JavaScriptFoldingBuilder implements FoldingBuilder { - @RequiredReadAction @Nonnull @Override + @RequiredReadAction public FoldingDescriptor[] buildFoldRegions(@Nonnull ASTNode node, @Nonnull Document document) { List descriptors = new ArrayList<>(); appendDescriptors(node, document, descriptors); @@ -56,8 +56,8 @@ public FoldingDescriptor[] buildFoldRegions(@Nonnull ASTNode node, @Nonnull Docu } @RequiredReadAction - private static ASTNode appendDescriptors(final ASTNode node, final Document document, final List descriptors) { - final IElementType type = node.getElementType(); + private static ASTNode appendDescriptors(ASTNode node, Document document, List descriptors) { + IElementType type = node.getElementType(); if (type == JSElementTypes.BLOCK_STATEMENT || type == JSElementTypes.OBJECT_LITERAL_EXPRESSION || type == JSElementTypes.ARRAY_LITERAL_EXPRESSION @@ -114,9 +114,9 @@ private static void addDescriptorForNode(ASTNode node, List d @RequiredReadAction private static ASTNode collapseConsequentNodesOfSpecifiedType( - final ASTNode node, - final List descriptors, - final IElementType endOfLineComment + ASTNode node, + List descriptors, + IElementType endOfLineComment ) { PsiElement lastEoLComment = node.getPsi(); PsiElement current = lastEoLComment.getNextSibling(); @@ -148,7 +148,7 @@ private static ASTNode collapseConsequentNodesOfSpecifiedType( @RequiredReadAction @Override public String getPlaceholderText(ASTNode node) { - final IElementType type = node.getElementType(); + IElementType type = node.getElementType(); if (type == JSTokenTypes.DOC_COMMENT) { return "/**...*/"; } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSCodeStylePanel.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSCodeStylePanel.java index 8184e5c4..d31a677e 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSCodeStylePanel.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSCodeStylePanel.java @@ -25,21 +25,17 @@ import consulo.language.editor.highlight.EditorHighlighterFactory; import consulo.language.file.light.LightVirtualFile; import consulo.language.psi.PsiFile; +import consulo.ui.annotation.RequiredUIAccess; import consulo.ui.ex.awt.event.DocumentAdapter; import consulo.virtualFileSystem.fileType.FileType; -import org.jetbrains.annotations.NonNls; - import jakarta.annotation.Nonnull; import javax.swing.*; import javax.swing.event.DocumentEvent; -import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; /** * @author Maxim.Mossienko - * Date: Mar 12, 2008 - * Time: 10:39:21 PM + * @since 2008-03-12 */ public class JSCodeStylePanel extends CodeStyleAbstractPanel { private JPanel myPanel; @@ -50,25 +46,23 @@ public class JSCodeStylePanel extends CodeStyleAbstractPanel { private JCheckBox myUseSemicolon; private boolean myInsideUpdate = false; + @RequiredUIAccess public JSCodeStylePanel(final CodeStyleSettings settings) { super(settings); installPreviewPanel(myPreviewPanel); addPanelToWatch(myPanel); - myUseSemicolon.addItemListener(new ItemListener() { - @Override - public void itemStateChanged(final ItemEvent e) { - if (!myInsideUpdate) { - //updatePreviewEditor(); - somethingChanged(); - } + myUseSemicolon.addItemListener(e -> { + if (!myInsideUpdate) { + //updatePreviewEditor(); + somethingChanged(); } }); final DocumentAdapter adapter = new DocumentAdapter() { @Override - protected void textChanged(final DocumentEvent e) { + protected void textChanged(DocumentEvent e) { if (!myInsideUpdate) { //updatePreviewEditor(); somethingChanged(); @@ -81,7 +75,7 @@ protected void textChanged(final DocumentEvent e) { } @Override - protected EditorHighlighter createHighlighter(final EditorColorsScheme scheme) { + protected EditorHighlighter createHighlighter(EditorColorsScheme scheme) { return EditorHighlighterFactory.getInstance().createEditorHighlighter(new LightVirtualFile("a.as"), scheme, null); } @@ -91,7 +85,7 @@ protected int getRightMargin() { } @Override - protected void prepareForReformat(final PsiFile psiFile) { + protected void prepareForReformat(PsiFile psiFile) { } @Override @@ -102,40 +96,42 @@ protected FileType getFileType() { @Override protected String getPreviewText() { - final JSCodeStyleSettings jsCodeStyleSettings = getSettings().getCustomSettings(JSCodeStyleSettings.class); - @NonNls String baseName = "field"; - @NonNls String propertyName = + JSCodeStyleSettings jsCodeStyleSettings = getSettings().getCustomSettings(JSCodeStyleSettings.class); + String baseName = "field"; + String propertyName = (myPropertyPrefixTextField != null ? myPropertyPrefixTextField.getText() : jsCodeStyleSettings.PROPERTY_PREFIX) + baseName; - @NonNls String varName = + String varName = (myFieldPrefixTextField != null ? myFieldPrefixTextField.getText() : jsCodeStyleSettings.FIELD_PREFIX) + baseName; - @NonNls String semiColon = + String semiColon = (myUseSemicolon != null ? myUseSemicolon.isSelected() : jsCodeStyleSettings.USE_SEMICOLON_AFTER_STATEMENT) ? ";" : ""; - return "package aaa {\nclass XXX {\n" + + return "package aaa {\n" + + "class XXX {\n" + "private var " + varName + semiColon + "\n" + - "function get " + propertyName + "() {\nreturn " + varName + semiColon + "\n" + + "function get " + propertyName + "() {\n" + + "return " + varName + semiColon + "\n" + "}\n}\n}"; } @Override - public void apply(final CodeStyleSettings settings) { - final JSCodeStyleSettings jsCodeStyleSettings = settings.getCustomSettings(JSCodeStyleSettings.class); - jsCodeStyleSettings.INDENT_PACKAGE_CHILDREN = - myIndentPackageChildren.isSelected() ? JSCodeStyleSettings.INDENT : JSCodeStyleSettings - .DO_NOT_INDENT; + public void apply(CodeStyleSettings settings) { + JSCodeStyleSettings jsCodeStyleSettings = settings.getCustomSettings(JSCodeStyleSettings.class); + jsCodeStyleSettings.INDENT_PACKAGE_CHILDREN = myIndentPackageChildren.isSelected() + ? JSCodeStyleSettings.INDENT + : JSCodeStyleSettings.DO_NOT_INDENT; jsCodeStyleSettings.FIELD_PREFIX = myFieldPrefixTextField.getText(); jsCodeStyleSettings.PROPERTY_PREFIX = myPropertyPrefixTextField.getText(); jsCodeStyleSettings.USE_SEMICOLON_AFTER_STATEMENT = myUseSemicolon.isSelected(); } @Override - public boolean isModified(final CodeStyleSettings settings) { - final JSCodeStyleSettings jsCodeStyleSettings = settings.getCustomSettings(JSCodeStyleSettings.class); - return (jsCodeStyleSettings.INDENT_PACKAGE_CHILDREN == JSCodeStyleSettings.INDENT) != myIndentPackageChildren.isSelected() || - !jsCodeStyleSettings.FIELD_PREFIX.equals(myFieldPrefixTextField.getText()) || - !jsCodeStyleSettings.PROPERTY_PREFIX.equals(myPropertyPrefixTextField.getText()) || - jsCodeStyleSettings.USE_SEMICOLON_AFTER_STATEMENT != (myUseSemicolon.isSelected()); + public boolean isModified(CodeStyleSettings settings) { + JSCodeStyleSettings jsCodeStyleSettings = settings.getCustomSettings(JSCodeStyleSettings.class); + return (jsCodeStyleSettings.INDENT_PACKAGE_CHILDREN == JSCodeStyleSettings.INDENT) != myIndentPackageChildren.isSelected() + || !jsCodeStyleSettings.FIELD_PREFIX.equals(myFieldPrefixTextField.getText()) + || !jsCodeStyleSettings.PROPERTY_PREFIX.equals(myPropertyPrefixTextField.getText()) + || jsCodeStyleSettings.USE_SEMICOLON_AFTER_STATEMENT != (myUseSemicolon.isSelected()); } @Override @@ -144,10 +140,10 @@ public JComponent getPanel() { } @Override - protected void resetImpl(final CodeStyleSettings settings) { + protected void resetImpl(CodeStyleSettings settings) { try { myInsideUpdate = true; - final JSCodeStyleSettings jsCodeStyleSettings = settings.getCustomSettings(JSCodeStyleSettings.class); + JSCodeStyleSettings jsCodeStyleSettings = settings.getCustomSettings(JSCodeStyleSettings.class); myIndentPackageChildren.setSelected(jsCodeStyleSettings.INDENT_PACKAGE_CHILDREN == JSCodeStyleSettings.INDENT); myFieldPrefixTextField.setText(jsCodeStyleSettings.FIELD_PREFIX); myPropertyPrefixTextField.setText(jsCodeStyleSettings.PROPERTY_PREFIX); @@ -159,7 +155,7 @@ protected void resetImpl(final CodeStyleSettings settings) { } @Override - protected String getFileTypeExtension(final FileType fileType) { + protected String getFileTypeExtension(FileType fileType) { return "js2"; } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSCodeStyleSettingsProvider.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSCodeStyleSettingsProvider.java index 26225fe1..74f7eba2 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSCodeStyleSettingsProvider.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSCodeStyleSettingsProvider.java @@ -30,13 +30,12 @@ /** * @author Maxim.Mossienko - * Date: Mar 12, 2008 - * Time: 10:32:33 PM + * @since 2008-03-12 */ @ExtensionImpl public class JSCodeStyleSettingsProvider extends CodeStyleSettingsProvider { @Override - public CustomCodeStyleSettings createCustomSettings(final CodeStyleSettings settings) { + public CustomCodeStyleSettings createCustomSettings(CodeStyleSettings settings) { return new JSCodeStyleSettings(settings); } @@ -48,7 +47,7 @@ public Language getLanguage() { @Override @Nonnull - public Configurable createSettingsPage(final CodeStyleSettings settings, final CodeStyleSettings originalSettings) { + public Configurable createSettingsPage(CodeStyleSettings settings, CodeStyleSettings originalSettings) { return new JavaScriptCodeStyleConfigurable(settings, originalSettings); } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSFormattingModel.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSFormattingModel.java index 662442fb..958cd10e 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSFormattingModel.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSFormattingModel.java @@ -32,7 +32,7 @@ public class JSFormattingModel implements FormattingModel { private FormattingModel myModel; - public JSFormattingModel(final PsiFile file, CodeStyleSettings settings, final Block rootBlock) { + public JSFormattingModel(PsiFile file, CodeStyleSettings settings, Block rootBlock) { myModel = FormattingModelProvider.createFormattingModelForPsiFile(file, rootBlock, settings); } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSSpacingProcessor.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSSpacingProcessor.java index 176d312d..29a14380 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSSpacingProcessor.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSSpacingProcessor.java @@ -22,6 +22,7 @@ import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.lang.javascript.psi.JSFunction; import com.intellij.lang.javascript.psi.JSImportStatement; +import consulo.annotation.access.RequiredReadAction; import consulo.document.util.TextRange; import consulo.language.ast.ASTNode; import consulo.language.ast.IElementType; @@ -46,7 +47,7 @@ public class JSSpacingProcessor extends JSNodeVisitor { private final IElementType type1; private final IElementType type2; - public JSSpacingProcessor(final ASTNode parent, final ASTNode child1, final ASTNode child2, final CommonCodeStyleSettings settings) { + public JSSpacingProcessor(ASTNode parent, ASTNode child1, ASTNode child2, CommonCodeStyleSettings settings) { myParent = parent; myChild1 = child1; myChild2 = child2; @@ -61,34 +62,44 @@ public Spacing getResult() { } @Override - public void visitObjectLiteralExpression(final ASTNode node) { + public void visitObjectLiteralExpression(ASTNode node) { if (((type1 == JSTokenTypes.LBRACE && type2 != JSTokenTypes.RBRACE) || type1 == JSTokenTypes.COMMA || (type1 != JSTokenTypes.LBRACE && type2 == JSTokenTypes.RBRACE)) && shouldFormatObjectLiteralExpression()) { - myResult = Spacing.createSpacing(0, 0, 1, mySettings.KEEP_LINE_BREAKS, mySettings.KEEP_BLANK_LINES_IN_CODE); + myResult = Spacing.createSpacing( + 0, + 0, + 1, + mySettings.KEEP_LINE_BREAKS, + mySettings.KEEP_BLANK_LINES_IN_CODE + ); } } private boolean shouldFormatObjectLiteralExpression() { IElementType grandParentType = myParent.getTreeParent().getElementType(); - if (grandParentType == JSElementTypes.ARRAY_LITERAL_EXPRESSION) { - return true; - } - - return false; + return grandParentType == JSElementTypes.ARRAY_LITERAL_EXPRESSION; } @Override - public void visitArrayLiteralExpression(final ASTNode node) { + @RequiredReadAction + public void visitArrayLiteralExpression(ASTNode node) { if (((type1 == JSTokenTypes.LBRACKET && type2 != JSTokenTypes.RBRACKET) || type1 == JSTokenTypes.COMMA || (type1 != JSTokenTypes.LBRACKET && type2 == JSTokenTypes.RBRACKET)) && shouldFormatArrayLiteralExpression()) { - myResult = Spacing.createSpacing(0, 0, 1, mySettings.KEEP_LINE_BREAKS, mySettings.KEEP_BLANK_LINES_IN_CODE); + myResult = Spacing.createSpacing( + 0, + 0, + 1, + mySettings.KEEP_LINE_BREAKS, + mySettings.KEEP_BLANK_LINES_IN_CODE + ); } } + @RequiredReadAction private boolean shouldFormatArrayLiteralExpression() { JSExpression jsExpression = PsiTreeUtil.findChildOfType(myParent.getPsi(), JSExpression.class); if (jsExpression != null) { @@ -115,27 +126,51 @@ private boolean shouldFormatXmlLiteralExpression() { @Override public void visitAttributeList(final ASTNode node) { if (type1 == JSElementTypes.ATTRIBUTE || type2 == JSElementTypes.ATTRIBUTE) { - myResult = Spacing.createSpacing(0, 0, 1, mySettings.KEEP_LINE_BREAKS, mySettings.KEEP_BLANK_LINES_IN_CODE); + myResult = Spacing.createSpacing( + 0, + 0, + 1, + mySettings.KEEP_LINE_BREAKS, + mySettings.KEEP_BLANK_LINES_IN_CODE + ); } else { - myResult = Spacing.createSpacing(1, 1, 0, mySettings.KEEP_LINE_BREAKS, mySettings.KEEP_BLANK_LINES_IN_CODE); + myResult = Spacing.createSpacing( + 1, + 1, + 0, + mySettings.KEEP_LINE_BREAKS, + mySettings.KEEP_BLANK_LINES_IN_CODE + ); } } @Override public void visitEmbeddedContent(final ASTNode node) { if (type2 == JSTokenTypes.END_OF_LINE_COMMENT) { - myResult = Spacing.createSpacing(0, Integer.MAX_VALUE, 0, mySettings.KEEP_LINE_BREAKS, mySettings.KEEP_BLANK_LINES_IN_CODE); + myResult = Spacing.createSpacing( + 0, + Integer.MAX_VALUE, + 0, + mySettings.KEEP_LINE_BREAKS, + mySettings.KEEP_BLANK_LINES_IN_CODE + ); } else if (JSElementTypes.SOURCE_ELEMENTS.contains(type1) || JSElementTypes.SOURCE_ELEMENTS.contains(type2) && type1 != JSTokenTypes.DOT || type2 == JSTokenTypes.RBRACE) { - myResult = Spacing.createSpacing(0, 0, 1, mySettings.KEEP_LINE_BREAKS, mySettings.KEEP_BLANK_LINES_IN_CODE); + myResult = Spacing.createSpacing( + 0, + 0, + 1, + mySettings.KEEP_LINE_BREAKS, + mySettings.KEEP_BLANK_LINES_IN_CODE + ); } } @Override - public void visitParameterList(final ASTNode node) { + public void visitParameterList(ASTNode node) { if (type1 == JSTokenTypes.LPAR && type2 == JSTokenTypes.RPAR) { setSingleSpace(false); } @@ -151,7 +186,8 @@ else if (type2 == JSTokenTypes.COMMA) { } @Override - public void visitPackageStatement(final ASTNode node) { + @RequiredReadAction + public void visitPackageStatement(ASTNode node) { if (shouldMakeLBraceOnNextLine()) { myResult = Spacing.createSpacing( 0, @@ -166,7 +202,8 @@ public void visitPackageStatement(final ASTNode node) { } @Override - public void visitClass(final ASTNode node) { + @RequiredReadAction + public void visitClass(ASTNode node) { if (shouldMakeLBraceOnNextLine()) { myResult = Spacing.createSpacing( 0, @@ -185,11 +222,13 @@ private boolean shouldMakeLBraceOnNextLine() { } @Override - public void visitBlock(final ASTNode node) { + @RequiredReadAction + public void visitBlock(ASTNode node) { processBlock(node); } - private void processBlock(final ASTNode node) { + @RequiredReadAction + private void processBlock(ASTNode node) { if (JSElementTypes.SOURCE_ELEMENTS.contains(type1) || JSElementTypes.SOURCE_ELEMENTS.contains(type2) || type2 == JSTokenTypes.RBRACE) { if (isInjectedJSHack(type1, type2) || isInjectedJSHack(type2, type1) @@ -198,7 +237,7 @@ && isInlineEndOfLineCommentOnLeft() && type1 != JSElementTypes.ES4_IMPORT_STATEM myResult = Spacing.getReadOnlySpacing(); } else { - final boolean keepOneLine = myParent.getPsi() instanceof JSFunction + boolean keepOneLine = myParent.getPsi() instanceof JSFunction ? mySettings.KEEP_SIMPLE_METHODS_IN_ONE_LINE : mySettings.KEEP_SIMPLE_BLOCKS_IN_ONE_LINE; @@ -252,6 +291,7 @@ private boolean shouldPlaceExtraLinesAroundMethod() { || (type1 == JSElementTypes.VAR_STATEMENT && type2 == JSElementTypes.FUNCTION_DECLARATION); } + @RequiredReadAction private Spacing getSpacingBetweenImports() { String fqn1 = ((JSImportStatement)myChild1.getPsi()).getImportText(); String fqn2 = ((JSImportStatement)myChild2.getPsi()).getImportText(); @@ -267,13 +307,14 @@ private Spacing getSpacingBetweenImports() { ); } - private static boolean isInjectedJSHack(final IElementType type1, final IElementType type2) { + private static boolean isInjectedJSHack(IElementType type1, IElementType type2) { // Following code attempts NOT to reformat '@xxx:bbb.ccc' in var initializers return type1 == JSTokenTypes.BAD_CHARACTER && JSElementTypes.SOURCE_ELEMENTS.contains(type2); } @Override - public void visitFile(final ASTNode node) { + @RequiredReadAction + public void visitFile(ASTNode node) { if (JSElementTypes.SOURCE_ELEMENTS.contains(type1) || JSElementTypes.SOURCE_ELEMENTS.contains(type2)) { if (type2 == JSTokenTypes.END_OF_LINE_COMMENT && isInlineEndOfLineCommentOnLeft() @@ -315,18 +356,13 @@ else if (shouldPlaceExtraLinesAroundMethod() && node.getPsi().getContext() insta } private boolean isInlineEndOfLineCommentOnLeft() { - final ASTNode prev = myChild2.getTreePrev(); - if (prev == myChild1) { - return true; - } - if (prev != null && prev.getPsi() instanceof PsiWhiteSpace) { - return !prev.textContains('\n'); - } - return false; + ASTNode prev = myChild2.getTreePrev(); + return prev == myChild1 + || prev != null && prev.getPsi() instanceof PsiWhiteSpace && !prev.textContains('\n'); } @Override - public void visitFunctionDeclaration(final ASTNode node) { + public void visitFunctionDeclaration(ASTNode node) { if (type1 == JSTokenTypes.FUNCTION_KEYWORD && type2 == JSElementTypes.REFERENCE_EXPRESSION) { setSingleSpace(true); } @@ -342,12 +378,12 @@ else if (type1 == JSElementTypes.ATTRIBUTE_LIST && type2 == JSTokenTypes.FUNCTIO } @Override - public void visitFunctionExpression(final ASTNode node) { + public void visitFunctionExpression(ASTNode node) { visitFunctionDeclaration(node); } @Override - public void visitReferenceExpression(final ASTNode node) { + public void visitReferenceExpression(ASTNode node) { if (type1 == JSTokenTypes.NEW_KEYWORD) { setSingleSpace(true); } @@ -357,7 +393,7 @@ public void visitReferenceExpression(final ASTNode node) { } @Override - public void visitDocComment(final ASTNode node) { + public void visitDocComment(ASTNode node) { //myResult = Spacing.createKeepingFirstColumnSpacing( // 0, // Integer.MAX_VALUE, @@ -367,7 +403,7 @@ public void visitDocComment(final ASTNode node) { } @Override - public void visitIfStatement(final ASTNode node) { + public void visitIfStatement(ASTNode node) { if (type1 == JSTokenTypes.IF_KEYWORD && type2 == JSTokenTypes.LPAR) { setSingleSpace(mySettings.SPACE_BEFORE_IF_PARENTHESES); } @@ -387,14 +423,14 @@ else if (type1 == JSTokenTypes.ELSE_KEYWORD && type2 == JSElementTypes.BLOCK_STA } @Override - public void visitCallExpression(final ASTNode node) { + public void visitCallExpression(ASTNode node) { if (type2 == JSElementTypes.ARGUMENT_LIST) { setSingleSpace(mySettings.SPACE_BEFORE_METHOD_CALL_PARENTHESES); } } @Override - public void visitNewExpression(final ASTNode node) { + public void visitNewExpression(ASTNode node) { if (type1 == JSTokenTypes.NEW_KEYWORD) { setSingleSpace(true); } @@ -404,7 +440,7 @@ else if (type2 == JSElementTypes.ARGUMENT_LIST) { } @Override - public void visitForStatement(final ASTNode node) { + public void visitForStatement(ASTNode node) { if (type1 == JSTokenTypes.SEMICOLON) { setSingleSpace(true); } @@ -425,7 +461,7 @@ else if (type1 == JSTokenTypes.LPAR || type2 == JSTokenTypes.RPAR) { } @Override - public void visitDoWhileStatement(final ASTNode node) { + public void visitDoWhileStatement(ASTNode node) { if (type2 == JSTokenTypes.WHILE_KEYWORD) { if (mySettings.WHILE_ON_NEW_LINE) { myResult = Spacing.createSpacing( @@ -459,7 +495,7 @@ else if (type1 == JSTokenTypes.LPAR || type2 == JSTokenTypes.RPAR) { } @Override - public void visitForInStatement(final ASTNode node) { + public void visitForInStatement(ASTNode node) { if (type1 == JSTokenTypes.VAR_KEYWORD || type2 == JSTokenTypes.VAR_KEYWORD) { setSingleSpace(true); } @@ -476,7 +512,7 @@ else if (type1 == JSTokenTypes.LPAR || type2 == JSTokenTypes.RPAR) { } @Override - public void visitWhileStatement(final ASTNode node) { + public void visitWhileStatement(ASTNode node) { if (type1 == JSTokenTypes.WHILE_KEYWORD && type2 == JSTokenTypes.LPAR) { setSingleSpace(mySettings.SPACE_BEFORE_WHILE_PARENTHESES); } @@ -490,7 +526,7 @@ else if (type1 == JSTokenTypes.LPAR || type2 == JSTokenTypes.RPAR) { } @Override - public void visitWithStatement(final ASTNode node) { + public void visitWithStatement(ASTNode node) { if (type1 == JSTokenTypes.WITH_KEYWORD && type2 == JSTokenTypes.LPAR) { setSingleSpace(mySettings.SPACE_BEFORE_WHILE_PARENTHESES); } @@ -508,7 +544,7 @@ else if (type1 == JSTokenTypes.LPAR || type2 == JSTokenTypes.RPAR) { ); @Override - public void visitTryStatement(final ASTNode node) { + public void visitTryStatement(ASTNode node) { if (type1 == JSTokenTypes.TRY_KEYWORD && type2 == JSElementTypes.BLOCK_STATEMENT) { setBraceSpace(mySettings.SPACE_BEFORE_TRY_LBRACE, mySettings.BRACE_STYLE, null); } @@ -524,7 +560,7 @@ else if (type1 == JSTokenTypes.FINALLY_KEYWORD) { } @Override - public void visitCatchBlock(final ASTNode node) { + public void visitCatchBlock(ASTNode node) { if (type1 == JSTokenTypes.LPAR || type2 == JSTokenTypes.RPAR) { setSingleSpace(mySettings.SPACE_WITHIN_CATCH_PARENTHESES); } @@ -540,7 +576,7 @@ public void visitCatchBlock(final ASTNode node) { } @Override - public void visitSwitchStatement(final ASTNode node) { + public void visitSwitchStatement(ASTNode node) { if (type1 == JSTokenTypes.SWITCH_KEYWORD && type2 == JSTokenTypes.LPAR) { setSingleSpace(mySettings.SPACE_BEFORE_SWITCH_PARENTHESES); } @@ -554,7 +590,7 @@ else if (type1 == JSTokenTypes.LPAR || type2 == JSTokenTypes.RPAR) { } @Override - public void visitArgumentList(final ASTNode node) { + public void visitArgumentList(ASTNode node) { if (type1 == JSTokenTypes.LPAR || type2 == JSTokenTypes.RPAR) { setSingleSpace(false); } @@ -567,28 +603,28 @@ else if (type2 == JSTokenTypes.COMMA) { } @Override - public void visitStatement(final ASTNode node) { + public void visitStatement(ASTNode node) { if (type2 == JSTokenTypes.SEMICOLON) { setSingleSpace(false); } } @Override - public void visitVarStatement(final ASTNode node) { + public void visitVarStatement(ASTNode node) { if (type1 == JSTokenTypes.VAR_KEYWORD) { setSingleSpace(true); } } @Override - public void visitVariable(final ASTNode node) { + public void visitVariable(ASTNode node) { if (type1 == JSTokenTypes.EQ || type2 == JSTokenTypes.EQ) { // Initializer setSingleSpace(mySettings.SPACE_AROUND_ASSIGNMENT_OPERATORS); } } @Override - public void visitBinaryExpression(final ASTNode node) { + public void visitBinaryExpression(ASTNode node) { IElementType opSign = null; if (JSTokenTypes.OPERATIONS.contains(type1)) { opSign = type1; @@ -603,7 +639,7 @@ else if (JSTokenTypes.OPERATIONS.contains(type2)) { } @Override - public void visitConditionalExpression(final ASTNode node) { + public void visitConditionalExpression(ASTNode node) { if (type1 == JSTokenTypes.QUEST) { setSingleSpace(mySettings.SPACE_AFTER_QUEST); } @@ -618,7 +654,7 @@ else if (type2 == JSTokenTypes.COLON) { } } - private boolean getSpaceAroundOption(final IElementType opSign) { + private boolean getSpaceAroundOption(IElementType opSign) { boolean option = false; if (JSTokenTypes.ADDITIVE_OPERATIONS.contains(opSign)) { option = mySettings.SPACE_AROUND_ADDITIVE_OPERATORS; @@ -651,7 +687,7 @@ else if (opSign == JSTokenTypes.IS_KEYWORD || opSign == JSTokenTypes.AS_KEYWORD) } private void setSingleSpace(boolean needSpace) { - final int spaces = needSpace ? 1 : 0; + int spaces = needSpace ? 1 : 0; myResult = Spacing.createSpacing(spaces, spaces, 0, mySettings.KEEP_LINE_BREAKS, mySettings.KEEP_BLANK_LINES_IN_CODE); } @@ -672,8 +708,8 @@ private void setBraceSpace(boolean needSpaceSetting, int braceStyleSetting, Text } } - private void setLineBreakSpace(final boolean needLineBreak) { - final int breaks = needLineBreak || myChild1.getElementType() == JSTokenTypes.END_OF_LINE_COMMENT ? 1 : 0; + private void setLineBreakSpace(boolean needLineBreak) { + int breaks = needLineBreak || myChild1.getElementType() == JSTokenTypes.END_OF_LINE_COMMENT ? 1 : 0; myResult = Spacing.createSpacing(1, 1, breaks, mySettings.KEEP_LINE_BREAKS, mySettings.KEEP_BLANK_LINES_IN_CODE); } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JavaScriptIndentOptionsProvider.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JavaScriptIndentOptionsProvider.java index 40a96eea..229ede1c 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JavaScriptIndentOptionsProvider.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JavaScriptIndentOptionsProvider.java @@ -24,6 +24,7 @@ import consulo.language.codeStyle.ui.setting.SmartIndentOptionsEditor; import consulo.language.psi.PsiFile; import consulo.virtualFileSystem.fileType.FileType; +import jakarta.annotation.Nonnull; /** * @author yole @@ -45,6 +46,7 @@ public IndentOptionsEditor createOptionsEditor() { return new SmartIndentOptionsEditor(); } + @Nonnull @Override public String getPreviewText() { return "function a() {\n" + @@ -53,6 +55,6 @@ public String getPreviewText() { } @Override - public void prepareForReformat(final PsiFile psiFile) { + public void prepareForReformat(PsiFile psiFile) { } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JavascriptFormattingModelBuilder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JavascriptFormattingModelBuilder.java index 4e93fb4d..53c0eb3b 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JavascriptFormattingModelBuilder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JavascriptFormattingModelBuilder.java @@ -33,19 +33,26 @@ @ExtensionImpl public class JavascriptFormattingModelBuilder implements FormattingModelBuilder { @Nonnull + @Override public FormattingModel createModel(@Nonnull FormattingContext formattingContext) { PsiElement element = formattingContext.getPsiElement(); CodeStyleSettings settings = formattingContext.getCodeStyleSettings(); - final PsiFile psiFile = element.getContainingFile(); + PsiFile psiFile = element.getContainingFile(); CommonCodeStyleSettings commonSettings = settings.getCommonSettings(JavaScriptLanguage.INSTANCE); return new JSFormattingModel( psiFile, settings, - new JSBlock(psiFile instanceof JSFile ? psiFile.getNode() : element.getNode(), null, null, null, commonSettings) + new JSBlock( + psiFile instanceof JSFile jsFile ? jsFile.getNode() : element.getNode(), + null, + null, + null, + commonSettings + ) ); } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/blocks/JSBlock.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/blocks/JSBlock.java index 7addfa96..66f3a0db 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/blocks/JSBlock.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/blocks/JSBlock.java @@ -16,6 +16,7 @@ package com.intellij.lang.javascript.impl.formatter.blocks; +import consulo.annotation.access.RequiredReadAction; import consulo.document.util.TextRange; import consulo.language.ast.ASTNode; import com.intellij.lang.javascript.JSElementTypes; @@ -47,11 +48,11 @@ public class JSBlock implements Block { private List mySubBlocks = null; public JSBlock( - final ASTNode node, - final Alignment alignment, - final Indent indent, - final Wrap wrap, - final CommonCodeStyleSettings settings + ASTNode node, + Alignment alignment, + Indent indent, + Wrap wrap, + CommonCodeStyleSettings settings ) { myAlignment = alignment; myIndent = indent; @@ -110,16 +111,16 @@ public Spacing getSpacing(Block child1, Block child2) { @Override @Nonnull - public ChildAttributes getChildAttributes(final int newChildIndex) { + public ChildAttributes getChildAttributes(int newChildIndex) { Indent indent = null; - final IElementType blockElementType = myNode.getElementType(); + IElementType blockElementType = myNode.getElementType(); if (blockElementType == JSTokenTypes.DOC_COMMENT) { return new ChildAttributes(Indent.getSpaceIndent(1), null); } if (blockElementType == JSElementTypes.PACKAGE_STATEMENT) { - final JSCodeStyleSettings customSettings = + JSCodeStyleSettings customSettings = CodeStyleSettingsManager.getSettings(myNode.getPsi().getProject()).getCustomSettings(JSCodeStyleSettings.class); if (customSettings.INDENT_PACKAGE_CHILDREN == JSCodeStyleSettings.INDENT) { indent = Indent.getNormalIndent(); @@ -143,12 +144,12 @@ else if (JSElementTypes.SOURCE_ELEMENTS.contains(blockElementType) } Alignment alignment = null; - final List subBlocks = getSubBlocks(); + List subBlocks = getSubBlocks(); for (int i = 0; i < newChildIndex; i++) { if (i == subBlocks.size()) { break; } - final Alignment childAlignment = subBlocks.get(i).getAlignment(); + Alignment childAlignment = subBlocks.get(i).getAlignment(); if (childAlignment != null) { alignment = childAlignment; break; @@ -169,10 +170,12 @@ else if (JSElementTypes.SOURCE_ELEMENTS.contains(blockElementType) } @Override + @RequiredReadAction public boolean isIncomplete() { return isIncomplete(myNode); } + @RequiredReadAction private boolean isIncomplete(ASTNode node) { node.getPsi().getFirstChild(); // expand chameleon ASTNode lastChild = node.getLastChildNode(); @@ -184,10 +187,7 @@ private boolean isIncomplete(ASTNode node) { return false; } - if (lastChild.getPsi() instanceof PsiErrorElement) { - return true; - } - return isIncomplete(lastChild); + return lastChild.getPsi() instanceof PsiErrorElement || isIncomplete(lastChild); } public CommonCodeStyleSettings getSettings() { @@ -196,9 +196,6 @@ public CommonCodeStyleSettings getSettings() { @Override public boolean isLeaf() { - if (myNode.getElementType() == JSTokenTypes.DOC_COMMENT) { - return false; - } - return myNode.getFirstChildNode() == null; + return myNode.getElementType() != JSTokenTypes.DOC_COMMENT && myNode.getFirstChildNode() == null; } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/blocks/JSDocCommentBlock.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/blocks/JSDocCommentBlock.java index 22f4af2d..11b5a2ec 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/blocks/JSDocCommentBlock.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/blocks/JSDocCommentBlock.java @@ -16,20 +16,14 @@ package com.intellij.lang.javascript.impl.formatter.blocks; +import consulo.document.util.TextRange; +import consulo.language.ast.ASTNode; +import consulo.language.codeStyle.*; +import jakarta.annotation.Nonnull; + import java.util.ArrayList; import java.util.List; -import jakarta.annotation.Nonnull; -import consulo.language.codeStyle.Alignment; -import consulo.language.codeStyle.Block; -import consulo.language.codeStyle.Indent; -import consulo.language.codeStyle.Spacing; -import consulo.language.codeStyle.Wrap; -import consulo.language.ast.ASTNode; -import consulo.document.util.TextRange; -import consulo.language.codeStyle.ChildAttributes; -import jakarta.annotation.Nullable; - /** * @author yole */ @@ -38,54 +32,54 @@ public class JSDocCommentBlock implements Block { private int myStartOffset; private int myEndOffset; private Indent myIndent; - private static final List EMPTY_BLOCK_LIST = new ArrayList(); + private static final List EMPTY_BLOCK_LIST = new ArrayList<>(); - public JSDocCommentBlock(final ASTNode node, final int startOffset, final int endOffset, final Indent indent) { + public JSDocCommentBlock(ASTNode node, int startOffset, int endOffset, Indent indent) { myNode = node; myStartOffset = startOffset; myEndOffset = endOffset; myIndent = indent; } - @Override @Nonnull + @Override public TextRange getTextRange() { return new TextRange(myNode.getStartOffset() + myStartOffset, myNode.getStartOffset() + myEndOffset); } - @Override @Nonnull + @Override public List getSubBlocks() { return EMPTY_BLOCK_LIST; } + @Nonnull @Override - @Nullable public Wrap getWrap() { return null; } + @Nonnull @Override - @Nullable public Indent getIndent() { return myIndent; } + @Nonnull @Override - @Nullable public Alignment getAlignment() { return null; } + @Nonnull @Override - @Nullable - public Spacing getSpacing(Block child1, Block child2) { + public Spacing getSpacing(Block child1, @Nonnull Block child2) { return null; } - @Override @Nonnull - public ChildAttributes getChildAttributes(final int newChildIndex) { + @Override + public ChildAttributes getChildAttributes(int newChildIndex) { return null; } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/blocks/SubBlockVisitor.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/blocks/SubBlockVisitor.java index 89afd838..18aff29c 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/blocks/SubBlockVisitor.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/blocks/SubBlockVisitor.java @@ -51,13 +51,13 @@ public List getBlocks() { @Override @RequiredReadAction - public void visitElement(final ASTNode node) { + public void visitElement(ASTNode node) { Alignment alignment = getDefaultAlignment(node); PsiElement elt = node.getPsi().getFirstChild(); // expand chameleon while (elt != null) { - final ASTNode child = elt.getNode(); + ASTNode child = elt.getNode(); assert child != null; if (child.getElementType() != JSTokenTypes.WHITE_SPACE && child.getTextRange().getLength() > 0) { @@ -73,8 +73,8 @@ public void visitElement(final ASTNode node) { @Override - public void visitDocComment(final ASTNode node) { - final ASTNode child = node.getFirstChildNode(); + public void visitDocComment(ASTNode node) { + ASTNode child = node.getFirstChildNode(); if (child != null && child.getElementType() == JSTokenTypes.DOC_COMMENT) { visit(child); } @@ -84,11 +84,11 @@ public void visitDocComment(final ASTNode node) { } @Override - public void visitComment(final ASTNode node) { + public void visitComment(ASTNode node) { buildCommentBlocks(node); } - private void buildCommentBlocks(final ASTNode node) { + private void buildCommentBlocks(ASTNode node) { String commentText = node.getText(); int pos = 0; while (pos < commentText.length()) { @@ -98,7 +98,7 @@ private void buildCommentBlocks(final ASTNode node) { } if (pos != nextPos) { - final Indent childIndent = (pos == 0) ? Indent.getNoneIndent() : Indent.getSpaceIndent(1); + Indent childIndent = (pos == 0) ? Indent.getNoneIndent() : Indent.getSpaceIndent(1); myBlocks.add(new JSDocCommentBlock(node, pos, nextPos, childIndent)); } pos = nextPos + 1; @@ -111,12 +111,13 @@ private void buildCommentBlocks(final ASTNode node) { } @Nullable - static Alignment getDefaultAlignment(final ASTNode node) { - if (node.getElementType() == JSElementTypes.FOR_STATEMENT - || node.getElementType() == JSElementTypes.PARAMETER_LIST - || node.getElementType() == JSElementTypes.BINARY_EXPRESSION - || node.getElementType() == JSElementTypes.ASSIGNMENT_EXPRESSION - || node.getElementType() == JSElementTypes.CONDITIONAL_EXPRESSION) { + static Alignment getDefaultAlignment(ASTNode node) { + IElementType elementType = node.getElementType(); + if (elementType == JSElementTypes.FOR_STATEMENT + || elementType == JSElementTypes.PARAMETER_LIST + || elementType == JSElementTypes.BINARY_EXPRESSION + || elementType == JSElementTypes.ASSIGNMENT_EXPRESSION + || elementType == JSElementTypes.CONDITIONAL_EXPRESSION) { return Alignment.createAlignment(); } @@ -124,25 +125,26 @@ static Alignment getDefaultAlignment(final ASTNode node) { } @Nullable - private Indent getIndent(final ASTNode node, final ASTNode child) { - final IElementType nodeElementType = node.getElementType(); + @RequiredReadAction + private Indent getIndent(ASTNode node, ASTNode child) { + IElementType nodeElementType = node.getElementType(); if (nodeElementType instanceof JSFileElementType || nodeElementType == JSElementTypes.EMBEDDED_CONTENT) { return Indent.getNoneIndent(); } if (nodeElementType == JSTokenTypes.DOC_COMMENT) { - final ASTNode treePrev = child.getTreePrev(); - if (treePrev != null && treePrev.getPsi() instanceof PsiWhiteSpace && treePrev.getText().indexOf("\n") != -1) { + ASTNode treePrev = child.getTreePrev(); + if (treePrev != null && treePrev.getPsi() instanceof PsiWhiteSpace && treePrev.getText().contains("\n")) { return Indent.getSpaceIndent(1); } return Indent.getNoneIndent(); } - final IElementType childElementType = child.getElementType(); + IElementType childElementType = child.getElementType(); if (nodeElementType == JSElementTypes.PACKAGE_STATEMENT && !JSSpacingProcessor.NOT_A_PACKAGE_CONTENT.contains(childElementType)) { - final JSCodeStyleSettings customSettings = + JSCodeStyleSettings customSettings = CodeStyleSettingsManager.getSettings(node.getPsi().getProject()).getCustomSettings(JSCodeStyleSettings.class); if (customSettings.INDENT_PACKAGE_CHILDREN == JSCodeStyleSettings.INDENT) { return Indent.getNormalIndent(); @@ -203,12 +205,12 @@ private Indent getIndent(final ASTNode node, final ASTNode child) { return Indent.getNoneIndent(); } - if (nodeElementType == JSElementTypes.BLOCK_STATEMENT || - nodeElementType == JSElementTypes.CLASS || - nodeElementType == JSElementTypes.PACKAGE_STATEMENT) { - final ASTNode parent = node.getTreeParent(); - if (parent != null && parent.getElementType() == JSElementTypes.FUNCTION_DECLARATION && - mySettings.METHOD_BRACE_STYLE == CodeStyleSettings.NEXT_LINE_SHIFTED) { + if (nodeElementType == JSElementTypes.BLOCK_STATEMENT + || nodeElementType == JSElementTypes.CLASS + || nodeElementType == JSElementTypes.PACKAGE_STATEMENT) { + ASTNode parent = node.getTreeParent(); + if (parent != null && parent.getElementType() == JSElementTypes.FUNCTION_DECLARATION + && mySettings.METHOD_BRACE_STYLE == CodeStyleSettings.NEXT_LINE_SHIFTED) { return Indent.getNoneIndent(); } if (mySettings.BRACE_STYLE == CodeStyleSettings.NEXT_LINE_SHIFTED) { @@ -219,14 +221,9 @@ private Indent getIndent(final ASTNode node, final ASTNode child) { } return Indent.getNoneIndent(); } - else if (node.getPsi() instanceof JSLoopStatement) { - if (child.getPsi() == ((JSLoopStatement)node.getPsi()).getBody()) { - if (childElementType == JSElementTypes.BLOCK_STATEMENT) { - return Indent.getNoneIndent(); - } - else { - return Indent.getNormalIndent(); - } + else if (node.getPsi() instanceof JSLoopStatement loop) { + if (child.getPsi() == loop.getBody()) { + return childElementType == JSElementTypes.BLOCK_STATEMENT ? Indent.getNoneIndent() : Indent.getNormalIndent(); } } @@ -265,7 +262,7 @@ else if (node.getPsi() instanceof JSLoopStatement) { } @Nullable - private static Alignment alignmentProjection(final Alignment defaultAlignment, final ASTNode parent, final ASTNode child) { + private static Alignment alignmentProjection(Alignment defaultAlignment, ASTNode parent, ASTNode child) { if (parent.getElementType() == JSElementTypes.FOR_STATEMENT && (JSElementTypes.EXPRESSIONS.contains(child.getElementType()) || child.getElementType() == JSElementTypes.VAR_STATEMENT)) { @@ -286,17 +283,18 @@ else if (parent.getElementType() == JSElementTypes.CONDITIONAL_EXPRESSION } @Nullable - private Wrap getWrap(final ASTNode node, final ASTNode child) { + @RequiredReadAction + private Wrap getWrap(ASTNode node, ASTNode child) { WrapType wrapType = null; if (node.getElementType() == JSElementTypes.ASSIGNMENT_EXPRESSION) { - final JSAssignmentExpression assignment = (JSAssignmentExpression)node.getPsi(); + JSAssignmentExpression assignment = (JSAssignmentExpression)node.getPsi(); if (child.getElementType() == assignment.getOperationSign() && mySettings.PLACE_ASSIGNMENT_SIGN_ON_NEXT_LINE || child.getPsi() == assignment.getROperand() && !mySettings.PLACE_ASSIGNMENT_SIGN_ON_NEXT_LINE) { wrapType = WrapType.byLegacyRepresentation(mySettings.ASSIGNMENT_WRAP); } } else if (node.getElementType() == JSElementTypes.BINARY_EXPRESSION) { - final JSBinaryExpression binary = (JSBinaryExpression)node.getPsi(); + JSBinaryExpression binary = (JSBinaryExpression)node.getPsi(); if (child.getElementType() == binary.getOperationSign() && mySettings.BINARY_OPERATION_SIGN_ON_NEXT_LINE || child.getPsi() == binary.getROperand() && !mySettings.BINARY_OPERATION_SIGN_ON_NEXT_LINE) { wrapType = WrapType.byLegacyRepresentation(mySettings.BINARY_OPERATION_WRAP); @@ -319,7 +317,7 @@ else if (child == node.findChildByType(JSTokenTypes.RPAR) && mySettings.ARRAY_IN } } else if (node.getElementType() == JSElementTypes.CONDITIONAL_EXPRESSION) { - final IElementType elementType = child.getElementType(); + IElementType elementType = child.getElementType(); if ((mySettings.TERNARY_OPERATION_SIGNS_ON_NEXT_LINE && (elementType == JSTokenTypes.QUEST || elementType == JSTokenTypes.COLON)) || (!mySettings.TERNARY_OPERATION_SIGNS_ON_NEXT_LINE && child.getPsi() instanceof JSExpression)) { diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/BaseJSGenerateAction.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/BaseJSGenerateAction.java index f924a331..fc6a811f 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/BaseJSGenerateAction.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/BaseJSGenerateAction.java @@ -43,7 +43,7 @@ public void actionPerformed(final AnActionEvent e) { PsiFile psifile = e.getData(LangDataKeys.PSI_FILE); Project project = e.getData(PlatformDataKeys.PROJECT); - final VirtualFile file = e.getData(PlatformDataKeys.VIRTUAL_FILE); + VirtualFile file = e.getData(PlatformDataKeys.VIRTUAL_FILE); if (JavaScriptSupportLoader.isFlexMxmFile(file)) { editor = BaseCodeInsightAction.getInjectedEditor(project, editor); psifile = PsiUtilBase.getPsiFileInEditor(editor, project); @@ -57,15 +57,15 @@ public void actionPerformed(final AnActionEvent e) { @Override @RequiredUIAccess - public void update(final AnActionEvent e) { - final VirtualFile file = e.getData(PlatformDataKeys.VIRTUAL_FILE); + public void update(AnActionEvent e) { + VirtualFile file = e.getData(PlatformDataKeys.VIRTUAL_FILE); boolean status = false; if (file != null) { if (file.getFileType() == JavaScriptFileType.INSTANCE) { - final Editor editor = e.getData(PlatformDataKeys.EDITOR); - final PsiFile psifile = e.getData(LangDataKeys.PSI_FILE); + Editor editor = e.getData(PlatformDataKeys.EDITOR); + PsiFile psifile = e.getData(LangDataKeys.PSI_FILE); if (editor != null && psifile != null) { status = psifile.getLanguage() == JavaScriptSupportLoader.ECMA_SCRIPT_L4; diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/BaseJSGenerateHandler.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/BaseJSGenerateHandler.java index a6e8bec7..7105a2eb 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/BaseJSGenerateHandler.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/BaseJSGenerateHandler.java @@ -54,14 +54,14 @@ public Language getLanguage() { @Override @RequiredUIAccess - public void invoke(@Nonnull final Project project, @Nonnull final Editor editor, @Nonnull final PsiFile file) { + public void invoke(@Nonnull Project project, @Nonnull Editor editor, @Nonnull PsiFile file) { JSClass clazz = findClass(file, editor); if (clazz == null) { return; } - final Collection candidates = new ArrayList<>(); + Collection candidates = new ArrayList<>(); collectCandidates(clazz, candidates); MemberChooserBuilder builder = @@ -70,20 +70,20 @@ public void invoke(@Nonnull final Project project, @Nonnull final Editor editor, builder.withEmptySelection(); } - builder.withTitle(getTitle()); - builder.showAsync( - project, - dataHolder -> { - List data = dataHolder.getUserData(ClassMember.KEY_OF_LIST); + builder.withTitle(getTitle()) + .showAsync( + project, + dataHolder -> { + List data = dataHolder.getUserData(ClassMember.KEY_OF_LIST); - run(clazz, data, project, editor, file); - } - ); + run(clazz, data, project, editor, file); + } + ); } - private void run(JSClass clazz, Collection selectedElements, Project project, Editor editor, PsiFile file) { - final JSClass jsClass = clazz; - final Collection selectedElements1 = selectedElements; + @RequiredUIAccess + private void run(JSClass clazz, final Collection selectedElements, Project project, Editor editor, PsiFile file) { + JSClass jsClass = clazz; Runnable runnable = new Runnable() { @Override @RequiredUIAccess @@ -93,7 +93,7 @@ public void run() { public void run() { try { final BaseCreateMethodsFix createMethodsFix = createFix(jsClass); - createMethodsFix.addElementsToProcessFrom(selectedElements1); + createMethodsFix.addElementsToProcessFrom(selectedElements); createMethodsFix.invoke(project, editor, file); } catch (IncorrectOperationException ex) { @@ -106,7 +106,10 @@ public void run() { CommandProcessor processor = CommandProcessor.getInstance(); if (processor.hasCurrentCommand()) { - processor.executeCommand(project, runnable, getClass().getName(), null); + processor.newCommand() + .project(project) + .name(LocalizeValue.of(getClass().getName())) + .run(runnable); } else { runnable.run(); @@ -122,15 +125,15 @@ protected boolean canHaveEmptySelectedElements() { @RequiredReadAction static JSClass findClass(PsiFile file, Editor editor) { - final PsiElement at = file.findElementAt(editor.getCaretModel().getOffset()); + PsiElement at = file.findElementAt(editor.getCaretModel().getOffset()); if (at == null) { return null; } JSClass clazz = PsiTreeUtil.getParentOfType(at, JSClass.class); if (clazz == null) { - final PsiFile containingFile = at.getContainingFile(); - final PsiElement element = JSResolveUtil.getClassReferenceForXmlFromContext(containingFile); + PsiFile containingFile = at.getContainingFile(); + PsiElement element = JSResolveUtil.getClassReferenceForXmlFromContext(containingFile); if (element instanceof JSClass jsClass) { clazz = jsClass; } @@ -146,7 +149,7 @@ else if (JSResolveUtil.isArtificialClassUsedForReferenceList(clazz)) { protected abstract BaseCreateMethodsFix createFix(JSClass clazz); - protected abstract void collectCandidates(final JSClass clazz, final Collection candidates); + protected abstract void collectCandidates(JSClass clazz, final Collection candidates); @Override public boolean startInWriteAction() { @@ -154,7 +157,7 @@ public boolean startInWriteAction() { } @Override - public boolean isValidFor(final Editor editor, final PsiFile file) { + public boolean isValidFor(Editor editor, PsiFile file) { return true; } } \ No newline at end of file diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JSNamedElementNode.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JSNamedElementNode.java index d21646af..1e708059 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JSNamedElementNode.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JSNamedElementNode.java @@ -20,12 +20,12 @@ import com.intellij.lang.javascript.psi.*; import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; import consulo.annotation.access.RequiredReadAction; -import consulo.application.AllIcons; import consulo.language.editor.generation.ClassMember; import consulo.language.editor.generation.MemberChooserObject; import consulo.language.editor.generation.PsiElementMemberChooserObject; import consulo.language.icon.IconDescriptorUpdaters; import consulo.language.psi.PsiElement; +import consulo.platform.base.icon.PlatformIconGroup; import consulo.ui.image.Image; import consulo.ui.image.ImageEffects; @@ -40,17 +40,17 @@ public JSNamedElementNode(JSNamedElement node) { } @RequiredReadAction - private static Image buildIcon(final JSNamedElement node) { + private static Image buildIcon(JSNamedElement node) { Image icon = IconDescriptorUpdaters.getIcon(node, 0); if (node instanceof JSFunction function) { - final Image accessIcon; + Image accessIcon; if (function.isGetProperty()) { - accessIcon = AllIcons.Nodes.Read_access; + accessIcon = PlatformIconGroup.nodesRead_access(); } else if (function.isSetProperty()) { - accessIcon = AllIcons.Nodes.Write_access; + accessIcon = PlatformIconGroup.nodesWrite_access(); } else { accessIcon = null; @@ -64,12 +64,12 @@ else if (function.isSetProperty()) { } @RequiredReadAction - private static String buildTextFor(final JSNamedElement node) { + private static String buildTextFor(JSNamedElement node) { StringBuilder text = new StringBuilder(node.getName()); if (node instanceof JSFunction function) { text.append("("); - final JSParameterList parameterList = function.getParameterList(); + JSParameterList parameterList = function.getParameterList(); if (parameterList != null) { boolean first = true; @@ -83,13 +83,13 @@ private static String buildTextFor(final JSNamedElement node) { } text.append(")"); - final String typeString = function.getReturnTypeString(); + String typeString = function.getReturnTypeString(); if (typeString != null) { text.append(":").append(typeString); } } else if (node instanceof JSVariable var) { - final String typeString = var.getTypeString(); + String typeString = var.getTypeString(); if (typeString != null) { text.append(":").append(typeString); } @@ -100,7 +100,7 @@ else if (node instanceof JSVariable var) { @Override @RequiredReadAction public MemberChooserObject getParentNodeDelegate() { - final PsiElement element = getPsiElement(); + PsiElement element = getPsiElement(); PsiElement parent = JSResolveUtil.findParent(element); return new JSNamedElementNode((JSNamedElement)parent); } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptGenerateAccessorHandler.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptGenerateAccessorHandler.java index b28ebcb2..046db4ac 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptGenerateAccessorHandler.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptGenerateAccessorHandler.java @@ -24,6 +24,7 @@ import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; import com.intellij.lang.javascript.psi.resolve.ResolveProcessor; import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.access.RequiredWriteAction; import consulo.application.Application; import consulo.codeEditor.Editor; import consulo.javascript.localize.JavaScriptLocalize; @@ -87,7 +88,7 @@ protected void appendOwnOptions(List jComponentList) { } @Override - protected BaseCreateMethodsFix createFix(final JSClass jsClass) { + protected BaseCreateMethodsFix createFix(JSClass jsClass) { if (mode == GenerationMode.GETTERS_AND_SETTERS) { return new BaseCreateMethodsFix(jsClass) { private boolean toCreateBindableProperties = myCreateBindableProperties != null @@ -100,8 +101,8 @@ protected BaseCreateMethodsFix createFix(final JSClass jsClass) { @Override @RequiredUIAccess - public void invoke(@Nonnull final Project project, final Editor editor, final PsiFile file) - throws IncorrectOperationException { + @RequiredWriteAction + public void invoke(@Nonnull Project project, Editor editor, PsiFile file) throws IncorrectOperationException { evalAnchor(editor, file); for (JSVariable e : getElementsToProcess()) { @@ -115,9 +116,9 @@ else if (mode == GenerationMode.CONSTRUCTOR) { return new BaseCreateMethodsFix(jsClass) { @Override @RequiredUIAccess - public void invoke(@Nonnull final Project project, final Editor editor, final PsiFile file) - throws IncorrectOperationException { - final JSCodeStyleSettings codeStyleSettings = + @RequiredWriteAction + public void invoke(@Nonnull Project project, Editor editor, PsiFile file) throws IncorrectOperationException { + JSCodeStyleSettings codeStyleSettings = CodeStyleSettingsManager.getSettings(project).getCustomSettings(JSCodeStyleSettings.class); evalAnchor(editor, file); StringBuilder functionText = new StringBuilder("public function ").append(jsClass.getName()).append("("); @@ -194,8 +195,8 @@ else if (mode == GenerationMode.TOSTRING) { return new BaseCreateMethodsFix(jsClass) { @Override @RequiredUIAccess - public void invoke(@Nonnull final Project project, final Editor editor, final PsiFile file) - throws IncorrectOperationException { + @RequiredWriteAction + public void invoke(@Nonnull Project project, Editor editor, PsiFile file) throws IncorrectOperationException { evalAnchor(editor, file); final boolean[] needOverride = new boolean[1]; @@ -204,7 +205,10 @@ public void invoke(@Nonnull final Project project, final Editor editor, final Ps (processor, scope, className) -> { needOverride[0] = !"Object".equals(className); return false; - }, "toString", null, myJsClass + }, + "toString", + null, + myJsClass ); StringBuilder functionText = new StringBuilder().append("public ") @@ -212,7 +216,7 @@ public void invoke(@Nonnull final Project project, final Editor editor, final Ps .append("function toString():String {\nreturn ") .append(needOverride[0] ? "super.toString() + \"" : "\"" + jsClass.getName()) .append("{"); - final String semicolon = JSChangeUtil.getSemicolon(project); + String semicolon = JSChangeUtil.getSemicolon(project); boolean first = true; @@ -240,11 +244,11 @@ public void invoke(@Nonnull final Project project, final Editor editor, final Ps @Override @RequiredReadAction - protected void collectCandidates(final JSClass clazz, final Collection candidates) { + protected void collectCandidates(JSClass clazz, final Collection candidates) { final LinkedHashMap candidatesMap = new LinkedHashMap<>(); final JSCodeStyleSettings codeStyleSettings = CodeStyleSettingsManager.getSettings(clazz.getProject()).getCustomSettings(JSCodeStyleSettings.class); - final ResolveProcessor processor = new ResolveProcessor(null) { + ResolveProcessor processor = new ResolveProcessor(null) { { setToProcessMembers(true); setToProcessHierarchy(false); @@ -253,13 +257,13 @@ protected void collectCandidates(final JSClass clazz, final Collection candidates) { + protected void collectCandidates(JSClass clazz, final Collection candidates) { ImplementedMethodProcessor processor = new ImplementedMethodProcessor(clazz) { @Override @RequiredReadAction - protected void addNonimplementedFunction(final JSFunction function) { + protected void addNonimplementedFunction(JSFunction function) { candidates.add(new JSNamedElementNode(function)); } }; @@ -54,7 +54,7 @@ protected LocalizeValue getTitle() { } @Override - protected BaseCreateMethodsFix createFix(final JSClass clazz) { + protected BaseCreateMethodsFix createFix(JSClass clazz) { return new ImplementMethodsFix(clazz); } } \ No newline at end of file diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptOverrideMethodsHandler.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptOverrideMethodsHandler.java index 26c7d771..d48c9083 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptOverrideMethodsHandler.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptOverrideMethodsHandler.java @@ -46,16 +46,16 @@ protected LocalizeValue getTitle() { } @Override - protected BaseCreateMethodsFix createFix(final JSClass clazz) { + protected BaseCreateMethodsFix createFix(JSClass clazz) { return new OverrideMethodsFix(clazz); } @Override @RequiredReadAction - protected void collectCandidates(final JSClass clazz, final Collection candidates) { + protected void collectCandidates(JSClass clazz, final Collection candidates) { Map _functionsToOverride = null; - final Function functionFilter = function -> { - final JSAttributeList attributeList = function.getAttributeList(); + Function functionFilter = function -> { + JSAttributeList attributeList = function.getAttributeList(); if (attributeList != null && (attributeList.hasModifier(JSAttributeList.ModifierType.STATIC) || attributeList.hasModifier(JSAttributeList.ModifierType.FINAL))) { @@ -70,7 +70,7 @@ protected void collectCandidates(final JSClass clazz, final Collection functionsToOverride = _functionsToOverride; - final ResolveProcessor collectOwnFunctions = new ResolveProcessor(null, clazz) { + ResolveProcessor collectOwnFunctions = new ResolveProcessor(null, clazz) { { setToProcessMembers(true); setToProcessHierarchy(false); @@ -78,13 +78,13 @@ protected void collectCandidates(final JSClass clazz, final Collection entry : functionsToOverride.entrySet()) { - final Object value = entry.getValue(); + Object value = entry.getValue(); if (value instanceof JSFunction[] functions) { for (JSFunction function : functions) { candidates.add(new JSNamedElementNode(function)); diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/OverrideMethodsFix.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/OverrideMethodsFix.java index 1d42b7f3..528c48d7 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/OverrideMethodsFix.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/OverrideMethodsFix.java @@ -28,13 +28,13 @@ * @since 2008-07-17 */ public class OverrideMethodsFix extends BaseCreateMethodsFix { - public OverrideMethodsFix(final JSClass jsClass) { + public OverrideMethodsFix(JSClass jsClass) { super(jsClass); } @Override @RequiredReadAction - protected String buildFunctionBodyText(final String retType, final JSParameterList parameterList, final JSFunction func) { + protected String buildFunctionBodyText(String retType, JSParameterList parameterList, JSFunction func) { StringBuilder functionText = new StringBuilder(); functionText.append("{\n"); @@ -71,17 +71,17 @@ else if (func.isSetProperty()) { @Override @RequiredReadAction - protected String buildFunctionAttrText(String attrText, final JSAttributeList attributeList, final JSFunction function) { + protected String buildFunctionAttrText(String attrText, JSAttributeList attributeList, JSFunction function) { attrText = super.buildFunctionAttrText(attrText, attributeList, function); - final PsiElement element = JSResolveUtil.findParent(function); + PsiElement element = JSResolveUtil.findParent(function); if (attributeList == null || !attributeList.hasModifier(JSAttributeList.ModifierType.OVERRIDE)) { if (element instanceof JSClass jsClass && !"Object".equals(jsClass.getQualifiedName())) { - final PsiElement typeElement = attributeList != null ? attributeList.findAccessTypeElement() : null; + PsiElement typeElement = attributeList != null ? attributeList.findAccessTypeElement() : null; if (typeElement == null) { attrText += " override"; } else { - final int index = attrText.indexOf(typeElement.getText()); + int index = attrText.indexOf(typeElement.getText()); attrText = attrText.substring(0, index) + ((index > 0) ? " " : "") + "override " + attrText.substring(index); } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JSBraceMatcher.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JSBraceMatcher.java index b14a5ac2..03950783 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JSBraceMatcher.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JSBraceMatcher.java @@ -28,9 +28,8 @@ import jakarta.annotation.Nullable; /** - * User: max - * Date: Feb 2, 2005 - * Time: 12:10:44 PM + * @author max + * @since 2005-02-02 */ @ExtensionImpl public class JSBraceMatcher implements PairedBraceMatcher { @@ -46,10 +45,15 @@ public BracePair[] getPairs() { } @Override - public boolean isPairedBracesAllowedBeforeType(@Nonnull final IElementType lbraceType, @Nullable final IElementType tokenType) { - return JSTokenTypes.WHITE_SPACE == tokenType || JSTokenTypes.COMMENTS.contains(tokenType) || tokenType == JSTokenTypes.SEMICOLON || tokenType == - JSTokenTypes.COMMA || tokenType == JSTokenTypes.RPAR || tokenType == JSTokenTypes.RBRACKET || tokenType == JSTokenTypes.RBRACE || null == - tokenType; + public boolean isPairedBracesAllowedBeforeType(@Nonnull IElementType lbraceType, @Nullable IElementType tokenType) { + return tokenType == JSTokenTypes.WHITE_SPACE + || JSTokenTypes.COMMENTS.contains(tokenType) + || tokenType == JSTokenTypes.SEMICOLON + || tokenType == JSTokenTypes.COMMA + || tokenType == JSTokenTypes.RPAR + || tokenType == JSTokenTypes.RBRACKET + || tokenType == JSTokenTypes.RBRACE + || tokenType == null; } @Nonnull diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptColorsAndFontsPage.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptColorsAndFontsPage.java index 97b3c457..6eceb33f 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptColorsAndFontsPage.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptColorsAndFontsPage.java @@ -25,24 +25,20 @@ import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.editor.colorScheme.setting.ColorSettingsPage; import consulo.language.editor.highlight.SyntaxHighlighter; -import org.jetbrains.annotations.NonNls; - import jakarta.annotation.Nonnull; import java.util.HashMap; import java.util.Map; /** - * User: Maxim.Mossienko - * Date: Nov 2, 2005 - * Time: 10:12:13 PM + * @author Maxim.Mossienko + * @since 2005-11-02 */ @ExtensionImpl public class JavaScriptColorsAndFontsPage implements ColorSettingsPage { private static final AttributesDescriptor[] ATTRS; - @NonNls - private static Map ADDITIONAL_HIGHLIGHT_DESCRIPTORS = new HashMap(); + private static Map ADDITIONAL_HIGHLIGHT_DESCRIPTORS = new HashMap<>(); static { ATTRS = new AttributesDescriptor[]{ diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptHighlightVisitor.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptHighlightVisitor.java index dc8fd4e9..6817e0f1 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptHighlightVisitor.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptHighlightVisitor.java @@ -35,9 +35,7 @@ import consulo.language.editor.rawHighlight.HighlightVisitor; import consulo.language.psi.*; import consulo.language.psi.util.PsiTreeUtil; -import consulo.localize.LocalizeValue; import consulo.util.lang.StringUtil; - import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @@ -46,7 +44,7 @@ public class JavaScriptHighlightVisitor extends JSElementVisitor implements High @Override @RequiredReadAction - public void visitJSBinaryExpression(JSBinaryExpression node) { + public void visitJSBinaryExpression(@Nonnull JSBinaryExpression node) { super.visitJSBinaryExpression(node); IElementType operationSign = node.getOperationSign(); @@ -57,7 +55,7 @@ public void visitJSBinaryExpression(JSBinaryExpression node) { @Override @RequiredReadAction - public void visitJSAssignmentExpression(JSAssignmentExpression node) { + public void visitJSAssignmentExpression(@Nonnull JSAssignmentExpression node) { super.visitJSAssignmentExpression(node); IElementType operationSign = node.getOperationSign(); @@ -74,8 +72,8 @@ public void visitElement(PsiElement element) { PsiElement parent = element.getParent(); IElementType elementType = PsiUtilCore.getElementType(element); if ((JavaScriptTokenSets.STRING_LITERALS.contains(elementType) || elementType == JSTokenTypes.IDENTIFIER) - && parent instanceof JSProperty && ((JSProperty)parent).getNameIdentifier() == element) { - highlightPropertyName((JSProperty)parent, element); + && parent instanceof JSProperty property && property.getNameIdentifier() == element) { + highlightPropertyName(property, element); } else if (elementType == JSTokenTypes.IDENTIFIER) { addElementHighlight(parent, element); @@ -91,17 +89,18 @@ else if (JavaScriptContextKeywordElementType.containsKeyword(elementType)) { } @Override - public void visitJSProperty(JSProperty node) { + @RequiredReadAction + public void visitJSProperty(@Nonnull JSProperty node) { super.visitJSProperty(node); - if (node instanceof JSFunction) { - reportFeatureUsage(node.getNameIdentifier(), JavaScriptFeature.FUNCTION_PROPERTY); + if (node instanceof JSFunction function) { + reportFeatureUsage(function.getNameIdentifier(), JavaScriptFeature.FUNCTION_PROPERTY); } } @Override @RequiredReadAction - public void visitJSLiteralExpression(JSSimpleLiteralExpression node) { + public void visitJSLiteralExpression(@Nonnull JSSimpleLiteralExpression node) { super.visitJSLiteralExpression(node); if (node.getLiteralElementType() == JSTokenTypes.NUMERIC_LITERAL) { String text = node.getText(); @@ -116,15 +115,11 @@ else if (StringUtil.startsWithIgnoreCase(text, "0b")) { @RequiredReadAction private void highlightPropertyName(@Nonnull JSProperty property, @Nonnull PsiElement nameIdentifier) { - final JSExpression expression = property.getValue(); - TextAttributesKey type; + JSExpression expression = property.getValue(); + TextAttributesKey type = expression instanceof JSFunctionExpression + ? JavaScriptSyntaxHighlightKeys.JS_INSTANCE_MEMBER_FUNCTION + : JavaScriptSyntaxHighlightKeys.JS_INSTANCE_MEMBER_VARIABLE; - if (expression instanceof JSFunctionExpression) { - type = JavaScriptSyntaxHighlightKeys.JS_INSTANCE_MEMBER_FUNCTION; - } - else { - type = JavaScriptSyntaxHighlightKeys.JS_INSTANCE_MEMBER_VARIABLE; - } myHighlightInfoHolder.add(HighlightInfo.newHighlightInfo(HighlightInfoType.INFORMATION) .needsUpdateOnTyping(false) .range(nameIdentifier) @@ -134,7 +129,7 @@ private void highlightPropertyName(@Nonnull JSProperty property, @Nonnull PsiEle @Override @RequiredReadAction - public void visitJSAttribute(JSAttribute jsAttribute) { + public void visitJSAttribute(@Nonnull JSAttribute jsAttribute) { super.visitJSAttribute(jsAttribute); myHighlightInfoHolder.add( @@ -148,7 +143,7 @@ public void visitJSAttribute(JSAttribute jsAttribute) { @Override @RequiredReadAction - public void visitJSParameter(JSParameter parameter) { + public void visitJSParameter(@Nonnull JSParameter parameter) { super.visitJSParameter(parameter); JSExpression initializer = parameter.getInitializer(); @@ -164,16 +159,16 @@ public void visitJSParameter(JSParameter parameter) { @Override @RequiredReadAction - public void visitJSReferenceExpression(JSReferenceExpression element) { + public void visitJSReferenceExpression(@Nonnull JSReferenceExpression element) { super.visitJSReferenceExpression(element); PsiElement parent = element.getParent(); - if (parent instanceof PsiNameIdentifierOwner && ((PsiNameIdentifierOwner)parent).getNameIdentifier() == element) { + if (parent instanceof PsiNameIdentifierOwner nameIdentifierOwner && nameIdentifierOwner.getNameIdentifier() == element) { return; } - final ResolveResult[] results = element.multiResolve(false); + ResolveResult[] results = element.multiResolve(false); PsiElement validResult = null; for (ResolveResult result : results) { @@ -196,7 +191,7 @@ public void visitJSReferenceExpression(JSReferenceExpression element) { @Override @RequiredReadAction - public void visitJSPrefixExpression(JSPrefixExpression expression) { + public void visitJSPrefixExpression(@Nonnull JSPrefixExpression expression) { super.visitJSPrefixExpression(expression); if (expression.getOperationSign() == JSTokenTypes.DOT_DOT_DOT) { @@ -214,29 +209,27 @@ private void addElementHighlight(@Nonnull PsiElement resolvedElement, @Nonnull P boolean isField = false; TextAttributesKey type = null; - if (resolvedElement instanceof JSAttributeListOwner) { - if (resolvedElement instanceof JSClass) { + if (resolvedElement instanceof JSAttributeListOwner attributeListOwner) { + if (attributeListOwner instanceof JSClass) { type = DefaultLanguageHighlighterColors.CLASS_NAME; } else { - final JSAttributeList attributeList = ((JSAttributeListOwner)resolvedElement).getAttributeList(); + JSAttributeList attributeList = attributeListOwner.getAttributeList(); if (attributeList != null) { isStatic = attributeList.hasModifier(JSAttributeList.ModifierType.STATIC); } - isMethod = resolvedElement instanceof JSFunction; - if (isMethod && !isClass(resolvedElement.getParent())) { + isMethod = attributeListOwner instanceof JSFunction; + if (isMethod && !isClass(attributeListOwner.getParent())) { isMethod = false; isFunction = true; } } } - else if (resolvedElement instanceof JSDefinitionExpression) { - final PsiElement parent = resolvedElement.getParent(); - if (parent instanceof JSAssignmentExpression) { - final JSExpression jsExpression = ((JSAssignmentExpression)parent).getROperand(); - if (jsExpression instanceof JSFunctionExpression) { + else if (resolvedElement instanceof JSDefinitionExpression definition) { + if (definition.getParent() instanceof JSAssignmentExpression assignment) { + if (assignment.getROperand() instanceof JSFunctionExpression) { isMethod = true; } else { @@ -244,10 +237,8 @@ else if (resolvedElement instanceof JSDefinitionExpression) { } } } - else if (resolvedElement instanceof JSProperty) { - final JSExpression expression = ((JSProperty)resolvedElement).getValue(); - - if (expression instanceof JSFunctionExpression) { + else if (resolvedElement instanceof JSProperty property) { + if (property.getValue() instanceof JSFunctionExpression) { isMethod = true; } else { @@ -256,12 +247,9 @@ else if (resolvedElement instanceof JSProperty) { } if (isMethod) { - if (isStatic) { - type = JavaScriptSyntaxHighlightKeys.JS_STATIC_MEMBER_FUNCTION; - } - else { - type = JavaScriptSyntaxHighlightKeys.JS_INSTANCE_MEMBER_FUNCTION; - } + type = isStatic + ? JavaScriptSyntaxHighlightKeys.JS_STATIC_MEMBER_FUNCTION + : JavaScriptSyntaxHighlightKeys.JS_INSTANCE_MEMBER_FUNCTION; } else if (isFunction) { type = JavaScriptSyntaxHighlightKeys.JS_GLOBAL_FUNCTION; @@ -271,8 +259,8 @@ else if (isField) { } if (type == null) { - if (resolvedElement instanceof JSVariable) { - myHighlightInfoHolder.add(buildHighlightForVariable(resolvedElement, targetForHighlight)); + if (resolvedElement instanceof JSVariable variable) { + myHighlightInfoHolder.add(buildHighlightForVariable(variable, targetForHighlight)); } return; } @@ -288,15 +276,15 @@ else if (isField) { @Nullable @RequiredReadAction - private static HighlightInfo buildHighlightForVariable(@Nonnull final PsiElement element, @Nonnull final PsiElement markerAddTo) { + private static HighlightInfo buildHighlightForVariable(@Nonnull PsiElement element, @Nonnull PsiElement markerAddTo) { TextAttributesKey type; if (element instanceof JSParameter) { type = JavaScriptSyntaxHighlightKeys.JS_PARAMETER; } else if (isClass(element.getParent().getParent())) { - final JSAttributeList attributeList = ((JSAttributeListOwner)element).getAttributeList(); - final boolean isStatic = attributeList != null && attributeList.hasModifier(JSAttributeList.ModifierType.STATIC); + JSAttributeList attributeList = ((JSAttributeListOwner)element).getAttributeList(); + boolean isStatic = attributeList != null && attributeList.hasModifier(JSAttributeList.ModifierType.STATIC); type = isStatic ? JavaScriptSyntaxHighlightKeys.JS_STATIC_MEMBER_VARIABLE : JavaScriptSyntaxHighlightKeys.JS_INSTANCE_MEMBER_VARIABLE; @@ -308,10 +296,6 @@ else if (PsiTreeUtil.getParentOfType(element, JSFunction.class) != null) { type = JavaScriptSyntaxHighlightKeys.JS_GLOBAL_VARIABLE; } - if (type == null) { - return null; - } - return HighlightInfo.newHighlightInfo(HighlightInfoType.INFORMATION) .range(markerAddTo) .needsUpdateOnTyping(false) @@ -319,17 +303,16 @@ else if (PsiTreeUtil.getParentOfType(element, JSFunction.class) != null) { .create(); } + @RequiredReadAction private void reportFeatureUsage(@Nonnull PsiElement element, @Nonnull JavaScriptFeature javaScriptFeature) { if (JavaScriptVersionUtil.containsFeature(element, javaScriptFeature)) { return; } - LocalizeValue message = JavaScriptLocalize.thisFeatureIsNotSupportedByCurrentLanguage(javaScriptFeature.getName()); - myHighlightInfoHolder.add( HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR) .range(element) - .descriptionAndTooltip(message) + .descriptionAndTooltip(JavaScriptLocalize.thisFeatureIsNotSupportedByCurrentLanguage(javaScriptFeature.getName())) .create() ); } @@ -351,7 +334,7 @@ public boolean analyze( return true; } - private static boolean isClass(final PsiElement element) { + private static boolean isClass(PsiElement element) { return element instanceof JSClass || element instanceof JSFile && element.getContext() != null; } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptHighlightVisitorFactory.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptHighlightVisitorFactory.java index 7c024ead..515180c5 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptHighlightVisitorFactory.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptHighlightVisitorFactory.java @@ -10,7 +10,7 @@ /** * @author VISTALL - * @since 25/03/2023 + * @since 2023-03-25 */ @ExtensionImpl public class JavaScriptHighlightVisitorFactory implements HighlightVisitorFactory { diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptLineMarkerProvider.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptLineMarkerProvider.java index a1eeeef7..9b5b39c8 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptLineMarkerProvider.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptLineMarkerProvider.java @@ -21,9 +21,8 @@ import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; import com.intellij.lang.javascript.psi.resolve.ResolveProcessor; import com.intellij.lang.javascript.search.JSClassSearch; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; -import consulo.application.AllIcons; -import consulo.application.ApplicationManager; import consulo.application.progress.ProgressManager; import consulo.application.util.function.Processor; import consulo.application.util.query.CollectionQuery; @@ -40,10 +39,11 @@ import consulo.language.psi.NavigatablePsiElement; import consulo.language.psi.PsiElement; import consulo.navigation.NavigationItem; +import consulo.platform.base.icon.PlatformIconGroup; +import consulo.ui.annotation.RequiredUIAccess; import consulo.ui.ex.RelativePoint; import consulo.util.dataholder.Key; -import consulo.util.lang.ref.Ref; - +import consulo.util.lang.ref.SimpleReference; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @@ -53,70 +53,72 @@ /** * @author Maxim.Mossienko - * Date: Apr 14, 2008 - * Time: 11:43:47 PM + * @since 2008-04-14 */ @ExtensionImpl public class JavaScriptLineMarkerProvider implements LineMarkerProvider { private static final String OVERRIDES_METHOD_IN = "overrides method in "; - private static final Function ourClassInheritorsTooltipProvider = clazz -> "Has subclasses"; + private static final Function CLASS_INHERITORS_TOOLTIP_PROVIDER = clazz -> "Has subclasses"; - private static final Function ourImplementedInterfacesTooltipProvider = clazz -> "Has implementations"; + private static final Function IMPLEMENTED_INTERFACES_TOOLTIP_PROVIDER = clazz -> "Has implementations"; - private static final Function ourOverriddenFunctionsTooltipProvider = psiElement -> "Is overridden"; + private static final Function OVERRIDDEN_FUNCTIONS_TOOLTIP_PROVIDER = psiElement -> "Is overridden"; - private static final Function ourImplementingFunctionsTooltipProvider = psiElement -> "Is implemented"; + private static final Function IMPLEMENTING_FUNCTIONS_TOOLTIP_PROVIDER = psiElement -> "Is implemented"; - private static final BasicGutterIconNavigationHandler ourClassInheritorsNavHandler = - new BasicGutterIconNavigationHandler() { + private static final BasicGutterIconNavigationHandler CLASS_INHERITORS_NAV_HANDLER = + new BasicGutterIconNavigationHandler<>() { @Override - protected String getTitle(final JSClass elt) { + @RequiredReadAction + protected String getTitle(JSClass elt) { return "Choose Subclass of " + elt.getName(); } @Override - protected Query search(final JSClass elt) { + protected Query search(JSClass elt) { return JSClassSearch.searchClassInheritors(elt, true); } }; - private static final BasicGutterIconNavigationHandler ourInterfaceImplementationsNavHandler = new - BasicGutterIconNavigationHandler() { + private static final BasicGutterIconNavigationHandler INTERFACE_IMPLEMENTATIONS_NAV_HANDLER = + new BasicGutterIconNavigationHandler<>() { @Override - protected String getTitle(final JSClass elt) { + @RequiredReadAction + protected String getTitle(JSClass elt) { return "Choose Implementation of " + elt.getName(); } @Override - protected Query search(final JSClass elt) { + protected Query search(JSClass elt) { return JSClassSearch.searchInterfaceImplementations(elt, true); } }; - private static final BasicGutterIconNavigationHandler ourOverriddenFunctionsNavHandler = new - BasicGutterIconNavigationHandler() { + private static final BasicGutterIconNavigationHandler OVERRIDDEN_FUNCTIONS_NAV_HANDLER = + new BasicGutterIconNavigationHandler<>() { @Override - protected String getTitle(final JSFunction elt) { + @RequiredReadAction + protected String getTitle(JSFunction elt) { return "Choose Overriden Function of " + elt.getName(); } @Override - protected Query search(final JSFunction elt) { + @RequiredReadAction + protected Query search(JSFunction elt) { return doFindOverridenFunctionStatic(elt); } }; - private final boolean myUnitTestMode = ApplicationManager.getApplication().isUnitTestMode(); - - public static Query doFindOverridenFunctionStatic(final JSFunction elt) { + @RequiredReadAction + public static Query doFindOverridenFunctionStatic(JSFunction elt) { PsiElement parent = JSResolveUtil.findParent(elt); if (parent instanceof JSClass) { return JSFunctionsSearch.searchOverridingFunctions(elt, true); } - final String qName = JSResolveUtil.getQNameToStartHierarchySearch(elt); + String qName = JSResolveUtil.getQNameToStartHierarchySearch(elt); if (qName != null) { - final ArrayList result = new ArrayList<>(); + ArrayList result = new ArrayList<>(); return new CollectionQuery<>(result); } @@ -124,15 +126,16 @@ public static Query doFindOverridenFunctionStatic(final JSFunction e return new CollectionQuery<>(Collections.emptyList()); } - private static final BasicGutterIconNavigationHandler ourImplementingFunctionsNavHandler = new - BasicGutterIconNavigationHandler() { + private static final BasicGutterIconNavigationHandler IMPLEMENTING_FUNCTIONS_NAV_HANDLER = + new BasicGutterIconNavigationHandler<>() { @Override - protected String getTitle(final JSFunction elt) { + @RequiredReadAction + protected String getTitle(JSFunction elt) { return "Choose Implementation of " + elt.getName(); } @Override - protected Query search(final JSFunction elt) { + protected Query search(JSFunction elt) { return JSFunctionsSearch.searchImplementingFunctions(elt, true); } }; @@ -140,9 +143,9 @@ protected Query search(final JSFunction elt) { public static Key ourParticipatesInHierarchyKey = Key.create("js.named.item.participates.in.hierarchy"); @Override + @RequiredReadAction public LineMarkerInfo getLineMarkerInfo(@Nonnull final PsiElement element) { - if (element instanceof JSFunction) { - final JSFunction function = (JSFunction)element; + if (element instanceof JSFunction function) { function.putUserData(ourParticipatesInHierarchyKey, null); if (function.getNameIdentifier() == null) { return null; @@ -151,19 +154,19 @@ public LineMarkerInfo getLineMarkerInfo(@Nonnull final PsiElement element) { if (qName != null) { PsiElement parentNode = element.getParent(); - if (parentNode instanceof JSFile) { - JSClass xmlBackedClass = JSResolveUtil.getXmlBackedClass((JSFile)parentNode); + if (parentNode instanceof JSFile jsFile) { + JSClass xmlBackedClass = JSResolveUtil.getXmlBackedClass(jsFile); if (xmlBackedClass != null) { parentNode = xmlBackedClass; } } - if (element instanceof JSFunctionExpression) { - parentNode = element.getContainingFile(); + if (element instanceof JSFunctionExpression functionExpr) { + parentNode = functionExpr.getContainingFile(); } final MyOverrideHandler overrideHandler = new MyOverrideHandler(); - final String typeName = parentNode instanceof JSClass ? ((JSClass)parentNode).getQualifiedName() : qName; + final String typeName = parentNode instanceof JSClass jsClass ? jsClass.getQualifiedName() : qName; JSResolveUtil.iterateType(function, parentNode, typeName, overrideHandler); if (overrideHandler.className != null) { @@ -173,41 +176,31 @@ public LineMarkerInfo getLineMarkerInfo(@Nonnull final PsiElement element) { return new LineMarkerInfo<>( function, function.getNameIdentifier().getTextRange().getStartOffset(), - AllIcons.Gutter.OverridingMethod, + PlatformIconGroup.gutterOverridingmethod(), Pass.UPDATE_ALL, psiElement -> OVERRIDES_METHOD_IN + overrideHandler.className, - new GutterIconNavigationHandler() { - @Override - public void navigate(final MouseEvent e, final JSFunction elt) { - final Set results = new HashSet<>(); - JSResolveUtil.iterateType( - function, - parentNode1, - typeName, - new JSResolveUtil.OverrideHandler() { - @Override - public boolean process( - final ResolveProcessor processor, - final PsiElement scope, - final String className - ) { - for (PsiElement e : processor.getResults()) { - results.add((NavigationItem)e); - } - return true; - } + (e, elt) -> { + final Set results = new HashSet<>(); + JSResolveUtil.iterateType( + function, + parentNode1, + typeName, + (processor, scope, className) -> { + for (PsiElement e1 : processor.getResults()) { + results.add((NavigationItem)e1); } - ); - - if (results.size() == 1) { - results.iterator().next().navigate(true); - } - else if (results.size() > 1) { - PopupNavigationUtil.getPsiElementPopup( - results.toArray(new PsiElement[results.size()]), - "Choose super class or interface" - ).show(new RelativePoint(e)); + return true; } + ); + + if (results.size() == 1) { + results.iterator().next().navigate(true); + } + else if (results.size() > 1) { + PopupNavigationUtil.getPsiElementPopup( + results.toArray(new PsiElement[results.size()]), + "Choose super class or interface" + ).show(new RelativePoint(e)); } } ); @@ -219,6 +212,7 @@ else if (results.size() > 1) { } @Override + @RequiredReadAction public void collectSlowLineMarkers(@Nonnull final List elements, @Nonnull final Collection result) { final Map> jsFunctionsToProcess = new HashMap<>(); final Map> jsMethodsToProcess = new HashMap<>(); @@ -226,30 +220,27 @@ public void collectSlowLineMarkers(@Nonnull final List elements, @No for (final PsiElement el : elements) { ProgressManager.getInstance().checkCanceled(); - if (el instanceof JSFunction) { - final JSFunction function = (JSFunction)el; + if (el instanceof JSFunction function) { if (isNotApplicableForOverride(function)) { continue; } PsiElement parent = function.getParent(); - if (parent instanceof JSFile) { - parent = JSResolveUtil.getClassReferenceForXmlFromContext(parent); + if (parent instanceof JSFile jsFile) { + parent = JSResolveUtil.getClassReferenceForXmlFromContext(jsFile); } - if (parent instanceof JSClass) { - final JSClass clazz = (JSClass)parent; - - Set functions = jsMethodsToProcess.get(clazz); + if (parent instanceof JSClass jsClass) { + Set functions = jsMethodsToProcess.get(jsClass); if (functions == null) { functions = new HashSet<>(); - jsMethodsToProcess.put(clazz, functions); + jsMethodsToProcess.put(jsClass, functions); } functions.add(function); } else if (parent instanceof JSFile || function instanceof JSFunctionExpression) { - final String qName = JSResolveUtil.getQNameToStartHierarchySearch(function); + String qName = JSResolveUtil.getQNameToStartHierarchySearch(function); if (qName != null) { Set functions = jsFunctionsToProcess.get(qName); @@ -262,10 +253,9 @@ else if (parent instanceof JSFile || function instanceof JSFunctionExpression) { } } } - else if (el instanceof JSClass) { - final JSClass clazz = (JSClass)el; - if (!jsMethodsToProcess.containsKey(clazz)) { - jsMethodsToProcess.put(clazz, null); + else if (el instanceof JSClass jsClass) { + if (!jsMethodsToProcess.containsKey(jsClass)) { + jsMethodsToProcess.put(jsClass, null); } } } @@ -277,39 +267,39 @@ else if (el instanceof JSClass) { Query classQuery = JSClassSearch.searchClassInheritors(clazz, methods != null); - classQuery.forEach(new Processor() { + classQuery.forEach(new Processor<>() { boolean addedClassMarker; final Set methodsClone = methods == null || clazz.isInterface() ? null : new HashSet<>(methods); @Override - public boolean process(final JSClass jsClass) { + public boolean process(JSClass jsClass) { if (!addedClassMarker) { result.add(new LineMarkerInfo<>( clazz, clazz.getTextOffset(), - AllIcons.Gutter.OverridenMethod, + PlatformIconGroup.gutterOverridenmethod(), Pass.LINE_MARKERS, - ourClassInheritorsTooltipProvider, - ourClassInheritorsNavHandler + CLASS_INHERITORS_TOOLTIP_PROVIDER, + CLASS_INHERITORS_NAV_HANDLER )); addedClassMarker = true; } if (methodsClone != null) { for (final Iterator functionIterator = methodsClone.iterator(); functionIterator.hasNext(); ) { - final JSFunction function = functionIterator.next(); + JSFunction function = functionIterator.next(); - final JSFunction byName = jsClass.findFunctionByNameAndKind(function.getName(), function.getKind()); + JSFunction byName = jsClass.findFunctionByNameAndKind(function.getName(), function.getKind()); if (byName != null && !isNotApplicableForOverride(byName)) { // TODO: more correct check for override function.putUserData(ourParticipatesInHierarchyKey, Boolean.TRUE); result.add(new LineMarkerInfo<>( function, function.getTextOffset(), - AllIcons.Gutter.OverridenMethod, + PlatformIconGroup.gutterOverridenmethod(), Pass.LINE_MARKERS, - ourOverriddenFunctionsTooltipProvider, - ourOverriddenFunctionsNavHandler + OVERRIDDEN_FUNCTIONS_TOOLTIP_PROVIDER, + OVERRIDDEN_FUNCTIONS_NAV_HANDLER )); functionIterator.remove(); } @@ -327,10 +317,10 @@ public boolean process(final JSClass jsClass) { result.add(new LineMarkerInfo<>( clazz, clazz.getTextOffset(), - AllIcons.Gutter.ImplementedMethod, + PlatformIconGroup.gutterImplementedmethod(), Pass.LINE_MARKERS, - ourImplementedInterfacesTooltipProvider, - ourInterfaceImplementationsNavHandler + IMPLEMENTED_INTERFACES_TOOLTIP_PROVIDER, + INTERFACE_IMPLEMENTATIONS_NAV_HANDLER )); } } @@ -339,45 +329,42 @@ public boolean process(final JSClass jsClass) { continue; } - for (final JSFunction function : methods) { + for (JSFunction function : methods) { if (clazz.isInterface()) { - final Query query = JSFunctionsSearch.searchImplementingFunctions(function, false); + Query query = JSFunctionsSearch.searchImplementingFunctions(function, false); if (query.findFirst() != null) { function.putUserData(ourParticipatesInHierarchyKey, Boolean.TRUE); result.add(new LineMarkerInfo<>( function, function.getTextOffset(), - AllIcons.Gutter.ImplementedMethod, + PlatformIconGroup.gutterImplementedmethod(), Pass.LINE_MARKERS, - ourImplementingFunctionsTooltipProvider, - ourImplementingFunctionsNavHandler + IMPLEMENTING_FUNCTIONS_TOOLTIP_PROVIDER, + IMPLEMENTING_FUNCTIONS_NAV_HANDLER )); } } else { - final JSAttributeList attributeList = function.getAttributeList(); + JSAttributeList attributeList = function.getAttributeList(); if (attributeList != null && attributeList.hasModifier(JSAttributeList.ModifierType.OVERRIDE)) { continue; } - final JSFunction implementedFunction = findImplementedFunction(function); + JSFunction implementedFunction = findImplementedFunction(function); if (implementedFunction != null) { function.putUserData(ourParticipatesInHierarchyKey, Boolean.TRUE); result.add(new LineMarkerInfo<>( function, function.getTextOffset(), - AllIcons.Gutter.ImplementingMethod, + PlatformIconGroup.gutterImplementingmethod(), Pass.LINE_MARKERS, jsFunction -> "Implementation of " + jsFunction.getName() + " in " + ((NavigationItem)implementedFunction.getParent()).getName(), - new GutterIconNavigationHandler() { - @Override - public void navigate(final MouseEvent e, final JSFunction elt) { - final JSFunction implementedFunction = findImplementedFunction(elt); - if (implementedFunction != null) { - implementedFunction.navigate(true); - } + (e, elt) -> { + JSFunction implementedFunction1 = findImplementedFunction(elt); + if (implementedFunction1 != null) { + implementedFunction1.navigate(true); } } )); @@ -387,17 +374,12 @@ public void navigate(final MouseEvent e, final JSFunction elt) { } } - private static boolean isClass(final PsiElement element) { - if (element instanceof JSClass) { - return true; - } - if (element instanceof JSFile && element.getContext() != null) { - return true; - } - return false; + private static boolean isClass(PsiElement element) { + return element instanceof JSClass || element instanceof JSFile jsFile && jsFile.getContext() != null; } @Nullable + @RequiredReadAction private static JSFunction findImplementedFunction(JSFunction implementingFunction) { PsiElement clazz = implementingFunction.getParent(); if (!(clazz instanceof JSClass)) { @@ -406,22 +388,26 @@ private static JSFunction findImplementedFunction(JSFunction implementingFunctio if (!(clazz instanceof JSClass)) { return null; } - final Ref result = new Ref<>(); - JSResolveUtil.processInterfaceMethods((JSClass)clazz, new JSResolveUtil.CollectMethodsToImplementProcessor( - implementingFunction.getName(), - implementingFunction - ) { - @Override - protected boolean process(final ResolveProcessor processor) { - result.set((JSFunction)processor.getResult()); - return false; + final SimpleReference result = new SimpleReference<>(); + JSResolveUtil.processInterfaceMethods( + (JSClass)clazz, + new JSResolveUtil.CollectMethodsToImplementProcessor( + implementingFunction.getName(), + implementingFunction + ) { + @Override + protected boolean process(ResolveProcessor processor) { + result.set((JSFunction)processor.getResult()); + return false; + } } - }); + ); return result.get(); } - private static boolean isNotApplicableForOverride(final JSFunction function) { - final JSAttributeList attributeList = function.getAttributeList(); + @RequiredReadAction + private static boolean isNotApplicableForOverride(JSFunction function) { + JSAttributeList attributeList = function.getAttributeList(); return function.isConstructor() || (attributeList != null && (attributeList.getAccessType() == JSAttributeList.AccessType.PRIVATE @@ -433,7 +419,7 @@ static class MyOverrideHandler implements JSResolveUtil.OverrideHandler { String className; @Override - public boolean process(final ResolveProcessor processor, final PsiElement scope, final String className) { + public boolean process(ResolveProcessor processor, PsiElement scope, String className) { this.className = className; return true; } @@ -441,22 +427,20 @@ public boolean process(final ResolveProcessor processor, final PsiElement scope, private abstract static class BasicGutterIconNavigationHandler implements GutterIconNavigationHandler { @Override - public void navigate(final MouseEvent e, final T elt) { + @RequiredUIAccess + public void navigate(MouseEvent e, T elt) { final List navElements = new ArrayList<>(); Query elementQuery = search(elt); if (elementQuery == null) { return; } - elementQuery.forEach(new Processor() { - @Override - public boolean process(final T psiElement) { - if (psiElement instanceof NavigatablePsiElement) { - navElements.add((NavigatablePsiElement)psiElement); - } - return true; + elementQuery.forEach(psiElement -> { + if (psiElement instanceof NavigatablePsiElement navigatablePsiElement) { + navElements.add(navigatablePsiElement); } + return true; }); - final NavigatablePsiElement[] methods = navElements.toArray(new NavigatablePsiElement[navElements.size()]); + NavigatablePsiElement[] methods = navElements.toArray(new NavigatablePsiElement[navElements.size()]); PsiElementListNavigator.openTargets(e, methods, getTitle(elt), "", new DefaultPsiElementCellRenderer()); } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/index/predefined/Marker.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/index/predefined/Marker.java index f3a84c6b..aac698b0 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/index/predefined/Marker.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/index/predefined/Marker.java @@ -17,11 +17,8 @@ package com.intellij.lang.javascript.impl.index.predefined; /** - * Created by IntelliJ IDEA. - * User: Maxim.Mossienko - * Date: Apr 22, 2006 - * Time: 8:09:53 PM - * To change this template use File | Settings | File Templates. + * @author Maxim.Mossienko + * @since 2006-04-22 */ public class Marker { } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/extractMethod/JSExtractFunctionDialog.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/extractMethod/JSExtractFunctionDialog.java index c69295ec..775bb5f7 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/extractMethod/JSExtractFunctionDialog.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/extractMethod/JSExtractFunctionDialog.java @@ -23,8 +23,7 @@ /** * @author Maxim.Mossienko - * Date: Aug 9, 2008 - * Time: 9:22:10 AM + * @since 2008-08-09 */ public class JSExtractFunctionDialog extends DialogWrapper implements JSExtractFunctionSettings { private JPanel myPanel; diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/extractMethod/JSExtractFunctionHandler.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/extractMethod/JSExtractFunctionHandler.java index 15089216..aee13a49 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/extractMethod/JSExtractFunctionHandler.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/extractMethod/JSExtractFunctionHandler.java @@ -24,44 +24,41 @@ import consulo.language.psi.PsiElement; import consulo.language.psi.PsiFile; import consulo.project.Project; +import consulo.ui.annotation.RequiredUIAccess; import consulo.ui.ex.awt.DialogWrapper; import consulo.undoRedo.CommandProcessor; - import jakarta.annotation.Nonnull; /** * @author Maxim.Mossienko - * Date: May 29, 2008 - * Time: 8:19:48 PM + * @since 2008-05-29 */ public class JSExtractFunctionHandler implements RefactoringActionHandler { @Override + @RequiredUIAccess public void invoke(@Nonnull final Project project, final Editor editor, PsiFile file, DataContext dataContext) { if (!editor.getSelectionModel().hasSelection()) { editor.getSelectionModel().selectLineAtCaret(); } - int start = editor.getSelectionModel().getSelectionStart(); - int end = editor.getSelectionModel().getSelectionEnd(); if (!CommonRefactoringUtil.checkReadOnlyStatus(project, file)) { return; } - final JSExtractFunctionSettings settings = getSettings(project, editor); + JSExtractFunctionSettings settings = getSettings(project, editor); if (settings == null) { return; } - CommandProcessor.getInstance().executeCommand( - project, - () -> project.getApplication().runWriteAction(() -> doRefactoring(project, editor, settings)), - JavaScriptLocalize.javascriptExtractMethodTitle().get(), - null - ); + CommandProcessor.getInstance().newCommand() + .project(project) + .name(JavaScriptLocalize.javascriptExtractMethodTitle()) + .run(() -> project.getApplication().runWriteAction(() -> doRefactoring(project, editor, settings))); } - protected JSExtractFunctionSettings getSettings(final Project project, final Editor editor) { - final JSExtractFunctionDialog dialog = new JSExtractFunctionDialog(); + @RequiredUIAccess + protected JSExtractFunctionSettings getSettings(Project project, Editor editor) { + JSExtractFunctionDialog dialog = new JSExtractFunctionDialog(); dialog.show(); if (dialog.getExitCode() != DialogWrapper.OK_EXIT_CODE) { return null; @@ -69,11 +66,12 @@ protected JSExtractFunctionSettings getSettings(final Project project, final Edi return dialog; } - private void doRefactoring(final Project project, final Editor editor, final JSExtractFunctionSettings settings) { + private void doRefactoring(Project project, Editor editor, JSExtractFunctionSettings settings) { } @Override - public void invoke(@Nonnull final Project project, @Nonnull final PsiElement[] elements, final DataContext dataContext) { + @RequiredUIAccess + public void invoke(@Nonnull Project project, @Nonnull PsiElement[] elements, DataContext dataContext) { throw new UnsupportedOperationException(); } } From 199536935604b5e906aecc799cf2e1a1b029a12c Mon Sep 17 00:00:00 2001 From: UNV Date: Tue, 14 Jan 2025 12:34:03 +0300 Subject: [PATCH 107/150] Refactoring the rest of classes in consulo-javascript module (part 2). --- .../lang/javascript/impl/JSNodeVisitor.java | 106 +++--- .../impl/JSSmartEnterProcessor.java | 41 +-- .../impl/JavaScriptCodeContextType.java | 24 +- .../impl/JavaScriptTargetElementUtilEx.java | 7 +- .../javascript/impl/JavascriptCommenter.java | 2 +- .../JSDuplicatedDeclarationInspection.java | 2 +- .../JSUndeclaredVariableInspection.java | 2 +- .../JSUnresolvedFunctionInspection.java | 7 +- .../JSUnresolvedVariableInspection.java | 4 +- .../JSUntypedDeclarationInspection.java | 6 +- .../JSUnusedLocalSymbolsInspection.java | 3 +- .../JavaScriptGotoSuperHandler.java | 51 ++- .../JSBaseClassBasedIntroduceDialog.java | 13 +- .../refactoring/JSBaseIntroduceDialog.java | 106 +++--- .../refactoring/JSBaseIntroduceHandler.java | 159 ++++----- .../impl/refactoring/JSNamesValidator.java | 9 +- .../JavascriptRefactoringSupportProvider.java | 4 +- .../JSIntroduceConstantDialog.java | 9 +- .../JSIntroduceConstantHandler.java | 46 ++- .../JSIntroduceFieldDialog.java | 35 +- .../JSIntroduceFieldHandler.java | 49 +-- .../JSIntroduceVariableDialog.java | 9 +- .../JSIntroduceVariableHandler.java | 8 +- .../search/JSDeclarationRangeHandler.java | 10 +- .../search/JSDefinitionsSearchExecutor.java | 25 +- .../impl/search/JSFunctionsSearch.java | 34 +- .../search/JSGotoTargetRendererProvider.java | 18 +- .../JSStructureItemPresentation.java | 45 ++- .../JSStructureViewBuilderFactory.java | 2 +- .../structureView/JSStructureViewElement.java | 157 +++++---- .../structureView/JSStructureViewModel.java | 139 ++++---- .../impl/structureView/JSSuperGroup.java | 8 +- .../impl/structureView/JSSuperGrouper.java | 38 ++- .../JSExpressionSurroundDescriptor.java | 16 +- .../surroundWith/JSStatementSurrounder.java | 34 +- .../JSStatementsSurroundDescriptor.java | 29 +- .../surroundWith/JSWithBlockSurrounder.java | 9 +- .../surroundWith/JSWithDoWhileSurrounder.java | 9 +- .../surroundWith/JSWithForSurrounder.java | 15 +- .../JSWithFunctionExpressionSurrounder.java | 16 +- .../JSWithFunctionSurrounder.java | 9 +- .../surroundWith/JSWithIfElseSurrounder.java | 2 +- .../impl/surroundWith/JSWithIfSurrounder.java | 11 +- .../JSWithParenthesesSurrounder.java | 4 +- .../JSWithTryCatchFinallySurrounder.java | 13 +- .../JSWithTryCatchSurrounder.java | 4 +- .../JSWithTryFinallySurrounder.java | 4 +- .../surroundWith/JSWithWhileSurrounder.java | 7 +- .../surroundWith/JSWithWithSurrounder.java | 16 +- .../impl/validation/BaseCreateMethodsFix.java | 114 +++---- .../impl/validation/ImplementMethodsFix.java | 10 +- .../ImplementedMethodProcessor.java | 34 +- .../impl/validation/JSAnnotatingVisitor.java | 314 +++++++++--------- 53 files changed, 931 insertions(+), 917 deletions(-) diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/JSNodeVisitor.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/JSNodeVisitor.java index 990c8836..7e03efd3 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/JSNodeVisitor.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/JSNodeVisitor.java @@ -28,7 +28,7 @@ */ public abstract class JSNodeVisitor { public final void visit(ASTNode node) { - final IElementType type = node.getElementType(); + IElementType type = node.getElementType(); if (type instanceof JSFileElementType) { visitFile(node); } @@ -188,210 +188,210 @@ public void visitXmlLiteralExpression(ASTNode node) { visitExpression(node); } - public void visitAttributeList(final ASTNode node) { + public void visitAttributeList(ASTNode node) { visitElement(node); } - public void visitPackageStatement(final ASTNode node) { + public void visitPackageStatement(ASTNode node) { visitElement(node); } - public void visitClass(final ASTNode node) { + public void visitClass(ASTNode node) { visitElement(node); } - public void visitFile(final ASTNode node) { + public void visitFile(ASTNode node) { visitElement(node); } - public void visitCallExpression(final ASTNode node) { + public void visitCallExpression(ASTNode node) { visitExpression(node); } - public void visitIndexedPropertyAccessExpression(final ASTNode node) { + public void visitIndexedPropertyAccessExpression(ASTNode node) { visitExpression(node); } - public void visitNewExpression(final ASTNode node) { + public void visitNewExpression(ASTNode node) { visitExpression(node); } - public void visitFunctionExpression(final ASTNode node) { + public void visitFunctionExpression(ASTNode node) { visitExpression(node); } - public void visitPrefixExpression(final ASTNode node) { + public void visitPrefixExpression(ASTNode node) { visitExpression(node); } - public void visitPostfixExpression(final ASTNode node) { + public void visitPostfixExpression(ASTNode node) { visitExpression(node); } - public void visitConditionalExpression(final ASTNode node) { + public void visitConditionalExpression(ASTNode node) { visitExpression(node); } - public void visitCommaExpression(final ASTNode node) { + public void visitCommaExpression(ASTNode node) { visitBinaryExpression(node); } - public void visitAssignmentExpression(final ASTNode node) { + public void visitAssignmentExpression(ASTNode node) { visitBinaryExpression(node); } - public void visitBinaryExpression(final ASTNode node) { + public void visitBinaryExpression(ASTNode node) { visitExpression(node); } - public void visitProperty(final ASTNode node) { + public void visitProperty(ASTNode node) { visitElement(node); } - public void visitObjectLiteralExpression(final ASTNode node) { + public void visitObjectLiteralExpression(ASTNode node) { visitExpression(node); } - public void visitArrayLiteralExpression(final ASTNode node) { + public void visitArrayLiteralExpression(ASTNode node) { visitExpression(node); } - public void visitParenthesizedExpression(final ASTNode node) { + public void visitParenthesizedExpression(ASTNode node) { visitExpression(node); } - public void visitReferenceExpression(final ASTNode node) { + public void visitReferenceExpression(ASTNode node) { visitExpression(node); } - public void visitLiteralExpression(final ASTNode node) { + public void visitLiteralExpression(ASTNode node) { visitExpression(node); } - public void visitThisExpression(final ASTNode node) { + public void visitThisExpression(ASTNode node) { visitExpression(node); } - public void visitForInStatement(final ASTNode node) { + public void visitForInStatement(ASTNode node) { visitStatement(node); } - public void visitForStatement(final ASTNode node) { + public void visitForStatement(ASTNode node) { visitStatement(node); } - public void visitDoWhileStatement(final ASTNode node) { + public void visitDoWhileStatement(ASTNode node) { visitStatement(node); } - public void visitWhileStatement(final ASTNode node) { + public void visitWhileStatement(ASTNode node) { visitStatement(node); } - public void visitCaseClause(final ASTNode node) { + public void visitCaseClause(ASTNode node) { visitElement(node); } - public void visitSwitchStatement(final ASTNode node) { + public void visitSwitchStatement(ASTNode node) { visitStatement(node); } - public void visitCatchBlock(final ASTNode node) { + public void visitCatchBlock(ASTNode node) { visitElement(node); } - public void visitTryStatement(final ASTNode node) { + public void visitTryStatement(ASTNode node) { visitStatement(node); } - public void visitThrowStatement(final ASTNode node) { + public void visitThrowStatement(ASTNode node) { visitStatement(node); } - public void visitReturnStatement(final ASTNode node) { + public void visitReturnStatement(ASTNode node) { visitStatement(node); } - public void visitWithStatement(final ASTNode node) { + public void visitWithStatement(ASTNode node) { visitStatement(node); } - public void visitBreakStatement(final ASTNode node) { + public void visitBreakStatement(ASTNode node) { visitStatement(node); } - public void visitContinueStatement(final ASTNode node) { + public void visitContinueStatement(ASTNode node) { visitStatement(node); } - public void visitIfStatement(final ASTNode node) { + public void visitIfStatement(ASTNode node) { visitStatement(node); } - public void visitEmptyStatement(final ASTNode node) { + public void visitEmptyStatement(ASTNode node) { visitStatement(node); } - public void visitVarStatement(final ASTNode node) { + public void visitVarStatement(ASTNode node) { visitStatement(node); } - public void visitExpressionStatement(final ASTNode node) { + public void visitExpressionStatement(ASTNode node) { visitStatement(node); } - public void visitLabeledStatement(final ASTNode node) { + public void visitLabeledStatement(ASTNode node) { visitStatement(node); } - public void visitBlock(final ASTNode node) { + public void visitBlock(ASTNode node) { visitStatement(node); } - public void visitArgumentList(final ASTNode node) { + public void visitArgumentList(ASTNode node) { visitElement(node); } - public void visitParameter(final ASTNode node) { + public void visitParameter(ASTNode node) { visitVariable(node); } - public void visitVariable(final ASTNode node) { + public void visitVariable(ASTNode node) { visitElement(node); } - public void visitParameterList(final ASTNode node) { + public void visitParameterList(ASTNode node) { visitElement(node); } - public void visitEmbeddedContent(final ASTNode node) { + public void visitEmbeddedContent(ASTNode node) { visitElement(node); } - public void visitElement(final ASTNode node) { + public void visitElement(ASTNode node) { } - public void visitSourceElement(final ASTNode node) { + public void visitSourceElement(ASTNode node) { visitElement(node); } - public void visitFunctionDeclaration(final ASTNode node) { + public void visitFunctionDeclaration(ASTNode node) { visitSourceElement(node); } - public void visitStatement(final ASTNode node) { + public void visitStatement(ASTNode node) { visitSourceElement(node); } - public void visitExpression(final ASTNode node) { + public void visitExpression(ASTNode node) { visitElement(node); } - public void visitDocComment(final ASTNode node) { + public void visitDocComment(ASTNode node) { visitElement(node); } - public void visitComment(final ASTNode node) { + public void visitComment(ASTNode node) { visitElement(node); } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/JSSmartEnterProcessor.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/JSSmartEnterProcessor.java index a9a810f9..a318e0db 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/JSSmartEnterProcessor.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/JSSmartEnterProcessor.java @@ -20,6 +20,7 @@ import com.intellij.lang.javascript.psi.*; import com.intellij.lang.javascript.psi.impl.JSChangeUtil; import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.access.RequiredWriteAction; import consulo.annotation.component.ExtensionImpl; import consulo.codeEditor.Editor; import consulo.javascript.language.JavaScriptLanguage; @@ -41,8 +42,8 @@ @ExtensionImpl public class JSSmartEnterProcessor extends SmartEnterProcessor { @Override - @RequiredReadAction - public boolean process(@Nonnull final Project project, @Nonnull final Editor editor, @Nonnull final PsiFile psiFile) { + @RequiredWriteAction + public boolean process(@Nonnull Project project, @Nonnull Editor editor, @Nonnull PsiFile psiFile) { int offset = editor.getCaretModel().getOffset(); PsiElement at = psiFile.findElementAt(offset); if (at == null && offset > 0) { @@ -52,13 +53,13 @@ public boolean process(@Nonnull final Project project, @Nonnull final Editor edi return false; } - PsiElement element = at instanceof PsiWhiteSpace ? PsiTreeUtil.prevLeaf(at) : at; + PsiElement element = at instanceof PsiWhiteSpace whiteSpace ? PsiTreeUtil.prevLeaf(whiteSpace) : at; if (element != null && !(element instanceof PsiErrorElement)) { - final PsiElement nextMeaningfulElement = evalMeaningfulElement(at, true); - if (nextMeaningfulElement instanceof PsiErrorElement) { - element = nextMeaningfulElement; - offset = element.getTextOffset(); + PsiElement nextMeaningfulElement = evalMeaningfulElement(at, true); + if (nextMeaningfulElement instanceof PsiErrorElement errorElement) { + element = errorElement; + offset = errorElement.getTextOffset(); } } @@ -89,7 +90,7 @@ public boolean process(@Nonnull final Project project, @Nonnull final Editor edi } } - final PsiElement prevMeaningfulElement = evalMeaningfulElement(element, false); + PsiElement prevMeaningfulElement = evalMeaningfulElement(element, false); if (element != null && !(element instanceof PsiErrorElement) && prevMeaningfulElement != null) { element = prevMeaningfulElement; } @@ -101,9 +102,10 @@ public boolean process(@Nonnull final Project project, @Nonnull final Editor edi if (element.getParent() instanceof JSFunctionExpression) { @SuppressWarnings("unchecked") - final JSElement base = + JSElement base = PsiTreeUtil.getParentOfType(element, JSArgumentList.class, JSIndexedPropertyAccessExpression.class, JSStatement.class); - if (base instanceof JSStatement && base.getLastChild().getNode().getElementType() != JSTokenTypes.SEMICOLON) { + if (base instanceof JSStatement baseStatement + && baseStatement.getLastChild().getNode().getElementType() != JSTokenTypes.SEMICOLON) { semicolon = JSChangeUtil.getSemicolon(project); } } @@ -118,14 +120,14 @@ else if (JavaScriptLocalize.javascriptParserMessageExpectedLparen().equals(error return false; } - @RequiredReadAction + @RequiredWriteAction private void insertCommitReformat( - final Project project, - final Editor editor, - final PsiFile psiFile, - final int offset, - final String str, - final int shiftOffset, + Project project, + Editor editor, + PsiFile psiFile, + int offset, + String str, + int shiftOffset, boolean adjustLineIndent ) { editor.getDocument().insertString(offset, str); @@ -134,7 +136,7 @@ private void insertCommitReformat( PsiElement at = psiFile.findElementAt(offset + shiftOffset - 1); @SuppressWarnings("unchecked") - final PsiElement parentOfType = PsiTreeUtil.getParentOfType(at, JSStatement.class, JSFunction.class, JSClass.class, JSFile.class); + PsiElement parentOfType = PsiTreeUtil.getParentOfType(at, JSStatement.class, JSFunction.class, JSClass.class, JSFile.class); reformat(parentOfType); if (adjustLineIndent) { @@ -142,7 +144,8 @@ private void insertCommitReformat( } } - private static PsiElement evalMeaningfulElement(final PsiElement element, boolean forward) { + @RequiredReadAction + private static PsiElement evalMeaningfulElement(PsiElement element, boolean forward) { if (element == null) { return null; } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/JavaScriptCodeContextType.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/JavaScriptCodeContextType.java index a4353e10..3a6aa70e 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/JavaScriptCodeContextType.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/JavaScriptCodeContextType.java @@ -33,14 +33,13 @@ import consulo.language.psi.PsiFile; import consulo.language.psi.PsiLanguageInjectionHost; import consulo.language.psi.util.PsiTreeUtil; -import consulo.util.lang.ref.Ref; +import consulo.util.lang.ref.SimpleReference; import consulo.xml.lang.xml.XMLLanguage; import jakarta.annotation.Nonnull; /** * @author Maxim.Mossienko - * Date: Apr 14, 2008 - * Time: 6:01:09 PM + * @since 2008-04-14 */ @ExtensionImpl public class JavaScriptCodeContextType extends BaseTemplateContextType { @@ -55,7 +54,7 @@ public JavaScriptCodeContextType() { public boolean isInContext(@Nonnull TemplateActionContext context) { PsiFile file = context.getFile(); int offset = context.getStartOffset(); - + PsiElement at = file.findElementAt(offset); if (at == null && offset == file.getTextLength()) { at = file.findElementAt(offset - 1); @@ -63,17 +62,20 @@ public boolean isInContext(@Nonnull TemplateActionContext context) { Language language = at != null ? at.getParent().getLanguage() : null; if (language instanceof XMLLanguage) { - final PsiLanguageInjectionHost host = PsiTreeUtil.getParentOfType(at, PsiLanguageInjectionHost.class, false); + PsiLanguageInjectionHost host = PsiTreeUtil.getParentOfType(at, PsiLanguageInjectionHost.class, false); if (host != null) { - final Ref hasJsInjection = new Ref<>(Boolean.FALSE); + final SimpleReference hasJsInjection = new SimpleReference<>(Boolean.FALSE); - InjectedLanguageManager.getInstance(at.getProject()).enumerate(host, new JSResolveUtil.JSInjectedFilesVisitor() { - @Override - protected void process(final JSFile file) { - hasJsInjection.set(Boolean.TRUE); + InjectedLanguageManager.getInstance(at.getProject()).enumerate( + host, + new JSResolveUtil.JSInjectedFilesVisitor() { + @Override + protected void process(JSFile file) { + hasJsInjection.set(Boolean.TRUE); + } } - }); + ); if (hasJsInjection.get()) { language = JavaScriptLanguage.INSTANCE; diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/JavaScriptTargetElementUtilEx.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/JavaScriptTargetElementUtilEx.java index 5ed820e6..48ac5f6d 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/JavaScriptTargetElementUtilEx.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/JavaScriptTargetElementUtilEx.java @@ -31,10 +31,9 @@ @ExtensionImpl public class JavaScriptTargetElementUtilEx implements TargetElementUtilExtender { @Override - public boolean includeSelfInGotoImplementation(@Nonnull final PsiElement element) { - if (element instanceof JSFunction) { - final PsiElement parent = JSResolveUtil.findParent(element); - if (parent instanceof JSClass jsClass && jsClass.isInterface()) { + public boolean includeSelfInGotoImplementation(@Nonnull PsiElement element) { + if (element instanceof JSFunction function) { + if (JSResolveUtil.findParent(function) instanceof JSClass jsClass && jsClass.isInterface()) { return false; } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/JavascriptCommenter.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/JavascriptCommenter.java index 3c4f5828..5bd8592c 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/JavascriptCommenter.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/JavascriptCommenter.java @@ -87,7 +87,7 @@ public String getDocumentationCommentSuffix() { } @Override - public boolean isDocumentationComment(final PsiComment element) { + public boolean isDocumentationComment(PsiComment element) { return element.getTokenType() == JSTokenTypes.DOC_COMMENT; } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSDuplicatedDeclarationInspection.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSDuplicatedDeclarationInspection.java index be739b32..653f65f4 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSDuplicatedDeclarationInspection.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSDuplicatedDeclarationInspection.java @@ -63,7 +63,7 @@ public String getShortName() { } @Override - protected JSElementVisitor createVisitor(final ProblemsHolder holder) { + protected JSElementVisitor createVisitor(ProblemsHolder holder) { return new JSElementVisitor() { @Override @RequiredReadAction diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUndeclaredVariableInspection.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUndeclaredVariableInspection.java index 0d7032fb..eb42a421 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUndeclaredVariableInspection.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUndeclaredVariableInspection.java @@ -63,7 +63,7 @@ public String getShortName() { } @Override - protected JSElementVisitor createVisitor(final ProblemsHolder holder) { + protected JSElementVisitor createVisitor(ProblemsHolder holder) { return new JSElementVisitor() { @Override public void visitJSReferenceExpression(@Nonnull JSReferenceExpression node) { diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnresolvedFunctionInspection.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnresolvedFunctionInspection.java index 9043095b..610b8871 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnresolvedFunctionInspection.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnresolvedFunctionInspection.java @@ -46,6 +46,7 @@ import consulo.language.psi.util.PsiTreeUtil; import consulo.localize.LocalizeValue; import consulo.project.Project; +import consulo.ui.annotation.RequiredUIAccess; import consulo.xml.ide.highlighter.XmlFileType; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @@ -140,8 +141,8 @@ else if (element instanceof JSFunction function && function.isGetProperty()) { List quickFixes = new ArrayList<>(); String refName = methodRefExpr.getReferencedName(); - if (myOnTheFly && ((qualifier == null || qualifier instanceof JSThisExpression) - || JSUtils.isLHSExpression(qualifier))) { + if (myOnTheFly + && (qualifier == null || qualifier instanceof JSThisExpression || JSUtils.isLHSExpression(qualifier))) { if (node.getMethodExpression().getParent() instanceof JSCallExpression) { boolean simpleJs = !JavaScriptVersionUtil.containsFeature(methodRefExpr, JavaScriptFeature.CLASS); @@ -599,7 +600,7 @@ public String getFamilyName() { } @Override - @RequiredReadAction + @RequiredUIAccess public void applyFix(@Nonnull Project project, @Nonnull ProblemDescriptor descriptor) { PsiElement element = descriptor.getPsiElement(); Editor editor = BaseCreateFix.getEditor(project, element.getContainingFile()); diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnresolvedVariableInspection.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnresolvedVariableInspection.java index 1765e1ac..1fb617f2 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnresolvedVariableInspection.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnresolvedVariableInspection.java @@ -155,8 +155,8 @@ protected void addReturnType( JSClass targetClass = contextClass; - if (qualifier instanceof JSReferenceExpression) { - JSClass clazz = JSResolveUtil.findClassOfQualifier(qualifier, containingFile); + if (qualifier instanceof JSReferenceExpression qualifierRefExpr) { + JSClass clazz = JSResolveUtil.findClassOfQualifier(qualifierRefExpr, containingFile); if (clazz != null) { targetClass = clazz; } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUntypedDeclarationInspection.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUntypedDeclarationInspection.java index 5663e8d1..117ff905 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUntypedDeclarationInspection.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUntypedDeclarationInspection.java @@ -111,9 +111,9 @@ private static void process(JSNamedElement node, ProblemsHolder holder) { } PsiElement nameIdentifier = node.getNameIdentifier(); - if (nameIdentifier != null && - JSPsiImplUtils.getTypeFromDeclaration(node) == null && - !(node instanceof JSParameter parameter && parameter.isRest())) { + if (nameIdentifier != null + && JSPsiImplUtils.getTypeFromDeclaration(node) == null + && !(node instanceof JSParameter parameter && parameter.isRest())) { LocalizeValue description = node instanceof JSFunction ? JavaScriptLocalize.jsUntypedFunctionProblem(nameIdentifier.getText()) : JavaScriptLocalize.jsUntypedVariableProblem(nameIdentifier.getText()); diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnusedLocalSymbolsInspection.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnusedLocalSymbolsInspection.java index d3d0d5d4..4ede17ae 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnusedLocalSymbolsInspection.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnusedLocalSymbolsInspection.java @@ -24,6 +24,7 @@ import com.intellij.lang.javascript.psi.resolve.JSImportHandlingUtil; import com.intellij.lang.javascript.psi.resolve.ResolveProcessor; import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.access.RequiredWriteAction; import consulo.annotation.component.ExtensionImpl; import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.editor.inspection.*; @@ -377,7 +378,7 @@ public String getFamilyName() { } @Override - @RequiredReadAction + @RequiredWriteAction public void applyFix(@Nonnull Project project, @Nonnull ProblemDescriptor descriptor) { try { PsiElement element = descriptor.getPsiElement(); diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/navigation/JavaScriptGotoSuperHandler.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/navigation/JavaScriptGotoSuperHandler.java index 1d9e7b55..72f9a78a 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/navigation/JavaScriptGotoSuperHandler.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/navigation/JavaScriptGotoSuperHandler.java @@ -34,48 +34,48 @@ import consulo.language.psi.util.PsiTreeUtil; import consulo.navigation.NavigationItem; import consulo.project.Project; +import consulo.ui.annotation.RequiredUIAccess; import consulo.ui.ex.popup.JBPopup; import jakarta.annotation.Nonnull; @ExtensionImpl public class JavaScriptGotoSuperHandler implements GotoSuperActionHander { @Override - public void invoke(final Project project, final Editor editor, final PsiFile file) { - final PsiElement at = file.findElementAt(editor.getCaretModel().getOffset()); + @RequiredUIAccess + public void invoke(Project project, Editor editor, PsiFile file) { + PsiElement at = file.findElementAt(editor.getCaretModel().getOffset()); if (at == null) { return; } JSNamedElement namedElement = PsiTreeUtil.getParentOfType(at, JSNamedElement.class); - PsiElement parent = namedElement != null ? namedElement.getParent() : null; - if (namedElement instanceof JSDefinitionExpression && parent instanceof JSAssignmentExpression) { - PsiElement rOperand = ((JSAssignmentExpression)parent).getROperand(); - if (rOperand instanceof JSFunctionExpression) { - namedElement = (JSNamedElement)rOperand; + if (namedElement instanceof JSDefinitionExpression definition + && definition.getParent() instanceof JSAssignmentExpression assignment) { + PsiElement rOperand = assignment.getROperand(); + if (rOperand instanceof JSFunctionExpression functionExpr) { + namedElement = functionExpr; } } - if (namedElement instanceof JSFunction) { - final JSFunction function = (JSFunction)namedElement; - final String qName = JSResolveUtil.getQNameToStartHierarchySearch(function); + if (namedElement instanceof JSFunction function) { + String qName = JSResolveUtil.getQNameToStartHierarchySearch(function); + + PsiElement parent = function.getParent(); if (qName != null) { - if (parent instanceof JSFile) { - JSClass xmlBackedClass = JSResolveUtil.getXmlBackedClass((JSFile)parent); + if (parent instanceof JSFile jsFile) { + JSClass xmlBackedClass = JSResolveUtil.getXmlBackedClass(jsFile); if (xmlBackedClass != null) { parent = xmlBackedClass; } } boolean result = JSResolveUtil.iterateType( function, - parent instanceof JSClass ? parent : parent.getContainingFile(), + parent instanceof JSClass jsClass ? jsClass : parent.getContainingFile(), qName, - new JSResolveUtil.OverrideHandler() { - @Override - public boolean process(final ResolveProcessor processor, final PsiElement scope, final String className) { - ((NavigationItem)processor.getResult()).navigate(true); - return false; - } + (processor, scope, className) -> { + ((NavigationItem)processor.getResult()).navigate(true); + return false; } ); @@ -84,12 +84,12 @@ public boolean process(final ResolveProcessor processor, final PsiElement scope, } } - if (parent instanceof JSClass) { + if (parent instanceof JSClass jsClass) { JSResolveUtil.processInterfaceMethods( - (JSClass)parent, + jsClass, new JSResolveUtil.CollectMethodsToImplementProcessor(function.getName(), function) { @Override - protected boolean process(final ResolveProcessor processor) { + protected boolean process(ResolveProcessor processor) { ((NavigationItem)processor.getResult()).navigate(true); return true; } @@ -97,9 +97,8 @@ protected boolean process(final ResolveProcessor processor) { ); } } - else if (namedElement instanceof JSClass) { - final JSClass clazz = (JSClass)namedElement; - final JSClass[] classes = clazz.getSupers(); + else if (namedElement instanceof JSClass jsClass) { + JSClass[] classes = jsClass.getSupers(); if (classes.length == 0) { return; @@ -121,7 +120,7 @@ public boolean startInWriteAction() { } @Override - public boolean isValidFor(final Editor editor, final PsiFile file) { + public boolean isValidFor(Editor editor, PsiFile file) { return true; } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseClassBasedIntroduceDialog.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseClassBasedIntroduceDialog.java index efbc9d22..288b6575 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseClassBasedIntroduceDialog.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseClassBasedIntroduceDialog.java @@ -21,8 +21,10 @@ import com.intellij.lang.javascript.psi.JSAttributeList; import com.intellij.lang.javascript.psi.JSExpression; +import consulo.annotation.access.RequiredReadAction; import consulo.localize.LocalizeValue; import consulo.project.Project; +import consulo.ui.annotation.RequiredUIAccess; /** * @author ven @@ -30,20 +32,17 @@ public abstract class JSBaseClassBasedIntroduceDialog extends JSBaseIntroduceDialog { private static JSAttributeList.AccessType lastType; - protected JSBaseClassBasedIntroduceDialog( - final Project project, - final JSExpression[] occurences, - final JSExpression mainOccurence, - LocalizeValue title - ) { + @RequiredUIAccess + protected JSBaseClassBasedIntroduceDialog(Project project, JSExpression[] occurences, JSExpression mainOccurence, LocalizeValue title) { super(project, occurences, mainOccurence, title); } @Override + @RequiredReadAction protected void doInit() { super.doInit(); - final ButtonGroup group = new ButtonGroup(); + ButtonGroup group = new ButtonGroup(); group.add(getPrivateRadioButton()); group.add(getPublicRadioButton()); group.add(getPackageLocalRadioButton()); diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseIntroduceDialog.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseIntroduceDialog.java index 3afb64ba..13698493 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseIntroduceDialog.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseIntroduceDialog.java @@ -20,6 +20,7 @@ import com.intellij.lang.javascript.psi.impl.JSEmbeddedContentImpl; import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; import com.intellij.lang.javascript.psi.resolve.ResolveProcessor; +import consulo.annotation.access.RequiredReadAction; import consulo.application.Application; import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.Language; @@ -32,10 +33,12 @@ import consulo.language.psi.util.PsiTreeUtil; import consulo.localize.LocalizeValue; import consulo.project.Project; +import consulo.ui.annotation.RequiredUIAccess; import consulo.ui.ex.awt.DialogWrapper; import consulo.ui.ex.awt.Messages; import consulo.ui.ex.awt.util.Alarm; -import consulo.util.lang.ref.Ref; +import consulo.util.lang.ref.SimpleReference; +import jakarta.annotation.Nonnull; import javax.swing.*; import java.awt.event.KeyAdapter; @@ -53,10 +56,11 @@ public abstract class JSBaseIntroduceDialog extends DialogWrapper implements Bas private Alarm myAlarm = new Alarm(Alarm.ThreadToUse.SWING_THREAD); + @RequiredUIAccess protected JSBaseIntroduceDialog( - final Project project, - final JSExpression[] occurences, - final JSExpression mainOccurence, + Project project, + JSExpression[] occurences, + JSExpression mainOccurence, LocalizeValue title ) { super(project, false); @@ -67,6 +71,7 @@ protected JSBaseIntroduceDialog( setTitle(title); } + @RequiredReadAction protected void doInit() { JCheckBox replaceAllCheckBox = getReplaceAllCheckBox(); if (myOccurences.length > 1) { @@ -76,7 +81,7 @@ protected void doInit() { replaceAllCheckBox.setVisible(false); } - final JTextField nameField = getNameField(); + JTextField nameField = getNameField(); nameField.setText(suggestCandidateName(myMainOccurence)); nameField.selectAll(); @@ -89,49 +94,46 @@ public void keyPressed(KeyEvent e) { replaceAllCheckBox.setFocusable(false); - final JComboBox typeField = getVarTypeField(); + JComboBox typeField = getVarTypeField(); - final List possibleTypes = new ArrayList(); - final String type = JSResolveUtil.getExpressionType(myMainOccurence, myMainOccurence.getContainingFile()); + List possibleTypes = new ArrayList<>(); + String type = JSResolveUtil.getExpressionType(myMainOccurence, myMainOccurence.getContainingFile()); possibleTypes.add(type); typeField.setModel(new DefaultComboBoxModel(possibleTypes.toArray(new Object[possibleTypes.size()]))); init(); - SwingUtilities.invokeLater(new Runnable() { - @Override - public void run() { - initiateValidation(); - } - }); + SwingUtilities.invokeLater(this::initiateValidation); } + @RequiredReadAction protected String suggestCandidateName(JSExpression mainOccurence) { - final String s = evaluateCandidate(mainOccurence); + String s = evaluateCandidate(mainOccurence); return s != null ? s.replace('.', '_') : null; } + @RequiredReadAction private static String evaluateCandidate(JSExpression mainOccurence) { - if (mainOccurence instanceof JSCallExpression) { - mainOccurence = ((JSCallExpression)mainOccurence).getMethodExpression(); + if (mainOccurence instanceof JSCallExpression call) { + mainOccurence = call.getMethodExpression(); } - if (mainOccurence instanceof JSReferenceExpression) { - final ResolveResult[] results = ((JSReferenceExpression)mainOccurence).multiResolve(false); + if (mainOccurence instanceof JSReferenceExpression refExpr) { + ResolveResult[] results = refExpr.multiResolve(false); if (results.length > 0) { - final PsiElement element = results[0].getElement(); + PsiElement element = results[0].getElement(); - if (element instanceof JSFunction) { - String typeString = ((JSFunction)element).getReturnTypeString(); + if (element instanceof JSFunction function) { + String typeString = function.getReturnTypeString(); if (isValidIdentifier(typeString, mainOccurence)) { return typeString; } - return ((JSFunction)element).getName(); + return function.getName(); } - else if (element instanceof JSVariable) { - String typeString = ((JSVariable)element).getTypeString(); + else if (element instanceof JSVariable variable) { + String typeString = variable.getTypeString(); if (isValidIdentifier(typeString, mainOccurence)) { return typeString; } @@ -151,6 +153,7 @@ else if (mainOccurence.getParent() instanceof JSArgumentList) { return JSResolveUtil.getExpressionType(mainOccurence, mainOccurence.getContainingFile()); } + @RequiredReadAction private static boolean isValidIdentifier(String typeString, PsiElement context) { if (typeString == null) { return false; @@ -167,16 +170,18 @@ private static boolean isValidIdentifier(String typeString, PsiElement context) private void initiateValidation() { myAlarm.cancelAllRequests(); - myAlarm.addRequest(new Runnable() { - @Override - public void run() { + myAlarm.addRequest( + () -> { final String nameCandidate = getNameField().getText(); setOKActionEnabled(nameCandidate.length() != 0 && isValidName(nameCandidate)); - } - }, 100, Application.get().getCurrentModalityState()); + }, + 100, + Application.get().getCurrentModalityState() + ); } @Override + @RequiredUIAccess public JComponent getPreferredFocusedComponent() { return getNameField(); } @@ -187,8 +192,9 @@ protected JComponent createCenterPanel() { } @Override + @RequiredUIAccess protected void doOKAction() { - final String name = getVariableName(); + String name = getVariableName(); if (name.length() == 0 || !isValidName(name)) { Messages.showErrorDialog( myProject, @@ -206,23 +212,25 @@ protected void doOKAction() { super.doOKAction(); } - private boolean checkConflicts(final String name) { + @RequiredUIAccess + private boolean checkConflicts(String name) { PsiElement tmp = isReplaceAllOccurences() ? PsiTreeUtil.findCommonParent(myOccurences) : myMainOccurence; assert tmp != null; JSElement scope = PsiTreeUtil.getNonStrictParentOfType(tmp, JSBlockStatement.class, JSFile.class, JSEmbeddedContentImpl.class); assert scope != null; - final Ref existing = new Ref(); + final SimpleReference existing = new SimpleReference<>(); scope.accept(new JSElementVisitor() { @Override - public void visitJSElement(final JSElement node) { + public void visitJSElement(@Nonnull JSElement node) { if (existing.isNull()) { node.acceptChildren(this); } } @Override - public void visitJSVariable(final JSVariable node) { + @RequiredReadAction + public void visitJSVariable(@Nonnull JSVariable node) { if (name.equals(node.getName())) { existing.set(node); } @@ -230,7 +238,8 @@ public void visitJSVariable(final JSVariable node) { } @Override - public void visitJSFunctionDeclaration(final JSFunction node) { + @RequiredReadAction + public void visitJSFunctionDeclaration(@Nonnull JSFunction node) { if (name.equals(node.getName())) { existing.set(node); } @@ -239,26 +248,23 @@ public void visitJSFunctionDeclaration(final JSFunction node) { }); if (existing.isNull()) { - final ResolveProcessor processor = new ResolveProcessor(name); + ResolveProcessor processor = new ResolveProcessor(name); JSResolveUtil.treeWalkUp(processor, scope, null, scope); - final PsiElement resolved = processor.getResult(); - if (resolved instanceof JSNamedElement) { - existing.set((JSNamedElement)resolved); + PsiElement resolved = processor.getResult(); + if (resolved instanceof JSNamedElement namedElement) { + existing.set(namedElement); } } - if (!existing.isNull()) { - return showConflictsDialog(existing.get(), name); - } - - return true; + return existing.isNull() || showConflictsDialog(existing.get(), name); } - private boolean showConflictsDialog(final JSNamedElement existing, final String name) { - final LocalizeValue message = existing instanceof JSFunction + @RequiredUIAccess + private boolean showConflictsDialog(JSNamedElement existing, String name) { + LocalizeValue message = existing instanceof JSFunction ? JavaScriptLocalize.javascriptIntroduceVariableFunctionAlreadyExists(CommonRefactoringUtil.htmlEmphasize(name)) : JavaScriptLocalize.javascriptIntroduceVariableVariableAlreadyExists(CommonRefactoringUtil.htmlEmphasize(name)); - final ConflictsDialog conflictsDialog = new ConflictsDialog(myProject, message.get()); + ConflictsDialog conflictsDialog = new ConflictsDialog(myProject, message.get()); conflictsDialog.show(); return conflictsDialog.isOK(); } @@ -278,8 +284,8 @@ public String getVariableType() { return (String)getVarTypeField().getSelectedItem(); } - private boolean isValidName(final String name) { - final PsiFile containingFile = myMainOccurence.getContainingFile(); + private boolean isValidName(String name) { + PsiFile containingFile = myMainOccurence.getContainingFile(); return NamesValidator.forLanguage(containingFile.getLanguage()).isIdentifier(name, myProject); } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseIntroduceHandler.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseIntroduceHandler.java index e60c5d41..a2c12284 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseIntroduceHandler.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseIntroduceHandler.java @@ -21,7 +21,8 @@ import com.intellij.lang.javascript.psi.impl.JSChangeUtil; import com.intellij.lang.javascript.psi.impl.JSEmbeddedContentImpl; import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; -import consulo.application.ApplicationManager; +import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.access.RequiredWriteAction; import consulo.codeEditor.Editor; import consulo.codeEditor.EditorColors; import consulo.codeEditor.markup.RangeHighlighter; @@ -44,11 +45,11 @@ import consulo.logging.Logger; import consulo.project.Project; import consulo.project.ui.wm.WindowManager; +import consulo.ui.annotation.RequiredUIAccess; import consulo.ui.ex.awt.DialogWrapper; import consulo.undoRedo.CommandProcessor; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; -import org.jetbrains.annotations.NonNls; import java.util.ArrayList; import java.util.List; @@ -61,14 +62,15 @@ public abstract class JSBaseIntroduceHandler array = new ArrayList(); + List array = new ArrayList<>(); addExpressionOccurrences(unparenthesize(expr), array, scope); return array.toArray(new JSExpression[array.size()]); } + @RequiredReadAction protected static void addExpressionOccurrences(JSExpression expr, List array, PsiElement scope) { PsiElement[] children = scope.getChildren(); for (PsiElement child : children) { - if (child instanceof JSExpression) { - final JSExpression childExpression = unparenthesize((JSExpression)child); + if (child instanceof JSExpression childExpr) { + JSExpression childUnparenExpr = unparenthesize(childExpr); - if (childExpression != null - && PsiEquivalenceUtil.areElementsEquivalent(childExpression, expr) - && !JSResolveUtil.isSelfReference(scope, child)) { - array.add((JSExpression)child); + if (childUnparenExpr != null + && PsiEquivalenceUtil.areElementsEquivalent(childUnparenExpr, expr) + && !JSResolveUtil.isSelfReference(scope, childExpr)) { + array.add(childExpr); continue; } } @@ -127,14 +131,15 @@ protected static void addExpressionOccurrences(JSExpression expr, List ApplicationManager.getApplication().runWriteAction( - () -> doRefactoring(project, editor, new BaseIntroduceContext<>(expression, occurrences, settings)) - ), - getRefactoringName(), - null - ); + CommandProcessor.getInstance().newCommand() + .project(project) + .name(LocalizeValue.ofNullable(getRefactoringName())) + .inWriteAction() + .run(() -> doRefactoring(project, editor, new BaseIntroduceContext<>(expression, occurrences, settings))); } protected static final class BaseIntroduceContext { @@ -167,14 +169,14 @@ protected static final class BaseIntroduceContext { final JSExpression[] occurences; public final JSExpression expression; - public BaseIntroduceContext(JSExpression _mainoccurence, final JSExpression[] _occurences, S _settings) { + public BaseIntroduceContext(JSExpression _mainoccurence, JSExpression[] _occurences, S _settings) { occurences = _occurences; expression = _mainoccurence; settings = _settings; } } - protected JSElement findIntroducedScope(final JSExpression expression) { + protected JSElement findIntroducedScope(JSExpression expression) { return PsiTreeUtil.getParentOfType(expression, JSFunction.class, JSFile.class, JSEmbeddedContentImpl.class); } @@ -183,8 +185,9 @@ protected JSElement findIntroducedScope(final JSExpression expression) { protected abstract LocalizeValue getCannotIntroduceMessage(); @Nullable - protected JSExpression findIntroducedExpression(final PsiFile file, final int start, final int end, Editor editor) { - final JSExpression expression = findExpressionInRange(file, start, end); + @RequiredUIAccess + protected JSExpression findIntroducedExpression(PsiFile file, int start, int end, Editor editor) { + JSExpression expression = findExpressionInRange(file, start, end); if (expression == null) { CommonRefactoringUtil.showErrorHint( file.getProject(), @@ -198,13 +201,14 @@ protected JSExpression findIntroducedExpression(final PsiFile file, final int st } @Nullable - protected S getSettings(Project project, Editor editor, JSExpression expression, final JSExpression[] occurrences) { + @RequiredUIAccess + protected S getSettings(Project project, Editor editor, JSExpression expression, JSExpression[] occurrences) { ArrayList highlighters = null; if (occurrences.length > 1) { highlighters = highlightOccurences(project, editor, occurrences); } - final D dialog = createDialog(project, expression, occurrences); + D dialog = createDialog(project, expression, occurrences); dialog.show(); if (highlighters != null) { for (RangeHighlighter highlighter : highlighters) { @@ -219,21 +223,24 @@ protected S getSettings(Project project, Editor editor, JSExpression expression, return createSettings(dialog); } - protected S createSettings(final D dialog) { + @SuppressWarnings("unchecked") + protected S createSettings(D dialog) { return (S)dialog; } - protected abstract D createDialog(final Project project, final JSExpression expression, final JSExpression[] occurrences); + protected abstract D createDialog(Project project, JSExpression expression, JSExpression[] occurrences); - private void doRefactoring(final Project project, final Editor editor, BaseIntroduceContext introduceContext) { - final S settings = introduceContext.settings; + @RequiredWriteAction + @SuppressWarnings("unchecked") + private void doRefactoring(Project project, Editor editor, BaseIntroduceContext introduceContext) { + S settings = introduceContext.settings; JSExpression expression = introduceContext.expression; - final JSExpression[] occurrences = introduceContext.occurences; + JSExpression[] occurrences = introduceContext.occurences; - final boolean replaceAllOccurences = settings.isReplaceAllOccurences(); - @NonNls String varDeclText = getDeclText(settings); - final PsiFile containingFile = expression.getContainingFile(); - final boolean ecma = false; + boolean replaceAllOccurences = settings.isReplaceAllOccurences(); + String varDeclText = getDeclText(settings); + PsiFile containingFile = expression.getContainingFile(); + boolean ecma = false; if (ecma) { String type = settings.getVariableType(); if (type == null) { @@ -250,24 +257,24 @@ private void doRefactoring(final Project project, final Editor editor, BaseIntro boolean replacedOriginal = false; - if (anchorStatement == expression.getParent() && anchorStatement instanceof JSExpressionStatement) { - declaration = (JSVarStatement)anchorStatement.replace(declaration); + if (anchorStatement == expression.getParent() && anchorStatement instanceof JSExpressionStatement anchorExpression) { + declaration = (JSVarStatement)anchorExpression.replace(declaration); editor.getCaretModel().moveToOffset(declaration.getTextRange().getEndOffset()); replacedOriginal = true; } else { JSExpression oldExpression = expression; - final TextRange expressionTextRange = expression.getTextRange(); - final TextRange statementTextRange = anchorStatement.getTextRange(); + TextRange expressionTextRange = expression.getTextRange(); + TextRange statementTextRange = anchorStatement.getTextRange(); RangeMarker marker = editor.getDocument().createRangeMarker(expressionTextRange); // Adding declaration to anchorStatement may invalidate original expression so we need to find it in new tree - final T jsStatement = addStatementBefore(anchorStatement, declaration); + T jsStatement = addStatementBefore(anchorStatement, declaration); if (!expression.isValid()) { - final T newAnchorStatement = (T)PsiTreeUtil.getNextSiblingOfType(jsStatement, anchorStatement.getClass()); - final int relativeOffset = marker.getStartOffset() - statementTextRange.getStartOffset(); + T newAnchorStatement = (T)PsiTreeUtil.getNextSiblingOfType(jsStatement, anchorStatement.getClass()); + int relativeOffset = marker.getStartOffset() - statementTextRange.getStartOffset(); JSExpression newExpression = PsiTreeUtil.getParentOfType(newAnchorStatement.findElementAt(relativeOffset), oldExpression.getClass()); @@ -299,7 +306,7 @@ private void doRefactoring(final Project project, final Editor editor, BaseIntro } } - final JSExpression refExpr = JSChangeUtil.createExpressionFromText(project, settings.getVariableName()); + JSExpression refExpr = JSChangeUtil.createExpressionFromText(project, settings.getVariableName()); if (replaceAllOccurences) { List toHighight = new ArrayList<>(); for (JSExpression occurence : occurrences) { @@ -322,7 +329,8 @@ else if (!replacedOriginal) { } } - protected JSVarStatement prepareDeclaration(final String varDeclText, BaseIntroduceContext context, final Project project) + @RequiredWriteAction + protected JSVarStatement prepareDeclaration(String varDeclText, BaseIntroduceContext context, Project project) throws IncorrectOperationException { JSVarStatement declaration = (JSVarStatement)JSChangeUtil.createStatementFromText( project, @@ -332,24 +340,25 @@ protected JSVarStatement prepareDeclaration(final String varDeclText, BaseIntrod return declaration; } - @NonNls protected String getDeclText(S settings) { return "var " + settings.getVariableName(); } - protected T addStatementBefore(final T anchorStatement, final JSVarStatement declaration) throws IncorrectOperationException { + @RequiredWriteAction + @SuppressWarnings("unchecked") + protected T addStatementBefore(T anchorStatement, JSVarStatement declaration) throws IncorrectOperationException { return (T)((JSStatement)anchorStatement).addStatementBefore(declaration); } - protected T findAnchor(final BaseIntroduceContext context, final boolean replaceAllOccurences) { - JSStatement anchorStatement = replaceAllOccurences ? getAnchorToInsert(context.occurences) : PsiTreeUtil.getParentOfType( - context.expression, - JSStatement.class - ); - if (anchorStatement instanceof JSVarStatement && - anchorStatement.getParent() instanceof JSStatement && - !(anchorStatement.getParent() instanceof JSBlockStatement)) { - anchorStatement = (JSStatement)anchorStatement.getParent(); + @SuppressWarnings("unchecked") + protected T findAnchor(BaseIntroduceContext context, boolean replaceAllOccurences) { + JSStatement anchorStatement = replaceAllOccurences + ? getAnchorToInsert(context.occurences) + : PsiTreeUtil.getParentOfType(context.expression, JSStatement.class); + if (anchorStatement instanceof JSVarStatement varStatement + && varStatement.getParent() instanceof JSStatement statement + && !(statement instanceof JSBlockStatement)) { + anchorStatement = statement; } return (T)anchorStatement; } @@ -364,14 +373,14 @@ private static ArrayList highlightOccurences(Project project, return result; } - private static JSStatement getAnchorToInsert(final JSExpression[] expressions) { + private static JSStatement getAnchorToInsert(JSExpression[] expressions) { JSElement place = expressions[0]; next: do { JSStatement statement = PsiTreeUtil.getParentOfType(place, JSStatement.class); //this is the first expression textually LOG.assertTrue(statement != null); - final PsiElement parent = statement.getParent(); + PsiElement parent = statement.getParent(); for (JSExpression expression : expressions) { if (!PsiTreeUtil.isAncestor(parent, expression, true)) { place = statement; @@ -384,10 +393,10 @@ private static JSStatement getAnchorToInsert(final JSExpression[] expressions) { while (true); } - protected static JSElement findClassAnchor(final PsiElement expression) { + protected static JSElement findClassAnchor(PsiElement expression) { PsiElement nearestParent = PsiTreeUtil.getParentOfType(expression, JSVarStatement.class, JSFunction.class); while (nearestParent != null) { - final PsiElement nextParent = PsiTreeUtil.getParentOfType(nearestParent, JSVarStatement.class, JSFunction.class); + PsiElement nextParent = PsiTreeUtil.getParentOfType(nearestParent, JSVarStatement.class, JSFunction.class); if (nextParent == null) { break; } @@ -400,28 +409,24 @@ protected static JSElement findClassAnchor(final PsiElement expression) { JSElement parent = PsiTreeUtil.getParentOfType(expression, JSFile.class, JSClass.class); - if (parent instanceof JSFile) { - final PsiElement classRef = JSResolveUtil.getClassReferenceForXmlFromContext(parent); - if (classRef instanceof JSClass jsClass) { - parent = jsClass; - } + if (parent instanceof JSFile jsFile && JSResolveUtil.getClassReferenceForXmlFromContext(jsFile) instanceof JSClass jsClass) { + parent = jsClass; } return parent; } - protected static JSElement addToClassAnchor( - final JSElement anchorStatement, - final JSVarStatement declaration - ) throws IncorrectOperationException { + @RequiredWriteAction + protected static JSElement addToClassAnchor(JSElement anchorStatement, JSVarStatement declaration) throws IncorrectOperationException { if (!(anchorStatement instanceof JSClass)) { - final JSElement element = findClassAnchor(anchorStatement); + JSElement element = findClassAnchor(anchorStatement); return (JSElement)element.addBefore(declaration, anchorStatement); } return (JSElement)anchorStatement.add(declaration); } @Override + @RequiredUIAccess public void invoke(@Nonnull Project project, @Nonnull PsiElement[] elements, DataContext dataContext) { throw new RuntimeException("Not implemented"); } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSNamesValidator.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSNamesValidator.java index 86d9beb1..6fed157e 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSNamesValidator.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSNamesValidator.java @@ -24,11 +24,8 @@ import consulo.language.editor.refactoring.NamesValidator; /** - * Created by IntelliJ IDEA. - * User: Maxim.Mossienko - * Date: Jun 27, 2006 - * Time: 8:28:35 PM - * To change this template use File | Settings | File Templates. + * @author Maxim.Mossienko + * @since 2006-06-27 */ abstract class JSNamesValidator implements NamesValidator { protected final Lexer myLexer; @@ -37,7 +34,7 @@ abstract class JSNamesValidator implements NamesValidator { myLexer = createLexer(optionHolder); } - protected Lexer createLexer(final DialectOptionHolder optionHolder) { + protected Lexer createLexer(DialectOptionHolder optionHolder) { return new JSFlexAdapter(false, optionHolder); } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JavascriptRefactoringSupportProvider.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JavascriptRefactoringSupportProvider.java index ba1980db..8676d7ec 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JavascriptRefactoringSupportProvider.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JavascriptRefactoringSupportProvider.java @@ -24,6 +24,7 @@ import com.intellij.lang.javascript.impl.refactoring.introduceField.JSIntroduceFieldHandler; import com.intellij.lang.javascript.impl.refactoring.introduceVariable.JSIntroduceVariableHandler; import com.intellij.lang.javascript.psi.*; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.javascript.language.JavaScriptLanguage; import consulo.language.Language; @@ -37,6 +38,7 @@ @ExtensionImpl public class JavascriptRefactoringSupportProvider extends RefactoringSupportProvider { @Override + @RequiredReadAction public boolean isSafeDeleteAvailable(PsiElement element) { boolean simpleElement = element instanceof JSFunction || element instanceof JSVariable @@ -71,7 +73,7 @@ public RefactoringActionHandler getIntroduceFieldHandler() { @Override public boolean isInplaceRenameAvailable(PsiElement element, PsiElement context) { - return element instanceof JSNamedElement && element.getUseScope() instanceof LocalSearchScope; + return element instanceof JSNamedElement namedElement && namedElement.getUseScope() instanceof LocalSearchScope; } @Nonnull diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceConstant/JSIntroduceConstantDialog.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceConstant/JSIntroduceConstantDialog.java index 1d560f59..602ae5a7 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceConstant/JSIntroduceConstantDialog.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceConstant/JSIntroduceConstantDialog.java @@ -18,6 +18,7 @@ import com.intellij.lang.javascript.impl.refactoring.JSBaseClassBasedIntroduceDialog; import com.intellij.lang.javascript.psi.JSExpression; +import consulo.annotation.access.RequiredReadAction; import consulo.javascript.localize.JavaScriptLocalize; import consulo.project.Project; @@ -25,8 +26,7 @@ /** * @author Maxim.Mossienko - * Date: Jul 24, 2008 - * Time: 8:48:34 PM + * @since 2008-07-24 */ class JSIntroduceConstantDialog extends JSBaseClassBasedIntroduceDialog implements JSIntroduceConstantSettings { private JTextField myNameField; @@ -38,7 +38,7 @@ class JSIntroduceConstantDialog extends JSBaseClassBasedIntroduceDialog implemen private JRadioButton myPublic; private JComboBox myVarType; - protected JSIntroduceConstantDialog(final Project project, final JSExpression[] occurences, final JSExpression mainOccurence) { + protected JSIntroduceConstantDialog(Project project, JSExpression[] occurences, JSExpression mainOccurence) { super(project, occurences, mainOccurence, JavaScriptLocalize.javascriptIntroduceConstantTitle()); doInit(); @@ -85,7 +85,8 @@ public JComboBox getVarTypeField() { } @Override - protected String suggestCandidateName(final JSExpression mainOccurence) { + @RequiredReadAction + protected String suggestCandidateName(JSExpression mainOccurence) { return super.suggestCandidateName(mainOccurence).toUpperCase(); } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceConstant/JSIntroduceConstantHandler.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceConstant/JSIntroduceConstantHandler.java index fb6a6e44..dacf8c47 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceConstant/JSIntroduceConstantHandler.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceConstant/JSIntroduceConstantHandler.java @@ -19,6 +19,8 @@ import com.intellij.lang.javascript.JavaScriptSupportLoader; import com.intellij.lang.javascript.impl.refactoring.JSBaseIntroduceHandler; import com.intellij.lang.javascript.psi.*; +import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.access.RequiredWriteAction; import consulo.codeEditor.Editor; import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.editor.refactoring.util.CommonRefactoringUtil; @@ -27,13 +29,13 @@ import consulo.language.util.IncorrectOperationException; import consulo.localize.LocalizeValue; import consulo.project.Project; -import consulo.util.lang.ref.Ref; -import org.jetbrains.annotations.NonNls; +import consulo.ui.annotation.RequiredUIAccess; +import consulo.util.lang.ref.SimpleReference; +import jakarta.annotation.Nonnull; /** * @author Maxim.Mossienko - * Date: May 29, 2008 - * Time: 8:20:03 PM + * @since 2008-05-29 */ public class JSIntroduceConstantHandler extends JSBaseIntroduceHandler { @Override @@ -47,17 +49,13 @@ protected LocalizeValue getCannotIntroduceMessage() { } @Override - protected JSIntroduceConstantDialog createDialog( - final Project project, - final JSExpression expression, - final JSExpression[] occurrences - ) { + protected JSIntroduceConstantDialog createDialog(Project project, JSExpression expression, JSExpression[] occurrences) { return new JSIntroduceConstantDialog(project, occurrences, expression); } @Override - protected String getDeclText(final JSIntroduceConstantSettings settings) { - @NonNls String baseDeclText = "static const " + settings.getVariableName(); + protected String getDeclText(JSIntroduceConstantSettings settings) { + String baseDeclText = "static const " + settings.getVariableName(); final JSAttributeList.AccessType type = settings.getAccessType(); if (type != JSAttributeList.AccessType.PACKAGE_LOCAL) { baseDeclText = type.toString().toLowerCase() + " " + baseDeclText; @@ -67,20 +65,19 @@ protected String getDeclText(final JSIntroduceConstantSettings settings) { } @Override - protected JSElement findAnchor(final BaseIntroduceContext context, final boolean replaceAllOccurences) { + protected JSElement findAnchor(BaseIntroduceContext context, boolean replaceAllOccurences) { return findClassAnchor(context.expression); } @Override - protected JSElement addStatementBefore( - final JSElement anchorStatement, - final JSVarStatement declaration - ) throws IncorrectOperationException { + @RequiredWriteAction + protected JSElement addStatementBefore(JSElement anchorStatement, JSVarStatement declaration) throws IncorrectOperationException { return addToClassAnchor(anchorStatement, declaration); } @Override - protected JSExpression findIntroducedExpression(final PsiFile file, final int start, final int end, Editor editor) { + @RequiredUIAccess + protected JSExpression findIntroducedExpression(PsiFile file, int start, int end, Editor editor) { if (file.getLanguage() != JavaScriptSupportLoader.ECMA_SCRIPT_L4) { CommonRefactoringUtil.showErrorHint( file.getProject(), @@ -92,20 +89,21 @@ protected JSExpression findIntroducedExpression(final PsiFile file, final int st return null; } - final JSExpression expression = super.findIntroducedExpression(file, start, end, editor); + JSExpression expression = super.findIntroducedExpression(file, start, end, editor); if (expression == null) { return null; } - final Ref hasAccesibilityProblem = new Ref(); + final SimpleReference hasAccesibilityProblem = new SimpleReference<>(); expression.accept(new JSElementVisitor() { @Override - public void visitJSReferenceExpression(final JSReferenceExpression node) { + @RequiredReadAction + public void visitJSReferenceExpression(@Nonnull JSReferenceExpression node) { if (node.getQualifier() == null) { - final PsiElement element = node.resolve(); + PsiElement element = node.resolve(); - if (element instanceof JSAttributeListOwner && !(element instanceof JSClass)) { - final JSAttributeList attributeList = ((JSAttributeListOwner)element).getAttributeList(); + if (element instanceof JSAttributeListOwner attributeListOwner && !(element instanceof JSClass)) { + JSAttributeList attributeList = attributeListOwner.getAttributeList(); if (attributeList == null || !attributeList.hasModifier(JSAttributeList.ModifierType.STATIC)) { hasAccesibilityProblem.set(Boolean.TRUE); } @@ -118,7 +116,7 @@ else if (element == null) { } @Override - public void visitJSElement(final JSElement node) { + public void visitJSElement(@Nonnull JSElement node) { node.acceptChildren(this); } }); diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceField/JSIntroduceFieldDialog.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceField/JSIntroduceFieldDialog.java index 22f7cefd..7d66126f 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceField/JSIntroduceFieldDialog.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceField/JSIntroduceFieldDialog.java @@ -19,20 +19,22 @@ import com.intellij.lang.javascript.formatter.JSCodeStyleSettings; import com.intellij.lang.javascript.impl.refactoring.JSBaseClassBasedIntroduceDialog; import com.intellij.lang.javascript.psi.*; +import consulo.annotation.access.RequiredReadAction; import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.codeStyle.CodeStyleSettingsManager; import consulo.language.psi.PsiElement; import consulo.language.psi.ResolveResult; import consulo.project.Project; +import consulo.ui.annotation.RequiredUIAccess; import consulo.util.lang.StringUtil; -import consulo.util.lang.ref.Ref; +import consulo.util.lang.ref.SimpleReference; +import jakarta.annotation.Nonnull; import javax.swing.*; /** * @author Maxim.Mossienko - * Date: Jul 24, 2008 - * Time: 8:46:13 PM + * @author 2008-07-24 */ class JSIntroduceFieldDialog extends JSBaseClassBasedIntroduceDialog implements JSIntroduceFieldSettings { private JCheckBox myReplaceAllCheckBox; @@ -50,27 +52,30 @@ class JSIntroduceFieldDialog extends JSBaseClassBasedIntroduceDialog implements private static InitializationPlace lastInitializationPlace = InitializationPlace.FieldDeclaration; - public JSIntroduceFieldDialog(final Project project, final JSExpression[] occurrences, final JSExpression expression) { + @RequiredUIAccess + public JSIntroduceFieldDialog(Project project, JSExpression[] occurrences, JSExpression expression) { super(project, occurrences, expression, JavaScriptLocalize.javascriptIntroduceFieldTitle()); doInit(); } @Override + @RequiredReadAction protected void doInit() { super.doInit(); - final Ref localContextDependent = new Ref(); + final SimpleReference localContextDependent = new SimpleReference<>(); myMainOccurence.accept(new JSElementVisitor() { @Override - public void visitJSReferenceExpression(final JSReferenceExpression node) { + @RequiredReadAction + public void visitJSReferenceExpression(@Nonnull JSReferenceExpression node) { if (node.getQualifier() == null) { - final ResolveResult[] results = node.multiResolve(true); + ResolveResult[] results = node.multiResolve(true); if (results.length == 0) { localContextDependent.set(Boolean.TRUE); } else { - final PsiElement element = results[0].getElement(); - if (element instanceof JSVariable && !(element.getParent().getParent() instanceof JSClass)) { + PsiElement element = results[0].getElement(); + if (element instanceof JSVariable variable && !(variable.getParent().getParent() instanceof JSClass)) { localContextDependent.set(Boolean.TRUE); } } @@ -79,7 +84,7 @@ public void visitJSReferenceExpression(final JSReferenceExpression node) { } @Override - public void visitJSElement(final JSElement node) { + public void visitJSElement(@Nonnull JSElement node) { node.acceptChildren(this); } }); @@ -147,16 +152,18 @@ public InitializationPlace getInitializationPlace() { } @Override + @RequiredUIAccess protected void doOKAction() { super.doOKAction(); lastInitializationPlace = getInitializationPlace(); } @Override - protected String suggestCandidateName(final JSExpression mainOccurence) { - final String s = super.suggestCandidateName(mainOccurence); - final JSCodeStyleSettings jsCodeStyleSettings = CodeStyleSettingsManager.getSettings(mainOccurence.getProject()).getCustomSettings - (JSCodeStyleSettings.class); + @RequiredReadAction + protected String suggestCandidateName(JSExpression mainOccurence) { + String s = super.suggestCandidateName(mainOccurence); + JSCodeStyleSettings jsCodeStyleSettings = CodeStyleSettingsManager.getSettings(mainOccurence.getProject()) + .getCustomSettings(JSCodeStyleSettings.class); if (jsCodeStyleSettings.FIELD_PREFIX.length() > 0) { return jsCodeStyleSettings.FIELD_PREFIX + s; } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceField/JSIntroduceFieldHandler.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceField/JSIntroduceFieldHandler.java index 0440d94c..d045fb06 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceField/JSIntroduceFieldHandler.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceField/JSIntroduceFieldHandler.java @@ -21,6 +21,7 @@ import com.intellij.lang.javascript.impl.refactoring.JSBaseIntroduceHandler; import com.intellij.lang.javascript.psi.*; import com.intellij.lang.javascript.psi.impl.JSChangeUtil; +import consulo.annotation.access.RequiredWriteAction; import consulo.codeEditor.Editor; import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.codeStyle.CodeStyleManager; @@ -31,13 +32,12 @@ import consulo.language.util.IncorrectOperationException; import consulo.localize.LocalizeValue; import consulo.project.Project; +import consulo.ui.annotation.RequiredUIAccess; import consulo.xml.psi.xml.XmlFile; -import org.jetbrains.annotations.NonNls; /** * @author Maxim.Mossienko - * Date: May 29, 2008 - * Time: 8:20:03 PM + * @since 2008-05-29 */ public class JSIntroduceFieldHandler extends JSBaseIntroduceHandler { @Override @@ -51,27 +51,26 @@ protected LocalizeValue getCannotIntroduceMessage() { } @Override - protected JSIntroduceFieldDialog createDialog(final Project project, final JSExpression expression, final JSExpression[] occurrences) { + @RequiredUIAccess + protected JSIntroduceFieldDialog createDialog(Project project, JSExpression expression, JSExpression[] occurrences) { return new JSIntroduceFieldDialog(project, occurrences, expression); } @Override - protected JSElement findAnchor(final BaseIntroduceContext context, final boolean replaceAllOccurences) { + protected JSElement findAnchor(BaseIntroduceContext context, boolean replaceAllOccurences) { return findClassAnchor(context.expression); } @Override - protected JSElement addStatementBefore( - final JSElement anchorStatement, - final JSVarStatement declaration - ) throws IncorrectOperationException { + @RequiredWriteAction + protected JSElement addStatementBefore(JSElement anchorStatement, JSVarStatement declaration) throws IncorrectOperationException { return addToClassAnchor(anchorStatement, declaration); } @Override protected String getDeclText(final JSIntroduceFieldSettings settings) { - @NonNls String baseDeclText = super.getDeclText(settings); - final JSAttributeList.AccessType type = settings.getAccessType(); + String baseDeclText = super.getDeclText(settings); + JSAttributeList.AccessType type = settings.getAccessType(); if (type != JSAttributeList.AccessType.PACKAGE_LOCAL) { baseDeclText = type.toString().toLowerCase() + " " + baseDeclText; } @@ -80,7 +79,8 @@ protected String getDeclText(final JSIntroduceFieldSettings settings) { } @Override - protected JSExpression findIntroducedExpression(final PsiFile file, final int start, final int end, Editor editor) { + @RequiredUIAccess + protected JSExpression findIntroducedExpression(PsiFile file, int start, int end, Editor editor) { if (file.getLanguage() != JavaScriptSupportLoader.ECMA_SCRIPT_L4) { CommonRefactoringUtil.showErrorHint( file.getProject(), @@ -96,41 +96,42 @@ protected JSExpression findIntroducedExpression(final PsiFile file, final int st } @Override + @RequiredWriteAction protected JSVarStatement prepareDeclaration( - final String varDeclText, + String varDeclText, BaseIntroduceContext context, - final Project project + Project project ) throws IncorrectOperationException { - final JSIntroduceFieldSettings.InitializationPlace place = context.settings.getInitializationPlace(); + JSIntroduceFieldSettings.InitializationPlace place = context.settings.getInitializationPlace(); if (place == JSIntroduceFieldSettings.InitializationPlace.FieldDeclaration) { return super.prepareDeclaration(varDeclText, context, project); } else { - final String assignmentText = + String assignmentText = context.settings.getVariableName() + "=" + context.expression.getText() + JSChangeUtil.getSemicolon(project); - final PsiElement psiToInsert = JSChangeUtil.createStatementFromText(project, assignmentText).getPsi(); + PsiElement psiToInsert = JSChangeUtil.createStatementFromText(project, assignmentText).getPsi(); if (place == JSIntroduceFieldSettings.InitializationPlace.CurrentMethod) { - final JSElement element = super.findAnchor(context, context.settings.isReplaceAllOccurences()); - final PsiElement parent = element.getParent(); - final PsiElement addedElement = parent.addBefore(psiToInsert, element); + JSElement element = super.findAnchor(context, context.settings.isReplaceAllOccurences()); + PsiElement parent = element.getParent(); + PsiElement addedElement = parent.addBefore(psiToInsert, element); CodeStyleManager.getInstance(project).reformatNewlyAddedElement(parent.getNode(), addedElement.getNode()); } else { PsiElement parent = PsiTreeUtil.getParentOfType(context.expression, JSClass.class, JSFile.class); - if (parent instanceof JSFile) { - final PsiFile containingFile = parent.getContext().getContainingFile(); + if (parent instanceof JSFile jsFile) { + PsiFile containingFile = jsFile.getContext().getContainingFile(); assert containingFile instanceof XmlFile; parent = XmlBackedJSClassImpl.getXmlBackedClass((XmlFile)containingFile); } assert parent instanceof JSClass; - final JSClass clazz = (JSClass)parent; + JSClass clazz = (JSClass)parent; JSFunction fun = clazz.findFunctionByName(clazz.getName()); if (fun == null) { - @NonNls String constr = "function " + clazz.getName() + "() {}"; + String constr = "function " + clazz.getName() + "() {}"; if (clazz.getAttributeList() != null && clazz.getAttributeList().getAccessType() == JSAttributeList.AccessType.PUBLIC) { constr = "public " + constr; } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceVariable/JSIntroduceVariableDialog.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceVariable/JSIntroduceVariableDialog.java index 81f2e46b..f6754041 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceVariable/JSIntroduceVariableDialog.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceVariable/JSIntroduceVariableDialog.java @@ -18,8 +18,10 @@ import com.intellij.lang.javascript.impl.refactoring.JSBaseIntroduceDialog; import com.intellij.lang.javascript.psi.JSExpression; +import consulo.annotation.access.RequiredReadAction; import consulo.javascript.localize.JavaScriptLocalize; import consulo.project.Project; +import consulo.ui.annotation.RequiredUIAccess; import consulo.util.lang.StringUtil; import javax.swing.*; @@ -41,7 +43,8 @@ public class JSIntroduceVariableDialog extends JSBaseIntroduceDialog implements private static IntroducedVarType ourLastIntroduceType = IntroducedVarType.VAR; private IntroducedVarType myIntroducedVarType; - protected JSIntroduceVariableDialog(final Project project, final JSExpression[] occurences, final JSExpression mainOccurence) { + @RequiredUIAccess + protected JSIntroduceVariableDialog(Project project, JSExpression[] occurences, JSExpression mainOccurence) { super(project, occurences, mainOccurence, JavaScriptLocalize.javascriptIntroduceVariableTitle()); if (ourLastIntroduceType == Settings.IntroducedVarType.CONST) { @@ -73,6 +76,7 @@ protected JCheckBox getReplaceAllCheckBox() { } @Override + @RequiredUIAccess protected void doOKAction() { super.doOKAction(); @@ -100,7 +104,8 @@ public IntroducedVarType getIntroducedVarType() { } @Override - protected String suggestCandidateName(final JSExpression mainOccurence) { + @RequiredReadAction + protected String suggestCandidateName(JSExpression mainOccurence) { return StringUtil.decapitalize(super.suggestCandidateName(mainOccurence)); } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceVariable/JSIntroduceVariableHandler.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceVariable/JSIntroduceVariableHandler.java index 657e4707..37a1b58d 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceVariable/JSIntroduceVariableHandler.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceVariable/JSIntroduceVariableHandler.java @@ -22,6 +22,7 @@ import consulo.javascript.localize.JavaScriptLocalize; import consulo.localize.LocalizeValue; import consulo.project.Project; +import consulo.ui.annotation.RequiredUIAccess; /** * @author ven @@ -43,11 +44,8 @@ protected String getDeclText(Settings settings) { } @Override - protected JSIntroduceVariableDialog createDialog( - final Project project, - final JSExpression expression, - final JSExpression[] occurrences - ) { + @RequiredUIAccess + protected JSIntroduceVariableDialog createDialog(Project project, JSExpression expression, JSExpression[] occurrences) { return new JSIntroduceVariableDialog(project, occurrences, expression); } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSDeclarationRangeHandler.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSDeclarationRangeHandler.java index 2871ba11..315a3711 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSDeclarationRangeHandler.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSDeclarationRangeHandler.java @@ -17,6 +17,7 @@ package com.intellij.lang.javascript.impl.search; import com.intellij.lang.javascript.psi.JSNamedElement; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.document.util.TextRange; import consulo.language.editor.hint.DeclarationRangeHandler; @@ -36,12 +37,13 @@ public Class getElementClass() { return JSNamedElement.class; } - @Override @Nonnull + @Override + @RequiredReadAction public TextRange getDeclarationRange(@Nonnull JSNamedElement namedElement) { - final TextRange textRange = namedElement.getTextRange(); - final PsiElement nameIdentifier = namedElement.getNameIdentifier(); - final TextRange nameIdentifierRange = nameIdentifier != null ? nameIdentifier.getTextRange() : null; + TextRange textRange = namedElement.getTextRange(); + PsiElement nameIdentifier = namedElement.getNameIdentifier(); + TextRange nameIdentifierRange = nameIdentifier != null ? nameIdentifier.getTextRange() : null; int startOffset = nameIdentifierRange != null ? nameIdentifierRange.getStartOffset() : textRange.getStartOffset(); int endOffset = nameIdentifierRange != null ? nameIdentifierRange.getEndOffset() : textRange.getEndOffset(); diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSDefinitionsSearchExecutor.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSDefinitionsSearchExecutor.java index 2dd89ac1..c62edcbb 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSDefinitionsSearchExecutor.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSDefinitionsSearchExecutor.java @@ -22,6 +22,7 @@ import com.intellij.lang.javascript.psi.JSFunction; import com.intellij.lang.javascript.psi.JSReferenceExpression; import com.intellij.lang.javascript.search.JSClassSearch; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.application.util.function.Processor; import consulo.javascript.language.JavaScriptLanguage; @@ -37,29 +38,29 @@ /** * @author Maxim.Mossienko - * Date: Apr 28, 2008 - * Time: 8:34:30 PM + * @since 2008-04-28 */ @ExtensionImpl public class JSDefinitionsSearchExecutor implements DefinitionsScopedSearchExecutor { @Override + @RequiredReadAction public boolean execute( @Nonnull final DefinitionsScopedSearch.SearchParameters parameters, @Nonnull final Processor consumer ) { final PsiElement sourceElement = parameters.getElement(); - if (sourceElement instanceof PsiNamedElement && sourceElement.getLanguage().isKindOf(JavaScriptLanguage.INSTANCE)) { + if (sourceElement instanceof PsiNamedElement namedElement && namedElement.getLanguage().isKindOf(JavaScriptLanguage.INSTANCE)) { ReferencesSearch.search(sourceElement, GlobalSearchScope.projectScope(sourceElement.getProject())).forEach(t -> { - if (t instanceof JSReferenceExpression referenceExpression) { - final PsiElement parent = referenceExpression.getParent(); - final ResolveResult[] resolveResults = referenceExpression.multiResolve(true); + if (t instanceof JSReferenceExpression refExpr) { + PsiElement parent = refExpr.getParent(); + ResolveResult[] resolveResults = refExpr.multiResolve(true); for (ResolveResult r : resolveResults) { PsiElement psiElement = r.getElement(); - if (psiElement != null && - !JavaScriptIndex.isFromPredefinedFile(psiElement.getContainingFile()) && - sourceElement != psiElement) { + if (psiElement != null + && !JavaScriptIndex.isFromPredefinedFile(psiElement.getContainingFile()) + && sourceElement != psiElement) { if (psiElement instanceof JSFunction fun && sourceElement instanceof JSFunction sourceFun) { if ((sourceFun.isGetProperty() && fun.isSetProperty()) || (sourceFun.isSetProperty() && fun.isGetProperty())) { return true; @@ -80,7 +81,7 @@ public boolean execute( }); if (sourceElement instanceof JSClass clazz) { - final Processor delegatingProcessor = jsClass -> consumer.process(jsClass); + Processor delegatingProcessor = consumer::process; JSClassSearch.searchClassInheritors(clazz, true).forEach(delegatingProcessor); if (clazz.isInterface()) { @@ -88,10 +89,10 @@ public boolean execute( } } else if (sourceElement instanceof JSFunction baseFunction) { - final Processor delegatingProcessor = jsFunction -> consumer.process(jsFunction); + Processor delegatingProcessor = consumer::process; JSFunctionsSearch.searchOverridingFunctions(baseFunction, true).forEach(delegatingProcessor); - final PsiElement parent = baseFunction.getParent(); + PsiElement parent = baseFunction.getParent(); if (parent instanceof JSClass jsClass && jsClass.isInterface()) { JSFunctionsSearch.searchImplementingFunctions(baseFunction, true).forEach(delegatingProcessor); } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSFunctionsSearch.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSFunctionsSearch.java index f7df2064..da3c2c11 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSFunctionsSearch.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSFunctionsSearch.java @@ -20,18 +20,20 @@ import com.intellij.lang.javascript.psi.JSFunction; import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; import com.intellij.lang.javascript.search.JSClassSearch; +import consulo.annotation.access.RequiredReadAction; import consulo.application.util.function.Processor; import consulo.application.util.query.Query; import consulo.application.util.query.QueryExecutor; import consulo.application.util.query.QueryFactory; import consulo.language.psi.PsiElement; +import jakarta.annotation.Nonnull; public abstract class JSFunctionsSearch implements QueryExecutor { public static class SearchParameters { private JSFunction myBaseFunction; private boolean myCheckDeepInheritance; - public SearchParameters(final JSFunction baseFunction, final boolean checkDeepInheritance) { + public SearchParameters(JSFunction baseFunction, boolean checkDeepInheritance) { myBaseFunction = baseFunction; myCheckDeepInheritance = checkDeepInheritance; } @@ -45,25 +47,23 @@ public boolean isCheckDeepInheritance() { } } - public static Query searchOverridingFunctions(final JSFunction baseFunction, final boolean checkDeepInheritance) { - final SearchParameters parameters = new SearchParameters(baseFunction, checkDeepInheritance); + public static Query searchOverridingFunctions(JSFunction baseFunction, boolean checkDeepInheritance) { + SearchParameters parameters = new SearchParameters(baseFunction, checkDeepInheritance); return OVERRIDDEN_FUNCTIONS_QUERY_FACTORY.createUniqueResultsQuery(parameters); } - public static Query searchImplementingFunctions(final JSFunction baseFunction, final boolean checkDeepInheritance) { - final SearchParameters parameters = new SearchParameters(baseFunction, checkDeepInheritance); + public static Query searchImplementingFunctions(JSFunction baseFunction, boolean checkDeepInheritance) { + SearchParameters parameters = new SearchParameters(baseFunction, checkDeepInheritance); return IMPLEMENTING_FUNCTIONS_QUERY_FACTORY.createUniqueResultsQuery(parameters); } - private static QueryFactory OVERRIDDEN_FUNCTIONS_QUERY_FACTORY = - new QueryFactory(); - private static QueryFactory IMPLEMENTING_FUNCTIONS_QUERY_FACTORY = - new QueryFactory(); + private static QueryFactory OVERRIDDEN_FUNCTIONS_QUERY_FACTORY = new QueryFactory<>(); + private static QueryFactory IMPLEMENTING_FUNCTIONS_QUERY_FACTORY = new QueryFactory<>(); static { OVERRIDDEN_FUNCTIONS_QUERY_FACTORY.registerExecutor(new JSFunctionsSearch() { @Override - protected Query makeQuery(final SearchParameters queryParameters, final PsiElement parent) { + protected Query makeQuery(SearchParameters queryParameters, PsiElement parent) { return JSClassSearch.searchClassInheritors((JSClass)parent, queryParameters.isCheckDeepInheritance()); } }); @@ -72,7 +72,7 @@ protected Query makeQuery(final SearchParameters queryParameters, final } @Override - public boolean execute(final SearchParameters queryParameters, final Processor consumer) { + public boolean execute(SearchParameters queryParameters, final @Nonnull Processor consumer) { final JSFunction baseFunction = queryParameters.getBaseFunction(); PsiElement clazz = JSResolveUtil.findParent(baseFunction); @@ -80,23 +80,21 @@ public boolean execute(final SearchParameters queryParameters, final Processor() { + return makeQuery(queryParameters, clazz).forEach(new Processor<>() { @Override + @RequiredReadAction public boolean process(final JSClass jsClass) { JSFunction function = jsClass.findFunctionByNameAndKind(baseFunction.getName(), baseFunction.getKind()); - if (function != null) { - return consumer.process(function); - } - return true; + return function == null || consumer.process(function); } }); } - protected abstract Query makeQuery(final SearchParameters queryParameters, final PsiElement parent); + protected abstract Query makeQuery(SearchParameters queryParameters, PsiElement parent); private static class ImplementingFunctionsSearch extends JSFunctionsSearch { @Override - protected Query makeQuery(final SearchParameters queryParameters, final PsiElement parent) { + protected Query makeQuery(SearchParameters queryParameters, PsiElement parent) { return JSClassSearch.searchInterfaceImplementations((JSClass)parent, true); } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSGotoTargetRendererProvider.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSGotoTargetRendererProvider.java index c3f10c20..cc950f91 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSGotoTargetRendererProvider.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSGotoTargetRendererProvider.java @@ -17,30 +17,30 @@ package com.intellij.lang.javascript.impl.search; import com.intellij.lang.javascript.psi.JSNamedElement; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.ide.navigation.GotoTargetRendererProvider; import consulo.language.editor.ui.PsiElementListCellRenderer; import consulo.language.psi.PsiElement; import consulo.navigation.ItemPresentation; -import consulo.navigation.NavigationItem; import jakarta.annotation.Nullable; /** * @author Maxim.Mossienko - * Date: Apr 28, 2008 - * Time: 8:14:14 PM + * @since 2008-04-28 */ @ExtensionImpl public class JSGotoTargetRendererProvider implements GotoTargetRendererProvider { static class JSClassListCellRenderer extends PsiElementListCellRenderer { @Override - public String getElementText(final JSNamedElement element) { + @RequiredReadAction + public String getElementText(JSNamedElement element) { return element.getName(); } @Override - protected String getContainerText(final JSNamedElement element, final String name) { - final ItemPresentation presentation = ((NavigationItem)element).getPresentation(); + protected String getContainerText(JSNamedElement element, String name) { + ItemPresentation presentation = element.getPresentation(); return presentation != null ? presentation.getLocationString() : null; } @@ -53,10 +53,6 @@ protected int getIconFlags() { @Nullable @Override public PsiElementListCellRenderer getRenderer(PsiElement element) { - if (!(element instanceof JSNamedElement)) { - return null; - } - - return new JSClassListCellRenderer(); + return element instanceof JSNamedElement ? new JSClassListCellRenderer() : null; } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureItemPresentation.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureItemPresentation.java index 90b11892..17f448b6 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureItemPresentation.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureItemPresentation.java @@ -28,11 +28,10 @@ /** * @author Maxim.Mossienko - * Date: Jul 23, 2008 - * Time: 6:54:27 PM + * @since 2008-07-23 */ public class JSStructureItemPresentation extends JSStructureViewElement.JSStructureItemPresentationBase { - public JSStructureItemPresentation(final JSStructureViewElement jsStructureViewElement) { + public JSStructureItemPresentation(JSStructureViewElement jsStructureViewElement) { super(jsStructureViewElement); } @@ -49,28 +48,26 @@ public String getPresentableText() { @RequiredReadAction public static String getName(@Nonnull PsiElement psiElement) { - if (psiElement instanceof JSObjectLiteralExpression) { - if (psiElement.getParent() instanceof JSAssignmentExpression assignmentExpression) { - final JSExpression expression = ((JSDefinitionExpression)assignmentExpression.getLOperand()).getExpression(); - return JSResolveUtil.findClassIdentifier(expression).getText(); + if (psiElement instanceof JSObjectLiteralExpression objectLiteral) { + if (objectLiteral.getParent() instanceof JSAssignmentExpression assignment) { + JSDefinitionExpression lOperand = (JSDefinitionExpression)assignment.getLOperand(); + return JSResolveUtil.findClassIdentifier(lOperand.getExpression()).getText(); } else { return JavaScriptLocalize.javascriptLanguageTermPrototype().get(); } } - if (psiElement instanceof JSDefinitionExpression definitionExpression) { - psiElement = definitionExpression.getExpression(); + if (psiElement instanceof JSDefinitionExpression definition) { + psiElement = definition.getExpression(); } - if (psiElement instanceof JSReferenceExpression expression) { - String s = expression.getReferencedName(); + if (psiElement instanceof JSReferenceExpression refExpr) { + String s = refExpr.getReferencedName(); - if (JSResolveUtil.PROTOTYPE_FIELD_NAME.equals(s)) { - final JSExpression jsExpression = expression.getQualifier(); - if (jsExpression instanceof JSReferenceExpression referenceExpression) { - s = referenceExpression.getReferencedName(); - } + if (JSResolveUtil.PROTOTYPE_FIELD_NAME.equals(s) + && refExpr.getQualifier() instanceof JSReferenceExpression qualifierRefExpr) { + s = qualifierRefExpr.getReferencedName(); } return s; } @@ -85,12 +82,12 @@ public static String getName(@Nonnull PsiElement psiElement) { psiElement = property.getValue(); } - if (psiElement instanceof JSFunction) { + if (psiElement instanceof JSFunction function) { if (name == null) { name = ""; } name += "("; - JSParameterList parameterList = ((JSFunction)psiElement).getParameterList(); + JSParameterList parameterList = function.getParameterList(); if (parameterList != null) { for (JSParameter p : parameterList.getParameters()) { if (!name.endsWith("(")) { @@ -105,17 +102,17 @@ public static String getName(@Nonnull PsiElement psiElement) { } name += ")"; - final String type = ((JSFunction)psiElement).getReturnTypeString(); + String type = function.getReturnTypeString(); if (type != null) { name += ":" + type; } } - if (name == null && psiElement.getParent() instanceof JSAssignmentExpression assignmentExpression) { - JSExpression lOperand = ((JSDefinitionExpression)assignmentExpression.getLOperand()).getExpression(); + if (name == null && psiElement.getParent() instanceof JSAssignmentExpression assignment) { + JSExpression lOperand = ((JSDefinitionExpression)assignment.getLOperand()).getExpression(); lOperand = JSResolveUtil.findClassIdentifier(lOperand); - if (lOperand instanceof JSReferenceExpression referenceExpression) { - return referenceExpression.getReferencedName(); + if (lOperand instanceof JSReferenceExpression lOperandRefExpr) { + return lOperandRefExpr.getReferencedName(); } return lOperand.getText(); } @@ -125,7 +122,7 @@ public static String getName(@Nonnull PsiElement psiElement) { @Override @RequiredReadAction public Image getIcon() { - final PsiElement psiElement = this.element.getRealElement(); + PsiElement psiElement = this.element.getRealElement(); if (!psiElement.isValid()) { return null; } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewBuilderFactory.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewBuilderFactory.java index e0c6677b..265e641b 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewBuilderFactory.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewBuilderFactory.java @@ -33,7 +33,7 @@ @ExtensionImpl public class JSStructureViewBuilderFactory implements PsiStructureViewFactory { @Override - public StructureViewBuilder getStructureViewBuilder(final PsiFile psiFile) { + public StructureViewBuilder getStructureViewBuilder(PsiFile psiFile) { return new TreeBasedStructureViewBuilder() { @Override @Nonnull diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewElement.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewElement.java index afe01ee2..6433b7f0 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewElement.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewElement.java @@ -16,6 +16,7 @@ package com.intellij.lang.javascript.impl.structureView; +import consulo.annotation.access.RequiredReadAction; import consulo.document.util.TextRange; import consulo.fileEditor.structureView.StructureViewTreeElement; import consulo.language.inject.InjectedLanguageManager; @@ -31,6 +32,7 @@ import consulo.util.collection.primitive.ints.IntMaps; import consulo.util.collection.primitive.ints.IntObjectMap; +import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; import java.util.*; @@ -42,7 +44,7 @@ public class JSStructureViewElement implements StructureViewTreeElement { protected PsiElement myElement; private boolean myInherited; - public JSStructureViewElement(final PsiElement element) { + public JSStructureViewElement(PsiElement element) { myElement = element; } @@ -70,27 +72,28 @@ public boolean canNavigateToSource() { return canNavigate(); } + @Nonnull @Override + @RequiredReadAction public StructureViewTreeElement[] getChildren() { - final PsiElement element = getUpToDateElement(); + PsiElement element = getUpToDateElement(); // since we use proxies for StructureViewElement then real element may invalidate due to structural change if (element == null) { return EMPTY_ARRAY; } - final Set referencedNamedIds = new HashSet(); - + Set referencedNamedIds = new HashSet<>(); List children = collectMyElements(referencedNamedIds); ArrayList elementsFromSupers = null; - if (element instanceof JSClass) { - for (JSClass clazz : ((JSClass)element).getSuperClasses()) { - final StructureViewTreeElement[] structureViewTreeElements = createStructureViewElement(clazz).getChildren(); + if (element instanceof JSClass jsClass) { + for (JSClass superClass : jsClass.getSuperClasses()) { + StructureViewTreeElement[] structureViewTreeElements = createStructureViewElement(superClass).getChildren(); if (elementsFromSupers == null) { - elementsFromSupers = new ArrayList(structureViewTreeElements.length); + elementsFromSupers = new ArrayList<>(structureViewTreeElements.length); } else { elementsFromSupers.ensureCapacity(elementsFromSupers.size() + structureViewTreeElements.length); @@ -111,10 +114,9 @@ public StructureViewTreeElement[] getChildren() { } } - - Collections.sort(children, new Comparator() { - @Override - public int compare(final StructureViewTreeElement _o1, final StructureViewTreeElement _o2) { + Collections.sort( + children, + (_o1, _o2) -> { PsiElement e = getPsiElement(_o1); PsiElement e2 = getPsiElement(_o2); @@ -125,14 +127,13 @@ public int compare(final StructureViewTreeElement _o1, final StructureViewTreeEl return offset - offset2; } - }); + ); if (elementsFromSupers != null) { - Map functionsByNames = new HashMap(); + Map functionsByNames = new HashMap<>(); for (StructureViewTreeElement child : children) { PsiElement el = getPsiElementResolveProxy(child); - if (el instanceof JSFunction) { - JSFunction function = (JSFunction)el; + if (el instanceof JSFunction function) { functionsByNames.put(function.getName(), function); } } @@ -140,8 +141,7 @@ public int compare(final StructureViewTreeElement _o1, final StructureViewTreeEl for (StructureViewTreeElement superTreeElement : elementsFromSupers) { PsiElement superElement = getPsiElementResolveProxy(superTreeElement); boolean addSuperElement = true; - if (superElement instanceof JSFunction) { - JSFunction superFunction = (JSFunction)superElement; + if (superElement instanceof JSFunction superFunction) { JSFunction function = functionsByNames.get(superFunction.getName()); if (function != null) { // TODO check signature @@ -162,49 +162,40 @@ protected JSStructureViewElement createStructureViewElement(PsiElement element) } private static PsiElement getPsiElement(StructureViewTreeElement element) { - PsiElement e; - if (element instanceof JSStructureViewElement) { - final JSStructureViewElement o1 = (JSStructureViewElement)element; - e = o1.myElement; - } - else { - e = (PsiElement)element.getValue(); - } - return e; + return element instanceof JSStructureViewElement structureViewElement + ? structureViewElement.myElement + : (PsiElement)element.getValue(); } public static PsiElement getPsiElementResolveProxy(StructureViewTreeElement element) { return getPsiElement(element); } - - protected List collectMyElements(final Set referencedNamedIds) { - final IntObjectMap offset2Element = IntMaps.newIntObjectHashMap(); + protected List collectMyElements(Set referencedNamedIds) { + IntObjectMap offset2Element = IntMaps.newIntObjectHashMap(); collectChildrenFromElement(myElement, referencedNamedIds, offset2Element); - final List children = new ArrayList(offset2Element.size()); + List children = new ArrayList<>(offset2Element.size()); offset2Element.forEach((textOffset, element) -> children.add(createStructureViewElement(element))); return children; } - private static boolean isVisible(PsiElement namedElement, final PsiElement element) { - if (namedElement instanceof JSAttributeListOwner) { - final JSAttributeListOwner attributeListOwner = (JSAttributeListOwner)namedElement; - final JSAttributeList attributeList = attributeListOwner.getAttributeList(); + @RequiredReadAction + private static boolean isVisible(PsiElement namedElement, PsiElement element) { + if (namedElement instanceof JSAttributeListOwner attributeListOwner) { + JSAttributeList attributeList = attributeListOwner.getAttributeList(); if (attributeList != null) { - final JSAttributeList.AccessType type = attributeList.getAccessType(); + JSAttributeList.AccessType type = attributeList.getAccessType(); if (type == JSAttributeList.AccessType.PACKAGE_LOCAL) { - final JSPackageStatement packageStatement = PsiTreeUtil.getParentOfType(namedElement, JSPackageStatement.class); - final JSPackageStatement packageStatement2 = PsiTreeUtil.getParentOfType(element, JSPackageStatement.class); - String packageQName; - - return packageStatement == packageStatement2 || (packageStatement != null && - packageStatement2 != null && - (packageQName = packageStatement.getQualifiedName()) != null && - packageQName.equals(packageStatement2.getQualifiedName())); + JSPackageStatement packageStatement = PsiTreeUtil.getParentOfType(namedElement, JSPackageStatement.class); + JSPackageStatement packageStatement2 = PsiTreeUtil.getParentOfType(element, JSPackageStatement.class); + + return packageStatement == packageStatement2 + || (packageStatement != null && packageStatement2 != null + && Objects.equals(packageStatement.getQualifiedName(), packageStatement2.getQualifiedName())); } return type != JSAttributeList.AccessType.PRIVATE; } @@ -213,18 +204,19 @@ private static boolean isVisible(PsiElement namedElement, final PsiElement eleme } private static void collectChildrenFromElement( - final PsiElement element, - final Set referencedNamedIds, - final IntObjectMap offset2Element + PsiElement element, + Set referencedNamedIds, + IntObjectMap offset2Element ) { element.acceptChildren(new JSElementVisitor() { Set visited; PsiElement context = element; @Override + @RequiredReadAction public void visitElement(PsiElement element) { - if (element instanceof JSNamedElement - && ((JSNamedElement)element).getName() != null + if (element instanceof JSNamedElement namedElement + && namedElement.getName() != null && !(element instanceof JSDefinitionExpression) && !(element instanceof JSLabeledStatement) && !(element instanceof JSPackageStatement) @@ -242,33 +234,33 @@ public void visitElement(PsiElement element) { } @Override - public void visitJSParameter(final JSParameter node) { + public void visitJSParameter(@Nonnull JSParameter node) { // Do not add parameters to structure view } @Override - public void visitJSIncludeDirective(final JSIncludeDirective includeDirective) { - final PsiFile file = includeDirective.resolveFile(); - if (file instanceof JSFile) { - if (visited != null && visited.contains(file)) { + @RequiredReadAction + public void visitJSIncludeDirective(@Nonnull JSIncludeDirective includeDirective) { + if (includeDirective.resolveFile() instanceof JSFile jsFile) { + if (visited != null && visited.contains(jsFile)) { return; } if (visited == null) { - visited = new HashSet(); + visited = new HashSet<>(); } - visited.add(file); + visited.add(jsFile); - final PsiElement prevContext = context; - context = file; + PsiElement prevContext = context; + context = jsFile; context.putUserData(JSResolveUtil.contextKey, element); - file.acceptChildren(this); + jsFile.acceptChildren(this); context = prevContext; } } @Override - public void visitJSObjectLiteralExpression(final JSObjectLiteralExpression node) { - final PsiElement parent = node.getParent(); + public void visitJSObjectLiteralExpression(@Nonnull JSObjectLiteralExpression node) { + PsiElement parent = node.getParent(); if (parent instanceof JSVariable || parent instanceof JSProperty || parent instanceof JSFile @@ -277,8 +269,8 @@ public void visitJSObjectLiteralExpression(final JSObjectLiteralExpression node) node.acceptChildren(this); return; } - if (parent instanceof JSArgumentList) { - final JSElement expression = JSSymbolUtil.findQualifyingExpressionFromArgumentList((JSArgumentList)parent); + if (parent instanceof JSArgumentList argumentList) { + JSElement expression = JSSymbolUtil.findQualifyingExpressionFromArgumentList(argumentList); if (expression != null) { return; } @@ -290,7 +282,7 @@ public void visitJSObjectLiteralExpression(final JSObjectLiteralExpression node) } @Override - public void visitJSVariable(final JSVariable node) { + public void visitJSVariable(@Nonnull JSVariable node) { if (element instanceof JSFunction) { return; } @@ -298,35 +290,37 @@ public void visitJSVariable(final JSVariable node) { } @Override - public void visitJSAssignmentExpression(final JSAssignmentExpression node) { + @RequiredReadAction + public void visitJSAssignmentExpression(@Nonnull JSAssignmentExpression node) { JSExpression rOperand = node.getROperand(); - final JSExpression lOperand = node.getLOperand(); + JSExpression lOperand = node.getLOperand(); - final boolean outsideFunction = PsiTreeUtil.getParentOfType(node, JSFunction.class) == null; + boolean outsideFunction = PsiTreeUtil.getParentOfType(node, JSFunction.class) == null; if (!outsideFunction) { return; } - if (rOperand instanceof JSCallExpression) { - rOperand = ((JSCallExpression)rOperand).getMethodExpression(); + if (rOperand instanceof JSCallExpression call) { + rOperand = call.getMethodExpression(); } - if (rOperand instanceof JSFunction) { + if (rOperand instanceof JSFunction function) { JSExpression qualifier = null; - final JSExpression operand = ((JSDefinitionExpression)lOperand).getExpression(); + JSExpression operand = ((JSDefinitionExpression)lOperand).getExpression(); - if (operand instanceof JSReferenceExpression) { - qualifier = ((JSReferenceExpression)operand).getQualifier(); + if (operand instanceof JSReferenceExpression operandRefExpr) { + qualifier = operandRefExpr.getQualifier(); } - if ((qualifier == null || qualifier instanceof JSThisExpression)) { - addElement(rOperand); + if (qualifier == null || qualifier instanceof JSThisExpression) { + addElement(function); } } else if (lOperand != null) { - final JSExpression operand = ((JSDefinitionExpression)lOperand).getExpression(); - if (operand instanceof JSReferenceExpression && ((JSReferenceExpression)operand).getQualifier() instanceof JSThisExpression) { - final PsiElement resolved = ((JSReferenceExpression)operand).resolve(); + JSExpression operand = ((JSDefinitionExpression)lOperand).getExpression(); + if (operand instanceof JSReferenceExpression operandRefExpr + && operandRefExpr.getQualifier() instanceof JSThisExpression) { + PsiElement resolved = operandRefExpr.resolve(); if (resolved == lOperand) { addElement(lOperand); } @@ -335,9 +329,10 @@ else if (lOperand != null) { } } - private void addElement(final PsiElement lOperand) { - if (lOperand instanceof JSNamedElement) { - final String namedId = ((JSNamedElement)lOperand).getName(); + @RequiredReadAction + private void addElement(PsiElement lOperand) { + if (lOperand instanceof JSNamedElement namedElement) { + String namedId = namedElement.getName(); if (referencedNamedIds.contains(namedId)) { return; } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewModel.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewModel.java index d82f7a40..ba4e1634 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewModel.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewModel.java @@ -18,6 +18,7 @@ import com.intellij.lang.javascript.index.JavaScriptIndex; import com.intellij.lang.javascript.psi.*; +import consulo.annotation.access.RequiredReadAction; import consulo.application.AllIcons; import consulo.codeEditor.Editor; import consulo.fileEditor.structureView.StructureViewTreeElement; @@ -32,44 +33,40 @@ import consulo.platform.base.icon.PlatformIconGroup; import consulo.ui.ex.action.Shortcut; import consulo.ui.ex.keymap.KeymapManager; -import consulo.util.lang.ref.Ref; -import org.jetbrains.annotations.NonNls; - +import consulo.util.lang.ref.SimpleReference; import jakarta.annotation.Nonnull; import java.util.Comparator; -import java.util.List; /** - * @by max, maxim + * @author max + * @author maxim */ public class JSStructureViewModel extends TextEditorBasedStructureViewModel { private PsiElement myRoot; private Filter[] myFilters = new Filter[]{ ourFieldsFilter, - ourInheritedFilter + INHERITED_FILTER }; - @NonNls private static final String ID = "KIND"; private static Sorter ourKindSorter = new Sorter() { private Comparator myComparator = new Comparator() { @Override - public int compare(final Object o, final Object o2) { + @RequiredReadAction + public int compare(Object o, Object o2) { return getWeight(o) - getWeight(o2); } - private int getWeight(final Object s) { + @RequiredReadAction + private int getWeight(Object s) { if (s instanceof JSSuperGroup) { return 5; } Object o = ((StructureViewTreeElement)s).getValue(); - if (o instanceof JSProperty) { - JSElement propertyValue = ((JSProperty)o).getValue(); - if (propertyValue instanceof JSFunction) { - o = propertyValue; - } + if (o instanceof JSProperty property && property.getValue() instanceof JSFunction function) { + o = function; } if (o instanceof JSClass) { @@ -108,23 +105,18 @@ public String getName() { }; private static Filter ourFieldsFilter = new Filter() { - @NonNls public static final String ID = "SHOW_FIELDS"; @Override + @RequiredReadAction public boolean isVisible(TreeElement treeNode) { - if (!(treeNode instanceof JSStructureViewElement)) { - return true; + if (treeNode instanceof JSStructureViewElement structureViewElement) { + PsiElement element = structureViewElement.getRealElement(); + return element instanceof JSClass || element instanceof JSFunction + || (element instanceof JSProperty property && property.getValue() instanceof JSFunction) + || element instanceof JSObjectLiteralExpression; } - final PsiElement element = ((JSStructureViewElement)treeNode).getRealElement(); - - if (element instanceof JSClass) { - return true; - } - - return element instanceof JSFunction || - (element instanceof JSProperty && ((JSProperty)element).getValue() instanceof JSFunction) || - element instanceof JSObjectLiteralExpression; + return true; } @Override @@ -145,18 +137,12 @@ public String getName() { } }; - private static final Filter ourInheritedFilter = new FileStructureFilter() { - @NonNls + private static final Filter INHERITED_FILTER = new FileStructureFilter() { public static final String ID = "SHOW_INHERITED"; @Override public boolean isVisible(TreeElement treeNode) { - if (treeNode instanceof JSStructureViewElement) { - return !((JSStructureViewElement)treeNode).isInherited(); - } - else { - return true; - } + return !(treeNode instanceof JSStructureViewElement structureViewElement && structureViewElement.isInherited()); } @Override @@ -191,12 +177,9 @@ public Shortcut[] getShortcut() { } }; - private static Grouper myInheritedGrouper = new JSSuperGrouper(); + private static final Grouper INHERITED_GROUPER = new JSSuperGrouper(); - private Grouper[] myGroupers = new Grouper[]{ - myInheritedGrouper - }; - private final Class[] myClasses = new Class[]{ + private static final Class[] SUITABLE_CLASSES = new Class[]{ JSFunction.class, JSVariable.class, JSDefinitionExpression.class, @@ -204,12 +187,15 @@ public Shortcut[] getShortcut() { JSProperty.class }; - public JSStructureViewModel(final PsiElement root) { + private Grouper[] myGroupers = new Grouper[]{INHERITED_GROUPER}; + + + public JSStructureViewModel(PsiElement root) { super(root.getContainingFile()); myRoot = root; } - public JSStructureViewModel(PsiElement root, final Editor editor) { + public JSStructureViewModel(PsiElement root, Editor editor) { super(editor); myRoot = root; } @@ -239,38 +225,36 @@ public Filter[] getFilters() { } @Override - protected boolean isSuitable(final PsiElement element) { + protected boolean isSuitable(PsiElement element) { return super.isSuitable(element) - && (!(element instanceof JSVariable) || PsiTreeUtil.getParentOfType(element, JSFunction.class) == null); + && !(element instanceof JSVariable variable && PsiTreeUtil.getParentOfType(variable, JSFunction.class) != null); } @Override + @RequiredReadAction public Object getCurrentEditorElement() { Object editorElement = super.getCurrentEditorElement(); - final PsiFile file = getPsiFile(); + PsiFile file = getPsiFile(); if (editorElement == null && !(file instanceof JSFile)) { final int offset = getEditor().getCaretModel().getOffset(); - final PsiElement at = file.findElementAt(offset); - final PsiLanguageInjectionHost injectionHost = PsiTreeUtil.getParentOfType(at, PsiLanguageInjectionHost.class); + PsiElement at = file.findElementAt(offset); + PsiLanguageInjectionHost injectionHost = PsiTreeUtil.getParentOfType(at, PsiLanguageInjectionHost.class); if (injectionHost != null) { - final Ref ref = new Ref(); + final SimpleReference ref = new SimpleReference<>(); InjectedLanguageManager.getInstance(file.getProject()).enumerate( injectionHost, - new PsiLanguageInjectionHost.InjectedPsiVisitor() { - @Override - public void visit(@Nonnull final PsiFile injectedPsi, @Nonnull final List places) { - final PsiLanguageInjectionHost.Shred shred = places.get(0); - final int injectedStart = shred.getRangeInsideHost().getStartOffset() + shred.getHost().getTextOffset(); - final int offsetInInjected = offset - injectedStart; - - ref.set(injectedPsi.findElementAt(offsetInInjected)); - } + (injectedPsi, places) -> { + PsiLanguageInjectionHost.Shred shred = places.get(0); + int injectedStart = shred.getRangeInsideHost().getStartOffset() + shred.getHost().getTextOffset(); + int offsetInInjected = offset - injectedStart; + + ref.set(injectedPsi.findElementAt(offsetInInjected)); } ); - final PsiElement element = ref.get(); + PsiElement element = ref.get(); if (element != null) { editorElement = findAcceptableElement(element); return editorElement; @@ -278,30 +262,25 @@ public void visit(@Nonnull final PsiFile injectedPsi, @Nonnull final List myChildren; - public JSSuperGroup(final String name) { + public JSSuperGroup(String name) { myName = name; - myChildren = new ArrayList(); + myChildren = new ArrayList<>(); } @Override @@ -63,7 +63,7 @@ public String getLocationString() { @Override @Nullable public Image getIcon() { - return AllIcons.General.InheritedMethod; + return PlatformIconGroup.hierarchySubtypes(); } void addChild(TreeElement element) { diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSSuperGrouper.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSSuperGrouper.java index e779c2ca..d0813dfa 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSSuperGrouper.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSSuperGrouper.java @@ -16,18 +16,18 @@ package com.intellij.lang.javascript.impl.structureView; -import consulo.fileEditor.structureView.tree.*; -import consulo.ide.localize.IdeLocalize; -import consulo.project.ui.view.tree.AbstractTreeNode; import com.intellij.lang.javascript.psi.JSClass; import com.intellij.lang.javascript.psi.JSFunction; import com.intellij.lang.javascript.psi.JSVarStatement; import com.intellij.lang.javascript.psi.JSVariable; import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; +import consulo.annotation.access.RequiredReadAction; +import consulo.fileEditor.structureView.tree.*; +import consulo.ide.localize.IdeLocalize; import consulo.language.psi.PsiElement; import consulo.platform.base.icon.PlatformIconGroup; +import consulo.project.ui.view.tree.AbstractTreeNode; import jakarta.annotation.Nonnull; -import org.jetbrains.annotations.NonNls; import java.util.Collection; import java.util.Collections; @@ -38,50 +38,52 @@ * @author Maxim.Mossienko */ class JSSuperGrouper implements Grouper { - @NonNls private static final String SHOW_CLASSES = "SHOW_CLASSES"; - @Override @Nonnull - public Collection group(final Object parent, final Collection children) { - if (isParentGrouped((AbstractTreeNode)parent)) { + @Override + @RequiredReadAction + public Collection group(Object parent, Collection children) { + AbstractTreeNode parentNode = (AbstractTreeNode)parent; + if (isParentGrouped(parentNode)) { return Collections.emptyList(); } - final Map groups = new HashMap<>(); + Map groups = new HashMap<>(); for (TreeElement _child : children) { if (!(_child instanceof JSStructureViewElement)) { continue; } JSStructureViewElement child = (JSStructureViewElement)_child; - final PsiElement value = child.getValue(); + PsiElement value = child.getValue(); - if (value instanceof JSVariable) { + if (value instanceof JSVariable variable) { if (!child.isInherited()) { continue; } - PsiElement parentElement = value.getParent(); - if (parentElement instanceof JSVarStatement) { - parentElement = parentElement.getParent(); + PsiElement parentElement = variable.getParent(); + if (parentElement instanceof JSVarStatement varStatement) { + parentElement = varStatement.getParent(); } if (parentElement instanceof JSClass jsClass) { addGroup(groups, _child, jsClass.getQualifiedName()); } } - else if (value instanceof JSFunction) { - processFunction((JSStructureViewElement)((AbstractTreeNode)parent).getValue(), groups, _child, value); + else if (value instanceof JSFunction function) { + processFunction((JSStructureViewElement)parentNode.getValue(), groups, _child, function); } } return groups.values(); } + @RequiredReadAction private static void processFunction( JSStructureViewElement parentElement, Map groups, TreeElement _child, PsiElement value ) { - final PsiElement element = JSStructureViewElement.getPsiElementResolveProxy(parentElement); + PsiElement element = JSStructureViewElement.getPsiElementResolveProxy(parentElement); if (element instanceof JSClass parentClass) { JSClass declaringClass = JSResolveUtil.findDeclaringClass((JSFunction)value); if (parentClass != declaringClass) { @@ -90,7 +92,7 @@ private static void processFunction( } } - private static void addGroup(final Map groups, final TreeElement _child, final String qName) { + private static void addGroup(Map groups, TreeElement _child, String qName) { JSSuperGroup group = (JSSuperGroup)groups.get(qName); if (group == null) { groups.put(qName, group = new JSSuperGroup(qName)); diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSExpressionSurroundDescriptor.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSExpressionSurroundDescriptor.java index c4f9b9ac..7553bc8e 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSExpressionSurroundDescriptor.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSExpressionSurroundDescriptor.java @@ -19,6 +19,7 @@ import com.intellij.lang.javascript.psi.JSCallExpression; import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.lang.javascript.psi.JSReferenceExpression; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.javascript.language.JavaScriptLanguage; import consulo.language.Language; @@ -31,9 +32,8 @@ import jakarta.annotation.Nonnull; /** - * User: yole - * Date: 12.07.2005 - * Time: 12:46:24 + * @author yole + * @since 2005-07-12 */ @ExtensionImpl public class JSExpressionSurroundDescriptor implements SurroundDescriptor { @@ -43,6 +43,7 @@ public class JSExpressionSurroundDescriptor implements SurroundDescriptor { @Override @Nonnull + @RequiredReadAction public PsiElement[] getElementsToSurround(PsiFile file, int startOffset, int endOffset) { final JSExpression expr = findExpressionInRange(file, startOffset, endOffset); if (expr == null) { @@ -62,14 +63,15 @@ public boolean isExclusive() { return false; } + @RequiredReadAction private static JSExpression findExpressionInRange(PsiFile file, int startOffset, int endOffset) { PsiElement element1 = file.findElementAt(startOffset); PsiElement element2 = file.findElementAt(endOffset - 1); - if (element1 instanceof PsiWhiteSpace) { - startOffset = element1.getTextRange().getEndOffset(); + if (element1 instanceof PsiWhiteSpace whiteSpace) { + startOffset = whiteSpace.getTextRange().getEndOffset(); } - if (element2 instanceof PsiWhiteSpace) { - endOffset = element2.getTextRange().getStartOffset(); + if (element2 instanceof PsiWhiteSpace whiteSpace) { + endOffset = whiteSpace.getTextRange().getStartOffset(); } JSExpression expression = PsiTreeUtil.findElementOfClassAtRange(file, startOffset, endOffset, JSExpression.class); if (expression == null || expression.getTextRange().getEndOffset() != endOffset) { diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSStatementSurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSStatementSurrounder.java index f70002a6..d14f1cd3 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSStatementSurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSStatementSurrounder.java @@ -16,20 +16,18 @@ package com.intellij.lang.javascript.impl.surroundWith; -import jakarta.annotation.Nonnull; - +import com.intellij.lang.javascript.psi.impl.JSChangeUtil; +import consulo.annotation.access.RequiredReadAction; import consulo.codeEditor.Editor; +import consulo.document.util.TextRange; +import consulo.language.ast.ASTNode; import consulo.language.codeStyle.CodeStyleManager; import consulo.language.editor.surroundWith.Surrounder; -import consulo.project.Project; +import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; -import org.jetbrains.annotations.NonNls; - +import consulo.project.Project; +import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; -import consulo.language.ast.ASTNode; -import com.intellij.lang.javascript.psi.impl.JSChangeUtil; -import consulo.document.util.TextRange; -import consulo.language.psi.PsiElement; /** * @author yole @@ -43,32 +41,34 @@ public boolean isApplicable(@Nonnull PsiElement[] elements) { @Override @Nullable + @RequiredReadAction public TextRange surroundElements(@Nonnull Project project, @Nonnull Editor editor, @Nonnull PsiElement[] elements) throws IncorrectOperationException { ASTNode node = JSChangeUtil.createStatementFromText(project, getStatementTemplate(project, elements[0])); PsiElement container = elements[0].getParent(); container.getNode().addChild(node, elements[0].getNode()); - final ASTNode insertBeforeNode = getInsertBeforeNode(node); + ASTNode insertBeforeNode = getInsertBeforeNode(node); - for (int i = 0; i < elements.length; i++) { - final ASTNode childNode = elements[i].getNode(); + for (PsiElement element : elements) { + final ASTNode childNode = element.getNode(); final ASTNode childNodeCopy = childNode.copyElement(); container.getNode().removeChild(childNode); insertBeforeNode.getTreeParent().addChild(childNodeCopy, insertBeforeNode); } - final CodeStyleManager csManager = CodeStyleManager.getInstance(project); + CodeStyleManager csManager = CodeStyleManager.getInstance(project); csManager.reformat(node.getPsi()); return getSurroundSelectionRange(node); } - @NonNls - protected abstract String getStatementTemplate(final Project project, PsiElement context); + protected abstract String getStatementTemplate(Project project, PsiElement context); - protected abstract ASTNode getInsertBeforeNode(final ASTNode statementNode); + @RequiredReadAction + protected abstract ASTNode getInsertBeforeNode(ASTNode statementNode); - protected abstract TextRange getSurroundSelectionRange(final ASTNode statementNode); + @RequiredReadAction + protected abstract TextRange getSurroundSelectionRange(ASTNode statementNode); } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSStatementsSurroundDescriptor.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSStatementsSurroundDescriptor.java index 533fe40a..aa71ff34 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSStatementsSurroundDescriptor.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSStatementsSurroundDescriptor.java @@ -20,6 +20,7 @@ import com.intellij.lang.javascript.psi.JSFile; import com.intellij.lang.javascript.psi.JSStatement; import com.intellij.lang.javascript.psi.impl.JSEmbeddedContentImpl; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.javascript.language.JavaScriptLanguage; import consulo.language.Language; @@ -60,6 +61,7 @@ public class JSStatementsSurroundDescriptor implements SurroundDescriptor { @Override @Nonnull + @RequiredReadAction public PsiElement[] getElementsToSurround(PsiFile file, int startOffset, int endOffset) { final PsiElement[] statements = findStatementsInRange(file, startOffset, endOffset); if (statements == null) { @@ -79,23 +81,26 @@ public boolean isExclusive() { return false; } + @RequiredReadAction private PsiElement[] findStatementsInRange(PsiFile file, int startOffset, int endOffset) { PsiElement element1 = file.findElementAt(startOffset); PsiElement element2 = file.findElementAt(endOffset - 1); - if (element1 instanceof PsiWhiteSpace) { - startOffset = element1.getTextRange().getEndOffset(); + if (element1 instanceof PsiWhiteSpace whiteSpace) { + startOffset = whiteSpace.getTextRange().getEndOffset(); element1 = file.findElementAt(startOffset); } - if (element2 instanceof PsiWhiteSpace) { - endOffset = element2.getTextRange().getStartOffset(); + + if (element2 instanceof PsiWhiteSpace whiteSpace) { + endOffset = whiteSpace.getTextRange().getStartOffset(); element2 = file.findElementAt(endOffset - 1); } + if (element1 == null || element2 == null) { return null; } - final JSStatement statement = PsiTreeUtil.getParentOfType(element1, JSStatement.class); - final JSStatement statement2 = PsiTreeUtil.getParentOfType(element2, JSStatement.class); + JSStatement statement = PsiTreeUtil.getParentOfType(element1, JSStatement.class); + JSStatement statement2 = PsiTreeUtil.getParentOfType(element2, JSStatement.class); PsiElement parent = PsiTreeUtil.findCommonParent(element1, element2); while (true) { @@ -104,8 +109,8 @@ private PsiElement[] findStatementsInRange(PsiFile file, int startOffset, int en && PsiTreeUtil.isAncestor(parent, statement2, false)))) { break; } - if (parent instanceof JSStatement) { - parent = parent.getParent(); + if (parent instanceof JSStatement parentStatement) { + parent = parentStatement.getParent(); break; } if (parent instanceof PsiFile) { @@ -114,10 +119,10 @@ private PsiElement[] findStatementsInRange(PsiFile file, int startOffset, int en parent = parent.getParent(); } - while (!element1.getParent().equals(parent)) { element1 = element1.getParent(); } + if (startOffset != element1.getTextRange().getStartOffset()) { return null; } @@ -129,13 +134,13 @@ private PsiElement[] findStatementsInRange(PsiFile file, int startOffset, int en return null; } - final ASTNode[] astNodes = parent.getNode().getChildren(null); - List children = new ArrayList(astNodes.length); + ASTNode[] astNodes = parent.getNode().getChildren(null); + List children = new ArrayList<>(astNodes.length); for (ASTNode node : astNodes) { children.add(node.getPsi()); } - ArrayList array = new ArrayList(); + ArrayList array = new ArrayList<>(); boolean flag = false; for (PsiElement child : children) { if (child.equals(element1)) { diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithBlockSurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithBlockSurrounder.java index e8a61738..375c4d87 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithBlockSurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithBlockSurrounder.java @@ -16,6 +16,7 @@ package com.intellij.lang.javascript.impl.surroundWith; +import consulo.annotation.access.RequiredReadAction; import consulo.document.util.TextRange; import consulo.language.ast.ASTNode; import consulo.project.Project; @@ -32,17 +33,19 @@ public String getTemplateDescription() { } @Override - protected String getStatementTemplate(final Project project, PsiElement context) { + protected String getStatementTemplate(Project project, PsiElement context) { return "{ }"; } @Override - protected ASTNode getInsertBeforeNode(final ASTNode statementNode) { + @RequiredReadAction + protected ASTNode getInsertBeforeNode(ASTNode statementNode) { return statementNode.getLastChildNode(); } @Override - protected TextRange getSurroundSelectionRange(final ASTNode statementNode) { + @RequiredReadAction + protected TextRange getSurroundSelectionRange(ASTNode statementNode) { int endOffset = statementNode.getTextRange().getEndOffset(); return new TextRange(endOffset, endOffset); } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithDoWhileSurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithDoWhileSurrounder.java index 3deb26ef..14ac48de 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithDoWhileSurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithDoWhileSurrounder.java @@ -17,6 +17,7 @@ package com.intellij.lang.javascript.impl.surroundWith; import com.intellij.lang.javascript.psi.JSDoWhileStatement; +import consulo.annotation.access.RequiredReadAction; import consulo.document.util.TextRange; import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.ast.ASTNode; @@ -34,18 +35,20 @@ public String getTemplateDescription() { } @Override - protected String getStatementTemplate(final Project project, PsiElement context) { + protected String getStatementTemplate(Project project, PsiElement context) { return "do { } while (true);"; } @Override - protected ASTNode getInsertBeforeNode(final ASTNode statementNode) { + @RequiredReadAction + protected ASTNode getInsertBeforeNode(ASTNode statementNode) { JSDoWhileStatement stmt = (JSDoWhileStatement)statementNode.getPsi(); return stmt.getBody().getLastChild().getNode(); } @Override - protected TextRange getSurroundSelectionRange(final ASTNode statementNode) { + @RequiredReadAction + protected TextRange getSurroundSelectionRange(ASTNode statementNode) { JSDoWhileStatement stmt = (JSDoWhileStatement)statementNode.getPsi(); return stmt.getCondition().getTextRange(); } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithForSurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithForSurrounder.java index ec2cb53c..c0aaecf0 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithForSurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithForSurrounder.java @@ -19,6 +19,7 @@ import com.intellij.lang.javascript.JSTokenTypes; import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.lang.javascript.psi.JSForStatement; +import consulo.annotation.access.RequiredReadAction; import consulo.document.util.TextRange; import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.ast.ASTNode; @@ -37,22 +38,24 @@ public String getTemplateDescription() { } @Override - protected String getStatementTemplate(final Project project, PsiElement context) { + protected String getStatementTemplate(Project project, PsiElement context) { return "for(i=0; i<1; i++) { }"; } @Override - protected ASTNode getInsertBeforeNode(final ASTNode statementNode) { + @RequiredReadAction + protected ASTNode getInsertBeforeNode(ASTNode statementNode) { JSForStatement forStatement = (JSForStatement)statementNode.getPsi(); return forStatement.getBody().getLastChild().getNode(); } @Override - protected TextRange getSurroundSelectionRange(final ASTNode statementNode) { + @RequiredReadAction + protected TextRange getSurroundSelectionRange(ASTNode statementNode) { for (ASTNode childNode : statementNode.getChildren(null)) { - if (childNode.getElementType() == JSTokenTypes.SEMICOLON || - childNode.getPsi() instanceof PsiWhiteSpace || - childNode.getPsi() instanceof JSExpression) { + if (childNode.getElementType() == JSTokenTypes.SEMICOLON + || childNode.getPsi() instanceof PsiWhiteSpace + || childNode.getPsi() instanceof JSExpression) { statementNode.removeChild(childNode); } else if (childNode.getElementType() == JSTokenTypes.RPAR) { diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithFunctionExpressionSurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithFunctionExpressionSurrounder.java index 1f648288..5171456b 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithFunctionExpressionSurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithFunctionExpressionSurrounder.java @@ -20,6 +20,7 @@ import com.intellij.lang.javascript.psi.JSExpressionStatement; import com.intellij.lang.javascript.psi.JSFunctionExpression; import com.intellij.lang.javascript.psi.impl.JSChangeUtil; +import consulo.annotation.access.RequiredReadAction; import consulo.document.util.TextRange; import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.ast.ASTNode; @@ -33,22 +34,27 @@ public String getTemplateDescription() { } @Override - protected String getStatementTemplate(final Project project, PsiElement context) { + protected String getStatementTemplate(Project project, PsiElement context) { return "aaa = function () { }" + JSChangeUtil.getSemicolon(project); } @Override - protected ASTNode getInsertBeforeNode(final ASTNode statementNode) { + @RequiredReadAction + protected ASTNode getInsertBeforeNode(ASTNode statementNode) { JSFunctionExpression stmt = getFunctionExpr(statementNode); return stmt.getBody()[0].getLastChild().getNode(); } - private static JSFunctionExpression getFunctionExpr(final ASTNode statementNode) { - return (JSFunctionExpression)((JSAssignmentExpression)((JSExpressionStatement)statementNode.getPsi()).getExpression()).getROperand(); + @RequiredReadAction + private static JSFunctionExpression getFunctionExpr(ASTNode statementNode) { + JSExpressionStatement expression = (JSExpressionStatement)statementNode.getPsi(); + JSAssignmentExpression assignment = (JSAssignmentExpression)expression.getExpression(); + return (JSFunctionExpression)assignment.getROperand(); } @Override - protected TextRange getSurroundSelectionRange(final ASTNode statementNode) { + @RequiredReadAction + protected TextRange getSurroundSelectionRange(ASTNode statementNode) { JSFunctionExpression stmt = getFunctionExpr(statementNode); ASTNode conditionNode = stmt.getNameIdentifier().getNode(); int offset = conditionNode.getStartOffset(); diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithFunctionSurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithFunctionSurrounder.java index 3d15810b..9403cb83 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithFunctionSurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithFunctionSurrounder.java @@ -17,6 +17,7 @@ package com.intellij.lang.javascript.impl.surroundWith; import com.intellij.lang.javascript.psi.JSFunction; +import consulo.annotation.access.RequiredReadAction; import consulo.document.util.TextRange; import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.ast.ASTNode; @@ -30,18 +31,20 @@ public String getTemplateDescription() { } @Override - protected String getStatementTemplate(final Project project, PsiElement context) { + protected String getStatementTemplate(Project project, PsiElement context) { return "function $name$() { }"; } @Override - protected ASTNode getInsertBeforeNode(final ASTNode statementNode) { + @RequiredReadAction + protected ASTNode getInsertBeforeNode(ASTNode statementNode) { JSFunction stmt = (JSFunction)statementNode.getPsi(); return stmt.getBody()[0].getLastChild().getNode(); } @Override - protected TextRange getSurroundSelectionRange(final ASTNode statementNode) { + @RequiredReadAction + protected TextRange getSurroundSelectionRange(ASTNode statementNode) { JSFunction stmt = (JSFunction)statementNode.getPsi(); ASTNode conditionNode = stmt.getNameIdentifier().getNode(); int offset = conditionNode.getStartOffset(); diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithIfElseSurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithIfElseSurrounder.java index edf1dc8d..327bc4bc 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithIfElseSurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithIfElseSurrounder.java @@ -31,7 +31,7 @@ public String getTemplateDescription() { } @Override - protected String getStatementTemplate(final Project project, PsiElement context) { + protected String getStatementTemplate(Project project, PsiElement context) { return "if (a) { } else { }"; } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithIfSurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithIfSurrounder.java index d5e4a826..4a5ce6f6 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithIfSurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithIfSurrounder.java @@ -17,12 +17,12 @@ package com.intellij.lang.javascript.impl.surroundWith; import com.intellij.lang.javascript.psi.JSIfStatement; +import consulo.annotation.access.RequiredReadAction; import consulo.document.util.TextRange; import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.ast.ASTNode; import consulo.language.psi.PsiElement; import consulo.project.Project; -import org.jetbrains.annotations.NonNls; /** * @author yole @@ -35,19 +35,20 @@ public String getTemplateDescription() { } @Override - @NonNls - protected String getStatementTemplate(final Project project, PsiElement context) { + protected String getStatementTemplate(Project project, PsiElement context) { return "if(a) { }"; } @Override - protected ASTNode getInsertBeforeNode(final ASTNode statementNode) { + @RequiredReadAction + protected ASTNode getInsertBeforeNode(ASTNode statementNode) { JSIfStatement stmt = (JSIfStatement)statementNode.getPsi(); return stmt.getThen().getNode().getLastChildNode(); } @Override - protected TextRange getSurroundSelectionRange(final ASTNode statementNode) { + @RequiredReadAction + protected TextRange getSurroundSelectionRange(ASTNode statementNode) { JSIfStatement stmt = (JSIfStatement)statementNode.getPsi(); ASTNode conditionNode = stmt.getCondition().getNode(); int offset = conditionNode.getStartOffset(); diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithParenthesesSurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithParenthesesSurrounder.java index 5ed80841..5d9c66dc 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithParenthesesSurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithParenthesesSurrounder.java @@ -18,6 +18,7 @@ import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.lang.javascript.psi.impl.JSChangeUtil; +import consulo.annotation.access.RequiredReadAction; import consulo.codeEditor.Editor; import consulo.document.util.TextRange; import consulo.javascript.localize.JavaScriptLocalize; @@ -45,8 +46,9 @@ public boolean isApplicable(@Nonnull PsiElement[] elements) { return true; } - @Override @Nullable + @Override + @RequiredReadAction public TextRange surroundElements(@Nonnull Project project, @Nonnull Editor editor, @Nonnull PsiElement[] elements) throws IncorrectOperationException { JSExpression expr = (JSExpression)elements[0]; diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryCatchFinallySurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryCatchFinallySurrounder.java index 64ee1929..fe0f766e 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryCatchFinallySurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryCatchFinallySurrounder.java @@ -20,13 +20,13 @@ import com.intellij.lang.javascript.psi.JSCatchBlock; import com.intellij.lang.javascript.psi.JSStatement; import com.intellij.lang.javascript.psi.JSTryStatement; +import consulo.annotation.access.RequiredReadAction; import consulo.document.util.TextRange; import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.ast.ASTNode; import consulo.language.psi.PsiElement; import consulo.project.Project; import jakarta.annotation.Nonnull; -import org.jetbrains.annotations.NonNls; /** * @author yole @@ -39,11 +39,12 @@ public String getTemplateDescription() { } @Override - @NonNls - protected String getStatementTemplate(final Project project, PsiElement context) { + @RequiredReadAction + protected String getStatementTemplate(Project project, PsiElement context) { return "try { } catch(e" + getExceptionVarTypeBasedOnContext(context) + ") { } finally { }"; } + @RequiredReadAction protected static String getExceptionVarTypeBasedOnContext(@Nonnull PsiElement context) { if (context.getContainingFile().getLanguage() == JavaScriptSupportLoader.ECMA_SCRIPT_L4) { return ":Error"; @@ -52,13 +53,15 @@ protected static String getExceptionVarTypeBasedOnContext(@Nonnull PsiElement co } @Override - protected ASTNode getInsertBeforeNode(final ASTNode statementNode) { + @RequiredReadAction + protected ASTNode getInsertBeforeNode(ASTNode statementNode) { JSTryStatement stmt = (JSTryStatement)statementNode.getPsi(); return stmt.getStatement().getLastChild().getNode(); } @Override - protected TextRange getSurroundSelectionRange(final ASTNode statementNode) { + @RequiredReadAction + protected TextRange getSurroundSelectionRange(ASTNode statementNode) { JSTryStatement stmt = (JSTryStatement)statementNode.getPsi(); final JSCatchBlock catchBlock = stmt.getCatchBlock(); if (catchBlock != null) { diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryCatchSurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryCatchSurrounder.java index 44397c6b..9a1893bf 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryCatchSurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryCatchSurrounder.java @@ -16,6 +16,7 @@ package com.intellij.lang.javascript.impl.surroundWith; +import consulo.annotation.access.RequiredReadAction; import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.psi.PsiElement; import consulo.project.Project; @@ -31,7 +32,8 @@ public String getTemplateDescription() { } @Override - protected String getStatementTemplate(final Project project, PsiElement context) { + @RequiredReadAction + protected String getStatementTemplate(Project project, PsiElement context) { return "try { } catch(e" + getExceptionVarTypeBasedOnContext(context) + ") { }"; } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryFinallySurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryFinallySurrounder.java index 9c56f549..1c0db9a7 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryFinallySurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryFinallySurrounder.java @@ -16,6 +16,7 @@ package com.intellij.lang.javascript.impl.surroundWith; +import consulo.annotation.access.RequiredReadAction; import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.psi.PsiElement; import consulo.project.Project; @@ -31,7 +32,8 @@ public String getTemplateDescription() { } @Override - protected String getStatementTemplate(final Project project, PsiElement context) { + @RequiredReadAction + protected String getStatementTemplate(Project project, PsiElement context) { return "try { } finally { }"; } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithWhileSurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithWhileSurrounder.java index f7b1a6ac..750da8ec 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithWhileSurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithWhileSurrounder.java @@ -17,6 +17,7 @@ package com.intellij.lang.javascript.impl.surroundWith; import com.intellij.lang.javascript.psi.JSWhileStatement; +import consulo.annotation.access.RequiredReadAction; import consulo.document.util.TextRange; import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.ast.ASTNode; @@ -34,18 +35,20 @@ public String getTemplateDescription() { } @Override - protected String getStatementTemplate(final Project project, PsiElement context) { + protected String getStatementTemplate(Project project, PsiElement context) { return "while(true) { }"; } @Override + @RequiredReadAction protected ASTNode getInsertBeforeNode(ASTNode statementNode) { JSWhileStatement stmt = (JSWhileStatement)statementNode.getPsi(); return stmt.getBody().getLastChild().getNode(); } @Override - protected TextRange getSurroundSelectionRange(final ASTNode statementNode) { + @RequiredReadAction + protected TextRange getSurroundSelectionRange(ASTNode statementNode) { JSWhileStatement stmt = (JSWhileStatement)statementNode.getPsi(); return stmt.getCondition().getTextRange(); } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithWithSurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithWithSurrounder.java index 2f1b2044..d02ddb1d 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithWithSurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithWithSurrounder.java @@ -17,6 +17,7 @@ package com.intellij.lang.javascript.impl.surroundWith; import com.intellij.lang.javascript.psi.JSWithStatement; +import consulo.annotation.access.RequiredReadAction; import consulo.document.util.TextRange; import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.ast.ASTNode; @@ -24,11 +25,8 @@ import consulo.project.Project; /** - * Created by IntelliJ IDEA. - * User: yole - * Date: 12.07.2005 - * Time: 19:34:54 - * To change this template use File | Settings | File Templates. + * @author yole + * @since 2005-07-12 */ public class JSWithWithSurrounder extends JSStatementSurrounder { @Override @@ -37,18 +35,20 @@ public String getTemplateDescription() { } @Override - protected String getStatementTemplate(final Project project, PsiElement context) { + protected String getStatementTemplate(Project project, PsiElement context) { return "with(a) { }"; } @Override - protected ASTNode getInsertBeforeNode(final ASTNode statementNode) { + @RequiredReadAction + protected ASTNode getInsertBeforeNode(ASTNode statementNode) { JSWithStatement stmt = (JSWithStatement)statementNode.getPsi(); return stmt.getStatement().getLastChild().getNode(); } @Override - protected TextRange getSurroundSelectionRange(final ASTNode statementNode) { + @RequiredReadAction + protected TextRange getSurroundSelectionRange(ASTNode statementNode) { JSWithStatement stmt = (JSWithStatement)statementNode.getPsi(); ASTNode conditionNode = stmt.getExpression().getNode(); int offset = conditionNode.getStartOffset(); diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/BaseCreateMethodsFix.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/BaseCreateMethodsFix.java index c748e778..b4547379 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/BaseCreateMethodsFix.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/BaseCreateMethodsFix.java @@ -16,40 +16,25 @@ package com.intellij.lang.javascript.impl.validation; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.Comparator; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; - -import consulo.annotation.access.RequiredReadAction; -import consulo.language.ast.ASTNode; -import consulo.language.util.IncorrectOperationException; -import consulo.util.lang.StringUtil; -import org.jetbrains.annotations.NonNls; -import jakarta.annotation.Nonnull; - import com.intellij.lang.javascript.JSTokenTypes; import com.intellij.lang.javascript.impl.flex.ImportUtils; import com.intellij.lang.javascript.impl.generation.JSNamedElementNode; -import com.intellij.lang.javascript.psi.JSAttributeList; -import com.intellij.lang.javascript.psi.JSAttributeListOwner; -import com.intellij.lang.javascript.psi.JSClass; -import com.intellij.lang.javascript.psi.JSFile; -import com.intellij.lang.javascript.psi.JSFunction; -import com.intellij.lang.javascript.psi.JSNamedElement; -import com.intellij.lang.javascript.psi.JSParameter; -import com.intellij.lang.javascript.psi.JSParameterList; -import com.intellij.lang.javascript.psi.JSVariable; +import com.intellij.lang.javascript.psi.*; import com.intellij.lang.javascript.psi.impl.JSChangeUtil; import com.intellij.lang.javascript.psi.resolve.JSImportHandlingUtil; +import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.access.RequiredWriteAction; import consulo.codeEditor.Editor; -import consulo.project.Project; +import consulo.language.ast.ASTNode; import consulo.language.psi.PsiElement; import consulo.language.psi.PsiFile; import consulo.language.psi.PsiWhiteSpace; +import consulo.language.util.IncorrectOperationException; +import consulo.project.Project; +import consulo.util.lang.StringUtil; +import jakarta.annotation.Nonnull; + +import java.util.*; /** * @author Maxim.Mossienko @@ -64,7 +49,8 @@ public BaseCreateMethodsFix(final JSClass jsClass) { myJsClass = jsClass; } - public void invoke(@Nonnull final Project project, final Editor editor, final PsiFile file) throws IncorrectOperationException { + @RequiredWriteAction + public void invoke(@Nonnull Project project, Editor editor, PsiFile file) throws IncorrectOperationException { evalAnchor(editor, file); for (T e : getElementsToProcess()) { anchor = doAddOneMethod(project, buildFunctionText(e), anchor); @@ -72,14 +58,15 @@ public void invoke(@Nonnull final Project project, final Editor editor, final Ps } @RequiredReadAction - protected void evalAnchor(final Editor editor, final PsiFile file) { + protected void evalAnchor(Editor editor, PsiFile file) { anchor = null; - final PsiElement at = file.findElementAt(editor.getCaretModel().getOffset()); + PsiElement at = file.findElementAt(editor.getCaretModel().getOffset()); PsiElement parent = at != null ? at.getParent() : null; - if (parent == myJsClass || (parent instanceof JSFile - && myJsClass.getParent().getContainingFile() == parent.getContext().getContainingFile())) { - final ASTNode atNode = at.getNode(); + if (parent == myJsClass || (parent instanceof JSFile jsFile + && myJsClass.getParent().getContainingFile() == jsFile.getContext().getContainingFile())) { + + ASTNode atNode = at.getNode(); if (atNode.getElementType() == JSTokenTypes.RBRACE) { return; } @@ -93,13 +80,13 @@ protected void evalAnchor(final Editor editor, final PsiFile file) { } } - @RequiredReadAction - protected PsiElement doAddOneMethod(final Project project, final String functionText, PsiElement anchor) + @RequiredWriteAction + protected PsiElement doAddOneMethod(Project project, String functionText, PsiElement anchor) throws IncorrectOperationException { if (StringUtil.isNotEmpty(functionText)) { PsiElement element = JSChangeUtil.createJSTreeFromText(project, functionText).getPsi(); - if (element instanceof PsiWhiteSpace) { - element = element.getNextSibling(); + if (element instanceof PsiWhiteSpace whiteSpace) { + element = whiteSpace.getNextSibling(); } boolean defaultAdd = true; @@ -121,19 +108,19 @@ protected PsiElement doAddOneMethod(final Project project, final String function return anchor; } - @RequiredReadAction - public String buildFunctionText(final T fun) { - final JSAttributeList attributeList = fun.getAttributeList(); + @RequiredWriteAction + public String buildFunctionText(T fun) { + JSAttributeList attributeList = fun.getAttributeList(); String attrText = attributeList != null ? attributeList.getText() : ""; attrText = buildFunctionAttrText(attrText, attributeList, fun); - final JSFunction function = fun instanceof JSFunction jsFun ? jsFun : null; - final JSVariable var = fun instanceof JSVariable jsVar ? jsVar : null; + JSFunction function = fun instanceof JSFunction jsFun ? jsFun : null; + JSVariable var = fun instanceof JSVariable jsVar ? jsVar : null; assert var != null || function != null; - final JSParameterList parameterList = (function != null) ? function.getParameterList() : null; - final String typeString = importType(function != null ? function.getReturnTypeString() : var.getTypeString(), fun); + JSParameterList parameterList = (function != null) ? function.getParameterList() : null; + String typeString = importType(function != null ? function.getReturnTypeString() : var.getTypeString(), fun); StringBuilder functionText = new StringBuilder(attrText); if (!functionText.isEmpty()) { functionText.append(" "); @@ -151,18 +138,17 @@ public String buildFunctionText(final T fun) { return functionText.toString(); } - protected - @NonNls - String buildReturnType(final String typeString) { + protected String buildReturnType(String typeString) { return typeString; } - protected String importType(final String s, T fun) { + @RequiredWriteAction + protected String importType(String s, T fun) { if (s == null) { return null; } - if (fun instanceof JSFunction) { - final String resolvedTypeName = JSImportHandlingUtil.resolveTypeName(s, fun); + if (fun instanceof JSFunction function) { + String resolvedTypeName = JSImportHandlingUtil.resolveTypeName(s, function); if (!resolvedTypeName.equals(s)) { ImportUtils.doImport(myJsClass, resolvedTypeName); @@ -171,11 +157,11 @@ protected String importType(final String s, T fun) { return s; } - @RequiredReadAction - protected String buildParameterList(final JSParameterList parameterList, final T fun) { + @RequiredWriteAction + protected String buildParameterList(JSParameterList parameterList, T fun) { if (parameterList != null) { for (JSParameter param : parameterList.getParameters()) { - final String s = param.getTypeString(); + String s = param.getTypeString(); if (s != null) { importType(s, fun); } @@ -185,12 +171,12 @@ protected String buildParameterList(final JSParameterList parameterList, final T } @RequiredReadAction - protected String buildName(final T fun) { + protected String buildName(T fun) { return fun.getName(); } @RequiredReadAction - protected String buildFunctionKind(final T fun) { + protected String buildFunctionKind(T fun) { if (fun instanceof JSFunction function) { if (function.isGetProperty()) { return "get "; @@ -202,20 +188,20 @@ else if (function.isSetProperty()) { return ""; } - protected String buildFunctionBodyText(String retType, final JSParameterList parameterList, final T func) { + protected String buildFunctionBodyText(String retType, JSParameterList parameterList, T func) { return " {}"; } - protected String buildFunctionAttrText(String attrText, final JSAttributeList attributeList, final T function) { + protected String buildFunctionAttrText(String attrText, JSAttributeList attributeList, T function) { return attrText.replace("native", "").trim(); } - public void addElementToProcess(final T function) { + public void addElementToProcess(T function) { elementsToProcess.add(function); } @SuppressWarnings("unchecked") - public void addElementsToProcessFrom(final Collection selectedElements) { + public void addElementsToProcessFrom(Collection selectedElements) { for (JSNamedElementNode el : selectedElements) { addElementToProcess((T)el.getPsiElement()); } @@ -223,17 +209,17 @@ public void addElementsToProcessFrom(final Collection select @SuppressWarnings("unchecked") public Set getElementsToProcess() { - final T[] objects = (T[])elementsToProcess.toArray(new JSNamedElement[elementsToProcess.size()]); - final Comparator tComparator = (o1, o2) -> o1.getTextOffset() - o2.getTextOffset(); + T[] objects = (T[])elementsToProcess.toArray(new JSNamedElement[elementsToProcess.size()]); + Comparator tComparator = (o1, o2) -> o1.getTextOffset() - o2.getTextOffset(); - final int size = elementsToProcess.size(); - final LinkedHashSet result = new LinkedHashSet<>(size); - final List objectsFromSameFile = new ArrayList<>(); + int size = elementsToProcess.size(); + LinkedHashSet result = new LinkedHashSet<>(size); + List objectsFromSameFile = new ArrayList<>(); PsiFile containingFile = null; for (int i = 0; i < size; ++i) { - final T object = objects[i]; - final PsiFile currentContainingFile = object.getContainingFile(); + T object = objects[i]; + PsiFile currentContainingFile = object.getContainingFile(); if (currentContainingFile != containingFile) { if (containingFile != null) { diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/ImplementMethodsFix.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/ImplementMethodsFix.java index ffaaf52d..9b28068c 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/ImplementMethodsFix.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/ImplementMethodsFix.java @@ -34,7 +34,7 @@ * @since 2008-07-17 */ public class ImplementMethodsFix extends BaseCreateMethodsFix implements SyntheticIntentionAction { - public ImplementMethodsFix(final JSClass jsClass) { + public ImplementMethodsFix(JSClass jsClass) { super(jsClass); } @@ -45,19 +45,19 @@ public String getText() { } @Override - public boolean isAvailable(@Nonnull final Project project, final Editor editor, final PsiFile file) { + public boolean isAvailable(@Nonnull Project project, Editor editor, PsiFile file) { return myJsClass.isValid(); } @Override - protected String buildFunctionAttrText(String attrText, final JSAttributeList attributeList, final JSFunction function) { + protected String buildFunctionAttrText(String attrText, JSAttributeList attributeList, JSFunction function) { return attributeList == null || attributeList.getAccessType() != JSAttributeList.AccessType.PUBLIC ? "public" : super.buildFunctionAttrText(attrText, attributeList, function); } @Override - protected String buildFunctionBodyText(final String retType, final JSParameterList parameterList, final JSFunction func) { + protected String buildFunctionBodyText(String retType, JSParameterList parameterList, JSFunction func) { StringBuilder s = new StringBuilder("{\n"); if (retType != null && !"void".equals(retType)) { s.append("return ").append(defaultValueOfType(retType)).append(JSChangeUtil.getSemicolon(func.getProject())).append("\n"); @@ -65,7 +65,7 @@ protected String buildFunctionBodyText(final String retType, final JSParameterLi return s.append("}").toString(); } - private static String defaultValueOfType(final String retType) { + private static String defaultValueOfType(String retType) { return switch (retType) { case "int", "uint", "Number" -> "0"; case "Boolean" -> "false"; diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/ImplementedMethodProcessor.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/ImplementedMethodProcessor.java index 75963498..72137e98 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/ImplementedMethodProcessor.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/ImplementedMethodProcessor.java @@ -25,6 +25,7 @@ import consulo.annotation.access.RequiredReadAction; import consulo.language.psi.PsiElement; import consulo.language.psi.resolve.ResolveState; +import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; import java.util.LinkedHashMap; @@ -38,27 +39,27 @@ public abstract class ImplementedMethodProcessor extends JSResolveUtil.CollectMethodsToImplementProcessor { protected final JSClass myJsClass; - public ImplementedMethodProcessor(final JSClass jsClass) { + public ImplementedMethodProcessor(JSClass jsClass) { super(null, null); myJsClass = jsClass; } @Override - protected boolean process(final ResolveProcessor processor) { + protected boolean process(ResolveProcessor processor) { Map functions = null; for (PsiElement _function : processor.getResults()) { if (!(_function instanceof JSFunction function)) { continue; } - final String name = function.getName(); + String name = function.getName(); if (functions == null) { functions = collectAllVisibleClassFunctions( myJsClass, null, jsFunction -> { - final JSAttributeList attributeList = jsFunction.getAttributeList(); + JSAttributeList attributeList = jsFunction.getAttributeList(); PsiElement parentClass = JSResolveUtil.findParent(jsFunction); if ((attributeList == null || attributeList.getAccessType() != JSAttributeList.AccessType.PUBLIC) && myJsClass != parentClass) { @@ -90,15 +91,11 @@ protected boolean process(final ResolveProcessor processor) { return true; } - protected void addImplementedFunction(final JSFunction interfaceFunction, final JSFunction implementationFunction) { + protected void addImplementedFunction(JSFunction interfaceFunction, JSFunction implementationFunction) { } @RequiredReadAction - public static JSFunction findFunctionWithTheSameKind( - final Map functions, - final JSFunction function, - final String name - ) { + public static JSFunction findFunctionWithTheSameKind(Map functions, JSFunction function, String name) { Object o = functions.get(name); if (o instanceof JSFunction fun) { return fun.getKind() == function.getKind() ? fun : null; @@ -128,13 +125,13 @@ public static Map collectAllVisibleClassFunctions( @Override @RequiredReadAction - public boolean execute(final PsiElement element, final ResolveState state) { + public boolean execute(@Nonnull PsiElement element, ResolveState state) { if (element instanceof JSFunction function) { if (function.isConstructor()) { return true; // SWC stubs have constructor methods :( } - final JSAttributeList attributeList = function.getAttributeList(); + JSAttributeList attributeList = function.getAttributeList(); if (attributeList != null && attributeList.getAccessType() == JSAttributeList.AccessType.PRIVATE) { return true; } @@ -143,16 +140,15 @@ public boolean execute(final PsiElement element, final ResolveState state) { if (filterValue != null && !filterValue) { return true; } - final String s = function.getName(); - final Object function1 = functions.get(s); + String s = function.getName(); + Object function1 = functions.get(s); if (function1 == null) { functions.put(s, function); } - else if (function1 instanceof JSFunction function2) { - if (findFunctionWithTheSameKind(functions, function, s) == null) { - functions.put(s, new JSFunction[]{function2, function}); - } + else if (function1 instanceof JSFunction function2 + && findFunctionWithTheSameKind(functions, function, s) == null) { + functions.put(s, new JSFunction[]{function2, function}); } } return true; @@ -165,5 +161,5 @@ else if (function1 instanceof JSFunction function2) { return functions; } - protected abstract void addNonimplementedFunction(final JSFunction function); + protected abstract void addNonimplementedFunction(JSFunction function); } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatingVisitor.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatingVisitor.java index f8042216..9d7d6e16 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatingVisitor.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatingVisitor.java @@ -25,6 +25,7 @@ import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; import com.intellij.lang.javascript.psi.util.JSUtils; import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.access.RequiredWriteAction; import consulo.codeEditor.Editor; import consulo.document.util.TextRange; import consulo.javascript.localize.JavaScriptLocalize; @@ -51,7 +52,7 @@ import consulo.module.content.ProjectRootManager; import consulo.project.Project; import consulo.ui.annotation.RequiredUIAccess; -import consulo.util.lang.ref.Ref; +import consulo.util.lang.ref.SimpleReference; import consulo.virtualFileSystem.VirtualFile; import consulo.xml.psi.xml.XmlAttributeValue; import consulo.xml.psi.xml.XmlTagChild; @@ -60,7 +61,8 @@ import java.util.*; /** - * @by max, maxim.mossienko + * @author max + * @author maxim.mossienko */ public class JSAnnotatingVisitor extends JSElementVisitor implements Annotator { private AnnotationHolder myHolder; @@ -74,13 +76,13 @@ public synchronized void annotate(PsiElement psiElement, @Nonnull AnnotationHold @Override @RequiredReadAction - public void visitJSAttributeNameValuePair(final JSAttributeNameValuePair attributeNameValuePair) { + public void visitJSAttributeNameValuePair(JSAttributeNameValuePair attributeNameValuePair) { checkReferences(attributeNameValuePair, HighlightSeverity.ERROR); } @Override @RequiredReadAction - public void visitJSIncludeDirective(final JSIncludeDirective includeDirective) { + public void visitJSIncludeDirective(JSIncludeDirective includeDirective) { checkReferences(includeDirective, HighlightSeverity.ERROR); } @@ -91,19 +93,18 @@ public void visitJSLiteralExpression(JSSimpleLiteralExpression node) { } @RequiredReadAction - private void checkReferences(final PsiElement includeDirective, HighlightSeverity kind) { + private void checkReferences(PsiElement includeDirective, HighlightSeverity kind) { for (PsiReference ref : includeDirective.getReferences()) { if (!ref.isSoft() && hasBadResolve(ref)) { - final TextRange elementRange = ref.getElement().getTextRange(); - final TextRange textRange = ref.getRangeInElement(); + TextRange elementRange = ref.getElement().getTextRange(); + TextRange textRange = ref.getRangeInElement(); - final TextRange range = new TextRange( + TextRange range = new TextRange( elementRange.getStartOffset() + textRange.getStartOffset(), elementRange.getStartOffset() + textRange.getEndOffset() ); - final LocalizeValue value = ((EmptyResolveMessageProvider)ref).buildUnresolvedMessage(ref.getCanonicalText()); - AnnotationBuilder builder = myHolder.newAnnotation(kind, value) - .range(range); + LocalizeValue value = ((EmptyResolveMessageProvider)ref).buildUnresolvedMessage(ref.getCanonicalText()); + AnnotationBuilder builder = myHolder.newAnnotation(kind, value).range(range); if (ref instanceof LocalQuickFixProvider localQuickFixProvider) { for (LocalQuickFix fix : localQuickFixProvider.getQuickFixes()) { @@ -118,7 +119,7 @@ private void checkReferences(final PsiElement includeDirective, HighlightSeverit } @RequiredReadAction - private boolean hasBadResolve(final PsiReference ref) { + private boolean hasBadResolve(PsiReference ref) { return ref instanceof PsiPolyVariantReference psiPolyVariantReference ? psiPolyVariantReference.multiResolve(false).length == 0 : ref.resolve() == null; @@ -126,38 +127,38 @@ private boolean hasBadResolve(final PsiReference ref) { @Override @RequiredReadAction - public void visitJSCallExpression(final JSCallExpression node) { - final JSExpression methodExpression = node.getMethodExpression(); + public void visitJSCallExpression(JSCallExpression node) { + JSExpression methodExpression = node.getMethodExpression(); - if (methodExpression instanceof JSLiteralExpression) { + if (methodExpression instanceof JSLiteralExpression literal) { myHolder.newAnnotation(HighlightSeverity.ERROR, JavaScriptLocalize.javascriptParserMessageExpectedFunctionName()) - .range(methodExpression) + .range(literal) .create(); } } @Override @RequiredReadAction - public void visitJSDocTagValue(final JSDocTagValue tagValue) { + public void visitJSDocTagValue(@Nonnull JSDocTagValue tagValue) { checkReferences(tagValue, HighlightSeverity.WARNING); } @Override @RequiredReadAction - public void visitJSDocTag(final JSDocTag tagValue) { + public void visitJSDocTag(@Nonnull JSDocTag tagValue) { checkReferences(tagValue, HighlightSeverity.WARNING); } @Override @RequiredReadAction - public void visitJSReferenceList(final JSReferenceList referenceList) { - final JSClass jsClass = (JSClass)referenceList.getParent(); + public void visitJSReferenceList(JSReferenceList referenceList) { + JSClass jsClass = (JSClass)referenceList.getParent(); if (JSResolveUtil.isArtificialClassUsedForReferenceList(jsClass)) { return; // implements="MyInterface" in mxml has artificial class created } - final boolean withinExtends = jsClass.getExtendsList() == referenceList; - final boolean withinImplements = jsClass.getImplementsList() == referenceList; + boolean withinExtends = jsClass.getExtendsList() == referenceList; + boolean withinImplements = jsClass.getImplementsList() == referenceList; if (withinImplements && jsClass.isInterface()) { myHolder.newAnnotation( @@ -169,12 +170,12 @@ public void visitJSReferenceList(final JSReferenceList referenceList) { return; } - final Map nameToExprMap = new HashMap<>(); + Map nameToExprMap = new HashMap<>(); - final JSReferenceExpression[] referenceExpressions = referenceList.getExpressions(); + JSReferenceExpression[] referenceExpressions = referenceList.getExpressions(); if (referenceExpressions != null) { for (JSReferenceExpression expr : referenceExpressions) { - final String s = expr.getReferencedName(); + String s = expr.getReferencedName(); if (s != null) { nameToExprMap.put(s, expr); } @@ -182,8 +183,8 @@ public void visitJSReferenceList(final JSReferenceList referenceList) { } for (JSClass clazz : referenceList.getReferencedClasses()) { - final boolean isInterface = clazz.isInterface(); - final JSReferenceExpression expr = nameToExprMap.get(clazz.getName()); + boolean isInterface = clazz.isInterface(); + JSReferenceExpression expr = nameToExprMap.get(clazz.getName()); if (!isInterface && withinImplements) { myHolder.newAnnotation(HighlightSeverity.ERROR, JavaScriptLocalize.javascriptValidationMessageInterfaceNameExpectedHere()) @@ -214,13 +215,13 @@ else if (withinExtends && isInterface != jsClass.isInterface()) { } public static void checkImplementedMethods(final JSClass jsClass, final AnnotationHolder holder) { - final JSResolveUtil.CollectMethodsToImplementProcessor implementedMethodProcessor = new ImplementedMethodProcessor(jsClass) { + JSResolveUtil.CollectMethodsToImplementProcessor implementedMethodProcessor = new ImplementedMethodProcessor(jsClass) { ImplementMethodsFix implementMethodsFix = null; @Override @RequiredReadAction - protected void addNonimplementedFunction(final JSFunction function) { - final PsiElement node = myJsClass.getNameIdentifier(); + protected void addNonimplementedFunction(JSFunction function) { + PsiElement node = myJsClass.getNameIdentifier(); if (node == null) { return; } @@ -242,10 +243,10 @@ protected void addNonimplementedFunction(final JSFunction function) { @Override @RequiredReadAction - protected void addImplementedFunction(final JSFunction interfaceFunction, final JSFunction implementationFunction) { + protected void addImplementedFunction(JSFunction interfaceFunction, JSFunction implementationFunction) { final JSAttributeList attributeList = implementationFunction.getAttributeList(); if (attributeList == null || attributeList.getAccessType() != JSAttributeList.AccessType.PUBLIC) { - final ASTNode node = findElementForAccessModifierError(implementationFunction, attributeList); + ASTNode node = findElementForAccessModifierError(implementationFunction, attributeList); holder.newAnnotation( HighlightSeverity.ERROR, JavaScriptLocalize.javascriptValidationMessageInterfaceMethodInvalidAccessModifier() @@ -254,12 +255,12 @@ protected void addImplementedFunction(final JSFunction interfaceFunction, final .create(); // TODO: quickfix } - final SignatureMatchResult incompatibleSignature = checkCompatibleSignature(implementationFunction, interfaceFunction); + SignatureMatchResult incompatibleSignature = checkCompatibleSignature(implementationFunction, interfaceFunction); if (incompatibleSignature != SignatureMatchResult.COMPATIBLE_SIGNATURE) { PsiElement parent = JSResolveUtil.findParent(implementationFunction); - if (parent instanceof JSFile) { - parent = JSResolveUtil.getClassReferenceForXmlFromContext(parent); + if (parent instanceof JSFile jsFile) { + parent = JSResolveUtil.getClassReferenceForXmlFromContext(jsFile); } if (parent != myJsClass) { @@ -269,8 +270,8 @@ protected void addImplementedFunction(final JSFunction interfaceFunction, final } if (incompatibleSignature == SignatureMatchResult.PARAMETERS_DIFFERS) { - final JSParameterList parameterList = implementationFunction.getParameterList(); - final JSParameterList expectedParameterList = interfaceFunction.getParameterList(); + JSParameterList parameterList = implementationFunction.getParameterList(); + JSParameterList expectedParameterList = interfaceFunction.getParameterList(); holder.newAnnotation( HighlightSeverity.ERROR, JavaScriptLocalize.javascriptValidationMessageInterfaceMethodInvalidSignature( @@ -302,9 +303,10 @@ else if (incompatibleSignature == SignatureMatchResult.RETURN_TYPE_DIFFERS) { JSResolveUtil.processInterfaceMethods(jsClass, implementedMethodProcessor); } - private static ASTNode findElementForAccessModifierError(final @Nonnull JSFunction o, final JSAttributeList attributeList) { + @RequiredReadAction + private static ASTNode findElementForAccessModifierError(@Nonnull JSFunction o, JSAttributeList attributeList) { if (attributeList != null) { - final PsiElement accessTypeElement = attributeList.findAccessTypeElement(); + PsiElement accessTypeElement = attributeList.findAccessTypeElement(); if (accessTypeElement != null) { return accessTypeElement.getNode(); } @@ -380,7 +382,7 @@ else if (((JSClass)parentForCheckingNsOrAccessModifier).isInterface()) { if (attributeList.getAccessType() != JSAttributeList.AccessType.PACKAGE_LOCAL || attributeList.getNode().findChildByType(JSTokenTypes.INTERNAL_KEYWORD) != null ) { - final ASTNode astNode = attributeList.getNode().findChildByType(JSTokenTypes.ACCESS_MODIFIERS); + ASTNode astNode = attributeList.getNode().findChildByType(JSTokenTypes.ACCESS_MODIFIERS); myHolder.newAnnotation( HighlightSeverity.ERROR, JavaScriptLocalize.javascriptValidationMessageInterfaceMembersCannotHaveAccessModifiers() @@ -395,11 +397,11 @@ else if (((JSClass)parentForCheckingNsOrAccessModifier).isInterface()) { @Override @RequiredReadAction - public void visitJSReferenceExpression(final JSReferenceExpression node) { - final PsiElement parent = node.getParent(); + public void visitJSReferenceExpression(JSReferenceExpression node) { + PsiElement parent = node.getParent(); if (parent instanceof JSNamedElement namedElement) { - final PsiElement nameIdentifier = namedElement.getNameIdentifier(); + PsiElement nameIdentifier = namedElement.getNameIdentifier(); if (nameIdentifier != null && nameIdentifier == node) { if (parent instanceof JSPackageStatement packageStatement) { @@ -410,7 +412,7 @@ else if (!(parent instanceof JSImportStatement) && parent.getParent() instanceof } else if (parent instanceof JSFunction function) { if (function.isConstructor()) { - final JSClass clazz; + JSClass clazz; if (parent.getParent() instanceof JSClass jsClass) { clazz = jsClass; } @@ -475,7 +477,7 @@ else if (function.isGetProperty()) { } if (parent instanceof JSClass jsClass) { - final JSFunction constructor = jsClass.findFunctionByName(jsClass.getName()); + JSFunction constructor = jsClass.findFunctionByName(jsClass.getName()); if (constructor == null) { checkMissedSuperCall(node, constructor, jsClass); } @@ -544,13 +546,13 @@ private boolean hasSuperConstructorCall(JSFunction jsFunction) { if (jsFunction == null) { return false; } - final JSSourceElement[] body = (jsFunction).getBody(); - final JSStatement[] statements = body.length > 0 ? ((JSBlockStatement)body[0]).getStatements() : JSStatement.EMPTY; + JSSourceElement[] body = jsFunction.getBody(); + JSStatement[] statements = body.length > 0 ? ((JSBlockStatement)body[0]).getStatements() : JSStatement.EMPTY; for (JSStatement st : statements) { - if (st instanceof JSExpressionStatement expressionStatement - && expressionStatement.getExpression() instanceof JSCallExpression callExpression - && callExpression.getMethodExpression() instanceof JSSuperExpression) { + if (st instanceof JSExpressionStatement expression + && expression.getExpression() instanceof JSCallExpression call + && call.getMethodExpression() instanceof JSSuperExpression) { return true; } } @@ -560,13 +562,13 @@ private boolean hasSuperConstructorCall(JSFunction jsFunction) { @RequiredReadAction public static JSFunction getNontrivialSuperClassConstructor(JSClass clazz) { - final JSClass[] classes = clazz.getSuperClasses(); + JSClass[] classes = clazz.getSuperClasses(); if (classes.length > 0) { - final JSFunction constructor = classes[0].findFunctionByName(classes[0].getName()); + JSFunction constructor = classes[0].findFunctionByName(classes[0].getName()); if (constructor != null) { - final JSParameter[] jsParameters = constructor.getParameterList().getParameters(); + JSParameter[] jsParameters = constructor.getParameterList().getParameters(); boolean hasRequiredParameters = false; for (JSParameter p : jsParameters) { if (!p.isRest() && !p.hasInitializer()) { @@ -650,9 +652,9 @@ private static ASTNode[] getNodesBefore(PsiElement initializer, IElementType eq) PsiElement element = initializer.getPrevSibling(); PsiElement lastElement = element; - if (element instanceof PsiWhiteSpace) { - nodes.add(element.getNode()); - lastElement = element.getPrevSibling(); + if (element instanceof PsiWhiteSpace whiteSpace) { + nodes.add(whiteSpace.getNode()); + lastElement = whiteSpace.getPrevSibling(); } if (lastElement != null && lastElement.getNode().getElementType() == eq) { @@ -665,7 +667,7 @@ private static ASTNode[] getNodesBefore(PsiElement initializer, IElementType eq) @Override @RequiredReadAction - public void visitJSPackageStatement(final JSPackageStatement packageStatement) { + public void visitJSPackageStatement(JSPackageStatement packageStatement) { for (PsiElement el = packageStatement.getPrevSibling(); el != null; el = el.getPrevSibling()) { if (!(el instanceof PsiWhiteSpace || el instanceof PsiComment)) { myHolder.newAnnotation( @@ -677,7 +679,7 @@ public void visitJSPackageStatement(final JSPackageStatement packageStatement) { break; } } - final PsiElement node = packageStatement.getNameIdentifier(); + PsiElement node = packageStatement.getNameIdentifier(); if (node == null) { checkPackageStatement(packageStatement); } @@ -685,7 +687,7 @@ public void visitJSPackageStatement(final JSPackageStatement packageStatement) { @Override @RequiredReadAction - public void visitJSAssignmentExpression(final JSAssignmentExpression expression) { + public void visitJSAssignmentExpression(JSAssignmentExpression expression) { JSExpression lExpr = expression.getLOperand(); if (lExpr == null) { return; @@ -712,11 +714,11 @@ public void visitJSAssignmentExpression(final JSAssignmentExpression expression) @Override @RequiredReadAction - public void visitJSArrayLiteralExpression(final JSArrayLiteralExpression node) { - final PsiElement lastChild = node.getLastChild(); + public void visitJSArrayLiteralExpression(JSArrayLiteralExpression node) { + PsiElement lastChild = node.getLastChild(); PsiElement child = lastChild != null ? lastChild.getPrevSibling() : null; - if (child instanceof PsiWhiteSpace) { - child = child.getPrevSibling(); + if (child instanceof PsiWhiteSpace whiteSpace) { + child = whiteSpace.getPrevSibling(); } ASTNode childNode; @@ -730,14 +732,14 @@ public void visitJSArrayLiteralExpression(final JSArrayLiteralExpression node) { @Override @RequiredReadAction - public void visitJSTryStatement(final JSTryStatement node) { - final JSCatchBlock[] blocks = node.getAllCatchBlocks(); + public void visitJSTryStatement(JSTryStatement node) { + JSCatchBlock[] blocks = node.getAllCatchBlocks(); if (blocks.length > 1) { - final Set typeToCatch = new HashSet<>(); + Set typeToCatch = new HashSet<>(); for (JSCatchBlock block : blocks) { - final JSParameter p = block.getParameter(); + JSParameter p = block.getParameter(); if (p == null) { continue; } @@ -765,7 +767,7 @@ public void visitJSTryStatement(final JSTryStatement node) { @Override @RequiredReadAction - public void visitJSVariable(final JSVariable var) { + public void visitJSVariable(JSVariable var) { if (var.isConst() && var.getInitializer() == null) { if (var.getParent() instanceof JSVarStatement varStatement && varStatement.getParent() instanceof JSForInStatement) { return; @@ -789,7 +791,7 @@ public void visitJSVariable(final JSVariable var) { @Override @RequiredReadAction - public void visitJSContinueStatement(final JSContinueStatement node) { + public void visitJSContinueStatement(JSContinueStatement node) { if (node.getStatementToContinue() == null) { myHolder.newAnnotation(HighlightSeverity.ERROR, JavaScriptLocalize.javascriptValidationMessageContinueWithoutTarget()) .range(node) @@ -799,7 +801,7 @@ public void visitJSContinueStatement(final JSContinueStatement node) { @Override @RequiredReadAction - public void visitJSBreakStatement(final JSBreakStatement node) { + public void visitJSBreakStatement(JSBreakStatement node) { if (node.getStatementToBreak() == null) { myHolder.newAnnotation(HighlightSeverity.ERROR, JavaScriptLocalize.javascriptValidationMessageBreakWithoutTarget()) .range(node) @@ -809,13 +811,13 @@ public void visitJSBreakStatement(final JSBreakStatement node) { @Override @RequiredReadAction - public void visitJSThisExpression(final JSThisExpression node) { + public void visitJSThisExpression(@Nonnull JSThisExpression node) { checkClassReferenceInStaticContext(node, JavaScriptLocalize.javascriptValidationMessageThisReferencedFromStaticContext()); } @RequiredReadAction @SuppressWarnings("unchecked") - private void checkClassReferenceInStaticContext(final JSExpression node, LocalizeValue message) { + private void checkClassReferenceInStaticContext(JSExpression node, LocalizeValue message) { PsiElement element = PsiTreeUtil.getParentOfType( node, JSFunction.class, @@ -826,7 +828,7 @@ private void checkClassReferenceInStaticContext(final JSExpression node, Localiz ); if (element instanceof JSFunction function) { - final JSAttributeList attributeList = function.getAttributeList(); + JSAttributeList attributeList = function.getAttributeList(); if (attributeList != null && attributeList.hasModifier(JSAttributeList.ModifierType.STATIC)) { myHolder.newAnnotation(HighlightSeverity.ERROR, message) .range(node) @@ -841,7 +843,7 @@ private void checkClassReferenceInStaticContext(final JSExpression node, Localiz PsiElement elementParent = element != null ? element.getParent() : null; if (element == null - || !(elementParent instanceof JSClass || elementParent instanceof JSFile && elementParent.getContext() != null)) { + || !(elementParent instanceof JSClass || elementParent instanceof JSFile jsFile && jsFile.getContext() != null)) { myHolder.newAnnotation( HighlightSeverity.ERROR, JavaScriptLocalize.javascriptValidationMessageSuperReferencedWithoutClassInstanceContext() @@ -853,7 +855,7 @@ private void checkClassReferenceInStaticContext(final JSExpression node, Localiz @Override @RequiredReadAction - public void visitJSSuperExpression(final JSSuperExpression node) { + public void visitJSSuperExpression(@Nonnull JSSuperExpression node) { checkClassReferenceInStaticContext(node, JavaScriptLocalize.javascriptValidationMessageSuperReferencedFromStaticContext()); } @@ -894,7 +896,7 @@ public void visitJSFunctionDeclaration(final JSFunction node) { final String qName = clazz.getQualifiedName(); final boolean hasOverride = attributeList != null && attributeList.hasModifier(JSAttributeList.ModifierType.OVERRIDE); - final Ref set = new Ref<>(); + final SimpleReference set = new SimpleReference<>(); boolean b = JSResolveUtil.iterateType( node, parent, @@ -907,7 +909,7 @@ public void visitJSFunctionDeclaration(final JSFunction node) { if ("Object".equals(className)) { /*native modifier is written always*/ if (hasOverride && !attributeList.hasModifier(JSAttributeList.ModifierType.NATIVE)) { - final ASTNode astNode = attributeList.getNode().findChildByType(JSTokenTypes.OVERRIDE_KEYWORD); + ASTNode astNode = attributeList.getNode().findChildByType(JSTokenTypes.OVERRIDE_KEYWORD); //noinspection RequiredXAction myHolder.newAnnotation( HighlightSeverity.ERROR, @@ -934,7 +936,7 @@ else if (!hasOverride) { ); if (b && hasOverride) { - final ASTNode astNode = attributeList.getNode().findChildByType(JSTokenTypes.OVERRIDE_KEYWORD); + ASTNode astNode = attributeList.getNode().findChildByType(JSTokenTypes.OVERRIDE_KEYWORD); myHolder.newAnnotation( HighlightSeverity.ERROR, JavaScriptLocalize.javascriptValidationMessageFunctionOverrideWithoutParentMethod() @@ -945,8 +947,8 @@ else if (!hasOverride) { } if (!b && hasOverride) { - final JSFunction override = set.get(); - final JSAttributeList overrideAttrList = override.getAttributeList(); + JSFunction override = set.get(); + JSAttributeList overrideAttrList = override.getAttributeList(); String overrideNs = null; if ((overrideAttrList == null && (attributeList.getAccessType() != JSAttributeList.AccessType.PACKAGE_LOCAL)) @@ -971,11 +973,11 @@ else if (!hasOverride) { //); } - final SignatureMatchResult incompatibleSignature = checkCompatibleSignature(node, override); + SignatureMatchResult incompatibleSignature = checkCompatibleSignature(node, override); if (incompatibleSignature == SignatureMatchResult.PARAMETERS_DIFFERS) { - final JSParameterList nodeParameterList = node.getParameterList(); - final JSParameterList overrideParameterList = override.getParameterList(); + JSParameterList nodeParameterList = node.getParameterList(); + JSParameterList overrideParameterList = override.getParameterList(); String params = overrideParameterList != null ? overrideParameterList.getText() : "()"; myHolder.newAnnotation( @@ -1018,11 +1020,11 @@ enum SignatureMatchResult { } @RequiredReadAction - private static SignatureMatchResult checkCompatibleSignature(final JSFunction fun, final JSFunction override) { + private static SignatureMatchResult checkCompatibleSignature(JSFunction fun, JSFunction override) { JSParameterList nodeParameterList = fun.getParameterList(); JSParameterList overrideParameterList = override.getParameterList(); - final JSParameter[] parameters = nodeParameterList != null ? nodeParameterList.getParameters() : JSParameter.EMPTY_ARRAY; - final JSParameter[] overrideParameters = overrideParameterList != null + JSParameter[] parameters = nodeParameterList != null ? nodeParameterList.getParameters() : JSParameter.EMPTY_ARRAY; + JSParameter[] overrideParameters = overrideParameterList != null ? overrideParameterList.getParameters() : JSParameter.EMPTY_ARRAY; @@ -1074,8 +1076,8 @@ else if (overrideParameterType == null && parameterType != null && !"*".equals(p @Override @RequiredReadAction @SuppressWarnings("unchecked") - public void visitJSReturnStatement(final JSReturnStatement node) { - final PsiElement element = PsiTreeUtil.getParentOfType( + public void visitJSReturnStatement(@Nonnull JSReturnStatement node) { + PsiElement element = PsiTreeUtil.getParentOfType( node, JSFunction.class, XmlTagChild.class, @@ -1083,15 +1085,15 @@ public void visitJSReturnStatement(final JSReturnStatement node) { JSFile.class, JavaScriptLambdaExpression.class ); - if ((element instanceof JSFile && !(element.getContext() instanceof PsiLanguageInjectionHost)) - || (element instanceof XmlTagChild && !(element.getParent() instanceof XmlAttributeValue))) { + if ((element instanceof JSFile jsFile && !(jsFile.getContext() instanceof PsiLanguageInjectionHost)) + || (element instanceof XmlTagChild xmlTagChild && !(xmlTagChild.getParent() instanceof XmlAttributeValue))) { myHolder.newAnnotation(HighlightSeverity.ERROR, JavaScriptLocalize.javascriptValidationMessageReturnOutsideFunctionDefinition()) .range(node) .create(); } if (element instanceof JSFunction function) { - final String typeString = function.getReturnTypeString(); + String typeString = function.getReturnTypeString(); if (typeString != null && !"void".equals(typeString) && node.getExpression() == null) { myHolder.newAnnotation( HighlightSeverity.ERROR, @@ -1105,18 +1107,16 @@ public void visitJSReturnStatement(final JSReturnStatement node) { @Override @RequiredReadAction - public void visitJSLabeledStatement(final JSLabeledStatement node) { - final String label = node.getLabel(); + public void visitJSLabeledStatement(JSLabeledStatement node) { + String label = node.getLabel(); if (label != null) { PsiElement run = node.getParent(); while (run != null) { - if (run instanceof JSLabeledStatement labeledStatement) { - if (label.equals(labeledStatement.getLabel())) { - myHolder.newAnnotation(HighlightSeverity.ERROR, JavaScriptLocalize.javascriptValidationMessageDuplicateLabel()) - .range(node.getNameIdentifier()) - .create(); - break; - } + if (run instanceof JSLabeledStatement labeledStatement && label.equals(labeledStatement.getLabel())) { + myHolder.newAnnotation(HighlightSeverity.ERROR, JavaScriptLocalize.javascriptValidationMessageDuplicateLabel()) + .range(node.getNameIdentifier()) + .create(); + break; } if (run instanceof JSFunction) { @@ -1128,21 +1128,21 @@ public void visitJSLabeledStatement(final JSLabeledStatement node) { } @RequiredReadAction - private void checkNamedObjectIsInCorrespondingFile(final JSNamedElement aClass) { - final PsiFile containingFile = aClass.getContainingFile(); + private void checkNamedObjectIsInCorrespondingFile(JSNamedElement aClass) { + PsiFile containingFile = aClass.getContainingFile(); if (containingFile.getContext() != null) { return; } - final VirtualFile file = containingFile.getVirtualFile(); + VirtualFile file = containingFile.getVirtualFile(); if (file != null && !file.getNameWithoutExtension().equals(aClass.getName())) { - final PsiElement node = aClass.getNameIdentifier(); + PsiElement node = aClass.getNameIdentifier(); if (node != null) { - final String name = aClass.getName(); + String name = aClass.getName(); String nameWithExtension = name + "." + file.getExtension(); - final LocalizeValue message = aClass instanceof JSClass + LocalizeValue message = aClass instanceof JSClass ? JavaScriptLocalize.javascriptValidationMessageClassShouldBeInFile(name, nameWithExtension) : aClass instanceof JSNamespaceDeclaration ? JavaScriptLocalize.javascriptValidationMessageNamespaceShouldBeInFile(name, nameWithExtension) @@ -1153,27 +1153,28 @@ private void checkNamedObjectIsInCorrespondingFile(final JSNamedElement aClass) .range(node) .withFix(new RenameFileFix(nameWithExtension)) .create(); - /*annotation.registerFix(new RenamePublicClassFix(aClass) { - final String text; - final String familyName; - - { - String term = getTerm(message); - text = super.getText().replace("class", StringUtil.decapitalize(term)); - familyName = super.getFamilyName().replace("Class", term); - } - @NotNull - @Override - public String getText() { - return text; - } - - @NotNull - @Override - public String getFamilyName() { - return familyName; - } - }); */ + /*annotation.registerFix(new RenamePublicClassFix(aClass) { + String text; + String familyName; + + { + String term = getTerm(message); + text = super.getText().replace("class", StringUtil.decapitalize(term)); + familyName = super.getFamilyName().replace("Class", term); + } + + @NotNull + @Override + public String getText() { + return text; + } + + @NotNull + @Override + public String getFamilyName() { + return familyName; + } + });*/ } } @@ -1186,19 +1187,18 @@ private String getTerm(String message) { } @RequiredReadAction - public static void checkFileUnderSourceRoot(final JSNamedElement aClass, AnnotationHolder holder) { + public static void checkFileUnderSourceRoot(JSNamedElement aClass, AnnotationHolder holder) { PsiElement nameIdentifier = aClass.getNameIdentifier(); if (nameIdentifier == null) { nameIdentifier = aClass.getFirstChild(); } - final PsiFile containingFile = aClass.getContainingFile(); - final VirtualFile file = containingFile.getVirtualFile(); + PsiFile containingFile = aClass.getContainingFile(); + VirtualFile file = containingFile.getVirtualFile(); if (file == null) { return; } - final VirtualFile rootForFile = - ProjectRootManager.getInstance(containingFile.getProject()).getFileIndex().getSourceRootForFile(file); + VirtualFile rootForFile = ProjectRootManager.getInstance(containingFile.getProject()).getFileIndex().getSourceRootForFile(file); if (rootForFile == null) { holder.newAnnotation(HighlightSeverity.WARNING, JavaScriptLocalize.javascriptValidationMessageFileShouldBeUnderSourceRoot()) @@ -1208,18 +1208,18 @@ public static void checkFileUnderSourceRoot(final JSNamedElement aClass, Annotat } @RequiredReadAction - private void checkPackageStatement(final JSPackageStatement packageStatement) { - final String s = packageStatement.getQualifiedName(); + private void checkPackageStatement(JSPackageStatement packageStatement) { + String s = packageStatement.getQualifiedName(); - final PsiFile containingFile = packageStatement.getContainingFile(); - final String expected = JSResolveUtil.getExpectedPackageNameFromFile( + PsiFile containingFile = packageStatement.getContainingFile(); + String expected = JSResolveUtil.getExpectedPackageNameFromFile( containingFile.getVirtualFile(), containingFile.getProject(), true ); if (expected != null && ((s == null && expected.length() != 0) || (s != null && !expected.equals(s)))) { - final PsiElement nameIdentifier = packageStatement.getNameIdentifier(); + PsiElement nameIdentifier = packageStatement.getNameIdentifier(); myHolder.newAnnotation(HighlightSeverity.ERROR, JavaScriptLocalize.javascriptValidationMessageIncorrectPackageName(s, expected)) .range(nameIdentifier != null ? nameIdentifier : packageStatement.getFirstChild()) .withFix(new SyntheticIntentionAction() { @@ -1230,13 +1230,13 @@ public String getText() { } @Override - public boolean isAvailable(@Nonnull final Project project, final Editor editor, final PsiFile file) { + public boolean isAvailable(@Nonnull Project project, Editor editor, PsiFile file) { return packageStatement.isValid(); } @Override - public void invoke(@Nonnull final Project project, final Editor editor, final PsiFile file) - throws IncorrectOperationException { + @RequiredWriteAction + public void invoke(@Nonnull Project project, Editor editor, PsiFile file) throws IncorrectOperationException { JSPackageStatementImpl.doChangeName(project, packageStatement, expected); } @@ -1248,7 +1248,7 @@ public boolean startInWriteAction() { .create(); } - final Set elements = new HashSet<>(); + Set elements = new HashSet<>(); for (JSSourceElement statement : packageStatement.getStatements()) { if (statement instanceof JSNamedElement namedElement && !(statement instanceof JSImportStatement)) { @@ -1258,7 +1258,7 @@ public boolean startInWriteAction() { if (elements.size() > 1) { for (JSNamedElement el : elements) { - final PsiElement nameIdentifier = el.getNameIdentifier(); + PsiElement nameIdentifier = el.getNameIdentifier(); myHolder.newAnnotation( HighlightSeverity.ERROR, JavaScriptLocalize.javascriptValidationMessageMoreThanOneExternallyVisibleSymbol() @@ -1273,14 +1273,14 @@ public boolean startInWriteAction() { } public static class RemoveASTNodeFix implements SyntheticIntentionAction, LocalQuickFix { - private final ASTNode[] myAstNodes; - private final LocalizeValue myProp; + private ASTNode[] myAstNodes; + private LocalizeValue myProp; - public RemoveASTNodeFix(final ASTNode astNode, LocalizeValue prop) { + public RemoveASTNodeFix(ASTNode astNode, LocalizeValue prop) { this(prop, astNode); } - public RemoveASTNodeFix(LocalizeValue prop, final ASTNode... astNodes) { + public RemoveASTNodeFix(LocalizeValue prop, ASTNode... astNodes) { myProp = prop; myAstNodes = astNodes; } @@ -1310,7 +1310,7 @@ public void applyFix(@Nonnull Project project, @Nonnull ProblemDescriptor descri } @Override - public boolean isAvailable(@Nonnull final Project project, final Editor editor, final PsiFile file) { + public boolean isAvailable(@Nonnull Project project, Editor editor, PsiFile file) { for (ASTNode astNode : myAstNodes) { if (!astNode.getPsi().isValid()) { return false; @@ -1322,7 +1322,7 @@ public boolean isAvailable(@Nonnull final Project project, final Editor editor, @Override @RequiredUIAccess - public void invoke(@Nonnull final Project project, final Editor editor, final PsiFile file) throws IncorrectOperationException { + public void invoke(@Nonnull Project project, Editor editor, PsiFile file) throws IncorrectOperationException { if (!FileModificationService.getInstance().prepareFileForWrite(file)) { return; } @@ -1342,7 +1342,7 @@ public boolean startInWriteAction() { private static class AddOverrideIntentionAction implements SyntheticIntentionAction { private final JSFunction myNode; - public AddOverrideIntentionAction(final JSFunction node) { + public AddOverrideIntentionAction(JSFunction node) { myNode = node; } @@ -1353,19 +1353,19 @@ public String getText() { } @Override - public boolean isAvailable(@Nonnull final Project project, final Editor editor, final PsiFile file) { + public boolean isAvailable(@Nonnull Project project, Editor editor, PsiFile file) { return myNode.isValid(); } @Override @RequiredUIAccess - public void invoke(@Nonnull final Project project, final Editor editor, final PsiFile file) throws IncorrectOperationException { + public void invoke(@Nonnull Project project, Editor editor, PsiFile file) throws IncorrectOperationException { if (!FileModificationService.getInstance().prepareFileForWrite(file)) { return; } - final ASTNode fromText = JSChangeUtil.createJSTreeFromText(project, "override class A {}"); - final JSAttributeList jsAttributeList = myNode.getAttributeList(); - final JSAttributeList createdAttrList = ((JSClass)fromText.getPsi()).getAttributeList(); + ASTNode fromText = JSChangeUtil.createJSTreeFromText(project, "override class A {}"); + JSAttributeList jsAttributeList = myNode.getAttributeList(); + JSAttributeList createdAttrList = ((JSClass)fromText.getPsi()).getAttributeList(); if (jsAttributeList != null) { jsAttributeList.add(createdAttrList.getFirstChild()); @@ -1471,11 +1471,11 @@ public void invoke(@Nonnull Project project, Editor editor, PsiFile file) throws if (!FileModificationService.getInstance().prepareFileForWrite(file)) { return; } - final JSClass jsClass = PsiTreeUtil.getParentOfType(node, JSClass.class); + JSClass jsClass = PsiTreeUtil.getParentOfType(node, JSClass.class); if (jsClass == null) { return; } - final JSAttributeList attributeList = jsClass.getAttributeList(); + JSAttributeList attributeList = jsClass.getAttributeList(); StringBuilder fun = new StringBuilder(); if (attributeList != null && attributeList.getAccessType() == JSAttributeList.AccessType.PUBLIC) { @@ -1484,7 +1484,7 @@ public void invoke(@Nonnull Project project, Editor editor, PsiFile file) throws fun.append("function "); - final JSParameterList parameterList = superConstructor.getParameterList(); + JSParameterList parameterList = superConstructor.getParameterList(); fun.append(jsClass.getName()).append(parameterList.getText()).append("{\n"); fun.append("super("); int i = 0; From 20fa5a211ff7162f5e41d509a5b0cbe8669f0755 Mon Sep 17 00:00:00 2001 From: Valery Semenchuk Date: Sun, 26 Jan 2025 16:00:35 +0400 Subject: [PATCH 108/150] reformat --- lang-version-impl/ecmascript-impl/pom.xml | 121 ++++++++++------------ 1 file changed, 56 insertions(+), 65 deletions(-) diff --git a/lang-version-impl/ecmascript-impl/pom.xml b/lang-version-impl/ecmascript-impl/pom.xml index 10bd6993..1da08fbb 100644 --- a/lang-version-impl/ecmascript-impl/pom.xml +++ b/lang-version-impl/ecmascript-impl/pom.xml @@ -15,75 +15,66 @@ - limitations under the License. --> - 4.0.0 - - consulo - arch.ide-api-provided - 3-SNAPSHOT - - + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 + + consulo + arch.ide-api-provided + 3-SNAPSHOT + + - consulo.plugin - consulo.javascript-ecmascript.impl - 3-SNAPSHOT - jar + consulo.plugin + consulo.javascript-ecmascript.impl + 3-SNAPSHOT + jar - - - consulo - https://maven.consulo.io/repository/snapshots/ - - true - always - - - + + + consulo + https://maven.consulo.io/repository/snapshots/ + + true + always + + + - - - - consulo.maven - maven-consulo-plugin - true - - - generate-sources - - generate-lexers - - - - - - + + + + consulo.maven + maven-consulo-plugin + true + + + generate-sources + + generate-lexers + + + + + + - - - ${project.groupId} - consulo.javascript-base.impl - ${project.version} - + + + ${project.groupId} + consulo.javascript-base.impl + ${project.version} + - - consulo - consulo-language-editor-impl - ${project.version} - + + consulo + consulo-language-editor-impl + ${project.version} + - - ${project.groupId} - com.intellij.xml - ${project.version} - provided - - - - - consulo - consulo-ide-impl - ${project.version} - provided - - + + ${project.groupId} + com.intellij.xml + ${project.version} + + \ No newline at end of file From dc667e73af0d1912d37ddab33ba92903d535e50a Mon Sep 17 00:00:00 2001 From: Valery Semenchuk Date: Sun, 26 Jan 2025 16:04:57 +0400 Subject: [PATCH 109/150] disable magic number inspection by default --- .../confusing/MagicNumberJSInspection.java | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/MagicNumberJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/MagicNumberJSInspection.java index 3c9cae8b..a3950054 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/MagicNumberJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/MagicNumberJSInspection.java @@ -13,28 +13,22 @@ import jakarta.annotation.Nonnull; import org.jetbrains.annotations.NonNls; -import java.util.Collections; -import java.util.HashSet; import java.util.Set; @ExtensionImpl public class MagicNumberJSInspection extends JavaScriptInspection { @NonNls - private static final String[] s_specialCaseLiteralArray = new String[]{ + private static final Set s_specialCaseLiterals = Set.of( "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "0L", "1L", "2L", "0l", "1l", "2l", "0.0", "1.0", "0.0F", "1.0F", "0.0f", "1.0f" - }; + ); - /** - * @noinspection StaticCollection - */ - private static final Set s_specialCaseLiterals = new HashSet<>(23); - - static { - Collections.addAll(s_specialCaseLiterals, s_specialCaseLiteralArray); + @Override + public boolean isEnabledByDefault() { + return false; } @Override @@ -67,6 +61,7 @@ public BaseInspectionVisitor buildVisitor() { private static class MagicNumberVisitor extends BaseInspectionVisitor { @Override + @RequiredReadAction public void visitJSLiteralExpression(@Nonnull JSSimpleLiteralExpression expression) { super.visitJSLiteralExpression(expression); @@ -92,6 +87,7 @@ private static boolean isNumeric(String text) { return Character.isDigit(firstChar) || firstChar == '.'; } + @RequiredReadAction private static boolean isDeclaredConstant(JSLiteralExpression expression) { final JSFunction containingFunction = PsiTreeUtil.getParentOfType(expression, JSFunction.class); if (containingFunction != null) { From a90b0e2da630cd85643534ba163fc4e238faf92d Mon Sep 17 00:00:00 2001 From: Valery Semenchuk Date: Sun, 26 Jan 2025 16:12:51 +0400 Subject: [PATCH 110/150] miss dep --- lang-version-impl/ecmascript-impl/pom.xml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lang-version-impl/ecmascript-impl/pom.xml b/lang-version-impl/ecmascript-impl/pom.xml index 1da08fbb..59c8795b 100644 --- a/lang-version-impl/ecmascript-impl/pom.xml +++ b/lang-version-impl/ecmascript-impl/pom.xml @@ -75,6 +75,15 @@ ${project.groupId} com.intellij.xml ${project.version} + provided + + + + + consulo + consulo-ide-impl + ${project.version} + provided \ No newline at end of file From b5362ccbfc0dceda8fd3718c1866e09f82968c1e Mon Sep 17 00:00:00 2001 From: Valery Semenchuk Date: Thu, 30 Jan 2025 12:54:04 +0400 Subject: [PATCH 111/150] simplified pusher --- .../lang/JavaScriptLanguageVersionPusher.java | 41 +------------------ 1 file changed, 1 insertion(+), 40 deletions(-) diff --git a/plugin/src/main/java/consulo/javascript/impl/lang/JavaScriptLanguageVersionPusher.java b/plugin/src/main/java/consulo/javascript/impl/lang/JavaScriptLanguageVersionPusher.java index 993ede74..2570f9f8 100644 --- a/plugin/src/main/java/consulo/javascript/impl/lang/JavaScriptLanguageVersionPusher.java +++ b/plugin/src/main/java/consulo/javascript/impl/lang/JavaScriptLanguageVersionPusher.java @@ -11,8 +11,6 @@ import consulo.module.Module; import consulo.module.content.FilePropertyPusher; import consulo.module.content.PushedFilePropertiesUpdater; -import consulo.module.extension.ModuleExtension; -import consulo.module.extension.event.ModuleExtensionChangeListener; import consulo.project.Project; import consulo.util.dataholder.Key; import consulo.util.lang.ObjectUtil; @@ -24,8 +22,6 @@ import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; -import java.util.HashSet; -import java.util.Set; /** * @author VISTALL @@ -35,32 +31,6 @@ public class JavaScriptLanguageVersionPusher implements FilePropertyPusher { private static final FileAttribute ourFileAttribute = new FileAttribute("javascript-version", 2, false); - private static final Key> ourChangedModulesKey = Key.create("javascript-change-marker"); - - @Override - public void initExtra(@Nonnull Project project) { - project.getMessageBus().connect().subscribe( - ModuleExtensionChangeListener.class, - (oldExtension, newExtension) -> { - if (oldExtension instanceof JavaScriptModuleExtension oldJsExtension && newExtension instanceof JavaScriptModuleExtension newJsExtension) { - if (((JavaScriptModuleExtension)oldExtension).getLanguageVersion() != ((JavaScriptModuleExtension)newExtension).getLanguageVersion()) { - addChanged(project, newExtension); - } - } - }); - } - - private void addChanged(Project project, ModuleExtension newExtension) { - Set changedModules = project.getUserData(ourChangedModulesKey); - if (changedModules == null) { - changedModules = new HashSet<>(); - } - - project.putUserData(ourChangedModulesKey, changedModules); - - changedModules.add(newExtension.getModule().getName()); - } - @Nonnull @Override public Key getFileDataKey() { @@ -141,16 +111,7 @@ public void persistAttribute( @Override public void afterRootsChanged(@Nonnull Project project) { - Set changedModules = project.getUserData(ourChangedModulesKey); - if (changedModules == null) { - return; - } - - project.putUserData(ourChangedModulesKey, null); - - if (!changedModules.isEmpty()) { - PushedFilePropertiesUpdater.getInstance(project).pushAll(this); - } + PushedFilePropertiesUpdater.getInstance(project).pushAll(this); } @Nonnull From 4a04082e5d86381b0fdd8d9329f13999d7178b49 Mon Sep 17 00:00:00 2001 From: Valery Semenchuk Date: Thu, 27 Mar 2025 11:40:24 +0400 Subject: [PATCH 112/150] fix javascript bad character lexing --- .../src/main/java/com/intellij/lang/javascript/JavaScript.flex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/JavaScript.flex b/base-impl/src/main/java/com/intellij/lang/javascript/JavaScript.flex index 2f062db9..5c81669b 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/JavaScript.flex +++ b/base-impl/src/main/java/com/intellij/lang/javascript/JavaScript.flex @@ -412,4 +412,4 @@ FIELD_OR_METHOD={IDENTIFIER} ("(" [^ \\)]* ")"? )? "]]>" { yybegin(YYINITIAL); return JSTokenTypes.CDATA_END; } " Date: Sat, 12 Apr 2025 18:21:18 +0300 Subject: [PATCH 113/150] Refactoring JSClassSearch. --- .../lang/javascript/search/JSClassSearch.java | 58 +++++++++---------- 1 file changed, 26 insertions(+), 32 deletions(-) diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/search/JSClassSearch.java b/base-impl/src/main/java/com/intellij/lang/javascript/search/JSClassSearch.java index 2e3eeb2c..f755a218 100644 --- a/base-impl/src/main/java/com/intellij/lang/javascript/search/JSClassSearch.java +++ b/base-impl/src/main/java/com/intellij/lang/javascript/search/JSClassSearch.java @@ -20,23 +20,21 @@ import com.intellij.lang.javascript.psi.JSReferenceList; import consulo.annotation.access.RequiredReadAction; import consulo.application.util.function.CommonProcessors; -import consulo.application.util.function.Processor; import consulo.application.util.query.Query; import consulo.application.util.query.QueryExecutor; import consulo.application.util.query.QueryFactory; -import consulo.component.extension.Extensions; import consulo.content.scope.SearchScope; import consulo.javascript.language.psi.stub.JavaScriptIndexKeys; import consulo.language.psi.scope.GlobalSearchScope; import consulo.language.psi.stub.StubIndex; import consulo.language.psi.stub.StubIndexKey; import consulo.project.Project; - import jakarta.annotation.Nonnull; import java.util.Collection; import java.util.HashSet; import java.util.Set; +import java.util.function.Predicate; public abstract class JSClassSearch implements QueryExecutor { public static class SearchParameters { @@ -97,16 +95,16 @@ protected JSClass[] getSupers(JSClass candidate) { @Override @RequiredReadAction - public boolean execute(@Nonnull SearchParameters queryParameters, @Nonnull Processor consumer) { - final Set visited = new HashSet<>(); // no abstract classes in ActionScript ! + public boolean execute(@Nonnull SearchParameters queryParameters, @Nonnull Predicate consumer) { + Set visited = new HashSet<>(); // no abstract classes in ActionScript ! if (queryParameters.isCheckDeepInheritance()) { - Processor consumerCopy = consumer; - consumer = new Processor<>() { + Predicate consumerCopy = consumer; + consumer = new Predicate<>() { @Override @RequiredReadAction - public boolean process(JSClass jsClass) { - return consumerCopy.process(jsClass) && CLASS_SEARCH_EXECUTOR.processDirectInheritors( + public boolean test(JSClass jsClass) { + return consumerCopy.test(jsClass) && CLASS_SEARCH_EXECUTOR.processDirectInheritors( jsClass, this, false, @@ -117,7 +115,7 @@ public boolean process(JSClass jsClass) { }; } - Processor consumerToUse = consumer; + Predicate consumerToUse = consumer; boolean b = processDirectInheritors( queryParameters.getTargetClass(), consumerToUse, @@ -129,15 +127,13 @@ public boolean process(JSClass jsClass) { return searchClassInheritors( queryParameters.getTargetClass(), queryParameters.isCheckDeepInheritance() - ).forEach(jsClass -> { - return processDirectInheritors( - jsClass, - consumerToUse, - queryParameters.isCheckDeepInheritance(), - visited, - queryParameters.getScope() - ); - }); + ).forEach((Predicate)jsClass -> processDirectInheritors( + jsClass, + consumerToUse, + queryParameters.isCheckDeepInheritance(), + visited, + queryParameters.getScope() + )); } return b; } @@ -179,7 +175,7 @@ protected Collection getInheritors( @Override @RequiredReadAction - public boolean execute(@Nonnull SearchParameters queryParameters, @Nonnull Processor consumer) { + public boolean execute(@Nonnull SearchParameters queryParameters, @Nonnull Predicate consumer) { return processDirectInheritors( queryParameters.getTargetClass(), consumer, @@ -191,11 +187,11 @@ public boolean execute(@Nonnull SearchParameters queryParameters, @Nonnull Proce @RequiredReadAction protected boolean processDirectInheritors( - final JSClass superClass, - final Processor consumer, - final boolean checkDeep, + JSClass superClass, + Predicate consumer, + boolean checkDeep, Set processed, - final GlobalSearchScope scope + GlobalSearchScope scope ) { if (processed != null) { if (processed.contains(superClass)) { @@ -214,15 +210,13 @@ protected boolean processDirectInheritors( } Set temp = processed; - Processor processor = candidate -> { + Predicate processor = candidate -> { JSClass[] classes = getSupers(candidate); if (classes != null) { for (JSClass superClassCandidate : classes) { if (superClassCandidate.isEquivalentTo(superClass)) { - if (!consumer.process(candidate)) { - return false; - } - if (checkDeep && !processDirectInheritors(candidate, consumer, checkDeep, temp, scope)) { + if (!consumer.test(candidate) + || checkDeep && !processDirectInheritors(candidate, consumer, checkDeep, temp, scope)) { return false; } } @@ -238,15 +232,15 @@ protected boolean processDirectInheritors( for (JSReferenceList referenceList : collectProcessor.getResults()) { JSClass parent = (JSClass)referenceList.getParent(); - if (!processor.process(parent)) { + if (!processor.test(parent)) { return false; } } - for (JSClassInheritorsProvider provider : Extensions.getExtensions(JSClassInheritorsProvider.EP_NAME)) { + for (JSClassInheritorsProvider provider : JSClassInheritorsProvider.EP_NAME.getExtensionList()) { Collection inheritors = getInheritors(provider, name, project, scope); for (JSClass inheritor : inheritors) { - if (!processor.process(inheritor)) { + if (!processor.test(inheritor)) { return false; } } From e1e6518f915785c3675f093fbea0e891da373475 Mon Sep 17 00:00:00 2001 From: UNV Date: Sun, 13 Apr 2025 03:55:43 +0300 Subject: [PATCH 114/150] Refactoring query executors. --- .../search/JSDefinitionsSearchExecutor.java | 17 ++++++++++------- .../impl/search/JSFunctionsSearch.java | 12 +++++++----- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSDefinitionsSearchExecutor.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSDefinitionsSearchExecutor.java index c62edcbb..018c3cb1 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSDefinitionsSearchExecutor.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSDefinitionsSearchExecutor.java @@ -36,6 +36,8 @@ import jakarta.annotation.Nonnull; +import java.util.function.Predicate; + /** * @author Maxim.Mossienko * @since 2008-04-28 @@ -45,10 +47,10 @@ public class JSDefinitionsSearchExecutor implements DefinitionsScopedSearchExecu @Override @RequiredReadAction public boolean execute( - @Nonnull final DefinitionsScopedSearch.SearchParameters parameters, - @Nonnull final Processor consumer + @Nonnull DefinitionsScopedSearch.SearchParameters parameters, + @Nonnull Predicate consumer ) { - final PsiElement sourceElement = parameters.getElement(); + PsiElement sourceElement = parameters.getElement(); if (sourceElement instanceof PsiNamedElement namedElement && namedElement.getLanguage().isKindOf(JavaScriptLanguage.INSTANCE)) { ReferencesSearch.search(sourceElement, GlobalSearchScope.projectScope(sourceElement.getProject())).forEach(t -> { if (t instanceof JSReferenceExpression refExpr) { @@ -62,12 +64,13 @@ public boolean execute( && !JavaScriptIndex.isFromPredefinedFile(psiElement.getContainingFile()) && sourceElement != psiElement) { if (psiElement instanceof JSFunction fun && sourceElement instanceof JSFunction sourceFun) { - if ((sourceFun.isGetProperty() && fun.isSetProperty()) || (sourceFun.isSetProperty() && fun.isGetProperty())) { + if ((sourceFun.isGetProperty() && fun.isSetProperty()) + || (sourceFun.isSetProperty() && fun.isGetProperty())) { return true; } } - if ((psiElement != sourceElement || !(psiElement instanceof JSClass)) && !consumer.process(psiElement)) { + if ((psiElement != sourceElement || !(psiElement instanceof JSClass)) && !consumer.test(psiElement)) { return false; } } @@ -81,7 +84,7 @@ public boolean execute( }); if (sourceElement instanceof JSClass clazz) { - Processor delegatingProcessor = consumer::process; + Predicate delegatingProcessor = consumer::test; JSClassSearch.searchClassInheritors(clazz, true).forEach(delegatingProcessor); if (clazz.isInterface()) { @@ -89,7 +92,7 @@ public boolean execute( } } else if (sourceElement instanceof JSFunction baseFunction) { - Processor delegatingProcessor = consumer::process; + Predicate delegatingProcessor = consumer::test; JSFunctionsSearch.searchOverridingFunctions(baseFunction, true).forEach(delegatingProcessor); PsiElement parent = baseFunction.getParent(); diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSFunctionsSearch.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSFunctionsSearch.java index da3c2c11..adcc72f2 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSFunctionsSearch.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSFunctionsSearch.java @@ -21,13 +21,14 @@ import com.intellij.lang.javascript.psi.resolve.JSResolveUtil; import com.intellij.lang.javascript.search.JSClassSearch; import consulo.annotation.access.RequiredReadAction; -import consulo.application.util.function.Processor; import consulo.application.util.query.Query; import consulo.application.util.query.QueryExecutor; import consulo.application.util.query.QueryFactory; import consulo.language.psi.PsiElement; import jakarta.annotation.Nonnull; +import java.util.function.Predicate; + public abstract class JSFunctionsSearch implements QueryExecutor { public static class SearchParameters { private JSFunction myBaseFunction; @@ -72,20 +73,21 @@ protected Query makeQuery(SearchParameters queryParameters, PsiElement } @Override - public boolean execute(SearchParameters queryParameters, final @Nonnull Processor consumer) { + public boolean execute(SearchParameters queryParameters, final @Nonnull Predicate consumer) { final JSFunction baseFunction = queryParameters.getBaseFunction(); PsiElement clazz = JSResolveUtil.findParent(baseFunction); + //noinspection SimplifiableIfStatement if (!(clazz instanceof JSClass)) { return true; } - return makeQuery(queryParameters, clazz).forEach(new Processor<>() { + return makeQuery(queryParameters, clazz).forEach(new Predicate<>() { @Override @RequiredReadAction - public boolean process(final JSClass jsClass) { + public boolean test(final JSClass jsClass) { JSFunction function = jsClass.findFunctionByNameAndKind(baseFunction.getName(), baseFunction.getKind()); - return function == null || consumer.process(function); + return function == null || consumer.test(function); } }); } From 767a3642237333ae5cdd3e7540819d816a0b8dc8 Mon Sep 17 00:00:00 2001 From: UNV Date: Sun, 20 Apr 2025 12:58:17 +0300 Subject: [PATCH 115/150] Reformatting web-browser-impl. --- .../ClientJavaScriptModuleExtension.java | 160 ++++++++---------- .../ClientJavaScriptModuleExtensionPanel.java | 58 +++---- ...ientJavaScriptModuleExtensionProvider.java | 77 ++++----- ...lientJavaScriptMutableModuleExtension.java | 87 +++++----- ...ntJavaScriptPredefinedBundlesProvider.java | 75 ++++---- .../module/sdk/ClientJavaScriptSdkType.java | 88 +++++----- .../src/main/java/module-info.java | 6 +- 7 files changed, 252 insertions(+), 299 deletions(-) diff --git a/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptModuleExtension.java b/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptModuleExtension.java index c2646b17..9fa2f390 100644 --- a/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptModuleExtension.java +++ b/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptModuleExtension.java @@ -23,104 +23,88 @@ * @author VISTALL * @since 29.06.14 */ -public class ClientJavaScriptModuleExtension extends ModuleExtensionBase implements JavaScriptModuleExtension -{ - private SdkModuleInheritableNamedPointerImpl myPointer; +public class ClientJavaScriptModuleExtension extends ModuleExtensionBase implements JavaScriptModuleExtension { + private SdkModuleInheritableNamedPointerImpl myPointer; - protected LanguageVersion myLanguageVersion = StandardJavaScriptVersions.getInstance().getDefaultVersion(); + protected LanguageVersion myLanguageVersion = StandardJavaScriptVersions.getInstance().getDefaultVersion(); - public ClientJavaScriptModuleExtension(@Nonnull String id, @Nonnull ModuleRootLayer rootLayer) - { - super(id, rootLayer); - myPointer = new SdkModuleInheritableNamedPointerImpl(rootLayer, id) - { - @Nullable - @Override - public String getItemNameFromModule(@Nonnull Module module) - { - ClientJavaScriptModuleExtension extension = ModuleUtilCore.getExtension(module, ClientJavaScriptModuleExtension.class); - if(extension == null) - { - return null; - } - return extension.getSdkName(); - } + public ClientJavaScriptModuleExtension(@Nonnull String id, @Nonnull ModuleRootLayer rootLayer) { + super(id, rootLayer); + myPointer = new SdkModuleInheritableNamedPointerImpl(rootLayer, id) { + @Nullable + @Override + public String getItemNameFromModule(@Nonnull Module module) { + ClientJavaScriptModuleExtension extension = ModuleUtilCore.getExtension(module, ClientJavaScriptModuleExtension.class); + if (extension == null) { + return null; + } + return extension.getSdkName(); + } - @Nullable - @Override - public Sdk getItemFromModule(@Nonnull Module module) - { - ClientJavaScriptModuleExtension extension = ModuleUtilCore.getExtension(module, ClientJavaScriptModuleExtension.class); - if(extension == null) - { - return null; - } - return extension.getSdk(); - } - }; + @Nullable + @Override + public Sdk getItemFromModule(@Nonnull Module module) { + ClientJavaScriptModuleExtension extension = ModuleUtilCore.getExtension(module, ClientJavaScriptModuleExtension.class); + if (extension == null) { + return null; + } + return extension.getSdk(); + } + }; - Sdk sdkByType = SdkTable.getInstance().findPredefinedSdkByType(ClientJavaScriptSdkType.getInstance()); - myPointer.set(null, sdkByType); - } + Sdk sdkByType = SdkTable.getInstance().findPredefinedSdkByType(ClientJavaScriptSdkType.getInstance()); + myPointer.set(null, sdkByType); + } - @RequiredReadAction - @Override - protected void loadStateImpl(@Nonnull Element element) - { - super.loadStateImpl(element); - myLanguageVersion = StandardJavaScriptVersions.getInstance().findVersionById(element.getAttributeValue("language-version")); - } + @RequiredReadAction + @Override + protected void loadStateImpl(@Nonnull Element element) { + super.loadStateImpl(element); + myLanguageVersion = StandardJavaScriptVersions.getInstance().findVersionById(element.getAttributeValue("language-version")); + } - @Override - protected void getStateImpl(@Nonnull Element element) - { - super.getStateImpl(element); - if(myLanguageVersion != StandardJavaScriptVersions.getInstance().getDefaultVersion()) - { - element.setAttribute("language-version", myLanguageVersion.getId()); - } - } + @Override + protected void getStateImpl(@Nonnull Element element) { + super.getStateImpl(element); + if (myLanguageVersion != StandardJavaScriptVersions.getInstance().getDefaultVersion()) { + element.setAttribute("language-version", myLanguageVersion.getId()); + } + } - @Nonnull - @Override - public ModuleInheritableNamedPointer getInheritableSdk() - { - return myPointer; - } + @Nonnull + @Override + public ModuleInheritableNamedPointer getInheritableSdk() { + return myPointer; + } - @Nullable - @Override - public Sdk getSdk() - { - return myPointer.get(); - } + @Nullable + @Override + public Sdk getSdk() { + return myPointer.get(); + } - @Nullable - @Override - public String getSdkName() - { - return myPointer.getName(); - } + @Nullable + @Override + public String getSdkName() { + return myPointer.getName(); + } - @Nonnull - @Override - public Class getSdkTypeClass() - { - throw new IllegalArgumentException(); - } + @Nonnull + @Override + public Class getSdkTypeClass() { + throw new IllegalArgumentException(); + } - @Nonnull - @Override - public LanguageVersion getLanguageVersion() - { - return myLanguageVersion; - } + @Nonnull + @Override + public LanguageVersion getLanguageVersion() { + return myLanguageVersion; + } - @RequiredReadAction - @Override - public void commit(@Nonnull ClientJavaScriptModuleExtension mutableModuleExtension) - { - super.commit(mutableModuleExtension); - myLanguageVersion = mutableModuleExtension.getLanguageVersion(); - } + @RequiredReadAction + @Override + public void commit(@Nonnull ClientJavaScriptModuleExtension mutableModuleExtension) { + super.commit(mutableModuleExtension); + myLanguageVersion = mutableModuleExtension.getLanguageVersion(); + } } diff --git a/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptModuleExtensionPanel.java b/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptModuleExtensionPanel.java index a56d4e46..66a1881f 100644 --- a/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptModuleExtensionPanel.java +++ b/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptModuleExtensionPanel.java @@ -32,36 +32,36 @@ * @author VISTALL * @since 12.12.2015 */ -public class ClientJavaScriptModuleExtensionPanel extends JPanel -{ - public ClientJavaScriptModuleExtensionPanel(final JavaScriptMutableModuleExtension extension) - { - super(new VerticalFlowLayout(true, false)); +public class ClientJavaScriptModuleExtensionPanel extends JPanel { + public ClientJavaScriptModuleExtensionPanel(final JavaScriptMutableModuleExtension extension) { + super(new VerticalFlowLayout(true, false)); - List validLanguageVersions = StandardJavaScriptVersions.getInstance().getValidLanguageVersions(); + List validLanguageVersions = StandardJavaScriptVersions.getInstance().getValidLanguageVersions(); - ComboBox languageVersionComboBox = new ComboBox(new CollectionComboBoxModel(validLanguageVersions, extension.getLanguageVersion())); - languageVersionComboBox.addItemListener(new ItemListener() - { - @Override - public void itemStateChanged(ItemEvent e) - { - if(e.getStateChange() == ItemEvent.SELECTED) - { - //noinspection unchecked - extension.setLanguageVersion((LanguageVersion) e.getItem()); - } - } - }); - languageVersionComboBox.setRenderer(new ColoredListCellRenderer<>() - { - @Override - protected void customizeCellRenderer(@Nonnull JList list, JavaScriptLanguageVersion value, int index, boolean selected, boolean hasFocus) - { - append(value.getPresentableName()); - } - }); + ComboBox languageVersionComboBox = + new ComboBox(new CollectionComboBoxModel(validLanguageVersions, extension.getLanguageVersion())); + languageVersionComboBox.addItemListener(new ItemListener() { + @Override + public void itemStateChanged(ItemEvent e) { + if (e.getStateChange() == ItemEvent.SELECTED) { + //noinspection unchecked + extension.setLanguageVersion((LanguageVersion)e.getItem()); + } + } + }); + languageVersionComboBox.setRenderer(new ColoredListCellRenderer<>() { + @Override + protected void customizeCellRenderer( + @Nonnull JList list, + JavaScriptLanguageVersion value, + int index, + boolean selected, + boolean hasFocus + ) { + append(value.getPresentableName()); + } + }); - add(LabeledComponent.create(languageVersionComboBox, "Default Version")); - } + add(LabeledComponent.create(languageVersionComboBox, "Default Version")); + } } diff --git a/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptModuleExtensionProvider.java b/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptModuleExtensionProvider.java index c44f06b1..d52f0a32 100644 --- a/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptModuleExtensionProvider.java +++ b/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptModuleExtensionProvider.java @@ -16,46 +16,39 @@ * @since 29-Aug-22 */ @ExtensionImpl -public class ClientJavaScriptModuleExtensionProvider implements ModuleExtensionProvider -{ - @Nonnull - @Override - public String getId() - { - return "client-javascript"; - } - - @Override - public boolean isAllowMixin() - { - return true; - } - - @Nonnull - @Override - public LocalizeValue getName() - { - return LocalizeValue.localizeTODO("JavaScript (Client)"); - } - - @Nonnull - @Override - public Image getIcon() - { - return JavaScriptIconGroup.javascriptmodule(); - } - - @Nonnull - @Override - public ModuleExtension createImmutableExtension(@Nonnull ModuleRootLayer moduleRootLayer) - { - return new ClientJavaScriptModuleExtension(getId(), moduleRootLayer); - } - - @Nonnull - @Override - public MutableModuleExtension createMutableExtension(@Nonnull ModuleRootLayer moduleRootLayer) - { - return new ClientJavaScriptMutableModuleExtension(getId(), moduleRootLayer); - } +public class ClientJavaScriptModuleExtensionProvider implements ModuleExtensionProvider { + @Nonnull + @Override + public String getId() { + return "client-javascript"; + } + + @Override + public boolean isAllowMixin() { + return true; + } + + @Nonnull + @Override + public LocalizeValue getName() { + return LocalizeValue.localizeTODO("JavaScript (Client)"); + } + + @Nonnull + @Override + public Image getIcon() { + return JavaScriptIconGroup.javascriptmodule(); + } + + @Nonnull + @Override + public ModuleExtension createImmutableExtension(@Nonnull ModuleRootLayer moduleRootLayer) { + return new ClientJavaScriptModuleExtension(getId(), moduleRootLayer); + } + + @Nonnull + @Override + public MutableModuleExtension createMutableExtension(@Nonnull ModuleRootLayer moduleRootLayer) { + return new ClientJavaScriptMutableModuleExtension(getId(), moduleRootLayer); + } } diff --git a/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptMutableModuleExtension.java b/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptMutableModuleExtension.java index 83ee3396..a5870ab0 100644 --- a/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptMutableModuleExtension.java +++ b/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptMutableModuleExtension.java @@ -14,57 +14,50 @@ import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; + import javax.swing.*; /** * @author VISTALL * @since 29.06.14 */ -public class ClientJavaScriptMutableModuleExtension extends ClientJavaScriptModuleExtension implements JavaScriptMutableModuleExtension, SwingMutableModuleExtension -{ - public ClientJavaScriptMutableModuleExtension(@Nonnull String id, @Nonnull ModuleRootLayer rootModel) - { - super(id, rootModel); - } - - @Nonnull - @Override - public MutableModuleInheritableNamedPointer getInheritableSdk() - { - return (MutableModuleInheritableNamedPointer) super.getInheritableSdk(); - } - - @RequiredUIAccess - @Nullable - @Override - public Component createConfigurationComponent(@Nonnull Disposable disposable, @Nonnull Runnable runnable) - { - return VerticalLayout.create().add(Label.create("Unsupported UI")); - } - - @RequiredUIAccess - @Nullable - @Override - public JComponent createConfigurablePanel(@Nonnull Disposable disposable, @Nonnull Runnable runnable) - { - return new ClientJavaScriptModuleExtensionPanel(this); - } - - @Override - public void setEnabled(boolean val) - { - myIsEnabled = val; - } - - @Override - public boolean isModified(@Nonnull ClientJavaScriptModuleExtension originalExtension) - { - return myIsEnabled != originalExtension.isEnabled() || myLanguageVersion != originalExtension.getLanguageVersion(); - } - - @Override - public void setLanguageVersion(@Nonnull LanguageVersion languageVersion) - { - myLanguageVersion = languageVersion; - } +public class ClientJavaScriptMutableModuleExtension extends ClientJavaScriptModuleExtension implements JavaScriptMutableModuleExtension, SwingMutableModuleExtension { + public ClientJavaScriptMutableModuleExtension(@Nonnull String id, @Nonnull ModuleRootLayer rootModel) { + super(id, rootModel); + } + + @Nonnull + @Override + public MutableModuleInheritableNamedPointer getInheritableSdk() { + return (MutableModuleInheritableNamedPointer)super.getInheritableSdk(); + } + + @RequiredUIAccess + @Nullable + @Override + public Component createConfigurationComponent(@Nonnull Disposable disposable, @Nonnull Runnable runnable) { + return VerticalLayout.create().add(Label.create("Unsupported UI")); + } + + @RequiredUIAccess + @Nullable + @Override + public JComponent createConfigurablePanel(@Nonnull Disposable disposable, @Nonnull Runnable runnable) { + return new ClientJavaScriptModuleExtensionPanel(this); + } + + @Override + public void setEnabled(boolean val) { + myIsEnabled = val; + } + + @Override + public boolean isModified(@Nonnull ClientJavaScriptModuleExtension originalExtension) { + return myIsEnabled != originalExtension.isEnabled() || myLanguageVersion != originalExtension.getLanguageVersion(); + } + + @Override + public void setLanguageVersion(@Nonnull LanguageVersion languageVersion) { + myLanguageVersion = languageVersion; + } } diff --git a/web-browser-impl/src/main/java/consulo/javascript/client/module/sdk/ClientJavaScriptPredefinedBundlesProvider.java b/web-browser-impl/src/main/java/consulo/javascript/client/module/sdk/ClientJavaScriptPredefinedBundlesProvider.java index ee53edc7..0fd13cda 100644 --- a/web-browser-impl/src/main/java/consulo/javascript/client/module/sdk/ClientJavaScriptPredefinedBundlesProvider.java +++ b/web-browser-impl/src/main/java/consulo/javascript/client/module/sdk/ClientJavaScriptPredefinedBundlesProvider.java @@ -19,45 +19,38 @@ * @since 29.06.14 */ @ExtensionImpl -public class ClientJavaScriptPredefinedBundlesProvider extends PredefinedBundlesProvider -{ - public static final String ANY_JAVASCRIPT_SDK = "JavaScript SDK (Any Browser)"; - - private Map ourMapping = Map.of("clientAny", ANY_JAVASCRIPT_SDK); - - @Override - public void createBundles(@Nonnull Context context) - { - File sdkDir = new File(PluginManager.getPluginPath(ClientJavaScriptPredefinedBundlesProvider.class), "sdk"); - if(!sdkDir.exists()) - { - return; - } - - for(File file : sdkDir.listFiles()) - { - String name = ourMapping.get(file.getName()); - if(name == null) - { - continue; - } - - VirtualFile fileByIoFile = LocalFileSystem.getInstance().findFileByIoFile(file); - if(fileByIoFile == null) - { - continue; - } - Sdk sdk = context.createSdkWithName(ClientJavaScriptSdkType.getInstance(), name); - - SdkModificator modificator = sdk.getSdkModificator(); - modificator.setHomePath(fileByIoFile.getPath()); - modificator.setVersionString("1"); - for(VirtualFile child : fileByIoFile.getChildren()) - { - modificator.addRoot(child, BinariesOrderRootType.getInstance()); - modificator.addRoot(child, SourcesOrderRootType.getInstance()); - } - modificator.commitChanges(); - } - } +public class ClientJavaScriptPredefinedBundlesProvider extends PredefinedBundlesProvider { + public static final String ANY_JAVASCRIPT_SDK = "JavaScript SDK (Any Browser)"; + + private Map ourMapping = Map.of("clientAny", ANY_JAVASCRIPT_SDK); + + @Override + public void createBundles(@Nonnull Context context) { + File sdkDir = new File(PluginManager.getPluginPath(ClientJavaScriptPredefinedBundlesProvider.class), "sdk"); + if (!sdkDir.exists()) { + return; + } + + for (File file : sdkDir.listFiles()) { + String name = ourMapping.get(file.getName()); + if (name == null) { + continue; + } + + VirtualFile fileByIoFile = LocalFileSystem.getInstance().findFileByIoFile(file); + if (fileByIoFile == null) { + continue; + } + Sdk sdk = context.createSdkWithName(ClientJavaScriptSdkType.getInstance(), name); + + SdkModificator modificator = sdk.getSdkModificator(); + modificator.setHomePath(fileByIoFile.getPath()); + modificator.setVersionString("1"); + for (VirtualFile child : fileByIoFile.getChildren()) { + modificator.addRoot(child, BinariesOrderRootType.getInstance()); + modificator.addRoot(child, SourcesOrderRootType.getInstance()); + } + modificator.commitChanges(); + } + } } diff --git a/web-browser-impl/src/main/java/consulo/javascript/client/module/sdk/ClientJavaScriptSdkType.java b/web-browser-impl/src/main/java/consulo/javascript/client/module/sdk/ClientJavaScriptSdkType.java index 1d0f215a..0189b20c 100644 --- a/web-browser-impl/src/main/java/consulo/javascript/client/module/sdk/ClientJavaScriptSdkType.java +++ b/web-browser-impl/src/main/java/consulo/javascript/client/module/sdk/ClientJavaScriptSdkType.java @@ -16,61 +16,51 @@ * @since 29.06.14 */ @ExtensionImpl -public class ClientJavaScriptSdkType extends SdkType -{ - @Nonnull - public static ClientJavaScriptSdkType getInstance() - { - return EP_NAME.findExtensionOrFail(ClientJavaScriptSdkType.class); - } +public class ClientJavaScriptSdkType extends SdkType { + @Nonnull + public static ClientJavaScriptSdkType getInstance() { + return EP_NAME.findExtensionOrFail(ClientJavaScriptSdkType.class); + } - public ClientJavaScriptSdkType() - { - super("CLIENT_JAVASCRIPT_SDK_TYPE"); - } + public ClientJavaScriptSdkType() { + super("CLIENT_JAVASCRIPT_SDK_TYPE"); + } - @Override - public boolean supportsUserAdd() - { - return false; - } + @Override + public boolean supportsUserAdd() { + return false; + } - @Override - public boolean isRootTypeApplicable(OrderRootType type) - { - return type == BinariesOrderRootType.getInstance() || type == SourcesOrderRootType.getInstance(); - } + @Override + public boolean isRootTypeApplicable(OrderRootType type) { + return type == BinariesOrderRootType.getInstance() || type == SourcesOrderRootType.getInstance(); + } - @Nonnull - @Override - public Image getIcon() - { - return JavaScriptIconGroup.javascriptmodule(); - } + @Nonnull + @Override + public Image getIcon() { + return JavaScriptIconGroup.javascriptmodule(); + } - @Override - public boolean isValidSdkHome(String path) - { - return false; - } + @Override + public boolean isValidSdkHome(String path) { + return false; + } - @Nullable - @Override - public String getVersionString(String sdkHome) - { - return "1"; - } + @Nullable + @Override + public String getVersionString(String sdkHome) { + return "1"; + } - @Override - public String suggestSdkName(String currentSdkName, String sdkHome) - { - return currentSdkName; - } + @Override + public String suggestSdkName(String currentSdkName, String sdkHome) { + return currentSdkName; + } - @Nonnull - @Override - public String getPresentableName() - { - return "Client JavaScript"; - } + @Nonnull + @Override + public String getPresentableName() { + return "Client JavaScript"; + } } diff --git a/web-browser-impl/src/main/java/module-info.java b/web-browser-impl/src/main/java/module-info.java index 84b86bbd..3d1a5e0d 100644 --- a/web-browser-impl/src/main/java/module-info.java +++ b/web-browser-impl/src/main/java/module-info.java @@ -4,8 +4,8 @@ */ module consulo.javascript.web.browser.impl { - // TODO remove in future - requires java.desktop; + // TODO remove in future + requires java.desktop; - requires consulo.javascript.base.impl; + requires consulo.javascript.base.impl; } \ No newline at end of file From 8b7d8568c9a563a2672c558206244e69f63f6f07 Mon Sep 17 00:00:00 2001 From: UNV Date: Sun, 20 Apr 2025 13:08:54 +0300 Subject: [PATCH 116/150] Compilation fix. Some refactoring. --- .../ClientJavaScriptModuleExtension.java | 2 +- .../ClientJavaScriptModuleExtensionPanel.java | 18 +++++++----------- ...lientJavaScriptModuleExtensionProvider.java | 2 +- ...ClientJavaScriptMutableModuleExtension.java | 2 +- ...entJavaScriptPredefinedBundlesProvider.java | 2 +- .../module/sdk/ClientJavaScriptSdkType.java | 5 +++-- .../src/main/java/module-info.java | 2 +- 7 files changed, 15 insertions(+), 18 deletions(-) diff --git a/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptModuleExtension.java b/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptModuleExtension.java index 9fa2f390..a59d185e 100644 --- a/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptModuleExtension.java +++ b/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptModuleExtension.java @@ -21,7 +21,7 @@ /** * @author VISTALL - * @since 29.06.14 + * @since 2014-06-29 */ public class ClientJavaScriptModuleExtension extends ModuleExtensionBase implements JavaScriptModuleExtension { private SdkModuleInheritableNamedPointerImpl myPointer; diff --git a/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptModuleExtensionPanel.java b/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptModuleExtensionPanel.java index 66a1881f..fbaf1e38 100644 --- a/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptModuleExtensionPanel.java +++ b/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptModuleExtensionPanel.java @@ -25,28 +25,24 @@ import javax.swing.*; import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; import java.util.List; /** * @author VISTALL - * @since 12.12.2015 + * @since 2015-12-12 */ public class ClientJavaScriptModuleExtensionPanel extends JPanel { - public ClientJavaScriptModuleExtensionPanel(final JavaScriptMutableModuleExtension extension) { + public ClientJavaScriptModuleExtensionPanel(JavaScriptMutableModuleExtension extension) { super(new VerticalFlowLayout(true, false)); List validLanguageVersions = StandardJavaScriptVersions.getInstance().getValidLanguageVersions(); ComboBox languageVersionComboBox = - new ComboBox(new CollectionComboBoxModel(validLanguageVersions, extension.getLanguageVersion())); - languageVersionComboBox.addItemListener(new ItemListener() { - @Override - public void itemStateChanged(ItemEvent e) { - if (e.getStateChange() == ItemEvent.SELECTED) { - //noinspection unchecked - extension.setLanguageVersion((LanguageVersion)e.getItem()); - } + new ComboBox<>(new CollectionComboBoxModel<>(validLanguageVersions, (JavaScriptLanguageVersion)extension.getLanguageVersion())); + languageVersionComboBox.addItemListener(e -> { + if (e.getStateChange() == ItemEvent.SELECTED) { + //noinspection unchecked + extension.setLanguageVersion((LanguageVersion)e.getItem()); } }); languageVersionComboBox.setRenderer(new ColoredListCellRenderer<>() { diff --git a/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptModuleExtensionProvider.java b/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptModuleExtensionProvider.java index d52f0a32..b2876acb 100644 --- a/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptModuleExtensionProvider.java +++ b/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptModuleExtensionProvider.java @@ -13,7 +13,7 @@ /** * @author VISTALL - * @since 29-Aug-22 + * @since 2022-08-29 */ @ExtensionImpl public class ClientJavaScriptModuleExtensionProvider implements ModuleExtensionProvider { diff --git a/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptMutableModuleExtension.java b/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptMutableModuleExtension.java index a5870ab0..0608aa3f 100644 --- a/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptMutableModuleExtension.java +++ b/web-browser-impl/src/main/java/consulo/javascript/client/module/extension/ClientJavaScriptMutableModuleExtension.java @@ -19,7 +19,7 @@ /** * @author VISTALL - * @since 29.06.14 + * @since 2014-06-29 */ public class ClientJavaScriptMutableModuleExtension extends ClientJavaScriptModuleExtension implements JavaScriptMutableModuleExtension, SwingMutableModuleExtension { public ClientJavaScriptMutableModuleExtension(@Nonnull String id, @Nonnull ModuleRootLayer rootModel) { diff --git a/web-browser-impl/src/main/java/consulo/javascript/client/module/sdk/ClientJavaScriptPredefinedBundlesProvider.java b/web-browser-impl/src/main/java/consulo/javascript/client/module/sdk/ClientJavaScriptPredefinedBundlesProvider.java index 0fd13cda..7c376ece 100644 --- a/web-browser-impl/src/main/java/consulo/javascript/client/module/sdk/ClientJavaScriptPredefinedBundlesProvider.java +++ b/web-browser-impl/src/main/java/consulo/javascript/client/module/sdk/ClientJavaScriptPredefinedBundlesProvider.java @@ -16,7 +16,7 @@ /** * @author VISTALL - * @since 29.06.14 + * @since 2014-06-29 */ @ExtensionImpl public class ClientJavaScriptPredefinedBundlesProvider extends PredefinedBundlesProvider { diff --git a/web-browser-impl/src/main/java/consulo/javascript/client/module/sdk/ClientJavaScriptSdkType.java b/web-browser-impl/src/main/java/consulo/javascript/client/module/sdk/ClientJavaScriptSdkType.java index 0189b20c..60a95978 100644 --- a/web-browser-impl/src/main/java/consulo/javascript/client/module/sdk/ClientJavaScriptSdkType.java +++ b/web-browser-impl/src/main/java/consulo/javascript/client/module/sdk/ClientJavaScriptSdkType.java @@ -1,6 +1,7 @@ package consulo.javascript.client.module.sdk; import consulo.annotation.component.ExtensionImpl; +import consulo.application.Application; import consulo.content.OrderRootType; import consulo.content.base.BinariesOrderRootType; import consulo.content.base.SourcesOrderRootType; @@ -13,13 +14,13 @@ /** * @author VISTALL - * @since 29.06.14 + * @since 2014-06-29 */ @ExtensionImpl public class ClientJavaScriptSdkType extends SdkType { @Nonnull public static ClientJavaScriptSdkType getInstance() { - return EP_NAME.findExtensionOrFail(ClientJavaScriptSdkType.class); + return Application.get().getExtensionPoint(SdkType.class).findExtensionOrFail(ClientJavaScriptSdkType.class); } public ClientJavaScriptSdkType() { diff --git a/web-browser-impl/src/main/java/module-info.java b/web-browser-impl/src/main/java/module-info.java index 3d1a5e0d..4aea4fec 100644 --- a/web-browser-impl/src/main/java/module-info.java +++ b/web-browser-impl/src/main/java/module-info.java @@ -1,6 +1,6 @@ /** * @author VISTALL - * @since 29-Aug-22 + * @since 2022-08-29 */ module consulo.javascript.web.browser.impl { From 73d13b20b793085bcc575a6c6b493ae8f2f3a047 Mon Sep 17 00:00:00 2001 From: Valery Semenchuk Date: Fri, 23 May 2025 15:29:01 +0400 Subject: [PATCH 117/150] migrate to new highlight manager api --- .../javascript/impl/refactoring/JSBaseIntroduceHandler.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseIntroduceHandler.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseIntroduceHandler.java index a2c12284..690fe597 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseIntroduceHandler.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseIntroduceHandler.java @@ -365,10 +365,8 @@ protected T findAnchor(BaseIntroduceContext context, boolean replaceAllOccure private static ArrayList highlightOccurences(Project project, Editor editor, JSExpression[] occurences) { HighlightManager highlightManager = HighlightManager.getInstance(project); - EditorColorsManager colorsManager = EditorColorsManager.getInstance(); - TextAttributes attributes = colorsManager.getGlobalScheme().getAttributes(EditorColors.SEARCH_RESULT_ATTRIBUTES); ArrayList result = new ArrayList<>(); - highlightManager.addOccurrenceHighlights(editor, occurences, attributes, true, result); + highlightManager.addOccurrenceHighlights(editor, occurences, EditorColors.SEARCH_RESULT_ATTRIBUTES, true, result); WindowManager.getInstance().getStatusBar(project).setInfo(RefactoringLocalize.pressEscapeToRemoveTheHighlighting().get()); return result; } From 3392de5dee457654ec4245cf0dba5a0e72f07597 Mon Sep 17 00:00:00 2001 From: Valery Semenchuk Date: Thu, 29 May 2025 15:22:16 +0400 Subject: [PATCH 118/150] don't use focused editor, use it from method call --- .../impl/structureView/JSStructureViewBuilderFactory.java | 2 +- .../javascript/impl/structureView/JSStructureViewModel.java | 6 ------ 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewBuilderFactory.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewBuilderFactory.java index 265e641b..7c5f0a6f 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewBuilderFactory.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewBuilderFactory.java @@ -38,7 +38,7 @@ public StructureViewBuilder getStructureViewBuilder(PsiFile psiFile) { @Override @Nonnull public StructureViewModel createStructureViewModel(Editor editor) { - return new JSStructureViewModel(psiFile); + return new JSStructureViewModel(psiFile, editor); } @Override diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewModel.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewModel.java index ba4e1634..e81fd20e 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewModel.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewModel.java @@ -189,12 +189,6 @@ public Shortcut[] getShortcut() { private Grouper[] myGroupers = new Grouper[]{INHERITED_GROUPER}; - - public JSStructureViewModel(PsiElement root) { - super(root.getContainingFile()); - myRoot = root; - } - public JSStructureViewModel(PsiElement root, Editor editor) { super(editor); myRoot = root; From b0c98bcfe81c61d2e094e6c6a16d4074f7168818 Mon Sep 17 00:00:00 2001 From: Valery Semenchuk Date: Tue, 24 Jun 2025 11:26:53 +0400 Subject: [PATCH 119/150] drop status bar info --- .../lang/javascript/impl/refactoring/JSBaseIntroduceHandler.java | 1 - 1 file changed, 1 deletion(-) diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseIntroduceHandler.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseIntroduceHandler.java index 690fe597..b92c039a 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseIntroduceHandler.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseIntroduceHandler.java @@ -367,7 +367,6 @@ private static ArrayList highlightOccurences(Project project, HighlightManager highlightManager = HighlightManager.getInstance(project); ArrayList result = new ArrayList<>(); highlightManager.addOccurrenceHighlights(editor, occurences, EditorColors.SEARCH_RESULT_ATTRIBUTES, true, result); - WindowManager.getInstance().getStatusBar(project).setInfo(RefactoringLocalize.pressEscapeToRemoveTheHighlighting().get()); return result; } From a240dc2ac594504bbb220ca46d2e6e64b7fb085a Mon Sep 17 00:00:00 2001 From: Valery Semenchuk Date: Fri, 11 Jul 2025 11:46:54 +0400 Subject: [PATCH 120/150] fixed wrong assertion on code style change --- .../impl/formatter/blocks/JSDocCommentBlock.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/blocks/JSDocCommentBlock.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/blocks/JSDocCommentBlock.java index 11b5a2ec..cfb29528 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/blocks/JSDocCommentBlock.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/blocks/JSDocCommentBlock.java @@ -20,6 +20,7 @@ import consulo.language.ast.ASTNode; import consulo.language.codeStyle.*; import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; import java.util.ArrayList; import java.util.List; @@ -53,7 +54,7 @@ public List getSubBlocks() { return EMPTY_BLOCK_LIST; } - @Nonnull + @Nullable @Override public Wrap getWrap() { return null; @@ -65,13 +66,13 @@ public Indent getIndent() { return myIndent; } - @Nonnull + @Nullable @Override public Alignment getAlignment() { return null; } - @Nonnull + @Nullable @Override public Spacing getSpacing(Block child1, @Nonnull Block child2) { return null; @@ -80,7 +81,7 @@ public Spacing getSpacing(Block child1, @Nonnull Block child2) { @Nonnull @Override public ChildAttributes getChildAttributes(int newChildIndex) { - return null; + return new ChildAttributes(null, null); } @Override From 3d7bc11275f46098c26d72544d1b1cb6a9f9fb9d Mon Sep 17 00:00:00 2001 From: Valery Semenchuk Date: Sat, 9 Aug 2025 17:29:25 +0400 Subject: [PATCH 121/150] move to api --- .../jsx/codeInsight/JSXTagTreeHighlightingPassFactory.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/jsx/codeInsight/JSXTagTreeHighlightingPassFactory.java b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/jsx/codeInsight/JSXTagTreeHighlightingPassFactory.java index 46947a8a..424fe19c 100644 --- a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/jsx/codeInsight/JSXTagTreeHighlightingPassFactory.java +++ b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/jsx/codeInsight/JSXTagTreeHighlightingPassFactory.java @@ -5,11 +5,10 @@ import consulo.codeEditor.EditorEx; import consulo.javascript.jsx.language.JSXJavaScriptVersion; import consulo.language.editor.Pass; -import consulo.language.editor.impl.highlight.TextEditorHighlightingPass; -import consulo.language.editor.impl.highlight.TextEditorHighlightingPassFactory; +import consulo.language.editor.highlight.TextEditorHighlightingPass; +import consulo.language.editor.highlight.TextEditorHighlightingPassFactory; import consulo.language.psi.PsiFile; import consulo.xml.codeInsight.daemon.impl.tagTreeHighlighting.XmlTagTreeHighlightingPass; - import jakarta.annotation.Nonnull; /** From 0a28992b95fd3c6c9ba45c923c86e1b0d49e0825 Mon Sep 17 00:00:00 2001 From: Valery Semenchuk Date: Sun, 10 Aug 2025 14:05:21 +0400 Subject: [PATCH 122/150] migrate to localize --- .../language/JavaScriptLanguage.java | 9 +- ...consulo.javascript.JavaScriptLocalize.yaml | 994 +++++++++--------- .../JavaScriptColorsAndFontsPage.java | 12 +- .../JavaScriptCodeStyleConfigurable.java | 3 +- 4 files changed, 511 insertions(+), 507 deletions(-) diff --git a/base-api/src/main/java/consulo/javascript/language/JavaScriptLanguage.java b/base-api/src/main/java/consulo/javascript/language/JavaScriptLanguage.java index cbaac2a5..bb073bb0 100644 --- a/base-api/src/main/java/consulo/javascript/language/JavaScriptLanguage.java +++ b/base-api/src/main/java/consulo/javascript/language/JavaScriptLanguage.java @@ -16,10 +16,11 @@ package consulo.javascript.language; +import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.Language; import consulo.language.file.LanguageFileType; import consulo.language.version.LanguageVersion; - +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @@ -56,6 +57,12 @@ public LanguageVersion getVersionById(@Nonnull String id) { return oldMap.get(id); } + @Nonnull + @Override + public LocalizeValue getDisplayName() { + return JavaScriptLocalize.javascriptName(); + } + @Nullable @Override public LanguageFileType getAssociatedFileType() { diff --git a/base-api/src/main/resources/LOCALIZE-LIB/en_US/consulo.javascript.JavaScriptLocalize.yaml b/base-api/src/main/resources/LOCALIZE-LIB/en_US/consulo.javascript.JavaScriptLocalize.yaml index 4a232a38..a55d46c1 100644 --- a/base-api/src/main/resources/LOCALIZE-LIB/en_US/consulo.javascript.JavaScriptLocalize.yaml +++ b/base-api/src/main/resources/LOCALIZE-LIB/en_US/consulo.javascript.JavaScriptLocalize.yaml @@ -1,538 +1,540 @@ +action.JavaScript.File.text: + text: JavaScript File +building.index.message: + text: Building JavaScript indices +choose.class.title: + text: Choose Class +create.class.dialog.title: + text: Create Class +create.interface.dialog.title: + text: Create Interface +flex.import.class: + text: Import Class {0} +flex.import.function: + text: Import Function {0} +generate.constructor.fields.chooser.title: + text: Choose Fields to Initialize by Constructor +generate.getter.fields.bindable.properties: + text: '&Bindable properties' +generate.getter.fields.chooser.title: + text: Select Fields to Generate Getters +generate.getter.setter.chooser.title: + text: Select Fields to Generate Getters and Setters +generate.setter.fields.chooser.title: + text: Select Fields to Generate Setters +generate.to.string.chooser.title: + text: Select Fields to Use in toString function +interface.function.declaration.should.have.no.body: + text: Interface functions declaration should have no body +interface.should.have.no.variable.declarations: + text: Interface should have no variable declarations +invalid.identifier.value: + text: invalid identifier value +javascript.argument.type.mismatch: + text: Argument type {1} is not assignable to parameter type {0} +javascript.assigned.expression.type.mismatch: + text: Assigned expression type {1} is not assignable to type {0} +javascript.badcharacter: + text: Bad character +javascript.binary.operand.type.mismatch: + text: Binary operation argument type {1} is not assignable to type {0} +javascript.blockcomment: + text: Block comment +javascript.braces: + text: Braces +javascript.brackets: + text: Brackets +javascript.comma: + text: Comma +javascript.create.class.intention.name: + text: Create Class {0} +javascript.create.constant.field.intention.name: + text: Create Constant Field {0} +javascript.create.constant.intention.name: + text: Create Constant {0} +javascript.create.event.handler.intention.name: + text: Create Event Handler {0} +javascript.create.function.intention.family: + text: Create JavaScript Function or Method +javascript.create.function.intention.name: + text: Create Function {0} +javascript.create.get.property.intention.name: + text: Create Get Property {0} +javascript.create.interface.intention.name: + text: Create Interface {0} +javascript.create.method.intention.name: + text: Create Method {0} +javascript.create.namespace.intention.name: + text: Create Namespace {0} +javascript.create.property.intention.name: + text: Create Field {0} +javascript.create.set.property.intention.name: + text: Create Set Property {0} +javascript.create.variable.intention.family: + text: Create JavaScript Variable Or Property +javascript.create.variable.intention.name: + text: Create Variable {0} +javascript.declare.variable.intention.name: + text: Insert Var Declaration for {0} +javascript.deprecated.symbol.used.name.message: + text: 'Deprecated symbol used, consult docs for better alternative #loc' +javascript.doccomment: + text: Doc comment +javascript.docmarkup: + text: Documentation markup +javascript.doctag: + text: Documentation tag +javascript.dot: + text: Dot +javascript.extract.method.title: + text: Extract Function javascript.filetype.description: - text: JavaScript files -typescript.filetype.description: - text: TypeScript files -javascript.language.term.function: - text: function + text: JavaScript files +javascript.fix.add.override.modifier: + text: Add override modifier +javascript.fix.create.constructor.invoke.super: + text: Create constructor matching super +javascript.fix.create.invoke.super: + text: Insert super class constructor invokation +javascript.fix.implement.methods: + text: Implement Methods +javascript.fix.optimize.imports: + text: Optimize imports +javascript.fix.package.name: + text: Set package name to ''{0}'' +javascript.fix.remove.access.modifier: + text: Remove access modifier +javascript.fix.remove.circular.dependency: + text: Remove circular dependency +javascript.fix.remove.constructor: + text: Remove constructor +javascript.fix.remove.externally.visible.symbol: + text: Remove externally visible symbol +javascript.fix.remove.initializer: + text: Remove initializer +javascript.fix.remove.namespace.reference: + text: Remove namespace reference +javascript.fix.remove.override.modifier: + text: Remove override modifier +javascript.fix.remove.parameter: + text: Remove parameter +javascript.fix.remove.type.reference: + text: Remove type reference +javascript.formatting.options.panel.title: + text: Formatting options +javascript.global.function: + text: Global function +javascript.global.variable: + text: Global variable +javascript.incorrect.array.type.in.forin: + text: Array key type should be String +javascript.incorrect.variable.type.mismatch: + text: Variable type {1} is not assignable to type {0} +javascript.initializer.type.mismatch: + text: Initializer type {1} is not assignable to variable type {0} +javascript.insert.cast.fix: + text: Insert cast +javascript.instance.member.function: + text: Instance member function +javascript.instance.member.variable: + text: Instance member variable +javascript.interface.can.not.be.instantiated.message: + text: Interface can not be instantiated +javascript.introduce.constant.error.no.expression.selected: + text: |- + Cannot introduce constant. + Selection does not form an expression. +javascript.introduce.constant.error.not.available.in.javascript.code: + text: Introduce Constant is not available in JavaScript code +javascript.introduce.constant.error.not.constant.expression.selected: + text: |- + Cannot introduce constant. + Selection is not constant expression. +javascript.introduce.constant.title: + text: Introduce Constant +javascript.introduce.field.error.no.expression.selected: + text: |- + Cannot introduce field. + Selection does not form an expression. +javascript.introduce.field.error.not.available.in.javascript.code: + text: Introduce Field is not available in JavaScript code +javascript.introduce.field.title: + text: Introduce Field +javascript.introduce.variable.error.no.expression.selected: + text: |- + Cannot introduce variable. + Selection does not form an expression. +javascript.introduce.variable.function.already.exists: + text: Function with name {0} already exists in the scope. +javascript.introduce.variable.invalid.name: + text: Please enter a valid name. +javascript.introduce.variable.name.prompt: + text: '&Name:' +javascript.introduce.variable.replace.all.occurrences: + text: Replace &all occurrences ({0} occurrences found) +javascript.introduce.variable.title: + text: Introduce Variable +javascript.introduce.variable.variable.already.exists: + text: Variable with name {0} already exists in the scope. +javascript.invalid.number.of.parameters: + text: Invalid number of parameters, expected {0} +javascript.invalid.string.escape: + text: Invalid string escape +javascript.keyword: + text: Keyword +javascript.language.term.attribute.value: + text: Attribute value javascript.language.term.class: - text: class + text: class +javascript.language.term.function: + text: function +javascript.language.term.label: + text: label javascript.language.term.namespace: - text: namespace + text: namespace +javascript.language.term.package: + text: package javascript.language.term.parameter: - text: parameter + text: parameter javascript.language.term.property: - text: property -javascript.language.term.variable: - text: variable -javascript.language.term.value: - text: value -javascript.language.term.tag: - text: tag -javascript.language.term.label: - text: label + text: property javascript.language.term.prototype: - text: prototype + text: prototype +javascript.language.term.tag: + text: tag +javascript.language.term.value: + text: value +javascript.language.term.variable: + text: variable +javascript.linecomment: + text: Line comment +javascript.local.variable: + text: Local variable +javascript.metadata: + text: Metadata +javascript.name: + text: JavaScript +javascript.number: + text: Number +javascript.operation: + text: Operation +javascript.parameter: + text: Parameter +javascript.parens: + text: Parenthesis +javascript.parser.message.expected.catch.or.default: + text: catch or default expected +javascript.parser.message.expected.colon: + text: ': expected' +javascript.parser.message.expected.comma: + text: ', expected' +javascript.parser.message.expected.comma.or.rparen: + text: ', or ) expected' +javascript.parser.message.expected.doc.tag.name: + text: Expected doc tag name +javascript.parser.message.expected.doc.tag.value: + text: Expected doc tag value +javascript.parser.message.expected.eof: + text: End of file expected +javascript.parser.message.expected.equal: + text: expected = javascript.parser.message.expected.expression: - text: expression expected -javascript.parser.message.expected.xml.element: - text: xml element expected -javascript.parser.property.expected: - text: property expected + text: expression expected +javascript.parser.message.expected.forloop.in.of.or.semicolon: + text: '''in'', ''of'' or ; expected' +javascript.parser.message.expected.forloop.in.or.semicolon: + text: '''in'' or ; expected' +javascript.parser.message.expected.forloop.left.hand.side.expression.or.variable.declaration: + text: left hand side expression or variable declaration expected before 'in' +javascript.parser.message.expected.formal.parameter.name: + text: formal parameter name expected +javascript.parser.message.expected.function.name: + text: function name expected +javascript.parser.message.expected.function.var.class.interface.namespace: + text: Expected function, variable, class, interface or namespace declaration +javascript.parser.message.expected.identifer.or.value: + text: Identifier or value expected +javascript.parser.message.expected.identifier: + text: Expected identifier +javascript.parser.message.expected.identifier.string.literal.or.numeric.literal: + text: identifier or string literal or numeric literal expected +javascript.parser.message.expected.instanceof: + text: Expected instanceof javascript.parser.message.expected.lbrace: - text: "'{' expected" + text: '''{'' expected' +javascript.parser.message.expected.lbrace.or.lbracket: + text: '''{'' or ''['' expected' +javascript.parser.message.expected.lparen: + text: ( expected +javascript.parser.message.expected.lt: + text: Expected > +javascript.parser.message.expected.name: + text: name expected +javascript.parser.message.expected.name.or.lbrace: + text: Expected package name or '{' +javascript.parser.message.expected.namespace: + text: Namespace keyword expected +javascript.parser.message.expected.parameter.name: + text: parameter name expected javascript.parser.message.expected.rbrace: - text: "'}' expected" -javascript.parser.message.expected.identifier.string.literal.or.numeric.literal: - text: identifier or string literal or numeric literal expected -javascript.parser.message.expected.colon: - text: ': expected' -javascript.parser.message.expected.semicolon: - text: ; expected + text: '''}'' expected' javascript.parser.message.expected.rbracket: - text: '] expected' -javascript.parser.message.expected.lparen: - text: ( expected + text: '] expected' javascript.parser.message.expected.rparen: - text: ) expected -javascript.parser.message.expected.name: - text: name expected -javascript.parser.message.expected.comma.or.rparen: - text: ', or ) expected' -javascript.parser.message.expected.function.name: - text: function name expected -javascript.parser.message.expected.formal.parameter.name: - text: formal parameter name expected + text: ) expected +javascript.parser.message.expected.semicolon: + text: ; expected javascript.parser.message.expected.statement: - text: statement expected -javascript.parser.message.expected.parameter.name: - text: parameter name expected -javascript.parser.message.expected.catch.or.default: - text: catch or default expected -javascript.parser.message.expected.forloop.left.hand.side.expression.or.variable.declaration: - text: left hand side expression or variable declaration expected before 'in' -javascript.parser.message.expected.forloop.in.or.semicolon: - text: '''in'' or ; expected' -javascript.parser.message.expected.forloop.in.of.or.semicolon: - text: '''in'', ''of'' or ; expected' -javascript.parser.message.expected.while.keyword: - text: while expected -javascript.parser.message.expected.comma: - text: ', expected' + text: statement expected +javascript.parser.message.expected.string.literal: + text: String literal expected +javascript.parser.message.expected.typename: + text: '* or type name expected' +javascript.parser.message.expected.value: + text: value expected javascript.parser.message.expected.variable.name: - text: variable name expected + text: variable name expected +javascript.parser.message.expected.while.keyword: + text: while expected +javascript.parser.message.expected.xml: + text: xml context keyword expected +javascript.parser.message.expected.xml.element: + text: xml element expected javascript.parser.message.missing.rbrace: - text: missing } -javascript.parser.message.unexpected.end.of.file: - text: unexpected end of file + text: missing } javascript.parser.message.unclosed.string.literal: - text: Unclosed string literal -javascript.validation.message.duplicate.declaration: - text: Duplicate declaration -javascript.validation.message.assignment.to.const: - text: Attempt to assign to const variable -javascript.validation.message.arguments.out.of.function: - text: Using function arguments object outside function -javascript.validation.message.must.be.lvalue: - text: Must be lvalue -javascript.validation.message.const.variable.without.initializer.: - text: const variable without initializer. It won't be possible to assign meaningful value later. -javascript.validation.message.continue.without.target: - text: Cannot determine target for 'continue' -javascript.validation.message.break.without.target: - text: Cannot determine target for 'break' -javascript.validation.message.return.outside.function.definition: - text: '''return'' outside function definition' -javascript.validation.message.duplicate.label: - text: Duplicate label + text: Unclosed string literal +javascript.parser.message.unexpected.end.of.file: + text: unexpected end of file +javascript.parser.property.expected: + text: property expected +javascript.regexp: + text: Regular expression +javascript.returned.expression.type.mismatch: + text: Returned expression type {1} is not assignable to type {0} +javascript.semicolon: + text: Semicolon +javascript.static.member.function: + text: Static member function +javascript.static.member.variable: + text: Static member variable +javascript.string: + text: String javascript.surround.with.do.while: - text: do / while + text: do / while javascript.surround.with.for: - text: for + text: for +javascript.surround.with.function: + text: function +javascript.surround.with.function.expression: + text: function expression javascript.surround.with.if: - text: if + text: if javascript.surround.with.if.else: - text: if / else + text: if / else javascript.surround.with.parenthesis: - text: (expr) + text: (expr) javascript.surround.with.try.catch: - text: try / catch -javascript.surround.with.try.finally: - text: try / finally + text: try / catch javascript.surround.with.try.catch.finally: - text: try / catch / finally + text: try / catch / finally +javascript.surround.with.try.finally: + text: try / finally javascript.surround.with.while: - text: while + text: while javascript.surround.with.with: - text: with -javascript.surround.with.function: - text: function -javascript.surround.with.function.expression: - text: function expression -javascript.introduce.variable.title: - text: Introduce Variable -javascript.introduce.variable.error.no.expression.selected: - text: |- - Cannot introduce variable. - Selection does not form an expression. -javascript.introduce.variable.name.prompt: - text: '&Name:' -javascript.introduce.variable.replace.all.occurrences: - text: Replace &all occurrences ({0} occurrences found) -javascript.introduce.variable.invalid.name: - text: Please enter a valid name. -javascript.introduce.variable.variable.already.exists: - text: Variable with name {0} already exists in the scope. -javascript.introduce.variable.function.already.exists: - text: Function with name {0} already exists in the scope. -javascript.introduce.field.title: - text: Introduce Field -javascript.introduce.field.error.no.expression.selected: - text: |- - Cannot introduce field. - Selection does not form an expression. -javascript.introduce.constant.title: - text: Introduce Constant -javascript.introduce.constant.error.no.expression.selected: - text: |- - Cannot introduce constant. - Selection does not form an expression. -javascript.introduce.constant.error.not.constant.expression.selected: - text: |- - Cannot introduce constant. - Selection is not constant expression. -javascript.keyword: - text: Keyword -javascript.string: - text: String -javascript.number: - text: Number -javascript.linecomment: - text: Line comment -javascript.doccomment: - text: Doc comment -javascript.blockcomment: - text: Block comment -javascript.regexp: - text: Regular expression -javascript.operation: - text: Operation -javascript.parens: - text: Parenthesis -javascript.brackets: - text: Brackets -javascript.braces: - text: Braces -javascript.semicolon: - text: Semicolon -javascript.badcharacter: - text: Bad character -javascript.docmarkup: - text: Documentation markup -javascript.doctag: - text: Documentation tag -javascript.valid.string.escape: - text: Valid string escape -javascript.invalid.string.escape: - text: Invalid string escape -javascript.comma: - text: Comma -javascript.dot: - text: Dot -building.index.message: - text: Building JavaScript indices -loading.index.message: - text: Loading JavaScript indices + text: with +javascript.template.context.type: + text: Java Sc&ript +javascript.term.does.not.evaluate.to.function: + text: Method expression is not of Function type +javascript.term.does.not.evaluate.to.function2: + text: Property can not be invoked as function +javascript.term.does.not.evaluate.to.function2.fix: + text: Remove argument list +javascript.undeclared.variable.name.message: + text: 'Variable {0} implicitly declared #loc' javascript.unresolved.function.name.message: - text: 'Unresolved function or method {0}() #loc' -javascript.unresolved.variable.name.message: - text: 'Unresolved variable {0} #loc' + text: 'Unresolved function or method {0}() #loc' javascript.unresolved.type.name.message: - text: 'Unresolved type {0} #loc' + text: 'Unresolved type {0} #loc' +javascript.unresolved.variable.name.message: + text: 'Unresolved variable {0} #loc' javascript.unresolved.variable.or.type.name.message: - text: 'Unresolved variable or type {0} #loc' + text: 'Unresolved variable or type {0} #loc' javascript.unresolved.variable.or.type.name.message2: - text: Unresolved variable or type {0} -javascript.undeclared.variable.name.message: - text: 'Variable {0} implicitly declared #loc' -javascript.create.function.intention.name: - text: Create Function {0} -javascript.create.variable.intention.name: - text: Create Variable {0} -javascript.create.constant.intention.name: - text: Create Constant {0} -javascript.declare.variable.intention.name: - text: Insert Var Declaration for {0} -javascript.create.namespace.intention.name: - text: Create Namespace {0} -javascript.create.property.intention.name: - text: Create Field {0} -javascript.create.constant.field.intention.name: - text: Create Constant Field {0} -javascript.create.method.intention.name: - text: Create Method {0} -javascript.create.get.property.intention.name: - text: Create Get Property {0} -javascript.create.set.property.intention.name: - text: Create Set Property {0} -javascript.create.function.intention.family: - text: Create JavaScript Function or Method -javascript.create.variable.intention.family: - text: Create JavaScript Variable Or Property -js.inspection.group.name: - text: JavaScript -js.unresolved.variable.inspection.name: - text: Unresolved JavaScript variable -js.undeclared.variable.inspection.name: - text: Implicitly declared JavaScript variable -js.duplicated.declaration.inspection.name: - text: Duplicated JavaScript declaration -js.unused.local.symbol.inspection.name: - text: Unused JavaScript local symbol -js.unresolved.function.inspection.name: - text: Unresolved JavaScript function -js.deprecated.symbols.inspection.name: - text: Deprecated JavaScript symbol -javascript.parser.message.expected.typename: - text: '* or type name expected' -javascript.parser.message.expected.name.or.lbrace: - text: "Expected package name or '{'" -javascript.parser.message.expected.function.var.class.interface.namespace: - text: Expected function, variable, class, interface or namespace declaration -interface.function.declaration.should.have.no.body: - text: Interface functions declaration should have no body -javascript.parser.message.expected.namespace: - text: Namespace keyword expected -javascript.parser.message.expected.string.literal: - text: String literal expected -javascript.parser.message.expected.xml: - text: xml context keyword expected -javascript.parser.message.expected.equal: - text: expected = -javascript.parser.message.expected.lbrace.or.lbracket: - text: "'{' or '[' expected" -javascript.parser.message.expected.eof: - text: End of file expected -javascript.deprecated.symbol.used.name.message: - text: 'Deprecated symbol used, consult docs for better alternative #loc' -js.classname.macro.description: - text: jsClassName() -js.methodname.macro.description: - text: jsMethodName() -js.unused.parameter: - text: Unused parameter -js.unused.function.declaration: - text: Unused function declaration -js.unused.local.variable: - text: Unused local variable declaration -js.unused.symbol.remove: - text: Remove unused symbol -javascript.parser.message.expected.identifier: - text: Expected identifier -javascript.parser.message.expected.instanceof: - text: Expected instanceof -javascript.parser.message.expected.value: - text: value expected -javascript.parser.message.expected.identifer.or.value: - text: Identifier or value expected -js.show.overriding.markers.inspection.name: - text: Shows function overriding markers in JavaScript -js.untyped.declaration.inspection.name: - text: Declaration with no type -js.untyped.variable.problem: - text: Variable {0} has no type -js.untyped.function.problem: - text: Function {0} has no return type -js.untyped.declaration.problem.addtype.fix: - text: Add Type to Declaration -invalid.identifier.value: - text: invalid identifier value -javascript.validation.message.this.referenced.from.static.context: - text: '''this'' referenced in static context' -javascript.validation.message.super.referenced.without.class.instance.context: - text: '''super'' referenced without class instance context' -javascript.validation.message.super.referenced.from.static.context: - text: '''super'' referenced in static context' -javascript.validation.message.function.override.without.override.modifier: - text: Method overrides method in superclass {0} without override keyword -javascript.language.term.attribute.value: - text: Attribute value -javascript.validation.message.class.should.be.in.file: - text: Class ''{0}'' should be defined in file ''{1}'' -javascript.validation.message.function.should.be.in.file: - text: Function ''{0}'' should be defined in file ''{1}'' -javascript.validation.message.namespace.should.be.in.file: - text: Namespace ''{0}'' should be defined in file ''{1}'' -javascript.validation.message.variable.should.be.in.file: - text: Variable ''{0}'' should be defined in file ''{1}'' -javascript.validation.message.incorrect.package.name: - text: Package name ''{0}'' does not correspond to file path ''{1}'' -javascript.fix.package.name: - text: Set package name to ''{0}'' -javascript.fix.add.override.modifier: - text: Add override modifier -js.code.style.tab.name: - text: JavaScript / ECMAScript / ActionScript -to.indent.package.statement.children: - text: '&Indent package statement children' -javascript.formatting.options.panel.title: - text: Formatting options -preview.panel.title: - text: Preview -javascript.validation.message.interface.members.cannot.have.access.modifiers: - text: Interface members cannot have access modifiers -javascript.template.context.type: - text: Java Sc&ript -flex.import.class: - text: Import Class {0} -flex.import.function: - text: Import Function {0} -interface.should.have.no.variable.declarations: - text: Interface should have no variable declarations -javascript.validation.message.implements.for.interface.not.allowed: - text: Implements list is not allowed for interface -javascript.validation.message.interface.name.expected.here: - text: Interface name expected here -javascript.validation.message.class.name.expected.here: - text: Class name expected here + text: Unresolved variable or type {0} +javascript.valid.string.escape: + text: Valid string escape +javascript.validation.message.access.modifier.allowed.only.for.class.members: + text: Access modifier allowed for class members only +javascript.validation.message.access.modifier.allowed.only.for.package.members: + text: Only public / internal modifiers allowed for package members +javascript.validation.message.arguments.out.of.function: + text: Using function arguments object outside function +javascript.validation.message.arguments.with.rest.parameter: + text: '''arguments'' object is not available when using rest parameter' +javascript.validation.message.assignment.to.const: + text: Attempt to assign to const variable +javascript.validation.message.break.without.target: + text: Cannot determine target for 'break' javascript.validation.message.circular.dependency: - text: Circular dependency -javascript.fix.remove.circular.dependency: - text: Remove circular dependency -javascript.validation.message.more.than.one.externally.visible.symbol: - text: More than one externally visible symbol defined in file -javascript.validation.message.interface.method.not.implemented: - text: Method {0} from interface {1} is not implemented -javascript.fix.remove.externally.visible.symbol: - text: Remove externally visible symbol -javascript.fix.implement.methods: - text: Implement Methods -javascript.parameter: - text: Parameter -javascript.local.variable: - text: Local variable -javascript.global.variable: - text: Global variable -javascript.global.function: - text: Global function -javascript.static.member.function: - text: Static member function -javascript.static.member.variable: - text: Static member variable -javascript.instance.member.variable: - text: Instance member variable -javascript.instance.member.function: - text: Instance member function -javascript.create.class.intention.name: - text: Create Class {0} -javascript.create.interface.intention.name: - text: Create Interface {0} -create.class.dialog.title: - text: Create Class -create.interface.dialog.title: - text: Create Interface -choose.class.title: - text: Choose Class -javascript.fix.remove.override.modifier: - text: Remove override modifier + text: Circular dependency +javascript.validation.message.class.name.expected.here: + text: Class name expected here +javascript.validation.message.class.should.be.in.file: + text: Class ''{0}'' should be defined in file ''{1}'' +javascript.validation.message.const.variable.without.initializer.: + text: const variable without initializer. It won't be possible to assign meaningful value later. +javascript.validation.message.constructor.in.mxml.is.not.allowed: + text: Constructor is not allowed for MXML class +javascript.validation.message.continue.without.target: + text: Cannot determine target for 'continue' +javascript.validation.message.duplicate.declaration: + text: Duplicate declaration +javascript.validation.message.duplicate.label: + text: Duplicate label +javascript.validation.message.duplicated.catch.block: + text: 'Duplicated catch block #loc' +javascript.validation.message.duplicated.catch.block.fix: + text: Remove duplicated catch block +javascript.validation.message.file.should.be.under.source.root: + text: Object is located in file out of source root, certain functionality will not be available javascript.validation.message.function.override.for.object.method: - text: Method inherited from Object does not need override -javascript.validation.message.function.override.without.parent.method: - text: Method does not override method from super class -javascript.parser.message.expected.lt: - text: Expected > -generate.constructor.fields.chooser.title: - text: Choose Fields to Initialize by Constructor -generate.getter.setter.chooser.title: - text: Select Fields to Generate Getters and Setters -generate.to.string.chooser.title: - text: Select Fields to Use in toString function -generate.getter.fields.chooser.title: - text: Select Fields to Generate Getters -generate.setter.fields.chooser.title: - text: Select Fields to Generate Setters -methods.to.implement.chooser.title: - text: Select Methods to Implement -methods.to.override.chooser.title: - text: Select Methods to Override -use.semicolon.to.terminate.statement: - text: Use &semicolon to terminate statements -javascript.validation.unused.import: - text: Unused import -javascript.fix.optimize.imports: - text: Optimize imports -javascript.parser.message.expected.doc.tag.value: - text: Expected doc tag value -javascript.validation.message.incorrect.tag.value: - text: Incorrect Tag Value -javascript.validation.message.incorrect.parameter.name: - text: Incorrect parameter name -javascript.parser.message.expected.doc.tag.name: - text: Expected doc tag name -javascript.invalid.number.of.parameters: - text: Invalid number of parameters, expected {0} -javascript.argument.type.mismatch: - text: Argument type {1} is not assignable to parameter type {0} -javascript.initializer.type.mismatch: - text: Initializer type {1} is not assignable to variable type {0} -javascript.binary.operand.type.mismatch: - text: Binary operation argument type {1} is not assignable to type {0} -javascript.incorrect.variable.type.mismatch: - text: Variable type {1} is not assignable to type {0} -javascript.term.does.not.evaluate.to.function: - text: Method expression is not of Function type -javascript.term.does.not.evaluate.to.function2: - text: Property can not be invoked as function -javascript.term.does.not.evaluate.to.function2.fix: - text: Remove argument list -javascript.assigned.expression.type.mismatch: - text: Assigned expression type {1} is not assignable to type {0} -javascript.returned.expression.type.mismatch: - text: Returned expression type {1} is not assignable to type {0} -javascript.insert.cast.fix: - text: Insert cast -javascript.introduce.constant.error.not.available.in.javascript.code: - text: Introduce Constant is not available in JavaScript code -javascript.introduce.field.error.not.available.in.javascript.code: - text: Introduce Field is not available in JavaScript code -javascript.extract.method.title: - text: Extract Function + text: Method inherited from Object does not need override javascript.validation.message.function.override.incompatible.access.modifier: - text: Incompatible override, should have ''{0}'' access modifier + text: Incompatible override, should have ''{0}'' access modifier javascript.validation.message.function.override.incompatible.signature: - text: Incompatible override, should have signature ''{0}'' + text: Incompatible override, should have signature ''{0}'' javascript.validation.message.function.override.incompatible.signature2: - text: Incompatible override, should have return type ''{0}'' + text: Incompatible override, should have return type ''{0}'' +javascript.validation.message.function.override.without.override.modifier: + text: Method overrides method in superclass {0} without override keyword +javascript.validation.message.function.override.without.parent.method: + text: Method does not override method from super class +javascript.validation.message.function.should.be.in.file: + text: Function ''{0}'' should be defined in file ''{1}'' +javascript.validation.message.get.method.should.be.valid.type: + text: Return type of a getter definition should not be {0} +javascript.validation.message.get.method.should.have.no.parameter: + text: A getter definition must have no parameters +javascript.validation.message.implements.for.interface.not.allowed: + text: Implements list is not allowed for interface +javascript.validation.message.incorrect.package.name: + text: Package name ''{0}'' does not correspond to file path ''{1}'' +javascript.validation.message.incorrect.parameter.name: + text: Incorrect parameter name +javascript.validation.message.incorrect.tag.value: + text: Incorrect Tag Value +javascript.validation.message.interface.members.cannot.have.access.modifiers: + text: Interface members cannot have access modifiers javascript.validation.message.interface.method.invalid.access.modifier: - text: Incompatible implementation, should have 'public' access modifier + text: Incompatible implementation, should have 'public' access modifier javascript.validation.message.interface.method.invalid.signature: - text: Incompatible implementation, should have signature ''{0}'' + text: Incompatible implementation, should have signature ''{0}'' javascript.validation.message.interface.method.invalid.signature2: - text: Incompatible implementation, should have return type ''{0}'' -javascript.validation.message.duplicated.catch.block: - text: 'Duplicated catch block #loc' -javascript.validation.message.duplicated.catch.block.fix: - text: Remove duplicated catch block -javascript.validation.message.return.value.of.type.is.required: - text: Return value of type {0} is required -javascript.validation.message.constructor.in.mxml.is.not.allowed: - text: Constructor is not allowed for MXML class -javascript.fix.remove.constructor: - text: Remove constructor -javascript.validation.message.package.shouldbe.first.statement: - text: Package should be first statement in file -javascript.metadata: - text: Metadata -javascript.validation.message.file.should.be.under.source.root: - text: Object is located in file out of source root, certain functionality will not be available -javascript.validation.message.unneeded.comma: - text: Unneeded comma -javascript.validation.message.remove.unneeded.comma.fix: - text: Remove unneeded comma -javascript.create.event.handler.intention.name: - text: Create Event Handler {0} + text: Incompatible implementation, should have return type ''{0}'' +javascript.validation.message.interface.method.not.implemented: + text: Method {0} from interface {1} is not implemented +javascript.validation.message.interface.name.expected.here: + text: Interface name expected here javascript.validation.message.missed.super.constructor.call: - text: Missed superclass's constructor invokation -javascript.fix.create.constructor.invoke.super: - text: Create constructor matching super -javascript.fix.create.invoke.super: - text: Insert super class constructor invokation -javascript.interface.can.not.be.instantiated.message: - text: Interface can not be instantiated -javascript.validation.message.set.method.should.be.void.or.without.type: - text: Return type of a setter definition must be unspecified or void -javascript.validation.message.set.method.should.have.one.parameter: - text: A setter definition must have exactly one parameter -javascript.validation.message.get.method.should.have.no.parameter: - text: A getter definition must have no parameters -javascript.validation.message.get.method.should.be.valid.type: - text: Return type of a getter definition should not be {0} -javascript.validation.message.access.modifier.allowed.only.for.class.members: - text: Access modifier allowed for class members only + text: Missed superclass's constructor invokation +javascript.validation.message.more.than.one.externally.visible.symbol: + text: More than one externally visible symbol defined in file +javascript.validation.message.must.be.lvalue: + text: Must be lvalue javascript.validation.message.namespace.allowed.only.for.class.members: - text: Namespace allowed for class members only -javascript.validation.message.access.modifier.allowed.only.for.package.members: - text: Only public / internal modifiers allowed for package members -javascript.validation.message.use.namespace.reference.or.access.modifier: - text: Use namespace OR access modifier -javascript.fix.remove.access.modifier: - text: Remove access modifier -javascript.fix.remove.namespace.reference: - text: Remove namespace reference -javascript.incorrect.array.type.in.forin: - text: Array key type should be String -javascript.validation.message.unexpected.type.for.rest.parameter: - text: Rest parameter should have no type -javascript.fix.remove.type.reference: - text: Remove type reference + text: Namespace allowed for class members only +javascript.validation.message.namespace.should.be.in.file: + text: Namespace ''{0}'' should be defined in file ''{1}'' +javascript.validation.message.nested.classes.are.not.allowed: + text: Nested classes are not allowed +javascript.validation.message.package.shouldbe.first.statement: + text: Package should be first statement in file javascript.validation.message.parameter.is.not.allowed.after.rest.parameter: - text: No parameter is allowed after rest parameter -javascript.fix.remove.parameter: - text: Remove parameter -javascript.fix.remove.initializer: - text: Remove initializer + text: No parameter is allowed after rest parameter javascript.validation.message.parameter.should.be.initialized: - text: Parameter should be initialized + text: Parameter should be initialized +javascript.validation.message.remove.unneeded.comma.fix: + text: Remove unneeded comma javascript.validation.message.rest.parameter.should.not.be.initialized: - text: Rest parameter should not be initialized -javascript.validation.message.nested.classes.are.not.allowed: - text: Nested classes are not allowed -generate.getter.fields.bindable.properties: - text: '&Bindable properties' -javascript.language.term.package: - text: package -javascript.validation.message.arguments.with.rest.parameter: - text: '''arguments'' object is not available when using rest parameter' -action.JavaScript.File.text: - text: JavaScript File + text: Rest parameter should not be initialized +javascript.validation.message.return.outside.function.definition: + text: '''return'' outside function definition' +javascript.validation.message.return.value.of.type.is.required: + text: Return value of type {0} is required +javascript.validation.message.set.method.should.be.void.or.without.type: + text: Return type of a setter definition must be unspecified or void +javascript.validation.message.set.method.should.have.one.parameter: + text: A setter definition must have exactly one parameter +javascript.validation.message.super.referenced.from.static.context: + text: '''super'' referenced in static context' +javascript.validation.message.super.referenced.without.class.instance.context: + text: '''super'' referenced without class instance context' +javascript.validation.message.this.referenced.from.static.context: + text: '''this'' referenced in static context' +javascript.validation.message.unexpected.type.for.rest.parameter: + text: Rest parameter should have no type +javascript.validation.message.unneeded.comma: + text: Unneeded comma +javascript.validation.message.use.namespace.reference.or.access.modifier: + text: Use namespace OR access modifier +javascript.validation.message.variable.should.be.in.file: + text: Variable ''{0}'' should be defined in file ''{1}'' +javascript.validation.unused.import: + text: Unused import +js.classname.macro.description: + text: jsClassName() +js.code.style.tab.name: + text: JavaScript / ECMAScript / ActionScript +js.deprecated.symbols.inspection.name: + text: Deprecated JavaScript symbol +js.duplicated.declaration.inspection.name: + text: Duplicated JavaScript declaration +js.inspection.group.name: + text: JavaScript +js.methodname.macro.description: + text: jsMethodName() +js.show.overriding.markers.inspection.name: + text: Shows function overriding markers in JavaScript +js.undeclared.variable.inspection.name: + text: Implicitly declared JavaScript variable +js.unresolved.function.inspection.name: + text: Unresolved JavaScript function +js.unresolved.variable.inspection.name: + text: Unresolved JavaScript variable +js.untyped.declaration.inspection.name: + text: Declaration with no type +js.untyped.declaration.problem.addtype.fix: + text: Add Type to Declaration +js.untyped.function.problem: + text: Function {0} has no return type +js.untyped.variable.problem: + text: Variable {0} has no type +js.unused.function.declaration: + text: Unused function declaration +js.unused.local.symbol.inspection.name: + text: Unused JavaScript local symbol +js.unused.local.variable: + text: Unused local variable declaration +js.unused.parameter: + text: Unused parameter +js.unused.symbol.remove: + text: Remove unused symbol +loading.index.message: + text: Loading JavaScript indices +methods.to.implement.chooser.title: + text: Select Methods to Implement +methods.to.override.chooser.title: + text: Select Methods to Override +preview.panel.title: + text: Preview this.feature.is.not.supported.by.current.language: - text: '''''{0}'''' is not supported by current language version' + text: '''''{0}'''' is not supported by current language version' +to.indent.package.statement.children: + text: '&Indent package statement children' +typescript.filetype.description: + text: TypeScript files +use.semicolon.to.terminate.statement: + text: Use &semicolon to terminate statements diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptColorsAndFontsPage.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptColorsAndFontsPage.java index 6eceb33f..296abfcf 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptColorsAndFontsPage.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptColorsAndFontsPage.java @@ -19,12 +19,12 @@ import consulo.annotation.component.ExtensionImpl; import consulo.colorScheme.TextAttributesKey; import consulo.colorScheme.setting.AttributesDescriptor; -import consulo.colorScheme.setting.ColorDescriptor; import consulo.javascript.ide.hightlight.JavaScriptSyntaxHighlightKeys; import consulo.javascript.lang.JavaScript15LanguageVersion; import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.editor.colorScheme.setting.ColorSettingsPage; import consulo.language.editor.highlight.SyntaxHighlighter; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import java.util.HashMap; @@ -100,8 +100,8 @@ public class JavaScriptColorsAndFontsPage implements ColorSettingsPage { @Override @Nonnull - public String getDisplayName() { - return "JavaScript"; + public LocalizeValue getDisplayName() { + return JavaScriptLocalize.javascriptName(); } @Override @@ -110,12 +110,6 @@ public AttributesDescriptor[] getAttributeDescriptors() { return ATTRS; } - @Override - @Nonnull - public ColorDescriptor[] getColorDescriptors() { - return ColorDescriptor.EMPTY_ARRAY; - } - @Override @Nonnull public SyntaxHighlighter getHighlighter() { diff --git a/plugin/src/main/java/consulo/javascript/impl/formatter/JavaScriptCodeStyleConfigurable.java b/plugin/src/main/java/consulo/javascript/impl/formatter/JavaScriptCodeStyleConfigurable.java index 63d90bed..64d75048 100644 --- a/plugin/src/main/java/consulo/javascript/impl/formatter/JavaScriptCodeStyleConfigurable.java +++ b/plugin/src/main/java/consulo/javascript/impl/formatter/JavaScriptCodeStyleConfigurable.java @@ -1,5 +1,6 @@ package consulo.javascript.impl.formatter; +import consulo.javascript.localize.JavaScriptLocalize; import jakarta.annotation.Nonnull; import consulo.language.codeStyle.ui.setting.CodeStyleAbstractConfigurable; @@ -12,7 +13,7 @@ */ public class JavaScriptCodeStyleConfigurable extends CodeStyleAbstractConfigurable { public JavaScriptCodeStyleConfigurable(@Nonnull CodeStyleSettings settings, CodeStyleSettings cloneSettings) { - super(settings, cloneSettings, "JavaScript"); + super(settings, cloneSettings, JavaScriptLocalize.javascriptName()); } @Override From 0cdd7bbc892385f3d5573c847eeef1735edd6899 Mon Sep 17 00:00:00 2001 From: Valery Semenchuk Date: Tue, 26 Aug 2025 18:30:03 +0400 Subject: [PATCH 123/150] migrate to localize --- .../en_US/consulo.javascript.JavaScriptLocalize.yaml | 4 ++++ .../impl/ide/actions/JavaScriptCreateFileAction.java | 10 ++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/base-api/src/main/resources/LOCALIZE-LIB/en_US/consulo.javascript.JavaScriptLocalize.yaml b/base-api/src/main/resources/LOCALIZE-LIB/en_US/consulo.javascript.JavaScriptLocalize.yaml index a55d46c1..5dc70d92 100644 --- a/base-api/src/main/resources/LOCALIZE-LIB/en_US/consulo.javascript.JavaScriptLocalize.yaml +++ b/base-api/src/main/resources/LOCALIZE-LIB/en_US/consulo.javascript.JavaScriptLocalize.yaml @@ -1,5 +1,9 @@ +action.JavaScript.File.empty.file.kind: + text: Empty File action.JavaScript.File.text: text: JavaScript File +action.JavaScript.File.title.text: + text: Create JavaScript File building.index.message: text: Building JavaScript indices choose.class.title: diff --git a/plugin/src/main/java/consulo/javascript/impl/ide/actions/JavaScriptCreateFileAction.java b/plugin/src/main/java/consulo/javascript/impl/ide/actions/JavaScriptCreateFileAction.java index 94aba41c..c2697f75 100644 --- a/plugin/src/main/java/consulo/javascript/impl/ide/actions/JavaScriptCreateFileAction.java +++ b/plugin/src/main/java/consulo/javascript/impl/ide/actions/JavaScriptCreateFileAction.java @@ -17,6 +17,7 @@ import consulo.project.Project; import consulo.ui.annotation.RequiredUIAccess; import consulo.virtualFileSystem.fileType.FileType; +import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; /** @@ -72,13 +73,14 @@ private static Module findModule(DataContext dataContext) { @Override protected void buildDialog(Project project, PsiDirectory directory, CreateFileFromTemplateDialog.Builder builder) { - builder.setTitle("Create JavaScript File"); + builder.setTitle(JavaScriptLocalize.actionJavascriptFileTitleText()); - builder.addKind("Empty File", JavaScriptFileType.INSTANCE.getIcon(), "JavaScriptFile"); + builder.addKind(JavaScriptLocalize.actionJavascriptFileEmptyFileKind(), JavaScriptFileType.INSTANCE.getIcon(), "JavaScriptFile"); } + @Nonnull @Override - protected String getActionName(PsiDirectory directory, String newName, String templateName) { - return "Create JavaScript File"; + protected LocalizeValue getActionName(PsiDirectory directory, String newName, String templateName) { + return JavaScriptLocalize.actionJavascriptFileTitleText(); } } From 8b140872ace7d77effd64507e3198e8c9033535d Mon Sep 17 00:00:00 2001 From: Valery Semenchuk Date: Wed, 10 Sep 2025 21:29:43 +0400 Subject: [PATCH 124/150] add read action for correct reading --- .../impl/ide/actions/JavaScriptCreateFileAction.java | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/plugin/src/main/java/consulo/javascript/impl/ide/actions/JavaScriptCreateFileAction.java b/plugin/src/main/java/consulo/javascript/impl/ide/actions/JavaScriptCreateFileAction.java index c2697f75..9747e4cc 100644 --- a/plugin/src/main/java/consulo/javascript/impl/ide/actions/JavaScriptCreateFileAction.java +++ b/plugin/src/main/java/consulo/javascript/impl/ide/actions/JavaScriptCreateFileAction.java @@ -1,21 +1,20 @@ package consulo.javascript.impl.ide.actions; -import consulo.javascript.language.JavaScriptFileType; import consulo.annotation.access.RequiredReadAction; +import consulo.application.ReadAction; import consulo.dataContext.DataContext; import consulo.ide.IdeView; import consulo.ide.action.CreateFileFromTemplateAction; import consulo.ide.action.CreateFileFromTemplateDialog; +import consulo.javascript.language.JavaScriptFileType; import consulo.javascript.localize.JavaScriptLocalize; import consulo.javascript.module.extension.JavaScriptModuleExtension; -import consulo.language.editor.CommonDataKeys; import consulo.language.psi.PsiDirectory; import consulo.language.util.ModuleUtilCore; import consulo.localize.LocalizeValue; import consulo.module.Module; import consulo.module.content.NewFileModuleResolver; import consulo.project.Project; -import consulo.ui.annotation.RequiredUIAccess; import consulo.virtualFileSystem.fileType.FileType; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @@ -34,12 +33,11 @@ public JavaScriptCreateFileAction() { } @Override - @RequiredUIAccess protected boolean isAvailable(DataContext dataContext) { if (!super.isAvailable(dataContext)) { return false; } - Module module = findModule(dataContext); + Module module = ReadAction.compute(() -> findModule(dataContext)); return module != null && ModuleUtilCore.getExtension(module, JavaScriptModuleExtension.class) != null; } @@ -51,7 +49,7 @@ protected FileType getFileTypeForModuleResolve() { @RequiredReadAction private static Module findModule(DataContext dataContext) { - Project project = dataContext.getData(CommonDataKeys.PROJECT); + Project project = dataContext.getData(Project.KEY); assert project != null; final IdeView view = dataContext.getData(IdeView.KEY); if (view == null) { From 3c675a450a9d396b7aea61786e339d2b28d64e8a Mon Sep 17 00:00:00 2001 From: UNV Date: Thu, 9 Oct 2025 22:59:44 +0300 Subject: [PATCH 125/150] Localizing inspections and their fixes (part 1). --- .../bugs/DivideByZeroJSInspection.java | 21 +- ...ityComparisonWithCoercionJSInspection.java | 25 +- .../bugs/InfiniteLoopJSInspection.java | 15 +- .../bugs/InfiniteRecursionJSInspection.java | 20 +- ...tCircuitBooleanExpressionJSInspection.java | 23 +- .../ObjectAllocationIgnoredJSInspection.java | 21 +- ...extLabelInSwitchStatementJSInspection.java | 17 +- .../AnonymousFunctionJSInspection.java | 17 +- .../confusing/BlockStatementJSInspection.java | 17 +- .../confusing/CallerJSInspection.java | 17 +- .../CommaExpressionJSInspection.java | 17 +- .../ConditionalExpressionJSInspection.java | 17 +- ...usingFloatingPointLiteralJSInspection.java | 25 +- .../ConfusingPlusesOrMinusesJSInspection.java | 17 +- .../DynamicallyGeneratedCodeJSInspection.java | 17 +- .../EmptyStatementBodyJSInspection.java | 19 +- ...rementDecrementResultUsedJSInspection.java | 17 +- ...atedConditionalExpressionJSInspection.java | 23 +- .../NegatedIfStatementJSInspection.java | 23 +- ...stedConditionalExpressionJSInspection.java | 17 +- .../confusing/NestedFunctionJSInspection.java | 17 +- .../confusing/OctalIntegerJSInspection.java | 17 +- ...yComplexBooleanExpressionJSInspection.java | 248 ++++++++---------- ...tlessArithmeticExpressionJSInspection.java | 15 +- ...ointlessBooleanExpressionJSInspection.java | 21 +- .../confusing/VoidExpressionJSInspection.java | 17 +- .../confusing/WithStatementJSInspection.java | 17 +- .../control/BreakStatementJSInspection.java | 17 +- .../BreakStatementWithLabelJSInspection.java | 18 +- ...sionWithIdenticalBranchesJSInspection.java | 19 +- ...tantConditionalExpressionJSInspection.java | 19 +- .../ConstantIfStatementJSInspection.java | 26 +- .../ContinueStatementJSInspection.java | 18 +- ...ontinueStatementWithLabelJSInspection.java | 17 +- ...efaultNotLastCaseInSwitchJSInspection.java | 22 +- .../DuplicateConditionJSInspection.java | 15 +- ...lthroughInSwitchStatementJSInspection.java | 20 +- ...ForLoopReplaceableByWhileJSInspection.java | 201 +++++++------- ...ThatDoesntUseLoopVariableJSInspection.java | 17 +- ...mentWithIdenticalBranchesJSInspection.java | 21 +- ...tementWithTooManyBranchesJSInspection.java | 127 ++++----- .../control/LabeledStatementJSInspection.java | 20 +- ...opStatementThatDoesntLoopJSInspection.java | 13 +- .../NestedSwitchStatementJSInspection.java | 17 +- ...tementWithNoDefaultBranchJSInspection.java | 17 +- .../control/TailRecursionJSInspection.java | 41 +-- .../TrivialConditionalJSInspection.java | 23 +- .../control/TrivialIfJSInspection.java | 102 +++---- .../UnnecessaryContinueJSInspection.java | 24 +- .../control/UnnecessaryLabelJSInspection.java | 26 +- 50 files changed, 781 insertions(+), 796 deletions(-) diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bugs/DivideByZeroJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bugs/DivideByZeroJSInspection.java index 5c52f92f..c35c780b 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bugs/DivideByZeroJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bugs/DivideByZeroJSInspection.java @@ -11,32 +11,35 @@ import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; +import org.intellij.lang.annotations.Pattern; import org.jetbrains.annotations.NonNls; @ExtensionImpl public class DivideByZeroJSInspection extends JavaScriptInspection { - @Override @Nonnull + @Override + @Pattern(value = "[a-zA-Z_0-9.-]+") public String getID() { return "DivideByZeroJS"; } - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.divideByZeroDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.divideByZeroDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.BUGS_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.BUGS_GROUP_NAME; } - @RequiredReadAction - @Override @Nonnull + @Override + @RequiredReadAction protected String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.divisionByZeroErrorString().get(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bugs/EqualityComparisonWithCoercionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bugs/EqualityComparisonWithCoercionJSInspection.java index 6a266764..a26f831d 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bugs/EqualityComparisonWithCoercionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bugs/EqualityComparisonWithCoercionJSInspection.java @@ -14,33 +14,36 @@ import consulo.language.editor.inspection.ProblemDescriptor; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import consulo.project.Project; import jakarta.annotation.Nonnull; +import org.intellij.lang.annotations.Pattern; import org.jetbrains.annotations.NonNls; @ExtensionImpl public class EqualityComparisonWithCoercionJSInspection extends JavaScriptInspection { - @Override @Nonnull + @Override + @Pattern(value = "[a-zA-Z_0-9.-]+") public String getID() { return "EqualityComparisonWithCoercionJS"; } - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.equalityComparisonWithCoercionDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.equalityComparisonWithCoercionDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.BUGS_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.BUGS_GROUP_NAME; } - @RequiredReadAction - @Override @Nonnull + @Override + @RequiredReadAction protected String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.equalityComparisonWithCoercionErrorString().get(); } @@ -67,8 +70,8 @@ public EqualityComparisonWithCoercionFix(String sign) { @Override @Nonnull - public String getName() { - return InspectionJSLocalize.equalityComparisonWithCoercionFix(sign).get(); + public LocalizeValue getName() { + return InspectionJSLocalize.equalityComparisonWithCoercionFix(sign); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bugs/InfiniteLoopJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bugs/InfiniteLoopJSInspection.java index f93eba5b..20da4d90 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bugs/InfiniteLoopJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bugs/InfiniteLoopJSInspection.java @@ -10,20 +10,21 @@ import com.sixrr.inspectjs.utils.ControlFlowUtils; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; @ExtensionImpl public class InfiniteLoopJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.infiniteLoopStatementDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.infiniteLoopStatementDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.BUGS_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.BUGS_GROUP_NAME; } @Override @@ -31,8 +32,8 @@ public boolean isEnabledByDefault() { return true; } - @RequiredReadAction @Override + @RequiredReadAction public String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.infiniteLoopErrorString().get(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bugs/InfiniteRecursionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bugs/InfiniteRecursionJSInspection.java index fb15c7e0..0cd3d4a2 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bugs/InfiniteRecursionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bugs/InfiniteRecursionJSInspection.java @@ -7,28 +7,26 @@ import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; -import consulo.logging.Logger; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; @ExtensionImpl public class InfiniteRecursionJSInspection extends JavaScriptInspection { - private static Logger logger = Logger.getInstance("ULVJS"); - - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.infiniteRecursionDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.infiniteRecursionDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.BUGS_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.BUGS_GROUP_NAME; } - @RequiredReadAction - @Override @Nonnull + @Override + @RequiredReadAction public String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.infiniteRecursionProblemDescriptor().get(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bugs/NonShortCircuitBooleanExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bugs/NonShortCircuitBooleanExpressionJSInspection.java index 4767dbe9..38da0c59 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bugs/NonShortCircuitBooleanExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bugs/NonShortCircuitBooleanExpressionJSInspection.java @@ -14,27 +14,28 @@ import consulo.language.editor.inspection.ProblemDescriptor; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import consulo.project.Project; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class NonShortCircuitBooleanExpressionJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.nonShortCircuitBooleanExpressionDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.nonShortCircuitBooleanExpressionDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.BUGS_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.BUGS_GROUP_NAME; } - @RequiredReadAction - @Override @Nullable + @Override + @RequiredReadAction protected String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.nonShortCircuitBooleanExpressionErrorString().get(); } @@ -45,10 +46,10 @@ public InspectionJSFix buildFix(PsiElement location, Object state) { } private static class NonShortCircuitBooleanFix extends InspectionJSFix { - @Override @Nonnull - public String getName() { - return InspectionJSLocalize.replaceWithShortCircuitExpressionFixString().get(); + @Override + public LocalizeValue getName() { + return InspectionJSLocalize.replaceWithShortCircuitExpressionFixString(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bugs/ObjectAllocationIgnoredJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bugs/ObjectAllocationIgnoredJSInspection.java index eb1ecf94..de05cd2b 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bugs/ObjectAllocationIgnoredJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bugs/ObjectAllocationIgnoredJSInspection.java @@ -9,31 +9,34 @@ import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; +import org.intellij.lang.annotations.Pattern; @ExtensionImpl public class ObjectAllocationIgnoredJSInspection extends JavaScriptInspection { - @Override @Nonnull + @Override + @Pattern(value = "[a-zA-Z_0-9.-]+") public String getID() { return "ObjectAllocationIgnored"; } - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.resultOfObjectAllocationIgnoredDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.resultOfObjectAllocationIgnoredDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.BUGS_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.BUGS_GROUP_NAME; } - @RequiredReadAction - @Override @Nonnull + @Override + @RequiredReadAction protected String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.resultOfObjectAllocationIgnoredErrorString().get(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bugs/TextLabelInSwitchStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bugs/TextLabelInSwitchStatementJSInspection.java index 79a5777a..00e0b70a 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bugs/TextLabelInSwitchStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bugs/TextLabelInSwitchStatementJSInspection.java @@ -11,25 +11,26 @@ import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; @ExtensionImpl public class TextLabelInSwitchStatementJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.textLabelInSwitchStatementDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.textLabelInSwitchStatementDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.BUGS_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.BUGS_GROUP_NAME; } - @RequiredReadAction - @Override @Nonnull + @Override + @RequiredReadAction public String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.textLabelInSwitchStatementErrorString().get(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/AnonymousFunctionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/AnonymousFunctionJSInspection.java index 99c35a13..9f3afa5e 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/AnonymousFunctionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/AnonymousFunctionJSInspection.java @@ -10,26 +10,27 @@ import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; import consulo.language.psi.util.PsiTreeUtil; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class AnonymousFunctionJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.anonymousFunctionDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.anonymousFunctionDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.CONFUSING_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.CONFUSING_GROUP_NAME; } - @RequiredReadAction - @Override @Nullable + @Override + @RequiredReadAction protected String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.anonymousFunctionErrorString().get(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/BlockStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/BlockStatementJSInspection.java index 3d7d3981..a0975734 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/BlockStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/BlockStatementJSInspection.java @@ -8,26 +8,27 @@ import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class BlockStatementJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.unnecessaryBlockStatementDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.unnecessaryBlockStatementDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.CONFUSING_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.CONFUSING_GROUP_NAME; } - @RequiredReadAction - @Override @Nullable + @Override + @RequiredReadAction protected String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.unnecessaryBlockStatementErrorString().get(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/CallerJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/CallerJSInspection.java index 329d273f..117f2a67 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/CallerJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/CallerJSInspection.java @@ -7,26 +7,27 @@ import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class CallerJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.callerDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.callerDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.CONFUSING_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.CONFUSING_GROUP_NAME; } - @RequiredReadAction - @Override @Nullable + @Override + @RequiredReadAction protected String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.callerErrorString().get(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/CommaExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/CommaExpressionJSInspection.java index 476c4e0a..ace1a064 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/CommaExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/CommaExpressionJSInspection.java @@ -8,26 +8,27 @@ import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class CommaExpressionJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.commaExpressionDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.commaExpressionDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.CONFUSING_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.CONFUSING_GROUP_NAME; } - @RequiredReadAction - @Override @Nullable + @Override + @RequiredReadAction protected String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.commaExpressionErrorString().get(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConditionalExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConditionalExpressionJSInspection.java index 9382e806..ddda634f 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConditionalExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConditionalExpressionJSInspection.java @@ -7,6 +7,7 @@ import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @@ -17,21 +18,21 @@ public boolean isEnabledByDefault() { return false; } - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.conditionalExpressionDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.conditionalExpressionDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.CONFUSING_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.CONFUSING_GROUP_NAME; } - @RequiredReadAction - @Override @Nullable + @Override + @RequiredReadAction protected String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.conditionalExpressionErrorString().get(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConfusingFloatingPointLiteralJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConfusingFloatingPointLiteralJSInspection.java index ebf96143..cd041198 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConfusingFloatingPointLiteralJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConfusingFloatingPointLiteralJSInspection.java @@ -13,33 +13,32 @@ import consulo.language.editor.inspection.ProblemDescriptor; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import consulo.project.Project; import jakarta.annotation.Nonnull; -import org.jetbrains.annotations.NonNls; import java.util.regex.Matcher; import java.util.regex.Pattern; @ExtensionImpl public class ConfusingFloatingPointLiteralJSInspection extends JavaScriptInspection { - @NonNls private static final Pattern PICKY_FLOATING_POINT_PATTERN = Pattern.compile("[0-9]+\\.[0-9]+((e|E)(-)?[0-9]+)?(f|F|d|D)?"); - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.CONFUSING_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.CONFUSING_GROUP_NAME; } - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.confusingFloatingPointLiteralDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.confusingFloatingPointLiteralDisplayName(); } - @RequiredReadAction - @Override @Nonnull + @Override + @RequiredReadAction protected String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.confusingFloatingPointLiteralProblemDescriptor().get(); } @@ -50,10 +49,10 @@ public InspectionJSFix buildFix(PsiElement location, Object state) { } private static class ConfusingFloatingPointLiteralFix extends InspectionJSFix { - @Override @Nonnull - public String getName() { - return InspectionJSLocalize.confusingFloatingPointLiteralChangeQuickfix().get(); + @Override + public LocalizeValue getName() { + return InspectionJSLocalize.confusingFloatingPointLiteralChangeQuickfix(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConfusingPlusesOrMinusesJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConfusingPlusesOrMinusesJSInspection.java index 100ea9b8..459f9bab 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConfusingPlusesOrMinusesJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConfusingPlusesOrMinusesJSInspection.java @@ -12,26 +12,27 @@ import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class ConfusingPlusesOrMinusesJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.confusingPlusesOrMinusesDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.confusingPlusesOrMinusesDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.CONFUSING_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.CONFUSING_GROUP_NAME; } - @RequiredReadAction - @Override @Nullable + @Override + @RequiredReadAction protected String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.confusingPlusesOrMinusesErrorString().get(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/DynamicallyGeneratedCodeJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/DynamicallyGeneratedCodeJSInspection.java index 69dc1d8b..974bd4da 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/DynamicallyGeneratedCodeJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/DynamicallyGeneratedCodeJSInspection.java @@ -10,27 +10,28 @@ import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; import org.jetbrains.annotations.NonNls; @ExtensionImpl public class DynamicallyGeneratedCodeJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.dynamicallyGeneratedCodeDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.dynamicallyGeneratedCodeDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.CONFUSING_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.CONFUSING_GROUP_NAME; } - @RequiredReadAction - @Override @Nullable + @Override + @RequiredReadAction protected String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.dynamicallyGeneratedCodeErrorString().get(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/EmptyStatementBodyJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/EmptyStatementBodyJSInspection.java index f09b3b0b..e6fbea49 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/EmptyStatementBodyJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/EmptyStatementBodyJSInspection.java @@ -8,26 +8,29 @@ import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.inspection.InspectionToolState; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; +import org.intellij.lang.annotations.Pattern; @ExtensionImpl public class EmptyStatementBodyJSInspection extends JavaScriptInspection { - @Override @Nonnull + @Override + @Pattern(value = "[a-zA-Z_0-9.-]+") public String getID() { return "StatementWithEmptyBodyJS"; } - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.statementWithEmptyBodyDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.statementWithEmptyBodyDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.CONFUSING_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.CONFUSING_GROUP_NAME; } @Override @@ -35,8 +38,8 @@ public boolean isEnabledByDefault() { return true; } - @RequiredReadAction @Override + @RequiredReadAction public String buildErrorString(Object state, Object... args) { return args[0] instanceof JSIfStatement ? InspectionJSLocalize.statementHasEmptyBranchErrorString().get() diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/IncrementDecrementResultUsedJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/IncrementDecrementResultUsedJSInspection.java index b8b9715b..5d24522b 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/IncrementDecrementResultUsedJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/IncrementDecrementResultUsedJSInspection.java @@ -10,26 +10,27 @@ import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; import consulo.language.psi.PsiElement; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class IncrementDecrementResultUsedJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.resultOfIncrementOrDecrementUsedDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.resultOfIncrementOrDecrementUsedDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.CONFUSING_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.CONFUSING_GROUP_NAME; } - @RequiredReadAction - @Override @Nullable + @Override + @RequiredReadAction protected String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.resultOfIncrementOrDecrementExpressionUsedErrorString().get(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/NegatedConditionalExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/NegatedConditionalExpressionJSInspection.java index ce88c93a..d70557dc 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/NegatedConditionalExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/NegatedConditionalExpressionJSInspection.java @@ -17,6 +17,7 @@ import consulo.language.editor.inspection.ProblemDescriptor; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import consulo.project.Project; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @@ -25,21 +26,21 @@ public class NegatedConditionalExpressionJSInspection extends JavaScriptInspection { private final NegatedConditionalFix fix = new NegatedConditionalFix(); - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.negatedConditionalExpressionDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.negatedConditionalExpressionDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.CONFUSING_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.CONFUSING_GROUP_NAME; } - @RequiredReadAction - @Override @Nullable + @Override + @RequiredReadAction protected String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.negatedConditionalExpressionErrorString().get(); } @@ -50,10 +51,10 @@ protected InspectionJSFix buildFix(PsiElement location, Object state) { } private static class NegatedConditionalFix extends InspectionJSFix { - @Override @Nonnull - public String getName() { - return InspectionJSLocalize.invertConditionFix().get(); + @Override + public LocalizeValue getName() { + return InspectionJSLocalize.invertConditionFix(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/NegatedIfStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/NegatedIfStatementJSInspection.java index 2e960e83..f5038b21 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/NegatedIfStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/NegatedIfStatementJSInspection.java @@ -19,6 +19,7 @@ import consulo.language.psi.PsiComment; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import consulo.project.Project; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @@ -28,21 +29,21 @@ public class NegatedIfStatementJSInspection extends JavaScriptInspection { private final NegatedIfElseFix fix = new NegatedIfElseFix(); - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.negatedIfStatementDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.negatedIfStatementDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.CONFUSING_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.CONFUSING_GROUP_NAME; } - @RequiredReadAction - @Override @Nullable + @Override + @RequiredReadAction protected String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.negatedRefStatementErrorString().get(); } @@ -58,10 +59,10 @@ protected InspectionJSFix buildFix(PsiElement location, Object state) { } private static class NegatedIfElseFix extends InspectionJSFix { - @Override @Nonnull - public String getName() { - return InspectionJSLocalize.invertIfConditionFix().get(); + @Override + public LocalizeValue getName() { + return InspectionJSLocalize.invertIfConditionFix(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/NestedConditionalExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/NestedConditionalExpressionJSInspection.java index 01093511..50e26bf0 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/NestedConditionalExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/NestedConditionalExpressionJSInspection.java @@ -8,26 +8,27 @@ import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.util.PsiTreeUtil; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class NestedConditionalExpressionJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.nestedConditionalExpressionDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.nestedConditionalExpressionDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.CONFUSING_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.CONFUSING_GROUP_NAME; } - @RequiredReadAction - @Override @Nullable + @Override + @RequiredReadAction protected String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.nestedConditionalExpressionErrorString().get(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/NestedFunctionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/NestedFunctionJSInspection.java index 8e0dbdf5..9bdc1c5b 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/NestedFunctionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/NestedFunctionJSInspection.java @@ -11,26 +11,27 @@ import consulo.language.editor.inspection.InspectionToolState; import consulo.language.psi.PsiElement; import consulo.language.psi.util.PsiTreeUtil; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class NestedFunctionJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.nestedFunctionDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.nestedFunctionDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.CONFUSING_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.CONFUSING_GROUP_NAME; } - @RequiredReadAction - @Override @Nullable + @Override + @RequiredReadAction protected String buildErrorString(Object state, Object... args) { final JSFunction function = (JSFunction)((PsiElement)args[0]).getParent(); if (functionHasIdentifier(function)) { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/OctalIntegerJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/OctalIntegerJSInspection.java index dd3465e5..0c029c65 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/OctalIntegerJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/OctalIntegerJSInspection.java @@ -7,27 +7,28 @@ import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.javascript.psi.JSSimpleLiteralExpression; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; import org.jetbrains.annotations.NonNls; @ExtensionImpl public class OctalIntegerJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.octalIntegerDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.octalIntegerDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.CONFUSING_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.CONFUSING_GROUP_NAME; } - @RequiredReadAction - @Override @Nullable + @Override + @RequiredReadAction protected String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.octalIntegerErrorString().get(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexBooleanExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexBooleanExpressionJSInspection.java index 9960e2ce..152788fc 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexBooleanExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexBooleanExpressionJSInspection.java @@ -14,157 +14,131 @@ import consulo.language.ast.IElementType; import consulo.language.editor.inspection.InspectionToolState; import consulo.language.psi.PsiElement; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; @ExtensionImpl -public class OverlyComplexBooleanExpressionJSInspection extends JavaScriptInspection -{ - @Override - @Nonnull - public String getDisplayName() - { - return InspectionJSLocalize.overlyComplexBooleanExpressionDisplayName().get(); - } +public class OverlyComplexBooleanExpressionJSInspection extends JavaScriptInspection { + @Nonnull + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.overlyComplexBooleanExpressionDisplayName(); + } - @Override - @Nonnull - public String getGroupDisplayName() - { - return JSGroupNames.CONFUSING_GROUP_NAME.get(); - } + @Nonnull + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.CONFUSING_GROUP_NAME; + } - @Nonnull - @Override - public InspectionToolState createStateProvider() - { - return new OverlyComplexBooleanExpressionJSInspectionState(); - } + @Nonnull + @Override + public InspectionToolState createStateProvider() { + return new OverlyComplexBooleanExpressionJSInspectionState(); + } - @Override - protected boolean buildQuickFixesOnlyForOnTheFlyErrors() - { - return true; - } + @Override + protected boolean buildQuickFixesOnlyForOnTheFlyErrors() { + return true; + } - @RequiredReadAction - @Override - protected String buildErrorString(Object state, Object... args) - { - return InspectionJSLocalize.overlyComplexBooleanExpressionErrorString().get(); - } + @RequiredReadAction + @Override + protected String buildErrorString(Object state, Object... args) { + return InspectionJSLocalize.overlyComplexBooleanExpressionErrorString().get(); + } - @Override - public BaseInspectionVisitor buildVisitor() - { - return new Visitor(); - } + @Override + public BaseInspectionVisitor buildVisitor() { + return new Visitor(); + } - private class Visitor extends BaseInspectionVisitor - { + private class Visitor extends BaseInspectionVisitor { - @Override - public void visitJSBinaryExpression(@Nonnull JSBinaryExpression expression) - { - super.visitJSBinaryExpression(expression); - checkExpression(expression); - } + @Override + public void visitJSBinaryExpression(@Nonnull JSBinaryExpression expression) { + super.visitJSBinaryExpression(expression); + checkExpression(expression); + } - @Override - public void visitJSPrefixExpression(@Nonnull JSPrefixExpression expression) - { - super.visitJSPrefixExpression(expression); - checkExpression(expression); - } + @Override + public void visitJSPrefixExpression(@Nonnull JSPrefixExpression expression) { + super.visitJSPrefixExpression(expression); + checkExpression(expression); + } - @Override - public void visitJSParenthesizedExpression(JSParenthesizedExpression expression) - { - super.visitJSParenthesizedExpression(expression); - checkExpression(expression); - } + @Override + public void visitJSParenthesizedExpression(JSParenthesizedExpression expression) { + super.visitJSParenthesizedExpression(expression); + checkExpression(expression); + } - private void checkExpression(JSExpression expression) - { - if(!isBoolean(expression)) - { - return; - } - if(isParentBoolean(expression)) - { - return; - } - final int numTerms = countTerms(expression); - if(numTerms <= myState.m_limit) - { - return; - } - registerError(expression); - } + private void checkExpression(JSExpression expression) { + if (!isBoolean(expression)) { + return; + } + if (isParentBoolean(expression)) { + return; + } + final int numTerms = countTerms(expression); + if (numTerms <= myState.m_limit) { + return; + } + registerError(expression); + } - private int countTerms(JSExpression expression) - { - if(expression == null) - { - return 0; - } - if(!isBoolean(expression)) - { - return 1; - } - if(expression instanceof JSBinaryExpression) - { - final JSBinaryExpression binaryExpression = (JSBinaryExpression) expression; - final JSExpression lhs = binaryExpression.getLOperand(); - final JSExpression rhs = binaryExpression.getROperand(); - return countTerms(lhs) + countTerms(rhs); - } - else if(expression instanceof JSPrefixExpression) - { - final JSPrefixExpression prefixExpression = (JSPrefixExpression) expression; - final JSExpression operand = prefixExpression.getExpression(); - return countTerms(operand); - } - else if(expression instanceof JSParenthesizedExpression) - { - final JSParenthesizedExpression parenthesizedExpression = (JSParenthesizedExpression) expression; - final JSExpression contents = parenthesizedExpression.getInnerExpression(); - return countTerms(contents); - } - return 1; - } + private int countTerms(JSExpression expression) { + if (expression == null) { + return 0; + } + if (!isBoolean(expression)) { + return 1; + } + if (expression instanceof JSBinaryExpression) { + final JSBinaryExpression binaryExpression = (JSBinaryExpression) expression; + final JSExpression lhs = binaryExpression.getLOperand(); + final JSExpression rhs = binaryExpression.getROperand(); + return countTerms(lhs) + countTerms(rhs); + } + else if (expression instanceof JSPrefixExpression) { + final JSPrefixExpression prefixExpression = (JSPrefixExpression) expression; + final JSExpression operand = prefixExpression.getExpression(); + return countTerms(operand); + } + else if (expression instanceof JSParenthesizedExpression) { + final JSParenthesizedExpression parenthesizedExpression = (JSParenthesizedExpression) expression; + final JSExpression contents = parenthesizedExpression.getInnerExpression(); + return countTerms(contents); + } + return 1; + } - private boolean isParentBoolean(JSExpression expression) - { - final PsiElement parent = expression.getParent(); - if(!(parent instanceof JSExpression)) - { - return false; - } - return isBoolean((JSExpression) parent); - } + private boolean isParentBoolean(JSExpression expression) { + final PsiElement parent = expression.getParent(); + if (!(parent instanceof JSExpression)) { + return false; + } + return isBoolean((JSExpression) parent); + } - private boolean isBoolean(JSExpression expression) - { - if(expression instanceof JSBinaryExpression) - { - final JSBinaryExpression binaryExpression = (JSBinaryExpression) expression; - final IElementType sign = binaryExpression.getOperationSign(); - return JSTokenTypes.ANDAND.equals(sign) || - JSTokenTypes.OROR.equals(sign); - } - else if(expression instanceof JSPrefixExpression) - { - final JSPrefixExpression prefixExpression = (JSPrefixExpression) expression; - final IElementType sign = prefixExpression.getOperationSign(); - return JSTokenTypes.EXCL.equals(sign); - } - else if(expression instanceof JSParenthesizedExpression) - { - final JSParenthesizedExpression parenthesizedExpression = (JSParenthesizedExpression) expression; - final JSExpression contents = parenthesizedExpression.getInnerExpression(); - return isBoolean(contents); - } - return false; - } - } + private boolean isBoolean(JSExpression expression) { + if (expression instanceof JSBinaryExpression) { + final JSBinaryExpression binaryExpression = (JSBinaryExpression) expression; + final IElementType sign = binaryExpression.getOperationSign(); + return JSTokenTypes.ANDAND.equals(sign) || + JSTokenTypes.OROR.equals(sign); + } + else if (expression instanceof JSPrefixExpression) { + final JSPrefixExpression prefixExpression = (JSPrefixExpression) expression; + final IElementType sign = prefixExpression.getOperationSign(); + return JSTokenTypes.EXCL.equals(sign); + } + else if (expression instanceof JSParenthesizedExpression) { + final JSParenthesizedExpression parenthesizedExpression = (JSParenthesizedExpression) expression; + final JSExpression contents = parenthesizedExpression.getInnerExpression(); + return isBoolean(contents); + } + return false; + } + } } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/PointlessArithmeticExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/PointlessArithmeticExpressionJSInspection.java index 6d562ef0..a7395eb1 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/PointlessArithmeticExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/PointlessArithmeticExpressionJSInspection.java @@ -15,6 +15,7 @@ import consulo.language.editor.inspection.ProblemDescriptor; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import consulo.project.Project; import jakarta.annotation.Nonnull; import org.jetbrains.annotations.NonNls; @@ -28,14 +29,14 @@ public class PointlessArithmeticExpressionJSInspection extends JavaScriptInspect @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.pointlessArithmeticExpressionDisplayName().get(); + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.pointlessArithmeticExpressionDisplayName(); } @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.CONFUSING_GROUP_NAME.get(); + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.CONFUSING_GROUP_NAME; } @Override @@ -89,10 +90,10 @@ public InspectionJSFix buildFix(PsiElement location, Object state) { } private class PointlessArithmeticFix extends InspectionJSFix { - @Override @Nonnull - public String getName() { - return InspectionJSLocalize.simplifyFix().get(); + @Override + public LocalizeValue getName() { + return InspectionJSLocalize.simplifyFix(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/PointlessBooleanExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/PointlessBooleanExpressionJSInspection.java index 9c718127..316d0dcb 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/PointlessBooleanExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/PointlessBooleanExpressionJSInspection.java @@ -18,6 +18,7 @@ import consulo.language.editor.inspection.ProblemDescriptor; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import consulo.project.Project; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @@ -30,16 +31,16 @@ public class PointlessBooleanExpressionJSInspection extends JavaScriptInspection { private final BooleanLiteralComparisonFix fix = new BooleanLiteralComparisonFix(); - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.pointlessBooleanExpressionDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.pointlessBooleanExpressionDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } @Override @@ -52,8 +53,8 @@ public BaseInspectionVisitor buildVisitor() { return new PointlessBooleanExpressionVisitor(); } - @RequiredReadAction @Override + @RequiredReadAction public String buildErrorString(Object state, Object... args) { return args[0] instanceof JSBinaryExpression binaryExpression ? InspectionJSLocalize.pointlessBooleanErrorString(calculateSimplifiedBinaryExpression(binaryExpression)).get() @@ -131,10 +132,10 @@ public InspectionJSFix buildFix(PsiElement location, Object state) { } private class BooleanLiteralComparisonFix extends InspectionJSFix { - @Override @Nonnull - public String getName() { - return InspectionJSLocalize.simplifyFix().get(); + @Override + public LocalizeValue getName() { + return InspectionJSLocalize.simplifyFix(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/VoidExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/VoidExpressionJSInspection.java index 4b67ebb8..1a8517af 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/VoidExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/VoidExpressionJSInspection.java @@ -8,27 +8,28 @@ import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; import org.jetbrains.annotations.NonNls; @ExtensionImpl public class VoidExpressionJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.voidExpressionDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.voidExpressionDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.CONFUSING_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.CONFUSING_GROUP_NAME; } - @RequiredReadAction - @Override @Nullable + @Override + @RequiredReadAction protected String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.voidExpressionErrorString().get(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/WithStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/WithStatementJSInspection.java index 943d63eb..09943822 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/WithStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/WithStatementJSInspection.java @@ -7,26 +7,27 @@ import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class WithStatementJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.withStatementDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.withStatementDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.CONFUSING_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.CONFUSING_GROUP_NAME; } - @RequiredReadAction - @Override @Nullable + @Override + @RequiredReadAction protected String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.withExpressionErrorString().get(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/BreakStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/BreakStatementJSInspection.java index 96b335bc..6132a168 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/BreakStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/BreakStatementJSInspection.java @@ -8,26 +8,27 @@ import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class BreakStatementJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.breakStatementDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.breakStatementDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } - @RequiredReadAction - @Override @Nullable + @Override + @RequiredReadAction protected String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.breakStatementErrorString().get(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/BreakStatementWithLabelJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/BreakStatementWithLabelJSInspection.java index 8c46d114..a83c3bf8 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/BreakStatementWithLabelJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/BreakStatementWithLabelJSInspection.java @@ -7,26 +7,27 @@ import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class BreakStatementWithLabelJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.breakStatementWithLabelDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.breakStatementWithLabelDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } - @RequiredReadAction - @Override @Nullable + @Override + @RequiredReadAction protected String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.breakStatementWithLabelErrorString().get(); } @@ -37,7 +38,6 @@ public BaseInspectionVisitor buildVisitor() { } private static class Visitor extends BaseInspectionVisitor { - @Override public void visitJSBreakStatement(@Nonnull JSBreakStatement statement) { super.visitJSBreakStatement(statement); if (statement.getLabel() == null) { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/ConditionalExpressionWithIdenticalBranchesJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/ConditionalExpressionWithIdenticalBranchesJSInspection.java index f1dd5375..f6509334 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/ConditionalExpressionWithIdenticalBranchesJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/ConditionalExpressionWithIdenticalBranchesJSInspection.java @@ -13,6 +13,7 @@ import consulo.language.editor.inspection.ProblemDescriptor; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import consulo.project.Project; import jakarta.annotation.Nonnull; @@ -20,16 +21,16 @@ public class ConditionalExpressionWithIdenticalBranchesJSInspection extends JavaScriptInspection { private InspectionJSFix fix = new CollapseConditional(); - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.conditionalExpressionWithIdenticalBranchesDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.conditionalExpressionWithIdenticalBranchesDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } @RequiredReadAction @@ -44,10 +45,10 @@ public InspectionJSFix buildFix(PsiElement location, Object state) { } private static class CollapseConditional extends InspectionJSFix { - @Override @Nonnull - public String getName() { - return InspectionJSLocalize.collapseConditionalExpressionFix().get(); + @Override + public LocalizeValue getName() { + return InspectionJSLocalize.collapseConditionalExpressionFix(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/ConstantConditionalExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/ConstantConditionalExpressionJSInspection.java index 454da65b..3cd1cc9b 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/ConstantConditionalExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/ConstantConditionalExpressionJSInspection.java @@ -13,21 +13,22 @@ import consulo.language.editor.inspection.ProblemDescriptor; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import consulo.project.Project; import jakarta.annotation.Nonnull; @ExtensionImpl public class ConstantConditionalExpressionJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.constantConditionalExpressionDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.constantConditionalExpressionDisplayName(); } @Override @@ -66,10 +67,10 @@ public InspectionJSFix buildFix(PsiElement location, Object state) { } private static class ConstantConditionalFix extends InspectionJSFix { - @Override @Nonnull - public String getName() { - return InspectionJSLocalize.simplifyFix().get(); + @Override + public LocalizeValue getName() { + return InspectionJSLocalize.simplifyFix(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/ConstantIfStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/ConstantIfStatementJSInspection.java index 30110186..f95a54a9 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/ConstantIfStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/ConstantIfStatementJSInspection.java @@ -14,31 +14,27 @@ import consulo.language.editor.inspection.ProblemDescriptor; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import consulo.project.Project; import jakarta.annotation.Nonnull; @ExtensionImpl public class ConstantIfStatementJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.constantIfStatementDisplayName().get(); - } - @Override - @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.constantIfStatementDisplayName(); } + @Nonnull @Override - public boolean isEnabledByDefault() { - return true; + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } - @RequiredReadAction - @Override @Nonnull + @Override + @RequiredReadAction protected String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.constantIfStatementProblemDescriptor().get(); } @@ -54,10 +50,10 @@ public InspectionJSFix buildFix(PsiElement location, Object state) { } private static class ConstantIfStatementFix extends InspectionJSFix { - @Override @Nonnull - public String getName() { - return InspectionJSLocalize.constantConditionalExpressionSimplifyQuickfix().get(); + @Override + public LocalizeValue getName() { + return InspectionJSLocalize.constantConditionalExpressionSimplifyQuickfix(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/ContinueStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/ContinueStatementJSInspection.java index d67138cc..5193b3cd 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/ContinueStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/ContinueStatementJSInspection.java @@ -8,26 +8,27 @@ import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class ContinueStatementJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.continueStatementDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.continueStatementDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } - @RequiredReadAction - @Override @Nullable + @Override + @RequiredReadAction protected String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.continueStatementErrorString().get(); } @@ -38,7 +39,6 @@ public BaseInspectionVisitor buildVisitor() { } private static class Visitor extends BaseInspectionVisitor { - @Override public void visitJSContinueStatement(@Nonnull JSContinueStatement statement) { super.visitJSContinueStatement(statement); registerStatementError(statement); diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/ContinueStatementWithLabelJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/ContinueStatementWithLabelJSInspection.java index fe810264..7e282523 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/ContinueStatementWithLabelJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/ContinueStatementWithLabelJSInspection.java @@ -7,26 +7,27 @@ import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class ContinueStatementWithLabelJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.continueStatementWithLabelDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.continueStatementWithLabelDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } - @RequiredReadAction - @Override @Nullable + @Override + @RequiredReadAction protected String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.continueStatementWithLabelErrorString().get(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/DefaultNotLastCaseInSwitchJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/DefaultNotLastCaseInSwitchJSInspection.java index 4b7b8bd4..1c875630 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/DefaultNotLastCaseInSwitchJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/DefaultNotLastCaseInSwitchJSInspection.java @@ -8,25 +8,26 @@ import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; @ExtensionImpl public class DefaultNotLastCaseInSwitchJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.defaultNotLastCaseInSwitchDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.defaultNotLastCaseInSwitchDisplayName(); } - @RequiredReadAction - @Override @Nonnull + @Override + @RequiredReadAction protected String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.defaultBranchNotLastCaseInSwitchErrorString().get(); } @@ -44,10 +45,9 @@ public void visitJSSwitchStatement(@Nonnull JSSwitchStatement statement) { if (caseClauses == null) { return; } - for (int i = 0; i < caseClauses.length-1; i++) { + for (int i = 0; i < caseClauses.length - 1; i++) { final JSCaseClause caseClause = caseClauses[i]; - if(caseClause.isDefault()) - { + if (caseClause.isDefault()) { registerError(caseClause.getFirstChild()); } } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/DuplicateConditionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/DuplicateConditionJSInspection.java index 0c6644d4..1fd1f21f 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/DuplicateConditionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/DuplicateConditionJSInspection.java @@ -11,6 +11,7 @@ import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; import consulo.language.psi.PsiElement; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import java.util.Arrays; @@ -19,20 +20,20 @@ @ExtensionImpl public class DuplicateConditionJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.duplicateConditionInIfStatementDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.duplicateConditionInIfStatementDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } - @RequiredReadAction @Override + @RequiredReadAction public String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.duplicateConditionErrorString().get(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/FallthroughInSwitchStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/FallthroughInSwitchStatementJSInspection.java index 14276956..42092197 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/FallthroughInSwitchStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/FallthroughInSwitchStatementJSInspection.java @@ -11,31 +11,27 @@ import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class FallthroughInSwitchStatementJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.fallThroughInSwitchStatementDisplayName().get(); - } - @Override - @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.fallThroughInSwitchStatementDisplayName(); } + @Nonnull @Override - public boolean isEnabledByDefault() { - return true; + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } - @RequiredReadAction - @Override @Nullable + @Override + @RequiredReadAction protected String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.fallThroughInSwitchStatementErrorString().get(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/ForLoopReplaceableByWhileJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/ForLoopReplaceableByWhileJSInspection.java index a98f2b71..5a8c64ee 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/ForLoopReplaceableByWhileJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/ForLoopReplaceableByWhileJSInspection.java @@ -15,128 +15,109 @@ import consulo.language.editor.inspection.ProblemDescriptor; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import consulo.project.Project; import jakarta.annotation.Nonnull; +import org.intellij.lang.annotations.Pattern; import org.jetbrains.annotations.NonNls; @ExtensionImpl -public class ForLoopReplaceableByWhileJSInspection extends JavaScriptInspection -{ - @Override - @Nonnull - public String getDisplayName() - { - return InspectionJSLocalize.forLoopReplaceableByWhileDisplayName().get(); - } +public class ForLoopReplaceableByWhileJSInspection extends JavaScriptInspection { + @Nonnull + @Override + @Pattern(value = "[a-zA-Z_0-9.-]+") + public String getID() { + return "ForLoopReplaceableByWhile"; + } - @Override - @Nonnull - public String getID() - { - return "ForLoopReplaceableByWhile"; - } + @Nonnull + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.forLoopReplaceableByWhileDisplayName(); + } - @Override - @Nonnull - public String getGroupDisplayName() - { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); - } + @Override + @Nonnull + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.CONTROL_FLOW_GROUP_NAME; + } - @RequiredReadAction - @Override - @Nonnull - protected String buildErrorString(Object state, Object... args) - { - return InspectionJSLocalize.forLoopReplaceableByWhileProblemDescriptor().get(); - } + @Nonnull + @Override + @RequiredReadAction + protected String buildErrorString(Object state, Object... args) { + return InspectionJSLocalize.forLoopReplaceableByWhileProblemDescriptor().get(); + } - @Nonnull - @Override - public InspectionToolState createStateProvider() - { - return new ForLoopReplaceableByWhileJSInspectionState(); - } + @Nonnull + @Override + public InspectionToolState createStateProvider() { + return new ForLoopReplaceableByWhileJSInspectionState(); + } - @Override - public InspectionJSFix buildFix(PsiElement location, Object state) - { - return new ReplaceForByWhileFix(); - } + @Override + public InspectionJSFix buildFix(PsiElement location, Object state) { + return new ReplaceForByWhileFix(); + } - private static class ReplaceForByWhileFix extends InspectionJSFix - { + private static class ReplaceForByWhileFix extends InspectionJSFix { + @Nonnull + @Override + public LocalizeValue getName() { + return InspectionJSLocalize.forLoopReplaceableByWhileReplaceQuickfix(); + } - @Override - @Nonnull - public String getName() - { - return InspectionJSLocalize.forLoopReplaceableByWhileReplaceQuickfix().get(); - } + @Override + public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { + final PsiElement forKeywordElement = descriptor.getPsiElement(); + final JSForStatement forStatement = (JSForStatement) forKeywordElement.getParent(); + assert forStatement != null; + final JSExpression condition = forStatement.getCondition(); + final JSStatement body = forStatement.getBody(); + final String bodyText = body == null ? "" : body.getText(); + @NonNls final String whileStatement; + if (condition == null) { + whileStatement = "while(true)" + bodyText; + } + else { + whileStatement = "while(" + condition.getText() + ')' + bodyText; + } + replaceStatement(forStatement, whileStatement); + } + } - @Override - public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException - { - final PsiElement forKeywordElement = descriptor.getPsiElement(); - final JSForStatement forStatement = (JSForStatement) forKeywordElement.getParent(); - assert forStatement != null; - final JSExpression condition = forStatement.getCondition(); - final JSStatement body = forStatement.getBody(); - final String bodyText = body == null ? "" : body.getText(); - @NonNls final String whileStatement; - if(condition == null) - { - whileStatement = "while(true)" + bodyText; - } - else - { - whileStatement = "while(" + condition.getText() + ')' + bodyText; - } - replaceStatement(forStatement, whileStatement); - } - } + @Override + public BaseInspectionVisitor buildVisitor() { + return new ForLoopReplaceableByWhileVisitor(); + } - @Override - public BaseInspectionVisitor buildVisitor() - { - return new ForLoopReplaceableByWhileVisitor(); - } - - private class ForLoopReplaceableByWhileVisitor extends BaseInspectionVisitor - { - @Override - public void visitJSForStatement(@Nonnull JSForStatement statement) - { - super.visitJSForStatement(statement); - final JSVarStatement varStatement = statement.getVarDeclaration(); - if(varStatement != null) - { - return; - } - final JSExpression initialization = statement.getInitialization(); - if(initialization != null) - { - return; - } - final JSExpression update = statement.getUpdate(); - if(update != null) - { - return; - } - if(myState.m_ignoreLoopsWithoutConditions) - { - final JSExpression condition = statement.getCondition(); - if(condition == null) - { - return; - } - final String conditionText = condition.getText(); - if("true".equals(conditionText)) - { - return; - } - } - registerStatementError(statement); - } - } + private class ForLoopReplaceableByWhileVisitor extends BaseInspectionVisitor { + @Override + public void visitJSForStatement(@Nonnull JSForStatement statement) { + super.visitJSForStatement(statement); + final JSVarStatement varStatement = statement.getVarDeclaration(); + if (varStatement != null) { + return; + } + final JSExpression initialization = statement.getInitialization(); + if (initialization != null) { + return; + } + final JSExpression update = statement.getUpdate(); + if (update != null) { + return; + } + if (myState.m_ignoreLoopsWithoutConditions) { + final JSExpression condition = statement.getCondition(); + if (condition == null) { + return; + } + final String conditionText = condition.getText(); + if ("true".equals(conditionText)) { + return; + } + } + registerStatementError(statement); + } + } } \ No newline at end of file diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/ForLoopThatDoesntUseLoopVariableJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/ForLoopThatDoesntUseLoopVariableJSInspection.java index 6eb6e85e..54a1051d 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/ForLoopThatDoesntUseLoopVariableJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/ForLoopThatDoesntUseLoopVariableJSInspection.java @@ -7,25 +7,26 @@ import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; @ExtensionImpl public class ForLoopThatDoesntUseLoopVariableJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.forLoopNotUseLoopVariableDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.forLoopNotUseLoopVariableDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.BUGS_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.BUGS_GROUP_NAME; } - @RequiredReadAction - @Override @Nonnull + @Override + @RequiredReadAction public String buildErrorString(Object state, Object... args) { final boolean condition = (Boolean) args[0]; final boolean update = (Boolean) args[1]; diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/IfStatementWithIdenticalBranchesJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/IfStatementWithIdenticalBranchesJSInspection.java index c8ee89f0..48b9c965 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/IfStatementWithIdenticalBranchesJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/IfStatementWithIdenticalBranchesJSInspection.java @@ -13,6 +13,7 @@ import consulo.language.editor.inspection.ProblemDescriptor; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import consulo.project.Project; import jakarta.annotation.Nonnull; @@ -20,20 +21,20 @@ public class IfStatementWithIdenticalBranchesJSInspection extends JavaScriptInspection { private InspectionJSFix fix = new CollapseIfFix(); - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.ifStatementWithIdenticalBranchesDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.ifStatementWithIdenticalBranchesDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } - @RequiredReadAction @Override + @RequiredReadAction public String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.refStatementWithIdenticalBranchesErrorString().get(); } @@ -44,10 +45,10 @@ public InspectionJSFix buildFix(PsiElement location, Object state) { } private static class CollapseIfFix extends InspectionJSFix { - @Override @Nonnull - public String getName() { - return InspectionJSLocalize.collapseIfStatementFix().get(); + @Override + public LocalizeValue getName() { + return InspectionJSLocalize.collapseIfStatementFix(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/IfStatementWithTooManyBranchesJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/IfStatementWithTooManyBranchesJSInspection.java index 9143eaaa..789f8778 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/IfStatementWithTooManyBranchesJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/IfStatementWithTooManyBranchesJSInspection.java @@ -10,83 +10,70 @@ import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.inspection.InspectionToolState; import consulo.language.psi.PsiElement; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; @ExtensionImpl -public class IfStatementWithTooManyBranchesJSInspection extends JavaScriptInspection -{ - @Override - @Nonnull - public String getDisplayName() - { - return InspectionJSLocalize.ifStatementWithTooManyBranchesDisplayName().get(); - } +public class IfStatementWithTooManyBranchesJSInspection extends JavaScriptInspection { + @Nonnull + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.ifStatementWithTooManyBranchesDisplayName(); + } - @Override - @Nonnull - public String getGroupDisplayName() - { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); - } + @Nonnull + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.CONTROL_FLOW_GROUP_NAME; + } - @Nonnull - @Override - public InspectionToolState createStateProvider() - { - return new IfStatementWithTooManyBranchesJSInspectionState(); - } + @Nonnull + @Override + public InspectionToolState createStateProvider() { + return new IfStatementWithTooManyBranchesJSInspectionState(); + } - @RequiredReadAction - @Override - protected String buildErrorString(Object state, Object... args) - { - final JSIfStatement statement = (JSIfStatement) args[0]; - final int branches = calculateNumBranches(statement); - return InspectionJSLocalize.ifStatementWithTooManyBranchesErrorString(branches).get(); - } + @Override + @RequiredReadAction + protected String buildErrorString(Object state, Object... args) { + final JSIfStatement statement = (JSIfStatement) args[0]; + final int branches = calculateNumBranches(statement); + return InspectionJSLocalize.ifStatementWithTooManyBranchesErrorString(branches).get(); + } - private static int calculateNumBranches(JSIfStatement statement) - { - final JSStatement branch = statement.getElse(); - if(branch == null) - { - return 1; - } - if(!(branch instanceof JSIfStatement)) - { - return 2; - } - return 1 + calculateNumBranches((JSIfStatement) branch); - } + private static int calculateNumBranches(JSIfStatement statement) { + final JSStatement branch = statement.getElse(); + if (branch == null) { + return 1; + } + if (!(branch instanceof JSIfStatement)) { + return 2; + } + return 1 + calculateNumBranches((JSIfStatement) branch); + } - @Override - public BaseInspectionVisitor buildVisitor() - { - return new Visitor(); - } + @Override + public BaseInspectionVisitor buildVisitor() { + return new Visitor(); + } - private class Visitor extends BaseInspectionVisitor - { - @Override - public void visitJSIfStatement(@Nonnull JSIfStatement statement) - { - super.visitJSIfStatement(statement); - final PsiElement parent = statement.getParent(); - if(parent instanceof JSIfStatement) - { - final JSIfStatement parentStatement = (JSIfStatement) parent; - final JSStatement elseBranch = parentStatement.getElse(); - if(statement.equals(elseBranch)) - { - return; - } - } - final int branches = calculateNumBranches(statement); - if(branches <= myState.m_limit) - { - return; - } - registerStatementError(statement, statement); - } - } + private class Visitor extends BaseInspectionVisitor { + @Override + public void visitJSIfStatement(@Nonnull JSIfStatement statement) { + super.visitJSIfStatement(statement); + final PsiElement parent = statement.getParent(); + if (parent instanceof JSIfStatement) { + final JSIfStatement parentStatement = (JSIfStatement) parent; + final JSStatement elseBranch = parentStatement.getElse(); + if (statement.equals(elseBranch)) { + return; + } + } + final int branches = calculateNumBranches(statement); + if (branches <= myState.m_limit) { + return; + } + registerStatementError(statement, statement); + } + } } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/LabeledStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/LabeledStatementJSInspection.java index c2952f68..59a91756 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/LabeledStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/LabeledStatementJSInspection.java @@ -7,27 +7,28 @@ import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; import org.jetbrains.annotations.NonNls; @ExtensionImpl public class LabeledStatementJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.labeledStatementDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.labeledStatementDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } - @RequiredReadAction - @Override @Nullable + @Override + @RequiredReadAction protected String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.statementLabelErrorString().get(); } @@ -42,8 +43,7 @@ private static class Visitor extends BaseInspectionVisitor { public void visitJSLabeledStatement(@Nonnull JSLabeledStatement statement) { super.visitJSLabeledStatement(statement); @NonNls final String label = statement.getLabel(); - if("javascript".equals(label)) - { + if ("javascript".equals(label)) { return; } registerStatementError(statement); diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/LoopStatementThatDoesntLoopJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/LoopStatementThatDoesntLoopJSInspection.java index a927aab4..66c5d5d5 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/LoopStatementThatDoesntLoopJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/LoopStatementThatDoesntLoopJSInspection.java @@ -8,20 +8,21 @@ import com.sixrr.inspectjs.utils.ControlFlowUtils; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; @ExtensionImpl public class LoopStatementThatDoesntLoopJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.loopStatementThatDoesnTLoopDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.loopStatementThatDoesnTLoopDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/NestedSwitchStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/NestedSwitchStatementJSInspection.java index e9070b90..29b286d3 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/NestedSwitchStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/NestedSwitchStatementJSInspection.java @@ -8,26 +8,27 @@ import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.util.PsiTreeUtil; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class NestedSwitchStatementJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.nestedSwitchStatementDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.nestedSwitchStatementDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } - @RequiredReadAction - @Override @Nullable + @Override + @RequiredReadAction protected String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.nestedSwitchStatementErrorString().get(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/SwitchStatementWithNoDefaultBranchJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/SwitchStatementWithNoDefaultBranchJSInspection.java index 71701535..f61f33a1 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/SwitchStatementWithNoDefaultBranchJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/SwitchStatementWithNoDefaultBranchJSInspection.java @@ -8,26 +8,27 @@ import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class SwitchStatementWithNoDefaultBranchJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.switchStatementWithNoDefaultBranchDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.switchStatementWithNoDefaultBranchDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } - @RequiredReadAction - @Override @Nullable + @Override + @RequiredReadAction protected String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.switchStatementWithNoDefaultBranchErrorString().get(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/TailRecursionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/TailRecursionJSInspection.java index b26d2c19..4224cdca 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/TailRecursionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/TailRecursionJSInspection.java @@ -9,25 +9,26 @@ import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; import consulo.language.psi.util.PsiTreeUtil; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; @ExtensionImpl public class TailRecursionJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.tailRecursionDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.tailRecursionDisplayName(); } - @RequiredReadAction - @Override @Nonnull + @Override + @RequiredReadAction protected String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.tailRecursionProblemDescriptor().get(); } @@ -171,37 +172,39 @@ private static boolean isTailCallReturn(PsiElement element, */ @Override - public BaseInspectionVisitor buildVisitor() { + public BaseInspectionVisitor buildVisitor() { return new TailRecursionVisitor(); } private static class TailRecursionVisitor extends BaseInspectionVisitor { - @Override public void visitJSReturnStatement( - @Nonnull JSReturnStatement statement) { + @Override + public void visitJSReturnStatement( + @Nonnull JSReturnStatement statement + ) { super.visitJSReturnStatement(statement); final JSExpression returnValue = statement.getExpression(); if (!(returnValue instanceof JSCallExpression)) { return; } final JSFunction containingMethod = - PsiTreeUtil.getParentOfType(statement, - JSFunction.class); + PsiTreeUtil.getParentOfType( + statement, + JSFunction.class + ); if (containingMethod == null) { return; } final JSCallExpression returnCall = - (JSCallExpression) returnValue; + (JSCallExpression) returnValue; final JSExpression methodExpression = returnCall.getMethodExpression(); - if(!(methodExpression instanceof JSReferenceExpression)) - { + if (!(methodExpression instanceof JSReferenceExpression)) { return; } - final JSReferenceExpression reference =(JSReferenceExpression) methodExpression; + final JSReferenceExpression reference = (JSReferenceExpression) methodExpression; final PsiElement referent = reference.resolve(); - if(!(referent instanceof JSFunction)) - { + if (!(referent instanceof JSFunction)) { return; } final JSFunction method = (JSFunction) referent; diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/TrivialConditionalJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/TrivialConditionalJSInspection.java index cd87e5f1..4c87d710 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/TrivialConditionalJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/TrivialConditionalJSInspection.java @@ -14,30 +14,33 @@ import consulo.language.editor.inspection.ProblemDescriptor; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import consulo.project.Project; import jakarta.annotation.Nonnull; +import org.intellij.lang.annotations.Pattern; import org.jetbrains.annotations.NonNls; @ExtensionImpl public class TrivialConditionalJSInspection extends JavaScriptInspection { private final TrivialConditionalFix fix = new TrivialConditionalFix(); - @Override @Nonnull + @Override + @Pattern(value = "[a-zA-Z_0-9.-]+") public String getID() { return "RedundantConditionalExpressionJS"; } - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.redundantConditionalExpressionDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.redundantConditionalExpressionDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } @Override @@ -75,10 +78,10 @@ public InspectionJSFix buildFix(PsiElement location, Object state) { } private static class TrivialConditionalFix extends InspectionJSFix { - @Override @Nonnull - public String getName() { - return InspectionJSLocalize.simplifyFix().get(); + @Override + public LocalizeValue getName() { + return InspectionJSLocalize.simplifyFix(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/TrivialIfJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/TrivialIfJSInspection.java index 2b9d22f8..707af81a 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/TrivialIfJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/TrivialIfJSInspection.java @@ -18,30 +18,33 @@ import consulo.language.psi.PsiWhiteSpace; import consulo.language.psi.util.PsiTreeUtil; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import consulo.project.Project; import jakarta.annotation.Nonnull; +import org.intellij.lang.annotations.Pattern; import org.jetbrains.annotations.NonNls; @ExtensionImpl public class TrivialIfJSInspection extends JavaScriptInspection { private final TrivialIfFix fix = new TrivialIfFix(); + @Nonnull @Override - @Nonnull + @Pattern(value = "[a-zA-Z_0-9.-]+") public String getID() { return "RedundantIfStatementJS"; } - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.redundantIfStatementDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.redundantIfStatementDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } @Override @@ -66,10 +69,10 @@ public InspectionJSFix buildFix(PsiElement location, Object state) { } private static class TrivialIfFix extends InspectionJSFix { - @Override @Nonnull - public String getName() { - return InspectionJSLocalize.simplifyFix().get(); + @Override + public LocalizeValue getName() { + return InspectionJSLocalize.simplifyFix(); } @Override @@ -78,19 +81,26 @@ public void doFix(Project project, ProblemDescriptor descriptor) throws Incorrec final JSIfStatement statement = (JSIfStatement) ifKeywordElement.getParent(); if (isSimplifiableAssignment(statement)) { replaceSimplifiableAssignment(statement); - } else if (isSimplifiableReturn(statement)) { + } + else if (isSimplifiableReturn(statement)) { repaceSimplifiableReturn(statement); - } else if (isSimplifiableImplicitReturn(statement)) { + } + else if (isSimplifiableImplicitReturn(statement)) { replaceSimplifiableImplicitReturn(statement); - } else if (isSimplifiableAssignmentNegated(statement)) { + } + else if (isSimplifiableAssignmentNegated(statement)) { replaceSimplifiableAssignmentNegated(statement); - } else if (isSimplifiableReturnNegated(statement)) { + } + else if (isSimplifiableReturnNegated(statement)) { repaceSimplifiableReturnNegated(statement); - } else if (isSimplifiableImplicitReturnNegated(statement)) { + } + else if (isSimplifiableImplicitReturnNegated(statement)) { replaceSimplifiableImplicitReturnNegated(statement); - } else if (isSimplifiableImplicitAssignment(statement)) { + } + else if (isSimplifiableImplicitAssignment(statement)) { replaceSimplifiableImplicitAssignment(statement); - } else if (isSimplifiableImplicitAssignmentNegated(statement)) { + } + else if (isSimplifiableImplicitAssignmentNegated(statement)) { replaceSimplifiableImplicitAssignmentNegated(statement); } } @@ -302,7 +312,8 @@ public static boolean isSimplifiableAssignment(JSIfStatement ifStatement) { final JSExpression thenLhs = thenExpression.getLOperand(); final JSExpression elseLhs = elseExpression.getLOperand(); return EquivalenceChecker.expressionsAreEquivalent(thenLhs, elseLhs); - } else { + } + else { return false; } } @@ -323,7 +334,8 @@ public static boolean isSimplifiableAssignmentNegated(JSIfStatement ifStatement) final JSExpression thenLhs = thenExpression.getLOperand(); final JSExpression elseLhs = elseExpression.getLOperand(); return EquivalenceChecker.expressionsAreEquivalent(thenLhs, elseLhs); - } else { + } + else { return false; } } @@ -352,7 +364,8 @@ public static boolean isSimplifiableImplicitAssignment(JSIfStatement ifStatement final JSExpression thenLhs = thenExpression.getLOperand(); final JSExpression elseLhs = elseExpression.getLOperand(); return EquivalenceChecker.expressionsAreEquivalent(thenLhs, elseLhs); - } else { + } + else { return false; } } @@ -381,80 +394,81 @@ public static boolean isSimplifiableImplicitAssignmentNegated(JSIfStatement ifSt final JSExpression thenLhs = thenExpression.getLOperand(); final JSExpression elseLhs = elseExpression.getLOperand(); return EquivalenceChecker.expressionsAreEquivalent(thenLhs, elseLhs); - } else { + } + else { return false; } } @NonNls private static String getTextForOperator(IElementType operator) { - if(JSTokenTypes.EQ.equals(operator)) { + if (JSTokenTypes.EQ.equals(operator)) { return "="; } - if(JSTokenTypes.NE.equals(operator)) { + if (JSTokenTypes.NE.equals(operator)) { return "!="; } - if(JSTokenTypes.LE.equals(operator)) { + if (JSTokenTypes.LE.equals(operator)) { return "<="; } - if(JSTokenTypes.GE.equals(operator)) { + if (JSTokenTypes.GE.equals(operator)) { return ">="; } - if(JSTokenTypes.LT.equals(operator)) { + if (JSTokenTypes.LT.equals(operator)) { return "<="; } - if(JSTokenTypes.GT.equals(operator)) { + if (JSTokenTypes.GT.equals(operator)) { return ">="; } - if(JSTokenTypes.EQEQ.equals(operator)) { + if (JSTokenTypes.EQEQ.equals(operator)) { return "=="; } - if(JSTokenTypes.EQEQEQ.equals(operator)) { + if (JSTokenTypes.EQEQEQ.equals(operator)) { return "==="; } - if(JSTokenTypes.NEQEQ.equals(operator)) { + if (JSTokenTypes.NEQEQ.equals(operator)) { return "!=="; } - if(JSTokenTypes.PLUSEQ.equals(operator)) { + if (JSTokenTypes.PLUSEQ.equals(operator)) { return "+="; } - if(JSTokenTypes.MINUSEQ.equals(operator)) { + if (JSTokenTypes.MINUSEQ.equals(operator)) { return "-="; } - if(JSTokenTypes.MULTEQ.equals(operator)) { + if (JSTokenTypes.MULTEQ.equals(operator)) { return "*="; } - if(JSTokenTypes.DIVEQ.equals(operator)) { + if (JSTokenTypes.DIVEQ.equals(operator)) { return "/="; } - if(JSTokenTypes.PERCEQ.equals(operator)) { + if (JSTokenTypes.PERCEQ.equals(operator)) { return "%="; } - if(JSTokenTypes.XOREQ.equals(operator)) { + if (JSTokenTypes.XOREQ.equals(operator)) { return "^="; } - if(JSTokenTypes.ANDEQ.equals(operator)) { + if (JSTokenTypes.ANDEQ.equals(operator)) { return "&="; } - if(JSTokenTypes.OREQ.equals(operator)) { + if (JSTokenTypes.OREQ.equals(operator)) { return "|="; } - if(JSTokenTypes.LTLT.equals(operator)) { + if (JSTokenTypes.LTLT.equals(operator)) { return "<<"; } - if(JSTokenTypes.LTLTEQ.equals(operator)) { + if (JSTokenTypes.LTLTEQ.equals(operator)) { return "<<="; } - if(JSTokenTypes.GTGT.equals(operator)) { + if (JSTokenTypes.GTGT.equals(operator)) { return ">>"; } - if(JSTokenTypes.GTGTEQ.equals(operator)) { + if (JSTokenTypes.GTGTEQ.equals(operator)) { return ">>="; } - if(JSTokenTypes.GTGTGT.equals(operator)) { + if (JSTokenTypes.GTGTGT.equals(operator)) { return ">>>"; } - if(JSTokenTypes.GTGTGTEQ.equals(operator)) { + if (JSTokenTypes.GTGTGTEQ.equals(operator)) { return ">>>="; } return "unknown"; diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryContinueJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryContinueJSInspection.java index a51a7dfd..fc2b589e 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryContinueJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryContinueJSInspection.java @@ -12,6 +12,7 @@ import consulo.language.editor.inspection.ProblemDescriptor; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import consulo.project.Project; import jakarta.annotation.Nonnull; @@ -19,25 +20,20 @@ public class UnnecessaryContinueJSInspection extends JavaScriptInspection { private final UnnecessaryContinueFix fix = new UnnecessaryContinueFix(); - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.unnecessaryContinueStatementDisplayName().get(); - } - @Override - @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.unnecessaryContinueStatementDisplayName(); } + @Nonnull @Override - public boolean isEnabledByDefault() { - return true; + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } - @RequiredReadAction @Override + @RequiredReadAction public String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.unnecessaryContinueErrorString().get(); } @@ -53,10 +49,10 @@ public InspectionJSFix buildFix(PsiElement location, Object state) { } private static class UnnecessaryContinueFix extends InspectionJSFix { - @Override @Nonnull - public String getName() { - return InspectionJSLocalize.removeUnnecessaryContinueFix().get(); + @Override + public LocalizeValue getName() { + return InspectionJSLocalize.removeUnnecessaryContinueFix(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelJSInspection.java index 46447904..0ef8d14c 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelJSInspection.java @@ -11,26 +11,22 @@ import consulo.language.editor.inspection.ProblemDescriptor; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import consulo.project.Project; import jakarta.annotation.Nonnull; @ExtensionImpl public class UnnecessaryLabelJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.unnecessaryLabelDisplayName().get(); - } - @Override - @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.unnecessaryLabelDisplayName(); } + @Nonnull @Override - public boolean isEnabledByDefault() { - return true; + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } @Override @@ -38,9 +34,9 @@ public BaseInspectionVisitor buildVisitor() { return new UnusedLabelVisitor(); } - @RequiredReadAction - @Override @Nonnull + @Override + @RequiredReadAction protected String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.unnecessaryLabelErrorString().get(); } @@ -51,10 +47,10 @@ public InspectionJSFix buildFix(PsiElement location, Object state) { } private static class UnusedLabelFix extends InspectionJSFix { - @Override @Nonnull - public String getName() { - return InspectionJSLocalize.removeLabelFix().get(); + @Override + public LocalizeValue getName() { + return InspectionJSLocalize.removeLabelFix(); } @Override From 71db860b4fab8f5bd18177b07f2f33242efc17f8 Mon Sep 17 00:00:00 2001 From: UNV Date: Thu, 9 Oct 2025 23:15:18 +0300 Subject: [PATCH 126/150] Localizing inspections and their fixes (part 2). --- .../qucikFixes/CreateJSFunctionFixBase.java | 15 ++----- .../bitwise/ShiftOutOfRangeJSInspection.java | 19 +++++---- ...saryLabelOnBreakStatementJSInspection.java | 22 ++++------ ...yLabelOnContinueStatementJSInspection.java | 23 +++++----- .../UnnecessaryReturnJSInspection.java | 23 +++++----- .../ReuseOfLocalVariableJSInspection.java | 17 ++++---- .../UnnecessaryLocalVariableJSInspection.java | 42 +++++++++---------- .../dom/DocumentWriteJSInspection.java | 17 ++++---- .../inspectjs/dom/InnerHTMLJSInspection.java | 17 ++++---- .../XHTMLIncompatabilitiesJSInspection.java | 17 ++++---- ...ueOrBreakFromFinallyBlockJSInspection.java | 18 ++++---- .../EmptyCatchBlockJSInspection.java | 17 ++++---- .../EmptyFinallyBlockJSInspection.java | 17 ++++---- .../exception/EmptyTryBlockJSInspection.java | 17 ++++---- .../ExceptionCaughtLocallyJSInspection.java | 19 ++++----- .../ReturnFromFinallyBlockJSInspection.java | 19 +++++---- .../ThrowFromFinallyBlockJSInspection.java | 22 +++++----- .../UnusedCatchParameterJSInspection.java | 17 ++++---- .../com/sixrr/inspectjs/fix/RenameFix.java | 7 ++-- .../CyclomaticComplexityJSInspection.java | 19 +++++---- ...FunctionWithMultipleLoopsJSInspection.java | 9 ++-- ...nWithMultipleReturnPointsJSInspection.java | 15 +++---- .../NestingDepthJSInspection.java | 19 +++++---- .../ParametersPerFunctionJSInspection.java | 19 +++++---- .../StatementsPerFunctionJSInspection.java | 9 ++-- ...ThreeNegationsPerFunctionJSInspection.java | 9 ++-- .../FunctionNamingConventionJSInspection.java | 19 +++++---- ...lVariableNamingConventionJSInspection.java | 19 +++++---- ...ParameterNamingConventionJSInspection.java | 23 +++++----- .../style/ChainedEqualityJSInspection.java | 20 +++++---- .../ChainedFunctionCallJSInspection.java | 20 ++++----- ...ConstantOnLHSOfComparisonJSInspection.java | 27 ++++++------ ...ConstantOnRHSOfComparisonJSInspection.java | 25 ++++++----- .../style/NestedFunctionCallJSInspection.java | 10 ++--- .../NonBlockStatementBodyJSInspection.java | 13 +++--- .../UnterminatedStatementJSInspection.java | 13 +++--- .../BadExpressionStatementJSInspection.java | 17 ++++---- .../DebuggerStatementJSInspection.java | 9 ++-- .../DuplicateCaseLabelJSInspection.java | 15 +++---- ...onWithInconsistentReturnsJSInspection.java | 17 ++++---- .../StringLiteralBreaksHTMLJSInspection.java | 17 ++++---- ...ionReferencesGlobalObjectJSInspection.java | 17 ++++---- .../validity/UnreachableCodeJSInspection.java | 17 ++++---- 43 files changed, 392 insertions(+), 370 deletions(-) diff --git a/base-impl/src/main/java/consulo/javascript/inspections/qucikFixes/CreateJSFunctionFixBase.java b/base-impl/src/main/java/consulo/javascript/inspections/qucikFixes/CreateJSFunctionFixBase.java index 9ec0c147..72c482d4 100644 --- a/base-impl/src/main/java/consulo/javascript/inspections/qucikFixes/CreateJSFunctionFixBase.java +++ b/base-impl/src/main/java/consulo/javascript/inspections/qucikFixes/CreateJSFunctionFixBase.java @@ -14,7 +14,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package consulo.javascript.inspections.qucikFixes; import com.intellij.lang.javascript.inspections.qucikFixes.BaseCreateFix; @@ -22,7 +21,6 @@ import com.intellij.lang.javascript.psi.JSReferenceExpression; import consulo.annotation.access.RequiredReadAction; import consulo.javascript.language.JavaScriptFeature; -import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.editor.template.Template; import consulo.language.psi.PsiElement; import consulo.language.psi.PsiFile; @@ -37,22 +35,17 @@ * @since 2016-02-24 */ public abstract class CreateJSFunctionFixBase extends BaseCreateFix { + @Nonnull private final LocalizeValue myMessage; - public CreateJSFunctionFixBase(LocalizeValue message) { + public CreateJSFunctionFixBase(@Nonnull LocalizeValue message) { myMessage = message; } @Override @Nonnull - public String getName() { - return myMessage.get(); - } - - @Override - @Nonnull - public String getFamilyName() { - return JavaScriptLocalize.javascriptCreateFunctionIntentionFamily().get(); + public LocalizeValue getName() { + return myMessage; } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bitwise/ShiftOutOfRangeJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bitwise/ShiftOutOfRangeJSInspection.java index 82465591..b0a6c23d 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bitwise/ShiftOutOfRangeJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bitwise/ShiftOutOfRangeJSInspection.java @@ -11,27 +11,28 @@ import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; @ExtensionImpl public class ShiftOutOfRangeJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.shiftOperationByInappropriateConstantDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.shiftOperationByInappropriateConstantDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.BITWISE_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.BITWISE_GROUP_NAME; } - @RequiredReadAction - @Override @Nonnull + @Override + @RequiredReadAction public String buildErrorString(Object state, Object... args) { - final Integer value = (Integer)args[0]; + Integer value = (Integer)args[0]; return value > 0 ? InspectionJSLocalize.shiftOperationByInappropriateConstantProblemDescriptorTooLarge().get() : InspectionJSLocalize.shiftOperationByInappropriateConstantProblemDescriptorNegative().get(); diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelOnBreakStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelOnBreakStatementJSInspection.java index 468c23d3..6c609489 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelOnBreakStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelOnBreakStatementJSInspection.java @@ -15,6 +15,7 @@ import consulo.language.psi.PsiElement; import consulo.language.psi.util.PsiTreeUtil; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import consulo.project.Project; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @@ -23,21 +24,16 @@ public class UnnecessaryLabelOnBreakStatementJSInspection extends JavaScriptInspection { private final UnnecessaryLabelOnBreakStatementFix fix = new UnnecessaryLabelOnBreakStatementFix(); - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.unnecessaryLabelOnBreakStatementDisplayName().get(); - } - @Override - @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.unnecessaryLabelOnBreakStatementDisplayName(); } + @Nonnull @Override - public boolean isEnabledByDefault() { - return true; + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } @Override @@ -46,10 +42,10 @@ public InspectionJSFix buildFix(PsiElement location, Object state) { } private static class UnnecessaryLabelOnBreakStatementFix extends InspectionJSFix { - @Override @Nonnull - public String getName() { - return InspectionJSLocalize.removeLabelFix().get(); + @Override + public LocalizeValue getName() { + return InspectionJSLocalize.removeLabelFix(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelOnContinueStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelOnContinueStatementJSInspection.java index 5ef4c212..265d71df 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelOnContinueStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryLabelOnContinueStatementJSInspection.java @@ -14,6 +14,7 @@ import consulo.language.psi.PsiElement; import consulo.language.psi.util.PsiTreeUtil; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import consulo.project.Project; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @@ -22,16 +23,16 @@ public class UnnecessaryLabelOnContinueStatementJSInspection extends JavaScriptInspection { private final UnnecessaryLabelOnContinueStatementFix fix = new UnnecessaryLabelOnContinueStatementFix(); - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.unnecessaryLabelOnContinueStatementDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.unnecessaryLabelOnContinueStatementDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } @Override @@ -39,9 +40,9 @@ public boolean isEnabledByDefault() { return true; } - @RequiredReadAction - @Override @Nullable + @Override + @RequiredReadAction protected String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.unnecessaryLabelOnContinueErrorString().get(); } @@ -57,10 +58,10 @@ public InspectionJSFix buildFix(PsiElement location, Object state) { } private static class UnnecessaryLabelOnContinueStatementFix extends InspectionJSFix { - @Override @Nonnull - public String getName() { - return InspectionJSLocalize.removeLabelFix().get(); + @Override + public LocalizeValue getName() { + return InspectionJSLocalize.removeLabelFix(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryReturnJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryReturnJSInspection.java index 1d20dbb3..62a7fed6 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryReturnJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/control/UnnecessaryReturnJSInspection.java @@ -13,29 +13,32 @@ import consulo.language.psi.PsiElement; import consulo.language.psi.util.PsiTreeUtil; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import consulo.project.Project; import jakarta.annotation.Nonnull; +import org.intellij.lang.annotations.Pattern; @ExtensionImpl public class UnnecessaryReturnJSInspection extends JavaScriptInspection { private final UnnecessaryReturnFix fix = new UnnecessaryReturnFix(); - @Override @Nonnull + @Override + @Pattern(value = "[a-zA-Z_0-9.-]+") public String getID() { return "UnnecessaryReturnStatementJS"; } - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.unnecessaryReturnStatementDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.unnecessaryReturnStatementDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.CONTROL_FLOW_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.CONTROL_FLOW_GROUP_NAME; } @Override @@ -60,10 +63,10 @@ public InspectionJSFix buildFix(PsiElement location, Object state) { } private static class UnnecessaryReturnFix extends InspectionJSFix { - @Override @Nonnull - public String getName() { - return InspectionJSLocalize.removeUnnecessaryReturnFix().get(); + @Override + public LocalizeValue getName() { + return InspectionJSLocalize.removeUnnecessaryReturnFix(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/dataflow/ReuseOfLocalVariableJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/dataflow/ReuseOfLocalVariableJSInspection.java index b1ec4b53..b80be1ef 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/dataflow/ReuseOfLocalVariableJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/dataflow/ReuseOfLocalVariableJSInspection.java @@ -12,26 +12,27 @@ import consulo.language.psi.PsiElement; import consulo.language.psi.PsiReference; import consulo.language.psi.util.PsiTreeUtil; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class ReuseOfLocalVariableJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.reuseOfLocalVariableDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.reuseOfLocalVariableDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.DATA_FLOW_ISSUES.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.DATA_FLOW_ISSUES; } - @RequiredReadAction - @Override @Nonnull + @Override + @RequiredReadAction public String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.reuseOfLocalVariableProblemDescriptor().get(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/dataflow/UnnecessaryLocalVariableJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/dataflow/UnnecessaryLocalVariableJSInspection.java index 2547e0a8..f727b460 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/dataflow/UnnecessaryLocalVariableJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/dataflow/UnnecessaryLocalVariableJSInspection.java @@ -12,20 +12,21 @@ import consulo.language.psi.PsiReference; import consulo.language.psi.util.PsiTreeUtil; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; @ExtensionImpl public class UnnecessaryLocalVariableJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.redundantLocalVariableDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.redundantLocalVariableDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.DATA_FLOW_ISSUES.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.DATA_FLOW_ISSUES; } @Nonnull @@ -34,14 +35,9 @@ public InspectionToolState createStateProvider() { return new UnnecessaryLocalVariableJSInspectionState(); } + @Nonnull @Override - public boolean isEnabledByDefault() { - return true; - } - @RequiredReadAction - @Override - @Nonnull public String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.unnecessaryLocalVariableProblemDescriptor().get(); } @@ -89,7 +85,7 @@ private boolean isCopyVariable(JSVariable variable) { return false; } final JSReferenceExpression reference = - (JSReferenceExpression)initializer; + (JSReferenceExpression) initializer; final PsiElement referent = reference.resolve(); if (referent == null) { return false; @@ -107,7 +103,7 @@ private boolean isCopyVariable(JSVariable variable) { if (visitor.isAssigned()) { return false; } - final JSVariable initialization = (JSVariable)referent; + final JSVariable initialization = (JSVariable) referent; final VariableAssignedVisitor visitor2 = new VariableAssignedVisitor(initialization); containingScope.accept(visitor2); if (visitor2.isAssigned()) { @@ -148,7 +144,7 @@ private boolean isImmediatelyReturned(JSVariable variable) { if (!(nextStatement instanceof JSReturnStatement)) { return false; } - final JSReturnStatement returnStatement = (JSReturnStatement)nextStatement; + final JSReturnStatement returnStatement = (JSReturnStatement) nextStatement; final JSExpression returnValue = returnStatement.getExpression(); if (returnValue == null) { return false; @@ -156,7 +152,7 @@ private boolean isImmediatelyReturned(JSVariable variable) { if (!(returnValue instanceof JSReferenceExpression)) { return false; } - final PsiElement referent = ((PsiReference)returnValue).resolve(); + final PsiElement referent = ((PsiReference) returnValue).resolve(); return !(referent == null || !referent.equals(variable)); } @@ -182,7 +178,7 @@ private boolean isImmediatelyThrown(JSVariable variable) { if (!(nextStatement instanceof JSThrowStatement)) { return false; } - final JSThrowStatement throwStatement = (JSThrowStatement)nextStatement; + final JSThrowStatement throwStatement = (JSThrowStatement) nextStatement; final JSExpression returnValue = throwStatement.getExpression(); if (returnValue == null) { return false; @@ -190,7 +186,7 @@ private boolean isImmediatelyThrown(JSVariable variable) { if (!(returnValue instanceof JSReferenceExpression)) { return false; } - final PsiElement referent = ((PsiReference)returnValue).resolve(); + final PsiElement referent = ((PsiReference) returnValue).resolve(); return !(referent == null || !referent.equals(variable)); } @@ -218,12 +214,12 @@ private boolean isImmediatelyAssigned(JSVariable variable) { if (!(nextStatement instanceof JSExpressionStatement)) { return false; } - final JSExpressionStatement expressionStatement = (JSExpressionStatement)nextStatement; + final JSExpressionStatement expressionStatement = (JSExpressionStatement) nextStatement; final JSExpression expression = expressionStatement.getExpression(); if (!(expression instanceof JSAssignmentExpression)) { return false; } - final JSAssignmentExpression assignmentExpression = (JSAssignmentExpression)expression; + final JSAssignmentExpression assignmentExpression = (JSAssignmentExpression) expression; final JSExpression rhs = assignmentExpression.getROperand(); if (rhs == null) { return false; @@ -231,7 +227,7 @@ private boolean isImmediatelyAssigned(JSVariable variable) { if (!(rhs instanceof JSReferenceExpression)) { return false; } - final JSReferenceExpression reference = (JSReferenceExpression)rhs; + final JSReferenceExpression reference = (JSReferenceExpression) rhs; final PsiElement referent = reference.resolve(); if (referent == null || !referent.equals(variable)) { return false; @@ -272,7 +268,7 @@ private boolean isImmediatelyAssignedAsDeclaration(JSVariable variable) { if (!(nextStatement instanceof JSVarStatement)) { return false; } - final JSVarStatement declaration = (JSVarStatement)nextStatement; + final JSVarStatement declaration = (JSVarStatement) nextStatement; final JSVariable[] declarations = declaration.getVariables(); if (declarations.length != 1) { return false; @@ -284,7 +280,7 @@ private boolean isImmediatelyAssignedAsDeclaration(JSVariable variable) { if (!(rhs instanceof JSReferenceExpression)) { return false; } - final PsiElement referent = ((PsiReference)rhs).resolve(); + final PsiElement referent = ((PsiReference) rhs).resolve(); if (referent == null || !referent.equals(variable)) { return false; } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/dom/DocumentWriteJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/dom/DocumentWriteJSInspection.java index c517e030..4a7a2234 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/dom/DocumentWriteJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/dom/DocumentWriteJSInspection.java @@ -9,6 +9,7 @@ import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nullable; import org.jetbrains.annotations.NonNls; @@ -16,21 +17,21 @@ @ExtensionImpl public class DocumentWriteJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.callToDocumentWriteDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.callToDocumentWriteDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.DOM_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.DOM_GROUP_NAME; } - @RequiredReadAction - @Override @Nullable + @Override + @RequiredReadAction protected String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.documentWriteErrorString().get(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/dom/InnerHTMLJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/dom/InnerHTMLJSInspection.java index bb2a0750..e0d5e28f 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/dom/InnerHTMLJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/dom/InnerHTMLJSInspection.java @@ -7,26 +7,27 @@ import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class InnerHTMLJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.useOfInnerhtmlPropertyDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.useOfInnerhtmlPropertyDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.DOM_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.DOM_GROUP_NAME; } - @RequiredReadAction - @Override @Nullable + @Override + @RequiredReadAction protected String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.innerHtmlErrorString().get(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/dom/XHTMLIncompatabilitiesJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/dom/XHTMLIncompatabilitiesJSInspection.java index 40b7f7f3..7b176314 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/dom/XHTMLIncompatabilitiesJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/dom/XHTMLIncompatabilitiesJSInspection.java @@ -8,26 +8,27 @@ import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class XHTMLIncompatabilitiesJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.xhtmlIncompatibilitiesDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.xhtmlIncompatibilitiesDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.DOM_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.DOM_GROUP_NAME; } - @RequiredReadAction - @Override @Nullable + @Override + @RequiredReadAction protected String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.xhtmlIncompatabilitiesErrorString().get(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/exception/ContinueOrBreakFromFinallyBlockJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/exception/ContinueOrBreakFromFinallyBlockJSInspection.java index 89a3366c..a115d4a6 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/exception/ContinueOrBreakFromFinallyBlockJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/exception/ContinueOrBreakFromFinallyBlockJSInspection.java @@ -10,29 +10,25 @@ import com.sixrr.inspectjs.utils.ControlFlowUtils; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; @ExtensionImpl public class ContinueOrBreakFromFinallyBlockJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.continueOrBreakInsideFinallyBlockDisplayName().get(); - } - @Override - @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.ERRORHANDLING_GROUP_NAME.get(); + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.continueOrBreakInsideFinallyBlockDisplayName(); } + @Nonnull @Override - public boolean isEnabledByDefault() { - return true; + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.ERRORHANDLING_GROUP_NAME; } - @RequiredReadAction @Override + @RequiredReadAction public String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.continueOrBreakInsideFinallyBlockErrorString().get(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyCatchBlockJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyCatchBlockJSInspection.java index 64df0d7f..4baf9163 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyCatchBlockJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyCatchBlockJSInspection.java @@ -11,26 +11,27 @@ import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class EmptyCatchBlockJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.emptyCatchBlockDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.emptyCatchBlockDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.ERRORHANDLING_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.ERRORHANDLING_GROUP_NAME; } - @RequiredReadAction - @Override @Nullable + @Override + @RequiredReadAction protected String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.emptyCatchBlockErrorString().get(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyFinallyBlockJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyFinallyBlockJSInspection.java index a23d13c3..1e98753d 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyFinallyBlockJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyFinallyBlockJSInspection.java @@ -9,26 +9,27 @@ import com.sixrr.inspectjs.utils.StatementUtils; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class EmptyFinallyBlockJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.emptyFinallyBlockDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.emptyFinallyBlockDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.ERRORHANDLING_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.ERRORHANDLING_GROUP_NAME; } - @RequiredReadAction - @Override @Nullable + @Override + @RequiredReadAction protected String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.emptyFinallyBlockErrorString().get(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyTryBlockJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyTryBlockJSInspection.java index a94a2dfc..4b61111a 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyTryBlockJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/exception/EmptyTryBlockJSInspection.java @@ -9,26 +9,27 @@ import com.sixrr.inspectjs.utils.StatementUtils; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class EmptyTryBlockJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.emptyTryBlockDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.emptyTryBlockDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.ERRORHANDLING_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.ERRORHANDLING_GROUP_NAME; } - @RequiredReadAction - @Override @Nullable + @Override + @RequiredReadAction protected String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.emptyTryBlockErrorString().get(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/exception/ExceptionCaughtLocallyJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/exception/ExceptionCaughtLocallyJSInspection.java index b484cb7c..42a39765 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/exception/ExceptionCaughtLocallyJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/exception/ExceptionCaughtLocallyJSInspection.java @@ -11,30 +11,25 @@ import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.util.PsiTreeUtil; - +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; @ExtensionImpl public class ExceptionCaughtLocallyJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.exceptionUsedForLocalControlFlowDisplayName().get(); - } - @Override - @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.ERRORHANDLING_GROUP_NAME.get(); + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.exceptionUsedForLocalControlFlowDisplayName(); } + @Nonnull @Override - public boolean isEnabledByDefault() { - return true; + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.ERRORHANDLING_GROUP_NAME; } - @RequiredReadAction @Override + @RequiredReadAction public String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.exceptionCaughtLocallyErrorString().get(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/exception/ReturnFromFinallyBlockJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/exception/ReturnFromFinallyBlockJSInspection.java index 5c3cb01f..632d88cf 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/exception/ReturnFromFinallyBlockJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/exception/ReturnFromFinallyBlockJSInspection.java @@ -8,26 +8,29 @@ import com.sixrr.inspectjs.utils.ControlFlowUtils; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; +import org.intellij.lang.annotations.Pattern; @ExtensionImpl public class ReturnFromFinallyBlockJSInspection extends JavaScriptInspection { - @Override @Nonnull + @Override + @Pattern(value = "[a-zA-Z_0-9.-]+") public String getID() { return "ReturnInsideFinallyBlockJS"; } - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.returnInsideFinallyBlockDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.returnInsideFinallyBlockDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.ERRORHANDLING_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.ERRORHANDLING_GROUP_NAME; } @Override @@ -35,8 +38,8 @@ public boolean isEnabledByDefault() { return true; } - @RequiredReadAction @Override + @RequiredReadAction public String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.returnInsideFinallyBlockErrorString().get(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/exception/ThrowFromFinallyBlockJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/exception/ThrowFromFinallyBlockJSInspection.java index cd5a42bb..9a3a57ac 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/exception/ThrowFromFinallyBlockJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/exception/ThrowFromFinallyBlockJSInspection.java @@ -8,35 +8,33 @@ import com.sixrr.inspectjs.utils.ControlFlowUtils; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; +import org.intellij.lang.annotations.Pattern; @ExtensionImpl public class ThrowFromFinallyBlockJSInspection extends JavaScriptInspection { - @Override @Nonnull + @Override + @Pattern(value = "[a-zA-Z_0-9.-]+") public String getID() { return "ThrowInsideFinallyBlockJS"; } - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.throwInsideFinallyBlockDisplayName().get(); - } - @Override - @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.ERRORHANDLING_GROUP_NAME.get(); + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.throwInsideFinallyBlockDisplayName(); } + @Nonnull @Override - public boolean isEnabledByDefault() { - return true; + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.ERRORHANDLING_GROUP_NAME; } - @RequiredReadAction @Override + @RequiredReadAction public String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.throwInsideFinallyBlockErrorString().get(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/exception/UnusedCatchParameterJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/exception/UnusedCatchParameterJSInspection.java index db2d49c9..63376932 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/exception/UnusedCatchParameterJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/exception/UnusedCatchParameterJSInspection.java @@ -13,20 +13,21 @@ import consulo.language.editor.inspection.InspectionToolState; import consulo.language.psi.PsiComment; import consulo.language.psi.PsiElement; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; @ExtensionImpl public class UnusedCatchParameterJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.unusedCatchParameterDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.unusedCatchParameterDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.ERRORHANDLING_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.ERRORHANDLING_GROUP_NAME; } @Nonnull @@ -35,9 +36,9 @@ public InspectionToolState createStateProvider() { return new UnusedCatchParameterJSInspectionState(); } - @RequiredReadAction - @Override @Nonnull + @Override + @RequiredReadAction protected String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.unusedCatchParameterProblemDescriptor().get(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/fix/RenameFix.java b/inspections/src/main/java/com/sixrr/inspectjs/fix/RenameFix.java index d866d58c..186a24cc 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/fix/RenameFix.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/fix/RenameFix.java @@ -9,6 +9,7 @@ import consulo.language.editor.refactoring.action.RefactoringActionHandler; import consulo.language.editor.refactoring.action.RefactoringActionHandlerFactory; import consulo.language.psi.PsiElement; +import consulo.localize.LocalizeValue; import consulo.project.Project; import jakarta.annotation.Nonnull; @@ -27,10 +28,10 @@ public RenameFix(String targetName) { @Override @Nonnull - public String getName() { + public LocalizeValue getName() { return m_targetName == null - ? InspectionJSLocalize.renameFix().get() - : InspectionJSLocalize.renameToFix(m_targetName).get(); + ? InspectionJSLocalize.renameFix() + : InspectionJSLocalize.renameToFix(m_targetName); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/CyclomaticComplexityJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/CyclomaticComplexityJSInspection.java index 4c95d4b7..4ac1983e 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/CyclomaticComplexityJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/CyclomaticComplexityJSInspection.java @@ -10,26 +10,29 @@ import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.inspection.InspectionToolState; import consulo.language.psi.PsiElement; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; +import org.intellij.lang.annotations.Pattern; @ExtensionImpl public class CyclomaticComplexityJSInspection extends JavaScriptInspection { - @Override @Nonnull + @Override + @Pattern(value = "[a-zA-Z_0-9.-]+") public String getID() { return "OverlyComplexFunctionJS"; } - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.overlyComplexFunctionDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.overlyComplexFunctionDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.FUNCTIONMETRICS_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.FUNCTIONMETRICS_GROUP_NAME; } @Nonnull @@ -38,8 +41,8 @@ public InspectionToolState createStateProvider() { return new CyclomaticComplexityJSInspectionState(); } - @RequiredReadAction @Override + @RequiredReadAction public String buildErrorString(Object state, Object... args) { final JSFunction function = (JSFunction)((PsiElement)args[0]).getParent(); assert function != null; diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleLoopsJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleLoopsJSInspection.java index 4a38e949..a9c5e3e6 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleLoopsJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleLoopsJSInspection.java @@ -9,20 +9,21 @@ import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; @ExtensionImpl public class FunctionWithMultipleLoopsJSInspection extends JavaScriptInspection { @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.functionWithMultipleLoopsDisplayName().get(); + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.functionWithMultipleLoopsDisplayName(); } @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.FUNCTIONMETRICS_GROUP_NAME.get(); + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.FUNCTIONMETRICS_GROUP_NAME; } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleReturnPointsJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleReturnPointsJSInspection.java index cbc5f23c..b4e5da65 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleReturnPointsJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleReturnPointsJSInspection.java @@ -10,6 +10,7 @@ import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; @ExtensionImpl @@ -19,20 +20,20 @@ public boolean isEnabledByDefault() { return false; } - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.functionWithMultipleReturnPointsDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.functionWithMultipleReturnPointsDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.FUNCTIONMETRICS_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.FUNCTIONMETRICS_GROUP_NAME; } - @RequiredReadAction @Override + @RequiredReadAction public String buildErrorString(Object state, Object... args) { final JSFunction function = (JSFunction)((PsiElement)args[0]).getParent(); assert function != null; diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/NestingDepthJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/NestingDepthJSInspection.java index affa50a2..fe4786ec 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/NestingDepthJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/NestingDepthJSInspection.java @@ -9,26 +9,29 @@ import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.inspection.InspectionToolState; import consulo.language.psi.PsiElement; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; +import org.intellij.lang.annotations.Pattern; @ExtensionImpl public class NestingDepthJSInspection extends JavaScriptInspection { - @Override @Nonnull + @Override + @Pattern(value = "[a-zA-Z_0-9.-]+") public String getID() { return "OverlyNestedFunctionJS"; } - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.overlyNestedFunctionDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.overlyNestedFunctionDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.FUNCTIONMETRICS_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.FUNCTIONMETRICS_GROUP_NAME; } @Nonnull @@ -37,8 +40,8 @@ public InspectionToolState createStateProvider() { return new NestingDepthJSInspectionState(); } - @RequiredReadAction @Override + @RequiredReadAction public String buildErrorString(Object state, Object... args) { final JSFunction function = (JSFunction)((PsiElement)args[0]).getParent(); assert function != null; diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/ParametersPerFunctionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/ParametersPerFunctionJSInspection.java index 18d7e084..b68a1664 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/ParametersPerFunctionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/ParametersPerFunctionJSInspection.java @@ -11,26 +11,29 @@ import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.inspection.InspectionToolState; import consulo.language.psi.PsiElement; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; +import org.intellij.lang.annotations.Pattern; @ExtensionImpl public class ParametersPerFunctionJSInspection extends JavaScriptInspection { - @Override @Nonnull + @Override + @Pattern(value = "[a-zA-Z_0-9.-]+") public String getID() { return "OverlyComplexFunctionJS"; } - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.functionWithTooManyParametersDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.functionWithTooManyParametersDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.FUNCTIONMETRICS_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.FUNCTIONMETRICS_GROUP_NAME; } @Nonnull @@ -39,8 +42,8 @@ public InspectionToolState createStateProvider() { return new ParametersPerFunctionJSInspectionState(); } - @RequiredReadAction @Override + @RequiredReadAction public String buildErrorString(Object state, Object... args) { final JSFunction function = (JSFunction)((PsiElement)args[0]).getParent(); assert function != null; diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/StatementsPerFunctionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/StatementsPerFunctionJSInspection.java index 2f83d82c..9ba21acf 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/StatementsPerFunctionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/StatementsPerFunctionJSInspection.java @@ -10,6 +10,7 @@ import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.inspection.InspectionToolState; import consulo.language.psi.PsiElement; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; @ExtensionImpl @@ -22,14 +23,14 @@ public String getID() { @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.overlyLongFunctionDisplayName().get(); + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.overlyLongFunctionDisplayName(); } @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.FUNCTIONMETRICS_GROUP_NAME.get(); + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.FUNCTIONMETRICS_GROUP_NAME; } @Nonnull diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/ThreeNegationsPerFunctionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/ThreeNegationsPerFunctionJSInspection.java index c09f68a4..8a13cc43 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/ThreeNegationsPerFunctionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/ThreeNegationsPerFunctionJSInspection.java @@ -9,6 +9,7 @@ import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; @ExtensionImpl @@ -21,14 +22,14 @@ public String getID() { @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.functionWithMoreThanThreeNegationsDisplayName().get(); + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.functionWithMoreThanThreeNegationsDisplayName(); } @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.FUNCTIONMETRICS_GROUP_NAME.get(); + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.FUNCTIONMETRICS_GROUP_NAME; } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/naming/FunctionNamingConventionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/naming/FunctionNamingConventionJSInspection.java index 979614d6..7daf5d37 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/naming/FunctionNamingConventionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/naming/FunctionNamingConventionJSInspection.java @@ -11,6 +11,7 @@ import consulo.language.editor.inspection.InspectionToolState; import consulo.language.psi.PsiElement; import consulo.language.psi.util.PsiTreeUtil; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; @ExtensionImpl @@ -28,16 +29,16 @@ public InspectionToolState createStateProvider() { return new FunctionNamingConventionJSInspectionState(); } - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.functionNamingConventionDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.functionNamingConventionDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.NAMING_CONVENTIONS_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.NAMING_CONVENTIONS_GROUP_NAME; } @Override @@ -50,11 +51,11 @@ protected boolean buildQuickFixesOnlyForOnTheFlyErrors() { return true; } - @RequiredReadAction @Override + @RequiredReadAction public String buildErrorString(Object state, Object... args) { - ConventionInspectionState inspectionState = (ConventionInspectionState)state; - final String functionName = ((PsiElement)args[0]).getText(); + ConventionInspectionState inspectionState = (ConventionInspectionState) state; + final String functionName = ((PsiElement) args[0]).getText(); assert functionName != null; if (functionName.length() < inspectionState.m_minLength) { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/naming/LocalVariableNamingConventionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/naming/LocalVariableNamingConventionJSInspection.java index 61a85512..0f9a3971 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/naming/LocalVariableNamingConventionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/naming/LocalVariableNamingConventionJSInspection.java @@ -11,6 +11,7 @@ import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.inspection.InspectionToolState; import consulo.language.psi.PsiElement; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; @ExtensionImpl @@ -22,16 +23,16 @@ public boolean isEnabledByDefault() { return false; } - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.localVariableNamingConventionDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.localVariableNamingConventionDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.NAMING_CONVENTIONS_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.NAMING_CONVENTIONS_GROUP_NAME; } @Override @@ -44,12 +45,12 @@ protected boolean buildQuickFixesOnlyForOnTheFlyErrors() { return true; } - @RequiredReadAction @Override + @RequiredReadAction public String buildErrorString(Object state, Object... args) { - LocalVariableNamingConventionJSInspectionState inspectionState = (LocalVariableNamingConventionJSInspectionState)state; + LocalVariableNamingConventionJSInspectionState inspectionState = (LocalVariableNamingConventionJSInspectionState) state; - final JSVariable variable = (JSVariable)((PsiElement)args[0]).getParent(); + final JSVariable variable = (JSVariable) ((PsiElement) args[0]).getParent(); assert variable != null; final String variableName = variable.getName(); if (variableName.length() < inspectionState.m_minLength) { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/naming/ParameterNamingConventionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/naming/ParameterNamingConventionJSInspection.java index e29f331c..2959c105 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/naming/ParameterNamingConventionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/naming/ParameterNamingConventionJSInspection.java @@ -13,6 +13,7 @@ import consulo.annotation.component.ExtensionImpl; import consulo.language.editor.inspection.InspectionToolState; import consulo.language.psi.PsiElement; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; @ExtensionImpl @@ -24,22 +25,22 @@ public boolean isEnabledByDefault() { return false; } - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.functionParameterNamingConventionDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.functionParameterNamingConventionDisplayName(); } @Nonnull @Override - public InspectionToolState createStateProvider() { - return new ParameterNamingConventionJSInspectionState(); + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.NAMING_CONVENTIONS_GROUP_NAME; } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.NAMING_CONVENTIONS_GROUP_NAME.get(); + @Override + public InspectionToolState createStateProvider() { + return new ParameterNamingConventionJSInspectionState(); } @Override @@ -52,12 +53,12 @@ protected boolean buildQuickFixesOnlyForOnTheFlyErrors() { return true; } - @RequiredReadAction @Override + @RequiredReadAction public String buildErrorString(Object state, Object... args) { - ParameterNamingConventionJSInspectionState inspectionState = (ParameterNamingConventionJSInspectionState)state; + ParameterNamingConventionJSInspectionState inspectionState = (ParameterNamingConventionJSInspectionState) state; - final JSParameter parameter = (JSParameter)((PsiElement)args[0]).getParent(); + final JSParameter parameter = (JSParameter) ((PsiElement) args[0]).getParent(); assert parameter != null; final String parameterName = parameter.getName(); if (parameterName.length() < inspectionState.m_minLength) { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/style/ChainedEqualityJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/style/ChainedEqualityJSInspection.java index bf361813..3b6c7d4f 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/style/ChainedEqualityJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/style/ChainedEqualityJSInspection.java @@ -10,30 +10,34 @@ import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; +import org.intellij.lang.annotations.Pattern; @ExtensionImpl public class ChainedEqualityJSInspection extends JavaScriptInspection { + @Nonnull @Override + @Pattern(value = "[a-zA-Z_0-9.-]+") public String getID() { return "ChainedEqualityComparisonsJS"; } - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.chainedEqualityDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.chainedEqualityDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.STYLE_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.STYLE_GROUP_NAME; } - @RequiredReadAction - @Override @Nonnull + @Override + @RequiredReadAction public String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.chainedEqualityErrorString().get(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/style/ChainedFunctionCallJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/style/ChainedFunctionCallJSInspection.java index db98c53b..24bec2b2 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/style/ChainedFunctionCallJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/style/ChainedFunctionCallJSInspection.java @@ -10,30 +10,26 @@ import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; @ExtensionImpl public class ChainedFunctionCallJSInspection extends JavaScriptInspection { + @Nonnull @Override - public boolean isEnabledByDefault() { - return true; + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.STYLE_GROUP_NAME; } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.STYLE_GROUP_NAME.get(); - } - @Override - @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.chainedFunctionCallDisplayName().get(); + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.chainedFunctionCallDisplayName(); } - @RequiredReadAction - @Override @Nonnull + @Override + @RequiredReadAction protected String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.chainedFunctionCallProblemDescriptor().get(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/style/ConstantOnLHSOfComparisonJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/style/ConstantOnLHSOfComparisonJSInspection.java index c901b5ee..89920df6 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/style/ConstantOnLHSOfComparisonJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/style/ConstantOnLHSOfComparisonJSInspection.java @@ -12,34 +12,37 @@ import consulo.language.editor.inspection.ProblemDescriptor; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import consulo.project.Project; import jakarta.annotation.Nonnull; +import org.intellij.lang.annotations.Pattern; @ExtensionImpl public class ConstantOnLHSOfComparisonJSInspection extends JavaScriptInspection { private final SwapComparisonFix fix = new SwapComparisonFix(); - @Override @Nonnull + @Override + @Pattern(value = "[a-zA-Z_0-9.-]+") public String getID() { return "ConstantOnLefSideOfComparisonJS"; } - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.constantOnLeftSideOfComparisonDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.constantOnLeftSideOfComparisonDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.STYLE_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.STYLE_GROUP_NAME; } - @RequiredReadAction @Override + @RequiredReadAction public String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.constantOnLeftSideOfComparisonErrorString().get(); } @@ -55,15 +58,15 @@ public InspectionJSFix buildFix(PsiElement location, Object state) { } private static class SwapComparisonFix extends InspectionJSFix { - @Override @Nonnull - public String getName() { - return InspectionJSLocalize.flipComparisonFix().get(); + @Override + public LocalizeValue getName() { + return InspectionJSLocalize.flipComparisonFix(); } @Override public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { - final JSBinaryExpression expression = (JSBinaryExpression)descriptor.getPsiElement(); + final JSBinaryExpression expression = (JSBinaryExpression) descriptor.getPsiElement(); final JSExpression rhs = expression.getROperand(); final JSExpression lhs = expression.getLOperand(); final IElementType sign = expression.getOperationSign(); diff --git a/inspections/src/main/java/com/sixrr/inspectjs/style/ConstantOnRHSOfComparisonJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/style/ConstantOnRHSOfComparisonJSInspection.java index 245fb0d0..25a3ef58 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/style/ConstantOnRHSOfComparisonJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/style/ConstantOnRHSOfComparisonJSInspection.java @@ -15,33 +15,36 @@ import consulo.language.editor.inspection.ProblemDescriptor; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import consulo.project.Project; import jakarta.annotation.Nonnull; +import org.intellij.lang.annotations.Pattern; @ExtensionImpl public class ConstantOnRHSOfComparisonJSInspection extends JavaScriptInspection { private final SwapComparisonFix fix = new SwapComparisonFix(); - @Override @Nonnull + @Override + @Pattern(value = "[a-zA-Z_0-9.-]+") public String getID() { return "ConstantOnRightSideOfComparisonJS"; } - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.constantOnRightSideOfComparisonDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.constantOnRightSideOfComparisonDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.STYLE_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.STYLE_GROUP_NAME; } - @RequiredReadAction @Override + @RequiredReadAction public String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.constantOnRightSideOfComparisonErrorString().get(); } @@ -57,10 +60,10 @@ public InspectionJSFix buildFix(PsiElement location, Object state) { } private static class SwapComparisonFix extends InspectionJSFix { - @Override @Nonnull - public String getName() { - return InspectionJSLocalize.flipComparisonFix().get(); + @Override + public LocalizeValue getName() { + return InspectionJSLocalize.flipComparisonFix(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/style/NestedFunctionCallJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/style/NestedFunctionCallJSInspection.java index ee42f20e..7419f503 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/style/NestedFunctionCallJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/style/NestedFunctionCallJSInspection.java @@ -10,7 +10,7 @@ import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; -import jakarta.annotation.Nonnull; +import consulo.localize.LocalizeValue;import jakarta.annotation.Nonnull; @ExtensionImpl public class NestedFunctionCallJSInspection extends JavaScriptInspection { @@ -21,14 +21,14 @@ public boolean isEnabledByDefault() { @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.STYLE_GROUP_NAME.get(); + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.STYLE_GROUP_NAME; } @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.nestedFunctionCallDisplayName().get(); + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.nestedFunctionCallDisplayName(); } @RequiredReadAction diff --git a/inspections/src/main/java/com/sixrr/inspectjs/style/NonBlockStatementBodyJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/style/NonBlockStatementBodyJSInspection.java index 81b82d4f..72bfa47b 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/style/NonBlockStatementBodyJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/style/NonBlockStatementBodyJSInspection.java @@ -11,6 +11,7 @@ import consulo.language.editor.inspection.ProblemDescriptor; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import consulo.project.Project; import jakarta.annotation.Nonnull; @@ -20,14 +21,14 @@ public class NonBlockStatementBodyJSInspection extends JavaScriptInspection { @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.nonBlockStatementBodyDisplayName().get(); + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.nonBlockStatementBodyDisplayName(); } @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.STYLE_GROUP_NAME.get(); + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.STYLE_GROUP_NAME; } @Override @@ -51,8 +52,8 @@ public InspectionJSFix buildFix(PsiElement location, Object state) { private static class WrapBodyFix extends InspectionJSFix { @Override @Nonnull - public String getName() { - return InspectionJSLocalize.wrapStatementBodyFix().get(); + public LocalizeValue getName() { + return InspectionJSLocalize.wrapStatementBodyFix(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/style/UnterminatedStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/style/UnterminatedStatementJSInspection.java index 1fd3da62..e40b1670 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/style/UnterminatedStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/style/UnterminatedStatementJSInspection.java @@ -13,6 +13,7 @@ import consulo.language.psi.PsiErrorElement; import consulo.language.psi.util.PsiTreeUtil; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import consulo.project.Project; import consulo.xml.psi.xml.XmlAttributeValue; import consulo.xml.psi.xml.XmlTagChild; @@ -30,14 +31,14 @@ public boolean isEnabledByDefault() { @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.unterminatedStatementDisplayName().get(); + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.unterminatedStatementDisplayName(); } @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.STYLE_GROUP_NAME.get(); + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.STYLE_GROUP_NAME; } @RequiredReadAction @@ -60,8 +61,8 @@ public InspectionJSFix buildFix(PsiElement location, Object state) { private static class TerminateStatementFix extends InspectionJSFix { @Override @Nonnull - public String getName() { - return InspectionJSLocalize.terminateStatementFix().get(); + public LocalizeValue getName() { + return InspectionJSLocalize.terminateStatementFix(); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/validity/BadExpressionStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/validity/BadExpressionStatementJSInspection.java index 0d6fba68..62b68f07 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/validity/BadExpressionStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/validity/BadExpressionStatementJSInspection.java @@ -15,22 +15,23 @@ import consulo.language.psi.PsiFile; import consulo.language.psi.ResolveResult; import consulo.language.psi.util.PsiTreeUtil; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; import org.jetbrains.annotations.NonNls; @ExtensionImpl public class BadExpressionStatementJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.expressionStatementWhichIsNotAssignmentOrCallDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.expressionStatementWhichIsNotAssignmentOrCallDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.VALIDITY_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.VALIDITY_GROUP_NAME; } @Override @@ -38,9 +39,9 @@ public boolean isEnabledByDefault() { return true; } - @RequiredReadAction - @Override @Nullable + @Override + @RequiredReadAction protected String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.expressionStatementIsNotAssignmentOrCallErrorString().get(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/validity/DebuggerStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/validity/DebuggerStatementJSInspection.java index 0939d572..e7c3e8fc 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/validity/DebuggerStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/validity/DebuggerStatementJSInspection.java @@ -9,6 +9,7 @@ import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; import org.jetbrains.annotations.NonNls; @@ -17,14 +18,14 @@ public class DebuggerStatementJSInspection extends JavaScriptInspection { @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.debuggerStatementDisplayName().get(); + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.debuggerStatementDisplayName(); } @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.VALIDITY_GROUP_NAME.get(); + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.VALIDITY_GROUP_NAME; } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/validity/DuplicateCaseLabelJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/validity/DuplicateCaseLabelJSInspection.java index 6e2f7fae..c85057e6 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/validity/DuplicateCaseLabelJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/validity/DuplicateCaseLabelJSInspection.java @@ -10,6 +10,7 @@ import com.sixrr.inspectjs.utils.EquivalenceChecker; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import java.util.Arrays; @@ -18,20 +19,20 @@ @ExtensionImpl public class DuplicateCaseLabelJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.duplicateCaseLabelDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.duplicateCaseLabelDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.VALIDITY_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.VALIDITY_GROUP_NAME; } - @RequiredReadAction @Override + @RequiredReadAction public String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.duplicateCaseLabelErrorString().get(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/validity/FunctionWithInconsistentReturnsJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/validity/FunctionWithInconsistentReturnsJSInspection.java index adf4f829..573c9165 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/validity/FunctionWithInconsistentReturnsJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/validity/FunctionWithInconsistentReturnsJSInspection.java @@ -13,21 +13,22 @@ import consulo.language.editor.inspection.ProblemHighlightType; import consulo.language.psi.PsiElement; import consulo.language.psi.util.PsiTreeUtil; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class FunctionWithInconsistentReturnsJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.functionWithInconsistentReturnsDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.functionWithInconsistentReturnsDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.VALIDITY_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.VALIDITY_GROUP_NAME; } @Override @@ -35,9 +36,9 @@ public boolean isEnabledByDefault() { return true; } - @RequiredReadAction - @Override @Nullable + @Override + @RequiredReadAction protected String buildErrorString(Object state, Object... args) { final JSFunction function = (JSFunction)((PsiElement)args[0]).getParent(); assert function != null; diff --git a/inspections/src/main/java/com/sixrr/inspectjs/validity/StringLiteralBreaksHTMLJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/validity/StringLiteralBreaksHTMLJSInspection.java index bb46f3d0..c7eb9358 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/validity/StringLiteralBreaksHTMLJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/validity/StringLiteralBreaksHTMLJSInspection.java @@ -7,21 +7,22 @@ import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.javascript.psi.JSSimpleLiteralExpression; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class StringLiteralBreaksHTMLJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.stringLiteralBreaksHtmlDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.stringLiteralBreaksHtmlDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.VALIDITY_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.VALIDITY_GROUP_NAME; } @Override @@ -29,9 +30,9 @@ public boolean isEnabledByDefault() { return false; } - @RequiredReadAction - @Override @Nullable + @Override + @RequiredReadAction protected String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.stringLiteralBreaksHtmlErrorString().get(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/validity/ThisExpressionReferencesGlobalObjectJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/validity/ThisExpressionReferencesGlobalObjectJSInspection.java index 83b5a899..3448be2b 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/validity/ThisExpressionReferencesGlobalObjectJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/validity/ThisExpressionReferencesGlobalObjectJSInspection.java @@ -12,22 +12,23 @@ import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiFile; import consulo.language.psi.util.PsiTreeUtil; +import consulo.localize.LocalizeValue; import consulo.xml.psi.xml.XmlAttributeValue; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class ThisExpressionReferencesGlobalObjectJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.thisExpressionWhichReferencesTheGlobalObjectDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.thisExpressionWhichReferencesTheGlobalObjectDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.VALIDITY_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.VALIDITY_GROUP_NAME; } @Override @@ -35,9 +36,9 @@ public boolean isEnabledByDefault() { return true; } - @RequiredReadAction - @Override @Nullable + @Override + @RequiredReadAction protected String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.thisExpressionReferencesGlobalObjectErrorString().get(); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/validity/UnreachableCodeJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/validity/UnreachableCodeJSInspection.java index 2a2f2fa3..cf04d041 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/validity/UnreachableCodeJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/validity/UnreachableCodeJSInspection.java @@ -9,21 +9,22 @@ import com.sixrr.inspectjs.utils.ControlFlowUtils; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class UnreachableCodeJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.unreachableCodeDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.unreachableCodeDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.VALIDITY_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.VALIDITY_GROUP_NAME; } @Override @@ -31,9 +32,9 @@ public boolean isEnabledByDefault() { return true; } - @RequiredReadAction - @Override @Nullable + @Override + @RequiredReadAction protected String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.unreachableCodeErrorString().get(); } From 5baeddedbcdc07a23655fca283fb256faec5aa16 Mon Sep 17 00:00:00 2001 From: UNV Date: Fri, 10 Oct 2025 11:06:02 +0300 Subject: [PATCH 127/150] Localizing inspections and their fixes (part 3). --- .../AssignmentResultUsedJSInspection.java | 21 +++++++------- .../NestedAssignmentJSInspection.java | 19 ++++++------ .../dom/PlatformDetectionJSInspection.java | 19 ++++++------ .../style/NestedFunctionCallJSInspection.java | 3 +- ...DuplicatePropertyOnObjectJSInspection.java | 20 +++++-------- ...cmaScript6CreateJSFunctionOrMethodFix.java | 3 +- ...ImportECMAScriptClassOrFunctionAction.java | 15 +++------- .../CreateClassOrInterfaceAction.java | 13 +++------ .../JSDeprecatedSymbolsInspection.java | 10 ++++--- .../JSDuplicatedDeclarationInspection.java | 10 ++++--- .../JSUndeclaredVariableInspection.java | 20 +++++-------- .../JSUnresolvedFunctionInspection.java | 19 +++++------- .../JSUntypedDeclarationInspection.java | 19 +++++------- .../JSUnusedLocalSymbolsInspection.java | 19 +++++------- .../impl/validation/ImplementMethodsFix.java | 6 ++-- .../impl/validation/JSAnnotatingVisitor.java | 29 +++++++------------ 16 files changed, 105 insertions(+), 140 deletions(-) diff --git a/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentResultUsedJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentResultUsedJSInspection.java index 8c42c676..9774695d 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentResultUsedJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentResultUsedJSInspection.java @@ -8,26 +8,27 @@ import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class AssignmentResultUsedJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.resultOfAssignmentUsedDisplayname().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.resultOfAssignmentUsedDisplayname(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.ASSIGNMENT_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.ASSIGNMENT_GROUP_NAME; } - @RequiredReadAction - @Override @Nullable + @Override + @RequiredReadAction protected String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.resultOfAssignmentExpressionUsedErrorString().get(); } @@ -39,9 +40,9 @@ public BaseInspectionVisitor buildVisitor() { private static class Visitor extends BaseInspectionVisitor { @Override - public void visitJSAssignmentExpression(JSAssignmentExpression jsAssignmentExpression) { + public void visitJSAssignmentExpression(@Nonnull JSAssignmentExpression jsAssignmentExpression) { super.visitJSAssignmentExpression(jsAssignmentExpression); - final PsiElement parent = jsAssignmentExpression.getParent(); + PsiElement parent = jsAssignmentExpression.getParent(); if (parent == null) { return; } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/assignment/NestedAssignmentJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/assignment/NestedAssignmentJSInspection.java index 770a0455..f35dd09a 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/assignment/NestedAssignmentJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/assignment/NestedAssignmentJSInspection.java @@ -8,25 +8,26 @@ import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; @ExtensionImpl public class NestedAssignmentJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.nestedAssignmentDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.nestedAssignmentDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.ASSIGNMENT_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.ASSIGNMENT_GROUP_NAME; } - @RequiredReadAction - @Override @Nonnull + @Override + @RequiredReadAction public String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.nestedAssignmentErrorString().get(); } @@ -40,7 +41,7 @@ private static class NestedAssignmentVisitor extends BaseInspectionVisitor { @Override public void visitJSAssignmentExpression(@Nonnull JSAssignmentExpression expression) { super.visitJSAssignmentExpression(expression); - final PsiElement parent = expression.getParent(); + PsiElement parent = expression.getParent(); if (parent == null || !(parent instanceof JSAssignmentExpression)) { return; } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/dom/PlatformDetectionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/dom/PlatformDetectionJSInspection.java index bf9cdd6f..f7cec916 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/dom/PlatformDetectionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/dom/PlatformDetectionJSInspection.java @@ -8,26 +8,27 @@ import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class PlatformDetectionJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.platformDetectionDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.platformDetectionDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.DOM_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.DOM_GROUP_NAME; } - @RequiredReadAction - @Override @Nullable + @Override + @RequiredReadAction protected String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.platformDetectionErrorString().get(); } @@ -38,8 +39,8 @@ public BaseInspectionVisitor buildVisitor() { } private static class Visitor extends BaseInspectionVisitor { - @SuppressWarnings({"HardCodedStringLiteral"}) @Override + @SuppressWarnings({"HardCodedStringLiteral"}) public void visitJSReferenceExpression(JSReferenceExpression referenceExpression) { super.visitJSReferenceExpression(referenceExpression); final JSExpression qualifier = referenceExpression.getQualifier(); diff --git a/inspections/src/main/java/com/sixrr/inspectjs/style/NestedFunctionCallJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/style/NestedFunctionCallJSInspection.java index 7419f503..5a4a6d7e 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/style/NestedFunctionCallJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/style/NestedFunctionCallJSInspection.java @@ -10,7 +10,8 @@ import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; -import consulo.localize.LocalizeValue;import jakarta.annotation.Nonnull; +import consulo.localize.LocalizeValue; +import jakarta.annotation.Nonnull; @ExtensionImpl public class NestedFunctionCallJSInspection extends JavaScriptInspection { diff --git a/inspections/src/main/java/com/sixrr/inspectjs/validity/DuplicatePropertyOnObjectJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/validity/DuplicatePropertyOnObjectJSInspection.java index 4e82967e..08d23291 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/validity/DuplicatePropertyOnObjectJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/validity/DuplicatePropertyOnObjectJSInspection.java @@ -8,35 +8,31 @@ import com.sixrr.inspectjs.localize.InspectionJSLocalize; import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import java.util.Arrays; @ExtensionImpl public class DuplicatePropertyOnObjectJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.duplicatePropertyOnObjectLiteralDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.duplicatePropertyOnObjectLiteralDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.VALIDITY_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.VALIDITY_GROUP_NAME; } - @RequiredReadAction @Override + @RequiredReadAction public String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.duplicateObjectPropertyErrorString().get(); } - @Override - public boolean isEnabledByDefault() { - return true; - } - @Override public BaseInspectionVisitor buildVisitor() { return new Visitor(); diff --git a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/codeInsight/quickFixes/EcmaScript6CreateJSFunctionOrMethodFix.java b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/codeInsight/quickFixes/EcmaScript6CreateJSFunctionOrMethodFix.java index 5a3a5581..bf74c723 100644 --- a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/codeInsight/quickFixes/EcmaScript6CreateJSFunctionOrMethodFix.java +++ b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/codeInsight/quickFixes/EcmaScript6CreateJSFunctionOrMethodFix.java @@ -13,14 +13,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package consulo.javascript.ecmascript.codeInsight.quickFixes; import com.intellij.lang.javascript.inspections.qucikFixes.CreateJSFunctionOrMethodFix; /** * @author VISTALL - * @since 24.02.2016 + * @since 2016-02-24 */ public class EcmaScript6CreateJSFunctionOrMethodFix extends CreateJSFunctionOrMethodFix { public EcmaScript6CreateJSFunctionOrMethodFix(String name, boolean isMethod) { diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/AddImportECMAScriptClassOrFunctionAction.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/AddImportECMAScriptClassOrFunctionAction.java index db4bb86c..ed2daf06 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/AddImportECMAScriptClassOrFunctionAction.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/AddImportECMAScriptClassOrFunctionAction.java @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.intellij.lang.javascript.impl.flex; import com.intellij.lang.javascript.psi.JSFunction; @@ -89,22 +88,16 @@ public boolean showHint(@Nonnull Editor editor) { @Override @Nonnull - public String getText() { + public LocalizeValue getText() { String className = StringUtil.notNullize(calculatedClass); return isFunction - ? JavaScriptLocalize.flexImportFunction(className).get() - : JavaScriptLocalize.flexImportClass(className).get(); - } - - @Override - @Nonnull - public String getName() { - return getText(); + ? JavaScriptLocalize.flexImportFunction(className) + : JavaScriptLocalize.flexImportClass(className); } @Override @Nonnull - public String getFamilyName() { + public LocalizeValue getName() { return getText(); } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/CreateClassOrInterfaceAction.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/CreateClassOrInterfaceAction.java index ff20b657..a482f32b 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/CreateClassOrInterfaceAction.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/CreateClassOrInterfaceAction.java @@ -32,6 +32,7 @@ import consulo.language.psi.PsiFile; import consulo.language.psi.PsiManager; import consulo.language.util.ModuleUtilCore; +import consulo.localize.LocalizeValue; import consulo.logging.Logger; import consulo.module.Module; import consulo.module.content.ModuleRootManager; @@ -63,16 +64,10 @@ public CreateClassOrInterfaceAction(JSReferenceExpression context, boolean isInt @Override @Nonnull - public String getName() { + public LocalizeValue getName() { return myIsInterface - ? JavaScriptLocalize.javascriptCreateInterfaceIntentionName(classNameToCreate).get() - : JavaScriptLocalize.javascriptCreateClassIntentionName(classNameToCreate).get(); - } - - @Override - @Nonnull - public String getFamilyName() { - return getName(); + ? JavaScriptLocalize.javascriptCreateInterfaceIntentionName(classNameToCreate) + : JavaScriptLocalize.javascriptCreateClassIntentionName(classNameToCreate); } @Override diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSDeprecatedSymbolsInspection.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSDeprecatedSymbolsInspection.java index 1a425404..90c74e58 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSDeprecatedSymbolsInspection.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSDeprecatedSymbolsInspection.java @@ -26,8 +26,10 @@ import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.editor.inspection.ProblemHighlightType; import consulo.language.editor.inspection.ProblemsHolder; +import consulo.language.editor.inspection.localize.InspectionLocalize; import consulo.language.psi.PsiElement; import consulo.language.psi.ResolveResult; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; /** @@ -39,14 +41,14 @@ public class JSDeprecatedSymbolsInspection extends JSInspection { @Nonnull @Override - public String getGroupDisplayName() { - return "General"; + public LocalizeValue getGroupDisplayName() { + return InspectionLocalize.inspectionGeneralToolsGroupName(); } @Nonnull @Override - public String getDisplayName() { - return JavaScriptLocalize.jsDeprecatedSymbolsInspectionName().get(); + public LocalizeValue getDisplayName() { + return JavaScriptLocalize.jsDeprecatedSymbolsInspectionName(); } @Nonnull diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSDuplicatedDeclarationInspection.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSDuplicatedDeclarationInspection.java index 653f65f4..38cd63f8 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSDuplicatedDeclarationInspection.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSDuplicatedDeclarationInspection.java @@ -27,6 +27,7 @@ import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.editor.inspection.ProblemHighlightType; import consulo.language.editor.inspection.ProblemsHolder; +import consulo.language.editor.inspection.localize.InspectionLocalize; import consulo.language.editor.rawHighlight.HighlightDisplayLevel; import consulo.language.psi.PsiElement; import consulo.language.psi.PsiFile; @@ -35,6 +36,7 @@ import consulo.language.psi.resolve.ResolveState; import consulo.language.psi.util.PsiTreeUtil; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; /** @@ -46,14 +48,14 @@ public class JSDuplicatedDeclarationInspection extends JSInspection { @Nonnull @Override - public String getGroupDisplayName() { - return "General"; + public LocalizeValue getGroupDisplayName() { + return InspectionLocalize.inspectionGeneralToolsGroupName(); } @Nonnull @Override - public String getDisplayName() { - return JavaScriptLocalize.jsDuplicatedDeclarationInspectionName().get(); + public LocalizeValue getDisplayName() { + return JavaScriptLocalize.jsDuplicatedDeclarationInspectionName(); } @Nonnull diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUndeclaredVariableInspection.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUndeclaredVariableInspection.java index eb42a421..1c7d8ce3 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUndeclaredVariableInspection.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUndeclaredVariableInspection.java @@ -27,12 +27,14 @@ import consulo.language.codeStyle.CodeStyleManager; import consulo.language.editor.FileModificationService; import consulo.language.editor.inspection.*; +import consulo.language.editor.inspection.localize.InspectionLocalize; import consulo.language.psi.PsiDocumentManager; import consulo.language.psi.PsiElement; import consulo.language.psi.PsiFile; import consulo.language.psi.ResolveResult; import consulo.language.psi.util.PsiTreeUtil; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import consulo.project.Project; import jakarta.annotation.Nonnull; @@ -46,14 +48,14 @@ public class JSUndeclaredVariableInspection extends JSInspection { @Nonnull @Override - public String getGroupDisplayName() { - return "General"; + public LocalizeValue getGroupDisplayName() { + return InspectionLocalize.inspectionGeneralToolsGroupName(); } @Nonnull @Override - public String getDisplayName() { - return JavaScriptLocalize.jsUndeclaredVariableInspectionName().get(); + public LocalizeValue getDisplayName() { + return JavaScriptLocalize.jsUndeclaredVariableInspectionName(); } @Nonnull @@ -136,14 +138,8 @@ private static class DeclareJSVariableIntentionAction implements LocalQuickFix { @Nonnull @Override - public String getName() { - return JavaScriptLocalize.javascriptDeclareVariableIntentionName(myReferenceExpression.getReferencedName()).get(); - } - - @Nonnull - @Override - public String getFamilyName() { - return JavaScriptLocalize.javascriptCreateVariableIntentionFamily().get(); + public LocalizeValue getName() { + return JavaScriptLocalize.javascriptDeclareVariableIntentionName(myReferenceExpression.getReferencedName()); } @Override diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnresolvedFunctionInspection.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnresolvedFunctionInspection.java index 610b8871..ad97e773 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnresolvedFunctionInspection.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnresolvedFunctionInspection.java @@ -38,6 +38,7 @@ import consulo.language.editor.inspection.ProblemDescriptor; import consulo.language.editor.inspection.ProblemHighlightType; import consulo.language.editor.inspection.ProblemsHolder; +import consulo.language.editor.inspection.localize.InspectionLocalize; import consulo.language.editor.template.Template; import consulo.language.editor.template.TemplateManager; import consulo.language.psi.PsiElement; @@ -64,14 +65,14 @@ public class JSUnresolvedFunctionInspection extends JSInspection { @Nonnull @Override - public String getGroupDisplayName() { - return "General"; + public LocalizeValue getGroupDisplayName() { + return InspectionLocalize.inspectionGeneralToolsGroupName(); } @Nonnull @Override - public String getDisplayName() { - return JavaScriptLocalize.jsUnresolvedFunctionInspectionName().get(); + public LocalizeValue getDisplayName() { + return JavaScriptLocalize.jsUnresolvedFunctionInspectionName(); } @Nonnull @@ -589,14 +590,8 @@ public JSInsertCastFix(String type) { @Override @Nonnull - public String getName() { - return JavaScriptLocalize.javascriptInsertCastFix().get(); - } - - @Override - @Nonnull - public String getFamilyName() { - return getName(); + public LocalizeValue getName() { + return JavaScriptLocalize.javascriptInsertCastFix(); } @Override diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUntypedDeclarationInspection.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUntypedDeclarationInspection.java index 117ff905..1ce5743a 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUntypedDeclarationInspection.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUntypedDeclarationInspection.java @@ -32,6 +32,7 @@ import consulo.language.editor.inspection.ProblemDescriptor; import consulo.language.editor.inspection.ProblemHighlightType; import consulo.language.editor.inspection.ProblemsHolder; +import consulo.language.editor.inspection.localize.InspectionLocalize; import consulo.language.editor.rawHighlight.HighlightDisplayLevel; import consulo.language.editor.template.Template; import consulo.language.editor.template.TemplateManager; @@ -56,14 +57,14 @@ public class JSUntypedDeclarationInspection extends JSInspection { @Nonnull @Override - public String getGroupDisplayName() { - return "General"; + public LocalizeValue getGroupDisplayName() { + return InspectionLocalize.inspectionGeneralToolsGroupName(); } @Nonnull @Override - public String getDisplayName() { - return JavaScriptLocalize.jsUntypedDeclarationInspectionName().get(); + public LocalizeValue getDisplayName() { + return JavaScriptLocalize.jsUntypedDeclarationInspectionName(); } @Nonnull @@ -129,14 +130,8 @@ private static void process(JSNamedElement node, ProblemsHolder holder) { private static class AddTypeToDclFix implements LocalQuickFix { @Nonnull @Override - public String getName() { - return JavaScriptLocalize.jsUntypedDeclarationProblemAddtypeFix().get(); - } - - @Nonnull - @Override - public String getFamilyName() { - return getName(); + public LocalizeValue getName() { + return JavaScriptLocalize.jsUntypedDeclarationProblemAddtypeFix(); } @Override diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnusedLocalSymbolsInspection.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnusedLocalSymbolsInspection.java index 4ede17ae..d0a2bcc9 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnusedLocalSymbolsInspection.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnusedLocalSymbolsInspection.java @@ -28,6 +28,7 @@ import consulo.annotation.component.ExtensionImpl; import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.editor.inspection.*; +import consulo.language.editor.inspection.localize.InspectionLocalize; import consulo.language.editor.rawHighlight.HighlightDisplayLevel; import consulo.language.psi.PsiElement; import consulo.language.psi.PsiFile; @@ -58,14 +59,14 @@ public class JSUnusedLocalSymbolsInspection extends JSInspection { @Nonnull @Override - public String getGroupDisplayName() { - return "General"; + public LocalizeValue getGroupDisplayName() { + return InspectionLocalize.inspectionGeneralToolsGroupName(); } @Nonnull @Override - public String getDisplayName() { - return JavaScriptLocalize.jsUnusedLocalSymbolInspectionName().get(); + public LocalizeValue getDisplayName() { + return JavaScriptLocalize.jsUnusedLocalSymbolInspectionName(); } @Nonnull @@ -367,14 +368,8 @@ public HighlightDisplayLevel getDefaultLevel() { private static class RemoveElementLocalQuickFix implements LocalQuickFix { @Nonnull @Override - public String getName() { - return JavaScriptLocalize.jsUnusedSymbolRemove().get(); - } - - @Nonnull - @Override - public String getFamilyName() { - return getName(); + public LocalizeValue getName() { + return JavaScriptLocalize.jsUnusedSymbolRemove(); } @Override diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/ImplementMethodsFix.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/ImplementMethodsFix.java index 9b28068c..5fc6bbad 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/ImplementMethodsFix.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/ImplementMethodsFix.java @@ -25,9 +25,9 @@ import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.editor.intention.SyntheticIntentionAction; import consulo.language.psi.PsiFile; +import consulo.localize.LocalizeValue; import consulo.project.Project; import jakarta.annotation.Nonnull; -import org.jetbrains.annotations.NonNls; /** * @author Maxim.Mossienko @@ -40,8 +40,8 @@ public ImplementMethodsFix(JSClass jsClass) { @Override @Nonnull - public String getText() { - return JavaScriptLocalize.javascriptFixImplementMethods().get(); + public LocalizeValue getText() { + return JavaScriptLocalize.javascriptFixImplementMethods(); } @Override diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatingVisitor.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatingVisitor.java index 9d7d6e16..5ee877d3 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatingVisitor.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/JSAnnotatingVisitor.java @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.intellij.lang.javascript.impl.validation; import com.intellij.lang.javascript.JSTokenTypes; @@ -1225,8 +1224,8 @@ private void checkPackageStatement(JSPackageStatement packageStatement) { .withFix(new SyntheticIntentionAction() { @Nonnull @Override - public String getText() { - return JavaScriptLocalize.javascriptFixPackageName(expected).get(); + public LocalizeValue getText() { + return JavaScriptLocalize.javascriptFixPackageName(expected); } @Override @@ -1287,19 +1286,13 @@ public RemoveASTNodeFix(LocalizeValue prop, ASTNode... astNodes) { @Override @Nonnull - public String getText() { - return myProp.get(); - } - - @Override - @Nonnull - public String getName() { - return getText(); + public LocalizeValue getText() { + return myProp; } @Override @Nonnull - public String getFamilyName() { + public LocalizeValue getName() { return getText(); } @@ -1348,8 +1341,8 @@ public AddOverrideIntentionAction(JSFunction node) { @Override @Nonnull - public String getText() { - return JavaScriptLocalize.javascriptFixAddOverrideModifier().get(); + public LocalizeValue getText() { + return JavaScriptLocalize.javascriptFixAddOverrideModifier(); } @Override @@ -1392,8 +1385,8 @@ public AddSuperInvokationFix(JSReferenceExpression node, JSFunction superConstru @Override @Nonnull - public String getText() { - return JavaScriptLocalize.javascriptFixCreateInvokeSuper().get(); + public LocalizeValue getText() { + return JavaScriptLocalize.javascriptFixCreateInvokeSuper(); } @Override @@ -1456,8 +1449,8 @@ private static class AddConstructorAndSuperInvokationFix implements SyntheticInt @Override @Nonnull - public String getText() { - return JavaScriptLocalize.javascriptFixCreateConstructorInvokeSuper().get(); + public LocalizeValue getText() { + return JavaScriptLocalize.javascriptFixCreateConstructorInvokeSuper(); } @Override From 7198126c6fdcc8f751c9c656a954bf553296fcb4 Mon Sep 17 00:00:00 2001 From: UNV Date: Fri, 10 Oct 2025 11:17:54 +0300 Subject: [PATCH 128/150] Localizing inspections and their fixes (part 4). Refactoring. --- .../sixrr/inspectjs/InspectionComparator.java | 37 +- .../com/sixrr/inspectjs/InspectionJSFix.java | 67 ++- ...ignmentToForLoopParameterJSInspection.java | 83 ++-- ...gnmentToFunctionParameterJSInspection.java | 46 +- ...entWithOperatorAssignmentJSInspection.java | 140 +++--- .../SillyAssignmentJSInspection.java | 66 ++- .../bitwise/IncompatibleMaskJSInspection.java | 71 ++-- ...ointlessBitwiseExpressionJSInspection.java | 46 +- .../confusing/MagicNumberJSInspection.java | 23 +- ...mplexArithmeticExpressionJSInspection.java | 402 ++++++++---------- .../JSUnresolvedVariableInspection.java | 45 +- 11 files changed, 459 insertions(+), 567 deletions(-) diff --git a/inspections/src/main/java/com/sixrr/inspectjs/InspectionComparator.java b/inspections/src/main/java/com/sixrr/inspectjs/InspectionComparator.java index ccd9cfe2..a4893a4e 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/InspectionComparator.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/InspectionComparator.java @@ -1,19 +1,20 @@ package com.sixrr.inspectjs; import consulo.language.editor.inspection.LocalInspectionTool; +import consulo.localize.LocalizeManager; +import consulo.localize.LocalizeValue; import java.util.Comparator; - +import java.util.function.BiFunction; class InspectionComparator implements Comparator> { - InspectionComparator() { - super(); - } + private static final BiFunction UPPERCASE_STRIP_QUOTES = + (localizeManager, string) -> stripQuotes(string.toUpperCase()); @Override public int compare(Class class1, Class class2) { - final LocalInspectionTool inspection1; - final LocalInspectionTool inspection2; + LocalInspectionTool inspection1; + LocalInspectionTool inspection2; try { inspection1 = class1.newInstance(); inspection2 = class2.newInstance(); @@ -24,18 +25,14 @@ public int compare(Class class1, Class aClass = getClass(); - final String className = aClass.getName(); - final Logger logger = Logger.getInstance(className); + Class aClass = getClass(); + String className = aClass.getName(); + Logger logger = Logger.getInstance(className); logger.error(e); } } @@ -50,55 +45,57 @@ public void applyFix(@Nonnull Project project, @Nonnull ProblemDescriptor descri protected static void deleteElement(@Nonnull PsiElement element) throws IncorrectOperationException { - final ASTNode node = element.getNode(); - final ASTNode parent = element.getParent().getNode(); + ASTNode node = element.getNode(); + ASTNode parent = element.getParent().getNode(); parent.removeChild(node); } + @RequiredWriteAction protected static void replaceExpression(JSExpression expression, String newExpression) throws IncorrectOperationException { - final ASTNode fromText = JSChangeUtil.createStatementFromText(expression.getProject(), newExpression + ';'); - final PsiElement element = fromText != null ? fromText.getPsi() : null; + ASTNode fromText = JSChangeUtil.createStatementFromText(expression.getProject(), newExpression + ';'); + PsiElement element = fromText != null ? fromText.getPsi() : null; - final JSExpressionStatement expressionStatement = element instanceof JSExpressionStatement expr ? expr : null; + JSExpressionStatement expressionStatement = element instanceof JSExpressionStatement expr ? expr : null; if (expressionStatement == null) { return; } - final JSExpression newExp = expressionStatement.getExpression(); - final ASTNode newExpressionNode = newExp.getNode(); - final ASTNode expressionNode = expression.getNode(); - final PsiElement parent = expression.getParent(); - final ASTNode parentNode = parent.getNode(); + JSExpression newExp = expressionStatement.getExpression(); + ASTNode newExpressionNode = newExp.getNode(); + ASTNode expressionNode = expression.getNode(); + PsiElement parent = expression.getParent(); + ASTNode parentNode = parent.getNode(); parentNode.replaceChild(expressionNode, newExpressionNode); // final CodeStyleManager styleManager = manager.getCodeStyleManager(); // styleManager.reformat(newExpressionNode.getPsi()); } - protected static void replaceStatement(JSStatement statement, @NonNls String newStatement) throws IncorrectOperationException { - final ASTNode fromText = JSChangeUtil.createStatementFromText(statement.getProject(), newStatement); - final PsiElement element = fromText != null ? fromText.getPsi() : null; - final JSStatement newStmt = element instanceof JSStatement ? (JSStatement)element : null; + @RequiredWriteAction + protected static void replaceStatement(JSStatement statement, String newStatement) throws IncorrectOperationException { + ASTNode fromText = JSChangeUtil.createStatementFromText(statement.getProject(), newStatement); + PsiElement element = fromText != null ? fromText.getPsi() : null; + JSStatement newStmt = element instanceof JSStatement newStmt1 ? newStmt1 : null; if (newStmt == null) { return; } - final PsiElement parent = statement.getParent(); - final ASTNode parentNode = parent.getNode(); - final ASTNode statementNode = statement.getNode(); - final ASTNode newStatementNode = newStmt.getNode(); + PsiElement parent = statement.getParent(); + ASTNode parentNode = parent.getNode(); + ASTNode statementNode = statement.getNode(); + ASTNode newStatementNode = newStmt.getNode(); parentNode.replaceChild(statementNode, newStatementNode); // final CodeStyleManager styleManager = manager.getCodeStyleManager(); // styleManager.reformat(newStatementNode.getPsi()); } private static boolean isQuickFixOnReadOnlyFile(PsiElement problemElement) { - final PsiFile containingPsiFile = problemElement.getContainingFile(); + PsiFile containingPsiFile = problemElement.getContainingFile(); if (containingPsiFile == null) { return false; } - final VirtualFile virtualFile = containingPsiFile.getVirtualFile(); - final Project project = problemElement.getProject(); - final ReadonlyStatusHandler handler = ReadonlyStatusHandler.getInstance(project); - final ReadonlyStatusHandler.OperationStatus status = handler.ensureFilesWritable(virtualFile); + VirtualFile virtualFile = containingPsiFile.getVirtualFile(); + Project project = problemElement.getProject(); + ReadonlyStatusHandler handler = ReadonlyStatusHandler.getInstance(project); + ReadonlyStatusHandler.OperationStatus status = handler.ensureFilesWritable(virtualFile); return status.hasReadonlyFiles(); } } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentToForLoopParameterJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentToForLoopParameterJSInspection.java index b9adedf3..ccf261d2 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentToForLoopParameterJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentToForLoopParameterJSInspection.java @@ -9,26 +9,26 @@ import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; -import consulo.language.psi.PsiElement; import consulo.language.psi.util.PsiTreeUtil; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; @ExtensionImpl public class AssignmentToForLoopParameterJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.assignmentToForLoopParameterDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.assignmentToForLoopParameterDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.ASSIGNMENT_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.ASSIGNMENT_GROUP_NAME; } - @RequiredReadAction @Override + @RequiredReadAction public String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.assignmentToForLoopParameterErrorString().get(); } @@ -40,26 +40,28 @@ public BaseInspectionVisitor buildVisitor() { private static class Visitor extends BaseInspectionVisitor { @Override + @RequiredReadAction public void visitJSAssignmentExpression(@Nonnull JSAssignmentExpression expression) { super.visitJSAssignmentExpression(expression); - final JSExpression rhs = expression.getROperand(); + JSExpression rhs = expression.getROperand(); if (rhs == null) { return; } - final JSExpression lhs = expression.getLOperand(); + JSExpression lhs = expression.getLOperand(); checkForForLoopParam(lhs); checkForForeachLoopParam(lhs); } @Override + @RequiredReadAction public void visitJSPrefixExpression(@Nonnull JSPrefixExpression expression) { super.visitJSPrefixExpression(expression); - final IElementType sign = expression.getOperationSign(); + IElementType sign = expression.getOperationSign(); if (!JSTokenTypes.PLUSPLUS.equals(sign) && !JSTokenTypes.MINUSMINUS.equals(sign)) { return; } - final JSExpression operand = expression.getExpression(); + JSExpression operand = expression.getExpression(); if (operand == null) { return; } @@ -68,13 +70,14 @@ public void visitJSPrefixExpression(@Nonnull JSPrefixExpression expression) { } @Override + @RequiredReadAction public void visitJSPostfixExpression(@Nonnull JSPostfixExpression expression) { super.visitJSPostfixExpression(expression); - final IElementType sign = expression.getOperationSign(); + IElementType sign = expression.getOperationSign(); if (!JSTokenTypes.PLUSPLUS.equals(sign) && !JSTokenTypes.MINUSMINUS.equals(sign)) { return; } - final JSExpression operand = expression.getExpression(); + JSExpression operand = expression.getExpression(); if (operand == null) { return; } @@ -82,53 +85,29 @@ public void visitJSPostfixExpression(@Nonnull JSPostfixExpression expression) { checkForForeachLoopParam(operand); } + @RequiredReadAction private void checkForForLoopParam(JSExpression expression) { - if (!(expression instanceof JSReferenceExpression)) { - return; - } - final JSReferenceExpression ref = (JSReferenceExpression)expression; - final PsiElement element = ref.resolve(); - if (!(element instanceof JSVariable)) { - return; - } - final JSVariable variable = (JSVariable)element; - if (!(variable.getParent() instanceof JSVarStatement)) { - return; + if (expression instanceof JSReferenceExpression ref + && ref.resolve() instanceof JSVariable variable + && variable.getParent() instanceof JSVarStatement decl + && decl.getParent() instanceof JSForStatement forStmt + && isInForStatementBody(expression, forStmt)) { + registerError(expression); } - final JSVarStatement decl = (JSVarStatement)variable.getParent(); - if (decl == null) { - return; - } - if (!(decl.getParent() instanceof JSForStatement)) { - return; - } - final JSForStatement forStatement = (JSForStatement)decl.getParent(); - assert forStatement != null; - if (!isInForStatementBody(expression, forStatement)) { - return; - } - registerError(expression); } + @RequiredReadAction private void checkForForeachLoopParam(JSExpression expression) { - if (!(expression instanceof JSReferenceExpression)) { - return; - } - final JSReferenceExpression ref = (JSReferenceExpression)expression; - final PsiElement element = ref.resolve(); - if (!(element instanceof JSVariable)) { - return; - } - final JSVariable parameter = (JSVariable)element; - final PsiElement JSVarStatement = parameter.getParent(); - if (!(JSVarStatement.getParent() instanceof JSForInStatement)) { - return; + if (expression instanceof JSReferenceExpression ref + && ref.resolve() instanceof JSVariable parameter + && parameter.getParent().getParent() instanceof JSForInStatement) { + registerError(expression); } - registerError(expression); } + @RequiredReadAction private static boolean isInForStatementBody(JSExpression expression, JSForStatement statement) { - final JSStatement body = statement.getBody(); + JSStatement body = statement.getBody(); return PsiTreeUtil.isAncestor(body, expression, true); } } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentToFunctionParameterJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentToFunctionParameterJSInspection.java index 07727a87..09ea81be 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentToFunctionParameterJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/assignment/AssignmentToFunctionParameterJSInspection.java @@ -9,22 +9,22 @@ import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; -import consulo.language.psi.PsiElement; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; @ExtensionImpl public class AssignmentToFunctionParameterJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.assignmentToFunctionParameterDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.assignmentToFunctionParameterDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.ASSIGNMENT_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.ASSIGNMENT_GROUP_NAME; } @RequiredReadAction @@ -41,42 +41,46 @@ public BaseInspectionVisitor buildVisitor() { private static class Visitor extends BaseInspectionVisitor { @Override - public void visitJSAssignmentExpression(JSAssignmentExpression jsAssignmentExpression) { + @RequiredReadAction + public void visitJSAssignmentExpression(@Nonnull JSAssignmentExpression jsAssignmentExpression) { super.visitJSAssignmentExpression(jsAssignmentExpression); - final JSExpression lhs = jsAssignmentExpression.getLOperand(); + JSExpression lhs = jsAssignmentExpression.getLOperand(); checkOperand(lhs); } @Override - public void visitJSPrefixExpression(JSPrefixExpression expression) { + @RequiredReadAction + public void visitJSPrefixExpression(@Nonnull JSPrefixExpression expression) { super.visitJSPrefixExpression(expression); - final IElementType sign = expression.getOperationSign(); + IElementType sign = expression.getOperationSign(); if (!JSTokenTypes.PLUSPLUS.equals(sign) && !JSTokenTypes.MINUSMINUS.equals(sign)) { return; } - final JSExpression operand = expression.getExpression(); + JSExpression operand = expression.getExpression(); checkOperand(operand); } @Override - public void visitJSPostfixExpression(JSPostfixExpression jsPostfixExpression) { - super.visitJSPostfixExpression(jsPostfixExpression); - final IElementType sign = jsPostfixExpression.getOperationSign(); + @RequiredReadAction + public void visitJSPostfixExpression(@Nonnull JSPostfixExpression postfixExpr) { + super.visitJSPostfixExpression(postfixExpr); + IElementType sign = postfixExpr.getOperationSign(); if (!JSTokenTypes.PLUSPLUS.equals(sign) && !JSTokenTypes.MINUSMINUS.equals(sign)) { return; } - final JSExpression operand = jsPostfixExpression.getExpression(); + JSExpression operand = postfixExpr.getExpression(); checkOperand(operand); } + @RequiredReadAction private void checkOperand(JSExpression operand) { - if (operand instanceof JSDefinitionExpression definitionExpression - && definitionExpression.getExpression() instanceof JSReferenceExpression referenceExpression - && referenceExpression.resolve() instanceof JSParameter) { + if (operand instanceof JSDefinitionExpression defExpr + && defExpr.getExpression() instanceof JSReferenceExpression refExpr + && refExpr.resolve() instanceof JSParameter) { registerError(operand); } - if (operand instanceof JSReferenceExpression referenceExpression - && referenceExpression.resolve() instanceof JSParameter) { + if (operand instanceof JSReferenceExpression refExpr + && refExpr.resolve() instanceof JSParameter) { registerError(operand); } } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/assignment/ReplaceAssignmentWithOperatorAssignmentJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/assignment/ReplaceAssignmentWithOperatorAssignmentJSInspection.java index a02c3790..6b41de8d 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/assignment/ReplaceAssignmentWithOperatorAssignmentJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/assignment/ReplaceAssignmentWithOperatorAssignmentJSInspection.java @@ -13,48 +13,54 @@ import com.sixrr.inspectjs.utils.EquivalenceChecker; import com.sixrr.inspectjs.utils.SideEffectChecker; import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.access.RequiredWriteAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; import consulo.language.editor.inspection.ProblemDescriptor; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import consulo.project.Project; import jakarta.annotation.Nonnull; -import org.jetbrains.annotations.NonNls; +import org.intellij.lang.annotations.Pattern; + +import java.util.Map; @ExtensionImpl public class ReplaceAssignmentWithOperatorAssignmentJSInspection extends JavaScriptInspection { - @Override @Nonnull + @Override + @Pattern(value = "[a-zA-Z_0-9.-]+") public String getID() { return "AssignmentReplaceableWithOperatorAssignmentJS"; } - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.assignmentReplaceableWithOperatorAssignmentDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.assignmentReplaceableWithOperatorAssignmentDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.ASSIGNMENT_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.ASSIGNMENT_GROUP_NAME; } - @RequiredReadAction @Override + @RequiredReadAction public String buildErrorString(Object state, Object... args) { - String expression = calculateReplacementExpression((JSAssignmentExpression)args[0]); + String expression = calculateReplacementExpression((JSAssignmentExpression) args[0]); return InspectionJSLocalize.assignmentReplaceableWithOperatorAssignmentErrorString(expression).get(); } + @RequiredReadAction private static String calculateReplacementExpression(JSAssignmentExpression expression) { - final JSBinaryExpression rhs = (JSBinaryExpression) expression.getROperand(); - final JSExpression lhs = expression.getLOperand(); + JSBinaryExpression rhs = (JSBinaryExpression) expression.getROperand(); + JSExpression lhs = expression.getLOperand(); assert rhs != null; - final IElementType sign = rhs.getOperationSign(); - final JSExpression rhsRhs = rhs.getROperand(); + IElementType sign = rhs.getOperationSign(); + JSExpression rhsRhs = rhs.getROperand(); assert rhsRhs != null; String signText = getTextForOperator(sign); return lhs.getText() + ' ' + signText + "= " + rhsRhs.getText(); @@ -66,69 +72,67 @@ public BaseInspectionVisitor buildVisitor() { } @Override + @RequiredReadAction public InspectionJSFix buildFix(PsiElement location, Object state) { return new ReplaceAssignmentWithOperatorAssignmentFix((JSAssignmentExpression) location); } private static class ReplaceAssignmentWithOperatorAssignmentFix extends InspectionJSFix { - private final String m_name; + @Nonnull + private final LocalizeValue myName; + @RequiredReadAction private ReplaceAssignmentWithOperatorAssignmentFix(JSAssignmentExpression expression) { super(); - final JSBinaryExpression rhs = (JSBinaryExpression) expression.getROperand(); + JSBinaryExpression rhs = (JSBinaryExpression) expression.getROperand(); assert rhs != null; - final IElementType sign = rhs.getOperationSign(); + IElementType sign = rhs.getOperationSign(); String signText = getTextForOperator(sign); - m_name = InspectionJSLocalize.replaceWithOperatorAssignFix(signText).get(); + myName = InspectionJSLocalize.replaceWithOperatorAssignFix(signText); } - @Override @Nonnull - public String getName() { - return m_name; + @Override + public LocalizeValue getName() { + return myName; } @Override + @RequiredWriteAction public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { - final JSAssignmentExpression expression = (JSAssignmentExpression) descriptor.getPsiElement(); - final String newExpression = calculateReplacementExpression(expression); + JSAssignmentExpression expression = (JSAssignmentExpression) descriptor.getPsiElement(); + String newExpression = calculateReplacementExpression(expression); replaceExpression(expression, newExpression); } } private static class ReplaceAssignmentWithOperatorAssignmentVisitor extends BaseInspectionVisitor { @Override + @RequiredReadAction public void visitJSAssignmentExpression(@Nonnull JSAssignmentExpression assignment) { super.visitJSAssignmentExpression(assignment); - final IElementType sign = assignment.getOperationSign(); + IElementType sign = assignment.getOperationSign(); if (!JSTokenTypes.EQ.equals(sign)) { return; } JSExpression lhs = assignment.getLOperand(); - final JSExpression rhs = assignment.getROperand(); - if (rhs == null || lhs == null) { - return; - } - if (!(rhs instanceof JSBinaryExpression)) { + if (lhs == null) { return; } - final JSBinaryExpression binaryRhs = (JSBinaryExpression) rhs; - if (!(binaryRhs.getROperand() != null)) { + if (!(assignment.getROperand() instanceof JSBinaryExpression binaryRhs && binaryRhs.getROperand() != null)) { return; } IElementType operationSign = binaryRhs.getOperationSign(); - if (operationSign == JSTokenTypes.ANDAND || - operationSign == JSTokenTypes.OROR) { + if (operationSign == JSTokenTypes.ANDAND || operationSign == JSTokenTypes.OROR) { return; } - final JSExpression lOperand = binaryRhs.getLOperand(); + JSExpression lOperand = binaryRhs.getLOperand(); if (SideEffectChecker.mayHaveSideEffects(lhs)) { return; } - if(lhs instanceof JSDefinitionExpression) - { - lhs = ((JSDefinitionExpression)lhs).getExpression(); + if (lhs instanceof JSDefinitionExpression defExpr) { + lhs = defExpr.getExpression(); } if (!EquivalenceChecker.expressionsAreEquivalent(lhs, lOperand)) { return; @@ -137,50 +141,24 @@ public void visitJSAssignmentExpression(@Nonnull JSAssignmentExpression assignme } } - @NonNls + private static final Map TEXT_FOR_OPERATOR = Map.ofEntries( + Map.entry(JSTokenTypes.PLUS, "+"), + Map.entry(JSTokenTypes.MINUS, "-"), + Map.entry(JSTokenTypes.MULT, "*"), + Map.entry(JSTokenTypes.DIV, "/"), + Map.entry(JSTokenTypes.PERC, "%"), + Map.entry(JSTokenTypes.XOR, "^"), + Map.entry(JSTokenTypes.ANDAND, "&&"), + Map.entry(JSTokenTypes.OROR, "||"), + Map.entry(JSTokenTypes.AND, "&"), + Map.entry(JSTokenTypes.OR, "|"), + Map.entry(JSTokenTypes.LTLT, "<<"), + Map.entry(JSTokenTypes.LTLTEQ, "<<="), + Map.entry(JSTokenTypes.GTGT, ">>"), + Map.entry(JSTokenTypes.GTGTGT, ">>>") + ); + private static String getTextForOperator(IElementType operator) { - if (JSTokenTypes.PLUS.equals(operator)) { - return "+"; - } - if (JSTokenTypes.MINUS.equals(operator)) { - return "-"; - } - if (JSTokenTypes.MULT.equals(operator)) { - return "*"; - } - if (JSTokenTypes.DIV.equals(operator)) { - return "/"; - } - if (JSTokenTypes.PERC.equals(operator)) { - return "%"; - } - if (JSTokenTypes.XOR.equals(operator)) { - return "^"; - } - if (JSTokenTypes.ANDAND.equals(operator)) { - return "&&"; - } - if (JSTokenTypes.OROR.equals(operator)) { - return "||"; - } - if (JSTokenTypes.AND.equals(operator)) { - return "&"; - } - if (JSTokenTypes.OR.equals(operator)) { - return "|"; - } - if (JSTokenTypes.LTLT.equals(operator)) { - return "<<"; - } - if (JSTokenTypes.LTLTEQ.equals(operator)) { - return "<<="; - } - if (JSTokenTypes.GTGT.equals(operator)) { - return ">>"; - } - if (JSTokenTypes.GTGTGT.equals(operator)) { - return ">>>"; - } - return "unknown"; + return TEXT_FOR_OPERATOR.getOrDefault(operator, "unknown"); } } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/assignment/SillyAssignmentJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/assignment/SillyAssignmentJSInspection.java index b5e60b18..52065941 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/assignment/SillyAssignmentJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/assignment/SillyAssignmentJSInspection.java @@ -14,24 +14,25 @@ import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; import consulo.language.psi.PsiElement; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; @ExtensionImpl public class SillyAssignmentJSInspection extends JavaScriptInspection { - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.sillyAssignmentDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.sillyAssignmentDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.ASSIGNMENT_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.ASSIGNMENT_GROUP_NAME; } - @RequiredReadAction @Override + @RequiredReadAction public String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.sillyAssignmentErrorString().get(); } @@ -48,60 +49,49 @@ public BaseInspectionVisitor buildVisitor() { private static class Visitor extends BaseInspectionVisitor { @Override + @RequiredReadAction public void visitJSAssignmentExpression(@Nonnull JSAssignmentExpression assignment) { super.visitJSAssignmentExpression(assignment); - final IElementType sign = assignment.getOperationSign(); + IElementType sign = assignment.getOperationSign(); if (!JSTokenTypes.EQ.equals(sign)) { return; } JSExpression lhs = assignment.getLOperand(); - if(lhs instanceof JSDefinitionExpression) - { - lhs = ((JSDefinitionExpression)lhs).getExpression(); + if (lhs instanceof JSDefinitionExpression lhsDef) { + lhs = lhsDef.getExpression(); } - final JSExpression rhs = assignment.getROperand(); - if(rhs == null || lhs == null) - { + JSExpression rhs = assignment.getROperand(); + if (rhs == null || lhs == null) { return; } - if(!(rhs instanceof JSReferenceExpression) || - !(lhs instanceof JSReferenceExpression) ) - { + if (!(rhs instanceof JSReferenceExpression rhsRef && lhs instanceof JSReferenceExpression lhsRef)) { return; } - final JSReferenceExpression rhsReference = (JSReferenceExpression) rhs; - final JSReferenceExpression lhsReference = (JSReferenceExpression) lhs; - final JSExpression rhsQualifier = rhsReference.getQualifier(); - final JSExpression lhsQualifier = lhsReference.getQualifier(); - if(rhsQualifier !=null || lhsQualifier !=null) - { - if(!EquivalenceChecker.expressionsAreEquivalent(rhsQualifier, lhsQualifier)) - { + JSExpression rhsQualifier = rhsRef.getQualifier(); + JSExpression lhsQualifier = lhsRef.getQualifier(); + if (rhsQualifier != null || lhsQualifier != null) { + if (!EquivalenceChecker.expressionsAreEquivalent(rhsQualifier, lhsQualifier)) { return; } } - final String rhsName = rhsReference.getReferencedName(); - final String lhsName = lhsReference.getReferencedName(); - if(rhsName == null || lhsName == null) - { + String rhsName = rhsRef.getReferencedName(); + String lhsName = lhsRef.getReferencedName(); + if (rhsName == null || lhsName == null) { return; } - if(!rhsName.equals(lhsName)) - { + if (!rhsName.equals(lhsName)) { return; } - final PsiElement rhsReferent = rhsReference.resolve(); - final PsiElement lhsReferent = lhsReference.resolve(); - if(rhsReferent != null && lhsReferent != null && - !rhsReferent.equals(lhsReferent)) - { + PsiElement rhsReferent = rhsRef.resolve(); + PsiElement lhsReferent = lhsRef.resolve(); + if (rhsReferent != null && lhsReferent != null && !rhsReferent.equals(lhsReferent)) { return; } if (lhsName.equals("location") && lhsQualifier != null && lhsQualifier.getText().equals("document")) { - // document.location = document.location causes browser refresh - return; + // document.location = document.location causes browser refresh + return; } registerError(assignment); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bitwise/IncompatibleMaskJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bitwise/IncompatibleMaskJSInspection.java index 4c1d36a8..ab4fbdc1 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bitwise/IncompatibleMaskJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bitwise/IncompatibleMaskJSInspection.java @@ -13,34 +13,37 @@ import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; +import org.intellij.lang.annotations.Pattern; @ExtensionImpl public class IncompatibleMaskJSInspection extends JavaScriptInspection { - @Override @Nonnull + @Override + @Pattern(value = "[a-zA-Z_0-9.-]+") public String getID() { return "IncompatibleBitwiseMaskOperation"; } - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.incompatibleMaskOperationDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.incompatibleMaskOperationDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.BITWISE_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.BITWISE_GROUP_NAME; } - @RequiredReadAction - @Override @Nonnull + @Override + @RequiredReadAction public String buildErrorString(Object state, Object... args) { - final JSBinaryExpression binaryExpression = (JSBinaryExpression)args[0]; - final IElementType tokenType = binaryExpression.getOperationSign(); + JSBinaryExpression binaryExpression = (JSBinaryExpression) args[0]; + IElementType tokenType = binaryExpression.getOperationSign(); if (JSTokenTypes.EQEQ.equals(tokenType)) { return InspectionJSLocalize.incompatibleMaskOperationProblemDescriptorAlwaysFalse().get(); } @@ -61,59 +64,59 @@ public BaseInspectionVisitor buildVisitor() { private static class IncompatibleMaskVisitor extends BaseInspectionVisitor { @Override + @RequiredReadAction public void visitJSBinaryExpression(@Nonnull JSBinaryExpression expression) { super.visitJSBinaryExpression(expression); - final JSExpression rhs = expression.getROperand(); + JSExpression rhs = expression.getROperand(); if (!ComparisonUtils.isEqualityComparison(expression)) { return; } - final JSExpression strippedRhs = ParenthesesUtils.stripParentheses(rhs); + JSExpression strippedRhs = ParenthesesUtils.stripParentheses(rhs); if (strippedRhs == null) { return; } - final JSExpression lhs = expression.getLOperand(); - final JSExpression strippedLhs = ParenthesesUtils.stripParentheses(lhs); + JSExpression lhs = expression.getLOperand(); + JSExpression strippedLhs = ParenthesesUtils.stripParentheses(lhs); if (strippedLhs == null) { return; } if (isConstantMask(strippedLhs) && ExpressionUtil.isConstantExpression(strippedRhs)) { - if (isIncompatibleMask((JSBinaryExpression)strippedLhs, strippedRhs)) { + if (isIncompatibleMask((JSBinaryExpression) strippedLhs, strippedRhs)) { registerError(expression, expression); } } else if (isConstantMask(strippedRhs) && ExpressionUtil.isConstantExpression(strippedLhs)) { - if (isIncompatibleMask((JSBinaryExpression)strippedRhs, strippedLhs)) { + if (isIncompatibleMask((JSBinaryExpression) strippedRhs, strippedLhs)) { registerError(expression, expression); } } } + @RequiredReadAction private static boolean isIncompatibleMask(JSBinaryExpression maskExpression, JSExpression constantExpression) { - final IElementType tokenType = maskExpression.getOperationSign(); - final Object constantValue = ExpressionUtil.computeConstantExpression(constantExpression); + IElementType tokenType = maskExpression.getOperationSign(); + Object constantValue = ExpressionUtil.computeConstantExpression(constantExpression); if (!(constantValue instanceof Integer)) { return false; } - final int constantLongValue = (Integer)constantValue; - final JSExpression maskRhs = maskExpression.getROperand(); - final JSExpression maskLhs = maskExpression.getLOperand(); - final int constantMaskValue; + int constantLongValue = (Integer) constantValue; + JSExpression maskRhs = maskExpression.getROperand(); + JSExpression maskLhs = maskExpression.getLOperand(); + int constantMaskValue; if (ExpressionUtil.isConstantExpression(maskRhs)) { - final Object rhsValue = - ExpressionUtil.computeConstantExpression(maskRhs); + Object rhsValue = ExpressionUtil.computeConstantExpression(maskRhs); if (!(rhsValue instanceof Integer)) { return false; // Might indeed be the case with "null" literal // whoes constant value evaluates to null. Check out (a|null) case. } - constantMaskValue = (Integer)rhsValue; + constantMaskValue = (Integer) rhsValue; } else { - final Object lhsValue = - ExpressionUtil.computeConstantExpression(maskLhs); + Object lhsValue = ExpressionUtil.computeConstantExpression(maskLhs); if (!(lhsValue instanceof Integer)) { return false; } - constantMaskValue = (Integer)lhsValue; + constantMaskValue = (Integer) lhsValue; } if (JSTokenTypes.OR.equals(tokenType)) { @@ -129,23 +132,23 @@ private static boolean isIncompatibleMask(JSBinaryExpression maskExpression, JSE return false; } + @RequiredReadAction private static boolean isConstantMask(JSExpression expression) { if (expression == null) { return false; } - if (!(expression instanceof JSBinaryExpression)) { + if (!(expression instanceof JSBinaryExpression binaryExpression)) { return false; } - final JSBinaryExpression binaryExpression = (JSBinaryExpression)expression; - final IElementType tokenType = binaryExpression.getOperationSign(); + IElementType tokenType = binaryExpression.getOperationSign(); if (!JSTokenTypes.OR.equals(tokenType) && !JSTokenTypes.AND.equals(tokenType)) { return false; } - final JSExpression rhs = binaryExpression.getROperand(); + JSExpression rhs = binaryExpression.getROperand(); if (ExpressionUtil.isConstantExpression(rhs)) { return true; } - final JSExpression lhs = binaryExpression.getLOperand(); + JSExpression lhs = binaryExpression.getLOperand(); return ExpressionUtil.isConstantExpression(lhs); } } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bitwise/PointlessBitwiseExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bitwise/PointlessBitwiseExpressionJSInspection.java index b7f817af..0a7b7f08 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bitwise/PointlessBitwiseExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bitwise/PointlessBitwiseExpressionJSInspection.java @@ -17,42 +17,40 @@ import consulo.language.editor.inspection.ProblemDescriptor; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import consulo.project.Project; import jakarta.annotation.Nonnull; -import java.util.HashSet; import java.util.Set; @ExtensionImpl public class PointlessBitwiseExpressionJSInspection extends JavaScriptInspection { - static final Set bitwiseTokens = new HashSet<>(6); - - static { - bitwiseTokens.add(JSTokenTypes.AND); - bitwiseTokens.add(JSTokenTypes.OR); - bitwiseTokens.add(JSTokenTypes.XOR); - bitwiseTokens.add(JSTokenTypes.LTLT); - bitwiseTokens.add(JSTokenTypes.GTGT); - bitwiseTokens.add(JSTokenTypes.GTGTGT); - } + static final Set OUR_BITWISE_TOKENS = Set.of( + JSTokenTypes.AND, + JSTokenTypes.OR, + JSTokenTypes.XOR, + JSTokenTypes.LTLT, + JSTokenTypes.GTGT, + JSTokenTypes.GTGTGT + ); - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.pointlessBitwiseExpressionDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.pointlessBitwiseExpressionDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.BITWISE_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.BITWISE_GROUP_NAME; } - @RequiredReadAction - @Override @Nonnull + @Override + @RequiredReadAction public String buildErrorString(Object state, Object... args) { - final String replacementExpression = + String replacementExpression = calculateReplacementExpression((JSExpression)args[0], (PointlessBitwiseExpressionJSInspectionState)state); return InspectionJSLocalize.pointlessBitwiseExpressionProblemDescriptor(replacementExpression).get(); } @@ -132,10 +130,10 @@ public PointlessBitwiseFix(Object state) { myState = (PointlessBitwiseExpressionJSInspectionState)state; } - @Override @Nonnull - public String getName() { - return InspectionJSLocalize.pointlessBitwiseExpressionSimplifyQuickfix().get(); + @Override + public LocalizeValue getName() { + return InspectionJSLocalize.pointlessBitwiseExpressionSimplifyQuickfix(); } @Override @@ -153,7 +151,7 @@ private class PointlessBitwiseVisitor extends BaseInspectionVisitor s_specialCaseLiterals = Set.of( + private static final Set OUR_SPECIAL_CASE_LITERALS = Set.of( "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "0L", "1L", "2L", "0l", @@ -31,27 +30,27 @@ public boolean isEnabledByDefault() { return false; } - @Override @Nonnull - public String getDisplayName() { - return InspectionJSLocalize.magicNumberDisplayName().get(); + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.magicNumberDisplayName(); } - @Override @Nonnull - public String getGroupDisplayName() { - return JSGroupNames.CONFUSING_GROUP_NAME.get(); + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.CONFUSING_GROUP_NAME; } - @RequiredReadAction - @Override @Nonnull + @Override + @RequiredReadAction public String buildErrorString(Object state, Object... args) { return InspectionJSLocalize.magicNumberProblemDescriptor().get(); } static boolean isSpecialCaseLiteral(String text) { - return s_specialCaseLiterals.contains(text); + return OUR_SPECIAL_CASE_LITERALS.contains(text); } @Override diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexArithmeticExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexArithmeticExpressionJSInspection.java index e511953e..37ca2a37 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexArithmeticExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexArithmeticExpressionJSInspection.java @@ -11,231 +11,189 @@ import consulo.language.ast.IElementType; import consulo.language.editor.inspection.InspectionToolState; import consulo.language.psi.PsiElement; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; -import java.util.HashSet; import java.util.Set; @ExtensionImpl -public class OverlyComplexArithmeticExpressionJSInspection extends JavaScriptInspection -{ - @Override - @Nonnull - public String getDisplayName() - { - return InspectionJSLocalize.overlyComplexArithmeticExpressionDisplayName().get(); - } - - @Override - @Nonnull - public String getGroupDisplayName() - { - return JSGroupNames.CONFUSING_GROUP_NAME.get(); - } - - @Nonnull - @Override - public InspectionToolState createStateProvider() - { - return new OverlyComplexArithmeticExpressionJSInspectionState(); - } - - @RequiredReadAction - @Override - protected String buildErrorString(Object state, Object... args) - { - return InspectionJSLocalize.overlyComplexArithmeticExpressionErrorString().get(); - } - - @Override - public BaseInspectionVisitor buildVisitor() - { - return new Visitor(); - } - - private class Visitor extends BaseInspectionVisitor - { - private final Set arithmeticTokens = new HashSet<>(5); - - public Visitor() - { - arithmeticTokens.add(JSTokenTypes.PLUS); - arithmeticTokens.add(JSTokenTypes.MINUS); - arithmeticTokens.add(JSTokenTypes.MULT); - arithmeticTokens.add(JSTokenTypes.DIV); - arithmeticTokens.add(JSTokenTypes.PERC); - } - - @Override - public void visitJSBinaryExpression(@Nonnull JSBinaryExpression expression) - { - super.visitJSBinaryExpression(expression); - checkExpression(expression); - } - - @Override - public void visitJSPrefixExpression(@Nonnull JSPrefixExpression expression) - { - super.visitJSPrefixExpression(expression); - checkExpression(expression); - } - - @Override - public void visitJSParenthesizedExpression(JSParenthesizedExpression expression) - { - super.visitJSParenthesizedExpression(expression); - checkExpression(expression); - } - - private void checkExpression(JSExpression expression) - { - if(isParentArithmetic(expression)) - { - return; - } - if(!isArithmetic(expression)) - { - return; - } - if(containsStringConcatenation(expression)) - { - return; - } - final int numTerms = countTerms(expression); - if(numTerms <= myState.m_limit) - { - return; - } - registerError(expression); - } - - private int countTerms(JSExpression expression) - { - if(expression == null) - { - return 0; - } - if(!isArithmetic(expression)) - { - return 1; - } - if(expression instanceof JSBinaryExpression) - { - final JSBinaryExpression binaryExpression = (JSBinaryExpression) expression; - final JSExpression lhs = binaryExpression.getLOperand(); - final JSExpression rhs = binaryExpression.getROperand(); - return countTerms(lhs) + countTerms(rhs); - } - else if(expression instanceof JSPrefixExpression) - { - final JSPrefixExpression prefixExpression = (JSPrefixExpression) expression; - final JSExpression operand = prefixExpression.getExpression(); - return countTerms(operand); - } - else if(expression instanceof JSParenthesizedExpression) - { - final JSParenthesizedExpression parenthesizedExpression = (JSParenthesizedExpression) expression; - final JSExpression contents = parenthesizedExpression.getInnerExpression(); - return countTerms(contents); - } - return 1; - } - - private boolean isParentArithmetic(JSExpression expression) - { - final PsiElement parent = expression.getParent(); - if(!(parent instanceof JSExpression)) - { - return false; - } - return isArithmetic((JSExpression) parent); - } - - private boolean isArithmetic(JSExpression expression) - { - if(expression instanceof JSBinaryExpression) - { - - final JSBinaryExpression binaryExpression = (JSBinaryExpression) expression; - final IElementType sign = binaryExpression.getOperationSign(); - return arithmeticTokens.contains(sign); - } - else if(expression instanceof JSPrefixExpression) - { - final JSPrefixExpression prefixExpression = (JSPrefixExpression) expression; - final IElementType sign = prefixExpression.getOperationSign(); - return arithmeticTokens.contains(sign); - } - else if(expression instanceof JSParenthesizedExpression) - { - final JSParenthesizedExpression parenthesizedExpression = (JSParenthesizedExpression) expression; - final JSExpression contents = parenthesizedExpression.getInnerExpression(); - return isArithmetic(contents); - } - return false; - } - - private boolean containsStringConcatenation(JSExpression expression) - { - if(isStringLiteral(expression)) - { - return true; - } - if(expression instanceof JSBinaryExpression) - { - - final JSBinaryExpression binaryExpression = (JSBinaryExpression) expression; - final JSExpression lhs = binaryExpression.getLOperand(); - - if(containsStringConcatenation(lhs)) - { - return true; - } - final JSExpression rhs = binaryExpression.getROperand(); - return containsStringConcatenation(rhs); - } - else if(expression instanceof JSPrefixExpression) - { - final JSPrefixExpression prefixExpression = (JSPrefixExpression) expression; - final IElementType sign = prefixExpression.getOperationSign(); - return arithmeticTokens.contains(sign); - } - else if(expression instanceof JSParenthesizedExpression) - { - final JSParenthesizedExpression parenthesizedExpression = (JSParenthesizedExpression) expression; - final JSExpression contents = parenthesizedExpression.getInnerExpression(); - return containsStringConcatenation(contents); - } - return false; - } - - private boolean isStringLiteral(JSExpression expression) - { - if(expression instanceof JSLiteralExpression) - { - final JSLiteralExpression literal = (JSLiteralExpression) expression; - final String text = literal.getText(); - return text.startsWith("'") || text.startsWith("\""); - } - if(expression instanceof JSReferenceExpression) - { - final JSReferenceExpression reference = (JSReferenceExpression) expression; - final PsiElement referent = reference.resolve(); - if(referent instanceof JSVariable) - { - final JSVariable variable = (JSVariable) referent; - if(variable.isConst()) - { - final JSExpression initializer = variable.getInitializer(); - if(initializer != null) - { - final String text = initializer.getText(); - return text.startsWith("'") || text.startsWith("\""); - } - } - } - } - return false; - } - } +public class OverlyComplexArithmeticExpressionJSInspection extends JavaScriptInspection { + protected static final Set OUR_ARITHMETIC_TOKENS = Set.of( + JSTokenTypes.PLUS, + JSTokenTypes.MINUS, + JSTokenTypes.MULT, + JSTokenTypes.DIV, + JSTokenTypes.PERC + ); + + @Nonnull + @Override + public LocalizeValue getDisplayName() { + return InspectionJSLocalize.overlyComplexArithmeticExpressionDisplayName(); + } + + @Nonnull + @Override + public LocalizeValue getGroupDisplayName() { + return JSGroupNames.CONFUSING_GROUP_NAME; + } + + @Nonnull + @Override + public InspectionToolState createStateProvider() { + return new OverlyComplexArithmeticExpressionJSInspectionState(); + } + + @Override + @RequiredReadAction + protected String buildErrorString(Object state, Object... args) { + return InspectionJSLocalize.overlyComplexArithmeticExpressionErrorString().get(); + } + + @Override + public BaseInspectionVisitor buildVisitor() { + return new Visitor(); + } + + private class Visitor extends BaseInspectionVisitor { + @Override + public void visitJSBinaryExpression(@Nonnull JSBinaryExpression expression) { + super.visitJSBinaryExpression(expression); + checkExpression(expression); + } + + @Override + public void visitJSPrefixExpression(@Nonnull JSPrefixExpression expression) { + super.visitJSPrefixExpression(expression); + checkExpression(expression); + } + + @Override + public void visitJSParenthesizedExpression(JSParenthesizedExpression expression) { + super.visitJSParenthesizedExpression(expression); + checkExpression(expression); + } + + private void checkExpression(JSExpression expression) { + if (isParentArithmetic(expression)) { + return; + } + if (!isArithmetic(expression)) { + return; + } + if (containsStringConcatenation(expression)) { + return; + } + final int numTerms = countTerms(expression); + if (numTerms <= myState.m_limit) { + return; + } + registerError(expression); + } + + private int countTerms(JSExpression expression) { + if (expression == null) { + return 0; + } + if (!isArithmetic(expression)) { + return 1; + } + if (expression instanceof JSBinaryExpression) { + final JSBinaryExpression binaryExpression = (JSBinaryExpression) expression; + final JSExpression lhs = binaryExpression.getLOperand(); + final JSExpression rhs = binaryExpression.getROperand(); + return countTerms(lhs) + countTerms(rhs); + } + else if (expression instanceof JSPrefixExpression) { + final JSPrefixExpression prefixExpression = (JSPrefixExpression) expression; + final JSExpression operand = prefixExpression.getExpression(); + return countTerms(operand); + } + else if (expression instanceof JSParenthesizedExpression) { + final JSParenthesizedExpression parenthesizedExpression = (JSParenthesizedExpression) expression; + final JSExpression contents = parenthesizedExpression.getInnerExpression(); + return countTerms(contents); + } + return 1; + } + + private boolean isParentArithmetic(JSExpression expression) { + final PsiElement parent = expression.getParent(); + if (!(parent instanceof JSExpression)) { + return false; + } + return isArithmetic((JSExpression) parent); + } + + private boolean isArithmetic(JSExpression expression) { + if (expression instanceof JSBinaryExpression) { + + final JSBinaryExpression binaryExpression = (JSBinaryExpression) expression; + final IElementType sign = binaryExpression.getOperationSign(); + return OUR_ARITHMETIC_TOKENS.contains(sign); + } + else if (expression instanceof JSPrefixExpression) { + final JSPrefixExpression prefixExpression = (JSPrefixExpression) expression; + final IElementType sign = prefixExpression.getOperationSign(); + return OUR_ARITHMETIC_TOKENS.contains(sign); + } + else if (expression instanceof JSParenthesizedExpression) { + final JSParenthesizedExpression parenthesizedExpression = (JSParenthesizedExpression) expression; + final JSExpression contents = parenthesizedExpression.getInnerExpression(); + return isArithmetic(contents); + } + return false; + } + + private boolean containsStringConcatenation(JSExpression expression) { + if (isStringLiteral(expression)) { + return true; + } + if (expression instanceof JSBinaryExpression) { + + final JSBinaryExpression binaryExpression = (JSBinaryExpression) expression; + final JSExpression lhs = binaryExpression.getLOperand(); + + if (containsStringConcatenation(lhs)) { + return true; + } + final JSExpression rhs = binaryExpression.getROperand(); + return containsStringConcatenation(rhs); + } + else if (expression instanceof JSPrefixExpression) { + final JSPrefixExpression prefixExpression = (JSPrefixExpression) expression; + final IElementType sign = prefixExpression.getOperationSign(); + return OUR_ARITHMETIC_TOKENS.contains(sign); + } + else if (expression instanceof JSParenthesizedExpression) { + final JSParenthesizedExpression parenthesizedExpression = (JSParenthesizedExpression) expression; + final JSExpression contents = parenthesizedExpression.getInnerExpression(); + return containsStringConcatenation(contents); + } + return false; + } + + private boolean isStringLiteral(JSExpression expression) { + if (expression instanceof JSLiteralExpression) { + final JSLiteralExpression literal = (JSLiteralExpression) expression; + final String text = literal.getText(); + return text.startsWith("'") || text.startsWith("\""); + } + if (expression instanceof JSReferenceExpression) { + final JSReferenceExpression reference = (JSReferenceExpression) expression; + final PsiElement referent = reference.resolve(); + if (referent instanceof JSVariable) { + final JSVariable variable = (JSVariable) referent; + if (variable.isConst()) { + final JSExpression initializer = variable.getInitializer(); + if (initializer != null) { + final String text = initializer.getText(); + return text.startsWith("'") || text.startsWith("\""); + } + } + } + } + return false; + } + } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnresolvedVariableInspection.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnresolvedVariableInspection.java index 1fb617f2..56c6bedf 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnresolvedVariableInspection.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/inspections/JSUnresolvedVariableInspection.java @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.intellij.lang.javascript.impl.inspections; import com.intellij.lang.javascript.JavaScriptSupportLoader; @@ -37,6 +36,7 @@ import consulo.language.psi.PsiFile; import consulo.language.psi.ResolveResult; import consulo.language.psi.util.PsiTreeUtil; +import consulo.localize.LocalizeValue; import consulo.util.lang.StringUtil; import jakarta.annotation.Nonnull; @@ -53,14 +53,14 @@ public class JSUnresolvedVariableInspection extends JSInspection { @Nonnull @Override - public String getGroupDisplayName() { - return "General"; + public LocalizeValue getGroupDisplayName() { + return LocalizeValue.localizeTODO("General"); } @Nonnull @Override - public String getDisplayName() { - return JavaScriptLocalize.jsUnresolvedVariableInspectionName().get(); + public LocalizeValue getDisplayName() { + return JavaScriptLocalize.jsUnresolvedVariableInspectionName(); } @Nonnull @@ -244,12 +244,6 @@ private abstract static class BaseCreateJSVariableIntentionAction extends BaseCr BaseCreateJSVariableIntentionAction(String referencedName) { myReferencedName = referencedName; } - - @Override - @Nonnull - public String getFamilyName() { - return JavaScriptLocalize.javascriptCreateVariableIntentionFamily().get(); - } } private static class CreateJSNamespaceIntentionAction extends BaseCreateJSVariableIntentionAction { @@ -257,14 +251,14 @@ private static class CreateJSNamespaceIntentionAction extends BaseCreateJSVariab super(referencedName); } - @Override @Nonnull - public String getName() { - return JavaScriptLocalize.javascriptCreateNamespaceIntentionName(myReferencedName).get(); + @Override + public LocalizeValue getName() { + return JavaScriptLocalize.javascriptCreateNamespaceIntentionName(myReferencedName); } - @RequiredReadAction @Override + @RequiredReadAction protected void buildTemplate( Template template, JSReferenceExpression referenceExpression, @@ -291,20 +285,20 @@ private static class CreateJSVariableIntentionAction extends BaseCreateJSVariabl this.isConstant = isConstant; } - @Override @Nonnull - public String getName() { + @Override + public LocalizeValue getName() { return isField ? isConstant - ? JavaScriptLocalize.javascriptCreateConstantFieldIntentionName(myReferencedName).get() - : JavaScriptLocalize.javascriptCreatePropertyIntentionName(myReferencedName).get() + ? JavaScriptLocalize.javascriptCreateConstantFieldIntentionName(myReferencedName) + : JavaScriptLocalize.javascriptCreatePropertyIntentionName(myReferencedName) : isConstant - ? JavaScriptLocalize.javascriptCreateConstantIntentionName(myReferencedName).get() - : JavaScriptLocalize.javascriptCreateVariableIntentionName(myReferencedName).get(); + ? JavaScriptLocalize.javascriptCreateConstantIntentionName(myReferencedName) + : JavaScriptLocalize.javascriptCreateVariableIntentionName(myReferencedName); } - @RequiredReadAction @Override + @RequiredReadAction protected void buildTemplate( Template template, JSReferenceExpression referenceExpression, @@ -322,12 +316,7 @@ protected void buildTemplate( template.addTextSegment(classFeature ? referenceExpression.getReferencedName() : referenceExpression.getText()); template.addEndVariable(); - if (classFeature) { - template.addTextSegment(":"); - } - else { - template.addTextSegment(" = "); - } + template.addTextSegment(classFeature ? ":" : " = "); if (classFeature) { guessTypeAndAddTemplateVariable(template, referenceExpression, file); From 1b40fdb0b1e39215b32845eed9efd41167df3d7e Mon Sep 17 00:00:00 2001 From: UNV Date: Fri, 10 Oct 2025 12:28:26 +0300 Subject: [PATCH 129/150] Localizing intentions. --- .../TextLabelInSwitchStatementJSInspection.java | 4 ++-- .../IncrementDecrementResultUsedJSInspection.java | 2 +- .../lang/javascript/intention/JSIntention.java | 3 ++- .../intention/JSMutablyNamedIntention.java | 8 ++++---- .../comment/JSChangeToCStyleCommentIntention.java | 5 +++-- .../JSChangeToEndOfLineCommentIntention.java | 5 +++-- .../JSMoveCommentToSeparateLineIntention.java | 5 +++-- .../conditional/JSFlipConditionalIntention.java | 5 +++-- .../intention/conditional/JSFlipIfIntention.java | 5 +++-- .../conditional/JSRemoveConditionalIntention.java | 5 +++-- .../JSReplaceConditionalWithIfIntention.java | 5 +++-- .../constant/JSConstantExpressionIntention.java | 5 +++-- ...MergeDeclarationAndInitializationIntention.java | 5 +++-- ...SplitDeclarationAndInitializationIntention.java | 5 +++-- .../loop/JSMergeParallelForInLoopsIntention.java | 5 +++-- .../loop/JSMergeParallelForLoopsIntention.java | 5 +++-- .../number/JSConvertIntegerToDecimalIntention.java | 5 +++-- .../number/JSConvertIntegerToHexIntention.java | 5 +++-- .../number/JSConvertIntegerToOctalIntention.java | 5 +++-- .../JSRemoveUnnecessaryParenthesesIntention.java | 5 +++-- .../JSDoubleToSingleQuotedStringIntention.java | 5 +++-- .../JSJoinConcatenatedStringLiteralsIntention.java | 5 +++-- .../JSSingleToDoubleQuotedStringIntention.java | 5 +++-- .../switchtoif/JSReplaceIfWithSwitchIntention.java | 5 +++-- .../switchtoif/JSReplaceSwitchWithIfIntention.java | 5 +++-- .../trivialif/JSMergeElseIfIntention.java | 5 +++-- .../intention/trivialif/JSMergeIfAndIntention.java | 5 +++-- .../intention/trivialif/JSMergeIfOrIntention.java | 5 +++-- .../trivialif/JSMergeParallelIfsIntention.java | 5 +++-- .../trivialif/JSRemoveRedundantElseIntention.java | 5 +++-- .../JSReplaceIfWithConditionalIntention.java | 5 +++-- .../trivialif/JSSimplifyIfElseIntention.java | 5 +++-- .../trivialif/JSSplitElseIfIntention.java | 5 +++-- .../intention/trivialif/JSSplitIfAndIntention.java | 5 +++-- .../intention/trivialif/JSSplitIfOrIntention.java | 5 +++-- .../inspections/PropertyValidationInspection.java | 14 +++++++------- 36 files changed, 109 insertions(+), 77 deletions(-) diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bugs/TextLabelInSwitchStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bugs/TextLabelInSwitchStatementJSInspection.java index 00e0b70a..42f5bdf2 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/bugs/TextLabelInSwitchStatementJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/bugs/TextLabelInSwitchStatementJSInspection.java @@ -18,7 +18,7 @@ public class TextLabelInSwitchStatementJSInspection extends JavaScriptInspection { @Nonnull @Override - public LocalizeValue getDisplayName() { + public LocalizeValue getDisplayName() { return InspectionJSLocalize.textLabelInSwitchStatementDisplayName(); } @@ -57,7 +57,7 @@ private void checkForLabel(JSStatement statement) { if (!(statement instanceof JSLabeledStatement)) { return; } - final JSLabeledStatement labeledStatement = (JSLabeledStatement)statement; + final JSLabeledStatement labeledStatement = (JSLabeledStatement) statement; final PsiElement label = labeledStatement.getLabelIdentifier(); registerError(label); } diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/IncrementDecrementResultUsedJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/IncrementDecrementResultUsedJSInspection.java index 5d24522b..49ee02eb 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/IncrementDecrementResultUsedJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/IncrementDecrementResultUsedJSInspection.java @@ -18,7 +18,7 @@ public class IncrementDecrementResultUsedJSInspection extends JavaScriptInspection { @Nonnull @Override - public LocalizeValue getDisplayName() { + public LocalizeValue getDisplayName() { return InspectionJSLocalize.resultOfIncrementOrDecrementUsedDisplayName(); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSIntention.java index af999150..cff14f7a 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSIntention.java @@ -22,6 +22,7 @@ import consulo.language.psi.PsiElement; import consulo.language.psi.PsiFile; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import consulo.project.Project; import consulo.xml.psi.xml.XmlElement; import jakarta.annotation.Nonnull; @@ -83,5 +84,5 @@ public boolean startInWriteAction() { @Override @Nonnull - public abstract String getText(); + public abstract LocalizeValue getText(); } diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSMutablyNamedIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSMutablyNamedIntention.java index 5ff58ac0..2a0ae625 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSMutablyNamedIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSMutablyNamedIntention.java @@ -23,14 +23,14 @@ import jakarta.annotation.Nullable; public abstract class JSMutablyNamedIntention extends JSIntention { - private String myText; + private LocalizeValue myText; protected abstract LocalizeValue getTextForElement(PsiElement element); @Override @Nonnull - public String getText() { - return myText != null ? myText : getBasicText().get(); + public LocalizeValue getText() { + return myText != null ? myText : getBasicText(); } @Nonnull @@ -40,7 +40,7 @@ public String getText() { public boolean isAvailable(@Nonnull Project project, Editor editor, @Nullable PsiElement node) { final PsiElement element = findMatchingElement(node); if (element != null) { - myText = getTextForElement(element).get(); + myText = getTextForElement(element); return true; } else { diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToCStyleCommentIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToCStyleCommentIntention.java index 10cd0301..52c56e41 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToCStyleCommentIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToCStyleCommentIntention.java @@ -23,6 +23,7 @@ import consulo.language.psi.PsiComment; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import consulo.util.lang.StringUtil; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; @@ -41,8 +42,8 @@ public class JSChangeToCStyleCommentIntention extends JSIntention { @Override @Nonnull - public String getText() { - return JSIntentionLocalize.commentChangeToCstyleComment().get(); + public LocalizeValue getText() { + return JSIntentionLocalize.commentChangeToCstyleComment(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToEndOfLineCommentIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToEndOfLineCommentIntention.java index 48ac087c..28fc84a9 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToEndOfLineCommentIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToEndOfLineCommentIntention.java @@ -25,6 +25,7 @@ import consulo.language.psi.PsiElement; import consulo.language.psi.PsiWhiteSpace; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; @@ -40,8 +41,8 @@ public class JSChangeToEndOfLineCommentIntention extends JSIntention { @Override @Nonnull - public String getText() { - return JSIntentionLocalize.commentChangeToEndOfLineComment().get(); + public LocalizeValue getText() { + return JSIntentionLocalize.commentChangeToEndOfLineComment(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSMoveCommentToSeparateLineIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSMoveCommentToSeparateLineIntention.java index e0fbfef0..88b48b9d 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSMoveCommentToSeparateLineIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSMoveCommentToSeparateLineIntention.java @@ -25,6 +25,7 @@ import consulo.language.psi.PsiElement; import consulo.language.psi.PsiWhiteSpace; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; @@ -40,8 +41,8 @@ public class JSMoveCommentToSeparateLineIntention extends JSIntention { @Override @Nonnull - public String getText() { - return JSIntentionLocalize.commentMoveCommentToSeparateLine().get(); + public LocalizeValue getText() { + return JSIntentionLocalize.commentMoveCommentToSeparateLine(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipConditionalIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipConditionalIntention.java index 197bd9bf..afdf85b4 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipConditionalIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipConditionalIntention.java @@ -24,6 +24,7 @@ import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; @@ -40,8 +41,8 @@ public class JSFlipConditionalIntention extends JSIntention { @Override @Nonnull - public String getText() { - return JSIntentionLocalize.conditionalFlipConditional().get(); + public LocalizeValue getText() { + return JSIntentionLocalize.conditionalFlipConditional(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipIfIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipIfIntention.java index f19c94a2..7f0ae331 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipIfIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipIfIntention.java @@ -25,6 +25,7 @@ import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; @@ -41,8 +42,8 @@ public class JSFlipIfIntention extends JSIntention { @Override @Nonnull - public String getText() { - return JSIntentionLocalize.conditionalFlipIf().get(); + public LocalizeValue getText() { + return JSIntentionLocalize.conditionalFlipIf(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSRemoveConditionalIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSRemoveConditionalIntention.java index 1eb93d0b..42f80dc7 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSRemoveConditionalIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSRemoveConditionalIntention.java @@ -23,6 +23,7 @@ import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; @@ -40,8 +41,8 @@ public class JSRemoveConditionalIntention extends JSIntention { @Override @Nonnull - public String getText() { - return JSIntentionLocalize.conditionalRemoveConditional().get(); + public LocalizeValue getText() { + return JSIntentionLocalize.conditionalRemoveConditional(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSReplaceConditionalWithIfIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSReplaceConditionalWithIfIntention.java index 439ecc40..531ce789 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSReplaceConditionalWithIfIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSReplaceConditionalWithIfIntention.java @@ -21,6 +21,7 @@ import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; @@ -35,8 +36,8 @@ public class JSReplaceConditionalWithIfIntention extends JSIntention { @Override @Nonnull - public String getText() { - return JSIntentionLocalize.conditionalReplaceConditionalWithIf().get(); + public LocalizeValue getText() { + return JSIntentionLocalize.conditionalReplaceConditionalWithIf(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantExpressionIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantExpressionIntention.java index bf3b677b..b56590e9 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantExpressionIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantExpressionIntention.java @@ -24,6 +24,7 @@ import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import consulo.util.lang.StringUtil; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; @@ -41,8 +42,8 @@ public class JSConstantExpressionIntention extends JSIntention { @Override @Nonnull - public String getText() { - return JSIntentionLocalize.constantComputeExpression().get(); + public LocalizeValue getText() { + return JSIntentionLocalize.constantComputeExpression(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSMergeDeclarationAndInitializationIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSMergeDeclarationAndInitializationIntention.java index 25f8a8a1..1c84429b 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSMergeDeclarationAndInitializationIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSMergeDeclarationAndInitializationIntention.java @@ -22,6 +22,7 @@ import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; @@ -40,8 +41,8 @@ public class JSMergeDeclarationAndInitializationIntention extends JSIntention { @Override @Nonnull - public String getText() { - return JSIntentionLocalize.initializationMergeDeclarationAndInitialization().get(); + public LocalizeValue getText() { + return JSIntentionLocalize.initializationMergeDeclarationAndInitialization(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSSplitDeclarationAndInitializationIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSSplitDeclarationAndInitializationIntention.java index 510ab000..e710883e 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSSplitDeclarationAndInitializationIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSSplitDeclarationAndInitializationIntention.java @@ -26,6 +26,7 @@ import consulo.language.psi.PsiElement; import consulo.language.psi.PsiFile; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; @@ -48,8 +49,8 @@ public class JSSplitDeclarationAndInitializationIntention extends JSIntention { @Override @Nonnull - public String getText() { - return JSIntentionLocalize.initializationSplitDeclarationAndInitialization().get(); + public LocalizeValue getText() { + return JSIntentionLocalize.initializationSplitDeclarationAndInitialization(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForInLoopsIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForInLoopsIntention.java index ba5e9cb4..a0821dd4 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForInLoopsIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForInLoopsIntention.java @@ -27,6 +27,7 @@ import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; @@ -44,8 +45,8 @@ public class JSMergeParallelForInLoopsIntention extends JSIntention { @Override @Nonnull - public String getText() { - return JSIntentionLocalize.loopMergeParallelForInLoops().get(); + public LocalizeValue getText() { + return JSIntentionLocalize.loopMergeParallelForInLoops(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForLoopsIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForLoopsIntention.java index d3711b24..9717648e 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForLoopsIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForLoopsIntention.java @@ -25,6 +25,7 @@ import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; @@ -42,8 +43,8 @@ public class JSMergeParallelForLoopsIntention extends JSIntention { @Override @Nonnull - public String getText() { - return JSIntentionLocalize.loopMergeParallelForLoops().get(); + public LocalizeValue getText() { + return JSIntentionLocalize.loopMergeParallelForLoops(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToDecimalIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToDecimalIntention.java index 356b707b..a312b38a 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToDecimalIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToDecimalIntention.java @@ -22,6 +22,7 @@ import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; @@ -37,8 +38,8 @@ public class JSConvertIntegerToDecimalIntention extends JSIntention { @Override @Nonnull - public String getText() { - return JSIntentionLocalize.numberConvertIntegerToDecimal().get(); + public LocalizeValue getText() { + return JSIntentionLocalize.numberConvertIntegerToDecimal(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToHexIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToHexIntention.java index d1648972..bece8d28 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToHexIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToHexIntention.java @@ -22,6 +22,7 @@ import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; @@ -37,8 +38,8 @@ public class JSConvertIntegerToHexIntention extends JSIntention { @Override @Nonnull - public String getText() { - return JSIntentionLocalize.numberConvertIntegerToHex().get(); + public LocalizeValue getText() { + return JSIntentionLocalize.numberConvertIntegerToHex(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToOctalIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToOctalIntention.java index 29e25724..5455e906 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToOctalIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToOctalIntention.java @@ -22,6 +22,7 @@ import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; @@ -37,8 +38,8 @@ public class JSConvertIntegerToOctalIntention extends JSIntention { @Override @Nonnull - public String getText() { - return JSIntentionLocalize.numberConvertIntegerToOctal().get(); + public LocalizeValue getText() { + return JSIntentionLocalize.numberConvertIntegerToOctal(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/parenthesis/JSRemoveUnnecessaryParenthesesIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/parenthesis/JSRemoveUnnecessaryParenthesesIntention.java index c6ce7a08..65921e48 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/parenthesis/JSRemoveUnnecessaryParenthesesIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/parenthesis/JSRemoveUnnecessaryParenthesesIntention.java @@ -26,6 +26,7 @@ import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; @@ -42,8 +43,8 @@ public class JSRemoveUnnecessaryParenthesesIntention extends JSIntention { @Override @Nonnull - public String getText() { - return JSIntentionLocalize.parenthesisRemoveUnnecessaryParentheses().get(); + public LocalizeValue getText() { + return JSIntentionLocalize.parenthesisRemoveUnnecessaryParentheses(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSDoubleToSingleQuotedStringIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSDoubleToSingleQuotedStringIntention.java index 126a8612..7c7008bb 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSDoubleToSingleQuotedStringIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSDoubleToSingleQuotedStringIntention.java @@ -22,6 +22,7 @@ import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; @@ -36,8 +37,8 @@ public class JSDoubleToSingleQuotedStringIntention extends JSIntention { @Override @Nonnull - public String getText() { - return JSIntentionLocalize.stringDoubleQuotedToSingleQuoted().get(); + public LocalizeValue getText() { + return JSIntentionLocalize.stringDoubleQuotedToSingleQuoted(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSJoinConcatenatedStringLiteralsIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSJoinConcatenatedStringLiteralsIntention.java index 449e652c..475d1833 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSJoinConcatenatedStringLiteralsIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSJoinConcatenatedStringLiteralsIntention.java @@ -27,6 +27,7 @@ import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; @@ -41,8 +42,8 @@ public class JSJoinConcatenatedStringLiteralsIntention extends JSIntention { @Override @Nonnull - public String getText() { - return JSIntentionLocalize.stringJoinConcatenatedStringLiterals().get(); + public LocalizeValue getText() { + return JSIntentionLocalize.stringJoinConcatenatedStringLiterals(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSSingleToDoubleQuotedStringIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSSingleToDoubleQuotedStringIntention.java index 6999720b..2fd021fd 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSSingleToDoubleQuotedStringIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSSingleToDoubleQuotedStringIntention.java @@ -22,6 +22,7 @@ import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; @@ -36,8 +37,8 @@ public class JSSingleToDoubleQuotedStringIntention extends JSIntention { @Override @Nonnull - public String getText() { - return JSIntentionLocalize.stringSingleToDoubleQuotedString().get(); + public LocalizeValue getText() { + return JSIntentionLocalize.stringSingleToDoubleQuotedString(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceIfWithSwitchIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceIfWithSwitchIntention.java index d6371ffa..23bf7220 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceIfWithSwitchIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceIfWithSwitchIntention.java @@ -24,6 +24,7 @@ import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; @@ -52,8 +53,8 @@ public class JSReplaceIfWithSwitchIntention extends JSIntention { @Override @Nonnull - public String getText() { - return JSIntentionLocalize.switchtoifReplaceIfWithSwitch().get(); + public LocalizeValue getText() { + return JSIntentionLocalize.switchtoifReplaceIfWithSwitch(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceSwitchWithIfIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceSwitchWithIfIntention.java index 498ea5ff..9ad1f20d 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceSwitchWithIfIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceSwitchWithIfIntention.java @@ -26,6 +26,7 @@ import consulo.language.psi.PsiManager; import consulo.language.psi.PsiWhiteSpace; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; @@ -58,8 +59,8 @@ public class JSReplaceSwitchWithIfIntention extends JSIntention { @Override @Nonnull - public String getText() { - return JSIntentionLocalize.switchtoifReplaceSwitchWithIf().get(); + public LocalizeValue getText() { + return JSIntentionLocalize.switchtoifReplaceSwitchWithIf(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeElseIfIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeElseIfIntention.java index e645d590..8029b032 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeElseIfIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeElseIfIntention.java @@ -24,6 +24,7 @@ import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; @@ -39,8 +40,8 @@ public class JSMergeElseIfIntention extends JSIntention { @Override @Nonnull - public String getText() { - return JSIntentionLocalize.trivialifMergeElseIf().get(); + public LocalizeValue getText() { + return JSIntentionLocalize.trivialifMergeElseIf(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfAndIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfAndIntention.java index 1327aabc..a4e0ae40 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfAndIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfAndIntention.java @@ -25,6 +25,7 @@ import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; @@ -42,8 +43,8 @@ public class JSMergeIfAndIntention extends JSIntention { @Override @Nonnull - public String getText() { - return JSIntentionLocalize.trivialifMergeIfAnd().get(); + public LocalizeValue getText() { + return JSIntentionLocalize.trivialifMergeIfAnd(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfOrIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfOrIntention.java index 3cc8c917..c25bed92 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfOrIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfOrIntention.java @@ -25,6 +25,7 @@ import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; @@ -39,8 +40,8 @@ public class JSMergeIfOrIntention extends JSIntention { @Override @Nonnull - public String getText() { - return JSIntentionLocalize.trivialifMergeIfOr().get(); + public LocalizeValue getText() { + return JSIntentionLocalize.trivialifMergeIfOr(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeParallelIfsIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeParallelIfsIntention.java index ea22ab92..5b3fd0c1 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeParallelIfsIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeParallelIfsIntention.java @@ -24,6 +24,7 @@ import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; @@ -41,8 +42,8 @@ public class JSMergeParallelIfsIntention extends JSIntention { @Override @Nonnull - public String getText() { - return JSIntentionLocalize.trivialifMergeParallelIfs().get(); + public LocalizeValue getText() { + return JSIntentionLocalize.trivialifMergeParallelIfs(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSRemoveRedundantElseIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSRemoveRedundantElseIntention.java index 365d4796..fd89ad2d 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSRemoveRedundantElseIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSRemoveRedundantElseIntention.java @@ -25,6 +25,7 @@ import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; @@ -40,8 +41,8 @@ public class JSRemoveRedundantElseIntention extends JSIntention { @Override @Nonnull - public String getText() { - return JSIntentionLocalize.trivialifRemoveRedundantElse().get(); + public LocalizeValue getText() { + return JSIntentionLocalize.trivialifRemoveRedundantElse(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSReplaceIfWithConditionalIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSReplaceIfWithConditionalIntention.java index b6574e79..2365c92f 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSReplaceIfWithConditionalIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSReplaceIfWithConditionalIntention.java @@ -24,6 +24,7 @@ import consulo.language.psi.PsiElement; import consulo.language.psi.util.PsiTreeUtil; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; @@ -38,8 +39,8 @@ public class JSReplaceIfWithConditionalIntention extends JSIntention { @Override @Nonnull - public String getText() { - return JSIntentionLocalize.trivialifReplaceIfWithConditional().get(); + public LocalizeValue getText() { + return JSIntentionLocalize.trivialifReplaceIfWithConditional(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSimplifyIfElseIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSimplifyIfElseIntention.java index 9f1dc29c..78167562 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSimplifyIfElseIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSimplifyIfElseIntention.java @@ -23,6 +23,7 @@ import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; @@ -38,8 +39,8 @@ public class JSSimplifyIfElseIntention extends JSIntention { @Nonnull @Override - public String getText() { - return JSIntentionLocalize.trivialifSimplifyIfElse().get(); + public LocalizeValue getText() { + return JSIntentionLocalize.trivialifSimplifyIfElse(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitElseIfIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitElseIfIntention.java index cf5b4d33..666fcc06 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitElseIfIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitElseIfIntention.java @@ -23,6 +23,7 @@ import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; @@ -38,8 +39,8 @@ public class JSSplitElseIfIntention extends JSIntention { @Override @Nonnull - public String getText() { - return JSIntentionLocalize.trivialifSplitElseIf().get(); + public LocalizeValue getText() { + return JSIntentionLocalize.trivialifSplitElseIf(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfAndIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfAndIntention.java index 484da6ca..f1b0f6b6 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfAndIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfAndIntention.java @@ -26,6 +26,7 @@ import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; @@ -42,8 +43,8 @@ public class JSSplitIfAndIntention extends JSIntention { @Override @Nonnull - public String getText() { - return JSIntentionLocalize.trivialifSplitIfAnd().get(); + public LocalizeValue getText() { + return JSIntentionLocalize.trivialifSplitIfAnd(); } @Override diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfOrIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfOrIntention.java index f2e3f8f5..f51450a2 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfOrIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfOrIntention.java @@ -26,6 +26,7 @@ import consulo.language.editor.intention.IntentionMetaData; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; import org.intellij.idea.lang.javascript.intention.JSElementPredicate; import org.intellij.idea.lang.javascript.intention.JSIntention; @@ -42,8 +43,8 @@ public class JSSplitIfOrIntention extends JSIntention { @Override @Nonnull - public String getText() { - return JSIntentionLocalize.trivialifSplitIfOr().get(); + public LocalizeValue getText() { + return JSIntentionLocalize.trivialifSplitIfOr(); } @Override diff --git a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/inspections/PropertyValidationInspection.java b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/inspections/PropertyValidationInspection.java index 787c239b..15ae5c91 100644 --- a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/inspections/PropertyValidationInspection.java +++ b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/inspections/PropertyValidationInspection.java @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package consulo.json.validation.inspections; import com.intellij.lang.javascript.JSTokenTypes; @@ -38,6 +37,7 @@ import consulo.language.psi.PsiModificationTracker; import consulo.language.psi.PsiUtilCore; import consulo.language.psi.util.PsiTreeUtil; +import consulo.localize.LocalizeValue; import consulo.util.collection.ContainerUtil; import consulo.util.lang.StringUtil; import consulo.util.lang.function.PairProcessor; @@ -49,7 +49,7 @@ /** * @author VISTALL - * @since 10.11.2015 + * @since 2015-11-10 */ @ExtensionImpl public class PropertyValidationInspection extends LocalInspectionTool { @@ -338,20 +338,20 @@ else if (o instanceof NativeArray nativeArray) { @Nonnull @Override - public String[] getGroupPath() { - return new String[]{"JSON"}; + public LocalizeValue[] getGroupPath() { + return new LocalizeValue[]{LocalizeValue.localizeTODO("JSON")}; } @Nonnull @Override - public String getGroupDisplayName() { + public LocalizeValue getGroupDisplayName() { throw new UnsupportedOperationException(); } @Nonnull @Override - public String getDisplayName() { - return "Property validation"; + public LocalizeValue getDisplayName() { + return LocalizeValue.localizeTODO("Property validation"); } @Nonnull From 3a5a1346d2bc7afbd68f2c4edb30739f47621209 Mon Sep 17 00:00:00 2001 From: UNV Date: Fri, 10 Oct 2025 13:11:54 +0300 Subject: [PATCH 130/150] Fixed null LocalizeValue in JSMutablyNamedIntention. --- .../lang/javascript/intention/JSMutablyNamedIntention.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSMutablyNamedIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSMutablyNamedIntention.java index 2a0ae625..02074099 100644 --- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSMutablyNamedIntention.java +++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSMutablyNamedIntention.java @@ -23,14 +23,14 @@ import jakarta.annotation.Nullable; public abstract class JSMutablyNamedIntention extends JSIntention { - private LocalizeValue myText; + private LocalizeValue myText = LocalizeValue.empty(); protected abstract LocalizeValue getTextForElement(PsiElement element); @Override @Nonnull public LocalizeValue getText() { - return myText != null ? myText : getBasicText(); + return myText != LocalizeValue.empty() ? myText : getBasicText(); } @Nonnull @@ -38,7 +38,7 @@ public LocalizeValue getText() { @Override public boolean isAvailable(@Nonnull Project project, Editor editor, @Nullable PsiElement node) { - final PsiElement element = findMatchingElement(node); + PsiElement element = findMatchingElement(node); if (element != null) { myText = getTextForElement(element); return true; From 68aece68f213c6fdcd7d0aa044a6e1362b06d6c0 Mon Sep 17 00:00:00 2001 From: UNV Date: Wed, 15 Oct 2025 00:09:05 +0300 Subject: [PATCH 131/150] Fixing NPE in OverlyComplexArithmeticExpressionJSInspection. Refactoring. --- ...mplexArithmeticExpressionJSInspection.java | 110 +++++++----------- ...ArithmeticExpressionJSInspectionState.java | 44 ++++--- 2 files changed, 63 insertions(+), 91 deletions(-) diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexArithmeticExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexArithmeticExpressionJSInspection.java index 37ca2a37..8800159d 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexArithmeticExpressionJSInspection.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexArithmeticExpressionJSInspection.java @@ -10,7 +10,6 @@ import consulo.annotation.component.ExtensionImpl; import consulo.language.ast.IElementType; import consulo.language.editor.inspection.InspectionToolState; -import consulo.language.psi.PsiElement; import consulo.localize.LocalizeValue; import jakarta.annotation.Nonnull; @@ -57,23 +56,27 @@ public BaseInspectionVisitor buildVisitor() { private class Visitor extends BaseInspectionVisitor { @Override + @RequiredReadAction public void visitJSBinaryExpression(@Nonnull JSBinaryExpression expression) { super.visitJSBinaryExpression(expression); checkExpression(expression); } @Override + @RequiredReadAction public void visitJSPrefixExpression(@Nonnull JSPrefixExpression expression) { super.visitJSPrefixExpression(expression); checkExpression(expression); } @Override - public void visitJSParenthesizedExpression(JSParenthesizedExpression expression) { + @RequiredReadAction + public void visitJSParenthesizedExpression(@Nonnull JSParenthesizedExpression expression) { super.visitJSParenthesizedExpression(expression); checkExpression(expression); } + @RequiredReadAction private void checkExpression(JSExpression expression) { if (isParentArithmetic(expression)) { return; @@ -84,13 +87,14 @@ private void checkExpression(JSExpression expression) { if (containsStringConcatenation(expression)) { return; } - final int numTerms = countTerms(expression); - if (numTerms <= myState.m_limit) { + int numTerms = countTerms(expression); + if (numTerms <= myState.myMLimit) { return; } registerError(expression); } + @RequiredReadAction private int countTerms(JSExpression expression) { if (expression == null) { return 0; @@ -98,99 +102,71 @@ private int countTerms(JSExpression expression) { if (!isArithmetic(expression)) { return 1; } - if (expression instanceof JSBinaryExpression) { - final JSBinaryExpression binaryExpression = (JSBinaryExpression) expression; - final JSExpression lhs = binaryExpression.getLOperand(); - final JSExpression rhs = binaryExpression.getROperand(); - return countTerms(lhs) + countTerms(rhs); + if (expression instanceof JSBinaryExpression binaryExpr) { + return countTerms(binaryExpr.getLOperand()) + countTerms(binaryExpr.getROperand()); } - else if (expression instanceof JSPrefixExpression) { - final JSPrefixExpression prefixExpression = (JSPrefixExpression) expression; - final JSExpression operand = prefixExpression.getExpression(); - return countTerms(operand); + else if (expression instanceof JSPrefixExpression prefixExpr) { + return countTerms(prefixExpr.getExpression()); } - else if (expression instanceof JSParenthesizedExpression) { - final JSParenthesizedExpression parenthesizedExpression = (JSParenthesizedExpression) expression; - final JSExpression contents = parenthesizedExpression.getInnerExpression(); - return countTerms(contents); + else if (expression instanceof JSParenthesizedExpression parenthesized) { + return countTerms(parenthesized.getInnerExpression()); } return 1; } + @RequiredReadAction private boolean isParentArithmetic(JSExpression expression) { - final PsiElement parent = expression.getParent(); - if (!(parent instanceof JSExpression)) { - return false; - } - return isArithmetic((JSExpression) parent); + return expression.getParent() instanceof JSExpression parentExpr && isArithmetic(parentExpr); } + @RequiredReadAction private boolean isArithmetic(JSExpression expression) { - if (expression instanceof JSBinaryExpression) { - - final JSBinaryExpression binaryExpression = (JSBinaryExpression) expression; - final IElementType sign = binaryExpression.getOperationSign(); - return OUR_ARITHMETIC_TOKENS.contains(sign); + if (expression instanceof JSBinaryExpression binaryExpr) { + IElementType sign = binaryExpr.getOperationSign(); + return sign != null && OUR_ARITHMETIC_TOKENS.contains(sign); } - else if (expression instanceof JSPrefixExpression) { - final JSPrefixExpression prefixExpression = (JSPrefixExpression) expression; - final IElementType sign = prefixExpression.getOperationSign(); - return OUR_ARITHMETIC_TOKENS.contains(sign); + else if (expression instanceof JSPrefixExpression prefixExpr) { + IElementType sign = prefixExpr.getOperationSign(); + return sign != null && OUR_ARITHMETIC_TOKENS.contains(sign); } - else if (expression instanceof JSParenthesizedExpression) { - final JSParenthesizedExpression parenthesizedExpression = (JSParenthesizedExpression) expression; - final JSExpression contents = parenthesizedExpression.getInnerExpression(); + else if (expression instanceof JSParenthesizedExpression parenthesizedExpression) { + JSExpression contents = parenthesizedExpression.getInnerExpression(); return isArithmetic(contents); } return false; } + @RequiredReadAction private boolean containsStringConcatenation(JSExpression expression) { if (isStringLiteral(expression)) { return true; } - if (expression instanceof JSBinaryExpression) { - - final JSBinaryExpression binaryExpression = (JSBinaryExpression) expression; - final JSExpression lhs = binaryExpression.getLOperand(); - - if (containsStringConcatenation(lhs)) { - return true; - } - final JSExpression rhs = binaryExpression.getROperand(); - return containsStringConcatenation(rhs); + if (expression instanceof JSBinaryExpression binaryExpr) { + return containsStringConcatenation(binaryExpr.getLOperand()) + || containsStringConcatenation(binaryExpr.getROperand()); } - else if (expression instanceof JSPrefixExpression) { - final JSPrefixExpression prefixExpression = (JSPrefixExpression) expression; - final IElementType sign = prefixExpression.getOperationSign(); - return OUR_ARITHMETIC_TOKENS.contains(sign); + else if (expression instanceof JSPrefixExpression prefixExpr) { + IElementType sign = prefixExpr.getOperationSign(); + return sign != null && OUR_ARITHMETIC_TOKENS.contains(sign); } - else if (expression instanceof JSParenthesizedExpression) { - final JSParenthesizedExpression parenthesizedExpression = (JSParenthesizedExpression) expression; - final JSExpression contents = parenthesizedExpression.getInnerExpression(); - return containsStringConcatenation(contents); + else if (expression instanceof JSParenthesizedExpression parenthesized) { + return containsStringConcatenation(parenthesized.getInnerExpression()); } return false; } + @RequiredReadAction private boolean isStringLiteral(JSExpression expression) { - if (expression instanceof JSLiteralExpression) { - final JSLiteralExpression literal = (JSLiteralExpression) expression; - final String text = literal.getText(); + if (expression instanceof JSLiteralExpression literal) { + String text = literal.getText(); return text.startsWith("'") || text.startsWith("\""); } - if (expression instanceof JSReferenceExpression) { - final JSReferenceExpression reference = (JSReferenceExpression) expression; - final PsiElement referent = reference.resolve(); - if (referent instanceof JSVariable) { - final JSVariable variable = (JSVariable) referent; - if (variable.isConst()) { - final JSExpression initializer = variable.getInitializer(); - if (initializer != null) { - final String text = initializer.getText(); - return text.startsWith("'") || text.startsWith("\""); - } - } + if (expression instanceof JSReferenceExpression reference + && reference.resolve() instanceof JSVariable variable && variable.isConst()) { + JSExpression initializer = variable.getInitializer(); + if (initializer != null) { + String text = initializer.getText(); + return text.startsWith("'") || text.startsWith("\""); } } return false; diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexArithmeticExpressionJSInspectionState.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexArithmeticExpressionJSInspectionState.java index da05920e..7d2cb32f 100644 --- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexArithmeticExpressionJSInspectionState.java +++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/OverlyComplexArithmeticExpressionJSInspectionState.java @@ -12,32 +12,28 @@ /** * @author VISTALL - * @since 18/03/2023 + * @since 2023-03-18 */ -public class OverlyComplexArithmeticExpressionJSInspectionState implements InspectionToolState -{ - public int m_limit = 6; +public class OverlyComplexArithmeticExpressionJSInspectionState implements InspectionToolState { + public int myMLimit = 6; - @Nullable - @Override - public UnnamedConfigurable createConfigurable() - { - ConfigurableBuilder builder = ConfigurableBuilder.newBuilder(); - builder.component(() -> Label.create(InspectionJSLocalize.maximumNumberOfTermsParameter())); - builder.intBox(() -> m_limit, value -> m_limit = value); - return builder.buildUnnamed(); - } + @Nullable + @Override + public UnnamedConfigurable createConfigurable() { + return ConfigurableBuilder.newBuilder() + .component(() -> Label.create(InspectionJSLocalize.maximumNumberOfTermsParameter())) + .intBox(() -> myMLimit, value -> myMLimit = value) + .buildUnnamed(); + } - @Nullable - @Override - public OverlyComplexArithmeticExpressionJSInspectionState getState() - { - return this; - } + @Nullable + @Override + public OverlyComplexArithmeticExpressionJSInspectionState getState() { + return this; + } - @Override - public void loadState(OverlyComplexArithmeticExpressionJSInspectionState state) - { - XmlSerializerUtil.copyBean(state, this); - } + @Override + public void loadState(OverlyComplexArithmeticExpressionJSInspectionState state) { + XmlSerializerUtil.copyBean(state, this); + } } From 1d24e9508fe2b132037e7c7939c611909dc2d4a1 Mon Sep 17 00:00:00 2001 From: Valery Semenchuk Date: Sat, 18 Oct 2025 16:04:01 +0400 Subject: [PATCH 132/150] migrate to localize value --- .../javascript/impl/surroundWith/JSWithBlockSurrounder.java | 5 +++-- .../impl/surroundWith/JSWithDoWhileSurrounder.java | 5 +++-- .../javascript/impl/surroundWith/JSWithForSurrounder.java | 5 +++-- .../surroundWith/JSWithFunctionExpressionSurrounder.java | 5 +++-- .../impl/surroundWith/JSWithFunctionSurrounder.java | 5 +++-- .../javascript/impl/surroundWith/JSWithIfElseSurrounder.java | 5 +++-- .../javascript/impl/surroundWith/JSWithIfSurrounder.java | 5 +++-- .../impl/surroundWith/JSWithParenthesesSurrounder.java | 5 +++-- .../impl/surroundWith/JSWithTryCatchFinallySurrounder.java | 5 +++-- .../impl/surroundWith/JSWithTryCatchSurrounder.java | 5 +++-- .../impl/surroundWith/JSWithTryFinallySurrounder.java | 5 +++-- .../javascript/impl/surroundWith/JSWithWhileSurrounder.java | 5 +++-- .../javascript/impl/surroundWith/JSWithWithSurrounder.java | 5 +++-- 13 files changed, 39 insertions(+), 26 deletions(-) diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithBlockSurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithBlockSurrounder.java index 375c4d87..a432e959 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithBlockSurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithBlockSurrounder.java @@ -19,6 +19,7 @@ import consulo.annotation.access.RequiredReadAction; import consulo.document.util.TextRange; import consulo.language.ast.ASTNode; +import consulo.localize.LocalizeValue; import consulo.project.Project; import consulo.language.psi.PsiElement; @@ -28,8 +29,8 @@ */ public class JSWithBlockSurrounder extends JSStatementSurrounder { @Override - public String getTemplateDescription() { - return "{ }"; + public LocalizeValue getTemplateDescription() { + return LocalizeValue.localizeTODO("{ }"); } @Override diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithDoWhileSurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithDoWhileSurrounder.java index 14ac48de..2a3f142d 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithDoWhileSurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithDoWhileSurrounder.java @@ -22,6 +22,7 @@ import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.ast.ASTNode; import consulo.language.psi.PsiElement; +import consulo.localize.LocalizeValue; import consulo.project.Project; /** @@ -30,8 +31,8 @@ */ public class JSWithDoWhileSurrounder extends JSStatementSurrounder { @Override - public String getTemplateDescription() { - return JavaScriptLocalize.javascriptSurroundWithDoWhile().get(); + public LocalizeValue getTemplateDescription() { + return JavaScriptLocalize.javascriptSurroundWithDoWhile(); } @Override diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithForSurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithForSurrounder.java index c0aaecf0..70f453bf 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithForSurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithForSurrounder.java @@ -25,6 +25,7 @@ import consulo.language.ast.ASTNode; import consulo.language.psi.PsiElement; import consulo.language.psi.PsiWhiteSpace; +import consulo.localize.LocalizeValue; import consulo.project.Project; /** @@ -33,8 +34,8 @@ */ public class JSWithForSurrounder extends JSStatementSurrounder { @Override - public String getTemplateDescription() { - return JavaScriptLocalize.javascriptSurroundWithFor().get(); + public LocalizeValue getTemplateDescription() { + return JavaScriptLocalize.javascriptSurroundWithFor(); } @Override diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithFunctionExpressionSurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithFunctionExpressionSurrounder.java index 5171456b..9aee08d0 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithFunctionExpressionSurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithFunctionExpressionSurrounder.java @@ -25,12 +25,13 @@ import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.ast.ASTNode; import consulo.language.psi.PsiElement; +import consulo.localize.LocalizeValue; import consulo.project.Project; public class JSWithFunctionExpressionSurrounder extends JSStatementSurrounder { @Override - public String getTemplateDescription() { - return JavaScriptLocalize.javascriptSurroundWithFunctionExpression().get(); + public LocalizeValue getTemplateDescription() { + return JavaScriptLocalize.javascriptSurroundWithFunctionExpression(); } @Override diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithFunctionSurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithFunctionSurrounder.java index 9403cb83..055f8da2 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithFunctionSurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithFunctionSurrounder.java @@ -22,12 +22,13 @@ import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.ast.ASTNode; import consulo.language.psi.PsiElement; +import consulo.localize.LocalizeValue; import consulo.project.Project; public class JSWithFunctionSurrounder extends JSStatementSurrounder { @Override - public String getTemplateDescription() { - return JavaScriptLocalize.javascriptSurroundWithFunction().get(); + public LocalizeValue getTemplateDescription() { + return JavaScriptLocalize.javascriptSurroundWithFunction(); } @Override diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithIfElseSurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithIfElseSurrounder.java index 327bc4bc..14e1dccf 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithIfElseSurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithIfElseSurrounder.java @@ -18,6 +18,7 @@ import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.psi.PsiElement; +import consulo.localize.LocalizeValue; import consulo.project.Project; /** @@ -26,8 +27,8 @@ */ public class JSWithIfElseSurrounder extends JSWithIfSurrounder { @Override - public String getTemplateDescription() { - return JavaScriptLocalize.javascriptSurroundWithIfElse().get(); + public LocalizeValue getTemplateDescription() { + return JavaScriptLocalize.javascriptSurroundWithIfElse(); } @Override diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithIfSurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithIfSurrounder.java index 4a5ce6f6..944c28dd 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithIfSurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithIfSurrounder.java @@ -22,6 +22,7 @@ import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.ast.ASTNode; import consulo.language.psi.PsiElement; +import consulo.localize.LocalizeValue; import consulo.project.Project; /** @@ -30,8 +31,8 @@ */ public class JSWithIfSurrounder extends JSStatementSurrounder { @Override - public String getTemplateDescription() { - return JavaScriptLocalize.javascriptSurroundWithIf().get(); + public LocalizeValue getTemplateDescription() { + return JavaScriptLocalize.javascriptSurroundWithIf(); } @Override diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithParenthesesSurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithParenthesesSurrounder.java index 5d9c66dc..b9576dea 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithParenthesesSurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithParenthesesSurrounder.java @@ -26,6 +26,7 @@ import consulo.language.editor.surroundWith.Surrounder; import consulo.language.psi.PsiElement; import consulo.language.util.IncorrectOperationException; +import consulo.localize.LocalizeValue; import consulo.project.Project; import jakarta.annotation.Nonnull; @@ -37,8 +38,8 @@ */ public class JSWithParenthesesSurrounder implements Surrounder { @Override - public String getTemplateDescription() { - return JavaScriptLocalize.javascriptSurroundWithParenthesis().get(); + public LocalizeValue getTemplateDescription() { + return JavaScriptLocalize.javascriptSurroundWithParenthesis(); } @Override diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryCatchFinallySurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryCatchFinallySurrounder.java index fe0f766e..a7df3aa7 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryCatchFinallySurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryCatchFinallySurrounder.java @@ -25,6 +25,7 @@ import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.ast.ASTNode; import consulo.language.psi.PsiElement; +import consulo.localize.LocalizeValue; import consulo.project.Project; import jakarta.annotation.Nonnull; @@ -34,8 +35,8 @@ */ public class JSWithTryCatchFinallySurrounder extends JSStatementSurrounder { @Override - public String getTemplateDescription() { - return JavaScriptLocalize.javascriptSurroundWithTryCatchFinally().get(); + public LocalizeValue getTemplateDescription() { + return JavaScriptLocalize.javascriptSurroundWithTryCatchFinally(); } @Override diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryCatchSurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryCatchSurrounder.java index 9a1893bf..ce116642 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryCatchSurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryCatchSurrounder.java @@ -19,6 +19,7 @@ import consulo.annotation.access.RequiredReadAction; import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.psi.PsiElement; +import consulo.localize.LocalizeValue; import consulo.project.Project; /** @@ -27,8 +28,8 @@ */ public class JSWithTryCatchSurrounder extends JSWithTryCatchFinallySurrounder { @Override - public String getTemplateDescription() { - return JavaScriptLocalize.javascriptSurroundWithTryCatch().get(); + public LocalizeValue getTemplateDescription() { + return JavaScriptLocalize.javascriptSurroundWithTryCatch(); } @Override diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryFinallySurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryFinallySurrounder.java index 1c0db9a7..7b393c2c 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryFinallySurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryFinallySurrounder.java @@ -19,6 +19,7 @@ import consulo.annotation.access.RequiredReadAction; import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.psi.PsiElement; +import consulo.localize.LocalizeValue; import consulo.project.Project; /** @@ -27,8 +28,8 @@ */ public class JSWithTryFinallySurrounder extends JSWithTryCatchFinallySurrounder { @Override - public String getTemplateDescription() { - return JavaScriptLocalize.javascriptSurroundWithTryFinally().get(); + public LocalizeValue getTemplateDescription() { + return JavaScriptLocalize.javascriptSurroundWithTryFinally(); } @Override diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithWhileSurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithWhileSurrounder.java index 750da8ec..3c0a0341 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithWhileSurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithWhileSurrounder.java @@ -22,6 +22,7 @@ import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.ast.ASTNode; import consulo.language.psi.PsiElement; +import consulo.localize.LocalizeValue; import consulo.project.Project; /** @@ -30,8 +31,8 @@ */ public class JSWithWhileSurrounder extends JSStatementSurrounder { @Override - public String getTemplateDescription() { - return JavaScriptLocalize.javascriptSurroundWithWhile().get(); + public LocalizeValue getTemplateDescription() { + return JavaScriptLocalize.javascriptSurroundWithWhile(); } @Override diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithWithSurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithWithSurrounder.java index d02ddb1d..9c33351e 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithWithSurrounder.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithWithSurrounder.java @@ -22,6 +22,7 @@ import consulo.javascript.localize.JavaScriptLocalize; import consulo.language.ast.ASTNode; import consulo.language.psi.PsiElement; +import consulo.localize.LocalizeValue; import consulo.project.Project; /** @@ -30,8 +31,8 @@ */ public class JSWithWithSurrounder extends JSStatementSurrounder { @Override - public String getTemplateDescription() { - return JavaScriptLocalize.javascriptSurroundWithWith().get(); + public LocalizeValue getTemplateDescription() { + return JavaScriptLocalize.javascriptSurroundWithWith(); } @Override From 03e5b436f906b9f0bb13c0d9e726b4f7cfcf7dca Mon Sep 17 00:00:00 2001 From: Valery Semenchuk Date: Sun, 19 Oct 2025 22:03:54 +0400 Subject: [PATCH 133/150] update debug changes --- .../run/debug/v8/V8BaseDebugProcess.java | 10 +-- .../run/debug/v8/V8DebugProcess.java | 65 +++++++++---------- 2 files changed, 35 insertions(+), 40 deletions(-) diff --git a/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8BaseDebugProcess.java b/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8BaseDebugProcess.java index 80059353..3c67500b 100644 --- a/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8BaseDebugProcess.java +++ b/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8BaseDebugProcess.java @@ -34,6 +34,7 @@ import consulo.javascript.debugger.JavaScriptLineBreakpointType; import consulo.javascript.debugger.JavaScriptListPanel; import consulo.javascript.icon.JavaScriptIconGroup; +import consulo.localize.LocalizeValue; import consulo.process.ExecutionException; import consulo.process.ProcessHandler; import consulo.ui.ex.awt.UIUtil; @@ -221,17 +222,18 @@ public void registerAdditionalContent(@Nonnull RunnerLayoutUi ui) { }; } + @Nonnull @Override - public String getCurrentStateMessage() { + public LocalizeValue getCurrentStateMessage() { if (myVm == null) { - return XDebuggerLocalize.debuggerStateMessageDisconnected().get(); + return XDebuggerLocalize.debuggerStateMessageDisconnected(); } else { if (myVm.isAttached()) { - return "Attached"; + return LocalizeValue.localizeTODO("Attached"); } else { - return XDebuggerLocalize.debuggerStateMessageDisconnected().get(); + return XDebuggerLocalize.debuggerStateMessageDisconnected(); } } } diff --git a/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8DebugProcess.java b/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8DebugProcess.java index 32d71423..7abd4ab7 100644 --- a/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8DebugProcess.java +++ b/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8DebugProcess.java @@ -20,6 +20,7 @@ import consulo.execution.ExecutionResult; import consulo.execution.debug.XDebugSession; import consulo.execution.debug.localize.XDebuggerLocalize; +import consulo.localize.LocalizeValue; import consulo.process.ExecutionException; import jakarta.annotation.Nonnull; import org.chromium.sdk.JavascriptVmFactory; @@ -32,43 +33,35 @@ * @since 20.03.14 */ @UsedInPlugin -public class V8DebugProcess extends V8BaseDebugProcess -{ - public V8DebugProcess(@Nonnull XDebugSession session, ExecutionResult result, int port) throws ExecutionException - { - super(session, result); +public class V8DebugProcess extends V8BaseDebugProcess { + public V8DebugProcess(@Nonnull XDebugSession session, ExecutionResult result, int port) throws ExecutionException { + super(session, result); - myVm = JavascriptVmFactory.getInstance().createStandalone(new InetSocketAddress("localhost", port), null); - } + myVm = JavascriptVmFactory.getInstance().createStandalone(new InetSocketAddress("localhost", port), null); + } - @UsedInPlugin - public void attach() throws Exception - { - myVm.attach(new V8DebugEventListener(this)); - } + @UsedInPlugin + public void attach() throws Exception { + myVm.attach(new V8DebugEventListener(this)); + } - @Override - public String getCurrentStateMessage() - { - if(myVm == null) - { - return XDebuggerLocalize.debuggerStateMessageDisconnected().get(); - } - else - { - if(myVm.isAttached()) - { - return "Attached"; - } - else - { - String disconnectReason = myVm.getDisconnectReason(); - if(disconnectReason == null) - { - return XDebuggerLocalize.debuggerStateMessageDisconnected().get(); - } - return "Disconnected: " + disconnectReason; - } - } - } + @Nonnull + @Override + public LocalizeValue getCurrentStateMessage() { + if (myVm == null) { + return XDebuggerLocalize.debuggerStateMessageDisconnected(); + } + else { + if (myVm.isAttached()) { + return LocalizeValue.localizeTODO("Attached"); + } + else { + String disconnectReason = myVm.getDisconnectReason(); + if (disconnectReason == null) { + return XDebuggerLocalize.debuggerStateMessageDisconnected(); + } + return LocalizeValue.localizeTODO("Disconnected: " + disconnectReason); + } + } + } } From 8710b02a5b3a73e9cbd1d8a978fb76f46a200587 Mon Sep 17 00:00:00 2001 From: Valery Semenchuk Date: Sun, 7 Dec 2025 13:26:23 +0200 Subject: [PATCH 134/150] migrate to dev --- base-api/pom.xml | 2 +- base-impl/pom.xml | 2 +- debugger/debugger-impl/pom.xml | 2 +- debugger/v8-debugger-impl/pom.xml | 2 +- inspections/pom.xml | 2 +- intentions/pom.xml | 2 +- lang-version-impl/actionscript-impl/pom.xml | 2 +- lang-version-impl/ecmascript-impl/pom.xml | 2 +- lang-version-impl/ecmascript4-impl/pom.xml | 2 +- lang-version-impl/javascript16-impl/pom.xml | 2 +- lang-version-impl/javascript17-impl/pom.xml | 2 +- lang-version-impl/javascript18-impl/pom.xml | 2 +- lang-version-impl/json-javascript-impl/pom.xml | 2 +- lang-version-impl/typescript-impl/pom.xml | 2 +- plugin/pom.xml | 2 +- pom.xml | 2 +- regexp-impl/pom.xml | 2 +- web-browser-impl/pom.xml | 2 +- 18 files changed, 18 insertions(+), 18 deletions(-) diff --git a/base-api/pom.xml b/base-api/pom.xml index 24095d66..b7bc90b0 100644 --- a/base-api/pom.xml +++ b/base-api/pom.xml @@ -32,7 +32,7 @@ consulo - https://maven.consulo.io/repository/snapshots/ + https://maven.consulo.dev/repository/snapshots/ true interval:60 diff --git a/base-impl/pom.xml b/base-impl/pom.xml index 1aad098f..48887e2e 100644 --- a/base-impl/pom.xml +++ b/base-impl/pom.xml @@ -50,7 +50,7 @@ consulo - https://maven.consulo.io/repository/snapshots/ + https://maven.consulo.dev/repository/snapshots/ true always diff --git a/debugger/debugger-impl/pom.xml b/debugger/debugger-impl/pom.xml index d61b7628..bfe4827d 100644 --- a/debugger/debugger-impl/pom.xml +++ b/debugger/debugger-impl/pom.xml @@ -32,7 +32,7 @@ consulo - https://maven.consulo.io/repository/snapshots/ + https://maven.consulo.dev/repository/snapshots/ true interval:60 diff --git a/debugger/v8-debugger-impl/pom.xml b/debugger/v8-debugger-impl/pom.xml index 219d1689..5cca4523 100644 --- a/debugger/v8-debugger-impl/pom.xml +++ b/debugger/v8-debugger-impl/pom.xml @@ -32,7 +32,7 @@ consulo - https://maven.consulo.io/repository/snapshots/ + https://maven.consulo.dev/repository/snapshots/ true interval:60 diff --git a/inspections/pom.xml b/inspections/pom.xml index 69216c1d..0e894a39 100644 --- a/inspections/pom.xml +++ b/inspections/pom.xml @@ -32,7 +32,7 @@ consulo - https://maven.consulo.io/repository/snapshots/ + https://maven.consulo.dev/repository/snapshots/ true interval:60 diff --git a/intentions/pom.xml b/intentions/pom.xml index ab35b940..817d978e 100644 --- a/intentions/pom.xml +++ b/intentions/pom.xml @@ -32,7 +32,7 @@ consulo - https://maven.consulo.io/repository/snapshots/ + https://maven.consulo.dev/repository/snapshots/ true interval:60 diff --git a/lang-version-impl/actionscript-impl/pom.xml b/lang-version-impl/actionscript-impl/pom.xml index 92eca256..4b9975c1 100644 --- a/lang-version-impl/actionscript-impl/pom.xml +++ b/lang-version-impl/actionscript-impl/pom.xml @@ -32,7 +32,7 @@ consulo - https://maven.consulo.io/repository/snapshots/ + https://maven.consulo.dev/repository/snapshots/ true interval:60 diff --git a/lang-version-impl/ecmascript-impl/pom.xml b/lang-version-impl/ecmascript-impl/pom.xml index 59c8795b..dd2a4e34 100644 --- a/lang-version-impl/ecmascript-impl/pom.xml +++ b/lang-version-impl/ecmascript-impl/pom.xml @@ -32,7 +32,7 @@ consulo - https://maven.consulo.io/repository/snapshots/ + https://maven.consulo.dev/repository/snapshots/ true always diff --git a/lang-version-impl/ecmascript4-impl/pom.xml b/lang-version-impl/ecmascript4-impl/pom.xml index 85c15b93..29438c5b 100644 --- a/lang-version-impl/ecmascript4-impl/pom.xml +++ b/lang-version-impl/ecmascript4-impl/pom.xml @@ -33,7 +33,7 @@ consulo - https://maven.consulo.io/repository/snapshots/ + https://maven.consulo.dev/repository/snapshots/ true interval:60 diff --git a/lang-version-impl/javascript16-impl/pom.xml b/lang-version-impl/javascript16-impl/pom.xml index aa705801..cfcf5dea 100644 --- a/lang-version-impl/javascript16-impl/pom.xml +++ b/lang-version-impl/javascript16-impl/pom.xml @@ -32,7 +32,7 @@ consulo - https://maven.consulo.io/repository/snapshots/ + https://maven.consulo.dev/repository/snapshots/ true interval:60 diff --git a/lang-version-impl/javascript17-impl/pom.xml b/lang-version-impl/javascript17-impl/pom.xml index 07a4cd2b..5682cc44 100644 --- a/lang-version-impl/javascript17-impl/pom.xml +++ b/lang-version-impl/javascript17-impl/pom.xml @@ -32,7 +32,7 @@ consulo - https://maven.consulo.io/repository/snapshots/ + https://maven.consulo.dev/repository/snapshots/ true interval:60 diff --git a/lang-version-impl/javascript18-impl/pom.xml b/lang-version-impl/javascript18-impl/pom.xml index a56a5593..513cfbcc 100644 --- a/lang-version-impl/javascript18-impl/pom.xml +++ b/lang-version-impl/javascript18-impl/pom.xml @@ -32,7 +32,7 @@ consulo - https://maven.consulo.io/repository/snapshots/ + https://maven.consulo.dev/repository/snapshots/ true interval:60 diff --git a/lang-version-impl/json-javascript-impl/pom.xml b/lang-version-impl/json-javascript-impl/pom.xml index 02047047..e7f69813 100644 --- a/lang-version-impl/json-javascript-impl/pom.xml +++ b/lang-version-impl/json-javascript-impl/pom.xml @@ -32,7 +32,7 @@ consulo - https://maven.consulo.io/repository/snapshots/ + https://maven.consulo.dev/repository/snapshots/ true interval:60 diff --git a/lang-version-impl/typescript-impl/pom.xml b/lang-version-impl/typescript-impl/pom.xml index 680b80d6..18e4bbab 100644 --- a/lang-version-impl/typescript-impl/pom.xml +++ b/lang-version-impl/typescript-impl/pom.xml @@ -32,7 +32,7 @@ consulo - https://maven.consulo.io/repository/snapshots/ + https://maven.consulo.dev/repository/snapshots/ true interval:60 diff --git a/plugin/pom.xml b/plugin/pom.xml index d749a997..4f94d8df 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -32,7 +32,7 @@ consulo - https://maven.consulo.io/repository/snapshots/ + https://maven.consulo.dev/repository/snapshots/ true interval:60 diff --git a/pom.xml b/pom.xml index 246448a6..67f38dcf 100644 --- a/pom.xml +++ b/pom.xml @@ -28,7 +28,7 @@ consulo - https://maven.consulo.io/repository/snapshots/ + https://maven.consulo.dev/repository/snapshots/ true interval:60 diff --git a/regexp-impl/pom.xml b/regexp-impl/pom.xml index 7e6beacc..de8bd5d2 100644 --- a/regexp-impl/pom.xml +++ b/regexp-impl/pom.xml @@ -32,7 +32,7 @@ consulo - https://maven.consulo.io/repository/snapshots/ + https://maven.consulo.dev/repository/snapshots/ true interval:60 diff --git a/web-browser-impl/pom.xml b/web-browser-impl/pom.xml index 17aeac49..0a293587 100644 --- a/web-browser-impl/pom.xml +++ b/web-browser-impl/pom.xml @@ -32,7 +32,7 @@ consulo - https://maven.consulo.io/repository/snapshots/ + https://maven.consulo.dev/repository/snapshots/ true interval:60 From c65a3f3fbd4835cbd6450200c44729148b191b7a Mon Sep 17 00:00:00 2001 From: UNV Date: Sun, 7 Dec 2025 22:37:34 +0300 Subject: [PATCH 135/150] Compilation fix for calling ConflictsDialog. Some refactoring. --- .../refactoring/JSBaseIntroduceDialog.java | 54 +++++++++---------- .../JSIntroduceConstantDialog.java | 4 +- .../JSIntroduceFieldDialog.java | 8 +-- .../JSIntroduceVariableDialog.java | 4 +- 4 files changed, 35 insertions(+), 35 deletions(-) diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseIntroduceDialog.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseIntroduceDialog.java index 13698493..8ab69979 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseIntroduceDialog.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/JSBaseIntroduceDialog.java @@ -51,38 +51,38 @@ */ public abstract class JSBaseIntroduceDialog extends DialogWrapper implements BaseIntroduceSettings { private final Project myProject; - private final JSExpression[] myOccurences; - protected final JSExpression myMainOccurence; + private final JSExpression[] myOccurrences; + protected final JSExpression myMainOccurrence; private Alarm myAlarm = new Alarm(Alarm.ThreadToUse.SWING_THREAD); @RequiredUIAccess protected JSBaseIntroduceDialog( Project project, - JSExpression[] occurences, - JSExpression mainOccurence, - LocalizeValue title + JSExpression[] occurrences, + JSExpression mainOccurrence, + @Nonnull LocalizeValue title ) { super(project, false); myProject = project; - myOccurences = occurences; - myMainOccurence = mainOccurence; + myOccurrences = occurrences; + myMainOccurrence = mainOccurrence; setTitle(title); } @RequiredReadAction protected void doInit() { JCheckBox replaceAllCheckBox = getReplaceAllCheckBox(); - if (myOccurences.length > 1) { - replaceAllCheckBox.setText(JavaScriptLocalize.javascriptIntroduceVariableReplaceAllOccurrences(myOccurences.length).get()); + if (myOccurrences.length > 1) { + replaceAllCheckBox.setText(JavaScriptLocalize.javascriptIntroduceVariableReplaceAllOccurrences(myOccurrences.length).get()); } else { replaceAllCheckBox.setVisible(false); } JTextField nameField = getNameField(); - nameField.setText(suggestCandidateName(myMainOccurence)); + nameField.setText(suggestCandidateName(myMainOccurrence)); nameField.selectAll(); nameField.addKeyListener(new KeyAdapter() { @@ -97,7 +97,7 @@ public void keyPressed(KeyEvent e) { JComboBox typeField = getVarTypeField(); List possibleTypes = new ArrayList<>(); - String type = JSResolveUtil.getExpressionType(myMainOccurence, myMainOccurence.getContainingFile()); + String type = JSResolveUtil.getExpressionType(myMainOccurrence, myMainOccurrence.getContainingFile()); possibleTypes.add(type); typeField.setModel(new DefaultComboBoxModel(possibleTypes.toArray(new Object[possibleTypes.size()]))); @@ -108,18 +108,18 @@ public void keyPressed(KeyEvent e) { } @RequiredReadAction - protected String suggestCandidateName(JSExpression mainOccurence) { - String s = evaluateCandidate(mainOccurence); + protected String suggestCandidateName(JSExpression mainOccurrence) { + String s = evaluateCandidate(mainOccurrence); return s != null ? s.replace('.', '_') : null; } @RequiredReadAction - private static String evaluateCandidate(JSExpression mainOccurence) { - if (mainOccurence instanceof JSCallExpression call) { - mainOccurence = call.getMethodExpression(); + private static String evaluateCandidate(JSExpression mainOccurrence) { + if (mainOccurrence instanceof JSCallExpression call) { + mainOccurrence = call.getMethodExpression(); } - if (mainOccurence instanceof JSReferenceExpression refExpr) { + if (mainOccurrence instanceof JSReferenceExpression refExpr) { ResolveResult[] results = refExpr.multiResolve(false); if (results.length > 0) { @@ -127,30 +127,30 @@ private static String evaluateCandidate(JSExpression mainOccurence) { if (element instanceof JSFunction function) { String typeString = function.getReturnTypeString(); - if (isValidIdentifier(typeString, mainOccurence)) { + if (isValidIdentifier(typeString, refExpr)) { return typeString; } return function.getName(); } else if (element instanceof JSVariable variable) { String typeString = variable.getTypeString(); - if (isValidIdentifier(typeString, mainOccurence)) { + if (isValidIdentifier(typeString, refExpr)) { return typeString; } return typeString; } } - return ((JSReferenceExpression)mainOccurence).getReferencedName(); + return refExpr.getReferencedName(); } - else if (mainOccurence.getParent() instanceof JSArgumentList) { - JSParameter param = JSResolveUtil.findParameterForUsedArgument(mainOccurence, (JSArgumentList)mainOccurence.getParent()); + else if (mainOccurrence.getParent() instanceof JSArgumentList argList) { + JSParameter param = JSResolveUtil.findParameterForUsedArgument(mainOccurrence, argList); if (param != null) { return param.getName(); } } - return JSResolveUtil.getExpressionType(mainOccurence, mainOccurence.getContainingFile()); + return JSResolveUtil.getExpressionType(mainOccurrence, mainOccurrence.getContainingFile()); } @RequiredReadAction @@ -172,7 +172,7 @@ private void initiateValidation() { myAlarm.cancelAllRequests(); myAlarm.addRequest( () -> { - final String nameCandidate = getNameField().getText(); + String nameCandidate = getNameField().getText(); setOKActionEnabled(nameCandidate.length() != 0 && isValidName(nameCandidate)); }, 100, @@ -214,7 +214,7 @@ protected void doOKAction() { @RequiredUIAccess private boolean checkConflicts(String name) { - PsiElement tmp = isReplaceAllOccurences() ? PsiTreeUtil.findCommonParent(myOccurences) : myMainOccurence; + PsiElement tmp = isReplaceAllOccurences() ? PsiTreeUtil.findCommonParent(myOccurrences) : myMainOccurrence; assert tmp != null; JSElement scope = PsiTreeUtil.getNonStrictParentOfType(tmp, JSBlockStatement.class, JSFile.class, JSEmbeddedContentImpl.class); assert scope != null; @@ -264,7 +264,7 @@ private boolean showConflictsDialog(JSNamedElement existing, String name) { LocalizeValue message = existing instanceof JSFunction ? JavaScriptLocalize.javascriptIntroduceVariableFunctionAlreadyExists(CommonRefactoringUtil.htmlEmphasize(name)) : JavaScriptLocalize.javascriptIntroduceVariableVariableAlreadyExists(CommonRefactoringUtil.htmlEmphasize(name)); - ConflictsDialog conflictsDialog = new ConflictsDialog(myProject, message.get()); + ConflictsDialog conflictsDialog = new ConflictsDialog(myProject, message); conflictsDialog.show(); return conflictsDialog.isOK(); } @@ -285,7 +285,7 @@ public String getVariableType() { } private boolean isValidName(String name) { - PsiFile containingFile = myMainOccurence.getContainingFile(); + PsiFile containingFile = myMainOccurrence.getContainingFile(); return NamesValidator.forLanguage(containingFile.getLanguage()).isIdentifier(name, myProject); } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceConstant/JSIntroduceConstantDialog.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceConstant/JSIntroduceConstantDialog.java index 602ae5a7..685f703e 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceConstant/JSIntroduceConstantDialog.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceConstant/JSIntroduceConstantDialog.java @@ -86,7 +86,7 @@ public JComboBox getVarTypeField() { @Override @RequiredReadAction - protected String suggestCandidateName(JSExpression mainOccurence) { - return super.suggestCandidateName(mainOccurence).toUpperCase(); + protected String suggestCandidateName(JSExpression mainOccurrence) { + return super.suggestCandidateName(mainOccurrence).toUpperCase(); } } diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceField/JSIntroduceFieldDialog.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceField/JSIntroduceFieldDialog.java index 7d66126f..80440c96 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceField/JSIntroduceFieldDialog.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceField/JSIntroduceFieldDialog.java @@ -64,7 +64,7 @@ protected void doInit() { super.doInit(); final SimpleReference localContextDependent = new SimpleReference<>(); - myMainOccurence.accept(new JSElementVisitor() { + myMainOccurrence.accept(new JSElementVisitor() { @Override @RequiredReadAction public void visitJSReferenceExpression(@Nonnull JSReferenceExpression node) { @@ -160,9 +160,9 @@ protected void doOKAction() { @Override @RequiredReadAction - protected String suggestCandidateName(JSExpression mainOccurence) { - String s = super.suggestCandidateName(mainOccurence); - JSCodeStyleSettings jsCodeStyleSettings = CodeStyleSettingsManager.getSettings(mainOccurence.getProject()) + protected String suggestCandidateName(JSExpression mainOccurrence) { + String s = super.suggestCandidateName(mainOccurrence); + JSCodeStyleSettings jsCodeStyleSettings = CodeStyleSettingsManager.getSettings(mainOccurrence.getProject()) .getCustomSettings(JSCodeStyleSettings.class); if (jsCodeStyleSettings.FIELD_PREFIX.length() > 0) { return jsCodeStyleSettings.FIELD_PREFIX + s; diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceVariable/JSIntroduceVariableDialog.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceVariable/JSIntroduceVariableDialog.java index f6754041..61eae939 100644 --- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceVariable/JSIntroduceVariableDialog.java +++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceVariable/JSIntroduceVariableDialog.java @@ -105,7 +105,7 @@ public IntroducedVarType getIntroducedVarType() { @Override @RequiredReadAction - protected String suggestCandidateName(JSExpression mainOccurence) { - return StringUtil.decapitalize(super.suggestCandidateName(mainOccurence)); + protected String suggestCandidateName(JSExpression mainOccurrence) { + return StringUtil.decapitalize(super.suggestCandidateName(mainOccurrence)); } } From 16ea5a4236ac91f92b85d1a76e092038e6ab14a1 Mon Sep 17 00:00:00 2001 From: Valery Semenchuk Date: Thu, 25 Dec 2025 17:10:37 +0200 Subject: [PATCH 136/150] final cleanup --- .../javascript/index/JavaScriptIndexer.java | 2 +- .../documentation/JSDocumentationBuilder.java | 42 +-- .../documentation/JSDocumentationUtils.java | 40 +-- .../lang/javascript/DialectOptionHolder.java | 2 +- .../lang/javascript/JSElementTypes.java | 2 +- .../lang/javascript/JSFlexAdapter.java | 2 +- .../lang/javascript/JSLanguageInjector.java | 84 +++--- .../lang/javascript/JSTokenTypes.java | 14 +- .../JavaScriptHighlightingLexer.java | 8 +- .../javascript/JavaScriptSupportLoader.java | 14 +- .../javascript/flex/XmlBackedJSClassImpl.java | 2 +- .../JavaScriptHighlightingLexer.java | 6 +- .../javascript/index/JSItemPresentation.java | 4 +- .../lang/javascript/index/JSSymbolUtil.java | 2 +- .../javascript/index/JavaScriptIndex.java | 6 +- .../CreateJSFunctionOrMethodFix.java | 10 +- .../lang/javascript/parsing/JSDocParsing.java | 22 +- .../JSStatementWithLabelReferenceImpl.java | 2 +- .../psi/resolve/BaseJSSymbolProcessor.java | 140 ++++----- .../psi/resolve/JSImportHandlingUtil.java | 100 +++---- .../JSImportedElementResolveResult.java | 2 +- .../psi/resolve/ResolveProcessor.java | 72 ++--- .../psi/resolve/VariantsProcessor.java | 56 ++-- .../psi/resolve/WalkUpResolveProcessor.java | 48 ++-- .../stubs/impl/JSAttributeListStubImpl.java | 14 +- .../JSAttributeNameValuePairStubImpl.java | 2 +- .../psi/stubs/impl/JSAttributeStubImpl.java | 2 +- .../psi/stubs/impl/JSClassStubImpl.java | 4 +- .../psi/stubs/impl/JSFunctionStubImpl.java | 10 +- .../stubs/impl/JSImportStatementStubImpl.java | 6 +- .../impl/JSIncludeDirectiveStubImpl.java | 6 +- .../psi/stubs/impl/JSNamedObjectStubBase.java | 2 +- .../psi/stubs/impl/JSParameterStubImpl.java | 4 +- .../stubs/impl/JSQualifiedObjectStubBase.java | 4 +- .../stubs/impl/JSReferenceListStubImpl.java | 6 +- .../stubs/impl/JSVariableStubBaseImpl.java | 8 +- .../lang/javascript/psi/util/JSUtils.java | 20 +- .../javascript/types/JSFileElementType.java | 6 +- .../types/JSFunctionElementType.java | 4 +- .../types/JSVarStatementElementType.java | 2 +- .../types/JSVariableElementType.java | 6 +- .../validation/JSUnusedImportsHelper.java | 16 +- .../impl/language/psi/JSStubElementType.java | 2 +- .../lang/lexer/JavaScriptFlexAdapter.java | 2 +- .../lang/parsing/ExpressionParsing.java | 98 +++---- .../lang/parsing/FunctionParsing.java | 10 +- .../javascript/lang/parsing/JSXParser.java | 28 +- .../lang/parsing/JavaScriptParser.java | 2 +- .../javascript/lang/parsing/Parsing.java | 4 +- .../lang/parsing/StatementParsing.java | 122 ++++---- .../lang/psi/impl/resolve/ResolveHelper.java | 2 +- .../types/JSQualifiedStubElementType.java | 8 +- .../debugger/JSDebuggerSupportUtils.java | 32 +-- .../run/debug/v8/V8BaseDebugProcess.java | 2 +- .../com/sixrr/inspectjs/BaseInspection.java | 10 +- .../inspectjs/BaseInspectionVisitor.java | 26 +- ...ointlessBitwiseExpressionJSInspection.java | 24 +- .../bitwise/ShiftOutOfRangeJSInspection.java | 8 +- .../bugs/DivideByZeroJSInspection.java | 10 +- ...ityComparisonWithCoercionJSInspection.java | 18 +- ...tCircuitBooleanExpressionJSInspection.java | 12 +- .../ObjectAllocationIgnoredJSInspection.java | 4 +- .../sixrr/inspectjs/bugs/RecursionUtils.java | 130 ++++----- .../inspectjs/bugs/RecursionVisitor.java | 10 +- ...extLabelInSwitchStatementJSInspection.java | 8 +- .../AnonymousFunctionJSInspection.java | 4 +- .../confusing/BlockStatementJSInspection.java | 2 +- ...usingFloatingPointLiteralJSInspection.java | 32 +-- .../ConfusingPlusesOrMinusesJSInspection.java | 14 +- .../DynamicallyGeneratedCodeJSInspection.java | 16 +- .../EmptyStatementBodyJSInspection.java | 16 +- ...rementDecrementResultUsedJSInspection.java | 8 +- .../confusing/MagicNumberJSInspection.java | 12 +- ...atedConditionalExpressionJSInspection.java | 16 +- .../NegatedIfStatementJSInspection.java | 28 +- ...stedConditionalExpressionJSInspection.java | 2 +- .../confusing/NestedFunctionJSInspection.java | 6 +- .../confusing/OctalIntegerJSInspection.java | 2 +- ...yComplexBooleanExpressionJSInspection.java | 30 +- ...tlessArithmeticExpressionJSInspection.java | 26 +- ...ointlessBooleanExpressionJSInspection.java | 46 +-- .../confusing/VoidExpressionJSInspection.java | 4 +- ...sionWithIdenticalBranchesJSInspection.java | 10 +- ...tantConditionalExpressionJSInspection.java | 16 +- .../ConstantIfStatementJSInspection.java | 16 +- ...efaultNotLastCaseInSwitchJSInspection.java | 4 +- .../DuplicateConditionJSInspection.java | 32 +-- ...lthroughInSwitchStatementJSInspection.java | 10 +- ...ForLoopReplaceableByWhileJSInspection.java | 22 +- ...ThatDoesntUseLoopVariableJSInspection.java | 20 +- ...mentWithIdenticalBranchesJSInspection.java | 12 +- ...tementWithTooManyBranchesJSInspection.java | 14 +- .../control/LabeledStatementJSInspection.java | 2 +- ...opStatementThatDoesntLoopJSInspection.java | 8 +- .../NestedSwitchStatementJSInspection.java | 2 +- ...tementWithNoDefaultBranchJSInspection.java | 2 +- .../control/TailRecursionJSInspection.java | 14 +- .../TrivialConditionalJSInspection.java | 20 +- .../control/TrivialIfJSInspection.java | 168 +++++------ .../UnnecessaryContinueJSInspection.java | 6 +- .../control/UnnecessaryLabelJSInspection.java | 14 +- ...saryLabelOnBreakStatementJSInspection.java | 10 +- ...yLabelOnContinueStatementJSInspection.java | 10 +- .../UnnecessaryReturnJSInspection.java | 10 +- .../ReuseOfLocalVariableJSInspection.java | 24 +- .../UnnecessaryLocalVariableJSInspection.java | 80 +++--- .../dataflow/VariableAccessUtils.java | 12 +- .../dataflow/VariableAssignedVisitor.java | 10 +- .../VariableUsedInInnerFunctionVisitor.java | 4 +- .../dataflow/VariableUsedVisitor.java | 2 +- .../dom/DocumentWriteJSInspection.java | 10 +- .../inspectjs/dom/InnerHTMLJSInspection.java | 2 +- .../dom/PlatformDetectionJSInspection.java | 8 +- .../XHTMLIncompatabilitiesJSInspection.java | 6 +- .../exception/CatchParameterUsedVisitor.java | 2 +- ...ueOrBreakFromFinallyBlockJSInspection.java | 4 +- .../EmptyCatchBlockJSInspection.java | 6 +- .../EmptyFinallyBlockJSInspection.java | 2 +- .../exception/EmptyTryBlockJSInspection.java | 2 +- .../ExceptionCaughtLocallyJSInspection.java | 4 +- .../UnusedCatchParameterJSInspection.java | 14 +- .../com/sixrr/inspectjs/fix/RenameFix.java | 12 +- .../CyclomaticComplexityJSInspection.java | 14 +- .../CyclomaticComplexityVisitor.java | 4 +- ...FunctionWithMultipleLoopsJSInspection.java | 14 +- ...nWithMultipleReturnPointsJSInspection.java | 12 +- .../functionmetrics/NegationCountVisitor.java | 4 +- .../NestingDepthJSInspection.java | 10 +- .../functionmetrics/NestingDepthVisitor.java | 4 +- .../ParametersPerFunctionJSInspection.java | 14 +- .../StatementsPerFunctionJSInspection.java | 14 +- ...ThreeNegationsPerFunctionJSInspection.java | 14 +- .../naming/ConventionInspection.java | 4 +- .../FunctionNamingConventionJSInspection.java | 6 +- ...lVariableNamingConventionJSInspection.java | 8 +- ...ParameterNamingConventionJSInspection.java | 10 +- .../style/ChainedEqualityJSInspection.java | 4 +- .../ChainedFunctionCallJSInspection.java | 6 +- ...ConstantOnLHSOfComparisonJSInspection.java | 18 +- ...ConstantOnRHSOfComparisonJSInspection.java | 18 +- .../style/NestedFunctionCallJSInspection.java | 2 +- .../NonBlockStatementBodyJSInspection.java | 26 +- .../UnterminatedStatementJSInspection.java | 8 +- .../ui/FormattedTextFieldMacFix.java | 14 +- .../sixrr/inspectjs/ui/RegExFormatter.java | 2 +- .../inspectjs/ui/RegExInputVerifier.java | 4 +- .../ui/SingleCheckboxOptionsPanel.java | 10 +- .../ui/SingleIntegerFieldOptionsPanel.java | 8 +- .../com/sixrr/inspectjs/utils/BoolUtils.java | 26 +- .../inspectjs/utils/ComparisonUtils.java | 6 +- .../inspectjs/utils/ConditionalUtils.java | 18 +- .../inspectjs/utils/ControlFlowUtils.java | 84 +++--- .../inspectjs/utils/EquivalenceChecker.java | 268 +++++++++--------- .../sixrr/inspectjs/utils/ExpressionUtil.java | 22 +- .../inspectjs/utils/ParenthesesUtils.java | 2 +- .../inspectjs/utils/SideEffectChecker.java | 6 +- .../sixrr/inspectjs/utils/StatementUtils.java | 2 +- .../BadExpressionStatementJSInspection.java | 26 +- .../DebuggerStatementJSInspection.java | 4 +- .../DuplicateCaseLabelJSInspection.java | 20 +- ...DuplicatePropertyOnObjectJSInspection.java | 12 +- ...onWithInconsistentReturnsJSInspection.java | 12 +- .../StringLiteralBreaksHTMLJSInspection.java | 2 +- ...ionReferencesGlobalObjectJSInspection.java | 8 +- .../validity/UnreachableCodeJSInspection.java | 2 +- .../lang/javascript/JSAbstractBundle.java | 8 +- .../intention/JSElementIterator.java | 8 +- .../intention/JSFunctionVisitor.java | 8 +- .../javascript/intention/JSIntention.java | 2 +- .../intention/bool/ComparisonPredicate.java | 4 +- .../intention/bool/ConjunctionPredicate.java | 4 +- .../bool/JSDeMorgansLawIntention.java | 12 +- .../bool/JSFlipComparisonIntention.java | 12 +- .../bool/JSFlipConjunctionIntention.java | 10 +- .../bool/JSNegateComparisonIntention.java | 16 +- .../JSRemoveBooleanEqualityIntention.java | 22 +- .../braces/JSAddBracesIntention.java | 12 +- .../braces/JSRemoveBracesIntention.java | 24 +- .../JSChangeToCStyleCommentIntention.java | 14 +- .../JSChangeToEndOfLineCommentIntention.java | 28 +- .../JSMoveCommentToSeparateLineIntention.java | 16 +- .../JSFlipConditionalIntention.java | 12 +- .../conditional/JSFlipIfIntention.java | 18 +- .../JSRemoveConditionalIntention.java | 18 +- .../JSConstantExpressionIntention.java | 10 +- .../JSConstantSubexpressionIntention.java | 46 +-- .../JSExtractIncrementIntention.java | 8 +- ...DeclarationAndInitializationIntention.java | 14 +- ...DeclarationAndInitializationIntention.java | 8 +- .../JSMergeParallelForInLoopsIntention.java | 38 +-- .../JSMergeParallelForLoopsIntention.java | 40 +-- .../JSConvertIntegerToDecimalIntention.java | 4 +- .../JSConvertIntegerToHexIntention.java | 2 +- .../JSConvertIntegerToOctalIntention.java | 4 +- .../JSReplaceMultiplyWithShiftIntention.java | 32 +-- .../JSReplaceShiftWithMultiplyIntention.java | 32 +-- .../intention/number/ShiftUtils.java | 10 +- ...eplaceWithOperatorAssignmentIntention.java | 32 +-- ...RemoveUnnecessaryParenthesesIntention.java | 14 +- ...JSDoubleToSingleQuotedStringIntention.java | 2 +- ...inConcatenatedStringLiteralsIntention.java | 12 +- ...JSSingleToDoubleQuotedStringIntention.java | 2 +- .../intention/string/StringUtil.java | 4 +- .../intention/switchtoif/CaseUtil.java | 40 +-- .../JSReplaceIfWithSwitchIntention.java | 72 ++--- .../JSReplaceSwitchWithIfIntention.java | 70 ++--- .../switchtoif/LabelSearchVisitor.java | 2 +- .../switchtoif/LocalVariableUsageVisitor.java | 2 +- .../trivialif/JSMergeElseIfIntention.java | 6 +- .../trivialif/JSMergeIfAndIntention.java | 22 +- .../trivialif/JSMergeIfOrIntention.java | 44 +-- .../JSMergeParallelIfsIntention.java | 30 +- .../JSRemoveRedundantElseIntention.java | 12 +- .../JSReplaceIfWithConditionalIntention.java | 82 +++--- .../trivialif/JSSimplifyIfElseIntention.java | 6 +- .../trivialif/JSSplitElseIfIntention.java | 14 +- .../trivialif/JSSplitIfAndIntention.java | 26 +- .../trivialif/JSSplitIfOrIntention.java | 22 +- .../psiutil/BinaryOperatorUtils.java | 6 +- .../lang/javascript/psiutil/BoolUtils.java | 38 +-- .../javascript/psiutil/ConditionalUtils.java | 130 ++++----- .../javascript/psiutil/ControlFlowUtils.java | 84 +++--- .../javascript/psiutil/DeclarationUtils.java | 10 +- .../psiutil/EquivalenceChecker.java | 64 ++--- .../lang/javascript/psiutil/ErrorUtil.java | 2 +- .../javascript/psiutil/ExpressionUtil.java | 6 +- .../javascript/psiutil/FindReferenceUtil.java | 20 +- .../javascript/psiutil/JSElementFactory.java | 96 +++---- .../psiutil/JSRecursionVisitor.java | 10 +- .../javascript/psiutil/ParenthesesUtils.java | 68 ++--- .../javascript/psiutil/RecursionUtil.java | 120 ++++---- .../javascript/psiutil/SideEffectChecker.java | 6 +- .../lang/javascript/psiutil/TreeUtil.java | 12 +- .../psiutil/VariableAccessUtil.java | 40 +-- .../parsing/EcmaScriptExpressionParsing.java | 2 +- .../parsing/EcmaScriptStatementParsing.java | 22 +- .../JSXTagTreeHighlightingPassFactory.java | 2 +- .../parsing/EcmaScript4ExpressionParsing.java | 10 +- .../parsing/EcmaScript4FunctionParsing.java | 14 +- .../parsing/EcmaScript4StatementParsing.java | 44 +-- .../lang/lexer/JavaScript16Lexer.java | 4 +- .../lang/lexer/JavaScript17Lexer.java | 4 +- .../jom/proxy/JomProxyInvocationHandler.java | 2 +- .../json/lang/JsonJavaScriptParser.java | 22 +- .../consulo/json/lang/lexer/JsonLexer.java | 4 +- .../completion/JsonCompletionContributor.java | 4 +- ...ByAnotherPsiElementEditorNotification.java | 2 +- ...scriptionByAnotherPsiElementRegistrar.java | 2 +- ...DescriptionByAnotherPsiElementService.java | 4 +- .../descriptor/JsonObjectDescriptor.java | 8 +- .../intellij/javascript/JSClassNameMacro.java | 14 +- .../javascript/JSMethodNameMacro.java | 4 +- .../javascript/JSParameterInfoHandler.java | 70 ++--- .../JSAbstractElementManipulator.java | 4 +- .../JSAttributeNameValuePairManipulator.java | 4 +- .../manipulators/JSDocTagManipulator.java | 4 +- .../JSIncludeDirectiveManipulator.java | 2 +- ...ImportECMAScriptClassOrFunctionAction.java | 30 +- .../javascript/impl/flex/ImportUtils.java | 2 +- .../impl/flex/importer/AbcDumper.java | 2 +- .../impl/formatter/JSCodeStylePanel.java | 4 +- .../impl/formatter/JSSpacingProcessor.java | 4 +- .../impl/generation/BaseJSGenerateAction.java | 2 +- .../generation/BaseJSGenerateHandler.java | 4 +- .../JavaScriptGenerateAccessorHandler.java | 10 +- .../JavaScriptOverrideMethodsHandler.java | 2 +- .../JavaScriptLineMarkerProvider.java | 24 +- .../JSExtractFunctionHandler.java | 2 +- .../JSIntroduceConstantHandler.java | 2 +- .../JSIntroduceFieldHandler.java | 2 +- .../impl/search/JSFunctionsSearch.java | 2 +- .../JSStructureItemPresentation.java | 2 +- .../structureView/JSStructureViewElement.java | 4 +- .../structureView/JSStructureViewModel.java | 4 +- .../JSExpressionSurroundDescriptor.java | 2 +- .../surroundWith/JSStatementSurrounder.java | 4 +- .../JSStatementsSurroundDescriptor.java | 2 +- .../JSWithTryCatchFinallySurrounder.java | 4 +- .../impl/validation/BaseCreateMethodsFix.java | 2 +- .../impl/validation/JSAnnotatingVisitor.java | 14 +- .../impl/JavaScriptIconDescriptorUpdater.java | 12 +- .../UpdateJavaScriptFileCopyright.java | 2 +- .../actions/JavaScriptCreateFileAction.java | 4 +- .../lang/JavaScriptParsingDefinition.java | 4 +- 284 files changed, 2583 insertions(+), 2583 deletions(-) diff --git a/base-api/src/main/java/consulo/javascript/index/JavaScriptIndexer.java b/base-api/src/main/java/consulo/javascript/index/JavaScriptIndexer.java index e2c5226c..cfbae972 100644 --- a/base-api/src/main/java/consulo/javascript/index/JavaScriptIndexer.java +++ b/base-api/src/main/java/consulo/javascript/index/JavaScriptIndexer.java @@ -15,7 +15,7 @@ public abstract class JavaScriptIndexer { public static final ExtensionPointName EP_NAME = ExtensionPointName.create(JavaScriptIndexer.class); - public void indexFile(@Nonnull JSFileStub fileStub, @Nonnull final IndexSink sink) { + public void indexFile(@Nonnull JSFileStub fileStub, @Nonnull IndexSink sink) { } public int getVersion() { diff --git a/base-impl/src/main/java/com/intellij/javascript/documentation/JSDocumentationBuilder.java b/base-impl/src/main/java/com/intellij/javascript/documentation/JSDocumentationBuilder.java index b246fc8b..2091c800 100644 --- a/base-impl/src/main/java/com/intellij/javascript/documentation/JSDocumentationBuilder.java +++ b/base-impl/src/main/java/com/intellij/javascript/documentation/JSDocumentationBuilder.java @@ -82,7 +82,7 @@ private static class ParameterInfo extends SymbolInfo { JSDocumentationBuilder(PsiElement element, PsiElement _contextElement) { myElement = element; contextElement = _contextElement; - final PsiElement parent = element.getParent(); + PsiElement parent = element.getParent(); if (element instanceof JSVariable variable && variable.getInitializer() instanceof JSFunctionExpression functionExpression) { element = functionExpression; @@ -97,7 +97,7 @@ private static class ParameterInfo extends SymbolInfo { } for (JSParameter parameter : function.getParameterList().getParameters()) { - final ParameterInfo paramInfo = new ParameterInfo(); + ParameterInfo paramInfo = new ParameterInfo(); ((MethodInfo)generationInfo).parameterInfoMap.put(parameter.getName(), paramInfo); paramInfo.type = parameter.getTypeString(); paramInfo.initialValue = parameter.getInitializerText(); @@ -152,7 +152,7 @@ public boolean onCommentLine(@Nonnull String line) { return true; } - final int maxSubsequentBr = parametersStarted && !parametersEnded ? 0 : 2; + int maxSubsequentBr = parametersStarted && !parametersEnded ? 0 : 2; if (myNewLinesPendingCount < maxSubsequentBr) { ++myNewLinesPendingCount; } @@ -174,8 +174,8 @@ public boolean onCommentLine(@Nonnull String line) { int offset = 0; while (matcher.find()) { - final boolean isTagEnd = matcher.start(1) != matcher.end(1); - final String s = matcher.group(2); + boolean isTagEnd = matcher.start(1) != matcher.end(1); + String s = matcher.group(2); // tags that do not need escaping if (tagNameThatDoNotNeedEscaping(s)) { continue; @@ -195,12 +195,12 @@ public boolean onCommentLine(@Nonnull String line) { return true; } - private static boolean tagNameThatDoNotNeedEscaping(final @NonNls String s) { + private static boolean tagNameThatDoNotNeedEscaping(@NonNls String s) { return s.equalsIgnoreCase("p") || s.equalsIgnoreCase("i") || s.equalsIgnoreCase("code") || s.equalsIgnoreCase("ul") || s.equalsIgnoreCase("li") || s.equalsIgnoreCase("b"); } - private void setResult(final StringBuilder builder) { + private void setResult(StringBuilder builder) { result = builder; myNewLinesPendingCount = 0; } @@ -211,8 +211,8 @@ public boolean onPatternMatch( @Nullable String matchName, @Nullable String matchValue, @Nullable String remainingLineContent, - @Nonnull final String line, - final String patternMatched + @Nonnull String line, + String patternMatched ) { if (metaDocType == MetaDocType.DEFAULT) { boolean color = remainingLineContent.startsWith("0x") && remainingLineContent.length() == 8; @@ -300,7 +300,7 @@ else if (myEventsStarted) { metaDocType == MetaDocType.PUBLIC || metaDocType == MetaDocType.PROTECTED || metaDocType == MetaDocType.STATIC) { - final String s = metaDocType.name().toLowerCase(); + String s = metaDocType.name().toLowerCase(); if (generationInfo.visibility == null) { generationInfo.visibility = s; } @@ -327,7 +327,7 @@ else if (metaDocType == MetaDocType.NAMESPACE) { } if (function != null) { - final MethodInfo methodGenerationInfo = ((MethodInfo)generationInfo); + MethodInfo methodGenerationInfo = ((MethodInfo)generationInfo); if (metaDocType == MetaDocType.CONSTRUCTOR) { methodGenerationInfo.methodType = "contructor"; @@ -439,7 +439,7 @@ String getDoc() { result.append(generationInfo.description.toString()); result.append("\n

"); - final MethodInfo methodInfo = ((MethodInfo)generationInfo); + MethodInfo methodInfo = ((MethodInfo)generationInfo); if (methodInfo.parameterInfoMap.size() > 0) { result.append("
"); @@ -481,7 +481,7 @@ String getDoc() { } if (contextElement != null) { - final String text = contextElement.getText(); + String text = contextElement.getText(); if (text.startsWith("#") && text.length() == 7) { appendCurrentOrDefaultValue(text.substring(1), true, false); } @@ -490,10 +490,10 @@ String getDoc() { return result.toString(); } - public String getParameterDoc(final String name) { + public String getParameterDoc(String name) { if (function != null) { - final MethodInfo methodInfo = ((MethodInfo)generationInfo); - final ParameterInfo parameterInfo = methodInfo.parameterInfoMap.get(name); + MethodInfo methodInfo = ((MethodInfo)generationInfo); + ParameterInfo parameterInfo = methodInfo.parameterInfoMap.get(name); if (parameterInfo != null && parameterInfo.description.length() > 0) { result = new StringBuilder(); @@ -570,7 +570,7 @@ private void startFunction(JSFunction function) { result.append(parameterInfo.getKey()); - final String initialValue = parameterInfo.getValue().initialValue; + String initialValue = parameterInfo.getValue().initialValue; if (initialValue != null) { result.append(" = ").append(initialValue); } @@ -584,11 +584,11 @@ private void endNamedItem() { result.append(""); } - private int startNamedItem(final String functionName) { + private int startNamedItem(String functionName) { return startNamedItem(functionName, generationInfo); } - private int startNamedItem(final String functionName, SymbolInfo generationInfo) { + private int startNamedItem(String functionName, SymbolInfo generationInfo) { result.append("
");
 
         StringBuffer options = new StringBuffer();
@@ -604,7 +604,7 @@ private int startNamedItem(final String functionName, SymbolInfo generationInfo)
                 options.append(returnType);
             }
 
-            final String type = ((MethodInfo)generationInfo).methodType;
+            String type = ((MethodInfo)generationInfo).methodType;
             if (type != null) {
                 if (options.length() > 0) {
                     options.append(", ");
@@ -641,7 +641,7 @@ private int startNamedItem(final String functionName, SymbolInfo generationInfo)
         return offset;
     }
 
-    private void addVisibilityAndAccess(final StringBuffer options, SymbolInfo generationInfo) {
+    private void addVisibilityAndAccess(StringBuffer options, SymbolInfo generationInfo) {
         if (generationInfo.visibility != null) {
             if (options.length() > 0) {
                 options.append(", ");
diff --git a/base-impl/src/main/java/com/intellij/javascript/documentation/JSDocumentationUtils.java b/base-impl/src/main/java/com/intellij/javascript/documentation/JSDocumentationUtils.java
index aace368b..41c3a360 100644
--- a/base-impl/src/main/java/com/intellij/javascript/documentation/JSDocumentationUtils.java
+++ b/base-impl/src/main/java/com/intellij/javascript/documentation/JSDocumentationUtils.java
@@ -198,7 +198,7 @@ public String nextElement() {
                         commentNode = null;
                     }
 
-                    final String text = resultCommentNode.getText();
+                    String text = resultCommentNode.getText();
                     if (text.startsWith("//")) {
                         return text.substring(2);
                     }
@@ -213,10 +213,10 @@ public String nextElement() {
             commentLineIterator = new StringTokenizer(text, "\r\n");
         }
 
-        final boolean needPlainCharData = processor.needsPlainCommentData();
+        boolean needPlainCharData = processor.needsPlainCommentData();
 
         while (commentLineIterator.hasMoreElements()) {
-            final String s = (String)commentLineIterator.nextElement();
+            String s = (String)commentLineIterator.nextElement();
             if (s.indexOf('@') == -1 && s.indexOf(':') == -1 && !needPlainCharData) {
                 continue;
             }
@@ -224,7 +224,7 @@ public String nextElement() {
             String commentText = s.replace('\t', ' ');
 
             for (Map.Entry entry : prefixToPatternToHintMap.entrySet()) {
-                final Matcher matcher = commentText.contains(entry.getValue()) ? entry.getKey().matcher(commentText) : null;
+                Matcher matcher = commentText.contains(entry.getValue()) ? entry.getKey().matcher(commentText) : null;
                 if (matcher == null) {
                     continue;
                 }
@@ -238,15 +238,15 @@ public String nextElement() {
             boolean matchedSomething = false;
 
             for (Map.Entry entry : PATTERN_TO_HINT_MAP.entrySet()) {
-                final Matcher matcher = commentText.contains(entry.getValue()) ? entry.getKey().matcher(commentText) : null;
+                Matcher matcher = commentText.contains(entry.getValue()) ? entry.getKey().matcher(commentText) : null;
                 if (matcher == null) {
                     continue;
                 }
 
                 if (matcher.matches()) {
-                    final JSDocumentationProcessor.MetaDocType docType = PATTERN_TO_META_DOC_TYPE_MAP.get(entry.getKey());
+                    JSDocumentationProcessor.MetaDocType docType = PATTERN_TO_META_DOC_TYPE_MAP.get(entry.getKey());
                     if (docType != null) {
-                        final int groupCount = matcher.groupCount();
+                        int groupCount = matcher.groupCount();
                         String remainingLineContent = groupCount > 0 ? matcher.group(groupCount) : null;
                         String matchName = groupCount > 1 ? matcher.group(1) : null;
                         String matchValue = groupCount > 2 ? matcher.group(2) : null;
@@ -255,8 +255,8 @@ public String nextElement() {
                         boolean reportAboutFieldInParameter = false;
                         boolean reportAboutDefaultValue = false;
 
-                        final int groupForInitialValue = 6;
-                        final int groupForFieldName = 5;
+                        int groupForInitialValue = 6;
+                        int groupForFieldName = 5;
                         String fieldName = null;
 
                         if (groupCount == 7 && entry.getKey() == JS_DOC_PARAMETERS_PATTERN) {
@@ -573,7 +573,7 @@ public boolean needsPlainCommentData() {
                         }
 
                         @Override
-                        public boolean onCommentLine(@Nonnull final String line) {
+                        public boolean onCommentLine(@Nonnull String line) {
                             return true;
                         }
 
@@ -590,7 +590,7 @@ public boolean onPatternMatch(
                             for (MetaDocType expectedType : expectedTypes) {
                                 if (type == expectedType) {
                                     if (type == MetaDocType.TYPE && _anchor instanceof JSFunction function) {
-                                        final JSParameterList jsParameterList = function.getParameterList();
+                                        JSParameterList jsParameterList = function.getParameterList();
                                         if (jsParameterList != null && jsParameterList.getParameters().length > 0) {
                                             return true;
                                         }
@@ -618,7 +618,7 @@ else if (type == MetaDocType.RETURN) {
     }
 
     @RequiredReadAction
-    public static String findType(final PsiElement def) {
+    public static String findType(PsiElement def) {
         return findDocForAnchor(def, JSDocumentationProcessor.MetaDocType.TYPE);
     }
 
@@ -646,7 +646,7 @@ public static boolean calculateDeprecated(PsiElement element) {
             element = PsiTreeUtil.getParentOfType(element, JSStatement.class, JSProperty.class);
         }
 
-        final PsiElement docComment = element != null ? findDocComment(element) : null;
+        PsiElement docComment = element != null ? findDocComment(element) : null;
         if (docComment != null) {
             final boolean[] deprecatedStatus = new boolean[1];
 
@@ -659,7 +659,7 @@ public boolean needsPlainCommentData() {
                     }
 
                     @Override
-                    public boolean onCommentLine(@Nonnull final String line) {
+                    public boolean onCommentLine(@Nonnull String line) {
                         return true;
                     }
 
@@ -693,7 +693,7 @@ public static void appendHyperLinkToElement(
         String presentableName,
         @Nullable String presentableFileName
     ) {
-        final PsiFile containingFile = element != null ? element.getContainingFile() : null;
+        PsiFile containingFile = element != null ? element.getContainingFile() : null;
         String fileName = containingFile == null
             ? null
             : !JSResolveUtil.isPredefinedFile(containingFile)
@@ -710,7 +710,7 @@ public static void appendHyperLinkToElement(
     }
 
     @RequiredReadAction
-    private static String evaluateTypeFromParameter(final JSParameter parameter) {
+    private static String evaluateTypeFromParameter(JSParameter parameter) {
         String s = evaluateTypeFromVariable(parameter);
 
         if (s == null) {
@@ -735,8 +735,8 @@ private static PsiElement findFunctionComment(JSParameter parameter) {
     }
 
     @RequiredReadAction
-    private static String evaluateTypeFromFunction(final JSFunction function) {
-        final ASTNode lastCommentInFunctionBody = findTrailingCommentInFunctionBody(function);
+    private static String evaluateTypeFromFunction(JSFunction function) {
+        ASTNode lastCommentInFunctionBody = findTrailingCommentInFunctionBody(function);
 
         String typeString = null;
         if (lastCommentInFunctionBody != null) {
@@ -750,7 +750,7 @@ private static String evaluateTypeFromFunction(final JSFunction function) {
     }
 
     @RequiredReadAction
-    private static String evaluateTypeFromVariable(final JSVariable variable) {
+    private static String evaluateTypeFromVariable(JSVariable variable) {
         PsiElement prevSibling = variable.getFirstChild();
         if (prevSibling != null && prevSibling.getNode().getElementType() == JSTokenTypes.IDENTIFIER) {
             prevSibling = variable.getPrevSibling();
@@ -786,7 +786,7 @@ private static String evaluateTypeFromVariable(final JSVariable variable) {
     }
 
     @RequiredReadAction
-    public static String findTypeFromComments(final JSNamedElement element) {
+    public static String findTypeFromComments(JSNamedElement element) {
         if (element instanceof JSParameter parameter) {
             return evaluateTypeFromParameter(parameter);
         }
diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/DialectOptionHolder.java b/base-impl/src/main/java/com/intellij/lang/javascript/DialectOptionHolder.java
index c885ad25..602fe876 100644
--- a/base-impl/src/main/java/com/intellij/lang/javascript/DialectOptionHolder.java
+++ b/base-impl/src/main/java/com/intellij/lang/javascript/DialectOptionHolder.java
@@ -36,7 +36,7 @@ public DialectOptionHolder(boolean _ecma, boolean _gwt) {
         this(_ecma, _gwt, true);
     }
 
-    public DialectOptionHolder(boolean _ecma, boolean _gwt, final boolean _e4x) {
+    public DialectOptionHolder(boolean _ecma, boolean _gwt, boolean _e4x) {
         isECMAL4Level = _ecma;
         isGwt = _gwt;
         isJavaScript1_7_OrBetter = _e4x;
diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/JSElementTypes.java b/base-impl/src/main/java/com/intellij/lang/javascript/JSElementTypes.java
index 13239801..0a47c155 100644
--- a/base-impl/src/main/java/com/intellij/lang/javascript/JSElementTypes.java
+++ b/base-impl/src/main/java/com/intellij/lang/javascript/JSElementTypes.java
@@ -60,7 +60,7 @@ public interface JSElementTypes {
     IElementType EMBEDDED_CONTENT = new ILazyParseableElementType("EMBEDDED_CONTENT", JavaScriptLanguage.INSTANCE) {
         @Override
         @RequiredReadAction
-        protected ASTNode doParseContents(@Nonnull final ASTNode chameleon, @Nonnull final PsiElement psi) {
+        protected ASTNode doParseContents(@Nonnull ASTNode chameleon, @Nonnull PsiElement psi) {
             LanguageVersion languageVersion = LanguageVersionUtil.findLanguageVersion(getLanguage(), psi);
             Project project = psi.getProject();
             Language languageForParser = getLanguageForParser(psi);
diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/JSFlexAdapter.java b/base-impl/src/main/java/com/intellij/lang/javascript/JSFlexAdapter.java
index 1cab2e1e..6419949f 100644
--- a/base-impl/src/main/java/com/intellij/lang/javascript/JSFlexAdapter.java
+++ b/base-impl/src/main/java/com/intellij/lang/javascript/JSFlexAdapter.java
@@ -30,7 +30,7 @@ public JSFlexAdapter(boolean highlight, DialectOptionHolder optionHolder) {
     }
 
     @Override
-    public void start(final CharSequence buffer, final int startOffset, final int endOffset, final int initialState) {
+    public void start(CharSequence buffer, int startOffset, int endOffset, int initialState) {
         super.start(buffer, startOffset, endOffset, initialState & BASE_STATE_MASK);
         ((_JavaScriptLexer)getFlex()).setTagCount(initialState >> TAG_COUNT_SHIFT);
     }
diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/JSLanguageInjector.java b/base-impl/src/main/java/com/intellij/lang/javascript/JSLanguageInjector.java
index 2055a8ab..bac1ba0f 100644
--- a/base-impl/src/main/java/com/intellij/lang/javascript/JSLanguageInjector.java
+++ b/base-impl/src/main/java/com/intellij/lang/javascript/JSLanguageInjector.java
@@ -53,8 +53,8 @@ public abstract class JSLanguageInjector implements MultiHostInjector {
     @Override
     public void injectLanguages(@Nonnull MultiHostRegistrar registrar, @Nonnull PsiElement host) {
         if (host instanceof XmlAttributeValue attributeValue) {
-            final PsiElement attribute = attributeValue.getParent();
-            final PsiElement tag = attribute.getParent();
+            PsiElement attribute = attributeValue.getParent();
+            PsiElement tag = attribute.getParent();
 
             if (attribute instanceof XmlAttribute xmlAttribute && tag instanceof XmlTag xmlTag) {
                 if (attributeValue.getTextLength() == 0) {
@@ -69,7 +69,7 @@ public void injectLanguages(@Nonnull MultiHostRegistrar registrar, @Nonnull PsiE
                     injectJSIntoAttributeValue(registrar, attributeValue, true);
                 }
                 else if (attrName.startsWith("on")) {
-                    final String ns = xmlTag.getNamespace();
+                    String ns = xmlTag.getNamespace();
                     if (JavaScriptSupportLoader.BINDOWS_URI.equals(ns)
                         || JavaScriptSupportLoader.isBindowsFile(attributeValue)
                         || isMozillaXulOrXblNs(ns)) {
@@ -116,10 +116,10 @@ else if (attrName.equalsIgnoreCase("djConfig")) {
             }
         }
         else if (host instanceof XmlText && host.getParent() instanceof XmlTag tag) {
-            final @NonNls String localName = tag.getLocalName();
+            @NonNls String localName = tag.getLocalName();
 
             if ("attribute".equals(localName) && JSP_URI.equals(tag.getNamespace())) {
-                @NonNls final String name = tag.getAttributeValue("name");
+                @NonNls String name = tag.getAttributeValue("name");
                 if (name != null && name.startsWith("on")) {
                     Language language = JavaScriptLanguage.INSTANCE;
                     injectToXmlText(registrar, host, language, null, null);
@@ -165,12 +165,12 @@ && isMozillaXulOrXblNs(tag.getNamespace())) {
                     @NonNls String suffix = null;
 
                     if (getter || setter) {
-                        final String name = getNameFromTag(tag.getParentTag(), "property");
+                        String name = getNameFromTag(tag.getParentTag(), "property");
                         prefix = "function " + (getter ? "get " : "set ") + name + "(" + (setter ? "val" : "") + ") {";
                         suffix = "}";
                     }
                     else if (body) {
-                        final XmlTag parentTag = tag.getParentTag();
+                        XmlTag parentTag = tag.getParentTag();
                         String name = getNameFromTag(parentTag, "method");
                         String signature = "";
                         for (XmlTag ptag : parentTag.findSubTags("parameter")) {
@@ -190,8 +190,8 @@ else if (handler) {
                         suffix = "}";
                     }
                     else if (constructor) {
-                        final XmlTag parentTag = tag.getParentTag();
-                        final XmlTag grandParentTag = parentTag != null ? parentTag.getParentTag() : null;
+                        XmlTag parentTag = tag.getParentTag();
+                        XmlTag grandParentTag = parentTag != null ? parentTag.getParentTag() : null;
                         prefix = "function " + (grandParentTag != null ? grandParentTag.getAttributeValue("id") : null) + "() {";
                         suffix = "}";
                     }
@@ -202,51 +202,51 @@ else if (constructor) {
         }
     }
 
-    private boolean doInjectTo(final XmlTag tag) {
-        final XmlTagValue value = tag.getValue();
-        final XmlTagChild[] tagChildren = value.getChildren();
+    private boolean doInjectTo(XmlTag tag) {
+        XmlTagValue value = tag.getValue();
+        XmlTagChild[] tagChildren = value.getChildren();
 
         return tagChildren.length == 1
             && (tagChildren[0].getNode().getElementType() == XmlElementType.XML_CDATA || !tagChildren[0].textContains('<'));
     }
 
     private static void checkMxmlInjection(
-        final MultiHostRegistrar registrar,
-        final PsiElement host,
-        final PsiElement attribute,
-        final PsiElement _tag
+        MultiHostRegistrar registrar,
+        PsiElement host,
+        PsiElement attribute,
+        PsiElement _tag
     ) {
-        final PsiFile containingFile = _tag.getContainingFile();
+        PsiFile containingFile = _tag.getContainingFile();
         if (JavaScriptSupportLoader.isFlexMxmFile(containingFile)) {
             injectInMxmlFile(registrar, host, ((XmlAttribute)attribute).getDescriptor(), (XmlTag)_tag);
         }
     }
 
     private static void injectToXmlText(
-        final MultiHostRegistrar registrar,
-        final PsiElement host,
-        final Language language,
-        final String prefix,
-        final String suffix
+        MultiHostRegistrar registrar,
+        PsiElement host,
+        Language language,
+        String prefix,
+        String suffix
     ) {
         TextRange range = new TextRange(0, host.getTextLength());
         registrar.startInjecting(language).addPlace(prefix, suffix, (PsiLanguageInjectionHost)host, range).doneInjecting();
     }
 
-    private static String getNameFromTag(final XmlTag parentTag, final @NonNls String s) {
+    private static String getNameFromTag(XmlTag parentTag, @NonNls String s) {
         return parentTag != null && s.equals(parentTag.getLocalName()) ? parentTag.getAttributeValue("name") : "";
     }
 
-    public static boolean isMozillaXulOrXblNs(final @NonNls String ns) {
+    public static boolean isMozillaXulOrXblNs(@NonNls String ns) {
         return "http://www.mozilla.org/xbl".equals(ns) || "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul".equals(ns);
     }
 
     public static void injectJSIntoAttributeValue(
-        final MultiHostRegistrar registrar,
-        final XmlAttributeValue host,
-        final boolean startsWithPrefix
+        MultiHostRegistrar registrar,
+        XmlAttributeValue host,
+        boolean startsWithPrefix
     ) {
-        final PsiElement[] myChildren = host.getChildren();
+        PsiElement[] myChildren = host.getChildren();
         int valueIndex = myChildren.length - 2;
         int valueTokenNumber = 1;
         if (valueIndex < 0) {
@@ -254,7 +254,7 @@ public static void injectJSIntoAttributeValue(
             valueTokenNumber = 0;
         }
 
-        final PsiElement valueChild = myChildren[valueIndex];
+        PsiElement valueChild = myChildren[valueIndex];
 
         if (valueChild instanceof XmlToken && ((XmlToken)valueChild).getTokenType() == XmlTokenType.XML_ATTRIBUTE_VALUE_TOKEN) {
             boolean injectFromTheBeginning = valueIndex == valueTokenNumber;
@@ -264,7 +264,7 @@ public static void injectJSIntoAttributeValue(
                 boolean badlyFormed = false;
 
                 for (int i = valueTokenNumber; i < valueIndex; ++i) {
-                    final PsiElement currentElement = myChildren[i];
+                    PsiElement currentElement = myChildren[i];
 
                     if (currentElement instanceof XmlToken && ((XmlToken)currentElement).getTokenType() == XmlTokenType.XML_ATTRIBUTE_VALUE_TOKEN) {
                         // ok child
@@ -272,8 +272,8 @@ public static void injectJSIntoAttributeValue(
                     }
                     else {
                         if (currentElement instanceof OuterLanguageElement) {
-                            final String prevText = myChildren[i - 1].getText();
-                            final String nextText = myChildren[i + 1].getText();
+                            String prevText = myChildren[i - 1].getText();
+                            String nextText = myChildren[i + 1].getText();
 
                             if ((StringUtil.endsWithChar(prevText, '\"') && StringUtil.startsWithChar(nextText, '\"'))
                                 || (StringUtil.endsWithChar(prevText, '\'') && StringUtil.startsWithChar(nextText, '\''))) {
@@ -285,7 +285,7 @@ else if ((StringUtil.endsWithChar(prevText, '(') && StringUtil.startsWithChar(ne
                                 badlyFormed = true;
                             }
                             else if (currentElement.textContains('$')) {
-                                final String s = currentElement.getText();
+                                String s = currentElement.getText();
                                 if (s.startsWith("${") && s.endsWith("}") && s.length() > 2) {
                                     continue;
                                 }
@@ -319,16 +319,16 @@ else if (currentElement.textContains('%')) {
     }
 
     private static void injectInMxmlFile(
-        final MultiHostRegistrar registrar,
-        final PsiElement host,
-        final PsiMetaData descriptor,
+        MultiHostRegistrar registrar,
+        PsiElement host,
+        PsiMetaData descriptor,
         XmlTag tag
     ) {
         int offset = host instanceof XmlText ? 0 : 1;
 
         if (descriptor instanceof AnnotationBackedDescriptor annotationBackedDescriptor
             && annotationBackedDescriptor.requiresCdataBracesInContext(tag)) {
-            final int length = host.getTextLength();
+            int length = host.getTextLength();
             if (length < 2 * offset) {
                 return;
             }
@@ -336,8 +336,8 @@ private static void injectInMxmlFile(
             if (type == null) {
                 type = "*";
             }
-            final @NonNls String prefix = "(function (event:" + type + ") {";
-            final @NonNls String suffix = "})();";
+            @NonNls String prefix = "(function (event:" + type + ") {";
+            @NonNls String suffix = "})();";
 
             if (host instanceof XmlText) {
                 injectToXmlText(registrar, host, JavaScriptSupportLoader.ECMA_SCRIPT_L4, prefix, suffix);
@@ -356,14 +356,14 @@ private static void injectInMxmlFile(
             }
         }
         else {
-            final String text = StringUtil.stripQuotesAroundValue(host.getText());
+            String text = StringUtil.stripQuotesAroundValue(host.getText());
             int openedBraces = 0;
             int start = -1;
             boolean addedSomething = false;
             boolean quoted = false;
 
             for (int i = 0; i < text.length(); ++i) {
-                final char ch = text.charAt(i);
+                char ch = text.charAt(i);
 
                 if (quoted) {
                     quoted = false;
@@ -396,7 +396,7 @@ else if (ch == '}') {
             }
 
             if (!addedSomething) {
-                final String trimmedText = text.trim();
+                String trimmedText = text.trim();
                 start = trimmedText.indexOf("@Embed");
                 if (start == 0) {
                     offset += text.indexOf(trimmedText);
diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/JSTokenTypes.java b/base-impl/src/main/java/com/intellij/lang/javascript/JSTokenTypes.java
index 58ba3407..c348cd60 100644
--- a/base-impl/src/main/java/com/intellij/lang/javascript/JSTokenTypes.java
+++ b/base-impl/src/main/java/com/intellij/lang/javascript/JSTokenTypes.java
@@ -157,7 +157,7 @@ protected void doParse(JavaScriptParsingContext context, PsiBuilder builder) {
             parseScriptExpression(context, builder);
         }
 
-        public void parseScriptExpression(JavaScriptParsingContext context, final PsiBuilder builder) {
+        public void parseScriptExpression(JavaScriptParsingContext context, PsiBuilder builder) {
             PsiBuilder.Marker root = builder.mark();
             Parsing.checkMatches(builder, JSTokenTypes.LBRACE, JavaScriptLocalize.javascriptParserMessageExpectedLbrace());
             if (builder.getTokenType() != JSTokenTypes.RBRACE) {
@@ -450,13 +450,13 @@ public JSChameleonElementType(@NonNls String name) {
         @Override
         @RequiredReadAction
         protected ASTNode doParseContents(@Nonnull ASTNode chameleon, @Nonnull PsiElement psi) {
-            final Project project = psi.getProject();
-            final Language languageForParser = getLanguageForParser(psi);
-            final LanguageVersion tempLanguageVersion = chameleon.getUserData(LanguageVersion.KEY);
-            final LanguageVersion languageVersion = tempLanguageVersion == null ? psi.getLanguageVersion() : tempLanguageVersion;
-            final PsiBuilder builder = PsiBuilderFactory.getInstance()
+            Project project = psi.getProject();
+            Language languageForParser = getLanguageForParser(psi);
+            LanguageVersion tempLanguageVersion = chameleon.getUserData(LanguageVersion.KEY);
+            LanguageVersion languageVersion = tempLanguageVersion == null ? psi.getLanguageVersion() : tempLanguageVersion;
+            PsiBuilder builder = PsiBuilderFactory.getInstance()
                 .createBuilder(project, chameleon, createLexer(), languageForParser, languageVersion, chameleon.getChars());
-            final JavaScriptParser parser = (JavaScriptParser)ParserDefinition.forLanguage(languageForParser).createParser(languageVersion);
+            JavaScriptParser parser = (JavaScriptParser)ParserDefinition.forLanguage(languageForParser).createParser(languageVersion);
 
             JavaScriptParsingContext parsingContext = parser.createParsingContext();
             doParse(parsingContext, builder);
diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/JavaScriptHighlightingLexer.java b/base-impl/src/main/java/com/intellij/lang/javascript/JavaScriptHighlightingLexer.java
index 4cecae82..cb5a40c7 100644
--- a/base-impl/src/main/java/com/intellij/lang/javascript/JavaScriptHighlightingLexer.java
+++ b/base-impl/src/main/java/com/intellij/lang/javascript/JavaScriptHighlightingLexer.java
@@ -51,7 +51,7 @@ private JavaScriptHighlightingLexer(DialectOptionHolder optionHolder, boolean wi
                 new IElementType[]{JSTokenTypes.SINGLE_QUOTE_STRING_LITERAL}, IElementType.EMPTY_ARRAY
             );
 
-            final LayeredLexer docLexer = new LayeredLexer(new FlexAdapter(new _JSDocLexer(true)));
+            LayeredLexer docLexer = new LayeredLexer(new FlexAdapter(new _JSDocLexer(true)));
             final Lexer lexer = getHtmlHighlightingLexer();
 
             // Force html highlighting lexer not to return tag content type since it causes token type collision in javascript embedded to html
@@ -60,7 +60,7 @@ private JavaScriptHighlightingLexer(DialectOptionHolder optionHolder, boolean wi
 
 
                 @Override
-                public void start(final CharSequence buffer, final int startOffset, final int endOffset, final int initialState) {
+                public void start(CharSequence buffer, int startOffset, int endOffset, int initialState) {
                     lexer.start(buffer, startOffset, endOffset, initialState);
                 }
 
@@ -71,7 +71,7 @@ public int getState() {
 
                 @Override
                 public IElementType getTokenType() {
-                    final IElementType tokenType = lexer.getTokenType();
+                    IElementType tokenType = lexer.getTokenType();
                     if (tokenType == tagContentType) {
                         return JSTokenTypes.JSDOC_TAG_DATA;
                     }
@@ -113,7 +113,7 @@ public int getBufferEnd() {
     }
 
     public static IElementType getTagContentTokenType() {
-        final Lexer highlightingLexer = getHtmlHighlightingLexer();
+        Lexer highlightingLexer = getHtmlHighlightingLexer();
         highlightingLexer.start("a", 0, 1, 0);
         return highlightingLexer.getTokenType();
     }
diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/JavaScriptSupportLoader.java b/base-impl/src/main/java/com/intellij/lang/javascript/JavaScriptSupportLoader.java
index d6adfe35..9cac359d 100644
--- a/base-impl/src/main/java/com/intellij/lang/javascript/JavaScriptSupportLoader.java
+++ b/base-impl/src/main/java/com/intellij/lang/javascript/JavaScriptSupportLoader.java
@@ -70,15 +70,15 @@ public class JavaScriptSupportLoader {
     @NonNls
     public static final String MXML_COMPONENT_TEMPLATE_NAME = "Mxml Component";
 
-    public static boolean isFlexMxmFile(final PsiFile file) {
+    public static boolean isFlexMxmFile(PsiFile file) {
         return file.getFileType() == XmlFileType.INSTANCE && nameHasMxmlExtension(file.getName());
     }
 
-    public static boolean isFlexMxmFile(final VirtualFile file) {
+    public static boolean isFlexMxmFile(VirtualFile file) {
         return file.getFileType() == XmlFileType.INSTANCE && nameHasMxmlExtension(file.getName());
     }
 
-    private static boolean nameHasMxmlExtension(final String s) {
+    private static boolean nameHasMxmlExtension(String s) {
         return s.endsWith(MXML_FILE_EXTENSION_DOT) || s.endsWith(MXML_FILE_EXTENSION2_DOT);
     }
 
@@ -86,9 +86,9 @@ public static boolean isFlexMxmFile(String filename) {
         return FileTypeManager.getInstance().getFileTypeByFileName(filename) == XmlFileType.INSTANCE && nameHasMxmlExtension(filename);
     }
 
-    public static boolean isBindowsFile(final PsiElement element) {
-        final PsiFile containingFile = element.getContainingFile();
-        final PsiElement tag = element.getParent().getParent();
+    public static boolean isBindowsFile(PsiElement element) {
+        PsiFile containingFile = element.getContainingFile();
+        PsiElement tag = element.getParent().getParent();
         if (!(tag instanceof XmlTag)) {
             return false;
         }
@@ -102,7 +102,7 @@ public static boolean isBindowsFile(final PsiElement element) {
         return "Application".equals(((XmlFile)containingFile).getDocument().getRootTag().getName());
     }
 
-    public static boolean isMxmlNs(final String ns) {
+    public static boolean isMxmlNs(String ns) {
         return ArrayUtil.contains(ns, MXML_URIS);
     }
 }
diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/flex/XmlBackedJSClassImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/flex/XmlBackedJSClassImpl.java
index 4eadc096..05165794 100644
--- a/base-impl/src/main/java/com/intellij/lang/javascript/flex/XmlBackedJSClassImpl.java
+++ b/base-impl/src/main/java/com/intellij/lang/javascript/flex/XmlBackedJSClassImpl.java
@@ -324,7 +324,7 @@ protected CachedValue compute(XmlTag tag, Object p) {
     private static final UserDataCache>, XmlFile, Object> CACHED_COMPONENT_IMPORTS_CACHE =
         new UserDataCache<>() {
             @Override
-            protected CachedValue> compute(final XmlFile file, final Object p) {
+            protected CachedValue> compute(final XmlFile file, Object p) {
                 return CachedValuesManager.getManager(file.getProject()).createCachedValue(
                     new CachedValueProvider>() {
                         @Override
diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/highlighting/JavaScriptHighlightingLexer.java b/base-impl/src/main/java/com/intellij/lang/javascript/highlighting/JavaScriptHighlightingLexer.java
index 9a52047e..03207bce 100644
--- a/base-impl/src/main/java/com/intellij/lang/javascript/highlighting/JavaScriptHighlightingLexer.java
+++ b/base-impl/src/main/java/com/intellij/lang/javascript/highlighting/JavaScriptHighlightingLexer.java
@@ -56,7 +56,7 @@ private JavaScriptHighlightingLexer(Supplier baseLexerFactory, boolean wi
                 new IElementType[]{JSTokenTypes.SINGLE_QUOTE_STRING_LITERAL}, IElementType.EMPTY_ARRAY
             );
 
-            final LayeredLexer docLexer = new LayeredLexer(new FlexAdapter(new _JSDocLexer(true)));
+            LayeredLexer docLexer = new LayeredLexer(new FlexAdapter(new _JSDocLexer(true)));
             final Lexer lexer = getHtmlHighlightingLexer();
 
             // Force html highlighting lexer not to return tag content type
@@ -66,7 +66,7 @@ private JavaScriptHighlightingLexer(Supplier baseLexerFactory, boolean wi
                     final IElementType tagContentType = getTagContentTokenType();
 
                     @Override
-                    public void start(final CharSequence buffer, final int startOffset, final int endOffset, final int initialState) {
+                    public void start(CharSequence buffer, int startOffset, int endOffset, int initialState) {
                         lexer.start(buffer, startOffset, endOffset, initialState);
                     }
 
@@ -77,7 +77,7 @@ public int getState() {
 
                     @Override
                     public IElementType getTokenType() {
-                        final IElementType tokenType = lexer.getTokenType();
+                        IElementType tokenType = lexer.getTokenType();
                         if (tokenType == tagContentType) {
                             return JSTokenTypes.JSDOC_TAG_DATA;
                         }
diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/index/JSItemPresentation.java b/base-impl/src/main/java/com/intellij/lang/javascript/index/JSItemPresentation.java
index 78645637..5d49a008 100644
--- a/base-impl/src/main/java/com/intellij/lang/javascript/index/JSItemPresentation.java
+++ b/base-impl/src/main/java/com/intellij/lang/javascript/index/JSItemPresentation.java
@@ -37,7 +37,7 @@
 public class JSItemPresentation implements ItemPresentation {
     private JSNamedElement myElement;
 
-    public JSItemPresentation(final JSNamedElement elementProxy) {
+    public JSItemPresentation(JSNamedElement elementProxy) {
         this.myElement = elementProxy;
     }
 
@@ -50,7 +50,7 @@ public String getPresentableText() {
     @Override
     @RequiredReadAction
     public String getLocationString() {
-        final PsiFile psiFile = myElement.getContainingFile();
+        PsiFile psiFile = myElement.getContainingFile();
         if (myElement instanceof JSVariable || myElement instanceof JSFunction) {
             if (JSResolveUtil.findParent(myElement) instanceof JSClass possibleJsClass) {
                 StringBuilder presentation = new StringBuilder();
diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/index/JSSymbolUtil.java b/base-impl/src/main/java/com/intellij/lang/javascript/index/JSSymbolUtil.java
index 8c5d5f08..75991d37 100644
--- a/base-impl/src/main/java/com/intellij/lang/javascript/index/JSSymbolUtil.java
+++ b/base-impl/src/main/java/com/intellij/lang/javascript/index/JSSymbolUtil.java
@@ -120,7 +120,7 @@ public void processUnresolvedThis() {
                     }
 
                     @Override
-                    public boolean isTopLevel(final JSReferenceExpression expression) {
+                    public boolean isTopLevel(JSReferenceExpression expression) {
                         return expr1 == expression;
                     }
                 }
diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/index/JavaScriptIndex.java b/base-impl/src/main/java/com/intellij/lang/javascript/index/JavaScriptIndex.java
index 83d0debf..6b66c27a 100644
--- a/base-impl/src/main/java/com/intellij/lang/javascript/index/JavaScriptIndex.java
+++ b/base-impl/src/main/java/com/intellij/lang/javascript/index/JavaScriptIndex.java
@@ -26,15 +26,15 @@
 public final class JavaScriptIndex {
     public static final String ECMASCRIPT_JS2 = "ECMAScript.js2";
 
-    public static boolean isFromPredefinedFile(final PsiFile containingFile) {
+    public static boolean isFromPredefinedFile(PsiFile containingFile) {
         return false;
     }
 
-    public static PsiElement findSymbolByFileAndNameAndOffset(final String fileName, final String name, final int offset) {
+    public static PsiElement findSymbolByFileAndNameAndOffset(String fileName, String name, int offset) {
         return null;
     }
 
-    public static PsiElement findSymbolWithNameAndOffsetInEntry(final String nameId, final int offset) {
+    public static PsiElement findSymbolWithNameAndOffsetInEntry(String nameId, int offset) {
         return null;
     }
 }
diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/inspections/qucikFixes/CreateJSFunctionOrMethodFix.java b/base-impl/src/main/java/com/intellij/lang/javascript/inspections/qucikFixes/CreateJSFunctionOrMethodFix.java
index ebe1f0a2..91880392 100644
--- a/base-impl/src/main/java/com/intellij/lang/javascript/inspections/qucikFixes/CreateJSFunctionOrMethodFix.java
+++ b/base-impl/src/main/java/com/intellij/lang/javascript/inspections/qucikFixes/CreateJSFunctionOrMethodFix.java
@@ -65,8 +65,8 @@ protected void addParameters(
         Set features
     ) {
         JSCallExpression methodInvokation = (JSCallExpression)referenceExpression.getParent();
-        final JSArgumentList list = methodInvokation.getArgumentList();
-        final JSExpression[] expressions = list.getArguments();
+        JSArgumentList list = methodInvokation.getArgumentList();
+        JSExpression[] expressions = list.getArguments();
         int paramCount = expressions.length;
 
         for (int i = 0; i < paramCount; ++i) {
@@ -75,7 +75,7 @@ protected void addParameters(
             }
             String var = null;
 
-            final JSExpression passedParameterValue = expressions[i];
+            JSExpression passedParameterValue = expressions[i];
             if (passedParameterValue instanceof JSReferenceExpression parameterRefExpr) {
                 var = parameterRefExpr.getReferencedName();
             }
@@ -84,7 +84,7 @@ protected void addParameters(
                 var = "param" + (i != 0 ? Integer.toString(i + 1) : "");
             }
 
-            final String var1 = var;
+            String var1 = var;
             Expression expression = new MyExpression(var1);
 
             template.addVariable(var, expression, expression, true);
@@ -109,7 +109,7 @@ protected void addBody(Template template, JSReferenceExpression refExpr, PsiFile
     @RequiredReadAction
     @Override
     protected void buildTemplate(
-        final Template template,
+        Template template,
         JSReferenceExpression referenceExpression,
         Set features,
         boolean staticContext,
diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/parsing/JSDocParsing.java b/base-impl/src/main/java/com/intellij/lang/javascript/parsing/JSDocParsing.java
index 96dff2ce..838d44c8 100644
--- a/base-impl/src/main/java/com/intellij/lang/javascript/parsing/JSDocParsing.java
+++ b/base-impl/src/main/java/com/intellij/lang/javascript/parsing/JSDocParsing.java
@@ -29,11 +29,11 @@
  * Time: 3:55:54 PM
  */
 public class JSDocParsing {
-    public static void parseJSDoc(final PsiBuilder builder) {
-        final PsiBuilder.Marker root = builder.mark();
+    public static void parseJSDoc(PsiBuilder builder) {
+        PsiBuilder.Marker root = builder.mark();
 
         while (!builder.eof()) {
-            final IElementType tokenType = builder.getTokenType();
+            IElementType tokenType = builder.getTokenType();
 
             if (tokenType == JSDocTokenTypes.DOC_TAG_NAME) {
                 if (parseDocTag(builder)) {
@@ -47,12 +47,12 @@ public static void parseJSDoc(final PsiBuilder builder) {
         root.done(JSTokenTypes.DOC_COMMENT);
     }
 
-    private static boolean parseDocTag(final PsiBuilder builder) {
+    private static boolean parseDocTag(PsiBuilder builder) {
         assert builder.getTokenType() == JSDocTokenTypes.DOC_TAG_NAME;
-        final PsiBuilder.Marker docTagMarker = builder.mark();
+        PsiBuilder.Marker docTagMarker = builder.mark();
 
         try {
-            final @NonNls String tagName = builder.getTokenText();
+            @NonNls String tagName = builder.getTokenText();
 
             builder.advanceLexer();
             if ("@param".equals(tagName)) {
@@ -83,7 +83,7 @@ else if (!currentText.startsWith("{")) {
                 }
             }
             else {
-                final boolean hasDocTagValue = isToCreateDocTagValue(tagName);
+                boolean hasDocTagValue = isToCreateDocTagValue(tagName);
                 if (!hasDocTagValue) {
                     return true;
                 }
@@ -103,18 +103,18 @@ else if (!currentText.startsWith("{")) {
         return true;
     }
 
-    private static void createDocTagValue(final PsiBuilder builder) {
+    private static void createDocTagValue(PsiBuilder builder) {
         PsiBuilder.Marker marker = builder.mark();
         builder.advanceLexer();
         marker.done(JSDocTokenTypes.DOC_TAG_VALUE);
     }
 
-    private static boolean isInvalidTokenType(final PsiBuilder builder) {
-        final IElementType tokenType = builder.getTokenType();
+    private static boolean isInvalidTokenType(PsiBuilder builder) {
+        IElementType tokenType = builder.getTokenType();
         return builder.eof() || tokenType == JSDocTokenTypes.DOC_COMMENT_LEADING_ASTERISK || tokenType == JSDocTokenTypes.DOC_COMMENT_END;
     }
 
-    private static boolean isToCreateDocTagValue(final @NonNls String tokenText) {
+    private static boolean isToCreateDocTagValue(@NonNls String tokenText) {
         return tokenText.equals("@see") ||
             tokenText.equals("@class") ||
             tokenText.equals("@member") ||
diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSStatementWithLabelReferenceImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSStatementWithLabelReferenceImpl.java
index 3a826e53..e05e49e1 100644
--- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSStatementWithLabelReferenceImpl.java
+++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/impl/JSStatementWithLabelReferenceImpl.java
@@ -146,7 +146,7 @@ public boolean isReferenceTo(PsiElement element) {
         @Override
         @RequiredReadAction
         public Object[] getVariants() {
-            final List labels = new ArrayList<>(1);
+            List labels = new ArrayList<>(1);
             processElements(element -> {
                 labels.add(element.getLabel());
                 return true;
diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/BaseJSSymbolProcessor.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/BaseJSSymbolProcessor.java
index ec9f0a91..6db49aa8 100644
--- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/BaseJSSymbolProcessor.java
+++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/BaseJSSymbolProcessor.java
@@ -85,9 +85,9 @@ abstract public class BaseJSSymbolProcessor implements PsiScopeProcessor {
     protected String myIteratedTypeName;
 
     protected BaseJSSymbolProcessor(
-        final PsiFile targetFile,
-        final boolean skipDclsInTargetFile,
-        final PsiElement context,
+        PsiFile targetFile,
+        boolean skipDclsInTargetFile,
+        PsiElement context,
         String[] contextIds
     ) {
         myTargetFile = targetFile;
@@ -110,7 +110,7 @@ protected BaseJSSymbolProcessor(
 
         myContextNameIds = contextIds;
 
-        final boolean notWithinWithStatement = PsiTreeUtil.getParentOfType(myContext, JSWithStatement.class) == null;
+        boolean notWithinWithStatement = PsiTreeUtil.getParentOfType(myContext, JSWithStatement.class) == null;
 
         if (((contextIds == null || contextIds.length == 0)
             && myContext instanceof JSReferenceExpression referenceExpression
@@ -126,16 +126,16 @@ protected BaseJSSymbolProcessor(
         }
     }
 
-    protected abstract String[] calculateContextIds(final JSReferenceExpression jsReferenceExpression);
+    protected abstract String[] calculateContextIds(JSReferenceExpression jsReferenceExpression);
 
-    public void setAddOnlyCompleteMatches(final boolean addOnlyCompleteMatches) {
+    public void setAddOnlyCompleteMatches(boolean addOnlyCompleteMatches) {
         myAddOnlyCompleteMatches = addOnlyCompleteMatches;
         myAllowPartialResults = false;
     }
 
 
     protected boolean isFromRelevantFileOrDirectory() {
-        final PsiFile psiFile = myCurrentFile;
+        PsiFile psiFile = myCurrentFile;
 
         return myTargetFile == psiFile || false;
         //(myTargetFile != null &&
@@ -147,7 +147,7 @@ protected boolean isFromRelevantFileOrDirectory() {
     private static ThreadLocal contextHolder = new ThreadLocal<>();
 
     @RequiredReadAction
-    public static void doEvalForExpr(JSExpression rawqualifier, final PsiFile myTargetFile, TypeProcessor typeProcessor) {
+    public static void doEvalForExpr(JSExpression rawqualifier, PsiFile myTargetFile, TypeProcessor typeProcessor) {
         EvaluateContext context = contextHolder.get();
         boolean contextHolderInitialized = false;
 
@@ -179,9 +179,9 @@ else if (context.isAlreadyProcessingItem(rawqualifier)) {
     @RequiredReadAction
     public static JSExpression getOriginalQualifier(JSExpression rawQualifier) {
         if (rawQualifier instanceof JSReferenceExpression qualifier) {
-            final TextRange textRange = qualifier.getTextRange();
+            TextRange textRange = qualifier.getTextRange();
             PsiFile targetFile = rawQualifier.getContainingFile();
-            final PsiElement context = targetFile.getContext();
+            PsiElement context = targetFile.getContext();
             if (context != null) {
                 targetFile = context.getContainingFile();
             }
@@ -191,7 +191,7 @@ public static JSExpression getOriginalQualifier(JSExpression rawQualifier) {
             if (!targetFile.isPhysical() && originalFile != null) {
                 PsiElement startElement;
                 if (context != null) {
-                    final PsiElement at = PsiTreeUtil.getNonStrictParentOfType(
+                    PsiElement at = PsiTreeUtil.getNonStrictParentOfType(
                         originalFile.findElementAt(context.getTextOffset()),
                         PsiLanguageInjectionHost.class
                     );
@@ -223,18 +223,18 @@ public static JSExpression getOriginalQualifier(JSExpression rawQualifier) {
             rawQualifier = qualifier;
         }
         else if (rawQualifier instanceof JSIndexedPropertyAccessExpression indexedPropertyAccessExpression) {
-            final JSExpression qualifier = indexedPropertyAccessExpression.getQualifier();
+            JSExpression qualifier = indexedPropertyAccessExpression.getQualifier();
             if (qualifier != null) {
-                final JSExpression jsExpression = getOriginalQualifier(qualifier);
+                JSExpression jsExpression = getOriginalQualifier(qualifier);
                 if (jsExpression != null && jsExpression.getParent() instanceof JSIndexedPropertyAccessExpression) {
                     return (JSExpression)jsExpression.getParent();
                 }
             }
         }
         else if (rawQualifier instanceof JSCallExpression call) {
-            final JSExpression qualifier = call.getMethodExpression();
+            JSExpression qualifier = call.getMethodExpression();
             if (qualifier != null) {
-                final JSExpression jsExpression = getOriginalQualifier(qualifier);
+                JSExpression jsExpression = getOriginalQualifier(qualifier);
                 if (jsExpression != null && jsExpression.getParent() instanceof JSCallExpression parentCall) {
                     return parentCall;
                 }
@@ -274,7 +274,7 @@ private static void doEvalForExpr(JSExpression rawQualifier, TypeProcessor typeP
             boolean wasPrototype = false;
 
             if (qualifier != null && "prototype".equals(qualifier.getReferencedName())) {
-                final JSExpression expression = qualifier.getQualifier();
+                JSExpression expression = qualifier.getQualifier();
                 if (expression instanceof JSReferenceExpression refExpr) {
                     qualifier = refExpr;
                     wasPrototype = true;
@@ -284,7 +284,7 @@ private static void doEvalForExpr(JSExpression rawQualifier, TypeProcessor typeP
             boolean topLevelQualifier = qualifier.getQualifier() == null;
 
             if (topLevelQualifier) {
-                final JSReferenceExpression expression =
+                JSReferenceExpression expression =
                     typeProcessor.ecma() ? qualifier : JSSymbolUtil.findReferenceExpressionUsedForClassExtending(qualifier);
                 if (!typeProcessor.ecma() && expression != qualifier && expression.getQualifier() == null) {
                     addType(expression.getText(), typeProcessor, context, qualifier);
@@ -292,7 +292,7 @@ private static void doEvalForExpr(JSExpression rawQualifier, TypeProcessor typeP
                 }
             }
 
-            final ResolveResult[] resolveResults = qualifier != null ? qualifier.multiResolve(false) : ResolveResult.EMPTY_ARRAY;
+            ResolveResult[] resolveResults = qualifier != null ? qualifier.multiResolve(false) : ResolveResult.EMPTY_ARRAY;
 
             if (resolveResults.length > 0) {
                 for (ResolveResult r : resolveResults) {
@@ -328,7 +328,7 @@ private static void doEvalForExpr(JSExpression rawQualifier, TypeProcessor typeP
                             }
 
                             if (!typeProcessor.ecma() || parameterType == null) {
-                                final JSExpression expression = jsVariable.getInitializer();
+                                JSExpression expression = jsVariable.getInitializer();
                                 if (expression != null) {
                                     doEvalForExpr(expression, context.targetFile, typeProcessor);
                                 }
@@ -336,7 +336,7 @@ private static void doEvalForExpr(JSExpression rawQualifier, TypeProcessor typeP
                                     boolean hasSomeInfoAboutVar = false;
 
                                     if (topLevelQualifier) {
-                                        final ResolveProcessor processor = new ResolveProcessor(qualifier.getText(), true);
+                                        ResolveProcessor processor = new ResolveProcessor(qualifier.getText(), true);
                                         hasSomeInfoAboutVar = findDef(typeProcessor, context, qualifier, processor);
                                     }
 
@@ -390,9 +390,9 @@ else if (psiElement instanceof JSDefinitionExpression) {
                             else if (psiElement instanceof XmlToken xmlToken) {
                                 hasSomeType = true;
 
-                                final TagContextBuilder builder = new TagContextBuilder(xmlToken, HTML_ELEMENT_TYPE_NAME);
-                                final PsiElement element = builder.element;
-                                final String typeName = builder.typeName;
+                                TagContextBuilder builder = new TagContextBuilder(xmlToken, HTML_ELEMENT_TYPE_NAME);
+                                PsiElement element = builder.element;
+                                String typeName = builder.typeName;
 
                                 if (HTML_ELEMENT_TYPE_NAME.equals(typeName)) {
                                     hasSomeType = false;
@@ -402,13 +402,13 @@ else if (psiElement instanceof XmlToken xmlToken) {
                             }
                             else if (psiElement instanceof JSNamedElement namedElement) {
                                 if (namedElement instanceof JSFunction function) {
-                                    final boolean inCall = rawQualifier.getParent() instanceof JSCallExpression;
+                                    boolean inCall = rawQualifier.getParent() instanceof JSCallExpression;
 
                                     if (!inCall && (!function.isGetProperty() && !function.isSetProperty())) {
                                         addType(FUNCTION_TYPE_NAME, typeProcessor, context, function);
                                         hasSomeType = true;
                                         if (wasPrototype) {
-                                            final String name = function.getName();
+                                            String name = function.getName();
                                             if (name != null) {
                                                 addType(name, typeProcessor, context, null);
                                             }
@@ -424,8 +424,8 @@ else if (function.isConstructor()) {
                                     else {
                                         String s = null;
                                         if (function.isSetProperty()) {
-                                            final JSParameterList parameterList = function.getParameterList();
-                                            final JSParameter[] parameters =
+                                            JSParameterList parameterList = function.getParameterList();
+                                            JSParameter[] parameters =
                                                 parameterList != null ? parameterList.getParameters() : JSParameter.EMPTY_ARRAY;
                                             s = parameters.length == 1 ? parameters[0].getTypeString() : null;
                                         }
@@ -523,8 +523,8 @@ else if (JSTokenTypes.ADDITIVE_OPERATIONS.contains(sign)
                     || JSTokenTypes.MULTIPLICATIVE_OPERATIONS.contains(sign)
                     || sign == JSTokenTypes.ANDAND || sign == JSTokenTypes.OROR) {
 
-                    final SimpleTypeProcessor lprocessor = new SimpleTypeProcessor(typeProcessor.getFeatures());
-                    final SimpleTypeProcessor rprocessor = new SimpleTypeProcessor(typeProcessor.getFeatures());
+                    SimpleTypeProcessor lprocessor = new SimpleTypeProcessor(typeProcessor.getFeatures());
+                    SimpleTypeProcessor rprocessor = new SimpleTypeProcessor(typeProcessor.getFeatures());
                     doEvalForExpr(lOperand, lprocessor, context);
                     doEvalForExpr(rOperand, rprocessor, context);
 
@@ -537,7 +537,7 @@ else if (JSTokenTypes.ADDITIVE_OPERATIONS.contains(sign)
                     }
                 }
                 else if (sign == JSTokenTypes.EQ) {
-                    final SimpleTypeProcessor rprocessor = new SimpleTypeProcessor(typeProcessor.getFeatures());
+                    SimpleTypeProcessor rprocessor = new SimpleTypeProcessor(typeProcessor.getFeatures());
                     doEvalForExpr(rOperand, rprocessor, context);
 
                     String evaluatedType = rprocessor.type;
@@ -560,7 +560,7 @@ else if (rawQualifier instanceof JSArrayLiteralExpression arrayLiteral) {
             }
         }
         else if (rawQualifier instanceof JSIndexedPropertyAccessExpression propertyAccess) {
-            final SimpleTypeProcessor lprocessor = new SimpleTypeProcessor(typeProcessor.getFeatures());
+            SimpleTypeProcessor lprocessor = new SimpleTypeProcessor(typeProcessor.getFeatures());
 
             doEvalForExpr(propertyAccess.getQualifier(), lprocessor, context);
 
@@ -592,7 +592,7 @@ else if (rawQualifier instanceof JSThisExpression thisExpr) {
         else if (rawQualifier instanceof JSSuperExpression superExpr) {
             JSClass jsClass = JSResolveUtil.getClassOfContext(superExpr);
             if (jsClass != null) {
-                final JSClass[] classes = jsClass.getSuperClasses();
+                JSClass[] classes = jsClass.getSuperClasses();
                 if (classes.length > 0) {
                     addType(classes[0].getQualifiedName(), typeProcessor, context, classes[0]);
                 }
@@ -645,7 +645,7 @@ private static String evalComponentTypeFromArrayExpression(
                 return null;
             }
             context.addProcessingItem(rawqualifier);
-            final SimpleTypeProcessor lprocessor = new SimpleTypeProcessor(typeProcessor.getFeatures());
+            SimpleTypeProcessor lprocessor = new SimpleTypeProcessor(typeProcessor.getFeatures());
             doEvalForExpr(collectionExpression, lprocessor, context);
             return addComponentTypeFromProcessor(rawqualifier, typeProcessor, context, lprocessor);
         }
@@ -673,12 +673,12 @@ private static boolean isValidType(String parameterType) {
     }
 
     private static boolean findDef(
-        final TypeProcessor typeProcessor,
-        final EvaluateContext context,
-        final JSReferenceExpression qualifier,
-        final ResolveProcessor processor
+        TypeProcessor typeProcessor,
+        EvaluateContext context,
+        JSReferenceExpression qualifier,
+        ResolveProcessor processor
     ) {
-        final PsiElement parent = qualifier.getParent();
+        PsiElement parent = qualifier.getParent();
         JSResolveUtil.treeWalkUp(processor, qualifier, parent, qualifier);
 
         PsiElement jsElement = processor.getResult();
@@ -708,7 +708,7 @@ private static void tryAddBindowsType(JSReferenceExpression qualifier, TypeProce
         PsiElement contextElement = qualifier.getContainingFile().getContext();
 
         if (contextElement != null) {
-            final PsiFile containingFile = contextElement.getContainingFile();
+            PsiFile containingFile = contextElement.getContainingFile();
 
             if (isBindowsXml(containingFile)) {
             }
@@ -716,7 +716,7 @@ private static void tryAddBindowsType(JSReferenceExpression qualifier, TypeProce
     }
 
     @RequiredReadAction
-    private static boolean isBindowsXml(final PsiFile containingFile) {
+    private static boolean isBindowsXml(PsiFile containingFile) {
         return containingFile.getName().endsWith(".xml") && containingFile instanceof XmlFile;
     }
 
@@ -740,7 +740,7 @@ private static void addTypeFromDefExpr(TypeProcessor typeProcessor, EvaluateCont
 
         if (!context.visitedTypes.contains(type)) {
             context.visitedTypes.add(type);
-            final PsiElement parentElement = psiElement.getParent();
+            PsiElement parentElement = psiElement.getParent();
             if (parentElement instanceof JSAssignmentExpression assignment) {
                 JSExpression expr = assignment.getROperand();
                 while (expr instanceof JSAssignmentExpression rOperandAssignment) {
@@ -756,8 +756,8 @@ private static void addTypeFromDefExpr(TypeProcessor typeProcessor, EvaluateCont
         }
     }
 
-    private static void getTypeFromConstant(final JSExpression rawqualifier, TypeProcessor typeProcessor, EvaluateContext context) {
-        final ASTNode childNode = rawqualifier.getNode().getFirstChildNode();
+    private static void getTypeFromConstant(JSExpression rawqualifier, TypeProcessor typeProcessor, EvaluateContext context) {
+        ASTNode childNode = rawqualifier.getNode().getFirstChildNode();
         IElementType constantType = childNode.getElementType();
 
         String type = JavaScriptTokenSets.STRING_LITERALS.contains(constantType)
@@ -775,7 +775,7 @@ private static void getTypeFromConstant(final JSExpression rawqualifier, TypePro
             : null;
 
         if (type == NUMBER_TYPE_NAME && typeProcessor.ecma()) {
-            final String text = childNode.getText();
+            String text = childNode.getText();
             if (text.indexOf('.') == -1) {
                 type = INT_TYPE;
             }
@@ -789,15 +789,15 @@ private static void getTypeFromConstant(final JSExpression rawqualifier, TypePro
         }
     }
 
-    protected void addPackageScope(final List possibleNameIds, final JSClass jsClass, final PsiElement expression) {
-        final String packageQualifier = JSResolveUtil.findPackageStatementQualifier(expression);
+    protected void addPackageScope(List possibleNameIds, JSClass jsClass, PsiElement expression) {
+        String packageQualifier = JSResolveUtil.findPackageStatementQualifier(expression);
         String qName;
 
         if (packageQualifier != null) {
             buildIndexListFromQNameAndCorrectQName(packageQualifier, jsClass, possibleNameIds);
         }
         else if (jsClass != null && (qName = jsClass.getQualifiedName()) != null && !qName.equals(jsClass.getName())) {
-            final int index = qName.lastIndexOf('.');
+            int index = qName.lastIndexOf('.');
             if (index > 0) {
                 buildIndexListFromQNameAndCorrectQName(qName.substring(0, index), jsClass, possibleNameIds);
             }
@@ -810,15 +810,15 @@ else if (jsClass == null) {
         }
     }
 
-    protected String buildIndexListFromQNameAndCorrectQName(String type, final PsiElement source, List possibleNameIds) {
-        final List list = new ArrayList<>();
+    protected String buildIndexListFromQNameAndCorrectQName(String type, PsiElement source, List possibleNameIds) {
+        List list = new ArrayList<>();
         type = addIndexListFromQName(type, source, list);
 
         possibleNameIds.add(ArrayUtil.toStringArray(list));
         return type;
     }
 
-    public static String addIndexListFromQName(String type, final PsiElement source, final List list) {
+    public static String addIndexListFromQName(String type, PsiElement source, List list) {
         int i = type.indexOf('.');
         int lastI = 0;
 
@@ -841,7 +841,7 @@ public static String addIndexListFromQName(String type, final PsiElement source,
         return type;
     }
 
-    private static void addType(String type, TypeProcessor typeProcessor, EvaluateContext context, final PsiElement source) {
+    private static void addType(String type, TypeProcessor typeProcessor, EvaluateContext context, PsiElement source) {
         if (type == null) {
             return;
         }
@@ -851,7 +851,7 @@ private static void addType(String type, TypeProcessor typeProcessor, EvaluateCo
         }
 
         if (!(typeProcessor instanceof GenericTypeParametersClient)) {
-            final int gtPos = type.indexOf('<');
+            int gtPos = type.indexOf('<');
             if (gtPos > 0 && type.charAt(gtPos - 1) == '.') {
                 type = type.substring(0, gtPos - 1);
             }
@@ -864,7 +864,7 @@ private static void addType(String type, TypeProcessor typeProcessor, EvaluateCo
     }
 
     @Override
-    public  T getHint(final Key hintClass) {
+    public  T getHint(Key hintClass) {
         return null;
     }
 
@@ -884,7 +884,7 @@ interface HierarchyProcessor {
         boolean processClass(JSClass clazz);
     }
 
-    protected void doIterateTypeHierarchy(final String[] contextIds, final HierarchyProcessor processor) {
+    protected void doIterateTypeHierarchy(String[] contextIds, HierarchyProcessor processor) {
         StringBuilder builder = new StringBuilder();
         for (String cnameId : contextIds) {
             if (builder.length() > 0) {
@@ -893,7 +893,7 @@ protected void doIterateTypeHierarchy(final String[] contextIds, final Hierarchy
             builder.append(cnameId);
         }
 
-        final String typeName = builder.toString();
+        String typeName = builder.toString();
         if (typeName.length() == 0) {
             return;
         }
@@ -903,8 +903,8 @@ protected void doIterateTypeHierarchy(final String[] contextIds, final Hierarchy
         myIteratedTypeName = null;
     }
 
-    protected void doIterateHierarchy(final String typeName, final HierarchyProcessor processor) {
-        final PsiElement clazz = JSResolveUtil.findClassByQName(typeName, myContext);
+    protected void doIterateHierarchy(String typeName, final HierarchyProcessor processor) {
+        PsiElement clazz = JSResolveUtil.findClassByQName(typeName, myContext);
         if (clazz instanceof JSClass jsClass) {
             for (JSClass superClazz : jsClass.getSuperClasses()) {
                 superClazz.processDeclarations(
@@ -917,7 +917,7 @@ protected void doIterateHierarchy(final String typeName, final HierarchyProcesso
 
                         @Override
                         @RequiredReadAction
-                        public boolean execute(@Nonnull PsiElement element, final ResolveState state) {
+                        public boolean execute(@Nonnull PsiElement element, ResolveState state) {
                             return !(element instanceof JSClass jsClass && !processor.processClass(jsClass));
                         }
                     },
@@ -935,22 +935,22 @@ public static class EvaluateContext {
         private Set processingItems;
         private PsiElement source;
 
-        public EvaluateContext(final PsiFile targetFile) {
+        public EvaluateContext(PsiFile targetFile) {
             this.targetFile = targetFile;
         }
 
-        public boolean isAlreadyProcessingItem(final JSExpression rawqualifier) {
+        public boolean isAlreadyProcessingItem(JSExpression rawqualifier) {
             return processingItems != null && processingItems.contains(rawqualifier);
         }
 
-        public void addProcessingItem(final JSExpression rawqualifier) {
+        public void addProcessingItem(JSExpression rawqualifier) {
             if (processingItems == null) {
                 processingItems = new HashSet<>();
             }
             processingItems.add(rawqualifier);
         }
 
-        public void removeProcessingItem(final JSExpression rawqualifier) {
+        public void removeProcessingItem(JSExpression rawqualifier) {
             processingItems.remove(rawqualifier);
         }
 
@@ -958,13 +958,13 @@ public PsiElement getSource() {
             return source;
         }
 
-        public void setSource(final PsiElement source) {
+        public void setSource(PsiElement source) {
             this.source = source;
         }
     }
 
     public interface TypeProcessor {
-        void process(@Nonnull String type, @Nonnull EvaluateContext evaluateContext, final PsiElement source);
+        void process(@Nonnull String type, @Nonnull EvaluateContext evaluateContext, PsiElement source);
 
         @Deprecated
         boolean ecma();
@@ -989,11 +989,11 @@ public SimpleTypeProcessor(Set features) {
         }
 
         @Override
-        public void process(@Nonnull final String _type, @Nonnull final EvaluateContext evaluateContext, final PsiElement _source) {
+        public void process(@Nonnull String _type, @Nonnull EvaluateContext evaluateContext, PsiElement _source) {
             setType(type != null && !type.equals(_type) ? ANY_TYPE : _type, _source);
         }
 
-        private void setType(final String s, final PsiElement _source) {
+        private void setType(String s, PsiElement _source) {
             type = s;
             source = _source;
         }
@@ -1010,13 +1010,13 @@ public boolean ecma() {
 
         @Override
         @RequiredReadAction
-        public boolean execute(@Nonnull PsiElement element, final ResolveState state) {
+        public boolean execute(@Nonnull PsiElement element, ResolveState state) {
             result = element;
             return true;
         }
 
         @Override
-        public void setUnknownElement(@Nonnull final PsiElement _element) {
+        public void setUnknownElement(@Nonnull PsiElement _element) {
             setType(ANY_TYPE, _element);
         }
 
@@ -1035,11 +1035,11 @@ public static class TagContextBuilder {
 
         public TagContextBuilder(PsiElement psiElement, String defaultName) {
             String typeName = null;
-            final XmlTag tag = PsiTreeUtil.getParentOfType(psiElement, XmlTag.class);
+            XmlTag tag = PsiTreeUtil.getParentOfType(psiElement, XmlTag.class);
             JSClass element = null;
 
             if (tag != null) {
-                final PsiFile containingFile = tag.getContainingFile();
+                PsiFile containingFile = tag.getContainingFile();
 
                 if (isBindowsXml(containingFile)) {
                     typeName = "Bi" + tag.getLocalName();
diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/JSImportHandlingUtil.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/JSImportHandlingUtil.java
index c672acb8..1545185c 100644
--- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/JSImportHandlingUtil.java
+++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/JSImportHandlingUtil.java
@@ -66,7 +66,7 @@ public class JSImportHandlingUtil {
         IMPORT_RESOLVE_CACHE =
         new UserDataCache<>() {
             @Override
-            protected CachedValue> compute(final PsiElement psiElement, final Object p) {
+            protected CachedValue> compute(PsiElement psiElement, Object p) {
                 return CachedValuesManager.getManager(psiElement.getProject()).createCachedValue(
                     () -> new CachedValueProvider.Result>(
                         new ConcurrentHashMap<>(),
@@ -77,8 +77,8 @@ protected CachedValue> compute(final
             }
         };
 
-    public static String resolveTypeName(final String _str, @Nonnull PsiElement context) {
-        final JSImportedElementResolveResult resolveResult = _resolveTypeName(_str, context);
+    public static String resolveTypeName(String _str, @Nonnull PsiElement context) {
+        JSImportedElementResolveResult resolveResult = _resolveTypeName(_str, context);
         if (resolveResult == null) {
             return _str;
         }
@@ -86,16 +86,16 @@ public static String resolveTypeName(final String _str, @Nonnull PsiElement cont
     }
 
     // TODO _str should be JSReferenceExpression for caching!
-    private static JSImportedElementResolveResult _resolveTypeName(final String _name, @Nonnull PsiElement context) {
+    private static JSImportedElementResolveResult _resolveTypeName(String _name, @Nonnull PsiElement context) {
         String name = _name;
         if (name == null) {
             return null;
         }
-        final int i = name.indexOf('<');
+        int i = name.indexOf('<');
         String signature = null;
 
         if (i != -1) {
-            final int index = name.lastIndexOf('.', i);
+            int index = name.lastIndexOf('.', i);
             if (index == -1) {
                 return null;
             }
@@ -107,9 +107,9 @@ private static JSImportedElementResolveResult _resolveTypeName(final String _nam
             return null;
         }
 
-        final Ref resultRef = new Ref();
+        Ref resultRef = new Ref();
 
-        final String name1 = name;
+        String name1 = name;
         JSResolveUtil.walkOverStructure(
             context,
             context1 -> {
@@ -117,13 +117,13 @@ private static JSImportedElementResolveResult _resolveTypeName(final String _nam
 
                 if (context1 instanceof XmlBackedJSClassImpl xmlBackedJSClass) { // reference list in mxml
                     XmlTag rootTag = xmlBackedJSClass.getParent();
-                    final XmlElementDescriptor descriptor = rootTag != null ? rootTag.getDescriptor() : null;
+                    XmlElementDescriptor descriptor = rootTag != null ? rootTag.getDescriptor() : null;
                     PsiElement element = descriptor != null ? descriptor.getDeclaration() : null;
                     if (element instanceof XmlFile xmlFile) {
                         element = XmlBackedJSClassImpl.getXmlBackedClass(xmlFile);
                     }
 
-                    final String s = element instanceof JSClass jsClass ? jsClass.getQualifiedName() : rootTag.getLocalName();
+                    String s = element instanceof JSClass jsClass ? jsClass.getQualifiedName() : rootTag.getLocalName();
                     resolved = new JSImportedElementResolveResult(s);
                 }
                 else if (context1 instanceof JSQualifiedNamedElement qualifiedNamedElement) {
@@ -134,13 +134,13 @@ else if (context1 instanceof JSQualifiedNamedElement qualifiedNamedElement) {
                         resolved = resolveTypeNameUsingImports(name1, qualifiedNamedElement);
 
                         if (resolved == null) {
-                            final String qName = qualifiedNamedElement.getQualifiedName();
-                            final String packageName = qName != null ? context1 instanceof JSPackageStatement
+                            String qName = qualifiedNamedElement.getQualifiedName();
+                            String packageName = qName != null ? context1 instanceof JSPackageStatement
                                 ? qName + "."
                                 : qName.substring(0, qName.lastIndexOf('.') + 1) : "";
 
                             if (packageName.length() != 0) {
-                                final PsiElement byQName = JSClassBase.findClassFromNamespace(packageName + name1, context1);
+                                PsiElement byQName = JSClassBase.findClassFromNamespace(packageName + name1, context1);
 
                                 if (byQName instanceof JSQualifiedNamedElement byQNameNamed) {
                                     resolved = new JSImportedElementResolveResult(byQNameNamed.getQualifiedName());
@@ -189,9 +189,9 @@ else if (context1 instanceof JSQualifiedNamedElement qualifiedNamedElement) {
         return result;
     }
 
-    private static JSQualifiedNamedElement resolveTypeNameInTheSamePackage(final String str, final PsiElement context) {
-        final String packageQualifierText = JSResolveUtil.findPackageStatementQualifier(context);
-        final String candidateText = packageQualifierText != null ? packageQualifierText + "." + str : str;
+    private static JSQualifiedNamedElement resolveTypeNameInTheSamePackage(String str, PsiElement context) {
+        String packageQualifierText = JSResolveUtil.findPackageStatementQualifier(context);
+        String candidateText = packageQualifierText != null ? packageQualifierText + "." + str : str;
 
         PsiElement byQName = JSClassBase.findClassFromNamespace(candidateText, context);
         if (byQName instanceof JSQualifiedNamedElement) {
@@ -210,7 +210,7 @@ private static JSQualifiedNamedElement resolveTypeNameInTheSamePackage(final Str
 
     public static
     @Nullable
-    JSImportedElementResolveResult resolveTypeNameUsingImports(@Nonnull final JSReferenceExpression expr) {
+    JSImportedElementResolveResult resolveTypeNameUsingImports(@Nonnull JSReferenceExpression expr) {
         if (expr.getQualifier() != null) {
             return null;
         }
@@ -227,7 +227,7 @@ JSImportedElementResolveResult resolveTypeNameUsingImports(@Nonnull final JSRefe
 
     private static
     @Nullable
-    JSImportedElementResolveResult resolveTypeNameUsingImports(final @Nonnull String referencedName, PsiNamedElement parent) {
+    JSImportedElementResolveResult resolveTypeNameUsingImports(@Nonnull String referencedName, PsiNamedElement parent) {
         LanguageVersion languageVersion = parent.getLanguageVersion();
         if (languageVersion instanceof JavaScriptVersionWithHelper javaScriptVersionWithHelper) {
             ResolveHelper helper = javaScriptVersionWithHelper.getHelper();
@@ -238,7 +238,7 @@ JSImportedElementResolveResult resolveTypeNameUsingImports(final @Nonnull String
             }
         }
 
-        final Map map = IMPORT_RESOLVE_CACHE.get(IMPORT_RESOLVE_CACHE_KEY, parent, null).getValue();
+        Map map = IMPORT_RESOLVE_CACHE.get(IMPORT_RESOLVE_CACHE_KEY, parent, null).getValue();
         JSImportedElementResolveResult result = map.get(referencedName);
 
         if (result == null) {
@@ -250,10 +250,10 @@ JSImportedElementResolveResult resolveTypeNameUsingImports(final @Nonnull String
     }
 
     private static JSImportedElementResolveResult resolveTypeNameUsingImportsInner(
-        final String referencedName,
-        final PsiNamedElement parent
+        String referencedName,
+        PsiNamedElement parent
     ) {
-        final Map value = IMPORT_LIST_CACHE.get(IMPORT_LIST_CACHE_KEY, parent, null).getValue();
+        Map value = IMPORT_LIST_CACHE.get(IMPORT_LIST_CACHE_KEY, parent, null).getValue();
         JSImportedElementResolveResult expression = FlexImportSupport.tryFindInMap(referencedName, parent, value);
         if (expression != null) {
             return expression;
@@ -263,22 +263,22 @@ private static JSImportedElementResolveResult resolveTypeNameUsingImportsInner(
             return checkTheSamePackageOrGlobal(referencedName, parent);
         }
         else if (parent instanceof JSFile && parent.getLanguage().isKindOf(JavaScriptSupportLoader.ECMA_SCRIPT_L4)) {
-            final PsiElement element = JSResolveUtil.getClassReferenceForXmlFromContext(parent);
+            PsiElement element = JSResolveUtil.getClassReferenceForXmlFromContext(parent);
 
             if (element instanceof XmlBackedJSClassImpl xmlBackedJSClass) {
-                final ResolveProcessor processor = new ResolveProcessor(referencedName);
-                final boolean b = xmlBackedJSClass.doImportFromScripts(processor, parent);
+                ResolveProcessor processor = new ResolveProcessor(referencedName);
+                boolean b = xmlBackedJSClass.doImportFromScripts(processor, parent);
 
                 if (!b) {
-                    final JSQualifiedNamedElement jsClass = (JSQualifiedNamedElement)processor.getResult();
+                    JSQualifiedNamedElement jsClass = (JSQualifiedNamedElement)processor.getResult();
                     return new JSImportedElementResolveResult(jsClass.getQualifiedName(), jsClass, processor.getImportUsed());
                 }
 
                 JSQualifiedNamedElement jsClass = resolveTypeNameInTheSamePackage(referencedName, element);
 
                 if (jsClass == null) {
-                    final JSClass parentClass = (JSClass)element;
-                    final JSClass[] classes = parentClass.getSuperClasses();
+                    JSClass parentClass = (JSClass)element;
+                    JSClass[] classes = parentClass.getSuperClasses();
 
                     if (classes != null && classes.length > 0 && referencedName.equals(classes[0].getName())) {
                         jsClass = classes[0];
@@ -290,7 +290,7 @@ else if (parent instanceof JSFile && parent.getLanguage().isKindOf(JavaScriptSup
                 }
             }
             else {
-                final JSImportedElementResolveResult resolveResult = checkTheSamePackageOrGlobal(referencedName, parent);
+                JSImportedElementResolveResult resolveResult = checkTheSamePackageOrGlobal(referencedName, parent);
                 if (resolveResult != null) {
                     return resolveResult;
                 }
@@ -307,7 +307,7 @@ else if (parent instanceof XmlBackedJSClassImpl xmlBackedJSClass) {
                 return new JSImportedElementResolveResult(jsClass.getQualifiedName(), jsClass, null);
             }
 
-            final Ref result = new Ref();
+            Ref result = new Ref();
             processInlineComponentsInScope(
                 xmlBackedJSClass,
                 inlineComponent -> {
@@ -337,8 +337,8 @@ private static boolean processInlineComponentsInScope(XmlBackedJSClassImpl conte
         return true;
     }
 
-    private static JSImportedElementResolveResult checkTheSamePackageOrGlobal(final String referencedName, final PsiNamedElement parent) {
-        final JSQualifiedNamedElement jsClass = resolveTypeNameInTheSamePackage(referencedName, parent);
+    private static JSImportedElementResolveResult checkTheSamePackageOrGlobal(String referencedName, PsiNamedElement parent) {
+        JSQualifiedNamedElement jsClass = resolveTypeNameInTheSamePackage(referencedName, parent);
 
         if (jsClass != null) {
             return new JSImportedElementResolveResult(jsClass.getQualifiedName(), jsClass, null);
@@ -346,20 +346,20 @@ private static JSImportedElementResolveResult checkTheSamePackageOrGlobal(final
         return null;
     }
 
-    public static boolean tryResolveImports(final PsiScopeProcessor processor, PsiNamedElement parent, @Nonnull PsiElement place) {
+    public static boolean tryResolveImports(PsiScopeProcessor processor, PsiNamedElement parent, @Nonnull PsiElement place) {
         return !isAdequatePlaceForImport(parent, place) || !importClass(processor, parent);
     }
 
-    public static boolean importClass(final PsiScopeProcessor processor, final PsiNamedElement parent) {
+    public static boolean importClass(PsiScopeProcessor processor, PsiNamedElement parent) {
         if (processor instanceof ResolveProcessor resolveProcessor && resolveProcessor.isLocalResolve()) {
             return false;
         }
         ResolveProcessor resolveProcessor = (ResolveProcessor)processor;
-        final String s = resolveProcessor.getName();
+        String s = resolveProcessor.getName();
 
         if (s != null) {
             if (resolveProcessor.specificallyAskingToResolveQualifiedNames()) {
-                final Map value = IMPORT_LIST_CACHE.get(IMPORT_LIST_CACHE_KEY, parent, null).getValue();
+                Map value = IMPORT_LIST_CACHE.get(IMPORT_LIST_CACHE_KEY, parent, null).getValue();
                 JSImportedElementResolveResult resolveResult =
                     FlexImportSupport.tryFindInMap(s, parent, value, resolveProcessor.getQualifiedNameToImport());
                 if (dispatchResult(resolveResult, processor)) {
@@ -367,7 +367,7 @@ public static boolean importClass(final PsiScopeProcessor processor, final PsiNa
                 }
             }
 
-            final JSImportedElementResolveResult expression = resolveTypeNameUsingImports(s, parent);
+            JSImportedElementResolveResult expression = resolveTypeNameUsingImports(s, parent);
 
             if (dispatchResult(expression, processor)) {
                 return true;
@@ -380,7 +380,7 @@ public static boolean importClass(final PsiScopeProcessor processor, final PsiNa
             )) {
                 return false;
             }
-            final String packageQualifierText = JSResolveUtil.findPackageStatementQualifier(parent);
+            String packageQualifierText = JSResolveUtil.findPackageStatementQualifier(parent);
             importClassViaHelper(processor, parent, packageQualifierText);
         }
 
@@ -389,7 +389,7 @@ public static boolean importClass(final PsiScopeProcessor processor, final PsiNa
 
     private static boolean dispatchResult(JSImportedElementResolveResult expression, PsiScopeProcessor processor) {
         if (expression != null) {
-            final PsiElement element = expression.resolvedElement;
+            PsiElement element = expression.resolvedElement;
 
             if (element != null) {
                 ResolveState state = ResolveState.initial();
@@ -404,25 +404,25 @@ private static boolean dispatchResult(JSImportedElementResolveResult expression,
     }
 
     public static void importClassViaHelper(
-        final PsiScopeProcessor processor,
-        final PsiNamedElement file,
-        final String packageQualifierText
+        PsiScopeProcessor processor,
+        PsiNamedElement file,
+        String packageQualifierText
     ) {
         for (JSResolveHelper helper : Extensions.getExtensions(JSResolveHelper.EP_NAME)) {
             helper.importClass(processor, file, packageQualifierText);
         }
     }
 
-    public static boolean isAdequatePlaceForImport(final PsiNamedElement parent, @Nonnull PsiElement place) {
+    public static boolean isAdequatePlaceForImport(PsiNamedElement parent, @Nonnull PsiElement place) {
         if (parent instanceof JSFile && !parent.getLanguage().isKindOf(JavaScriptSupportLoader.ECMA_SCRIPT_L4)) {
             return false;
         }
 
         if (place instanceof JSReferenceExpression) {
-            final PsiElement placeParent = place.getParent();
+            PsiElement placeParent = place.getParent();
 
             if (placeParent instanceof JSReferenceExpression) {
-                final PsiElement currentParent = JSResolveUtil.getTopReferenceParent(placeParent);
+                PsiElement currentParent = JSResolveUtil.getTopReferenceParent(placeParent);
 
                 if (JSResolveUtil.isSelfReference(currentParent, place) ||
                     //currentParent instanceof JSDefinitionExpression ||
@@ -443,10 +443,10 @@ else if (!(place instanceof JSFile)) {
 
     private static class ImportListDataCache extends UserDataCache>, PsiElement, Object> {
         @Override
-        protected final CachedValue> compute(final PsiElement owner, Object o) {
+        protected final CachedValue> compute(PsiElement owner, Object o) {
             return CachedValuesManager.getManager(owner.getProject()).createCachedValue(
                 () -> {
-                    final Map result = new HashMap<>();
+                    Map result = new HashMap<>();
                     collect(result, owner, null);
                     return new CachedValueProvider.Result<>(result, owner);
                 },
@@ -454,11 +454,11 @@ protected final CachedValue> compute(final PsiElement owner,
             );
         }
 
-        private static void collect(final Map result, final PsiElement owner, Set visitedIncludes) {
+        private static void collect(Map result, PsiElement owner, Set visitedIncludes) {
             PsiElement[] children = PsiElement.EMPTY_ARRAY;
 
             if (owner instanceof JSIncludeDirective includeDirective) {
-                final PsiFile file = includeDirective.resolveFile();
+                PsiFile file = includeDirective.resolveFile();
                 if (file != null && (visitedIncludes == null || !visitedIncludes.contains(file))) {
                     if (visitedIncludes == null) {
                         visitedIncludes = new HashSet<>();
@@ -476,7 +476,7 @@ else if (owner instanceof JSFile || owner instanceof JSStubElementImpl) {
 
             for (PsiElement c : children) {
                 if (c instanceof JSImportStatement) {
-                    final JSImportStatement s = ((JSImportStatement)c);
+                    JSImportStatement s = ((JSImportStatement)c);
 
                     if (s.getImportText() != null) {
                         FlexImportSupport.appendToMap(result, s);
diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/JSImportedElementResolveResult.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/JSImportedElementResolveResult.java
index 97421ed4..4b98a3ab 100644
--- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/JSImportedElementResolveResult.java
+++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/JSImportedElementResolveResult.java
@@ -39,7 +39,7 @@ public JSImportedElementResolveResult(String _qualifiedName, PsiElement _resolve
         importStatement = _importString;
     }
 
-    public JSImportedElementResolveResult appendSignature(final String s) {
+    public JSImportedElementResolveResult appendSignature(String s) {
         return new JSImportedElementResolveResult(qualifiedName + s, resolvedElement, importStatement);
     }
 }
diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/ResolveProcessor.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/ResolveProcessor.java
index 0f64fb11..767b0989 100644
--- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/ResolveProcessor.java
+++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/ResolveProcessor.java
@@ -97,24 +97,24 @@ public class ResolveProcessor extends UserDataHolderBase implements PsiScopeProc
 
     private ResolveHelper myResolveHelper;
 
-    public ResolveProcessor(final String name) {
+    public ResolveProcessor(String name) {
         this(name, false);
     }
 
-    public ResolveProcessor(final String name, boolean toStopOnAssignment) {
+    public ResolveProcessor(String name, boolean toStopOnAssignment) {
         myName = name;
         myToStopOnAssignment = toStopOnAssignment;
         place = null;
     }
 
-    public ResolveProcessor(final String name, PsiElement _place) {
+    public ResolveProcessor(String name, PsiElement _place) {
         myName = name;
         place = _place;
-        final boolean b = place instanceof JSReferenceExpression && ((JSReferenceExpression)place).getQualifier() == null;
+        boolean b = place instanceof JSReferenceExpression && ((JSReferenceExpression)place).getQualifier() == null;
         allowUnqualifiedStaticsFromInstance = b;
 
         if (myName != null && place instanceof JSReferenceExpression placeRefExpr) {
-            final ASTNode node = place.getNode().findChildByType(JSTokenTypes.COLON_COLON);
+            ASTNode node = place.getNode().findChildByType(JSTokenTypes.COLON_COLON);
             String explicitNs = null;
 
             // TODO: e.g. protected is also ns
@@ -144,7 +144,7 @@ else if (qualifier instanceof JSReferenceExpression qualifierRefExpr
 
             if (parent instanceof JSReferenceList) {
                 if (parent.getNode().getElementType() == JSElementTypes.EXTENDS_LIST) {
-                    final PsiElement element = parent.getParent();
+                    PsiElement element = parent.getParent();
                     if (element instanceof JSClass jsClass) {
                         if (jsClass.isInterface()) {
                             myAcceptOnlyClasses = false;
@@ -190,7 +190,7 @@ public List getResults() {
     @RequiredReadAction
     public boolean execute(@Nonnull PsiElement element, ResolveState state) {
         if ((element instanceof JSVariable && !(element instanceof JSParameter)) || element instanceof JSFunction) {
-            final JSAttributeList attributeList = ((JSAttributeListOwner)element).getAttributeList();
+            JSAttributeList attributeList = ((JSAttributeListOwner)element).getAttributeList();
 
             // TODO: we should accept such values during resolve but make them invalid
             if (!acceptPrivateMembers
@@ -234,7 +234,7 @@ else if (!allowUnqualifiedStaticsFromInstance && attributeList != null
 
         if (myAcceptOnlyClasses || myAcceptOnlyInterfaces) {
             if (element instanceof JSClass jsClass) {
-                final boolean isInterface = jsClass.isInterface();
+                boolean isInterface = jsClass.isInterface();
 
                 if ((myAcceptOnlyClasses && isInterface) || (myAcceptOnlyInterfaces && !isInterface)) {
                     return true;
@@ -254,7 +254,7 @@ else if (!allowUnqualifiedStaticsFromInstance && attributeList != null
         }
 
         if (place != null && element instanceof JSFunction function && !(element instanceof JSFunctionExpression)) {
-            final PsiElement placeParent = place.getParent();
+            PsiElement placeParent = place.getParent();
 
             if (placeParent instanceof JSDefinitionExpression
                 || (myName == null && placeParent instanceof JSExpressionStatement /* when complete of setter*/)
@@ -273,7 +273,7 @@ else if (function.isSetProperty()) {
 
         if (place != null && (place.getParent() instanceof JSNewExpression || place instanceof JSSuperExpression)) {
             if (element instanceof JSClass jsClass) {
-                final JSFunction byName = jsClass.findFunctionByName(jsClass.getName());
+                JSFunction byName = jsClass.findFunctionByName(jsClass.getName());
                 if (byName != null) {
                     element = byName;
                 }
@@ -369,7 +369,7 @@ private JavaScriptImportStatementBase checkQualifiedNameHasNecessaryImport(
                 final String qName = ((JSQualifiedNamedElement)element).getQualifiedName();
 
                 if (qName != null && qName.indexOf('.') != -1) {
-                    final ResolveProcessor processor = new ResolveProcessor(myName) {
+                    ResolveProcessor processor = new ResolveProcessor(myName) {
                         @Override
                         @RequiredReadAction
                         public boolean execute(@Nonnull PsiElement element, ResolveState state) {
@@ -401,7 +401,7 @@ public boolean execute(@Nonnull PsiElement element, ResolveState state) {
                             myResolveStatus.add(Boolean.FALSE);
                         }
                         else {
-                            final ResolveResult[] resultsAsResolveResults = processor.getResultsAsResolveResults();
+                            ResolveResult[] resultsAsResolveResults = processor.getResultsAsResolveResults();
                             if (resultsAsResolveResults.length != 0) {
                                 s = ((JSResolveUtil.MyResolveResult)resultsAsResolveResults[0]).getImportUsed();
                             }
@@ -414,7 +414,7 @@ public boolean execute(@Nonnull PsiElement element, ResolveState state) {
     }
 
     @RequiredReadAction
-    private static PsiElement getElement(final PsiElement element) {
+    private static PsiElement getElement(PsiElement element) {
         return element instanceof XmlTag xmlTag
             ? xmlTag.getAttribute("name").getValueElement().getChildren()[1]
             : element;
@@ -431,11 +431,11 @@ public  T getHint(@Nonnull Key hintClass) {
         return null;
     }
 
-    protected void setTypeName(final String qualifiedName) {
+    protected void setTypeName(String qualifiedName) {
         myTypeName = qualifiedName;
     }
 
-    public void configureClassScope(final JSClass jsClass) {
+    public void configureClassScope(JSClass jsClass) {
         if (jsClass != null) {
             myClassScopeTypeName = jsClass.getQualifiedName();
         }
@@ -450,11 +450,11 @@ public void handleEvent(Event event, Object associated) {
         if (event == Event.SET_DECLARATION_HOLDER) {
             if (associated instanceof JSClass) {
                 myClassDeclarationStarted = true;
-                final JSClass jsClass = (JSClass)associated;
+                JSClass jsClass = (JSClass)associated;
                 final String qName = jsClass.getQualifiedName();
 
                 if (!encounteredDynamicClassesSet) {
-                    final JSAttributeList attributeList = jsClass.getAttributeList();
+                    JSAttributeList attributeList = jsClass.getAttributeList();
                     if (attributeList != null && attributeList.hasModifier(JSAttributeList.ModifierType.DYNAMIC)) {
                         encounteredDynamicClasses = true;
                     }
@@ -472,9 +472,9 @@ public void handleEvent(Event event, Object associated) {
                         acceptProtectedMembers = myClassScopeTypeName.equals(qName);
 
                         if (!acceptProtectedMembers) {
-                            final PsiElement element = JSClassImpl.findClassFromNamespace(myClassScopeTypeName, place);
+                            PsiElement element = JSClassImpl.findClassFromNamespace(myClassScopeTypeName, place);
                             if (element instanceof JSClass) {
-                                final boolean b = element.processDeclarations(
+                                boolean b = element.processDeclarations(
                                     new ResolveProcessor(null) {
                                         {
                                             setTypeContext(true);
@@ -514,7 +514,7 @@ public boolean execute(@Nonnull PsiElement element, ResolveState state) {
                 }
             }
             else if (associated instanceof JSAttributeListOwner attributeListOwner) {
-                final JSAttributeList attributeList = attributeListOwner.getAttributeList();
+                JSAttributeList attributeList = attributeListOwner.getAttributeList();
 
                 if (attributeList != null && attributeList.hasModifier(JSAttributeList.ModifierType.STATIC)
                     && (place == null || !(place.getParent() instanceof JSNewExpression))) {
@@ -522,7 +522,7 @@ else if (associated instanceof JSAttributeListOwner attributeListOwner) {
                 }
 
                 if (associated instanceof JSFunctionExpression functionExpression) {
-                    final PsiElement context = functionExpression.getContainingFile().getContext();
+                    PsiElement context = functionExpression.getContainingFile().getContext();
                     if (!(context instanceof XmlAttributeValue)) {
                         encounteredFunctionExpression = true; // we create anonymous fun exprs for event handlers
                     }
@@ -539,7 +539,7 @@ public boolean isToProcessHierarchy() {
         return toProcessHierarchy;
     }
 
-    public void setToProcessHierarchy(final boolean toProcessHierarchy) {
+    public void setToProcessHierarchy(boolean toProcessHierarchy) {
         this.toProcessHierarchy = toProcessHierarchy;
     }
 
@@ -547,7 +547,7 @@ public boolean isToSkipClassDeclarationOnce() {
         return toSkipClassDeclarationOnce;
     }
 
-    public void setToSkipClassDeclarationsOnce(final boolean toSkipClassDeclarationOnce) {
+    public void setToSkipClassDeclarationsOnce(boolean toSkipClassDeclarationOnce) {
         this.toSkipClassDeclarationOnce = toSkipClassDeclarationOnce;
     }
 
@@ -555,7 +555,7 @@ public boolean foundAllValidResults() {
         return !encounteredFunctionExpression; // TODO: with statement too?
     }
 
-    public void setTypeContext(final boolean b) {
+    public void setTypeContext(boolean b) {
         myTypeContext = b;
     }
 
@@ -564,14 +564,14 @@ public boolean isTypeContext() {
     }
 
     public ResolveResult[] getResultsAsResolveResults() {
-        final List processorResults = getResults();
+        List processorResults = getResults();
         if (processorResults == null) {
             return ResolveResult.EMPTY_ARRAY;
         }
-        final ResolveResult[] results = new ResolveResult[processorResults.size()];
+        ResolveResult[] results = new ResolveResult[processorResults.size()];
 
         for (int i = 0; i < results.length; ++i) {
-            final PsiElement element = processorResults.get(i);
+            PsiElement element = processorResults.get(i);
             results[i] = new JSResolveUtil.MyResolveResult(
                 element,
                 myImportsUsed != null ? myImportsUsed.get(i) : null,
@@ -591,17 +591,17 @@ public Object[] getResultsAsObjects() {
 
     @RequiredReadAction
     public Object[] getResultsAsObjects(String qualifiedNameToSkip) {
-        final List processorResults = getResults();
+        List processorResults = getResults();
         if (processorResults == null) {
             return ArrayUtil.EMPTY_OBJECT_ARRAY;
         }
-        final int numberOfVariants = processorResults.size();
-        final List objects = new ArrayList<>(numberOfVariants);
-        final Set processedCandidateNames = new HashSet<>(numberOfVariants);
+        int numberOfVariants = processorResults.size();
+        List objects = new ArrayList<>(numberOfVariants);
+        Set processedCandidateNames = new HashSet<>(numberOfVariants);
 
         for (int i = 0; i < numberOfVariants; ++i) {
-            final PsiElement namedElement = processorResults.get(i);
-            final String name = getName((PsiNamedElement)namedElement);
+            PsiElement namedElement = processorResults.get(i);
+            String name = getName((PsiNamedElement)namedElement);
             if (name == null) {
                 continue;
             }
@@ -628,7 +628,7 @@ public boolean isToProcessMembers() {
         return toProcessMembers;
     }
 
-    public void setToProcessMembers(final boolean toProcessMembers) {
+    public void setToProcessMembers(boolean toProcessMembers) {
         this.toProcessMembers = toProcessMembers;
     }
 
@@ -640,7 +640,7 @@ public boolean checkVisited(String className) {
         return false;
     }
 
-    public void setProcessStatics(final boolean processStatics) {
+    public void setProcessStatics(boolean processStatics) {
         this.processStatics = processStatics;
     }
 
@@ -648,7 +648,7 @@ public boolean isLocalResolve() {
         return localResolve;
     }
 
-    public void setLocalResolve(final boolean localResolve) {
+    public void setLocalResolve(boolean localResolve) {
         this.localResolve = localResolve;
     }
 
diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/VariantsProcessor.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/VariantsProcessor.java
index e5213079..4e573ca7 100644
--- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/VariantsProcessor.java
+++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/VariantsProcessor.java
@@ -57,17 +57,17 @@ public VariantsProcessor(String[] nameIds, PsiFile targetFile, boolean skipDclsI
         nameIds = myContextNameIds;
 
         boolean hasSomeInfoAvailable = nameIds != null && nameIds.length > 0;
-        final List possibleNameComponents = new ArrayList<>(1);
+        List possibleNameComponents = new ArrayList<>(1);
         myCurrentFile = targetFile.getOriginalFile();
         //myTargetFiles = new HashSet();
 
         boolean allTypesResolved = false;
         boolean doAddContextIds = true;
 
-        final JSClass jsClass = PsiTreeUtil.getParentOfType(context, JSClass.class);
+        JSClass jsClass = PsiTreeUtil.getParentOfType(context, JSClass.class);
 
         if (context instanceof JSReferenceExpression) {
-            final JSReferenceExpression refExpr = (JSReferenceExpression)context;
+            JSReferenceExpression refExpr = (JSReferenceExpression)context;
             JSExpression qualifier = refExpr.getQualifier();
 
             if (qualifier != null) {
@@ -82,12 +82,12 @@ else if (JSResolveUtil.getTypeFromTagNameInMxml(myCurrentFile.getContext()) != n
                     }
                 }
 
-                final CompletionTypeProcessor processor = new CompletionTypeProcessor(possibleNameComponents);
+                CompletionTypeProcessor processor = new CompletionTypeProcessor(possibleNameComponents);
                 doEvalForExpr(getOriginalQualifier(qualifier), myTargetFile, processor);
                 allTypesResolved = processor.getAllTypesResolved();
             }
             else {
-                final PsiElement parent = refExpr.getParent();
+                PsiElement parent = refExpr.getParent();
 
                 if (parent instanceof JavaScriptImportStatementBase) {
                     myProcessOnlyTypes = true;
@@ -130,8 +130,8 @@ else if (jsClass != null) {
     }
 
     @RequiredReadAction
-    private void updateCanUseOnlyCompleteMatchesFromString(final String qName, Object source, PsiElement clazz) {
-        final boolean wasSet = myAddOnlyCompleteMatchesSet;
+    private void updateCanUseOnlyCompleteMatchesFromString(String qName, Object source, PsiElement clazz) {
+        boolean wasSet = myAddOnlyCompleteMatchesSet;
 
         if (myAddOnlyCompleteMatches || !wasSet) {
             myAddOnlyCompleteMatchesSet = true;
@@ -155,7 +155,7 @@ private void updateCanUseOnlyCompleteMatchesFromString(final String qName, Objec
                         myAddOnlyCompleteMatches = true;
                     }
 
-                    final JSAttributeList attributeList = jsClass.getAttributeList();
+                    JSAttributeList attributeList = jsClass.getAttributeList();
                     if (attributeList != null && attributeList.hasModifier(JSAttributeList.ModifierType.DYNAMIC)
                         && !OBJECT_CLASS_NAME.equals(qName)) {
                         myAddOnlyCompleteMatches = false;
@@ -165,25 +165,25 @@ private void updateCanUseOnlyCompleteMatchesFromString(final String qName, Objec
         }
     }
 
-    private static boolean isObjectSourceThatDoesNotGiveExactKnowledgeAboutFunctionType(final Object source) {
+    private static boolean isObjectSourceThatDoesNotGiveExactKnowledgeAboutFunctionType(Object source) {
         return source instanceof JSFunctionExpression;
     }
 
     @RequiredReadAction
-    private void updateCanUseOnlyCompleteMatches(final JSClass jsClass) {
-        final JSAttributeList attributeList = jsClass != null ? jsClass.getAttributeList() : null;
+    private void updateCanUseOnlyCompleteMatches(JSClass jsClass) {
+        JSAttributeList attributeList = jsClass != null ? jsClass.getAttributeList() : null;
         if (attributeList != null && attributeList.hasModifier(JSAttributeList.ModifierType.DYNAMIC)) {
             myAddOnlyCompleteMatches = false;
         }
     }
 
     @RequiredReadAction
-    public void addLocalResults(final List results) {
+    public void addLocalResults(List results) {
         if (results == null) {
             return;
         }
 
-        final Set processedCandidateNames = new HashSet<>(results.size());
+        Set processedCandidateNames = new HashSet<>(results.size());
 
         for (PsiElement e : results) {
             if (e instanceof PsiNamedElement namedElement) {
@@ -245,8 +245,8 @@ public boolean getAllTypesResolved() {
         }
     }
 
-    private void addSupers(final String type, final List possibleNameIds, final EvaluateContext context) {
-        final String iteratedType = myIteratedTypeName;
+    private void addSupers(String type, List possibleNameIds, EvaluateContext context) {
+        String iteratedType = myIteratedTypeName;
         myIteratedTypeName = type;
         doIterateHierarchy(
             type,
@@ -291,8 +291,8 @@ public boolean execute(@Nonnull PsiElement element, ResolveState state) {
         return true;
     }
 
-    private void doAdd(final String nameId, final PsiElement element) {
-        final String name = nameId != null ? nameId : null;
+    private void doAdd(String nameId, PsiElement element) {
+        String name = nameId != null ? nameId : null;
 
         boolean seemsToBePrivateSymbol =
             name != null && name.length() > 0 && name.charAt(0) == '_' && name.length() > 1 && name.charAt(1) != '_';
@@ -328,13 +328,13 @@ else if (matchType == MatchType.COMPLETE) {
     }
 
     @RequiredReadAction
-    private LookupElement addLookupValue(PsiElement element, final String name, JSLookupUtil.LookupPriority priority) {
+    private LookupElement addLookupValue(PsiElement element, String name, JSLookupUtil.LookupPriority priority) {
         return JSLookupUtil.createLookupItem(element, name, priority);
     }
 
     @Override
     @RequiredReadAction
-    protected String[] calculateContextIds(final JSReferenceExpression jsReferenceExpression) {
+    protected String[] calculateContextIds(JSReferenceExpression jsReferenceExpression) {
         return JSResolveUtil.buildNameIdsForQualifier(JSResolveUtil.getRealRefExprQualifier(jsReferenceExpression));
     }
 
@@ -343,14 +343,14 @@ protected boolean isFromRelevantFileOrDirectory() {
         return super.isFromRelevantFileOrDirectory(); // || myTargetFiles.contains(myCurrentFile);
     }
 
-    private void addCompleteMatch(final PsiElement _element, String nameId) {
+    private void addCompleteMatch(PsiElement _element, String nameId) {
         addCompleteMatch(_element, nameId, true);
     }
 
-    private void addCompleteMatch(final PsiElement _element, String nameId, boolean doFilterting) {
+    private void addCompleteMatch(PsiElement _element, String nameId, boolean doFilterting) {
         if (!doAdd(_element, nameId, doFilterting)) {
             boolean removedFromPartialNames = false;
-            final Object el = myNames2CandidatesMap.get(nameId);
+            Object el = myNames2CandidatesMap.get(nameId);
 
             if (el != null) {
                 removedFromPartialNames =
@@ -364,7 +364,7 @@ private void addCompleteMatch(final PsiElement _element, String nameId, boolean
         PsiElement element = _element;
 
         if (isFromRelevantFileOrDirectory() && !myAddOnlyCompleteMatches) {
-            final Object o = addLookupValue(element, nameId, JSLookupUtil.LookupPriority.HIGHEST);
+            Object o = addLookupValue(element, nameId, JSLookupUtil.LookupPriority.HIGHEST);
             if (o != null) {
                 myNamesList.add(myThisFileNameListCount++, o);
             }
@@ -373,7 +373,7 @@ private void addCompleteMatch(final PsiElement _element, String nameId, boolean
             }
         }
         else {
-            final Object o = addLookupValue(element, nameId, JSLookupUtil.LookupPriority.HIGH);
+            Object o = addLookupValue(element, nameId, JSLookupUtil.LookupPriority.HIGH);
             if (o != null) {
                 myNamesList.add(o);
             }
@@ -391,7 +391,7 @@ private boolean doAdd(Object element, String nameId, boolean doFilterting) {
         return true;
     }
 
-    private void addPartialMatch(final PsiElement _element, String nameId) {
+    private void addPartialMatch(PsiElement _element, String nameId) {
         if (myAddOnlyCompleteMatches) {
             return;
         }
@@ -401,8 +401,8 @@ private void addPartialMatch(final PsiElement _element, String nameId) {
 
         PsiElement element = _element;
 
-        final Map targetNamesMap;
-        final JSLookupUtil.LookupPriority priority;
+        Map targetNamesMap;
+        JSLookupUtil.LookupPriority priority;
 
         if (isFromRelevantFileOrDirectory()) {
             priority = hasSomeSmartnessAvailable ? JSLookupUtil.LookupPriority.HIGHER : JSLookupUtil.LookupPriority.HIGHEST;
@@ -414,7 +414,7 @@ private void addPartialMatch(final PsiElement _element, String nameId) {
             targetNamesMap = myPartialMatchNamesMap;
         }
 
-        final Object o = addLookupValue(element, nameId, priority);
+        Object o = addLookupValue(element, nameId, priority);
 
         if (o != null) {
             targetNamesMap.put(nameId, o);
diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/WalkUpResolveProcessor.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/WalkUpResolveProcessor.java
index 3548cd81..13e6e3f8 100644
--- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/WalkUpResolveProcessor.java
+++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/resolve/WalkUpResolveProcessor.java
@@ -70,11 +70,11 @@ public WalkUpResolveProcessor(
             myInNewExpression = context.getParent() instanceof JSNewExpression;
 
             final List possibleNameIds = new ArrayList<>(1);
-            final JSExpression originalQualifier = refExpr.getQualifier();
-            final JSExpression qualifier = JSResolveUtil.getRealRefExprQualifier(refExpr);
+            JSExpression originalQualifier = refExpr.getQualifier();
+            JSExpression qualifier = JSResolveUtil.getRealRefExprQualifier(refExpr);
 
-            final JSClass jsClass = PsiTreeUtil.getParentOfType(context, JSClass.class); // get rid of it!
-            final JSElement file = PsiTreeUtil.getParentOfType(context, JSEmbeddedContentImpl.class, JSFile.class);
+            JSClass jsClass = PsiTreeUtil.getParentOfType(context, JSClass.class); // get rid of it!
+            JSElement file = PsiTreeUtil.getParentOfType(context, JSEmbeddedContentImpl.class, JSFile.class);
 
             if ((file instanceof JSFile && file.getContext() instanceof XmlAttributeValue) || file instanceof JSEmbeddedContentImpl) {
                 embeddedToHtmlAttr = true;
@@ -87,8 +87,8 @@ public WalkUpResolveProcessor(
 
                 if (qualifier instanceof JSThisExpression) {
                     JSResolveUtil.ContextResolver resolver = new JSResolveUtil.ContextResolver(qualifier);
-                    final String contextQualifierText = resolver.getQualifierAsString();
-                    final PsiElement clazz = contextQualifierText != null
+                    String contextQualifierText = resolver.getQualifierAsString();
+                    PsiElement clazz = contextQualifierText != null
                         ? JSClassImpl.findClassFromNamespace(contextQualifierText, context)
                         : null;
 
@@ -96,7 +96,7 @@ public WalkUpResolveProcessor(
                         JSAttributeList attrList = jsClass1.getAttributeList();
 
                         if (attrList != null) {
-                            final boolean clazzIsDynamic = attrList.hasModifier(JSAttributeList.ModifierType.DYNAMIC);
+                            boolean clazzIsDynamic = attrList.hasModifier(JSAttributeList.ModifierType.DYNAMIC);
                             if (clazzIsDynamic) {
                                 haveNotEncounteredDynamics = false;
                             }
@@ -110,7 +110,7 @@ public WalkUpResolveProcessor(
                 }
 
                 if (qualifier == null) {
-                    final JSImportedElementResolveResult expression = JSImportHandlingUtil.resolveTypeNameUsingImports(refExpr);
+                    JSImportedElementResolveResult expression = JSImportHandlingUtil.resolveTypeNameUsingImports(refExpr);
 
                     if (expression != null) {
                         possibleNameIds.add(JSResolveUtil.buildNameIdsForQualifier(JSResolveUtil.getRealRefExprQualifierFromResult(
@@ -147,7 +147,7 @@ public Set getFeatures() {
                         }
 
                         @Override
-                        public void process(@Nonnull String type, @Nonnull final EvaluateContext context, final PsiElement source) {
+                        public void process(@Nonnull String type, @Nonnull EvaluateContext context, PsiElement source) {
                             if (context.visitedTypes.contains(type)) {
                                 return;
                             }
@@ -169,7 +169,7 @@ public void process(@Nonnull String type, @Nonnull final EvaluateContext context
                         }
 
                         @Override
-                        public void setUnknownElement(@Nonnull final PsiElement element) {
+                        public void setUnknownElement(@Nonnull PsiElement element) {
                         }
 
                         @Override
@@ -189,14 +189,14 @@ else if (myContextIds == null && contextIds != null) {
             }
         }
         else if (contextIds != null) {
-            final List possibleNameIds = new ArrayList<>(1);
+            List possibleNameIds = new ArrayList<>(1);
             possibleNameIds.add(contextIds);
             iterateContextIds(contextIds, possibleNameIds, false);
             myContextIds = possibleNameIds.toArray(new String[possibleNameIds.size()][]);
         }
     }
 
-    private void iterateContextIds(final String[] contextIds, final List possibleNameIds, final boolean allowObject) {
+    private void iterateContextIds(String[] contextIds, List possibleNameIds, boolean allowObject) {
         doIterateTypeHierarchy(
             contextIds,
             clazz -> {
@@ -207,7 +207,7 @@ private void iterateContextIds(final String[] contextIds, final List p
     }
 
     protected MatchType isAcceptableQualifiedItem(String nameId, PsiElement element) {
-        final boolean partialMatch = myReferenceName.equals(nameId);
+        boolean partialMatch = myReferenceName.equals(nameId);
 
         if (partialMatch) {
             int i = -1;
@@ -216,7 +216,7 @@ protected MatchType isAcceptableQualifiedItem(String nameId, PsiElement element)
                 int maxContextScanCount = myBestMatchedContextId == -1 ? myContextIds.length : myBestMatchedContextId + 1;
 
                 for (int currentContextIndex = 0; currentContextIndex < maxContextScanCount; ++currentContextIndex) {
-                    final String[] contextIds = myContextIds[currentContextIndex];
+                    String[] contextIds = myContextIds[currentContextIndex];
 
                     if (i < 0) {
                         if (myBestMatchedContextId == -1) {
@@ -240,8 +240,8 @@ else if (currentContextIndex < myBestMatchedContextId) {
         return partialMatch ? MatchType.PARTIAL : MatchType.NOMATCH;
     }
 
-    private void doQualifiedCheck(String nameId, final PsiElement element) {
-        final MatchType matchType = isAcceptableQualifiedItem(nameId, element);
+    private void doQualifiedCheck(String nameId, PsiElement element) {
+        MatchType matchType = isAcceptableQualifiedItem(nameId, element);
 
         if (matchType == MatchType.PARTIAL) {
             addPartialResult(element);
@@ -252,7 +252,7 @@ else if (matchType == MatchType.COMPLETE) {
     }
 
     private void addCompleteResult(PsiElement element) {
-        final JSResolveUtil.MyResolveResult o = new JSResolveUtil.MyResolveResult(element);
+        JSResolveUtil.MyResolveResult o = new JSResolveUtil.MyResolveResult(element);
         addCompleteResult(o);
     }
 
@@ -272,7 +272,7 @@ private void addPartialResult(PsiElement element) {
         if (myPartialMatchResults == null) {
             myPartialMatchResults = new ArrayList<>(1);
         }
-        final JSResolveUtil.MyResolveResult o = new JSResolveUtil.MyResolveResult(element, !myAddOnlyCompleteMatches);
+        JSResolveUtil.MyResolveResult o = new JSResolveUtil.MyResolveResult(element, !myAddOnlyCompleteMatches);
 
         if (isFromRelevantFileOrDirectory()) {
             myPartialMatchResults.add(myFilePartialResultsCount++, o);
@@ -291,12 +291,12 @@ public ResolveResult[] getResults() {
         if (myCompleteMatchResults != null) {
             resultCount += myCompleteMatchResults.size();
         }
-        final boolean addPartialResults = !myAddOnlyCompleteMatches || (resultCount == 0 && myAllowPartialResults);
+        boolean addPartialResults = !myAddOnlyCompleteMatches || (resultCount == 0 && myAllowPartialResults);
         if (myPartialMatchResults != null && addPartialResults) {
             resultCount += myPartialMatchResults.size();
         }
 
-        final ResolveResult[] result = resultCount != 0 ? new ResolveResult[resultCount] : ResolveResult.EMPTY_ARRAY;
+        ResolveResult[] result = resultCount != 0 ? new ResolveResult[resultCount] : ResolveResult.EMPTY_ARRAY;
 
         if (myCompleteMatchResults != null) {
             for (int i = 0; i < myCompleteMatchResults.size(); ++i) {
@@ -308,7 +308,7 @@ public ResolveResult[] getResults() {
         if (myPartialMatchResults != null && addPartialResults) {
             int offset = myCompleteMatchResults != null ? myCompleteMatchResults.size() : 0;
             for (int i = 0; i < myPartialMatchResults.size(); ++i) {
-                final JSResolveUtil.MyResolveResult resolveResult = (JSResolveUtil.MyResolveResult)myPartialMatchResults.get(i);
+                JSResolveUtil.MyResolveResult resolveResult = (JSResolveUtil.MyResolveResult)myPartialMatchResults.get(i);
 
                 assert resolveResult != null;
                 result[offset + i] = resolveResult;
@@ -320,7 +320,7 @@ public ResolveResult[] getResults() {
 
     @Override
     @RequiredReadAction
-    protected String[] calculateContextIds(final JSReferenceExpression jsReferenceExpression) {
+    protected String[] calculateContextIds(JSReferenceExpression jsReferenceExpression) {
         String[] contextNameIds = null;
         JSExpression qualifier = JSResolveUtil.getRealRefExprQualifier(jsReferenceExpression);
 
@@ -334,7 +334,7 @@ else if (qualifier instanceof JSThisExpression || qualifier instanceof JSSuperEx
         return contextNameIds;
     }
 
-    public void addLocalResults(final ResolveResult results[]) {
+    public void addLocalResults(ResolveResult results[]) {
         if (results == null) {
             return;
         }
@@ -349,7 +349,7 @@ public int getCompleteResultCount() {
 
     @Override
     @RequiredReadAction
-    public boolean execute(@Nonnull PsiElement element, final ResolveState state) {
+    public boolean execute(@Nonnull PsiElement element, ResolveState state) {
         if ((element instanceof JSNamedElement namedElement && myReferenceName.equals(namedElement.getName())) || element == myContext) {
             addCompleteResult(element);
         }
diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/stubs/impl/JSAttributeListStubImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/stubs/impl/JSAttributeListStubImpl.java
index e945d416..936c126c 100644
--- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/stubs/impl/JSAttributeListStubImpl.java
+++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/stubs/impl/JSAttributeListStubImpl.java
@@ -41,7 +41,7 @@ public class JSAttributeListStubImpl extends StubBase implement
     private int myFlags;
     private String myNamespace;
 
-    public JSAttributeListStubImpl(String namespace, int flags, final StubElement parent, final IStubElementType elementType) {
+    public JSAttributeListStubImpl(String namespace, int flags, StubElement parent, IStubElementType elementType) {
         super(parent, elementType);
         myNamespace = namespace;
         myFlags = flags;
@@ -49,14 +49,14 @@ public JSAttributeListStubImpl(String namespace, int flags, final StubElement pa
 
     @Override
     public JSAttributeList.AccessType getAccessType() {
-        final int i = (myFlags >> VISIBILITY_TAG_SHIFT) & VISIBILITY_TAG_MASK;
+        int i = (myFlags >> VISIBILITY_TAG_SHIFT) & VISIBILITY_TAG_MASK;
         return types[i];
     }
 
     private static final JSAttributeList.AccessType[] types = JSAttributeList.AccessType.values();
 
     @Override
-    public boolean hasModifier(final JSAttributeList.ModifierType modifier) {
+    public boolean hasModifier(JSAttributeList.ModifierType modifier) {
         return ((myFlags >> getFlagShift(modifier)) & 0x1) != 0;
     }
 
@@ -71,8 +71,8 @@ public int getFlags() {
     }
 
     public static int getFlags(JSAttributeList attributeList) {
-        final JSAttributeList.AccessType accessType = attributeList.getAccessType();
-        final int ord = accessType.ordinal();
+        JSAttributeList.AccessType accessType = attributeList.getAccessType();
+        int ord = accessType.ordinal();
 
         int flags = (ord << VISIBILITY_TAG_SHIFT);
 
@@ -82,7 +82,7 @@ public static int getFlags(JSAttributeList attributeList) {
         return flags;
     }
 
-    private static int getFlagShift(final JSAttributeList.ModifierType modifier) {
+    private static int getFlagShift(JSAttributeList.ModifierType modifier) {
         int shift = -1;
         if (modifier == JSAttributeList.ModifierType.STATIC) {
             shift = STATIC_PROPERTY_SHIFT;
@@ -108,7 +108,7 @@ else if (modifier == JSAttributeList.ModifierType.VIRTUAL) {
         return shift;
     }
 
-    private static int setFlag(int old, final JSAttributeList.ModifierType modifier, boolean value) {
+    private static int setFlag(int old, JSAttributeList.ModifierType modifier, boolean value) {
         if (value) {
             return old | (1 << getFlagShift(modifier));
         }
diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/stubs/impl/JSAttributeNameValuePairStubImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/stubs/impl/JSAttributeNameValuePairStubImpl.java
index 546e426b..7de0571b 100644
--- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/stubs/impl/JSAttributeNameValuePairStubImpl.java
+++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/stubs/impl/JSAttributeNameValuePairStubImpl.java
@@ -30,7 +30,7 @@
 public class JSAttributeNameValuePairStubImpl extends JSNamedObjectStubBase implements JSAttributeNameValuePairStub {
     private String myValue;
 
-    public JSAttributeNameValuePairStubImpl(String name, final String value, final StubElement parentStub) {
+    public JSAttributeNameValuePairStubImpl(String name, String value, StubElement parentStub) {
         super(name, 0, parentStub, JSElementTypes.ATTRIBUTE_NAME_VALUE_PAIR);
         myValue = value;
     }
diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/stubs/impl/JSAttributeStubImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/stubs/impl/JSAttributeStubImpl.java
index ae627430..cc71dba3 100644
--- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/stubs/impl/JSAttributeStubImpl.java
+++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/stubs/impl/JSAttributeStubImpl.java
@@ -28,7 +28,7 @@
  * Time: 11:29:19 PM
  */
 public class JSAttributeStubImpl extends JSNamedObjectStubBase implements JSAttributeStub {
-    public JSAttributeStubImpl(final String name, int flags, final StubElement parentStub) {
+    public JSAttributeStubImpl(String name, int flags, StubElement parentStub) {
         super(name, flags, parentStub, JSElementTypes.ATTRIBUTE);
     }
 }
diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/stubs/impl/JSClassStubImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/stubs/impl/JSClassStubImpl.java
index 60534e83..5c91f281 100644
--- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/stubs/impl/JSClassStubImpl.java
+++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/stubs/impl/JSClassStubImpl.java
@@ -35,8 +35,8 @@ public JSClassStubImpl(
         String name,
         int flags,
         String qName,
-        final StubElement parentStub,
-        final IStubElementType elementType
+        StubElement parentStub,
+        IStubElementType elementType
     ) {
         super(name, flags, qName, parentStub, elementType);
     }
diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/stubs/impl/JSFunctionStubImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/stubs/impl/JSFunctionStubImpl.java
index 68d35578..8bfe4f1d 100644
--- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/stubs/impl/JSFunctionStubImpl.java
+++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/stubs/impl/JSFunctionStubImpl.java
@@ -36,19 +36,19 @@ public class JSFunctionStubImpl extends JSQualifiedObjectStubBase im
     private static final int REFERENCES_ARGUMENTS_MASK = 16;
 
     public JSFunctionStubImpl(
-        final String name,
+        String name,
         int flags,
         String qName,
         String returnType,
-        final StubElement parentStub,
-        final JSStubElementType elementType
+        StubElement parentStub,
+        JSStubElementType elementType
     ) {
         super(name, flags, qName, parentStub, elementType);
         myReturnType = returnType;
     }
 
-    public static int buildFlags(final JSFunction clazz) {
-        final int val = clazz.isConstructor()
+    public static int buildFlags(JSFunction clazz) {
+        int val = clazz.isConstructor()
             ? CONSTRUCTOR_MASK
             : clazz.isGetProperty()
             ? GET_PROPERTY_MASK
diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/stubs/impl/JSImportStatementStubImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/stubs/impl/JSImportStatementStubImpl.java
index 1fa7d547..0ebcdc57 100644
--- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/stubs/impl/JSImportStatementStubImpl.java
+++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/stubs/impl/JSImportStatementStubImpl.java
@@ -32,9 +32,9 @@ public class JSImportStatementStubImpl extends StubBase imple
     private final String myImportText;
 
     public JSImportStatementStubImpl(
-        final String importText,
-        final StubElement parentStub,
-        final JSStubElementType type
+        String importText,
+        StubElement parentStub,
+        JSStubElementType type
     ) {
         super(parentStub, type);
 
diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/stubs/impl/JSIncludeDirectiveStubImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/stubs/impl/JSIncludeDirectiveStubImpl.java
index 90860a6f..240e4c2e 100644
--- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/stubs/impl/JSIncludeDirectiveStubImpl.java
+++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/stubs/impl/JSIncludeDirectiveStubImpl.java
@@ -32,9 +32,9 @@ public class JSIncludeDirectiveStubImpl extends StubBase imp
     private final String myIncludeText;
 
     public JSIncludeDirectiveStubImpl(
-        final String includeText,
-        final StubElement parentStub,
-        final JSStubElementType type
+        String includeText,
+        StubElement parentStub,
+        JSStubElementType type
     ) {
         super(parentStub, type);
         myIncludeText = includeText;
diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/stubs/impl/JSNamedObjectStubBase.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/stubs/impl/JSNamedObjectStubBase.java
index 426a5f74..152ac25f 100644
--- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/stubs/impl/JSNamedObjectStubBase.java
+++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/stubs/impl/JSNamedObjectStubBase.java
@@ -31,7 +31,7 @@ public abstract class JSNamedObjectStubBase extends S
     protected final String myName;
     protected final int myFlags;
 
-    protected JSNamedObjectStubBase(String name, int flags, final StubElement parent, final IStubElementType elementType) {
+    protected JSNamedObjectStubBase(String name, int flags, StubElement parent, IStubElementType elementType) {
         super(parent, elementType);
 
         myName = name;
diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/stubs/impl/JSParameterStubImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/stubs/impl/JSParameterStubImpl.java
index 625c065b..dd72be9f 100644
--- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/stubs/impl/JSParameterStubImpl.java
+++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/stubs/impl/JSParameterStubImpl.java
@@ -43,8 +43,8 @@ public JSParameterStubImpl(
         super(name, flags, type, initial, qName, parentStub, elementType);
     }
 
-    public static int buildFlags(final JSParameter clazz) {
-        final int i = JSVariableStubBaseImpl.buildFlags(clazz);
+    public static int buildFlags(JSParameter clazz) {
+        int i = JSVariableStubBaseImpl.buildFlags(clazz);
         return i | (clazz.isRest() ? REST_MASK : 0) | (clazz.isOptional() ? OPTIONAL_MASK : 0);
     }
 
diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/stubs/impl/JSQualifiedObjectStubBase.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/stubs/impl/JSQualifiedObjectStubBase.java
index 86fd103d..017793d0 100644
--- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/stubs/impl/JSQualifiedObjectStubBase.java
+++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/stubs/impl/JSQualifiedObjectStubBase.java
@@ -34,8 +34,8 @@ protected JSQualifiedObjectStubBase(
         String name,
         int flags,
         String qName,
-        final StubElement parent,
-        final IStubElementType elementType
+        StubElement parent,
+        IStubElementType elementType
     ) {
         super(name, flags, parent, elementType);
 
diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/stubs/impl/JSReferenceListStubImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/stubs/impl/JSReferenceListStubImpl.java
index 9ce9fea9..e7af41a0 100644
--- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/stubs/impl/JSReferenceListStubImpl.java
+++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/stubs/impl/JSReferenceListStubImpl.java
@@ -32,9 +32,9 @@ public class JSReferenceListStubImpl extends StubBase implement
     private String[] myRefs;
 
     public JSReferenceListStubImpl(
-        final String[] refs,
-        final StubElement parentStub,
-        final JSStubElementType type
+        String[] refs,
+        StubElement parentStub,
+        JSStubElementType type
     ) {
         super(parentStub, type);
         myRefs = refs;
diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/stubs/impl/JSVariableStubBaseImpl.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/stubs/impl/JSVariableStubBaseImpl.java
index abf649a4..9e83b1e8 100644
--- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/stubs/impl/JSVariableStubBaseImpl.java
+++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/stubs/impl/JSVariableStubBaseImpl.java
@@ -36,20 +36,20 @@ public abstract class JSVariableStubBaseImpl extends JSQua
     private String myInitializerText;
 
     public JSVariableStubBaseImpl(
-        final String name,
+        String name,
         int flags,
         String type,
         String initial,
         String qName,
-        final StubElement parentStub,
-        final IStubElementType elementType
+        StubElement parentStub,
+        IStubElementType elementType
     ) {
         super(name, flags, qName, parentStub, elementType);
         myTypeString = type;
         myInitializerText = initial;
     }
 
-    public static int buildFlags(final JSVariable clazz) {
+    public static int buildFlags(JSVariable clazz) {
         return (clazz.isDeprecated() ? DEPRECATED_MASK : 0) | (clazz.isConst() ? CONST_MASK : clazz.isLocal() ? LOCAL_MASK : 0);
     }
 
diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/psi/util/JSUtils.java b/base-impl/src/main/java/com/intellij/lang/javascript/psi/util/JSUtils.java
index bfb5530c..c74d193c 100644
--- a/base-impl/src/main/java/com/intellij/lang/javascript/psi/util/JSUtils.java
+++ b/base-impl/src/main/java/com/intellij/lang/javascript/psi/util/JSUtils.java
@@ -64,7 +64,7 @@ public static boolean isLHSExpression(JSExpression expr) {
 
     public static boolean isNeedParenthesis(JSExpression oldExpr, JSExpression newExpr) {
         int priority = getExpressionPrecedence(newExpr);
-        final PsiElement parent = oldExpr.getParent();
+        PsiElement parent = oldExpr.getParent();
         if (!(parent instanceof JSExpression)) {
             return false;
         }
@@ -73,7 +73,7 @@ public static boolean isNeedParenthesis(JSExpression oldExpr, JSExpression newEx
             return true;
         }
         if (priority == parentPriority && parent instanceof JSBinaryExpression binaryExpression) {
-            final IElementType operationSign = binaryExpression.getOperationSign();
+            IElementType operationSign = binaryExpression.getOperationSign();
             if (oldExpr != binaryExpression.getROperand()) {
                 return false;
             }
@@ -140,28 +140,28 @@ else if (i == POSTFIX_EXPRESSION) {
         return 14;
     }
 
-    public static PsiElement findStatementAnchor(final JSReferenceExpression referenceExpression, final PsiFile file) {
+    public static PsiElement findStatementAnchor(JSReferenceExpression referenceExpression, PsiFile file) {
         PsiElement anchor = PsiTreeUtil.getParentOfType(referenceExpression, JSStatement.class);
 
         if (file instanceof XmlFile root) {
-            final XmlAttributeValue attributeValue = PsiTreeUtil.getParentOfType(referenceExpression, XmlAttributeValue.class);
+            XmlAttributeValue attributeValue = PsiTreeUtil.getParentOfType(referenceExpression, XmlAttributeValue.class);
 
             if (attributeValue != null) {
                 if (root.getViewProvider() instanceof TemplateLanguageFileViewProvider) {
-                    final TemplateLanguageFileViewProvider viewProvider = (TemplateLanguageFileViewProvider)root.getViewProvider();
-                    final PsiFile psi = viewProvider.getPsi(viewProvider.getTemplateDataLanguage());
+                    TemplateLanguageFileViewProvider viewProvider = (TemplateLanguageFileViewProvider)root.getViewProvider();
+                    PsiFile psi = viewProvider.getPsi(viewProvider.getTemplateDataLanguage());
                     if (psi instanceof XmlFile) {
                         root = (XmlFile)psi;
                     }
                 }
 
-                final XmlTag tag = root.getDocument().getRootTag();
+                XmlTag tag = root.getDocument().getRootTag();
 
                 if (tag != null) {
-                    final XmlTag headTag = tag.findFirstSubTag("head");
+                    XmlTag headTag = tag.findFirstSubTag("head");
 
                     if (headTag != null) {
-                        final XmlTag scriptTag = headTag.findFirstSubTag("script");
+                        XmlTag scriptTag = headTag.findFirstSubTag("script");
 
                         if (scriptTag != null) {
                             PsiElement statementInScript = PsiTreeUtil.getChildOfType(scriptTag, JSStatement.class);
@@ -169,7 +169,7 @@ public static PsiElement findStatementAnchor(final JSReferenceExpression referen
                                 anchor = statementInScript;
                             }
                             else {
-                                final XmlTagChild tagChild = PsiTreeUtil.getChildOfType(scriptTag, XmlTagChild.class);
+                                XmlTagChild tagChild = PsiTreeUtil.getChildOfType(scriptTag, XmlTagChild.class);
                                 if (tagChild != null) {
                                     anchor = tagChild;
                                 }
diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/types/JSFileElementType.java b/base-impl/src/main/java/com/intellij/lang/javascript/types/JSFileElementType.java
index cf1aade1..9699527b 100644
--- a/base-impl/src/main/java/com/intellij/lang/javascript/types/JSFileElementType.java
+++ b/base-impl/src/main/java/com/intellij/lang/javascript/types/JSFileElementType.java
@@ -33,12 +33,12 @@
  * @author peter
  */
 public class JSFileElementType extends IStubFileElementType {
-    public JSFileElementType(final Language language) {
+    public JSFileElementType(Language language) {
         super(language);
     }
 
     @Override
-    public void indexStub(@Nonnull final JSFileStub stub, @Nonnull final IndexSink sink) {
+    public void indexStub(@Nonnull JSFileStub stub, @Nonnull IndexSink sink) {
         for (JavaScriptIndexer javaScriptIndexer : JavaScriptIndexer.EP_NAME.getExtensionList()) {
             javaScriptIndexer.indexFile(stub, sink);
         }
@@ -64,7 +64,7 @@ public void serialize(@Nonnull JSFileStub stub, @Nonnull StubOutputStream dataSt
 
     @Nonnull
     @Override
-    public JSFileStub deserialize(@Nonnull final StubInputStream dataStream, final StubElement parentStub) throws IOException {
+    public JSFileStub deserialize(@Nonnull StubInputStream dataStream, StubElement parentStub) throws IOException {
         StringRef name = dataStream.readName();
         return new JSFileStubImpl(null, name);
     }
diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/types/JSFunctionElementType.java b/base-impl/src/main/java/com/intellij/lang/javascript/types/JSFunctionElementType.java
index 9e4ef41b..71997c1c 100644
--- a/base-impl/src/main/java/com/intellij/lang/javascript/types/JSFunctionElementType.java
+++ b/base-impl/src/main/java/com/intellij/lang/javascript/types/JSFunctionElementType.java
@@ -43,8 +43,8 @@ public JSFunctionElementType(@Nonnull String name) {
     }
 
     @Override
-    protected boolean doIndexName(JSFunctionStub stub, final String name, final String fqn) {
-        final IStubElementType stubType = stub.getParentStub().getStubType();
+    protected boolean doIndexName(JSFunctionStub stub, String name, String fqn) {
+        IStubElementType stubType = stub.getParentStub().getStubType();
 
         return stubType instanceof JSPackageStatementElementType || stubType == null;
     }
diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/types/JSVarStatementElementType.java b/base-impl/src/main/java/com/intellij/lang/javascript/types/JSVarStatementElementType.java
index 4c60f987..e280a7f5 100644
--- a/base-impl/src/main/java/com/intellij/lang/javascript/types/JSVarStatementElementType.java
+++ b/base-impl/src/main/java/com/intellij/lang/javascript/types/JSVarStatementElementType.java
@@ -48,7 +48,7 @@ public JSVarStatementElementType() {
 
     @Override
     public boolean shouldCreateStub(ASTNode node) {
-        final PsiElement element = node.getTreeParent().getPsi();
+        PsiElement element = node.getTreeParent().getPsi();
         return element instanceof JSClass || element instanceof JSPackageStatement || element instanceof JSFile;
     }
 
diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/types/JSVariableElementType.java b/base-impl/src/main/java/com/intellij/lang/javascript/types/JSVariableElementType.java
index 5ab1675d..9b81468e 100644
--- a/base-impl/src/main/java/com/intellij/lang/javascript/types/JSVariableElementType.java
+++ b/base-impl/src/main/java/com/intellij/lang/javascript/types/JSVariableElementType.java
@@ -49,7 +49,7 @@ public JSVariableElementType() {
 
     @Override
     protected boolean doIndexName(JSVariableStub stub, String name, String fqn) {
-        final IStubElementType stubType = stub.getParentStub().getParentStub().getStubType();
+        IStubElementType stubType = stub.getParentStub().getParentStub().getStubType();
 
         return stubType instanceof JSPackageStatementElementType || stubType == null;
     }
@@ -60,8 +60,8 @@ protected boolean doIndexQualifiedName(JSVariableStub stub, String name, String
     }
 
     @Override
-    public boolean shouldCreateStub(final ASTNode node) {
-        final IElementType discriminatingParentType = node.getTreeParent().getTreeParent().getElementType();
+    public boolean shouldCreateStub(ASTNode node) {
+        IElementType discriminatingParentType = node.getTreeParent().getTreeParent().getElementType();
         return discriminatingParentType == JSElementTypes.PACKAGE_STATEMENT
             || discriminatingParentType == JSElementTypes.CLASS
             || discriminatingParentType instanceof JSFileElementType;
diff --git a/base-impl/src/main/java/com/intellij/lang/javascript/validation/JSUnusedImportsHelper.java b/base-impl/src/main/java/com/intellij/lang/javascript/validation/JSUnusedImportsHelper.java
index 8e5ba59b..5ee4f4c8 100644
--- a/base-impl/src/main/java/com/intellij/lang/javascript/validation/JSUnusedImportsHelper.java
+++ b/base-impl/src/main/java/com/intellij/lang/javascript/validation/JSUnusedImportsHelper.java
@@ -81,10 +81,10 @@ private JSUnusedImportsHelper(PsiFile containingFile, Collection ele
         myElements = elements;
     }
 
-    private void registerUnused(final JSImportStatement importStatement) {
+    private void registerUnused(JSImportStatement importStatement) {
         allImports.add(importStatement);
 
-        final String importText = importStatement.getImportText();
+        String importText = importStatement.getImportText();
         if (importText == null) {
             return;
         }
@@ -225,10 +225,10 @@ public static Results getUnusedImports(PsiFile file) {
 
         CachedValue data = containingFile.getUserData(ourUnusedImportsKey);
         if (data == null) {
-            final PsiFile containingFile1 = containingFile;
+            PsiFile containingFile1 = containingFile;
             data = CachedValuesManager.getManager(file.getProject()).createCachedValue(
                 () -> {
-                    final Map> allElements = new HashMap<>();
+                    Map> allElements = new HashMap<>();
                     Collection processedFiles = new HashSet<>();
                     collectElements(null, containingFile1, allElements, processedFiles);
 
@@ -269,10 +269,10 @@ else if (e instanceof JSReferenceExpression) {
     }
 
     private static void collectElements(
-        @Nullable final XmlTag rootTag,
-        final PsiFile file,
-        final Map> result,
-        final Collection processedFiles
+        @Nullable XmlTag rootTag,
+        PsiFile file,
+        Map> result,
+        Collection processedFiles
     ) {
         if (processedFiles.contains(file)) {
             return;
diff --git a/base-impl/src/main/java/consulo/javascript/impl/language/psi/JSStubElementType.java b/base-impl/src/main/java/consulo/javascript/impl/language/psi/JSStubElementType.java
index d3a9de95..0c282b79 100644
--- a/base-impl/src/main/java/consulo/javascript/impl/language/psi/JSStubElementType.java
+++ b/base-impl/src/main/java/consulo/javascript/impl/language/psi/JSStubElementType.java
@@ -40,7 +40,7 @@ public String toString() {
     }
 
     @Override
-    public void indexStub(@Nonnull final StubT stub, @Nonnull final IndexSink sink) {
+    public void indexStub(@Nonnull StubT stub, @Nonnull IndexSink sink) {
     }
 
     @Nonnull
diff --git a/base-impl/src/main/java/consulo/javascript/lang/lexer/JavaScriptFlexAdapter.java b/base-impl/src/main/java/consulo/javascript/lang/lexer/JavaScriptFlexAdapter.java
index 6bcdb8a9..4a0056f7 100644
--- a/base-impl/src/main/java/consulo/javascript/lang/lexer/JavaScriptFlexAdapter.java
+++ b/base-impl/src/main/java/consulo/javascript/lang/lexer/JavaScriptFlexAdapter.java
@@ -31,7 +31,7 @@ public JavaScriptFlexAdapter(FlexLexer lexer) {
     }
 
     @Override
-    public void start(final CharSequence buffer, final int startOffset, final int endOffset, final int initialState) {
+    public void start(CharSequence buffer, int startOffset, int endOffset, int initialState) {
         super.start(buffer, startOffset, endOffset, initialState & BASE_STATE_MASK);
         ((JavaScriptFlexLexer)getFlex()).setTagCount(initialState >> TAG_COUNT_SHIFT);
     }
diff --git a/base-impl/src/main/java/consulo/javascript/lang/parsing/ExpressionParsing.java b/base-impl/src/main/java/consulo/javascript/lang/parsing/ExpressionParsing.java
index e3df93bb..bae3e641 100644
--- a/base-impl/src/main/java/consulo/javascript/lang/parsing/ExpressionParsing.java
+++ b/base-impl/src/main/java/consulo/javascript/lang/parsing/ExpressionParsing.java
@@ -143,23 +143,23 @@ else if (tokenType == JSTokenTypes.LBRACKET) {
         }
     }
 
-    private void parseLetExpression(final PsiBuilder builder) {
-        final PsiBuilder.Marker marker = getStatementParsing().parseLetExpressionStart(builder);
+    private void parseLetExpression(PsiBuilder builder) {
+        PsiBuilder.Marker marker = getStatementParsing().parseLetExpressionStart(builder);
         parseExpression(builder);
         marker.done(JSElementTypes.LET_EXPRESSION);
     }
 
-    private void parseTag(final PsiBuilder builder) {
+    private void parseTag(PsiBuilder builder) {
         myJSXParser.setBuilder(builder);
 
         myJSXParser.parseTag(false);
     }
 
     @Nullable
-    public static LocalizeValue validateLiteral(final PsiBuilder builder) {
-        final IElementType ttype = builder.getTokenType();
+    public static LocalizeValue validateLiteral(PsiBuilder builder) {
+        IElementType ttype = builder.getTokenType();
         if (ttype == JSTokenTypes.STRING_LITERAL || ttype == JSTokenTypes.SINGLE_QUOTE_STRING_LITERAL) {
-            final String ttext = builder.getTokenText();
+            String ttext = builder.getTokenText();
             assert ttext != null;
 
             if (lastSymbolEscaped(ttext) ||
@@ -190,9 +190,9 @@ private static boolean lastSymbolEscaped(String text) {
         return escapes || escaped;
     }
 
-    public void parseObjectLiteralExpression(final PsiBuilder builder) {
+    public void parseObjectLiteralExpression(PsiBuilder builder) {
         ExpressionParsing.LOG.assertTrue(builder.getTokenType() == JSTokenTypes.LBRACE);
-        final PsiBuilder.Marker expr = builder.mark();
+        PsiBuilder.Marker expr = builder.mark();
         builder.advanceLexer();
 
         IElementType elementType = builder.getTokenType();
@@ -234,9 +234,9 @@ public boolean isNotPropertyStart(PsiBuilder builder, IElementType elementType)
             && elementType != JSTokenTypes.NUMERIC_LITERAL;
     }
 
-    protected void parseProperty(final PsiBuilder builder) {
-        final IElementType nameToken = builder.getTokenType();
-        final PsiBuilder.Marker property = builder.mark();
+    protected void parseProperty(PsiBuilder builder) {
+        IElementType nameToken = builder.getTokenType();
+        PsiBuilder.Marker property = builder.mark();
 
         if (isNotPropertyStart(builder, nameToken)) {
             builder.error(JavaScriptLocalize.javascriptParserMessageExpectedIdentifierStringLiteralOrNumericLiteral());
@@ -254,9 +254,9 @@ protected void parseProperty(final PsiBuilder builder) {
         property.done(JSElementTypes.PROPERTY);
     }
 
-    public void parseArrayLiteralExpression(final PsiBuilder builder) {
+    public void parseArrayLiteralExpression(PsiBuilder builder) {
         ExpressionParsing.LOG.assertTrue(builder.getTokenType() == JSTokenTypes.LBRACKET);
-        final PsiBuilder.Marker expr = builder.mark();
+        PsiBuilder.Marker expr = builder.mark();
         builder.advanceLexer();
         boolean commaExpected = false;
 
@@ -268,7 +268,7 @@ public void parseArrayLiteralExpression(final PsiBuilder builder) {
 
             while (builder.getTokenType() != JSTokenTypes.RBRACKET) {
                 if (commaExpected) {
-                    final boolean b =
+                    boolean b =
                         Parsing.checkMatches(builder, JSTokenTypes.COMMA, JavaScriptLocalize.javascriptParserMessageExpectedComma());
                     if (!b) {
                         break;
@@ -412,7 +412,7 @@ public boolean parseQualifiedTypeName(PsiBuilder builder, boolean allowStar, Tok
             boolean stop = false;
             builder.advanceLexer();
 
-            final IElementType tokenType = builder.getTokenType();
+            IElementType tokenType = builder.getTokenType();
             if (tokenType == JSTokenTypes.ANY_IDENTIFIER && allowStar) {
                 builder.advanceLexer();
                 stop = true;
@@ -450,9 +450,9 @@ protected boolean parseNewExpression(PsiBuilder builder) {
         return false;
     }
 
-    protected void parseArgumentList(final PsiBuilder builder) {
+    protected void parseArgumentList(PsiBuilder builder) {
         ExpressionParsing.LOG.assertTrue(builder.getTokenType() == JSTokenTypes.LPAR);
-        final PsiBuilder.Marker arglist = builder.mark();
+        PsiBuilder.Marker arglist = builder.mark();
         builder.advanceLexer();
         boolean first = true;
         while (builder.getTokenType() != JSTokenTypes.RPAR) {
@@ -481,16 +481,16 @@ public void parseExpression(PsiBuilder builder) {
         }
     }
 
-    public boolean parseAssignmentExpressionNoIn(final PsiBuilder builder) {
+    public boolean parseAssignmentExpressionNoIn(PsiBuilder builder) {
         return parseAssignmentExpression(builder, false);
     }
 
-    public boolean parseAssignmentExpression(final PsiBuilder builder) {
+    public boolean parseAssignmentExpression(PsiBuilder builder) {
         return parseAssignmentExpression(builder, true);
     }
 
-    private boolean parseAssignmentExpression(final PsiBuilder builder, boolean allowIn) {
-        final PsiBuilder.Marker expr = builder.mark();
+    private boolean parseAssignmentExpression(PsiBuilder builder, boolean allowIn) {
+        PsiBuilder.Marker expr = builder.mark();
 
         if (JSTokenTypes.ASSIGNMENT_OPERATIONS.contains(builder.getTokenType()) && builder.getUserData(WITHIN_OBJECT_LITERAL_EXPRESSION) == null) {
             builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression());
@@ -502,7 +502,7 @@ private boolean parseAssignmentExpression(final PsiBuilder builder, boolean allo
             return true;
         }
 
-        final PsiBuilder.Marker definitionExpr = builder.mark();
+        PsiBuilder.Marker definitionExpr = builder.mark();
         if (!parseConditionalExpression(builder, allowIn)) {
             definitionExpr.drop();
             expr.drop();
@@ -524,14 +524,14 @@ private boolean parseAssignmentExpression(final PsiBuilder builder, boolean allo
         return true;
     }
 
-    private boolean parseConditionalExpression(final PsiBuilder builder, final boolean allowIn) {
-        final PsiBuilder.Marker expr = builder.mark();
+    private boolean parseConditionalExpression(PsiBuilder builder, boolean allowIn) {
+        PsiBuilder.Marker expr = builder.mark();
         if (!parseORExpression(builder, allowIn)) {
             expr.drop();
             return false;
         }
 
-        final IElementType nextTokenType = builder.getTokenType();
+        IElementType nextTokenType = builder.getTokenType();
 
         if (nextTokenType == JSTokenTypes.QUEST) {
             builder.advanceLexer();
@@ -554,7 +554,7 @@ else if (nextTokenType == JSTokenTypes.FOR_KEYWORD && builder.getUserData(WITHIN
         return true;
     }
 
-    private boolean parseORExpression(final PsiBuilder builder, final boolean allowIn) {
+    private boolean parseORExpression(PsiBuilder builder, boolean allowIn) {
         PsiBuilder.Marker expr = builder.mark();
         if (!parseANDExpression(builder, allowIn)) {
             expr.drop();
@@ -574,7 +574,7 @@ private boolean parseORExpression(final PsiBuilder builder, final boolean allowI
         return true;
     }
 
-    private boolean parseANDExpression(final PsiBuilder builder, final boolean allowIn) {
+    private boolean parseANDExpression(PsiBuilder builder, boolean allowIn) {
         PsiBuilder.Marker expr = builder.mark();
         if (!parseBitwiseORExpression(builder, allowIn)) {
             expr.drop();
@@ -594,7 +594,7 @@ private boolean parseANDExpression(final PsiBuilder builder, final boolean allow
         return true;
     }
 
-    private boolean parseBitwiseORExpression(final PsiBuilder builder, final boolean allowIn) {
+    private boolean parseBitwiseORExpression(PsiBuilder builder, boolean allowIn) {
         PsiBuilder.Marker expr = builder.mark();
         if (!parseBitwiseXORExpression(builder, allowIn)) {
             expr.drop();
@@ -614,7 +614,7 @@ private boolean parseBitwiseORExpression(final PsiBuilder builder, final boolean
         return true;
     }
 
-    private boolean parseBitwiseXORExpression(final PsiBuilder builder, final boolean allowIn) {
+    private boolean parseBitwiseXORExpression(PsiBuilder builder, boolean allowIn) {
         PsiBuilder.Marker expr = builder.mark();
         if (!parseBitwiseANDExpression(builder, allowIn)) {
             expr.drop();
@@ -634,7 +634,7 @@ private boolean parseBitwiseXORExpression(final PsiBuilder builder, final boolea
         return true;
     }
 
-    private boolean parseBitwiseANDExpression(final PsiBuilder builder, final boolean allowIn) {
+    private boolean parseBitwiseANDExpression(PsiBuilder builder, boolean allowIn) {
         PsiBuilder.Marker expr = builder.mark();
         if (!parseEqualityExpression(builder, allowIn)) {
             expr.drop();
@@ -654,7 +654,7 @@ private boolean parseBitwiseANDExpression(final PsiBuilder builder, final boolea
         return true;
     }
 
-    private boolean parseEqualityExpression(final PsiBuilder builder, final boolean allowIn) {
+    private boolean parseEqualityExpression(PsiBuilder builder, boolean allowIn) {
         PsiBuilder.Marker expr = builder.mark();
         if (!parseRelationalExpression(builder, allowIn)) {
             expr.drop();
@@ -674,7 +674,7 @@ private boolean parseEqualityExpression(final PsiBuilder builder, final boolean
         return true;
     }
 
-    private boolean parseRelationalExpression(final PsiBuilder builder, final boolean allowIn) {
+    private boolean parseRelationalExpression(PsiBuilder builder, boolean allowIn) {
         PsiBuilder.Marker expr = builder.mark();
         if (!parseShiftExpression(builder)) {
             expr.drop();
@@ -694,7 +694,7 @@ private boolean parseRelationalExpression(final PsiBuilder builder, final boolea
         return true;
     }
 
-    private boolean parseShiftExpression(final PsiBuilder builder) {
+    private boolean parseShiftExpression(PsiBuilder builder) {
         PsiBuilder.Marker expr = builder.mark();
         if (!parseAdditiveExpression(builder)) {
             expr.drop();
@@ -713,7 +713,7 @@ private boolean parseShiftExpression(final PsiBuilder builder) {
         return true;
     }
 
-    private boolean parseAdditiveExpression(final PsiBuilder builder) {
+    private boolean parseAdditiveExpression(PsiBuilder builder) {
         PsiBuilder.Marker expr = builder.mark();
         if (!parseMultiplicativeExpression(builder)) {
             expr.drop();
@@ -732,7 +732,7 @@ private boolean parseAdditiveExpression(final PsiBuilder builder) {
         return true;
     }
 
-    private boolean parseIsAsExpression(final PsiBuilder builder) {
+    private boolean parseIsAsExpression(PsiBuilder builder) {
         PsiBuilder.Marker expr = builder.mark();
         if (!parseUnaryExpression(builder)) {
             expr.drop();
@@ -752,11 +752,11 @@ private boolean parseIsAsExpression(final PsiBuilder builder) {
         return true;
     }
 
-    protected boolean parseMultiplicativeExpression(final PsiBuilder builder) {
+    protected boolean parseMultiplicativeExpression(PsiBuilder builder) {
         return parseMultiplicativeExpression(builder, JSTokenTypes.MULTIPLICATIVE_OPERATIONS);
     }
 
-    protected boolean parseMultiplicativeExpression(final PsiBuilder builder, TokenSet operatorSet) {
+    protected boolean parseMultiplicativeExpression(PsiBuilder builder, TokenSet operatorSet) {
         PsiBuilder.Marker expr = builder.mark();
         if (!parseIsAsExpression(builder)) {
             expr.drop();
@@ -776,10 +776,10 @@ protected boolean parseMultiplicativeExpression(final PsiBuilder builder, TokenS
         return true;
     }
 
-    private boolean parseUnaryExpression(final PsiBuilder builder) {
-        final IElementType tokenType = builder.getTokenType();
+    private boolean parseUnaryExpression(PsiBuilder builder) {
+        IElementType tokenType = builder.getTokenType();
         if (JSTokenTypes.UNARY_OPERATIONS.contains(tokenType)) {
-            final PsiBuilder.Marker expr = builder.mark();
+            PsiBuilder.Marker expr = builder.mark();
             builder.advanceLexer();
             if (!parseUnaryExpression(builder)) {
                 builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression());
@@ -793,13 +793,13 @@ private boolean parseUnaryExpression(final PsiBuilder builder) {
     }
 
     private boolean parsePostfixExpression(PsiBuilder builder) {
-        final PsiBuilder.Marker expr = builder.mark();
+        PsiBuilder.Marker expr = builder.mark();
         if (!parseMemberExpression(builder, true)) {
             expr.drop();
             return false;
         }
 
-        final IElementType tokenType = builder.getTokenType();
+        IElementType tokenType = builder.getTokenType();
         if (tokenType == JSTokenTypes.PLUSPLUS || tokenType == JSTokenTypes.MINUSMINUS) {
             builder.advanceLexer();
             expr.done(JSElementTypes.POSTFIX_EXPRESSION);
@@ -810,15 +810,15 @@ private boolean parsePostfixExpression(PsiBuilder builder) {
         return true;
     }
 
-    public boolean parseExpressionOptional(final PsiBuilder builder) {
+    public boolean parseExpressionOptional(PsiBuilder builder) {
         return parseExpressionOptional(builder, true);
     }
 
-    public boolean parseExpressionOptionalNoIn(final PsiBuilder builder) {
+    public boolean parseExpressionOptionalNoIn(PsiBuilder builder) {
         return parseExpressionOptional(builder, false);
     }
 
-    public boolean parseExpressionOptional(final PsiBuilder builder, final boolean allowIn) {
+    public boolean parseExpressionOptional(PsiBuilder builder, boolean allowIn) {
         PsiBuilder.Marker expr = builder.mark();
         if (!parseAssignmentExpression(builder, allowIn)) {
             expr.drop();
@@ -845,12 +845,12 @@ public boolean parseExpressionOptional(final PsiBuilder builder, final boolean a
         return true;
     }
 
-    public boolean tryParseType(final PsiBuilder builder) {
+    public boolean tryParseType(PsiBuilder builder) {
         return false;
     }
 
-    public boolean parseType(final PsiBuilder builder) {
-        final IElementType tokenType = builder.getTokenType();
+    public boolean parseType(PsiBuilder builder) {
+        IElementType tokenType = builder.getTokenType();
         if (JSDocumentationUtils.PRIMITIVE_TYPE_FILTER.contains(tokenType)) {
             builder.advanceLexer();
         }
@@ -860,7 +860,7 @@ else if (!parseQualifiedTypeName(builder)) {
         return true;
     }
 
-    public boolean parseSimpleExpression(final PsiBuilder builder) {
+    public boolean parseSimpleExpression(PsiBuilder builder) {
         if (!parseUnaryExpression(builder)) {
             builder.error(JavaScriptLocalize.javascriptParserMessageExpectedExpression());
             return false;
diff --git a/base-impl/src/main/java/consulo/javascript/lang/parsing/FunctionParsing.java b/base-impl/src/main/java/consulo/javascript/lang/parsing/FunctionParsing.java
index 86f5b818..c62641f2 100644
--- a/base-impl/src/main/java/consulo/javascript/lang/parsing/FunctionParsing.java
+++ b/base-impl/src/main/java/consulo/javascript/lang/parsing/FunctionParsing.java
@@ -44,9 +44,9 @@ private void parseFunction(PsiBuilder builder, boolean expressionContext) {
     }
 
     public void parseFunctionNoMarker(
-        final PsiBuilder builder,
-        final boolean expressionContext,
-        final @Nonnull PsiBuilder.Marker functionMarker
+        PsiBuilder builder,
+        boolean expressionContext,
+        @Nonnull PsiBuilder.Marker functionMarker
     ) {
         if (builder.getTokenType() == JSTokenTypes.FUNCTION_KEYWORD) {
             // function keyword may be ommited in context of get/set property definition
@@ -85,8 +85,8 @@ else if (!expressionContext && builder.getTokenType() != JSTokenTypes.LPAR /*get
         functionMarker.done(expressionContext ? JSElementTypes.FUNCTION_EXPRESSION : JSElementTypes.FUNCTION_DECLARATION);
     }
 
-    public void parseParameterList(final PsiBuilder builder) {
-        final PsiBuilder.Marker parameterList;
+    public void parseParameterList(PsiBuilder builder) {
+        PsiBuilder.Marker parameterList;
         if (builder.getTokenType() != JSTokenTypes.LPAR) {
             builder.error(JavaScriptLocalize.javascriptParserMessageExpectedLparen());
             parameterList = builder.mark(); // To have non-empty parameters list at all the time.
diff --git a/base-impl/src/main/java/consulo/javascript/lang/parsing/JSXParser.java b/base-impl/src/main/java/consulo/javascript/lang/parsing/JSXParser.java
index ddc48296..fb578ffa 100644
--- a/base-impl/src/main/java/consulo/javascript/lang/parsing/JSXParser.java
+++ b/base-impl/src/main/java/consulo/javascript/lang/parsing/JSXParser.java
@@ -53,9 +53,9 @@ private boolean eof() {
     }
 
     @Nullable
-    private String parseTagHeader(final boolean multipleRootTagError, final PsiBuilder.Marker tag) {
+    private String parseTagHeader(boolean multipleRootTagError, PsiBuilder.Marker tag) {
         if (multipleRootTagError) {
-            final PsiBuilder.Marker error = mark();
+            PsiBuilder.Marker error = mark();
             advance();
             error.error(XmlErrorLocalize.xmlParsingMultipleRootTags());
         }
@@ -63,7 +63,7 @@ private String parseTagHeader(final boolean multipleRootTagError, final PsiBuild
             advance();
         }
 
-        final String tagName;
+        String tagName;
         if (token() != JSTokenTypes.XML_NAME || myBuilder.rawLookup(-1) == TokenType.WHITE_SPACE) {
             error(XmlErrorLocalize.xmlParsingTagNameExpected());
             tagName = "";
@@ -76,7 +76,7 @@ private String parseTagHeader(final boolean multipleRootTagError, final PsiBuild
         myTagNamesStack.push(tagName);
 
         do {
-            final IElementType tt = token();
+            IElementType tt = token();
             if (tt == JSTokenTypes.XML_NAME) {
                 parseAttribute();
             }
@@ -117,7 +117,7 @@ else if (tt == JSTokenTypes.XML_JS_SCRIPT) {
 
     private void parseAttribute() {
         assert token() == XmlTokenType.XML_NAME;
-        final PsiBuilder.Marker att = mark();
+        PsiBuilder.Marker att = mark();
         advance();
         if (token() == XmlTokenType.XML_EQ) {
             advance();
@@ -127,17 +127,17 @@ private void parseAttribute() {
     }
 
     private void parseAttributeValue() {
-        final PsiBuilder.Marker attValue = mark();
+        PsiBuilder.Marker attValue = mark();
         if (token() == XmlTokenType.XML_ATTRIBUTE_VALUE_START_DELIMITER) {
             while (true) {
-                final IElementType tt = token();
+                IElementType tt = token();
                 if (tt == null || tt == XmlTokenType.XML_ATTRIBUTE_VALUE_END_DELIMITER || tt == XmlTokenType.XML_END_TAG_START
                     || tt == XmlTokenType.XML_EMPTY_ELEMENT_END || tt == JSTokenTypes.XML_START_TAG_START) {
                     break;
                 }
 
                 if (tt == JSTokenTypes.BAD_CHARACTER) {
-                    final PsiBuilder.Marker error = mark();
+                    PsiBuilder.Marker error = mark();
                     advance();
                     error.error(XmlErrorLocalize.unescapedAmpersandOrNonterminatedCharacterEntityReference());
                 }
@@ -166,7 +166,7 @@ else if (token() != XmlTokenType.XML_TAG_END && token() != XmlTokenType.XML_EMPT
     public void parseTagContent() {
         PsiBuilder.Marker xmlText = null;
         while (true) {
-            final IElementType tt = token();
+            IElementType tt = token();
             if (tt == null || tt == XmlTokenType.XML_END_TAG_START) {
                 break;
             }
@@ -177,7 +177,7 @@ public void parseTagContent() {
             }
             else if (tt == JSTokenTypes.BAD_CHARACTER) {
                 xmlText = startText(xmlText);
-                final PsiBuilder.Marker error = mark();
+                PsiBuilder.Marker error = mark();
                 advance();
                 error.error(XmlErrorLocalize.unescapedAmpersandOrNonterminatedCharacterEntityReference());
             }
@@ -212,18 +212,18 @@ private PsiBuilder.Marker startText(@Nullable PsiBuilder.Marker xmlText) {
 
     protected void parseTag(boolean multipleRootTagError) {
         assert token() == JSTokenTypes.XML_START_TAG_START : "Tag start expected";
-        final PsiBuilder.Marker tag = mark();
+        PsiBuilder.Marker tag = mark();
 
-        final String tagName = parseTagHeader(multipleRootTagError, tag);
+        String tagName = parseTagHeader(multipleRootTagError, tag);
         if (tagName == null) {
             return;
         }
 
-        final PsiBuilder.Marker content = mark();
+        PsiBuilder.Marker content = mark();
         parseTagContent();
 
         if (token() == JSTokenTypes.XML_END_TAG_START) {
-            final PsiBuilder.Marker footer = mark();
+            PsiBuilder.Marker footer = mark();
             advance();
 
             if (token() == JSTokenTypes.XML_NAME) {
diff --git a/base-impl/src/main/java/consulo/javascript/lang/parsing/JavaScriptParser.java b/base-impl/src/main/java/consulo/javascript/lang/parsing/JavaScriptParser.java
index a7094490..e3478429 100644
--- a/base-impl/src/main/java/consulo/javascript/lang/parsing/JavaScriptParser.java
+++ b/base-impl/src/main/java/consulo/javascript/lang/parsing/JavaScriptParser.java
@@ -20,7 +20,7 @@ public ASTNode parse(@Nonnull IElementType root, @Nonnull PsiBuilder originalBui
 
         JavaScriptParserBuilder builder = createBuilder(originalBuilder);
 
-        final PsiBuilder.Marker rootMarker = builder.mark();
+        PsiBuilder.Marker rootMarker = builder.mark();
         while (!builder.eof()) {
             parsingContext.getStatementParsing().parseSourceElement(builder);
         }
diff --git a/base-impl/src/main/java/consulo/javascript/lang/parsing/Parsing.java b/base-impl/src/main/java/consulo/javascript/lang/parsing/Parsing.java
index c5669e89..d66d8c16 100644
--- a/base-impl/src/main/java/consulo/javascript/lang/parsing/Parsing.java
+++ b/base-impl/src/main/java/consulo/javascript/lang/parsing/Parsing.java
@@ -100,12 +100,12 @@ public ExpressionParsing getExpressionParsing() {
     }
 
     public static void buildTokenElement(IElementType type, PsiBuilder builder) {
-        final PsiBuilder.Marker marker = builder.mark();
+        PsiBuilder.Marker marker = builder.mark();
         builder.advanceLexer();
         marker.done(type);
     }
 
-    public static boolean checkMatches(final PsiBuilder builder, final IElementType token, final LocalizeValue message) {
+    public static boolean checkMatches(PsiBuilder builder, IElementType token, LocalizeValue message) {
         if (builder.getTokenType() == token) {
             builder.advanceLexer();
             return true;
diff --git a/base-impl/src/main/java/consulo/javascript/lang/parsing/StatementParsing.java b/base-impl/src/main/java/consulo/javascript/lang/parsing/StatementParsing.java
index a72bb175..9a8f6079 100644
--- a/base-impl/src/main/java/consulo/javascript/lang/parsing/StatementParsing.java
+++ b/base-impl/src/main/java/consulo/javascript/lang/parsing/StatementParsing.java
@@ -36,7 +36,7 @@ public StatementParsing(JavaScriptParsingContext context) {
     }
 
     public void parseSourceElement(PsiBuilder builder) {
-        final IElementType tokenType = builder.getTokenType();
+        IElementType tokenType = builder.getTokenType();
         if (tokenType == JSTokenTypes.FUNCTION_KEYWORD) {
             getFunctionParsing().parseFunctionDeclaration(builder);
         }
@@ -53,8 +53,8 @@ public void parseStatement(PsiBuilder builder) {
         doParseStatement(builder, false);
     }
 
-    protected void doParseStatement(final PsiBuilder builder, boolean canHaveClasses) {
-        final IElementType firstToken = builder.getTokenType();
+    protected void doParseStatement(PsiBuilder builder, boolean canHaveClasses) {
+        IElementType firstToken = builder.getTokenType();
 
         if (firstToken == null) {
             builder.error(JavaScriptLocalize.javascriptParserMessageExpectedStatement());
@@ -146,7 +146,7 @@ protected void doParseStatement(final PsiBuilder builder, boolean canHaveClasses
 
         if (firstToken == JSTokenTypes.IDENTIFIER) {
             // Try labeled statement:
-            final PsiBuilder.Marker labeledStatement = builder.mark();
+            PsiBuilder.Marker labeledStatement = builder.mark();
             builder.advanceLexer();
             if (builder.getTokenType() == JSTokenTypes.COLON) {
                 builder.advanceLexer();
@@ -173,7 +173,7 @@ protected boolean doParseStatementSub(PsiBuilder builder, boolean canHaveClasses
 
     protected boolean parseExpressionStatement(PsiBuilder builder) {
         // Try expression statement
-        final PsiBuilder.Marker exprStatement = builder.mark();
+        PsiBuilder.Marker exprStatement = builder.mark();
         if (getExpressionParsing().parseExpressionOptional(builder)) {
             checkForSemicolon(builder);
             exprStatement.done(JSElementTypes.EXPRESSION_STATEMENT);
@@ -185,9 +185,9 @@ protected boolean parseExpressionStatement(PsiBuilder builder) {
         return false;
     }
 
-    protected void parseYieldStatement(final PsiBuilder builder) {
+    protected void parseYieldStatement(PsiBuilder builder) {
         StatementParsing.LOG.assertTrue(builder.getTokenType() == JSTokenTypes.YIELD_KEYWORD);
-        final PsiBuilder.Marker marker = builder.mark();
+        PsiBuilder.Marker marker = builder.mark();
         builder.advanceLexer();
 
         getExpressionParsing().parseExpressionOptional(builder);
@@ -195,16 +195,16 @@ protected void parseYieldStatement(final PsiBuilder builder) {
         marker.done(JSElementTypes.YIELD_STATEMENT);
     }
 
-    protected void parseLetStatement(final PsiBuilder builder) {
-        final PsiBuilder.Marker marker = parseLetExpressionStart(builder);
+    protected void parseLetStatement(PsiBuilder builder) {
+        PsiBuilder.Marker marker = parseLetExpressionStart(builder);
 
         parseBlock(builder);
         marker.done(JSElementTypes.LET_STATEMENT);
     }
 
-    PsiBuilder.Marker parseLetExpressionStart(final PsiBuilder builder) {
+    PsiBuilder.Marker parseLetExpressionStart(PsiBuilder builder) {
         StatementParsing.LOG.assertTrue(builder.getTokenType() == JSTokenTypes.LET_KEYWORD);
-        final PsiBuilder.Marker marker = builder.mark();
+        PsiBuilder.Marker marker = builder.mark();
         builder.advanceLexer();
 
         if (builder.getTokenType() == JSTokenTypes.LPAR) {
@@ -224,9 +224,9 @@ PsiBuilder.Marker parseLetExpressionStart(final PsiBuilder builder) {
     }
 
 
-    public void parseIncludeDirective(final PsiBuilder builder) {
+    public void parseIncludeDirective(PsiBuilder builder) {
         StatementParsing.LOG.assertTrue(builder.getTokenType() == JSTokenTypes.INCLUDE_KEYWORD);
-        final PsiBuilder.Marker useNSStatement = builder.mark();
+        PsiBuilder.Marker useNSStatement = builder.mark();
         builder.advanceLexer();
         Parsing.checkMatches(builder, JSTokenTypes.STRING_LITERAL, JavaScriptLocalize.javascriptParserMessageExpectedStringLiteral());
         checkForSemicolon(builder);
@@ -234,9 +234,9 @@ public void parseIncludeDirective(final PsiBuilder builder) {
         useNSStatement.done(JSElementTypes.INCLUDE_DIRECTIVE);
     }
 
-    protected void parseTryStatement(final PsiBuilder builder) {
+    protected void parseTryStatement(PsiBuilder builder) {
         StatementParsing.LOG.assertTrue(builder.getTokenType() == JSTokenTypes.TRY_KEYWORD);
-        final PsiBuilder.Marker statement = builder.mark();
+        PsiBuilder.Marker statement = builder.mark();
         builder.advanceLexer();
         parseBlock(builder);
 
@@ -252,16 +252,16 @@ protected void parseTryStatement(final PsiBuilder builder) {
         statement.done(JSElementTypes.TRY_STATEMENT);
     }
 
-    private void parseCatchBlock(final PsiBuilder builder) {
+    private void parseCatchBlock(PsiBuilder builder) {
         StatementParsing.LOG.assertTrue(builder.getTokenType() == JSTokenTypes.CATCH_KEYWORD);
-        final PsiBuilder.Marker block = builder.mark();
+        PsiBuilder.Marker block = builder.mark();
         builder.advanceLexer();
         Parsing.checkMatches(builder, JSTokenTypes.LPAR, JavaScriptLocalize.javascriptParserMessageExpectedLparen());
 
-        final IElementType identifierType = builder.getTokenType();
+        IElementType identifierType = builder.getTokenType();
 
         if (JSTokenTypes.IDENTIFIER_TOKENS_SET.contains(identifierType)) {
-            final PsiBuilder.Marker param = builder.mark();
+            PsiBuilder.Marker param = builder.mark();
             builder.advanceLexer();
 
             if (!getExpressionParsing().tryParseType(builder) && builder.getTokenType() == JSTokenTypes.IF_KEYWORD) {
@@ -287,9 +287,9 @@ private void parseCatchBlock(final PsiBuilder builder) {
         block.done(JSElementTypes.CATCH_BLOCK);
     }
 
-    protected void parseThrowStatement(final PsiBuilder builder) {
+    protected void parseThrowStatement(PsiBuilder builder) {
         StatementParsing.LOG.assertTrue(builder.getTokenType() == JSTokenTypes.THROW_KEYWORD);
-        final PsiBuilder.Marker statement = builder.mark();
+        PsiBuilder.Marker statement = builder.mark();
         builder.advanceLexer();
 
         getExpressionParsing().parseExpressionOptional(builder);
@@ -298,9 +298,9 @@ protected void parseThrowStatement(final PsiBuilder builder) {
         statement.done(JSElementTypes.THROW_STATEMENT);
     }
 
-    protected void parseSwitchStatement(final PsiBuilder builder) {
+    protected void parseSwitchStatement(PsiBuilder builder) {
         StatementParsing.LOG.assertTrue(builder.getTokenType() == JSTokenTypes.SWITCH_KEYWORD);
-        final PsiBuilder.Marker statement = builder.mark();
+        PsiBuilder.Marker statement = builder.mark();
         builder.advanceLexer();
 
         Parsing.checkMatches(builder, JSTokenTypes.LPAR, JavaScriptLocalize.javascriptParserMessageExpectedLparen());
@@ -321,9 +321,9 @@ protected void parseSwitchStatement(final PsiBuilder builder) {
         statement.done(JSElementTypes.SWITCH_STATEMENT);
     }
 
-    private void parseCaseOrDefaultClause(final PsiBuilder builder) {
-        final IElementType firstToken = builder.getTokenType();
-        final PsiBuilder.Marker clause = builder.mark();
+    private void parseCaseOrDefaultClause(PsiBuilder builder) {
+        IElementType firstToken = builder.getTokenType();
+        PsiBuilder.Marker clause = builder.mark();
         if (firstToken != JSTokenTypes.CASE_KEYWORD && firstToken != JSTokenTypes.DEFAULT_KEYWORD) {
             builder.error(JavaScriptLocalize.javascriptParserMessageExpectedCatchOrDefault());
         }
@@ -343,9 +343,9 @@ private void parseCaseOrDefaultClause(final PsiBuilder builder) {
         clause.done(JSElementTypes.CASE_CLAUSE);
     }
 
-    protected void parseWithStatement(final PsiBuilder builder) {
+    protected void parseWithStatement(PsiBuilder builder) {
         StatementParsing.LOG.assertTrue(builder.getTokenType() == JSTokenTypes.WITH_KEYWORD);
-        final PsiBuilder.Marker statement = builder.mark();
+        PsiBuilder.Marker statement = builder.mark();
         builder.advanceLexer();
 
         Parsing.checkMatches(builder, JSTokenTypes.LPAR, JavaScriptLocalize.javascriptParserMessageExpectedLparen());
@@ -357,9 +357,9 @@ protected void parseWithStatement(final PsiBuilder builder) {
         statement.done(JSElementTypes.WITH_STATEMENT);
     }
 
-    protected void parseReturnStatement(final PsiBuilder builder) {
+    protected void parseReturnStatement(PsiBuilder builder) {
         StatementParsing.LOG.assertTrue(builder.getTokenType() == JSTokenTypes.RETURN_KEYWORD);
-        final PsiBuilder.Marker statement = builder.mark();
+        PsiBuilder.Marker statement = builder.mark();
         boolean hasNewLine = hasSemanticLineBeforeNextToken(builder);
         builder.advanceLexer();
         if (!hasNewLine) {
@@ -370,9 +370,9 @@ protected void parseReturnStatement(final PsiBuilder builder) {
         statement.done(JSElementTypes.RETURN_STATEMENT);
     }
 
-    protected void parseBreakStatement(final PsiBuilder builder) {
+    protected void parseBreakStatement(PsiBuilder builder) {
         StatementParsing.LOG.assertTrue(builder.getTokenType() == JSTokenTypes.BREAK_KEYWORD);
-        final PsiBuilder.Marker statement = builder.mark();
+        PsiBuilder.Marker statement = builder.mark();
 
         boolean hasSemanticLineBeforeNextToken = hasSemanticLineBeforeNextToken(builder);
         builder.advanceLexer();
@@ -388,9 +388,9 @@ protected void parseBreakStatement(final PsiBuilder builder) {
         statement.done(JSElementTypes.BREAK_STATEMENT);
     }
 
-    protected void parseContinueStatement(final PsiBuilder builder) {
+    protected void parseContinueStatement(PsiBuilder builder) {
         StatementParsing.LOG.assertTrue(builder.getTokenType() == JSTokenTypes.CONTINUE_KEYWORD);
-        final PsiBuilder.Marker statement = builder.mark();
+        PsiBuilder.Marker statement = builder.mark();
         boolean hasSemanticLineBeforeNextToken = hasSemanticLineBeforeNextToken(builder);
         builder.advanceLexer();
 
@@ -405,7 +405,7 @@ protected void parseContinueStatement(final PsiBuilder builder) {
         statement.done(JSElementTypes.CONTINUE_STATEMENT);
     }
 
-    protected boolean hasSemanticLineBeforeNextToken(final PsiBuilder builder) {
+    protected boolean hasSemanticLineBeforeNextToken(PsiBuilder builder) {
         IElementType tokenType = builder.getTokenType();
         if (tokenType == null) {
             return true;
@@ -441,8 +441,8 @@ else if (!Character.isWhitespace(c)) {
         return false;
     }
 
-    protected void parseIterationStatement(final PsiBuilder builder) {
-        final IElementType tokenType = builder.getTokenType();
+    protected void parseIterationStatement(PsiBuilder builder) {
+        IElementType tokenType = builder.getTokenType();
         if (tokenType == JSTokenTypes.DO_KEYWORD) {
             parseDoWhileStatement(builder);
         }
@@ -457,23 +457,23 @@ else if (tokenType == JSTokenTypes.FOR_KEYWORD) {
         }
     }
 
-    private void parseForStatement(final PsiBuilder builder) {
+    private void parseForStatement(PsiBuilder builder) {
         StatementParsing.LOG.assertTrue(builder.getTokenType() == JSTokenTypes.FOR_KEYWORD);
-        final PsiBuilder.Marker statement = builder.mark();
-        final boolean forin = parseForLoopHeader(builder);
+        PsiBuilder.Marker statement = builder.mark();
+        boolean forin = parseForLoopHeader(builder);
 
         parseStatement(builder);
         statement.done(forin ? JSElementTypes.FOR_IN_STATEMENT : JSElementTypes.FOR_STATEMENT);
     }
 
-    protected boolean parseForLoopHeader(final PsiBuilder builder) {
+    protected boolean parseForLoopHeader(PsiBuilder builder) {
         builder.advanceLexer();
         if (builder.getTokenType() == JSTokenTypes.EACH_KEYWORD) {
             builder.advanceLexer();
         }
 
         Parsing.checkMatches(builder, JSTokenTypes.LPAR, JavaScriptLocalize.javascriptParserMessageExpectedLparen());
-        final boolean empty;
+        boolean empty;
         if (builder.getTokenType() == JSTokenTypes.VAR_KEYWORD || builder.getTokenType() == JSTokenTypes.LET_KEYWORD) {
             parseVarStatement(builder, true);
             empty = false;
@@ -511,9 +511,9 @@ else if (builder.getTokenType() == JSTokenTypes.IN_KEYWORD) {
         return forin;
     }
 
-    private void parseWhileStatement(final PsiBuilder builder) {
+    private void parseWhileStatement(PsiBuilder builder) {
         StatementParsing.LOG.assertTrue(builder.getTokenType() == JSTokenTypes.WHILE_KEYWORD);
-        final PsiBuilder.Marker statement = builder.mark();
+        PsiBuilder.Marker statement = builder.mark();
         builder.advanceLexer();
 
         Parsing.checkMatches(builder, JSTokenTypes.LPAR, JavaScriptLocalize.javascriptParserMessageExpectedLparen());
@@ -524,9 +524,9 @@ private void parseWhileStatement(final PsiBuilder builder) {
         statement.done(JSElementTypes.WHILE_STATEMENT);
     }
 
-    private void parseDoWhileStatement(final PsiBuilder builder) {
+    private void parseDoWhileStatement(PsiBuilder builder) {
         StatementParsing.LOG.assertTrue(builder.getTokenType() == JSTokenTypes.DO_KEYWORD);
-        final PsiBuilder.Marker statement = builder.mark();
+        PsiBuilder.Marker statement = builder.mark();
         builder.advanceLexer();
 
         parseStatement(builder);
@@ -539,9 +539,9 @@ private void parseDoWhileStatement(final PsiBuilder builder) {
         statement.done(JSElementTypes.DOWHILE_STATEMENT);
     }
 
-    protected void parseIfStatement(final PsiBuilder builder) {
+    protected void parseIfStatement(PsiBuilder builder) {
         StatementParsing.LOG.assertTrue(builder.getTokenType() == JSTokenTypes.IF_KEYWORD);
-        final PsiBuilder.Marker ifStatement = builder.mark();
+        PsiBuilder.Marker ifStatement = builder.mark();
         builder.advanceLexer();
 
         Parsing.checkMatches(builder, JSTokenTypes.LPAR, JavaScriptLocalize.javascriptParserMessageExpectedLparen());
@@ -564,23 +564,23 @@ protected void parseIfStatement(final PsiBuilder builder) {
         ifStatement.done(JSElementTypes.IF_STATEMENT);
     }
 
-    protected void parseEmptyStatement(final PsiBuilder builder) {
+    protected void parseEmptyStatement(PsiBuilder builder) {
         StatementParsing.LOG.assertTrue(builder.getTokenType() == JSTokenTypes.SEMICOLON);
-        final PsiBuilder.Marker statement = builder.mark();
+        PsiBuilder.Marker statement = builder.mark();
         builder.advanceLexer();
         statement.done(JSElementTypes.EMPTY_STATEMENT);
     }
 
-    protected void parseVarStatement(final PsiBuilder builder, final boolean inForInitializationContext) {
+    protected void parseVarStatement(PsiBuilder builder, boolean inForInitializationContext) {
         parseVarStatementWithMarker(builder, inForInitializationContext, builder.mark());
     }
 
     protected void parseVarStatementWithMarker(
-        final PsiBuilder builder,
-        final boolean inForInitializationContext,
-        final @Nonnull PsiBuilder.Marker var
+        PsiBuilder builder,
+        boolean inForInitializationContext,
+        @Nonnull PsiBuilder.Marker var
     ) {
-        final IElementType declType = builder.getTokenType();
+        IElementType declType = builder.getTokenType();
         LOG.assertTrue(declType == JSTokenTypes.VAR_KEYWORD ||
             declType == JSTokenTypes.CONST_KEYWORD ||
             declType == JSTokenTypes.LET_KEYWORD);
@@ -656,13 +656,13 @@ protected void parseDeconstructionElement(PsiBuilder builder) {
         mark.done(JSElementTypes.DESTRUCTURING_ELEMENT);
     }
 
-    protected void checkForSemicolon(final PsiBuilder builder) {
+    protected void checkForSemicolon(PsiBuilder builder) {
         if (builder.getTokenType() == JSTokenTypes.SEMICOLON) {
             builder.advanceLexer();
         }
     }
 
-    protected void parseVarDeclaration(final PsiBuilder builder, boolean allowIn) {
+    protected void parseVarDeclaration(PsiBuilder builder, boolean allowIn) {
         if (!JSTokenTypes.IDENTIFIER_TOKENS_SET.contains(builder.getTokenType())) {
             builder.error(JavaScriptLocalize.javascriptParserMessageExpectedVariableName());
             builder.advanceLexer();
@@ -696,11 +696,11 @@ protected void parseVarInitializer(PsiBuilder builder, boolean allowIn) {
         }
     }
 
-    public void parseBlock(final PsiBuilder builder) {
+    public void parseBlock(PsiBuilder builder) {
         parseBlockOrFunctionBody(builder, BlockType.BLOCK);
     }
 
-    public void parseFunctionBody(final PsiBuilder builder) {
+    public void parseFunctionBody(PsiBuilder builder) {
         parseBlockOrFunctionBody(builder, BlockType.FUNCTION_BODY);
     }
 
@@ -710,8 +710,8 @@ public enum BlockType {
         PACKAGE_OR_CLASS_BODY
     }
 
-    protected void parseBlockOrFunctionBody(final PsiBuilder builder, BlockType type) {
-        final PsiBuilder.Marker block = type != BlockType.PACKAGE_OR_CLASS_BODY ? builder.mark() : null;
+    protected void parseBlockOrFunctionBody(PsiBuilder builder, BlockType type) {
+        PsiBuilder.Marker block = type != BlockType.PACKAGE_OR_CLASS_BODY ? builder.mark() : null;
         if (builder.getTokenType() != JSTokenTypes.LBRACE) {
             if (block != null) {
                 block.rollbackTo();
diff --git a/base-impl/src/main/java/consulo/javascript/lang/psi/impl/resolve/ResolveHelper.java b/base-impl/src/main/java/consulo/javascript/lang/psi/impl/resolve/ResolveHelper.java
index 845f878b..d8c7ad4c 100644
--- a/base-impl/src/main/java/consulo/javascript/lang/psi/impl/resolve/ResolveHelper.java
+++ b/base-impl/src/main/java/consulo/javascript/lang/psi/impl/resolve/ResolveHelper.java
@@ -28,7 +28,7 @@ public static ResolveHelper find(PsiElement element) {
     }
 
     @Nullable
-    public JSImportedElementResolveResult resolveTypeNameUsingImports(final @Nonnull String referencedName, PsiNamedElement parent) {
+    public JSImportedElementResolveResult resolveTypeNameUsingImports(@Nonnull String referencedName, PsiNamedElement parent) {
         return null;
     }
 
diff --git a/base-impl/src/main/java/consulo/javascript/types/JSQualifiedStubElementType.java b/base-impl/src/main/java/consulo/javascript/types/JSQualifiedStubElementType.java
index ac741347..0f900285 100644
--- a/base-impl/src/main/java/consulo/javascript/types/JSQualifiedStubElementType.java
+++ b/base-impl/src/main/java/consulo/javascript/types/JSQualifiedStubElementType.java
@@ -37,8 +37,8 @@ public JSQualifiedStubElementType(@NonNls String debugName) {
 
     @Override
     public void indexStub(@Nonnull StubT stub, @Nonnull IndexSink sink) {
-        final String name = stub.getName();
-        final String fqn = stub.getQualifiedName();
+        String name = stub.getName();
+        String fqn = stub.getQualifiedName();
 
         if (name != null && doIndexName(stub, name, fqn)) {
             sink.occurrence(JavaScriptIndexKeys.ELEMENTS_BY_NAME, name);
@@ -49,11 +49,11 @@ public void indexStub(@Nonnull StubT stub, @Nonnull IndexSink sink) {
         }
     }
 
-    protected boolean doIndexQualifiedName(StubT stub, final String name, final String fqn) {
+    protected boolean doIndexQualifiedName(StubT stub, String name, String fqn) {
         return true;
     }
 
-    protected boolean doIndexName(StubT stub, final String name, final String fqn) {
+    protected boolean doIndexName(StubT stub, String name, String fqn) {
         return true;
     }
 }
diff --git a/debugger/debugger-impl/src/main/java/consulo/javascript/debugger/JSDebuggerSupportUtils.java b/debugger/debugger-impl/src/main/java/consulo/javascript/debugger/JSDebuggerSupportUtils.java
index 5ee8a267..9b822207 100644
--- a/debugger/debugger-impl/src/main/java/consulo/javascript/debugger/JSDebuggerSupportUtils.java
+++ b/debugger/debugger-impl/src/main/java/consulo/javascript/debugger/JSDebuggerSupportUtils.java
@@ -56,7 +56,7 @@ public static TextRange getExpressionAtOffset(@Nonnull Project project, @Nonnull
 
 		if(ref == null)
 		{
-			final PsiElement at = file.findElementAt(offset);
+			PsiElement at = file.findElementAt(offset);
 
 			TextRange rangeForNamedElement = getRangeForNamedElement(at, 0);
 			if(rangeForNamedElement != null)
@@ -64,7 +64,7 @@ public static TextRange getExpressionAtOffset(@Nonnull Project project, @Nonnull
 				return rangeForNamedElement;
 			}
 
-			final PsiLanguageInjectionHost psiLanguageInjectionHost = PsiTreeUtil.getParentOfType(at, PsiLanguageInjectionHost.class);
+			PsiLanguageInjectionHost psiLanguageInjectionHost = PsiTreeUtil.getParentOfType(at, PsiLanguageInjectionHost.class);
 
 			if(psiLanguageInjectionHost != null)
 			{
@@ -75,11 +75,11 @@ public static TextRange getExpressionAtOffset(@Nonnull Project project, @Nonnull
 				InjectedLanguageManager.getInstance(project).enumerate(psiLanguageInjectionHost, new PsiLanguageInjectionHost.InjectedPsiVisitor()
 				{
 					@Override
-					public void visit(@Nonnull final PsiFile injectedPsi, @Nonnull final List places)
+					public void visit(@Nonnull PsiFile injectedPsi, @Nonnull List places)
 					{
-						final PsiLanguageInjectionHost.Shred shred = places.get(0);
-						final int injectedStart = shred.getRangeInsideHost().getStartOffset() + shred.getHost().getTextOffset();
-						final int offsetInInjected = offset - injectedStart;
+						PsiLanguageInjectionHost.Shred shred = places.get(0);
+						int injectedStart = shred.getRangeInsideHost().getStartOffset() + shred.getHost().getTextOffset();
+						int offsetInInjected = offset - injectedStart;
 
 						result.set(injectedPsi.findReferenceAt(offsetInInjected));
 						eltInInjected.set(injectedPsi.findElementAt(offsetInInjected));
@@ -109,7 +109,7 @@ public void visit(@Nonnull final PsiFile injectedPsi, @Nonnull final List places)
+					public void visit(@Nonnull PsiFile injectedPsi, @Nonnull List places)
 					{
-						final PsiLanguageInjectionHost.Shred shred = places.get(0);
-						final int injectedStart = shred.getRangeInsideHost().getStartOffset() + shred.getHost().getTextOffset();
-						final int offsetInInjected = finalOffset - injectedStart;
+						PsiLanguageInjectionHost.Shred shred = places.get(0);
+						int injectedStart = shred.getRangeInsideHost().getStartOffset() + shred.getHost().getTextOffset();
+						int offsetInInjected = finalOffset - injectedStart;
 
 						resultInInjected.set(injectedPsi.findElementAt(offsetInInjected));
 					}
diff --git a/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8BaseDebugProcess.java b/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8BaseDebugProcess.java
index 3c67500b..c1edc2dc 100644
--- a/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8BaseDebugProcess.java
+++ b/debugger/v8-debugger-impl/src/main/java/consulo/javascript/run/debug/v8/V8BaseDebugProcess.java
@@ -238,7 +238,7 @@ public LocalizeValue getCurrentStateMessage() {
         }
     }
 
-    public void addScript(final Script script) {
+    public void addScript(Script script) {
         UIUtil.invokeLaterIfNeeded(() -> myScriptListPanel.add(script));
     }
 
diff --git a/inspections/src/main/java/com/sixrr/inspectjs/BaseInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/BaseInspection.java
index 3b7adf8a..1b756f09 100644
--- a/inspections/src/main/java/com/sixrr/inspectjs/BaseInspection.java
+++ b/inspections/src/main/java/com/sixrr/inspectjs/BaseInspection.java
@@ -31,7 +31,7 @@ public PsiElementVisitor buildVisitor(
             return PsiElementVisitor.EMPTY_VISITOR;
         }
 
-        final BaseInspectionVisitor visitor = buildVisitor();
+        BaseInspectionVisitor visitor = buildVisitor();
         visitor.setProblemsHolder(problemsHolder);
         visitor.setOnTheFly(onTheFly);
         visitor.setInspection(this);
@@ -78,24 +78,24 @@ protected InspectionJSFix[] buildFixes(PsiElement location) {
     public abstract BaseInspectionVisitor buildVisitor();
 
     protected boolean functionHasIdentifier(JSFunction function) {
-        final PsiElement identifier = function.getNameIdentifier();
+        PsiElement identifier = function.getNameIdentifier();
         return identifier != null && PsiTreeUtil.isAncestor(function, identifier, true);
     }
 
     @Override
-    public PsiNamedElement getProblemElement(final PsiElement psiElement) {
+    public PsiNamedElement getProblemElement(PsiElement psiElement) {
         return PsiTreeUtil.getNonStrictParentOfType(psiElement, PsiFile.class);
     }
 
     @Override
-    public SuppressIntentionAction[] getSuppressActions(@Nullable final PsiElement element) {
+    public SuppressIntentionAction[] getSuppressActions(@Nullable PsiElement element) {
         return new SuppressIntentionAction[]{
             /* new AddNoInspectionCommentFix(HighlightDisplayKey.find(getShortName()), JSSuppressionHolder.class),  */
         };
     }
 
     @Override
-    public boolean isSuppressedFor(@Nonnull final PsiElement element) {
+    public boolean isSuppressedFor(@Nonnull PsiElement element) {
         return SuppressionUtil.isSuppressedInStatement(element, getID(), JSSuppressionHolder.class);
     }
 }
\ No newline at end of file
diff --git a/inspections/src/main/java/com/sixrr/inspectjs/BaseInspectionVisitor.java b/inspections/src/main/java/com/sixrr/inspectjs/BaseInspectionVisitor.java
index 93d32e6e..09f6029b 100644
--- a/inspections/src/main/java/com/sixrr/inspectjs/BaseInspectionVisitor.java
+++ b/inspections/src/main/java/com/sixrr/inspectjs/BaseInspectionVisitor.java
@@ -36,14 +36,14 @@ public void setOnTheFly(boolean onTheFly) {
 
     @RequiredReadAction
     protected void registerFunctionCallError(JSCallExpression expression) {
-        final JSExpression methodExpression = expression.getMethodExpression();
+        JSExpression methodExpression = expression.getMethodExpression();
         PsiElement errorLocation = null;
 
         if (methodExpression instanceof JSReferenceExpression referenceExpression) {
             errorLocation = referenceExpression.getReferenceNameElement();
         }
         else if (methodExpression instanceof JSFunction function) {
-            final PsiElement node = function.getNameIdentifier();
+            PsiElement node = function.getNameIdentifier();
             if (node != null) {
                 errorLocation = node;
             }
@@ -56,12 +56,12 @@ else if (methodExpression instanceof JSFunction function) {
     }
 
     protected void registerStatementError(JSStatement statement, Object... args) {
-        final PsiElement statementToken = statement.getFirstChild();
+        PsiElement statementToken = statement.getFirstChild();
         registerError(statementToken, args);
     }
 
     protected void registerFunctionError(JSFunction function) {
-        final PsiElement identifier = function.getNameIdentifier();
+        PsiElement identifier = function.getNameIdentifier();
         if (identifier == null ||
             !PsiTreeUtil.isAncestor(function, identifier, true)) {
             registerError(function.getFirstChild());
@@ -72,7 +72,7 @@ protected void registerFunctionError(JSFunction function) {
     }
 
     protected void registerVariableError(JSVariable variable) {
-        final PsiElement nameIdentifier = variable.getFirstChild();
+        PsiElement nameIdentifier = variable.getFirstChild();
         registerError(nameIdentifier);
     }
 
@@ -80,8 +80,8 @@ protected void registerError(PsiElement location) {
         if (location == null) {
             return;
         }
-        final LocalQuickFix[] fix = createFixes(location, myState);
-        final String description = inspection.buildErrorString(myState, location);
+        LocalQuickFix[] fix = createFixes(location, myState);
+        String description = inspection.buildErrorString(myState, location);
         registerError(location, description, fix);
     }
 
@@ -99,13 +99,13 @@ protected ProblemHighlightType getProblemHighlightType(PsiElement location) {
         return ProblemHighlightType.GENERIC_ERROR_OR_WARNING;
     }
 
-    protected PsiElement getEditorErrorLocation(final @Nonnull PsiElement location) {
+    protected PsiElement getEditorErrorLocation(@Nonnull PsiElement location) {
         return location;
     }
 
     protected void registerError(PsiElement location, Object... args) {
-        final LocalQuickFix[] fix = createFixes(location, myState);
-        final String description = inspection.buildErrorString(myState, args);
+        LocalQuickFix[] fix = createFixes(location, myState);
+        String description = inspection.buildErrorString(myState, args);
         registerError(location, description, fix);
     }
 
@@ -114,11 +114,11 @@ private LocalQuickFix[] createFixes(PsiElement location, Object state) {
         if (!onTheFly && inspection.buildQuickFixesOnlyForOnTheFlyErrors()) {
             return null;
         }
-        final InspectionJSFix[] fixes = inspection.buildFixes(location);
+        InspectionJSFix[] fixes = inspection.buildFixes(location);
         if (fixes != null) {
             return fixes;
         }
-        final InspectionJSFix fix = inspection.buildFix(location, state);
+        InspectionJSFix fix = inspection.buildFix(location, state);
         if (fix == null) {
             return null;
         }
@@ -131,7 +131,7 @@ public ProblemDescriptor[] getErrors() {
             return null;
         }
         else {
-            final int numErrors = errors.size();
+            int numErrors = errors.size();
             return errors.toArray(new ProblemDescriptor[numErrors]);
         }
     }
diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bitwise/PointlessBitwiseExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bitwise/PointlessBitwiseExpressionJSInspection.java
index 0a7b7f08..829c5838 100644
--- a/inspections/src/main/java/com/sixrr/inspectjs/bitwise/PointlessBitwiseExpressionJSInspection.java
+++ b/inspections/src/main/java/com/sixrr/inspectjs/bitwise/PointlessBitwiseExpressionJSInspection.java
@@ -68,10 +68,10 @@ public InspectionToolState createStateProvider() {
 
     @RequiredReadAction
     String calculateReplacementExpression(JSExpression expression, PointlessBitwiseExpressionJSInspectionState state) {
-        final JSBinaryExpression exp = (JSBinaryExpression)expression;
-        final JSExpression lhs = exp.getLOperand();
-        final JSExpression rhs = exp.getROperand();
-        final IElementType tokenType = exp.getOperationSign();
+        JSBinaryExpression exp = (JSBinaryExpression)expression;
+        JSExpression lhs = exp.getLOperand();
+        JSExpression rhs = exp.getROperand();
+        IElementType tokenType = exp.getOperationSign();
         assert rhs != null;
         if (tokenType.equals(JSTokenTypes.AND)) {
             if (isZero(lhs, state) || isAllOnes(rhs, state)) {
@@ -139,8 +139,8 @@ public LocalizeValue getName() {
         @Override
         @RequiredReadAction
         public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException {
-            final JSExpression expression = (JSExpression)descriptor.getPsiElement();
-            final String newExpression = calculateReplacementExpression(expression, myState);
+            JSExpression expression = (JSExpression)descriptor.getPsiElement();
+            String newExpression = calculateReplacementExpression(expression, myState);
             replaceExpression(expression, newExpression);
         }
     }
@@ -150,19 +150,19 @@ private class PointlessBitwiseVisitor extends BaseInspectionVisitor 31) {
                 registerError(expression, value);
             }
diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bugs/DivideByZeroJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bugs/DivideByZeroJSInspection.java
index c35c780b..309e40c5 100644
--- a/inspections/src/main/java/com/sixrr/inspectjs/bugs/DivideByZeroJSInspection.java
+++ b/inspections/src/main/java/com/sixrr/inspectjs/bugs/DivideByZeroJSInspection.java
@@ -53,11 +53,11 @@ private static class DivisionByZeroVisitor extends BaseInspectionVisitor {
         @Override
         public void visitJSBinaryExpression(@Nonnull JSBinaryExpression expression) {
             super.visitJSBinaryExpression(expression);
-            final JSExpression rhs = expression.getROperand();
+            JSExpression rhs = expression.getROperand();
             if (rhs == null) {
                 return;
             }
-            final IElementType tokenType = expression.getOperationSign();
+            IElementType tokenType = expression.getOperationSign();
             if (!JSTokenTypes.DIV.equals(tokenType) &&
                 !JSTokenTypes.PERC.equals(tokenType)) {
                 return;
@@ -71,11 +71,11 @@ public void visitJSBinaryExpression(@Nonnull JSBinaryExpression expression) {
         @Override
         public void visitJSAssignmentExpression(JSAssignmentExpression expression) {
             super.visitJSAssignmentExpression(expression);
-            final JSExpression rhs = expression.getROperand();
+            JSExpression rhs = expression.getROperand();
             if (rhs == null) {
                 return;
             }
-            final IElementType tokenType = expression.getOperationSign();
+            IElementType tokenType = expression.getOperationSign();
             if (!JSTokenTypes.DIVEQ.equals(tokenType)
                 && !JSTokenTypes.PERCEQ.equals(tokenType)) {
                 return;
@@ -88,7 +88,7 @@ public void visitJSAssignmentExpression(JSAssignmentExpression expression) {
     }
 
     private static boolean isZero(JSExpression expression) {
-        @NonNls final String text = expression.getText();
+        @NonNls String text = expression.getText();
         return "0".equals(text)
             || "0x0".equals(text)
             || "0X0".equals(text)
diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bugs/EqualityComparisonWithCoercionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bugs/EqualityComparisonWithCoercionJSInspection.java
index a26f831d..09b7c961 100644
--- a/inspections/src/main/java/com/sixrr/inspectjs/bugs/EqualityComparisonWithCoercionJSInspection.java
+++ b/inspections/src/main/java/com/sixrr/inspectjs/bugs/EqualityComparisonWithCoercionJSInspection.java
@@ -50,8 +50,8 @@ protected String buildErrorString(Object state, Object... args) {
 
     @Override
     protected InspectionJSFix buildFix(PsiElement location, Object state) {
-        final JSBinaryExpression expression = (JSBinaryExpression)location;
-        final IElementType sign = expression.getOperationSign();
+        JSBinaryExpression expression = (JSBinaryExpression)location;
+        IElementType sign = expression.getOperationSign();
         if (JSTokenTypes.EQEQ == sign) {
             return new EqualityComparisonWithCoercionFix("===");
         }
@@ -76,9 +76,9 @@ public LocalizeValue getName() {
 
         @Override
         protected void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException {
-            final JSBinaryExpression expression = (JSBinaryExpression)descriptor.getPsiElement();
-            final JSExpression lhs = expression.getLOperand();
-            final JSExpression rhs = expression.getROperand();
+            JSBinaryExpression expression = (JSBinaryExpression)descriptor.getPsiElement();
+            JSExpression lhs = expression.getLOperand();
+            JSExpression rhs = expression.getROperand();
             replaceExpression(expression, lhs.getText() + sign + rhs.getText());
         }
     }
@@ -92,15 +92,15 @@ private static class EqualityComparisonWithCoercionVisitor extends BaseInspectio
         @Override
         public void visitJSBinaryExpression(@Nonnull JSBinaryExpression expression) {
             super.visitJSBinaryExpression(expression);
-            final JSExpression lhs = expression.getLOperand();
+            JSExpression lhs = expression.getLOperand();
             if (lhs == null) {
                 return;
             }
-            final JSExpression rhs = expression.getROperand();
+            JSExpression rhs = expression.getROperand();
             if (rhs == null) {
                 return;
             }
-            final IElementType tokenType = expression.getOperationSign();
+            IElementType tokenType = expression.getOperationSign();
             if (!JSTokenTypes.EQEQ.equals(tokenType) && !JSTokenTypes.NE.equals(tokenType)) {
                 return;
             }
@@ -112,7 +112,7 @@ public void visitJSBinaryExpression(@Nonnull JSBinaryExpression expression) {
     }
 
     private static boolean mayCauseCoercion(JSExpression expression) {
-        @NonNls final String text = expression.getText();
+        @NonNls String text = expression.getText();
         return "0".equals(text)
             || "0x0".equals(text)
             || "0X0".equals(text)
diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bugs/NonShortCircuitBooleanExpressionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bugs/NonShortCircuitBooleanExpressionJSInspection.java
index 38da0c59..55ffa13b 100644
--- a/inspections/src/main/java/com/sixrr/inspectjs/bugs/NonShortCircuitBooleanExpressionJSInspection.java
+++ b/inspections/src/main/java/com/sixrr/inspectjs/bugs/NonShortCircuitBooleanExpressionJSInspection.java
@@ -54,12 +54,12 @@ public LocalizeValue getName() {
 
         @Override
         public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException {
-            final JSBinaryExpression expression = (JSBinaryExpression)descriptor.getPsiElement();
-            final JSExpression lhs = expression.getLOperand();
-            final JSExpression rhs = expression.getROperand();
-            final IElementType operationSign = expression.getOperationSign();
+            JSBinaryExpression expression = (JSBinaryExpression)descriptor.getPsiElement();
+            JSExpression lhs = expression.getLOperand();
+            JSExpression rhs = expression.getROperand();
+            IElementType operationSign = expression.getOperationSign();
             assert rhs != null;
-            final String newExpression = lhs.getText() + getShortCircuitOperand(operationSign) + rhs.getText();
+            String newExpression = lhs.getText() + getShortCircuitOperand(operationSign) + rhs.getText();
             replaceExpression(expression, newExpression);
         }
 
@@ -80,7 +80,7 @@ public void visitJSBinaryExpression(@Nonnull JSBinaryExpression expression) {
             if (!(expression.getROperand() != null)) {
                 return;
             }
-            final IElementType sign = expression.getOperationSign();
+            IElementType sign = expression.getOperationSign();
             if (!JSTokenTypes.AND.equals(sign) && !JSTokenTypes.OR.equals(sign)) {
                 return;
             }
diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bugs/ObjectAllocationIgnoredJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bugs/ObjectAllocationIgnoredJSInspection.java
index de05cd2b..f262ec1b 100644
--- a/inspections/src/main/java/com/sixrr/inspectjs/bugs/ObjectAllocationIgnoredJSInspection.java
+++ b/inspections/src/main/java/com/sixrr/inspectjs/bugs/ObjectAllocationIgnoredJSInspection.java
@@ -53,8 +53,8 @@ public void visitJSExpressionStatement(@Nonnull JSExpressionStatement statement)
             if (!(statement.getExpression()instanceof JSNewExpression)) {
                 return;
             }
-            final JSNewExpression newExpression = (JSNewExpression) statement.getExpression();
-            final JSExpression methodExpression = newExpression.getMethodExpression();
+            JSNewExpression newExpression = (JSNewExpression) statement.getExpression();
+            JSExpression methodExpression = newExpression.getMethodExpression();
             if (methodExpression == null) {
                 return;
             }
diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bugs/RecursionUtils.java b/inspections/src/main/java/com/sixrr/inspectjs/bugs/RecursionUtils.java
index 40a40537..354f7115 100644
--- a/inspections/src/main/java/com/sixrr/inspectjs/bugs/RecursionUtils.java
+++ b/inspections/src/main/java/com/sixrr/inspectjs/bugs/RecursionUtils.java
@@ -26,7 +26,7 @@ public static boolean statementMayReturnBeforeRecursing(JSStatement statement, J
             return false;
         }
         else if (statement instanceof JSReturnStatement returnStatement) {
-            final JSExpression returnValue = returnStatement.getExpression();
+            JSExpression returnValue = returnStatement.getExpression();
             return returnValue == null || !expressionDefinitelyRecurses(returnValue, function);
         }
         else if (statement instanceof JSForStatement forStatement) {
@@ -63,49 +63,49 @@ else if (statement instanceof JSSwitchStatement switchStatement) {
     }
 
     private static boolean doWhileStatementMayReturnBeforeRecursing(JSDoWhileStatement loopStatement, JSFunction function) {
-        final JSStatement body = loopStatement.getBody();
+        JSStatement body = loopStatement.getBody();
         return statementMayReturnBeforeRecursing(body, function);
     }
 
     private static boolean whileStatementMayReturnBeforeRecursing(JSWhileStatement loopStatement, JSFunction function) {
-        final JSExpression test = loopStatement.getCondition();
+        JSExpression test = loopStatement.getCondition();
         if (expressionDefinitelyRecurses(test, function)) {
             return false;
         }
-        final JSStatement body = loopStatement.getBody();
+        JSStatement body = loopStatement.getBody();
         return statementMayReturnBeforeRecursing(body, function);
     }
 
     private static boolean forStatementMayReturnBeforeRecursing(JSForStatement loopStatement, JSFunction function) {
-        final JSExpression initialization = loopStatement.getInitialization();
+        JSExpression initialization = loopStatement.getInitialization();
 
         if (expressionDefinitelyRecurses(initialization, function)) {
             return false;
         }
-        final JSExpression test = loopStatement.getCondition();
+        JSExpression test = loopStatement.getCondition();
         if (expressionDefinitelyRecurses(test, function)) {
             return false;
         }
-        final JSStatement body = loopStatement.getBody();
+        JSStatement body = loopStatement.getBody();
         return statementMayReturnBeforeRecursing(body, function);
     }
 
     private static boolean foreachStatementMayReturnBeforeRecursing(JSForInStatement loopStatement, JSFunction function) {
-        final JSExpression test = loopStatement.getCollectionExpression();
+        JSExpression test = loopStatement.getCollectionExpression();
         if (expressionDefinitelyRecurses(test, function)) {
             return false;
         }
-        final JSStatement body = loopStatement.getBody();
+        JSStatement body = loopStatement.getBody();
         return statementMayReturnBeforeRecursing(body, function);
     }
 
     private static boolean switchStatementMayReturnBeforeRecursing(JSSwitchStatement switchStatement, JSFunction function) {
-        final JSCaseClause[] clauses = switchStatement.getCaseClauses();
+        JSCaseClause[] clauses = switchStatement.getCaseClauses();
         if (clauses == null) {
             return true;
         }
         for (JSCaseClause clause : clauses) {
-            final JSStatement[] statements = clause.getStatements();
+            JSStatement[] statements = clause.getStatements();
             for (JSStatement statement : statements) {
                 if (statementMayReturnBeforeRecursing(statement, function)) {
                     return true;
@@ -117,7 +117,7 @@ private static boolean switchStatementMayReturnBeforeRecursing(JSSwitchStatement
     }
 
     private static boolean tryStatementMayReturnBeforeRecursing(JSTryStatement tryStatement, JSFunction function) {
-        final JSStatement finallyBlock = tryStatement.getFinallyStatement();
+        JSStatement finallyBlock = tryStatement.getFinallyStatement();
         if (finallyBlock != null) {
             if (statementMayReturnBeforeRecursing(finallyBlock, function)) {
                 return true;
@@ -126,33 +126,33 @@ private static boolean tryStatementMayReturnBeforeRecursing(JSTryStatement trySt
                 return false;
             }
         }
-        final JSStatement tryBlock = tryStatement.getStatement();
+        JSStatement tryBlock = tryStatement.getStatement();
         if (statementMayReturnBeforeRecursing(tryBlock, function)) {
             return true;
         }
-        final JSCatchBlock catchBlock = tryStatement.getCatchBlock();
+        JSCatchBlock catchBlock = tryStatement.getCatchBlock();
         if (catchBlock == null) {
             return false;
         }
-        final JSStatement catchBlockStatement = catchBlock.getStatement();
+        JSStatement catchBlockStatement = catchBlock.getStatement();
         return statementMayReturnBeforeRecursing(catchBlockStatement, function);
     }
 
     private static boolean ifStatementMayReturnBeforeRecursing(JSIfStatement ifStatement, JSFunction function) {
-        final JSExpression test = ifStatement.getCondition();
+        JSExpression test = ifStatement.getCondition();
         if (expressionDefinitelyRecurses(test, function)) {
             return false;
         }
-        final JSStatement thenBranch = ifStatement.getThen();
+        JSStatement thenBranch = ifStatement.getThen();
         if (statementMayReturnBeforeRecursing(thenBranch, function)) {
             return true;
         }
-        final JSStatement elseBranch = ifStatement.getElse();
+        JSStatement elseBranch = ifStatement.getElse();
         return elseBranch != null && statementMayReturnBeforeRecursing(elseBranch, function);
     }
 
     private static boolean labeledStatementMayReturnBeforeRecursing(JSLabeledStatement labeledStatement, JSFunction function) {
-        final JSStatement statement = labeledStatement.getStatement();
+        JSStatement statement = labeledStatement.getStatement();
         return statementMayReturnBeforeRecursing(statement, function);
     }
 
@@ -160,8 +160,8 @@ private static boolean codeBlockMayReturnBeforeRecursing(JSBlockStatement block,
         if (block == null) {
             return true;
         }
-        final JSStatement[] statements = block.getStatements();
-        for (final JSStatement statement : statements) {
+        JSStatement[] statements = block.getStatements();
+        for (JSStatement statement : statements) {
             if (statementMayReturnBeforeRecursing(statement, function)) {
                 return true;
             }
@@ -173,7 +173,7 @@ private static boolean codeBlockMayReturnBeforeRecursing(JSBlockStatement block,
     }
 
     public static boolean functionMayRecurse(@Nonnull JSFunction function) {
-        final RecursionVisitor recursionVisitor = new RecursionVisitor(function);
+        RecursionVisitor recursionVisitor = new RecursionVisitor(function);
         function.accept(recursionVisitor);
         return recursionVisitor.isRecursive();
     }
@@ -216,31 +216,31 @@ private static boolean expressionDefinitelyRecurses(JSExpression exp, JSFunction
     }
 
     private static boolean conditionalExpressionDefinitelyRecurses(JSConditionalExpression expression, JSFunction function) {
-        final JSExpression condExpression = expression.getCondition();
+        JSExpression condExpression = expression.getCondition();
         if (expressionDefinitelyRecurses(condExpression, function)) {
             return true;
         }
-        final JSExpression thenExpression = expression.getThen();
-        final JSExpression elseExpression = expression.getElse();
+        JSExpression thenExpression = expression.getThen();
+        JSExpression elseExpression = expression.getElse();
         return expressionDefinitelyRecurses(thenExpression, function) && expressionDefinitelyRecurses(elseExpression, function);
     }
 
     private static boolean binaryExpressionDefinitelyRecurses(JSBinaryExpression expression, JSFunction function) {
-        final JSExpression lhs = expression.getLOperand();
+        JSExpression lhs = expression.getLOperand();
         if (expressionDefinitelyRecurses(lhs, function)) {
             return true;
         }
-        final IElementType tokenType = expression.getOperationSign();
+        IElementType tokenType = expression.getOperationSign();
         if (JSTokenTypes.ANDAND.equals(tokenType) || JSTokenTypes.OROR.equals(tokenType)) {
             return false;
         }
-        final JSExpression rhs = expression.getROperand();
+        JSExpression rhs = expression.getROperand();
         return expressionDefinitelyRecurses(rhs, function);
     }
 
     private static boolean arrayInitializerExpressionDefinitelyRecurses(JSArrayLiteralExpression expression, JSFunction function) {
-        final JSExpression[] initializers = expression.getExpressions();
-        for (final JSExpression initializer : initializers) {
+        JSExpression[] initializers = expression.getExpressions();
+        for (JSExpression initializer : initializers) {
             if (expressionDefinitelyRecurses(initializer, function)) {
                 return true;
             }
@@ -249,40 +249,40 @@ private static boolean arrayInitializerExpressionDefinitelyRecurses(JSArrayLiter
     }
 
     private static boolean prefixExpressionDefinitelyRecurses(JSPrefixExpression expression, JSFunction function) {
-        final JSExpression operand = expression.getExpression();
+        JSExpression operand = expression.getExpression();
         return expressionDefinitelyRecurses(operand, function);
     }
 
     private static boolean postfixExpressionDefinitelyRecurses(JSPostfixExpression expression, JSFunction function) {
-        final JSExpression operand = expression.getExpression();
+        JSExpression operand = expression.getExpression();
         return expressionDefinitelyRecurses(operand, function);
     }
 
     private static boolean parenthesizedExpressionDefinitelyRecurses(JSParenthesizedExpression expression, JSFunction function) {
-        final JSExpression innerExpression = expression.getInnerExpression();
+        JSExpression innerExpression = expression.getInnerExpression();
         return expressionDefinitelyRecurses(innerExpression, function);
     }
 
     private static boolean referenceExpressionDefinitelyRecurses(JSReferenceExpression expression, JSFunction function) {
-        final JSExpression qualifierExpression = expression.getQualifier();
+        JSExpression qualifierExpression = expression.getQualifier();
         return qualifierExpression != null && expressionDefinitelyRecurses(qualifierExpression, function);
     }
 
     private static boolean assignmentExpressionDefinitelyRecurses(JSAssignmentExpression assignmentExpression, JSFunction function) {
-        final JSExpression rhs = assignmentExpression.getROperand();
-        final JSExpression lhs = assignmentExpression.getLOperand();
+        JSExpression rhs = assignmentExpression.getROperand();
+        JSExpression lhs = assignmentExpression.getLOperand();
         return expressionDefinitelyRecurses(rhs, function) || expressionDefinitelyRecurses(lhs, function);
     }
 
 
     private static boolean functionCallExpressionDefinitelyRecurses(JSCallExpression exp, JSFunction function) {
-        final JSExpression functionExpression = exp.getMethodExpression();
+        JSExpression functionExpression = exp.getMethodExpression();
         if (functionExpression instanceof JSReferenceExpression reference) {
-            final PsiElement referent = reference.resolve();
+            PsiElement referent = reference.resolve();
             if (referent != null && referent.equals(function)) {
                 return true;
             }
-            final JSExpression qualifier = reference.getQualifier();
+            JSExpression qualifier = reference.getQualifier();
             if (qualifier == null || qualifier instanceof JSThisExpression) {
                 return reference.getText().equals(function.getName());
             }
@@ -291,9 +291,9 @@ private static boolean functionCallExpressionDefinitelyRecurses(JSCallExpression
         if (expressionDefinitelyRecurses(functionExpression, function)) {
             return true;
         }
-        final JSArgumentList argumentList = exp.getArgumentList();
-        final JSExpression[] args = argumentList != null ? argumentList.getArguments() : JSExpression.EMPTY_ARRAY;
-        for (final JSExpression arg : args) {
+        JSArgumentList argumentList = exp.getArgumentList();
+        JSExpression[] args = argumentList != null ? argumentList.getArguments() : JSExpression.EMPTY_ARRAY;
+        for (JSExpression arg : args) {
             if (expressionDefinitelyRecurses(arg, function)) {
                 return true;
             }
@@ -312,13 +312,13 @@ private static boolean statementDefinitelyRecurses(JSStatement statement, JSFunc
             return false;
         }
         else if (statement instanceof JSExpressionStatement expressionStatement) {
-            final JSExpression expression = expressionStatement.getExpression();
+            JSExpression expression = expressionStatement.getExpression();
             return expressionDefinitelyRecurses(expression, function);
         }
         else if (statement instanceof JSVarStatement declaration) {
-            final JSVariable[] declaredElements = declaration.getVariables();
-            for (final JSVariable variable : declaredElements) {
-                final JSExpression initializer = variable.getInitializer();
+            JSVariable[] declaredElements = declaration.getVariables();
+            for (JSVariable variable : declaredElements) {
+                JSExpression initializer = variable.getInitializer();
                 if (expressionDefinitelyRecurses(initializer, function)) {
                     return true;
                 }
@@ -326,7 +326,7 @@ else if (statement instanceof JSVarStatement declaration) {
             return false;
         }
         else if (statement instanceof JSReturnStatement returnStatement) {
-            final JSExpression returnValue = returnStatement.getExpression();
+            JSExpression returnValue = returnStatement.getExpression();
             return returnValue != null && expressionDefinitelyRecurses(returnValue, function);
         }
         else if (statement instanceof JSForStatement forStatement) {
@@ -363,16 +363,16 @@ else if (statement instanceof JSSwitchStatement switchStatement) {
     }
 
     private static boolean switchStatementDefinitelyRecurses(JSSwitchStatement switchStatement, JSFunction function) {
-        final JSExpression switchExpression = switchStatement.getSwitchExpression();
+        JSExpression switchExpression = switchStatement.getSwitchExpression();
         return expressionDefinitelyRecurses(switchExpression, function);
     }
 
     private static boolean tryStatementDefinitelyRecurses(JSTryStatement tryStatement, JSFunction function) {
-        final JSStatement tryBlock = tryStatement.getStatement();
+        JSStatement tryBlock = tryStatement.getStatement();
         if (statementDefinitelyRecurses(tryBlock, function)) {
             return true;
         }
-        final JSStatement finallyBlock = tryStatement.getFinallyStatement();
+        JSStatement finallyBlock = tryStatement.getFinallyStatement();
         return statementDefinitelyRecurses(finallyBlock, function);
     }
 
@@ -380,8 +380,8 @@ private static boolean codeBlockDefinitelyRecurses(JSBlockStatement block, JSFun
         if (block == null) {
             return false;
         }
-        final JSStatement[] statements = block.getStatements();
-        for (final JSStatement statement : statements) {
+        JSStatement[] statements = block.getStatements();
+        for (JSStatement statement : statements) {
             if (statementDefinitelyRecurses(statement, function)) {
                 return true;
             }
@@ -393,66 +393,66 @@ else if (statementMayReturnBeforeRecursing(statement, function)) {
     }
 
     private static boolean ifStatementDefinitelyRecurses(JSIfStatement ifStatement, JSFunction function) {
-        final JSExpression condition = ifStatement.getCondition();
+        JSExpression condition = ifStatement.getCondition();
         if (expressionDefinitelyRecurses(condition, function)) {
             return true;
         }
-        final JSStatement thenBranch = ifStatement.getThen();
-        final JSStatement elseBranch = ifStatement.getElse();
+        JSStatement thenBranch = ifStatement.getThen();
+        JSStatement elseBranch = ifStatement.getElse();
         return thenBranch != null && elseBranch != null
             && statementDefinitelyRecurses(thenBranch, function)
             && statementDefinitelyRecurses(elseBranch, function);
     }
 
     private static boolean forStatementDefinitelyRecurses(JSForStatement forStatement, JSFunction function) {
-        final JSExpression initialization = forStatement.getInitialization();
+        JSExpression initialization = forStatement.getInitialization();
         if (expressionDefinitelyRecurses(initialization, function)) {
             return true;
         }
-        final JSExpression condition = forStatement.getCondition();
+        JSExpression condition = forStatement.getCondition();
         if (expressionDefinitelyRecurses(condition, function)) {
             return true;
         }
         if (BoolUtils.isTrue(condition)) {
-            final JSStatement body = forStatement.getBody();
+            JSStatement body = forStatement.getBody();
             return statementDefinitelyRecurses(body, function);
         }
         return false;
     }
 
     private static boolean foreachStatementDefinitelyRecurses(JSForInStatement foreachStatement, JSFunction function) {
-        final JSExpression iteration = foreachStatement.getCollectionExpression();
+        JSExpression iteration = foreachStatement.getCollectionExpression();
         return expressionDefinitelyRecurses(iteration, function);
     }
 
     private static boolean whileStatementDefinitelyRecurses(JSWhileStatement whileStatement, JSFunction function) {
-        final JSExpression condition = whileStatement.getCondition();
+        JSExpression condition = whileStatement.getCondition();
         if (expressionDefinitelyRecurses(condition, function)) {
             return true;
         }
         if (BoolUtils.isTrue(condition)) {
-            final JSStatement body = whileStatement.getBody();
+            JSStatement body = whileStatement.getBody();
             return statementDefinitelyRecurses(body, function);
         }
         return false;
     }
 
     private static boolean doWhileStatementDefinitelyRecurses(JSDoWhileStatement doWhileStatement, JSFunction function) {
-        final JSStatement body = doWhileStatement.getBody();
+        JSStatement body = doWhileStatement.getBody();
         if (statementDefinitelyRecurses(body, function)) {
             return true;
         }
-        final JSExpression condition = doWhileStatement.getCondition();
+        JSExpression condition = doWhileStatement.getCondition();
         return expressionDefinitelyRecurses(condition, function);
     }
 
     private static boolean labeledStatementDefinitelyRecurses(JSLabeledStatement labeledStatement, JSFunction function) {
-        final JSStatement body = labeledStatement.getStatement();
+        JSStatement body = labeledStatement.getStatement();
         return statementDefinitelyRecurses(body, function);
     }
 
     public static boolean functionDefinitelyRecurses(@Nonnull JSFunction function) {
-        final JSSourceElement[] body = function.getBody();
+        JSSourceElement[] body = function.getBody();
         if (body == null) {
             return false;
         }
diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bugs/RecursionVisitor.java b/inspections/src/main/java/com/sixrr/inspectjs/bugs/RecursionVisitor.java
index 9b699424..fb18b567 100644
--- a/inspections/src/main/java/com/sixrr/inspectjs/bugs/RecursionVisitor.java
+++ b/inspections/src/main/java/com/sixrr/inspectjs/bugs/RecursionVisitor.java
@@ -30,14 +30,14 @@ public void visitJSCallExpression(@Nonnull JSCallExpression call) {
             return;
         }
         super.visitJSCallExpression(call);
-        final JSExpression methodExpression = call.getMethodExpression();
+        JSExpression methodExpression = call.getMethodExpression();
 
         // method expression could be e.g. a["1"]
         if (!(methodExpression instanceof JSReferenceExpression)) {
             return;
         }
-        final JSReferenceExpression functionExpression = (JSReferenceExpression)methodExpression;
-        final String calledFunctionName = functionExpression.getReferencedName();
+        JSReferenceExpression functionExpression = (JSReferenceExpression)methodExpression;
+        String calledFunctionName = functionExpression.getReferencedName();
 
         if (calledFunctionName == null) {
             return;
@@ -45,11 +45,11 @@ public void visitJSCallExpression(@Nonnull JSCallExpression call) {
         if (!calledFunctionName.equals(functionName)) {
             return;
         }
-        final PsiElement referent = functionExpression.resolve();
+        PsiElement referent = functionExpression.resolve();
         if (!function.equals(referent)) {
             return;
         }
-        final JSExpression qualifier = functionExpression.getQualifier();
+        JSExpression qualifier = functionExpression.getQualifier();
         if (qualifier == null || qualifier instanceof JSThisExpression) {
             recursive = true;
         }
diff --git a/inspections/src/main/java/com/sixrr/inspectjs/bugs/TextLabelInSwitchStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/bugs/TextLabelInSwitchStatementJSInspection.java
index 42f5bdf2..bbad0d12 100644
--- a/inspections/src/main/java/com/sixrr/inspectjs/bugs/TextLabelInSwitchStatementJSInspection.java
+++ b/inspections/src/main/java/com/sixrr/inspectjs/bugs/TextLabelInSwitchStatementJSInspection.java
@@ -44,9 +44,9 @@ private static class TextLabelInSwitchStatementVisitor extends BaseInspectionVis
         @Override
         public void visitJSSwitchStatement(@Nonnull JSSwitchStatement statement) {
             super.visitJSSwitchStatement(statement);
-            final JSCaseClause[] caseClauses = statement.getCaseClauses();
+            JSCaseClause[] caseClauses = statement.getCaseClauses();
             for (JSCaseClause caseClause : caseClauses) {
-                final JSStatement[] statements = caseClause.getStatements();
+                JSStatement[] statements = caseClause.getStatements();
                 for (JSStatement statement1 : statements) {
                     checkForLabel(statement1);
                 }
@@ -57,8 +57,8 @@ private void checkForLabel(JSStatement statement) {
             if (!(statement instanceof JSLabeledStatement)) {
                 return;
             }
-            final JSLabeledStatement labeledStatement = (JSLabeledStatement) statement;
-            final PsiElement label = labeledStatement.getLabelIdentifier();
+            JSLabeledStatement labeledStatement = (JSLabeledStatement) statement;
+            PsiElement label = labeledStatement.getLabelIdentifier();
             registerError(label);
         }
     }
diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/AnonymousFunctionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/AnonymousFunctionJSInspection.java
index 9f3afa5e..7f62d480 100644
--- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/AnonymousFunctionJSInspection.java
+++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/AnonymousFunctionJSInspection.java
@@ -44,8 +44,8 @@ private static class Visitor extends BaseInspectionVisitor {
         @Override
         public void visitJSFunctionExpression(JSFunctionExpression jsFunctionExpression) {
             super.visitJSFunctionExpression(jsFunctionExpression);
-            final JSFunction function = jsFunctionExpression.getFunction();
-            final PsiElement identifier = function.getNameIdentifier();
+            JSFunction function = jsFunctionExpression.getFunction();
+            PsiElement identifier = function.getNameIdentifier();
             if (identifier == null || PsiTreeUtil.isAncestor(function, identifier, true)) {
                 return;
             }
diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/BlockStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/BlockStatementJSInspection.java
index a0975734..b7af7c48 100644
--- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/BlockStatementJSInspection.java
+++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/BlockStatementJSInspection.java
@@ -42,7 +42,7 @@ private static class Visitor extends BaseInspectionVisitor {
         @Override
         public void visitJSBlock(JSBlockStatement jsBlockStatement) {
             super.visitJSBlock(jsBlockStatement);
-            final PsiElement parent = jsBlockStatement.getParent();
+            PsiElement parent = jsBlockStatement.getParent();
             if (parent instanceof JSIfStatement
                 || parent instanceof JSLoopStatement
                 || parent instanceof JSWithStatement
diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConfusingFloatingPointLiteralJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConfusingFloatingPointLiteralJSInspection.java
index cd041198..a2a7327a 100644
--- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConfusingFloatingPointLiteralJSInspection.java
+++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConfusingFloatingPointLiteralJSInspection.java
@@ -57,42 +57,42 @@ public LocalizeValue getName() {
 
         @Override
         public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException {
-            final JSExpression literalExpression = (JSExpression)descriptor.getPsiElement();
-            final String text = literalExpression.getText();
-            final String newText = getCanonicalForm(text);
+            JSExpression literalExpression = (JSExpression)descriptor.getPsiElement();
+            String text = literalExpression.getText();
+            String newText = getCanonicalForm(text);
             replaceExpression(literalExpression, newText);
         }
 
         private static String getCanonicalForm(String text) {
-            final String suffix;
-            final String prefix;
+            String suffix;
+            String prefix;
             if (text.indexOf((int)'e') > 0) {
-                final int breakPoint = text.indexOf((int)'e');
+                int breakPoint = text.indexOf((int)'e');
                 suffix = text.substring(breakPoint);
                 prefix = text.substring(0, breakPoint);
             }
             else if (text.indexOf((int)'E') > 0) {
-                final int breakPoint = text.indexOf((int)'E');
+                int breakPoint = text.indexOf((int)'E');
                 suffix = text.substring(breakPoint);
                 prefix = text.substring(0, breakPoint);
             }
             else if (text.indexOf((int)'f') > 0) {
-                final int breakPoint = text.indexOf((int)'f');
+                int breakPoint = text.indexOf((int)'f');
                 suffix = text.substring(breakPoint);
                 prefix = text.substring(0, breakPoint);
             }
             else if (text.indexOf((int)'F') > 0) {
-                final int breakPoint = text.indexOf((int)'F');
+                int breakPoint = text.indexOf((int)'F');
                 suffix = text.substring(breakPoint);
                 prefix = text.substring(0, breakPoint);
             }
             else if (text.indexOf((int)'d') > 0) {
-                final int breakPoint = text.indexOf((int)'d');
+                int breakPoint = text.indexOf((int)'d');
                 suffix = text.substring(breakPoint);
                 prefix = text.substring(0, breakPoint);
             }
             else if (text.indexOf((int)'D') > 0) {
-                final int breakPoint = text.indexOf((int)'D');
+                int breakPoint = text.indexOf((int)'D');
                 suffix = text.substring(breakPoint);
                 prefix = text.substring(0, breakPoint);
             }
@@ -100,7 +100,7 @@ else if (text.indexOf((int)'D') > 0) {
                 suffix = "";
                 prefix = text;
             }
-            final int indexPoint = prefix.indexOf((int)'.');
+            int indexPoint = prefix.indexOf((int)'.');
             if (indexPoint < 0) {
                 return prefix + ".0" + suffix;
             }
@@ -122,7 +122,7 @@ private static class ConfusingFloatingPointLiteralVisitor extends BaseInspection
         @Override
         public void visitJSLiteralExpression(@Nonnull JSSimpleLiteralExpression literal) {
             super.visitJSLiteralExpression(literal);
-            final String text = literal.getText();
+            String text = literal.getText();
             if (text == null) {
                 return;
             }
@@ -137,13 +137,13 @@ public void visitJSLiteralExpression(@Nonnull JSSimpleLiteralExpression literal)
     }
 
     private static boolean isConfusing(String text) {
-        final Matcher matcher = PICKY_FLOATING_POINT_PATTERN.matcher(text);
+        Matcher matcher = PICKY_FLOATING_POINT_PATTERN.matcher(text);
         return !matcher.matches();
     }
 
     private static boolean isFloatingPoint(JSLiteralExpression literal) {
-        final String text = literal.getText();
-        final char firstChar = text.charAt(0);
+        String text = literal.getText();
+        char firstChar = text.charAt(0);
         if (firstChar != '.' && !Character.isDigit(firstChar)) {
             return false;
         }
diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConfusingPlusesOrMinusesJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConfusingPlusesOrMinusesJSInspection.java
index 459f9bab..ec38242f 100644
--- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConfusingPlusesOrMinusesJSInspection.java
+++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/ConfusingPlusesOrMinusesJSInspection.java
@@ -46,29 +46,29 @@ private static class Visitor extends BaseInspectionVisitor {
         @Override
         public void visitJSBinaryExpression(JSBinaryExpression jsBinaryExpression) {
             super.visitJSBinaryExpression(jsBinaryExpression);
-            final IElementType sign = jsBinaryExpression.getOperationSign();
+            IElementType sign = jsBinaryExpression.getOperationSign();
             if (!JSTokenTypes.PLUS.equals(sign) && !JSTokenTypes.MINUS.equals(sign)) {
                 return;
             }
-            final JSExpression rhs = jsBinaryExpression.getROperand();
+            JSExpression rhs = jsBinaryExpression.getROperand();
             if (rhs == null) {
                 return;
             }
-            final JSExpression lhs = jsBinaryExpression.getLOperand();
+            JSExpression lhs = jsBinaryExpression.getLOperand();
             if (lhs == null) {
                 return;
             }
             if (lhs instanceof JSPostfixExpression) {
-                final JSPostfixExpression postfixExpression = (JSPostfixExpression)lhs;
-                final IElementType innerSign = postfixExpression.getOperationSign();
+                JSPostfixExpression postfixExpression = (JSPostfixExpression)lhs;
+                IElementType innerSign = postfixExpression.getOperationSign();
                 if (matches(sign, innerSign)) {
                     registerError(jsBinaryExpression);
                     return;
                 }
             }
             if (rhs instanceof JSPrefixExpression) {
-                final JSPrefixExpression postfixExpression = (JSPrefixExpression)rhs;
-                final IElementType innerSign = postfixExpression.getOperationSign();
+                JSPrefixExpression postfixExpression = (JSPrefixExpression)rhs;
+                IElementType innerSign = postfixExpression.getOperationSign();
                 if (matches(sign, innerSign)) {
                     registerError(jsBinaryExpression);
                 }
diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/DynamicallyGeneratedCodeJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/DynamicallyGeneratedCodeJSInspection.java
index 974bd4da..05975f76 100644
--- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/DynamicallyGeneratedCodeJSInspection.java
+++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/DynamicallyGeneratedCodeJSInspection.java
@@ -45,7 +45,7 @@ private static class Visitor extends BaseInspectionVisitor {
         @Override
         public void visitJSCallExpression(JSCallExpression jsCallExpression) {
             super.visitJSCallExpression(jsCallExpression);
-            final JSExpression methodExpression;
+            JSExpression methodExpression;
             try {
                 methodExpression = jsCallExpression.getMethodExpression();
             }
@@ -55,10 +55,10 @@ public void visitJSCallExpression(JSCallExpression jsCallExpression) {
             if (!(methodExpression instanceof JSReferenceExpression)) {
                 return;
             }
-            final JSReferenceExpression referenceExpression = (JSReferenceExpression)methodExpression;
-            final JSExpression qualifier = referenceExpression.getQualifier();
+            JSReferenceExpression referenceExpression = (JSReferenceExpression)methodExpression;
+            JSExpression qualifier = referenceExpression.getQualifier();
 
-            @NonNls final String methodName = referenceExpression.getReferencedName();
+            @NonNls String methodName = referenceExpression.getReferencedName();
             if (!"eval".equals(methodName) && !"setTimeout".equals(methodName) && !"setInterval".equals(methodName)) {
                 return;
             }
@@ -68,7 +68,7 @@ public void visitJSCallExpression(JSCallExpression jsCallExpression) {
         @Override
         public void visitJSNewExpression(JSNewExpression jsNewExpression) {
             super.visitJSNewExpression(jsNewExpression);
-            final JSExpression methodExpression;
+            JSExpression methodExpression;
             try {
                 methodExpression = jsNewExpression.getMethodExpression();
             }
@@ -78,13 +78,13 @@ public void visitJSNewExpression(JSNewExpression jsNewExpression) {
             if (!(methodExpression instanceof JSReferenceExpression)) {
                 return;
             }
-            final JSReferenceExpression referenceExpression = (JSReferenceExpression)methodExpression;
-            final JSExpression qualifier = referenceExpression.getQualifier();
+            JSReferenceExpression referenceExpression = (JSReferenceExpression)methodExpression;
+            JSExpression qualifier = referenceExpression.getQualifier();
 
             if (qualifier != null) {
                 return;
             }
-            @NonNls final String methodName = referenceExpression.getReferencedName();
+            @NonNls String methodName = referenceExpression.getReferencedName();
             if (!"Function".equals(methodName)) {
                 return;
             }
diff --git a/inspections/src/main/java/com/sixrr/inspectjs/confusing/EmptyStatementBodyJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/confusing/EmptyStatementBodyJSInspection.java
index e6fbea49..7714ec9d 100644
--- a/inspections/src/main/java/com/sixrr/inspectjs/confusing/EmptyStatementBodyJSInspection.java
+++ b/inspections/src/main/java/com/sixrr/inspectjs/confusing/EmptyStatementBodyJSInspection.java
@@ -62,7 +62,7 @@ private class EmptyStatementVisitor extends BaseInspectionVisitor conditions = new HashSet();
+            Set conditions = new HashSet();
             collectConditionsForIfStatement(statement, conditions);
-            final int numConditions = conditions.size();
+            int numConditions = conditions.size();
             if (numConditions < 2) {
                 return;
             }
-            final JSExpression[] conditionArray = conditions.toArray(new JSExpression[numConditions]);
-            final boolean[] matched = new boolean[conditionArray.length];
+            JSExpression[] conditionArray = conditions.toArray(new JSExpression[numConditions]);
+            boolean[] matched = new boolean[conditionArray.length];
             Arrays.fill(matched, false);
             for (int i = 0; i < conditionArray.length; i++) {
                 if (matched[i]) {
                     continue;
                 }
-                final JSExpression condition = conditionArray[i];
+                JSExpression condition = conditionArray[i];
                 for (int j = i + 1; j < conditionArray.length; j++) {
                     if (matched[j]) {
                         continue;
                     }
-                    final JSExpression testCondition = conditionArray[j];
-                    final boolean areEquivalent =
+                    JSExpression testCondition = conditionArray[j];
+                    boolean areEquivalent =
                             EquivalenceChecker.expressionsAreEquivalent(condition,
                                     testCondition);
                     if (areEquivalent) {
@@ -90,9 +90,9 @@ public void visitJSIfStatement(@Nonnull JSIfStatement statement) {
         }
 
         private void collectConditionsForIfStatement(JSIfStatement statement, Set conditions) {
-            final JSExpression condition = statement.getCondition();
+            JSExpression condition = statement.getCondition();
             collectConditionsForExpression(condition, conditions);
-            final JSStatement branch = statement.getElse();
+            JSStatement branch = statement.getElse();
             if (branch instanceof JSIfStatement) {
                 collectConditionsForIfStatement((JSIfStatement) branch, conditions);
             }
@@ -103,16 +103,16 @@ private void collectConditionsForExpression(JSExpression condition, Set createStateProvider() {
     @Override
     @RequiredReadAction
     protected String buildErrorString(Object state, Object... args) {
-        final JSIfStatement statement = (JSIfStatement) args[0];
-        final int branches = calculateNumBranches(statement);
+        JSIfStatement statement = (JSIfStatement) args[0];
+        int branches = calculateNumBranches(statement);
         return InspectionJSLocalize.ifStatementWithTooManyBranchesErrorString(branches).get();
     }
 
     private static int calculateNumBranches(JSIfStatement statement) {
-        final JSStatement branch = statement.getElse();
+        JSStatement branch = statement.getElse();
         if (branch == null) {
             return 1;
         }
@@ -61,15 +61,15 @@ private class Visitor extends BaseInspectionVisitor createStateProvider() {
     @Override
     @RequiredReadAction
     public String buildErrorString(Object state, Object... args) {
-        final JSFunction function = (JSFunction)((PsiElement)args[0]).getParent();
+        JSFunction function = (JSFunction)((PsiElement)args[0]).getParent();
         assert function != null;
-        final CyclomaticComplexityVisitor visitor = new CyclomaticComplexityVisitor();
-        final PsiElement lastChild = function.getLastChild();
+        CyclomaticComplexityVisitor visitor = new CyclomaticComplexityVisitor();
+        PsiElement lastChild = function.getLastChild();
         assert lastChild != null;
         lastChild.accept(visitor);
-        final int coupling = visitor.getComplexity();
+        int coupling = visitor.getComplexity();
         return functionHasIdentifier(function)
             ? InspectionJSLocalize.functionRefIsOverlyComplexCyclomaticComplexityErrorString(coupling).get()
             : InspectionJSLocalize.anonymousFunctionIsOverlyComplexCyclomaticComplexityErrorString(coupling).get();
@@ -64,13 +64,13 @@ public BaseInspectionVisitor buildVisitor() {
     private class Visitor extends BaseInspectionVisitor {
         @Override
         public void visitJSFunctionDeclaration(@Nonnull JSFunction function) {
-            final PsiElement lastChild = function.getLastChild();
+            PsiElement lastChild = function.getLastChild();
             if (!(lastChild instanceof JSBlockStatement)) {
                 return;
             }
-            final CyclomaticComplexityVisitor visitor = new CyclomaticComplexityVisitor();
+            CyclomaticComplexityVisitor visitor = new CyclomaticComplexityVisitor();
             lastChild.accept(visitor);
-            final int complexity = visitor.getComplexity();
+            int complexity = visitor.getComplexity();
 
             if (complexity <= myState.getLimit()) {
                 return;
diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/CyclomaticComplexityVisitor.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/CyclomaticComplexityVisitor.java
index d8a2ba9e..084e8445 100644
--- a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/CyclomaticComplexityVisitor.java
+++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/CyclomaticComplexityVisitor.java
@@ -53,9 +53,9 @@ public void visitJSConditionalExpression(JSConditionalExpression expression) {
     @Override
     public void visitJSSwitchStatement(@Nonnull JSSwitchStatement statement) {
         super.visitJSSwitchStatement(statement);
-        final JSCaseClause[] caseClauses = statement.getCaseClauses();
+        JSCaseClause[] caseClauses = statement.getCaseClauses();
         for (JSCaseClause clause : caseClauses) {
-            final JSStatement[] statements = clause.getStatements();
+            JSStatement[] statements = clause.getStatements();
             if (statements != null && statements.length != 0) {
                 complexity++;
             }
diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleLoopsJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleLoopsJSInspection.java
index a9c5e3e6..41d08d98 100644
--- a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleLoopsJSInspection.java
+++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleLoopsJSInspection.java
@@ -29,13 +29,13 @@ public LocalizeValue getGroupDisplayName() {
     @RequiredReadAction
     @Override
     public String buildErrorString(Object state, Object... args) {
-        final JSFunction function = (JSFunction)((PsiElement)args[0]).getParent();
+        JSFunction function = (JSFunction)((PsiElement)args[0]).getParent();
         assert function != null;
-        final LoopCountVisitor visitor = new LoopCountVisitor();
-        final PsiElement lastChild = function.getLastChild();
+        LoopCountVisitor visitor = new LoopCountVisitor();
+        PsiElement lastChild = function.getLastChild();
         assert lastChild != null;
         lastChild.accept(visitor);
-        final int loopCount = visitor.getCount();
+        int loopCount = visitor.getCount();
         return functionHasIdentifier(function)
             ? InspectionJSLocalize.functionContainsMultipleLoopsErrorString(loopCount).get()
             : InspectionJSLocalize.anonymousFunctionContainsMultipleLoopsErrorString(loopCount).get();
@@ -50,13 +50,13 @@ private static class Visitor extends BaseInspectionVisitor {
         @Override
         public void visitJSFunctionDeclaration(@Nonnull JSFunction function) {
             // note: no call to super
-            final PsiElement lastChild = function.getLastChild();
+            PsiElement lastChild = function.getLastChild();
             if (!(lastChild instanceof JSBlockStatement)) {
                 return;
             }
-            final LoopCountVisitor visitor = new LoopCountVisitor();
+            LoopCountVisitor visitor = new LoopCountVisitor();
             lastChild.accept(visitor);
-            final int negationCount = visitor.getCount();
+            int negationCount = visitor.getCount();
             if (negationCount <= 1) {
                 return;
             }
diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleReturnPointsJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleReturnPointsJSInspection.java
index b4e5da65..725a2bc8 100644
--- a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleReturnPointsJSInspection.java
+++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/FunctionWithMultipleReturnPointsJSInspection.java
@@ -35,9 +35,9 @@ public LocalizeValue getGroupDisplayName() {
     @Override
     @RequiredReadAction
     public String buildErrorString(Object state, Object... args) {
-        final JSFunction function = (JSFunction)((PsiElement)args[0]).getParent();
+        JSFunction function = (JSFunction)((PsiElement)args[0]).getParent();
         assert function != null;
-        final int returnPointCount = countReturnPoints(function);
+        int returnPointCount = countReturnPoints(function);
         if (functionHasIdentifier(function)) {
             return InspectionJSLocalize.functionContainsMultipleReturnPointsErrorString(returnPointCount).get();
         }
@@ -47,7 +47,7 @@ public String buildErrorString(Object state, Object... args) {
     }
 
     private static int countReturnPoints(JSFunction function) {
-        final PsiElement lastChild = function.getLastChild();
+        PsiElement lastChild = function.getLastChild();
         if (!(lastChild instanceof JSBlockStatement)) {
             return 0;
         }
@@ -55,10 +55,10 @@ private static int countReturnPoints(JSFunction function) {
         if (ControlFlowUtils.statementMayCompleteNormally((JSStatement)lastChild)) {
             hasFallthroughReturn = true;
         }
-        final ReturnCountVisitor visitor = new ReturnCountVisitor();
+        ReturnCountVisitor visitor = new ReturnCountVisitor();
         lastChild.accept(visitor);
 
-        final int returnCount = visitor.getReturnCount();
+        int returnCount = visitor.getReturnCount();
         return hasFallthroughReturn ? returnCount + 1 : returnCount;
     }
 
@@ -70,7 +70,7 @@ public BaseInspectionVisitor buildVisitor() {
     private static class Visitor extends BaseInspectionVisitor {
         @Override
         public void visitJSFunctionDeclaration(@Nonnull JSFunction function) {
-            final int returnPointCount = countReturnPoints(function);
+            int returnPointCount = countReturnPoints(function);
             if (returnPointCount <= 1) {
                 return;
             }
diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/NegationCountVisitor.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/NegationCountVisitor.java
index 0ec54ac1..0f25aaee 100644
--- a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/NegationCountVisitor.java
+++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/NegationCountVisitor.java
@@ -28,7 +28,7 @@ public void visitJSElement(JSElement jsElement) {
     @Override
     public void visitJSBinaryExpression(@Nonnull JSBinaryExpression expression) {
         super.visitJSBinaryExpression(expression);
-        final IElementType sign = expression.getOperationSign();
+        IElementType sign = expression.getOperationSign();
         if (JSTokenTypes.NE.equals(sign) || JSTokenTypes.NEQEQ.equals(sign)) {
             negationCount++;
         }
@@ -37,7 +37,7 @@ public void visitJSBinaryExpression(@Nonnull JSBinaryExpression expression) {
     @Override
     public void visitJSPrefixExpression(@Nonnull JSPrefixExpression expression) {
         super.visitJSPrefixExpression(expression);
-        final IElementType sign = expression.getOperationSign();
+        IElementType sign = expression.getOperationSign();
         if (JSTokenTypes.EXCL.equals(sign)) {
             negationCount++;
         }
diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/NestingDepthJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/NestingDepthJSInspection.java
index fe4786ec..9553c20c 100644
--- a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/NestingDepthJSInspection.java
+++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/NestingDepthJSInspection.java
@@ -43,11 +43,11 @@ public InspectionToolState createStateProvider() {
     @Override
     @RequiredReadAction
     public String buildErrorString(Object state, Object... args) {
-        final JSFunction function = (JSFunction)((PsiElement)args[0]).getParent();
+        JSFunction function = (JSFunction)((PsiElement)args[0]).getParent();
         assert function != null;
-        final NestingDepthVisitor visitor = new NestingDepthVisitor();
+        NestingDepthVisitor visitor = new NestingDepthVisitor();
         function.accept(visitor);
-        final int nestingDepth = visitor.getMaximumDepth();
+        int nestingDepth = visitor.getMaximumDepth();
         return functionHasIdentifier(function)
             ? InspectionJSLocalize.functionIsOverlyNestedErrorString(nestingDepth).get()
             : InspectionJSLocalize.anonymousFunctionIsOverlyNestedErrorString(nestingDepth).get();
@@ -61,9 +61,9 @@ public BaseInspectionVisitor buildVisitor() {
     private class Visitor extends BaseInspectionVisitor {
         @Override
         public void visitJSFunctionDeclaration(@Nonnull JSFunction function) {
-            final NestingDepthVisitor visitor = new NestingDepthVisitor();
+            NestingDepthVisitor visitor = new NestingDepthVisitor();
             function.accept(visitor);
-            final int count = visitor.getMaximumDepth();
+            int count = visitor.getMaximumDepth();
 
             if (count > myState.getLimit()) {
                 registerFunctionError(function);
diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/NestingDepthVisitor.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/NestingDepthVisitor.java
index e87bcaac..6583b7df 100644
--- a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/NestingDepthVisitor.java
+++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/NestingDepthVisitor.java
@@ -43,9 +43,9 @@ public void visitJSForStatement(@Nonnull JSForStatement statement) {
     public void visitJSIfStatement(@Nonnull JSIfStatement statement) {
         boolean isAlreadyCounted = false;
         if (statement.getParent() instanceof JSIfStatement) {
-            final JSIfStatement parent = (JSIfStatement)statement.getParent();
+            JSIfStatement parent = (JSIfStatement)statement.getParent();
             assert parent != null;
-            final JSStatement elseBranch = parent.getElse();
+            JSStatement elseBranch = parent.getElse();
             if (statement.equals(elseBranch)) {
                 isAlreadyCounted = true;
             }
diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/ParametersPerFunctionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/ParametersPerFunctionJSInspection.java
index b68a1664..0395ad9b 100644
--- a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/ParametersPerFunctionJSInspection.java
+++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/ParametersPerFunctionJSInspection.java
@@ -45,11 +45,11 @@ public InspectionToolState createStateProvider() {
     @Override
     @RequiredReadAction
     public String buildErrorString(Object state, Object... args) {
-        final JSFunction function = (JSFunction)((PsiElement)args[0]).getParent();
+        JSFunction function = (JSFunction)((PsiElement)args[0]).getParent();
         assert function != null;
-        final JSParameterList parameterList = function.getParameterList();
-        final JSParameter[] parameters = parameterList.getParameters();
-        final int numParameters = parameters.length;
+        JSParameterList parameterList = function.getParameterList();
+        JSParameter[] parameters = parameterList.getParameters();
+        int numParameters = parameters.length;
         return functionHasIdentifier(function)
             ? InspectionJSLocalize.functionHasTooManyParametersErrorString(numParameters).get()
             : InspectionJSLocalize.anonymousFunctionHasTooManyParametersErrorString(numParameters).get();
@@ -63,15 +63,15 @@ public BaseInspectionVisitor buildVisitor() {
     private class Visitor extends BaseInspectionVisitor {
         @Override
         public void visitJSFunctionDeclaration(@Nonnull JSFunction function) {
-            final JSParameterList parameterList = function.getParameterList();
+            JSParameterList parameterList = function.getParameterList();
             if (parameterList == null) {
                 return;
             }
-            final JSParameter[] parameters = parameterList.getParameters();
+            JSParameter[] parameters = parameterList.getParameters();
             if (parameters == null) {
                 return;
             }
-            final int numParameters = parameters.length;
+            int numParameters = parameters.length;
             if (numParameters <= myState.getLimit()) {
                 return;
             }
diff --git a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/StatementsPerFunctionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/StatementsPerFunctionJSInspection.java
index 9ba21acf..3e5ee30a 100644
--- a/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/StatementsPerFunctionJSInspection.java
+++ b/inspections/src/main/java/com/sixrr/inspectjs/functionmetrics/StatementsPerFunctionJSInspection.java
@@ -42,13 +42,13 @@ public InspectionToolState createStateProvider() {
     @RequiredReadAction
     @Override
     public String buildErrorString(Object state, Object... args) {
-        final JSFunction function = (JSFunction)((PsiElement)args[0]).getParent();
+        JSFunction function = (JSFunction)((PsiElement)args[0]).getParent();
         assert function != null;
-        final PsiElement lastChild = function.getLastChild();
-        final StatementCountVisitor visitor = new StatementCountVisitor();
+        PsiElement lastChild = function.getLastChild();
+        StatementCountVisitor visitor = new StatementCountVisitor();
         assert lastChild != null;
         lastChild.accept(visitor);
-        final int coupling = visitor.getStatementCount();
+        int coupling = visitor.getStatementCount();
         return functionHasIdentifier(function)
             ? InspectionJSLocalize.functionIsOverlyLongStatementErrorString(coupling).get()
             : InspectionJSLocalize.anonymousFunctionIsOverlyLongStatementErrorString(coupling).get();
@@ -63,13 +63,13 @@ private class Visitor extends BaseInspectionVisitor {
         public void visitJSFunctionDeclaration(JSFunction function) {
             super.visitJSFunctionDeclaration(function);
 
-            final String name = function.getName();
+            String name = function.getName();
             if (name == null) {
                 return;
             }
             if (isValid(name, myState)) {
                 return;
             }
-            final PsiElement identifier = function.getNameIdentifier();
+            PsiElement identifier = function.getNameIdentifier();
             if (identifier == null || !PsiTreeUtil.isAncestor(function, identifier, true)) {
                 return;
             }
diff --git a/inspections/src/main/java/com/sixrr/inspectjs/naming/LocalVariableNamingConventionJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/naming/LocalVariableNamingConventionJSInspection.java
index 0f9a3971..b42ecffa 100644
--- a/inspections/src/main/java/com/sixrr/inspectjs/naming/LocalVariableNamingConventionJSInspection.java
+++ b/inspections/src/main/java/com/sixrr/inspectjs/naming/LocalVariableNamingConventionJSInspection.java
@@ -50,9 +50,9 @@ protected boolean buildQuickFixesOnlyForOnTheFlyErrors() {
     public String buildErrorString(Object state, Object... args) {
         LocalVariableNamingConventionJSInspectionState inspectionState = (LocalVariableNamingConventionJSInspectionState) state;
 
-        final JSVariable variable = (JSVariable) ((PsiElement) args[0]).getParent();
+        JSVariable variable = (JSVariable) ((PsiElement) args[0]).getParent();
         assert variable != null;
-        final String variableName = variable.getName();
+        String variableName = variable.getName();
         if (variableName.length() < inspectionState.m_minLength) {
             return InspectionJSLocalize.variableNameIsTooShortErrorString().get();
         }
@@ -77,9 +77,9 @@ private class Visitor extends BaseInspectionVisitor Messages.showErrorDialog(e.getMessage(), InspectionJSLocalize.malformedNamingPatternAlert().get())
                     );
diff --git a/inspections/src/main/java/com/sixrr/inspectjs/ui/SingleCheckboxOptionsPanel.java b/inspections/src/main/java/com/sixrr/inspectjs/ui/SingleCheckboxOptionsPanel.java
index b8ceb269..a8b30e2f 100644
--- a/inspections/src/main/java/com/sixrr/inspectjs/ui/SingleCheckboxOptionsPanel.java
+++ b/inspections/src/main/java/com/sixrr/inspectjs/ui/SingleCheckboxOptionsPanel.java
@@ -10,14 +10,14 @@
 import org.jetbrains.annotations.NonNls;
 
 public class SingleCheckboxOptionsPanel extends JPanel {
-    public SingleCheckboxOptionsPanel(String label, final BaseInspection owner, @NonNls final String property) {
+    public SingleCheckboxOptionsPanel(String label, BaseInspection owner, @NonNls String property) {
         super(new GridBagLayout());
-        final boolean selected = getPropertyValue(owner, property);
-        final JCheckBox checkBox = new JCheckBox(label, selected);
-        final ButtonModel model = checkBox.getModel();
+        boolean selected = getPropertyValue(owner, property);
+        JCheckBox checkBox = new JCheckBox(label, selected);
+        ButtonModel model = checkBox.getModel();
         model.addChangeListener(e -> setPropertyValue(owner, property, model.isSelected()));
 
-        final GridBagConstraints constraints = new GridBagConstraints();
+        GridBagConstraints constraints = new GridBagConstraints();
         constraints.gridx = 0;
         constraints.gridy = 0;
         constraints.weightx = 1.0;
diff --git a/inspections/src/main/java/com/sixrr/inspectjs/ui/SingleIntegerFieldOptionsPanel.java b/inspections/src/main/java/com/sixrr/inspectjs/ui/SingleIntegerFieldOptionsPanel.java
index ae072da2..9693f3e5 100644
--- a/inspections/src/main/java/com/sixrr/inspectjs/ui/SingleIntegerFieldOptionsPanel.java
+++ b/inspections/src/main/java/com/sixrr/inspectjs/ui/SingleIntegerFieldOptionsPanel.java
@@ -14,13 +14,13 @@
 public class SingleIntegerFieldOptionsPanel extends JPanel {
     public SingleIntegerFieldOptionsPanel(String labelString, final BaseInspection owner, @NonNls final String property) {
         super(new GridBagLayout());
-        final JLabel label = new JLabel(labelString);
-        final NumberFormat formatter = NumberFormat.getIntegerInstance();
+        JLabel label = new JLabel(labelString);
+        NumberFormat formatter = NumberFormat.getIntegerInstance();
         formatter.setParseIntegerOnly(true);
         final JFormattedTextField valueField = new JFormattedTextField(formatter);
         valueField.setValue(getPropertyValue(owner, property));
         valueField.setColumns(2);
-        final Document document = valueField.getDocument();
+        Document document = valueField.getDocument();
         document.addDocumentListener(new DocumentListener() {
             @Override
             public void changedUpdate(DocumentEvent e) {
@@ -41,7 +41,7 @@ private void textChanged() {
                 setPropertyValue(owner, property, ((Number)valueField.getValue()).intValue());
             }
         });
-        final GridBagConstraints constraints = new GridBagConstraints();
+        GridBagConstraints constraints = new GridBagConstraints();
         constraints.gridx = 0;
         constraints.gridy = 0;
         constraints.weightx = 1.0;
diff --git a/inspections/src/main/java/com/sixrr/inspectjs/utils/BoolUtils.java b/inspections/src/main/java/com/sixrr/inspectjs/utils/BoolUtils.java
index 2307b8d0..d138448b 100644
--- a/inspections/src/main/java/com/sixrr/inspectjs/utils/BoolUtils.java
+++ b/inspections/src/main/java/com/sixrr/inspectjs/utils/BoolUtils.java
@@ -21,8 +21,8 @@ public static boolean isNegation(@Nonnull JSExpression exp) {
         if (!(exp instanceof JSPrefixExpression)) {
             return false;
         }
-        final JSPrefixExpression prefixExp = (JSPrefixExpression)exp;
-        final IElementType sign = prefixExp.getOperationSign();
+        JSPrefixExpression prefixExp = (JSPrefixExpression)exp;
+        IElementType sign = prefixExp.getOperationSign();
         return JSTokenTypes.EXCL.equals(sign);
     }
 
@@ -31,7 +31,7 @@ public static boolean isTrue(@Nullable JSExpression test) {
         if (test == null) {
             return false;
         }
-        @NonNls final String text = test.getText();
+        @NonNls String text = test.getText();
         return "true".equals(text);
     }
 
@@ -39,25 +39,25 @@ public static boolean isFalse(@Nullable JSExpression test) {
         if (test == null) {
             return false;
         }
-        @NonNls final String text = test.getText();
+        @NonNls String text = test.getText();
         return "false".equals(text);
     }
 
     public static String getNegatedExpressionText(@Nonnull JSExpression condition) {
         if (condition instanceof JSParenthesizedExpression) {
-            final JSExpression contentExpression = ((JSParenthesizedExpression)condition).getInnerExpression();
+            JSExpression contentExpression = ((JSParenthesizedExpression)condition).getInnerExpression();
             return '(' + getNegatedExpressionText(contentExpression) + ')';
         }
         else if (BoolUtils.isNegation(condition)) {
-            final JSExpression negated = getNegated(condition);
+            JSExpression negated = getNegated(condition);
             return negated.getText();
         }
         else if (ComparisonUtils.isComparison(condition)) {
-            final JSBinaryExpression binaryExpression = (JSBinaryExpression)condition;
-            final IElementType sign = binaryExpression.getOperationSign();
-            final String negatedComparison = ComparisonUtils.getNegatedComparison(sign);
-            final JSExpression lhs = binaryExpression.getLOperand();
-            final JSExpression rhs = binaryExpression.getROperand();
+            JSBinaryExpression binaryExpression = (JSBinaryExpression)condition;
+            IElementType sign = binaryExpression.getOperationSign();
+            String negatedComparison = ComparisonUtils.getNegatedComparison(sign);
+            JSExpression lhs = binaryExpression.getLOperand();
+            JSExpression rhs = binaryExpression.getROperand();
             assert rhs != null;
             return lhs.getText() + negatedComparison + rhs.getText();
         }
@@ -71,8 +71,8 @@ else if (ParenthesesUtils.getPrecendence(condition) >
     }
 
     private static JSExpression getNegated(@Nonnull JSExpression exp) {
-        final JSPrefixExpression prefixExp = (JSPrefixExpression)exp;
-        final JSExpression operand = prefixExp.getExpression();
+        JSPrefixExpression prefixExp = (JSPrefixExpression)exp;
+        JSExpression operand = prefixExp.getExpression();
         return ParenthesesUtils.stripParentheses(operand);
     }
 }
diff --git a/inspections/src/main/java/com/sixrr/inspectjs/utils/ComparisonUtils.java b/inspections/src/main/java/com/sixrr/inspectjs/utils/ComparisonUtils.java
index 9e48d508..8a36203d 100644
--- a/inspections/src/main/java/com/sixrr/inspectjs/utils/ComparisonUtils.java
+++ b/inspections/src/main/java/com/sixrr/inspectjs/utils/ComparisonUtils.java
@@ -54,8 +54,8 @@ public static boolean isComparison(@Nullable JSExpression exp) {
         if (!(exp instanceof JSBinaryExpression)) {
             return false;
         }
-        final JSBinaryExpression binaryExpression = (JSBinaryExpression)exp;
-        final IElementType sign = binaryExpression.getOperationSign();
+        JSBinaryExpression binaryExpression = (JSBinaryExpression)exp;
+        IElementType sign = binaryExpression.getOperationSign();
         return s_comparisonStrings.contains(sign);
     }
 
@@ -64,7 +64,7 @@ public static String getFlippedComparison(@Nonnull IElementType str) {
     }
 
     public static boolean isEqualityComparison(@Nonnull JSBinaryExpression operator) {
-        final IElementType sign = operator.getOperationSign();
+        IElementType sign = operator.getOperationSign();
         return JSTokenTypes.EQEQ.equals(sign) || JSTokenTypes.NE.equals(sign);
     }
 
diff --git a/inspections/src/main/java/com/sixrr/inspectjs/utils/ConditionalUtils.java b/inspections/src/main/java/com/sixrr/inspectjs/utils/ConditionalUtils.java
index 205e2a66..6baac9e3 100644
--- a/inspections/src/main/java/com/sixrr/inspectjs/utils/ConditionalUtils.java
+++ b/inspections/src/main/java/com/sixrr/inspectjs/utils/ConditionalUtils.java
@@ -11,7 +11,7 @@ private ConditionalUtils() {
 
     public static JSStatement stripBraces(JSStatement branch) {
         if (branch instanceof JSBlockStatement block) {
-            final JSStatement[] statements = block.getStatements();
+            JSStatement[] statements = block.getStatements();
             return statements.length == 1 ? statements[0] : block;
         }
         else {
@@ -26,12 +26,12 @@ public static boolean isReturn(JSStatement statement, String value) {
         if (!(statement instanceof JSReturnStatement)) {
             return false;
         }
-        final JSReturnStatement returnStatement = (JSReturnStatement)statement;
+        JSReturnStatement returnStatement = (JSReturnStatement)statement;
         if (returnStatement.getExpression() == null) {
             return false;
         }
-        final JSExpression returnValue = returnStatement.getExpression();
-        final String returnValueText = returnValue.getText();
+        JSExpression returnValue = returnStatement.getExpression();
+        String returnValueText = returnValue.getText();
         return value.equals(returnValueText);
     }
 
@@ -42,17 +42,17 @@ public static boolean isAssignment(JSStatement statement, String value) {
         if (!(statement instanceof JSExpressionStatement)) {
             return false;
         }
-        final JSExpressionStatement expressionStatement = (JSExpressionStatement)statement;
-        final JSExpression expression = expressionStatement.getExpression();
+        JSExpressionStatement expressionStatement = (JSExpressionStatement)statement;
+        JSExpression expression = expressionStatement.getExpression();
         if (!(expression instanceof JSAssignmentExpression)) {
             return false;
         }
-        final JSAssignmentExpression assignment = (JSAssignmentExpression)expression;
-        final JSExpression rhs = assignment.getROperand();
+        JSAssignmentExpression assignment = (JSAssignmentExpression)expression;
+        JSExpression rhs = assignment.getROperand();
         if (rhs == null) {
             return false;
         }
-        final String rhsText = rhs.getText();
+        String rhsText = rhs.getText();
         return value.equals(rhsText);
     }
 }
diff --git a/inspections/src/main/java/com/sixrr/inspectjs/utils/ControlFlowUtils.java b/inspections/src/main/java/com/sixrr/inspectjs/utils/ControlFlowUtils.java
index 27e917a3..c53eec6e 100644
--- a/inspections/src/main/java/com/sixrr/inspectjs/utils/ControlFlowUtils.java
+++ b/inspections/src/main/java/com/sixrr/inspectjs/utils/ControlFlowUtils.java
@@ -64,23 +64,23 @@ else if (statement instanceof JSWithStatement withStatement) {
     }
 
     private static boolean withStatementMayReturnNormally(JSWithStatement jsWithStatement) {
-        final JSStatement body = jsWithStatement.getStatement();
+        JSStatement body = jsWithStatement.getStatement();
         return statementMayCompleteNormally(body);
     }
 
     private static boolean doWhileStatementMayReturnNormally(@Nonnull JSDoWhileStatement loopStatement) {
-        final JSExpression test = loopStatement.getCondition();
-        final JSStatement body = loopStatement.getBody();
+        JSExpression test = loopStatement.getCondition();
+        JSStatement body = loopStatement.getBody();
         return statementMayCompleteNormally(body) && !BoolUtils.isTrue(test) || statementIsBreakTarget(loopStatement);
     }
 
     private static boolean whileStatementMayReturnNormally(@Nonnull JSWhileStatement loopStatement) {
-        final JSExpression test = loopStatement.getCondition();
+        JSExpression test = loopStatement.getCondition();
         return !BoolUtils.isTrue(test) || statementIsBreakTarget(loopStatement);
     }
 
     private static boolean forStatementMayReturnNormally(@Nonnull JSForStatement loopStatement) {
-        final JSExpression test = loopStatement.getCondition();
+        JSExpression test = loopStatement.getCondition();
         if (statementIsBreakTarget(loopStatement)) {
             return true;
         }
@@ -98,7 +98,7 @@ private static boolean switchStatementMayReturnNormally(@Nonnull JSSwitchStateme
         if (statementIsBreakTarget(switchStatement)) {
             return true;
         }
-        final JSCaseClause[] caseClauses = switchStatement.getCaseClauses();
+        JSCaseClause[] caseClauses = switchStatement.getCaseClauses();
 
         if (caseClauses.length == 0) {
             return true;
@@ -113,8 +113,8 @@ private static boolean switchStatementMayReturnNormally(@Nonnull JSSwitchStateme
         if (!hasDefaultCase) {
             return true;
         }
-        final JSCaseClause lastClause = caseClauses[caseClauses.length - 1];
-        final JSStatement[] statements = lastClause.getStatements();
+        JSCaseClause lastClause = caseClauses[caseClauses.length - 1];
+        JSStatement[] statements = lastClause.getStatements();
         if (statements.length == 0) {
             return true;
         }
@@ -122,33 +122,33 @@ private static boolean switchStatementMayReturnNormally(@Nonnull JSSwitchStateme
     }
 
     private static boolean tryStatementMayReturnNormally(@Nonnull JSTryStatement tryStatement) {
-        final JSStatement finallyBlock = tryStatement.getFinallyStatement();
+        JSStatement finallyBlock = tryStatement.getFinallyStatement();
         if (finallyBlock != null && !statementMayCompleteNormally(finallyBlock)) {
             return false;
         }
-        final JSStatement tryBlock = tryStatement.getStatement();
+        JSStatement tryBlock = tryStatement.getStatement();
         if (statementMayCompleteNormally(tryBlock)) {
             return true;
         }
-        final JSCatchBlock catchBlock = tryStatement.getCatchBlock();
+        JSCatchBlock catchBlock = tryStatement.getCatchBlock();
         if (catchBlock == null) {
             return false;
         }
-        final JSStatement catchStatement = catchBlock.getStatement();
+        JSStatement catchStatement = catchBlock.getStatement();
         return statementMayCompleteNormally(catchStatement);
     }
 
     private static boolean ifStatementMayReturnNormally(@Nonnull JSIfStatement ifStatement) {
-        final JSStatement thenBranch = ifStatement.getThen();
+        JSStatement thenBranch = ifStatement.getThen();
         if (statementMayCompleteNormally(thenBranch)) {
             return true;
         }
-        final JSStatement elseBranch = ifStatement.getElse();
+        JSStatement elseBranch = ifStatement.getElse();
         return elseBranch == null || statementMayCompleteNormally(elseBranch);
     }
 
     private static boolean labeledStatementMayCompleteNormally(@Nonnull JSLabeledStatement labeledStatement) {
-        final JSStatement statement = labeledStatement.getStatement();
+        JSStatement statement = labeledStatement.getStatement();
         return statementMayCompleteNormally(statement) || statementIsBreakTarget(statement);
     }
 
@@ -156,8 +156,8 @@ public static boolean blockMayCompleteNormally(@Nullable JSBlockStatement block)
         if (block == null) {
             return true;
         }
-        final JSStatement[] statements = block.getStatements();
-        for (final JSStatement statement : statements) {
+        JSStatement[] statements = block.getStatements();
+        for (JSStatement statement : statements) {
             if (!statementMayCompleteNormally(statement)) {
                 return false;
             }
@@ -166,19 +166,19 @@ public static boolean blockMayCompleteNormally(@Nullable JSBlockStatement block)
     }
 
     private static boolean statementIsBreakTarget(@Nonnull JSStatement statement) {
-        final BreakFinder breakFinder = new BreakFinder(statement);
+        BreakFinder breakFinder = new BreakFinder(statement);
         statement.accept(breakFinder);
         return breakFinder.breakFound();
     }
 
     public static boolean statementContainsReturn(@Nonnull JSStatement statement) {
-        final ReturnFinder returnFinder = new ReturnFinder();
+        ReturnFinder returnFinder = new ReturnFinder();
         statement.accept(returnFinder);
         return returnFinder.returnFound();
     }
 
     public static boolean statementIsContinueTarget(@Nonnull JSStatement statement) {
-        final ContinueFinder continueFinder = new ContinueFinder(statement);
+        ContinueFinder continueFinder = new ContinueFinder(statement);
         statement.accept(continueFinder);
         return continueFinder.continueFound();
     }
@@ -193,11 +193,11 @@ public static boolean isInLoop(@Nonnull JSElement element) {
     public static boolean isInFinallyBlock(@Nonnull JSElement element) {
         JSElement currentElement = element;
         while (true) {
-            final JSTryStatement tryStatement = PsiTreeUtil.getParentOfType(currentElement, JSTryStatement.class);
+            JSTryStatement tryStatement = PsiTreeUtil.getParentOfType(currentElement, JSTryStatement.class);
             if (tryStatement == null) {
                 return false;
             }
-            final JSStatement finallyBlock = tryStatement.getFinallyStatement();
+            JSStatement finallyBlock = tryStatement.getFinallyStatement();
             if (finallyBlock != null) {
                 if (PsiTreeUtil.isAncestor(finallyBlock, currentElement, true)) {
                     return true;
@@ -210,13 +210,13 @@ public static boolean isInFinallyBlock(@Nonnull JSElement element) {
     public static boolean isInCatchBlock(@Nonnull JSElement element) {
         JSElement currentElement = element;
         while (true) {
-            final JSTryStatement tryStatement = PsiTreeUtil.getParentOfType(currentElement, JSTryStatement.class);
+            JSTryStatement tryStatement = PsiTreeUtil.getParentOfType(currentElement, JSTryStatement.class);
             if (tryStatement == null) {
                 return false;
             }
-            final JSCatchBlock catchBlock = tryStatement.getCatchBlock();
+            JSCatchBlock catchBlock = tryStatement.getCatchBlock();
             if (catchBlock != null) {
-                final JSStatement catchStatement = catchBlock.getStatement();
+                JSStatement catchStatement = catchBlock.getStatement();
                 if (PsiTreeUtil.isAncestor(catchStatement, currentElement, true)) {
                     return true;
                 }
@@ -226,44 +226,44 @@ public static boolean isInCatchBlock(@Nonnull JSElement element) {
     }
 
     private static boolean isInWhileStatementBody(@Nonnull JSElement element) {
-        final JSWhileStatement whileStatement = PsiTreeUtil.getParentOfType(element, JSWhileStatement.class);
+        JSWhileStatement whileStatement = PsiTreeUtil.getParentOfType(element, JSWhileStatement.class);
         if (whileStatement == null) {
             return false;
         }
-        final JSStatement body = whileStatement.getBody();
+        JSStatement body = whileStatement.getBody();
         return PsiTreeUtil.isAncestor(body, element, true);
     }
 
     private static boolean isInDoWhileStatementBody(@Nonnull JSElement element) {
-        final JSDoWhileStatement doWhileStatement = PsiTreeUtil.getParentOfType(element, JSDoWhileStatement.class);
+        JSDoWhileStatement doWhileStatement = PsiTreeUtil.getParentOfType(element, JSDoWhileStatement.class);
         if (doWhileStatement == null) {
             return false;
         }
-        final JSStatement body = doWhileStatement.getBody();
+        JSStatement body = doWhileStatement.getBody();
         return PsiTreeUtil.isAncestor(body, element, true);
     }
 
     private static boolean isInForStatementBody(@Nonnull JSElement element) {
-        final JSForStatement forStatement = PsiTreeUtil.getParentOfType(element, JSForStatement.class);
+        JSForStatement forStatement = PsiTreeUtil.getParentOfType(element, JSForStatement.class);
         if (forStatement == null) {
             return false;
         }
-        final JSStatement body = forStatement.getBody();
+        JSStatement body = forStatement.getBody();
         return PsiTreeUtil.isAncestor(body, element, true);
     }
 
     private static boolean isInForeachStatementBody(@Nonnull JSElement element) {
-        final JSForInStatement foreachStatement = PsiTreeUtil.getParentOfType(element, JSForInStatement.class);
+        JSForInStatement foreachStatement = PsiTreeUtil.getParentOfType(element, JSForInStatement.class);
         if (foreachStatement == null) {
             return false;
         }
-        final JSStatement body = foreachStatement.getBody();
+        JSStatement body = foreachStatement.getBody();
         return PsiTreeUtil.isAncestor(body, element, true);
     }
 
     public static JSStatement stripBraces(@Nonnull JSStatement branch) {
         if (branch instanceof JSBlockStatement block) {
-            final JSStatement[] statements = block.getStatements();
+            JSStatement[] statements = block.getStatements();
             return statements.length == 1 ? statements[0] : block;
         }
         else {
@@ -277,7 +277,7 @@ public static boolean statementCompletesWithStatement(@Nonnull JSStatement conta
             if (statementToCheck.equals(containingStatement)) {
                 return true;
             }
-            final JSElement container = getContainingStatement(statementToCheck);
+            JSElement container = getContainingStatement(statementToCheck);
             if (container == null) {
                 return false;
             }
@@ -298,7 +298,7 @@ public static boolean blockCompletesWithStatement(@Nonnull JSBlockStatement body
             if (statementToCheck == null) {
                 return false;
             }
-            final JSElement container = getContainingStatement(statementToCheck);
+            JSElement container = getContainingStatement(statementToCheck);
             if (container == null) {
                 return false;
             }
@@ -330,9 +330,9 @@ private static JSElement getContainingStatement(@Nonnull JSElement statement) {
     }
 
     private static boolean statementIsLastInBlock(@Nonnull JSBlockStatement block, @Nonnull JSStatement statement) {
-        final JSStatement[] statements = block.getStatements();
+        JSStatement[] statements = block.getStatements();
         for (int i = statements.length - 1; i >= 0; i--) {
-            final JSStatement childStatement = statements[i];
+            JSStatement childStatement = statements[i];
             if (statement.equals(childStatement)) {
                 return true;
             }
@@ -379,7 +379,7 @@ public void visitJSBreakStatement(@Nonnull JSBreakStatement breakStatement) {
                 return;
             }
             super.visitJSBreakStatement(breakStatement);
-            final JSStatement exitedStatement = breakStatement.getStatementToBreak();
+            JSStatement exitedStatement = breakStatement.getStatementToBreak();
             if (exitedStatement == null) {
                 return;
             }
@@ -408,7 +408,7 @@ public void visitJSContinueStatement(@Nonnull JSContinueStatement continueStatem
                 return;
             }
             super.visitJSContinueStatement(continueStatement);
-            final JSStatement exitedStatement = continueStatement.getStatementToContinue();
+            JSStatement exitedStatement = continueStatement.getStatementToContinue();
             if (exitedStatement == null) {
                 return;
             }
@@ -423,12 +423,12 @@ public static boolean isInExitStatement(@Nonnull JSExpression expression) {
     }
 
     private static boolean isInReturnStatementArgument(@Nonnull JSExpression expression) {
-        final JSReturnStatement returnStatement = PsiTreeUtil.getParentOfType(expression, JSReturnStatement.class);
+        JSReturnStatement returnStatement = PsiTreeUtil.getParentOfType(expression, JSReturnStatement.class);
         return returnStatement != null;
     }
 
     private static boolean isInThrowStatementArgument(@Nonnull JSExpression expression) {
-        final JSThrowStatement throwStatement = PsiTreeUtil.getParentOfType(expression, JSThrowStatement.class);
+        JSThrowStatement throwStatement = PsiTreeUtil.getParentOfType(expression, JSThrowStatement.class);
         return throwStatement != null;
     }
 }
diff --git a/inspections/src/main/java/com/sixrr/inspectjs/utils/EquivalenceChecker.java b/inspections/src/main/java/com/sixrr/inspectjs/utils/EquivalenceChecker.java
index 68371cab..cd888afe 100644
--- a/inspections/src/main/java/com/sixrr/inspectjs/utils/EquivalenceChecker.java
+++ b/inspections/src/main/java/com/sixrr/inspectjs/utils/EquivalenceChecker.java
@@ -63,8 +63,8 @@ public static boolean statementsAreEquivalent(@Nullable JSStatement exp1, @Nulla
         if (exp1 == null || exp2 == null) {
             return false;
         }
-        final int type1 = getStatementType(exp1);
-        final int type2 = getStatementType(exp2);
+        int type1 = getStatementType(exp1);
+        int type2 = getStatementType(exp2);
         if (type1 != type2) {
             return false;
         }
@@ -91,19 +91,19 @@ public static boolean statementsAreEquivalent(@Nullable JSStatement exp1, @Nulla
     }
 
     private static boolean withStatementsAreEquivalent(JSWithStatement statement1, JSWithStatement statement2) {
-        final JSExpression expression1 = statement1.getExpression();
-        final JSExpression expression2 = statement2.getExpression();
+        JSExpression expression1 = statement1.getExpression();
+        JSExpression expression2 = statement2.getExpression();
         if (!expressionsAreEquivalent(expression1, expression2)) {
             return false;
         }
-        final JSStatement body1 = statement1.getStatement();
-        final JSStatement body2 = statement2.getStatement();
+        JSStatement body1 = statement1.getStatement();
+        JSStatement body2 = statement2.getStatement();
         return statementsAreEquivalent(body1, body2);
     }
 
     private static boolean varStatementsAreEquivalent(@Nonnull JSVarStatement statement1, @Nonnull JSVarStatement statement2) {
-        final JSVariable[] variables1 = statement1.getVariables();
-        final JSVariable[] variables2 = statement2.getVariables();
+        JSVariable[] variables1 = statement1.getVariables();
+        JSVariable[] variables2 = statement2.getVariables();
         if (variables1.length != variables2.length) {
             return false;
         }
@@ -116,18 +116,18 @@ private static boolean varStatementsAreEquivalent(@Nonnull JSVarStatement statem
     }
 
     private static boolean variablesAreEquivalent(@Nonnull JSVariable var1, @Nonnull JSVariable var2) {
-        final JSExpression initializer1 = var1.getInitializer();
-        final JSExpression initializer2 = var2.getInitializer();
+        JSExpression initializer1 = var1.getInitializer();
+        JSExpression initializer2 = var2.getInitializer();
         if (!expressionsAreEquivalent(initializer1, initializer2)) {
             return false;
         }
-        final JavaScriptType type1 = var1.getType();
-        final JavaScriptType type2 = var2.getType();
+        JavaScriptType type1 = var1.getType();
+        JavaScriptType type2 = var2.getType();
         if (!typesAreEquivalent(type1, type2)) {
             return false;
         }
-        final String name1 = var1.getName();
-        final String name2 = var2.getName();
+        String name1 = var1.getName();
+        String name2 = var2.getName();
         if (name1 == null) {
             return name2 == null;
         }
@@ -135,42 +135,42 @@ private static boolean variablesAreEquivalent(@Nonnull JSVariable var1, @Nonnull
     }
 
     private static boolean tryStatementsAreEquivalent(@Nonnull JSTryStatement statement1, @Nonnull JSTryStatement statement2) {
-        final JSStatement tryBlock1 = statement1.getStatement();
-        final JSStatement tryBlock2 = statement2.getStatement();
+        JSStatement tryBlock1 = statement1.getStatement();
+        JSStatement tryBlock2 = statement2.getStatement();
         if (!statementsAreEquivalent(tryBlock1, tryBlock2)) {
             return false;
         }
-        final JSStatement finallyBlock1 = statement1.getFinallyStatement();
-        final JSStatement finallyBlock2 = statement2.getFinallyStatement();
+        JSStatement finallyBlock1 = statement1.getFinallyStatement();
+        JSStatement finallyBlock2 = statement2.getFinallyStatement();
         if (!statementsAreEquivalent(finallyBlock1, finallyBlock2)) {
             return false;
         }
-        final JSCatchBlock catchBlock1 = statement1.getCatchBlock();
-        final JSCatchBlock catchBlock2 = statement2.getCatchBlock();
+        JSCatchBlock catchBlock1 = statement1.getCatchBlock();
+        JSCatchBlock catchBlock2 = statement2.getCatchBlock();
         if (catchBlock1 == null) {
             return catchBlock2 == null;
         }
         if (catchBlock2 == null) {
             return false;
         }
-        final JSParameter parameter1 = catchBlock1.getParameter();
-        final JSParameter parameter2 = catchBlock2.getParameter();
+        JSParameter parameter1 = catchBlock1.getParameter();
+        JSParameter parameter2 = catchBlock2.getParameter();
         if (!parametersAreEquivalent(parameter1, parameter2)) {
             return false;
         }
-        final JSStatement catchStatement1 = catchBlock1.getStatement();
-        final JSStatement catchStatement2 = catchBlock2.getStatement();
+        JSStatement catchStatement1 = catchBlock1.getStatement();
+        JSStatement catchStatement2 = catchBlock2.getStatement();
         return statementsAreEquivalent(catchStatement1, catchStatement2);
     }
 
     private static boolean parametersAreEquivalent(@Nonnull JSParameter parameter1, @Nonnull JSParameter parameter2) {
-        final JavaScriptType type1 = parameter1.getType();
-        final JavaScriptType type2 = parameter2.getType();
+        JavaScriptType type1 = parameter1.getType();
+        JavaScriptType type2 = parameter2.getType();
         if (!typesAreEquivalent(type1, type2)) {
             return false;
         }
-        final String name1 = parameter1.getName();
-        final String name2 = parameter2.getName();
+        String name1 = parameter1.getName();
+        String name2 = parameter2.getName();
         if (name1 == null) {
             return name2 == null;
         }
@@ -188,64 +188,64 @@ private static boolean typesAreEquivalent(@Nullable JavaScriptType type1, @Nulla
     }
 
     private static boolean whileStatementsAreEquivalent(@Nonnull JSWhileStatement statement1, @Nonnull JSWhileStatement statement2) {
-        final JSExpression condition1 = statement1.getCondition();
-        final JSExpression condition2 = statement2.getCondition();
-        final JSStatement body1 = statement1.getBody();
-        final JSStatement body2 = statement2.getBody();
+        JSExpression condition1 = statement1.getCondition();
+        JSExpression condition2 = statement2.getCondition();
+        JSStatement body1 = statement1.getBody();
+        JSStatement body2 = statement2.getBody();
         return expressionsAreEquivalent(condition1, condition2) && statementsAreEquivalent(body1, body2);
     }
 
     private static boolean forStatementsAreEquivalent(@Nonnull JSForStatement statement1, @Nonnull JSForStatement statement2) {
-        final JSExpression condition1 = statement1.getCondition();
-        final JSExpression condition2 = statement2.getCondition();
+        JSExpression condition1 = statement1.getCondition();
+        JSExpression condition2 = statement2.getCondition();
         if (!expressionsAreEquivalent(condition1, condition2)) {
             return false;
         }
-        final JSExpression initialization1 = statement1.getInitialization();
-        final JSExpression initialization2 = statement2.getInitialization();
+        JSExpression initialization1 = statement1.getInitialization();
+        JSExpression initialization2 = statement2.getInitialization();
         if (!expressionsAreEquivalent(initialization1, initialization2)) {
             return false;
         }
-        final JSExpression update1 = statement1.getUpdate();
-        final JSExpression update2 = statement2.getUpdate();
+        JSExpression update1 = statement1.getUpdate();
+        JSExpression update2 = statement2.getUpdate();
         if (!expressionsAreEquivalent(update1, update2)) {
             return false;
         }
-        final JSStatement body1 = statement1.getBody();
-        final JSStatement body2 = statement2.getBody();
+        JSStatement body1 = statement1.getBody();
+        JSStatement body2 = statement2.getBody();
         return statementsAreEquivalent(body1, body2);
     }
 
     private static boolean forInStatementsAreEquivalent(@Nonnull JSForInStatement statement1, @Nonnull JSForInStatement statement2) {
-        final JSExpression value1 = statement1.getCollectionExpression();
-        final JSExpression value2 = statement2.getCollectionExpression();
+        JSExpression value1 = statement1.getCollectionExpression();
+        JSExpression value2 = statement2.getCollectionExpression();
         if (!expressionsAreEquivalent(value1, value2)) {
             return false;
         }
-        final JSVarStatement parameter1 = statement1.getDeclarationStatement();
-        final JSVarStatement parameter2 = statement1.getDeclarationStatement();
+        JSVarStatement parameter1 = statement1.getDeclarationStatement();
+        JSVarStatement parameter2 = statement1.getDeclarationStatement();
         if (statementsAreEquivalent(parameter1, parameter2)) {
             return false;
         }
-        final JSStatement body1 = statement1.getBody();
-        final JSStatement body2 = statement2.getBody();
+        JSStatement body1 = statement1.getBody();
+        JSStatement body2 = statement2.getBody();
         return statementsAreEquivalent(body1, body2);
     }
 
     private static boolean switchStatementsAreEquivalent(@Nonnull JSSwitchStatement statement1, @Nonnull JSSwitchStatement statement2) {
-        final JSExpression switchExpression1 = statement1.getSwitchExpression();
-        final JSExpression swithcExpression2 = statement2.getSwitchExpression();
+        JSExpression switchExpression1 = statement1.getSwitchExpression();
+        JSExpression swithcExpression2 = statement2.getSwitchExpression();
         if (!expressionsAreEquivalent(switchExpression1, swithcExpression2)) {
             return false;
         }
-        final JSCaseClause[] clauses1 = statement1.getCaseClauses();
-        final JSCaseClause[] clauses2 = statement2.getCaseClauses();
+        JSCaseClause[] clauses1 = statement1.getCaseClauses();
+        JSCaseClause[] clauses2 = statement2.getCaseClauses();
         if (clauses1.length != clauses2.length) {
             return false;
         }
         for (int i = 0; i < clauses1.length; i++) {
-            final JSCaseClause clause1 = clauses1[i];
-            final JSCaseClause clause2 = clauses2[i];
+            JSCaseClause clause1 = clauses1[i];
+            JSCaseClause clause2 = clauses2[i];
             if (!caseClausesAreEquivalent(clause1, clause2)) {
                 return false;
             }
@@ -257,13 +257,13 @@ private static boolean caseClausesAreEquivalent(JSCaseClause clause1, JSCaseClau
         if (clause1.isDefault() != clause2.isDefault()) {
             return false;
         }
-        final JSExpression exp1 = clause1.getCaseExpression();
-        final JSExpression exp2 = clause2.getCaseExpression();
+        JSExpression exp1 = clause1.getCaseExpression();
+        JSExpression exp2 = clause2.getCaseExpression();
         if (!expressionsAreEquivalent(exp1, exp2)) {
             return false;
         }
-        final JSStatement[] statements1 = clause1.getStatements();
-        final JSStatement[] statements2 = clause2.getStatements();
+        JSStatement[] statements1 = clause1.getStatements();
+        JSStatement[] statements2 = clause2.getStatements();
         if (statements1.length != statements2.length) {
             return false;
         }
@@ -276,16 +276,16 @@ private static boolean caseClausesAreEquivalent(JSCaseClause clause1, JSCaseClau
     }
 
     private static boolean doWhileStatementsAreEquivalent(@Nonnull JSDoWhileStatement statement1, @Nonnull JSDoWhileStatement statement2) {
-        final JSExpression condition1 = statement1.getCondition();
-        final JSExpression condition2 = statement2.getCondition();
-        final JSStatement body1 = statement1.getBody();
-        final JSStatement body2 = statement2.getBody();
+        JSExpression condition1 = statement1.getCondition();
+        JSExpression condition2 = statement2.getCondition();
+        JSStatement body1 = statement1.getBody();
+        JSStatement body2 = statement2.getBody();
         return expressionsAreEquivalent(condition1, condition2) && statementsAreEquivalent(body1, body2);
     }
 
     private static boolean blockStatementsAreEquivalent(@Nonnull JSBlockStatement statement1, @Nonnull JSBlockStatement statement2) {
-        final JSStatement[] statements1 = statement1.getStatements();
-        final JSStatement[] statements2 = statement2.getStatements();
+        JSStatement[] statements1 = statement1.getStatements();
+        JSStatement[] statements2 = statement2.getStatements();
         if (statements1.length != statements2.length) {
             return false;
         }
@@ -298,8 +298,8 @@ private static boolean blockStatementsAreEquivalent(@Nonnull JSBlockStatement st
     }
 
     private static boolean breakStatementsAreEquivalent(@Nonnull JSBreakStatement statement1, @Nonnull JSBreakStatement statement2) {
-        final String identifier1 = statement1.getLabel();
-        final String identifier2 = statement2.getLabel();
+        String identifier1 = statement1.getLabel();
+        String identifier2 = statement2.getLabel();
         if (identifier1 == null) {
             return identifier2 == null;
         }
@@ -313,8 +313,8 @@ private static boolean continueStatementsAreEquivalent(
         @Nonnull JSContinueStatement statement1,
         @Nonnull JSContinueStatement statement2
     ) {
-        final String identifier1 = statement1.getLabel();
-        final String identifier2 = statement2.getLabel();
+        String identifier1 = statement1.getLabel();
+        String identifier2 = statement2.getLabel();
         if (identifier1 == null) {
             return identifier2 == null;
         }
@@ -325,26 +325,26 @@ private static boolean continueStatementsAreEquivalent(
     }
 
     private static boolean labeledStatementsAreEquivalent(@Nonnull JSLabeledStatement statement1, @Nonnull JSLabeledStatement statement2) {
-        final PsiElement identifier1 = statement1.getLabelIdentifier();
-        final PsiElement identifier2 = statement2.getLabelIdentifier();
+        PsiElement identifier1 = statement1.getLabelIdentifier();
+        PsiElement identifier2 = statement2.getLabelIdentifier();
         if (identifier1 == null) {
             return identifier2 == null;
         }
         if (identifier2 == null) {
             return false;
         }
-        final String text1 = identifier1.getText();
-        final String text2 = identifier2.getText();
+        String text1 = identifier1.getText();
+        String text2 = identifier2.getText();
         return text1.equals(text2);
     }
 
     private static boolean ifStatementsAreEquivalent(@Nonnull JSIfStatement statement1, @Nonnull JSIfStatement statement2) {
-        final JSExpression condition1 = statement1.getCondition();
-        final JSExpression condition2 = statement2.getCondition();
-        final JSStatement thenBranch1 = statement1.getThen();
-        final JSStatement thenBranch2 = statement2.getThen();
-        final JSStatement elseBranch1 = statement1.getElse();
-        final JSStatement elseBranch2 = statement2.getElse();
+        JSExpression condition1 = statement1.getCondition();
+        JSExpression condition2 = statement2.getCondition();
+        JSStatement thenBranch1 = statement1.getThen();
+        JSStatement thenBranch2 = statement2.getThen();
+        JSStatement elseBranch1 = statement1.getElse();
+        JSStatement elseBranch2 = statement2.getElse();
         return expressionsAreEquivalent(condition1, condition2)
             && statementsAreEquivalent(thenBranch1, thenBranch2)
             && statementsAreEquivalent(elseBranch1, elseBranch2);
@@ -354,20 +354,20 @@ private static boolean expressionStatementsAreEquivalent(
         @Nonnull JSExpressionStatement statement1,
         @Nonnull JSExpressionStatement statement2
     ) {
-        final JSExpression expression1 = statement1.getExpression();
-        final JSExpression expression2 = statement2.getExpression();
+        JSExpression expression1 = statement1.getExpression();
+        JSExpression expression2 = statement2.getExpression();
         return expressionsAreEquivalent(expression1, expression2);
     }
 
     private static boolean returnStatementsAreEquivalent(@Nonnull JSReturnStatement statement1, @Nonnull JSReturnStatement statement2) {
-        final JSExpression returnValue1 = statement1.getExpression();
-        final JSExpression returnValue2 = statement2.getExpression();
+        JSExpression returnValue1 = statement1.getExpression();
+        JSExpression returnValue2 = statement2.getExpression();
         return expressionsAreEquivalent(returnValue1, returnValue2);
     }
 
     private static boolean throwStatementsAreEquivalent(@Nonnull JSThrowStatement statement1, @Nonnull JSThrowStatement statement2) {
-        final JSExpression exception1 = statement1.getExpression();
-        final JSExpression exception2 = statement2.getExpression();
+        JSExpression exception1 = statement1.getExpression();
+        JSExpression exception2 = statement2.getExpression();
         return expressionsAreEquivalent(exception1, exception2);
     }
 
@@ -386,8 +386,8 @@ public static boolean expressionsAreEquivalent(@Nullable JSExpression exp1, @Nul
         while (expToCompare2 instanceof JSParenthesizedExpression parenExp2) {
             expToCompare2 = parenExp2.getInnerExpression();
         }
-        final int type1 = getExpressionType(expToCompare1);
-        final int type2 = getExpressionType(expToCompare2);
+        int type1 = getExpressionType(expToCompare1);
+        int type2 = getExpressionType(expToCompare2);
         if (type1 != type2) {
             return false;
         }
@@ -439,19 +439,19 @@ private static boolean functionExpressionsAreEquivalent(JSFunctionExpression exp
     }
 
     private static boolean objectLiteralExpressionsAreEquivalent(JSObjectLiteralExpression exp1, JSObjectLiteralExpression exp2) {
-        final JSProperty[] properties1 = exp1.getProperties();
-        final JSProperty[] properties2 = exp2.getProperties();
+        JSProperty[] properties1 = exp1.getProperties();
+        JSProperty[] properties2 = exp2.getProperties();
         if (properties1.length != properties2.length) {
             return false;
         }
         for (int i = 0; i < properties2.length; i++) {
-            final JSProperty property1 = properties1[i];
-            final JSProperty property2 = properties2[i];
+            JSProperty property1 = properties1[i];
+            JSProperty property2 = properties2[i];
             if (!property2.getName().equals(property1.getName())) {
                 return false;
             }
-            final JSExpression value1 = property1.getValue();
-            final JSExpression value2 = property2.getValue();
+            JSExpression value1 = property1.getValue();
+            JSExpression value2 = property2.getValue();
             if (!expressionsAreEquivalent(value1, value2)) {
                 return false;
             }
@@ -463,13 +463,13 @@ private static boolean indexedAccessExpressionsAreEquivalent(
         JSIndexedPropertyAccessExpression exp1,
         JSIndexedPropertyAccessExpression exp2
     ) {
-        final JSExpression index1 = exp1.getIndexExpression();
-        final JSExpression index2 = exp2.getIndexExpression();
+        JSExpression index1 = exp1.getIndexExpression();
+        JSExpression index2 = exp2.getIndexExpression();
         if (!expressionsAreEquivalent(index1, index2)) {
             return false;
         }
-        final JSExpression qualifier1 = exp1.getQualifier();
-        final JSExpression qualifier2 = exp2.getQualifier();
+        JSExpression qualifier1 = exp1.getQualifier();
+        JSExpression qualifier2 = exp2.getQualifier();
         return expressionsAreEquivalent(qualifier1, qualifier2);
     }
 
@@ -477,8 +477,8 @@ private static boolean methodCallExpressionsAreEquivalent(
         @Nonnull JSCallExpression methodExp1,
         @Nonnull JSCallExpression methodExp2
     ) {
-        final JSExpression methodExpression1;
-        final JSExpression methodExpression2;
+        JSExpression methodExpression1;
+        JSExpression methodExpression2;
         try {
             methodExpression1 = methodExp1.getMethodExpression();
             methodExpression2 = methodExp2.getMethodExpression();
@@ -489,35 +489,35 @@ private static boolean methodCallExpressionsAreEquivalent(
         if (!expressionsAreEquivalent(methodExpression1, methodExpression2)) {
             return false;
         }
-        final JSArgumentList argumentList1 = methodExp1.getArgumentList();
+        JSArgumentList argumentList1 = methodExp1.getArgumentList();
         if (argumentList1 == null) {
             return false;
         }
-        final JSExpression[] args1 = argumentList1.getArguments();
-        final JSArgumentList argumentList2 = methodExp2.getArgumentList();
+        JSExpression[] args1 = argumentList1.getArguments();
+        JSArgumentList argumentList2 = methodExp2.getArgumentList();
         if (argumentList2 == null) {
             return false;
         }
-        final JSExpression[] args2 = argumentList2.getArguments();
+        JSExpression[] args2 = argumentList2.getArguments();
         return expressionListsAreEquivalent(args1, args2);
     }
 
     private static boolean newExpressionsAreEquivalent(@Nonnull JSNewExpression newExp1, @Nonnull JSNewExpression newExp2) {
-        final JSExpression methodExpression1 = newExp1.getMethodExpression();
-        final JSExpression methodExpression2 = newExp2.getMethodExpression();
+        JSExpression methodExpression1 = newExp1.getMethodExpression();
+        JSExpression methodExpression2 = newExp2.getMethodExpression();
         if (!expressionsAreEquivalent(methodExpression1, methodExpression2)) {
             return false;
         }
-        final JSArgumentList argumentList1 = newExp1.getArgumentList();
+        JSArgumentList argumentList1 = newExp1.getArgumentList();
         if (argumentList1 == null) {
             return false;
         }
-        final JSExpression[] args1 = argumentList1.getArguments();
-        final JSArgumentList argumentList2 = newExp1.getArgumentList();
+        JSExpression[] args1 = argumentList1.getArguments();
+        JSArgumentList argumentList2 = newExp1.getArgumentList();
         if (argumentList2 == null) {
             return false;
         }
-        final JSExpression[] args2 = argumentList2.getArguments();
+        JSExpression[] args2 = argumentList2.getArguments();
         return expressionListsAreEquivalent(args1, args2);
     }
 
@@ -525,8 +525,8 @@ private static boolean arrayInitializerExpressionsAreEquivalent(
         @Nonnull JSArrayLiteralExpression arrInitExp1,
         @Nonnull JSArrayLiteralExpression arrInitExp2
     ) {
-        final JSExpression[] initializers1 = arrInitExp1.getExpressions();
-        final JSExpression[] initializers2 = arrInitExp2.getExpressions();
+        JSExpression[] initializers1 = arrInitExp1.getExpressions();
+        JSExpression[] initializers2 = arrInitExp2.getExpressions();
         return expressionListsAreEquivalent(initializers1, initializers2);
     }
 
@@ -534,16 +534,16 @@ private static boolean prefixExpressionsAreEquivalent(
         @Nonnull JSPrefixExpression prefixExp1,
         @Nonnull JSPrefixExpression prefixExp2
     ) {
-        final IElementType sign1 = prefixExp1.getOperationSign();
-        final IElementType sign2 = prefixExp2.getOperationSign();
+        IElementType sign1 = prefixExp1.getOperationSign();
+        IElementType sign2 = prefixExp2.getOperationSign();
         if (sign1 == null) {
             return sign1 == sign2;
         }
         if (!sign1.equals(sign2)) {
             return false;
         }
-        final JSExpression operand1 = prefixExp1.getExpression();
-        final JSExpression operand2 = prefixExp2.getExpression();
+        JSExpression operand1 = prefixExp1.getExpression();
+        JSExpression operand2 = prefixExp2.getExpression();
         return expressionsAreEquivalent(operand1, operand2);
     }
 
@@ -551,26 +551,26 @@ private static boolean postfixExpressionsAreEquivalent(
         @Nonnull JSPostfixExpression postfixExp1,
         @Nonnull JSPostfixExpression postfixExp2
     ) {
-        final IElementType sign1 = postfixExp1.getOperationSign();
-        final IElementType sign2 = postfixExp2.getOperationSign();
+        IElementType sign1 = postfixExp1.getOperationSign();
+        IElementType sign2 = postfixExp2.getOperationSign();
         if (!sign1.equals(sign2)) {
             return false;
         }
-        final JSExpression operand1 = postfixExp1.getExpression();
-        final JSExpression operand2 = postfixExp2.getExpression();
+        JSExpression operand1 = postfixExp1.getExpression();
+        JSExpression operand2 = postfixExp2.getExpression();
         return expressionsAreEquivalent(operand1, operand2);
     }
 
     private static boolean binaryExpressionsAreEquivalent(@Nonnull JSBinaryExpression binaryExp1, @Nonnull JSBinaryExpression binaryExp2) {
-        final IElementType sign1 = binaryExp1.getOperationSign();
-        final IElementType sign2 = binaryExp2.getOperationSign();
+        IElementType sign1 = binaryExp1.getOperationSign();
+        IElementType sign2 = binaryExp2.getOperationSign();
         if (!sign1.equals(sign2)) {
             return false;
         }
-        final JSExpression lhs1 = binaryExp1.getLOperand();
-        final JSExpression lhs2 = binaryExp2.getLOperand();
-        final JSExpression rhs1 = binaryExp1.getROperand();
-        final JSExpression rhs2 = binaryExp2.getROperand();
+        JSExpression lhs1 = binaryExp1.getLOperand();
+        JSExpression lhs2 = binaryExp2.getLOperand();
+        JSExpression rhs1 = binaryExp1.getROperand();
+        JSExpression rhs2 = binaryExp2.getROperand();
         return expressionsAreEquivalent(lhs1, lhs2) && expressionsAreEquivalent(rhs1, rhs2);
     }
 
@@ -578,15 +578,15 @@ private static boolean assignmentExpressionsAreEquivalent(
         @Nonnull JSAssignmentExpression assignExp1,
         @Nonnull JSAssignmentExpression assignExp2
     ) {
-        final IElementType sign1 = assignExp1.getOperationSign();
-        final IElementType sign2 = assignExp2.getOperationSign();
+        IElementType sign1 = assignExp1.getOperationSign();
+        IElementType sign2 = assignExp2.getOperationSign();
         if (!sign1.equals(sign2)) {
             return false;
         }
-        final JSExpression lhs1 = assignExp1.getLOperand();
-        final JSExpression lhs2 = assignExp2.getLOperand();
-        final JSExpression rhs1 = assignExp1.getROperand();
-        final JSExpression rhs2 = assignExp2.getROperand();
+        JSExpression lhs1 = assignExp1.getLOperand();
+        JSExpression lhs2 = assignExp2.getLOperand();
+        JSExpression rhs1 = assignExp1.getROperand();
+        JSExpression rhs2 = assignExp2.getROperand();
         return expressionsAreEquivalent(lhs1, lhs2)
             && expressionsAreEquivalent(rhs1, rhs2);
     }
@@ -595,12 +595,12 @@ private static boolean conditionalExpressionsAreEquivalent(
         @Nonnull JSConditionalExpression condExp1,
         @Nonnull JSConditionalExpression condExp2
     ) {
-        final JSExpression condition1 = condExp1.getCondition();
-        final JSExpression condition2 = condExp2.getCondition();
-        final JSExpression thenExpression1 = condExp1.getThen();
-        final JSExpression thenExpression2 = condExp2.getThen();
-        final JSExpression elseExpression1 = condExp1.getElse();
-        final JSExpression elseExpression2 = condExp2.getElse();
+        JSExpression condition1 = condExp1.getCondition();
+        JSExpression condition2 = condExp2.getCondition();
+        JSExpression thenExpression1 = condExp1.getThen();
+        JSExpression thenExpression2 = condExp2.getThen();
+        JSExpression elseExpression1 = condExp1.getElse();
+        JSExpression elseExpression2 = condExp2.getElse();
         return expressionsAreEquivalent(condition1, condition2)
             && expressionsAreEquivalent(thenExpression1, thenExpression2)
             && expressionsAreEquivalent(elseExpression1, elseExpression2);
diff --git a/inspections/src/main/java/com/sixrr/inspectjs/utils/ExpressionUtil.java b/inspections/src/main/java/com/sixrr/inspectjs/utils/ExpressionUtil.java
index d95fa2d0..5c6100f9 100644
--- a/inspections/src/main/java/com/sixrr/inspectjs/utils/ExpressionUtil.java
+++ b/inspections/src/main/java/com/sixrr/inspectjs/utils/ExpressionUtil.java
@@ -17,7 +17,7 @@ public static boolean isConstantExpression(JSExpression expression) {
         if (expression == null) {
             return false;
         }
-        final IsConstantExpressionVisitor visitor = new IsConstantExpressionVisitor();
+        IsConstantExpressionVisitor visitor = new IsConstantExpressionVisitor();
         expression.accept(visitor);
         return visitor.isConstant;
     }
@@ -42,7 +42,7 @@ public void visitJSLiteralExpression(JSSimpleLiteralExpression expression) {
 
         @Override
         public void visitJSParenthesizedExpression(JSParenthesizedExpression expression) {
-            final JSExpression expr = expression.getInnerExpression();
+            JSExpression expr = expression.getInnerExpression();
             if (expr != null) {
                 expr.accept(this);
             }
@@ -50,7 +50,7 @@ public void visitJSParenthesizedExpression(JSParenthesizedExpression expression)
 
         @Override
         public void visitJSPrefixExpression(JSPrefixExpression expression) {
-            final JSExpression operand = expression.getExpression();
+            JSExpression operand = expression.getExpression();
             if (operand == null) {
                 isConstant = false;
                 return;
@@ -61,7 +61,7 @@ public void visitJSPrefixExpression(JSPrefixExpression expression) {
                 return;
             }
 
-            final IElementType opType = expression.getOperationSign();
+            IElementType opType = expression.getOperationSign();
 
             if (JSTokenTypes.PLUS.equals(opType)
                 || JSTokenTypes.MINUS.equals(opType)
@@ -78,7 +78,7 @@ public void visitJSBinaryExpression(JSBinaryExpression expression) {
             if (!isConstant) {
                 return;
             }
-            final JSExpression rOperand = expression.getROperand();
+            JSExpression rOperand = expression.getROperand();
             if (rOperand != null) {
                 rOperand.accept(this);
             }
@@ -86,8 +86,8 @@ public void visitJSBinaryExpression(JSBinaryExpression expression) {
 
         @Override
         public void visitJSConditionalExpression(JSConditionalExpression expression) {
-            final JSExpression thenExpr = expression.getThen();
-            final JSExpression elseExpr = expression.getElse();
+            JSExpression thenExpr = expression.getThen();
+            JSExpression elseExpr = expression.getElse();
             if (thenExpr == null || elseExpr == null) {
                 isConstant = false;
                 return;
@@ -106,15 +106,15 @@ public void visitJSConditionalExpression(JSConditionalExpression expression) {
 
         @Override
         public void visitJSReferenceExpression(JSReferenceExpression expression) {
-            final JSElement refElement = (JSElement)expression.resolve();
+            JSElement refElement = (JSElement)expression.resolve();
 
             if (!(refElement instanceof JSVariable)) {
                 isConstant = false;
                 return;
             }
 
-            final JSVariable variable = (JSVariable)refElement;
-            final Boolean isConst = isVariableConstant.get(variable);
+            JSVariable variable = (JSVariable)refElement;
+            Boolean isConst = isVariableConstant.get(variable);
 
             if (isConst != null) {
                 isConstant &= isConst;
@@ -127,7 +127,7 @@ public void visitJSReferenceExpression(JSReferenceExpression expression) {
                 return;
             }
 
-            final JSExpression initializer = variable.getInitializer();
+            JSExpression initializer = variable.getInitializer();
 
             initializer.accept(this);
             isVariableConstant.put(variable, isConstant);
diff --git a/inspections/src/main/java/com/sixrr/inspectjs/utils/ParenthesesUtils.java b/inspections/src/main/java/com/sixrr/inspectjs/utils/ParenthesesUtils.java
index 6c870274..ea4ae5d3 100644
--- a/inspections/src/main/java/com/sixrr/inspectjs/utils/ParenthesesUtils.java
+++ b/inspections/src/main/java/com/sixrr/inspectjs/utils/ParenthesesUtils.java
@@ -87,7 +87,7 @@ public static int getPrecendence(JSExpression exp) {
             return POSTFIX_PRECEDENCE;
         }
         if (exp instanceof JSBinaryExpression && !(exp instanceof JSAssignmentExpression)) {
-            final IElementType sign = ((JSBinaryExpression)exp)
+            IElementType sign = ((JSBinaryExpression)exp)
                 .getOperationSign();
             return precedenceForBinaryOperator(sign);
         }
diff --git a/inspections/src/main/java/com/sixrr/inspectjs/utils/SideEffectChecker.java b/inspections/src/main/java/com/sixrr/inspectjs/utils/SideEffectChecker.java
index 18295993..b1ed42c3 100644
--- a/inspections/src/main/java/com/sixrr/inspectjs/utils/SideEffectChecker.java
+++ b/inspections/src/main/java/com/sixrr/inspectjs/utils/SideEffectChecker.java
@@ -13,7 +13,7 @@ private SideEffectChecker() {
     }
 
     public static boolean mayHaveSideEffects(@Nonnull JSExpression exp) {
-        final SideEffectsVisitor visitJSor = new SideEffectsVisitor();
+        SideEffectsVisitor visitJSor = new SideEffectsVisitor();
         exp.accept(visitJSor);
         return visitJSor.mayHaveSideEffects();
     }
@@ -61,7 +61,7 @@ public void visitJSPostfixExpression(@Nonnull JSPostfixExpression expression) {
                 return;
             }
             super.visitJSPostfixExpression(expression);
-            final IElementType sign = expression.getOperationSign();
+            IElementType sign = expression.getOperationSign();
             if (JSTokenTypes.PLUSPLUS.equals(sign) ||
                 JSTokenTypes.MINUSMINUS.equals(sign)) {
                 mayHaveSideEffects = true;
@@ -74,7 +74,7 @@ public void visitJSPrefixExpression(@Nonnull JSPrefixExpression expression) {
                 return;
             }
             super.visitJSPrefixExpression(expression);
-            final IElementType sign = expression.getOperationSign();
+            IElementType sign = expression.getOperationSign();
             if (JSTokenTypes.PLUSPLUS.equals(sign) || JSTokenTypes.MINUSMINUS.equals(sign)) {
                 mayHaveSideEffects = true;
             }
diff --git a/inspections/src/main/java/com/sixrr/inspectjs/utils/StatementUtils.java b/inspections/src/main/java/com/sixrr/inspectjs/utils/StatementUtils.java
index c6cce4e1..7ae11b65 100644
--- a/inspections/src/main/java/com/sixrr/inspectjs/utils/StatementUtils.java
+++ b/inspections/src/main/java/com/sixrr/inspectjs/utils/StatementUtils.java
@@ -14,7 +14,7 @@ public static boolean isEmpty(JSStatement body) {
             return true;
         }
         else if (body instanceof JSBlockStatement block) {
-            final JSStatement[] statements = block.getStatements();
+            JSStatement[] statements = block.getStatements();
             return statements == null || statements.length == 0;
         }
         return false;
diff --git a/inspections/src/main/java/com/sixrr/inspectjs/validity/BadExpressionStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/validity/BadExpressionStatementJSInspection.java
index 62b68f07..6fa43149 100644
--- a/inspections/src/main/java/com/sixrr/inspectjs/validity/BadExpressionStatementJSInspection.java
+++ b/inspections/src/main/java/com/sixrr/inspectjs/validity/BadExpressionStatementJSInspection.java
@@ -56,7 +56,7 @@ private static class Visitor extends BaseInspectionVisitor {
         @RequiredReadAction
         public void visitJSExpressionStatement(JSExpressionStatement jsExpressionStatement) {
             super.visitJSExpressionStatement(jsExpressionStatement);
-            final JSExpression expression = jsExpressionStatement.getExpression();
+            JSExpression expression = jsExpressionStatement.getExpression();
             if (isNotPointless(expression) || jsExpressionStatement.getParent() instanceof ES6ExportDefaultAssignment) {
                 return;
             }
@@ -73,7 +73,7 @@ public void visitJSExpressionStatement(JSExpressionStatement jsExpressionStateme
             registerError(jsExpressionStatement);
         }
 
-        private boolean isNotPointless(final JSExpression expression) {
+        private boolean isNotPointless(JSExpression expression) {
             if (expression instanceof JSCallExpression) {
                 return true;
             }
@@ -82,14 +82,14 @@ private boolean isNotPointless(final JSExpression expression) {
             }
 
             if (expression instanceof JSPrefixExpression) {
-                final JSPrefixExpression prefix = (JSPrefixExpression)expression;
-                final IElementType sign = prefix.getOperationSign();
+                JSPrefixExpression prefix = (JSPrefixExpression)expression;
+                IElementType sign = prefix.getOperationSign();
                 if (JSTokenTypes.PLUSPLUS.equals(sign) || JSTokenTypes.MINUSMINUS.equals(sign)) {
                     return true;
                 }
-                final PsiElement signElement = expression.getFirstChild();
+                PsiElement signElement = expression.getFirstChild();
                 if (signElement != null) {
-                    @NonNls final String text = signElement.getText();
+                    @NonNls String text = signElement.getText();
                     if ("delete".equals(text)) {
                         return true;
                     }
@@ -103,19 +103,19 @@ private boolean isNotPointless(final JSExpression expression) {
                 }
             }
             if (expression instanceof JSPostfixExpression) {
-                final JSPostfixExpression prefix = (JSPostfixExpression)expression;
-                final IElementType sign = prefix.getOperationSign();
+                JSPostfixExpression prefix = (JSPostfixExpression)expression;
+                IElementType sign = prefix.getOperationSign();
                 if (JSTokenTypes.PLUSPLUS.equals(sign) || JSTokenTypes.MINUSMINUS.equals(sign)) {
                     return true;
                 }
             }
 
             if (expression instanceof JSBinaryExpression) {
-                final JSBinaryExpression binary = (JSBinaryExpression)expression;
-                final IElementType sign = binary.getOperationSign();
+                JSBinaryExpression binary = (JSBinaryExpression)expression;
+                IElementType sign = binary.getOperationSign();
 
                 if (sign == JSTokenTypes.ANDAND || sign == JSTokenTypes.OROR) {
-                    final JSExpression leftOp = binary.getLOperand();
+                    JSExpression leftOp = binary.getLOperand();
 
                     if ((leftOp instanceof JSReferenceExpression || leftOp instanceof JSIndexedPropertyAccessExpression)
                         && isNotPointless(binary.getROperand())) {
@@ -134,9 +134,9 @@ else if (sign == JSTokenTypes.COMMA) {
             if (expression instanceof JSReferenceExpression referenceExpression) {
                 if (expression.getParent().getParent() instanceof JSClass
                     || PsiTreeUtil.getParentOfType(expression, PsiFile.class).getContext() != null) {
-                    final ResolveResult[] results = referenceExpression.multiResolve(false);
+                    ResolveResult[] results = referenceExpression.multiResolve(false);
                     if (results.length > 0) {
-                        final PsiElement element = results[0].getElement();
+                        PsiElement element = results[0].getElement();
                         if (element instanceof JSClass || element instanceof JSFunction) {
                             return true; // class A { import B; B; } // x = "foo"
                         }
diff --git a/inspections/src/main/java/com/sixrr/inspectjs/validity/DebuggerStatementJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/validity/DebuggerStatementJSInspection.java
index e7c3e8fc..723ba1a6 100644
--- a/inspections/src/main/java/com/sixrr/inspectjs/validity/DebuggerStatementJSInspection.java
+++ b/inspections/src/main/java/com/sixrr/inspectjs/validity/DebuggerStatementJSInspection.java
@@ -49,12 +49,12 @@ private static class Visitor extends BaseInspectionVisitor {
         @Override
         public void visitJSExpressionStatement(JSExpressionStatement jsExpressionStatement) {
             super.visitJSExpressionStatement(jsExpressionStatement);
-            final JSExpression expression = jsExpressionStatement.getExpression();
+            JSExpression expression = jsExpressionStatement.getExpression();
 
             if (!(expression instanceof JSReferenceExpression)) {
                 return;
             }
-            @NonNls final String text = expression.getText();
+            @NonNls String text = expression.getText();
             if (!"debugger".equals(text)) {
                 return;
             }
diff --git a/inspections/src/main/java/com/sixrr/inspectjs/validity/DuplicateCaseLabelJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/validity/DuplicateCaseLabelJSInspection.java
index c85057e6..f70a5825 100644
--- a/inspections/src/main/java/com/sixrr/inspectjs/validity/DuplicateCaseLabelJSInspection.java
+++ b/inspections/src/main/java/com/sixrr/inspectjs/validity/DuplicateCaseLabelJSInspection.java
@@ -52,26 +52,26 @@ private static class Visitor extends BaseInspectionVisitor {
         public void visitJSSwitchStatement(@Nonnull JSSwitchStatement statement) {
             super.visitJSSwitchStatement(statement);
 
-            final Set conditions = new HashSet<>();
+            Set conditions = new HashSet<>();
             collectCaseLabels(statement, conditions);
-            final int numConditions = conditions.size();
+            int numConditions = conditions.size();
             if (numConditions < 2) {
                 return;
             }
-            final JSExpression[] conditionArray = conditions.toArray(new JSExpression[numConditions]);
-            final boolean[] matched = new boolean[conditionArray.length];
+            JSExpression[] conditionArray = conditions.toArray(new JSExpression[numConditions]);
+            boolean[] matched = new boolean[conditionArray.length];
             Arrays.fill(matched, false);
             for (int i = 0; i < conditionArray.length; i++) {
                 if (matched[i]) {
                     continue;
                 }
-                final JSExpression condition = conditionArray[i];
+                JSExpression condition = conditionArray[i];
                 for (int j = i + 1; j < conditionArray.length; j++) {
                     if (matched[j]) {
                         continue;
                     }
-                    final JSExpression testCondition = conditionArray[j];
-                    final boolean areEquivalent = EquivalenceChecker.expressionsAreEquivalent(condition, testCondition);
+                    JSExpression testCondition = conditionArray[j];
+                    boolean areEquivalent = EquivalenceChecker.expressionsAreEquivalent(condition, testCondition);
                     if (areEquivalent) {
                         registerError(testCondition);
                         if (!matched[i]) {
@@ -83,7 +83,7 @@ public void visitJSSwitchStatement(@Nonnull JSSwitchStatement statement) {
                 }
             }
             int numDefaults = 0;
-            final JSCaseClause[] clauses = statement.getCaseClauses();
+            JSCaseClause[] clauses = statement.getCaseClauses();
             for (JSCaseClause clause : clauses) {
                 if (clause.isDefault()) {
                     numDefaults++;
@@ -99,10 +99,10 @@ public void visitJSSwitchStatement(@Nonnull JSSwitchStatement statement) {
         }
 
         private static void collectCaseLabels(JSSwitchStatement statement, Set conditions) {
-            final JSCaseClause[] clauses = statement.getCaseClauses();
+            JSCaseClause[] clauses = statement.getCaseClauses();
             for (JSCaseClause clause : clauses) {
                 if (!clause.isDefault()) {
-                    final JSExpression caseExpression = clause.getCaseExpression();
+                    JSExpression caseExpression = clause.getCaseExpression();
                     if (caseExpression != null) {
                         conditions.add(caseExpression);
                     }
diff --git a/inspections/src/main/java/com/sixrr/inspectjs/validity/DuplicatePropertyOnObjectJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/validity/DuplicatePropertyOnObjectJSInspection.java
index 08d23291..4b856f74 100644
--- a/inspections/src/main/java/com/sixrr/inspectjs/validity/DuplicatePropertyOnObjectJSInspection.java
+++ b/inspections/src/main/java/com/sixrr/inspectjs/validity/DuplicatePropertyOnObjectJSInspection.java
@@ -42,21 +42,21 @@ private static class Visitor extends BaseInspectionVisitor {
         @Override
         public void visitJSObjectLiteralExpression(JSObjectLiteralExpression jsObjectLiteralExpression) {
             super.visitJSObjectLiteralExpression(jsObjectLiteralExpression);
-            final JSProperty[] properties = jsObjectLiteralExpression.getProperties();
-            final boolean[] matched = new boolean[properties.length];
+            JSProperty[] properties = jsObjectLiteralExpression.getProperties();
+            boolean[] matched = new boolean[properties.length];
             Arrays.fill(matched, false);
             for (int i = 0; i < properties.length; i++) {
                 if (matched[i]) {
                     continue;
                 }
-                final JSProperty property1 = properties[i];
+                JSProperty property1 = properties[i];
                 for (int j = i + 1; j < properties.length; j++) {
                     if (matched[j]) {
                         continue;
                     }
-                    final JSProperty property2 = properties[j];
-                    final String property1Name = property1.getName();
-                    final String property2Name = property2.getName();
+                    JSProperty property2 = properties[j];
+                    String property1Name = property1.getName();
+                    String property2Name = property2.getName();
                     if (property1Name != null && property2Name != null &&
                         property1Name.equals(property2Name)) {
                         registerError(property2.getFirstChild());
diff --git a/inspections/src/main/java/com/sixrr/inspectjs/validity/FunctionWithInconsistentReturnsJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/validity/FunctionWithInconsistentReturnsJSInspection.java
index 573c9165..5ea1c207 100644
--- a/inspections/src/main/java/com/sixrr/inspectjs/validity/FunctionWithInconsistentReturnsJSInspection.java
+++ b/inspections/src/main/java/com/sixrr/inspectjs/validity/FunctionWithInconsistentReturnsJSInspection.java
@@ -40,7 +40,7 @@ public boolean isEnabledByDefault() {
     @Override
     @RequiredReadAction
     protected String buildErrorString(Object state, Object... args) {
-        final JSFunction function = (JSFunction)((PsiElement)args[0]).getParent();
+        JSFunction function = (JSFunction)((PsiElement)args[0]).getParent();
         assert function != null;
         return functionHasIdentifier(function)
             ? InspectionJSLocalize.functionHasInconsistentReturnPointsErrorString().get()
@@ -88,19 +88,19 @@ public void visitJSFunctionExpression(JSFunctionExpression node) {
     }
 
     private static boolean functionHasReturnValues(JSFunction function) {
-        final ReturnValuesVisitor visitor = new ReturnValuesVisitor(function);
+        ReturnValuesVisitor visitor = new ReturnValuesVisitor(function);
         function.accept(visitor);
         return visitor.hasReturnValues();
     }
 
     private static boolean functionHasValuelessReturns(JSFunction function) {
-        final PsiElement lastChild = function.getLastChild();
+        PsiElement lastChild = function.getLastChild();
         if (lastChild instanceof JSBlockStatement) {
             if (ControlFlowUtils.statementMayCompleteNormally((JSStatement)lastChild)) {
                 return true;
             }
         }
-        final ValuelessReturnVisitor visitor = new ValuelessReturnVisitor(function);
+        ValuelessReturnVisitor visitor = new ValuelessReturnVisitor(function);
         function.acceptChildren(visitor);
         return visitor.hasValuelessReturns();
     }
@@ -117,7 +117,7 @@ private static class ReturnValuesVisitor extends JSRecursiveElementVisitor {
         public void visitJSReturnStatement(JSReturnStatement statement) {
             super.visitJSReturnStatement(statement);
             if (statement.getExpression() != null) {
-                final JSFunction containingFunction = PsiTreeUtil.getParentOfType(statement, JSFunction.class);
+                JSFunction containingFunction = PsiTreeUtil.getParentOfType(statement, JSFunction.class);
                 if (function.equals(containingFunction)) {
                     hasReturnValues = true;
                 }
@@ -141,7 +141,7 @@ private static class ValuelessReturnVisitor extends JSRecursiveElementVisitor {
         public void visitJSReturnStatement(JSReturnStatement statement) {
             super.visitJSReturnStatement(statement);
             if (statement.getExpression() == null) {
-                final JSFunction containingFunction = PsiTreeUtil.getParentOfType(statement, JSFunction.class);
+                JSFunction containingFunction = PsiTreeUtil.getParentOfType(statement, JSFunction.class);
                 if (function.equals(containingFunction)) {
                     hasValuelessReturns = true;
                 }
diff --git a/inspections/src/main/java/com/sixrr/inspectjs/validity/StringLiteralBreaksHTMLJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/validity/StringLiteralBreaksHTMLJSInspection.java
index c7eb9358..ce68eac3 100644
--- a/inspections/src/main/java/com/sixrr/inspectjs/validity/StringLiteralBreaksHTMLJSInspection.java
+++ b/inspections/src/main/java/com/sixrr/inspectjs/validity/StringLiteralBreaksHTMLJSInspection.java
@@ -46,7 +46,7 @@ private static class Visitor extends BaseInspectionVisitor {
         @Override
         public void visitJSLiteralExpression(JSSimpleLiteralExpression jsLiteralExpression) {
             super.visitJSLiteralExpression(jsLiteralExpression);
-            final String text = jsLiteralExpression.getText();
+            String text = jsLiteralExpression.getText();
             if (!text.startsWith("\"") && !text.startsWith("'")) {
                 return;
             }
diff --git a/inspections/src/main/java/com/sixrr/inspectjs/validity/ThisExpressionReferencesGlobalObjectJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/validity/ThisExpressionReferencesGlobalObjectJSInspection.java
index 3448be2b..77d24482 100644
--- a/inspections/src/main/java/com/sixrr/inspectjs/validity/ThisExpressionReferencesGlobalObjectJSInspection.java
+++ b/inspections/src/main/java/com/sixrr/inspectjs/validity/ThisExpressionReferencesGlobalObjectJSInspection.java
@@ -52,21 +52,21 @@ private static class Visitor extends BaseInspectionVisitor {
         @Override
         public void visitJSThisExpression(JSThisExpression jsThisExpression) {
             super.visitJSThisExpression(jsThisExpression);
-            final JSObjectLiteralExpression containingObject =
+            JSObjectLiteralExpression containingObject =
                 PsiTreeUtil.getParentOfType(jsThisExpression, JSObjectLiteralExpression.class);
             if (containingObject != null) {
                 return;
             }
-            final JSFunction containingFunction = PsiTreeUtil.getParentOfType(jsThisExpression, JSFunction.class);
+            JSFunction containingFunction = PsiTreeUtil.getParentOfType(jsThisExpression, JSFunction.class);
             if (containingFunction != null) {
                 return;
             }
-            final XmlAttributeValue containingAttribute = PsiTreeUtil.getParentOfType(jsThisExpression, XmlAttributeValue.class);
+            XmlAttributeValue containingAttribute = PsiTreeUtil.getParentOfType(jsThisExpression, XmlAttributeValue.class);
             if (containingAttribute != null) {
                 return;
             }
 
-            final PsiFile containingFile = jsThisExpression.getContainingFile();
+            PsiFile containingFile = jsThisExpression.getContainingFile();
             if (containingFile instanceof JSExpressionCodeFragment ||
                 containingFile.getContext() instanceof XmlAttributeValue) {
                 return;
diff --git a/inspections/src/main/java/com/sixrr/inspectjs/validity/UnreachableCodeJSInspection.java b/inspections/src/main/java/com/sixrr/inspectjs/validity/UnreachableCodeJSInspection.java
index cf04d041..ddebabb8 100644
--- a/inspections/src/main/java/com/sixrr/inspectjs/validity/UnreachableCodeJSInspection.java
+++ b/inspections/src/main/java/com/sixrr/inspectjs/validity/UnreachableCodeJSInspection.java
@@ -49,7 +49,7 @@ private static class Visitor extends BaseInspectionVisitor {
         @Override
         public void visitJSBlock(JSBlockStatement statement) {
             super.visitJSBlock(statement);
-            final JSStatement[] statements = statement.getStatements();
+            JSStatement[] statements = statement.getStatements();
             for (int i = 0; i < statements.length - 1; i++) {
                 if (!ControlFlowUtils.statementMayCompleteNormally(statements[i])) {
                     registerStatementError(statements[i + 1]);
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/JSAbstractBundle.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/JSAbstractBundle.java
index cb91c16a..8a43af13 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/JSAbstractBundle.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/JSAbstractBundle.java
@@ -36,12 +36,12 @@ public static String getKey(String className, String classNameSuffix, String alt
             name = name.substring(0, name.length() - alternateClassNameSuffix.length());
         }
 
-        final int length = name.length();
-        final StringBuilder buffer = new StringBuilder(length + 10);
+        int length = name.length();
+        StringBuilder buffer = new StringBuilder(length + 10);
         boolean addWordSeparator = false;
 
         for (int index = 0; index < length; index++) {
-            final char c = name.charAt(index);
+            char c = name.charAt(index);
 
             if (Character.isUpperCase(c)) {
                 if (addWordSeparator) {
@@ -56,7 +56,7 @@ public static String getKey(String className, String classNameSuffix, String alt
             }
         }
 
-        for (final Object suffix : suffixes) {
+        for (Object suffix : suffixes) {
             buffer.append(suffix);
         }
 
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSElementIterator.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSElementIterator.java
index 01f2cfe9..8764d83d 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSElementIterator.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSElementIterator.java
@@ -82,8 +82,8 @@ private void findNext() {
             do {
                 element = this.elementStack.pop();
 
-                final int elementTextOffset = element.getTextOffset();
-                final int elementTextEndOffset = elementTextOffset + element.getTextLength();
+                int elementTextOffset = element.getTextOffset();
+                int elementTextEndOffset = elementTextOffset + element.getTextLength();
 
                 if (elementTextEndOffset >= this.minTextOffset &&
                     elementTextOffset <= this.maxTextOffset) {
@@ -108,7 +108,7 @@ private void pushChildren(PsiElement[] children, int elementTextOffset) {
             int index = 0;
 
             while (index < children.length && childTextOffset <= this.maxTextOffset) {
-                final PsiElement child = children[index];
+                PsiElement child = children[index];
 
                 childTextOffset = child.getTextOffset();
                 if (childTextOffset <= this.maxTextOffset) {
@@ -121,7 +121,7 @@ private void pushChildren(PsiElement[] children, int elementTextOffset) {
             int index = children.length - 1;
 
             while (index >= 0 && childTextOffset >= this.minTextOffset) {
-                final PsiElement child = children[index];
+                PsiElement child = children[index];
 
                 childTextOffset = child.getTextOffset() + child.getTextLength();
                 if (childTextOffset >= this.minTextOffset) {
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSFunctionVisitor.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSFunctionVisitor.java
index 6cebb058..c65b552d 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSFunctionVisitor.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSFunctionVisitor.java
@@ -38,7 +38,7 @@ public void visitElement(PsiElement element) {
         }
         else if (element instanceof JSReferenceExpression) {
             if (element == element.getParent().getChildren()[0]) {
-                final PsiElement firstChild = element.getParent().getFirstChild();
+                PsiElement firstChild = element.getParent().getFirstChild();
 
                 if (firstChild != null && firstChild.toString().indexOf(JSTokenTypes.NEW_KEYWORD.toString()) >= 0) {
                     this.visitJSNewExpression(new JSNewExpressionImpl(element.getParent().getNode()));
@@ -51,7 +51,7 @@ else if (element instanceof XmlFile xmlFile) {
 
         super.visitElement(element);
 
-        for (final PsiElement childElement : element.getChildren()) {
+        for (PsiElement childElement : element.getChildren()) {
             childElement.accept(this);
         }
     }
@@ -66,7 +66,7 @@ private void processFile(XmlFile file) {
         int count = 0;
         long start = System.currentTimeMillis();
 
-        for (final JSElement element : getEmbeddedJSElements(file)) {
+        for (JSElement element : getEmbeddedJSElements(file)) {
             this.visitElement(element);
             count++;
         }
@@ -76,7 +76,7 @@ private void processFile(XmlFile file) {
         );
     }
 
-    static Iterable getEmbeddedJSElements(final XmlFile file) {
+    static Iterable getEmbeddedJSElements(XmlFile file) {
         return () -> new EmbeddedJSElementIterator(file);
     }
 
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSIntention.java
index cff14f7a..05ad4b10 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSIntention.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/JSIntention.java
@@ -55,7 +55,7 @@ protected PsiElement findMatchingElement(@Nullable PsiElement element) {
             return null;
         }
 
-        final Language language = element.getLanguage();
+        Language language = element.getLanguage();
         if (language != Language.ANY && language != JavaScriptLanguage.INSTANCE) {
             return null;
         }
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/ComparisonPredicate.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/ComparisonPredicate.java
index 89f22aff..349c43b2 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/ComparisonPredicate.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/ComparisonPredicate.java
@@ -34,8 +34,8 @@ public boolean satisfiedBy(@Nonnull PsiElement element) {
             return false;
         }
 
-        final JSBinaryExpression expression = (JSBinaryExpression)element;
-        final JSExpression rhs = expression.getROperand();
+        JSBinaryExpression expression = (JSBinaryExpression)element;
+        JSExpression rhs = expression.getROperand();
 
         return (rhs != null && ComparisonUtils.isComparisonOperator((JSExpression)element));
     }
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/ConjunctionPredicate.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/ConjunctionPredicate.java
index e5dccfe0..76b3c996 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/ConjunctionPredicate.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/ConjunctionPredicate.java
@@ -33,8 +33,8 @@ public boolean satisfiedBy(@Nonnull PsiElement element) {
             return false;
         }
 
-        final JSBinaryExpression expression = (JSBinaryExpression)element;
-        final IElementType sign = expression.getOperationSign();
+        JSBinaryExpression expression = (JSBinaryExpression)element;
+        IElementType sign = expression.getOperationSign();
 
         return (JSTokenTypes.ANDAND.equals(sign) || JSTokenTypes.OROR.equals(sign));
     }
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSDeMorgansLawIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSDeMorgansLawIntention.java
index 08e290bf..39d43962 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSDeMorgansLawIntention.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSDeMorgansLawIntention.java
@@ -49,7 +49,7 @@ protected LocalizeValue getBasicText() {
     @Override
     @RequiredReadAction
     protected LocalizeValue getTextForElement(PsiElement element) {
-        final IElementType tokenType = ((JSBinaryExpression)element).getOperationSign();
+        IElementType tokenType = ((JSBinaryExpression)element).getOperationSign();
 
         return JSTokenTypes.ANDAND.equals(tokenType)
             ? JSIntentionLocalize.boolDeMorgansLawAndToOr()
@@ -66,7 +66,7 @@ public JSElementPredicate getElementPredicate() {
     @RequiredReadAction
     public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException {
         JSBinaryExpression exp = (JSBinaryExpression)element;
-        final IElementType tokenType = exp.getOperationSign();
+        IElementType tokenType = exp.getOperationSign();
         JSElement parent = (JSElement)exp.getParent();
 
         while (isConjunctionExpression(parent, tokenType)) {
@@ -75,16 +75,16 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat
             parent = (JSElement)exp.getParent();
         }
 
-        final String newExpression = this.convertConjunctionExpression(exp, tokenType);
+        String newExpression = this.convertConjunctionExpression(exp, tokenType);
 
         JSElementFactory.replaceExpressionWithNegatedExpressionString(exp, newExpression);
     }
 
     @RequiredReadAction
     private String convertConjunctionExpression(JSBinaryExpression exp, IElementType tokenType) {
-        final String leftText = this.getOperandText(exp.getLOperand(), tokenType);
-        final String rightText = this.getOperandText(exp.getROperand(), tokenType);
-        final String flippedConjunction = tokenType.equals(JSTokenTypes.ANDAND) ? "||" : "&&";
+        String leftText = this.getOperandText(exp.getLOperand(), tokenType);
+        String rightText = this.getOperandText(exp.getROperand(), tokenType);
+        String flippedConjunction = tokenType.equals(JSTokenTypes.ANDAND) ? "||" : "&&";
 
         return leftText + flippedConjunction + rightText;
     }
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipComparisonIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipComparisonIntention.java
index 375158c4..4f2a03ef 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipComparisonIntention.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipComparisonIntention.java
@@ -47,7 +47,7 @@ protected LocalizeValue getBasicText() {
     @Override
     @RequiredReadAction
     public LocalizeValue getTextForElement(PsiElement element) {
-        final JSBinaryExpression exp = (JSBinaryExpression)element;
+        JSBinaryExpression exp = (JSBinaryExpression)element;
         String operatorText = null;
         String flippedOperatorText = null;
 
@@ -76,14 +76,14 @@ public JSElementPredicate getElementPredicate() {
     @Override
     @RequiredReadAction
     public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException {
-        final JSBinaryExpression exp = (JSBinaryExpression)element;
-        final JSExpression lhs = exp.getLOperand();
-        final JSExpression rhs = exp.getROperand();
-        final IElementType sign = exp.getOperationSign();
+        JSBinaryExpression exp = (JSBinaryExpression)element;
+        JSExpression lhs = exp.getLOperand();
+        JSExpression rhs = exp.getROperand();
+        IElementType sign = exp.getOperationSign();
 
         assert (rhs != null);
 
-        final String expString = rhs.getText() + ComparisonUtils.getFlippedOperatorText(sign) + lhs.getText();
+        String expString = rhs.getText() + ComparisonUtils.getFlippedOperatorText(sign) + lhs.getText();
         JSElementFactory.replaceExpression(exp, expString);
     }
 }
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipConjunctionIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipConjunctionIntention.java
index 77aa1d0a..7449f1dc 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipConjunctionIntention.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSFlipConjunctionIntention.java
@@ -48,8 +48,8 @@ protected LocalizeValue getBasicText() {
     @Override
     @RequiredReadAction
     protected LocalizeValue getTextForElement(PsiElement element) {
-        final JSBinaryExpression binaryExpression = (JSBinaryExpression)element;
-        final IElementType sign = binaryExpression.getOperationSign();
+        JSBinaryExpression binaryExpression = (JSBinaryExpression)element;
+        IElementType sign = binaryExpression.getOperationSign();
 
         return JSIntentionLocalize.boolFlipConjunctionMessage(BinaryOperatorUtils.getOperatorText(sign));
     }
@@ -63,10 +63,10 @@ public JSElementPredicate getElementPredicate() {
     @Override
     @RequiredReadAction
     public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException {
-        final JSBinaryExpression binaryExpression = (JSBinaryExpression)element;
+        JSBinaryExpression binaryExpression = (JSBinaryExpression)element;
         JSExpression exp = binaryExpression;
 
-        final IElementType sign = binaryExpression.getOperationSign();
+        IElementType sign = binaryExpression.getOperationSign();
         JSElement parent = (JSElement)exp.getParent();
 
         while (isConjunctionExpression(parent, sign)) {
@@ -80,7 +80,7 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat
     @RequiredReadAction
     private String flipExpression(JSExpression exp, IElementType conjunctionType) {
         if (isConjunctionExpression(exp, conjunctionType)) {
-            final JSBinaryExpression andExpression = (JSBinaryExpression)exp;
+            JSBinaryExpression andExpression = (JSBinaryExpression)exp;
 
             return this.flipExpression(andExpression.getROperand(), conjunctionType) + ' ' +
                 BinaryOperatorUtils.getOperatorText(conjunctionType) + ' ' +
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSNegateComparisonIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSNegateComparisonIntention.java
index d53ba2aa..19f43d00 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSNegateComparisonIntention.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSNegateComparisonIntention.java
@@ -47,12 +47,12 @@ protected LocalizeValue getBasicText() {
     @Override
     @RequiredReadAction
     public LocalizeValue getTextForElement(PsiElement element) {
-        final JSBinaryExpression expression = (JSBinaryExpression)element;
+        JSBinaryExpression expression = (JSBinaryExpression)element;
         String operatorText = "";
         String negatedOperatorText = "";
 
         if (expression != null) {
-            final IElementType sign = expression.getOperationSign();
+            IElementType sign = expression.getOperationSign();
 
             operatorText = ComparisonUtils.getOperatorText(sign);
             negatedOperatorText = ComparisonUtils.getNegatedOperatorText(sign);
@@ -72,12 +72,12 @@ public JSElementPredicate getElementPredicate() {
     @Override
     @RequiredReadAction
     public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException {
-        final JSBinaryExpression exp = (JSBinaryExpression)element;
-        final JSExpression lhs = exp.getLOperand();
-        final JSExpression rhs = exp.getROperand();
-        final IElementType sign = exp.getOperationSign();
-        final String negatedOperator = ComparisonUtils.getNegatedOperatorText(sign);
-        final String lhsText = lhs.getText();
+        JSBinaryExpression exp = (JSBinaryExpression)element;
+        JSExpression lhs = exp.getLOperand();
+        JSExpression rhs = exp.getROperand();
+        IElementType sign = exp.getOperationSign();
+        String negatedOperator = ComparisonUtils.getNegatedOperatorText(sign);
+        String lhsText = lhs.getText();
 
         assert (rhs != null);
 
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSRemoveBooleanEqualityIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSRemoveBooleanEqualityIntention.java
index 73baf36f..37c00599 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSRemoveBooleanEqualityIntention.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/bool/JSRemoveBooleanEqualityIntention.java
@@ -50,7 +50,7 @@ protected LocalizeValue getBasicText() {
     @Override
     @RequiredReadAction
     protected LocalizeValue getTextForElement(PsiElement element) {
-        final JSBinaryExpression binaryExpression = (JSBinaryExpression)element;
+        JSBinaryExpression binaryExpression = (JSBinaryExpression)element;
 
         return JSIntentionLocalize.boolRemoveBooleanEqualityMessage(
             BinaryOperatorUtils.getOperatorText(binaryExpression.getOperationSign())
@@ -65,16 +65,16 @@ public JSElementPredicate getElementPredicate() {
 
     @Override
     public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException {
-        final JSBinaryExpression exp = (JSBinaryExpression)element;
-        final boolean isEquals = exp.getOperationSign().equals(JSTokenTypes.EQEQ);
-        final JSExpression lhs = exp.getLOperand();
-        final JSExpression rhs = exp.getROperand();
+        JSBinaryExpression exp = (JSBinaryExpression)element;
+        boolean isEquals = exp.getOperationSign().equals(JSTokenTypes.EQEQ);
+        JSExpression lhs = exp.getLOperand();
+        JSExpression rhs = exp.getROperand();
 
         assert (lhs != null);
         assert (rhs != null);
 
-        final String lhsText = lhs.getText();
-        final String rhsText = rhs.getText();
+        String lhsText = lhs.getText();
+        String rhsText = rhs.getText();
 
         if (BoolUtils.TRUE.equals(lhsText)) {
             if (isEquals) {
@@ -117,15 +117,15 @@ public boolean satisfiedBy(@Nonnull PsiElement element) {
                 return false;
             }
 
-            final JSBinaryExpression expression = (JSBinaryExpression)element;
-            final IElementType sign = expression.getOperationSign();
+            JSBinaryExpression expression = (JSBinaryExpression)element;
+            IElementType sign = expression.getOperationSign();
 
             if (!(JSTokenTypes.EQEQ.equals(sign) || JSTokenTypes.NE.equals(sign))) {
                 return false;
             }
 
-            final JSExpression lhs = expression.getLOperand();
-            final JSExpression rhs = expression.getROperand();
+            JSExpression lhs = expression.getLOperand();
+            JSExpression rhs = expression.getROperand();
 
             return lhs != null && rhs != null && (BoolUtils.isBooleanLiteral(lhs) || BoolUtils.isBooleanLiteral(rhs));
         }
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSAddBracesIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSAddBracesIntention.java
index 5779b100..04e2948e 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSAddBracesIntention.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSAddBracesIntention.java
@@ -51,18 +51,18 @@ protected LocalizeValue getBasicText() {
     @Override
     @RequiredReadAction
     protected LocalizeValue getTextForElement(PsiElement element) {
-        final JSElement parent = (JSElement)element.getParent();
-        final String keyword;
+        JSElement parent = (JSElement)element.getParent();
+        String keyword;
 
         assert (parent != null);
 
         if (parent instanceof JSIfStatement ifStatement) {
-            final JSStatement elseBranch = ifStatement.getElse();
+            JSStatement elseBranch = ifStatement.getElse();
 
             keyword = (element.equals(elseBranch) ? "else" : "if");
         }
         else {
-            final PsiElement firstChild = parent.getFirstChild();
+            PsiElement firstChild = parent.getFirstChild();
 
             assert (firstChild != null);
             keyword = firstChild.getText();
@@ -77,8 +77,8 @@ protected void processIntention(@Nonnull PsiElement element) throws IncorrectOpe
         if (!(element instanceof JSStatement statement)) {
             return;
         }
-        final JSElement parent = (JSElement)element.getParent();
-        final String text = element.getText();
+        JSElement parent = (JSElement)element.getParent();
+        String text = element.getText();
         String newText = parent.getLastChild() instanceof PsiComment
             ? '{' + text + "\n}"
             : '{' + text + '}';
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSRemoveBracesIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSRemoveBracesIntention.java
index 764954cb..ad0843f9 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSRemoveBracesIntention.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/braces/JSRemoveBracesIntention.java
@@ -51,18 +51,18 @@ protected JSElementPredicate getElementPredicate() {
     @Override
     @RequiredReadAction
     protected LocalizeValue getTextForElement(PsiElement element) {
-        final JSElement parent = (JSElement)element.getParent();
-        final String keyword;
+        JSElement parent = (JSElement)element.getParent();
+        String keyword;
 
         assert (parent != null);
 
         if (parent instanceof JSIfStatement ifStatement) {
-            final JSStatement elseBranch = ifStatement.getElse();
+            JSStatement elseBranch = ifStatement.getElse();
 
             keyword = element.equals(elseBranch) ? "else" : "if";
         }
         else {
-            final PsiElement keywordChild = parent.getFirstChild();
+            PsiElement keywordChild = parent.getFirstChild();
 
             assert (keywordChild != null);
             keyword = keywordChild.getText();
@@ -74,16 +74,16 @@ protected LocalizeValue getTextForElement(PsiElement element) {
     @Override
     @RequiredReadAction
     protected void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException {
-        final JSBlockStatement blockStatement = (JSBlockStatement)element;
-        final JSStatement[] statements = blockStatement.getStatements();
-        final JSStatement statement = statements[0];
+        JSBlockStatement blockStatement = (JSBlockStatement)element;
+        JSStatement[] statements = blockStatement.getStatements();
+        JSStatement statement = statements[0];
 
         // handle comments
-        final JSElement parent = (JSElement)blockStatement.getParent();
+        JSElement parent = (JSElement)blockStatement.getParent();
 
         assert (parent != null);
 
-        final JSElement grandParent = (JSElement)parent.getParent();
+        JSElement grandParent = (JSElement)parent.getParent();
 
         assert (grandParent != null);
 
@@ -99,10 +99,10 @@ protected void processIntention(@Nonnull PsiElement element) throws IncorrectOpe
             sibling = sibling.getNextSibling();
         }
 
-        final PsiElement lastChild = blockStatement.getLastChild();
+        PsiElement lastChild = blockStatement.getLastChild();
 
         if (lastChild instanceof PsiComment) {
-            final JSElement nextSibling = (JSElement)parent.getNextSibling();
+            JSElement nextSibling = (JSElement)parent.getNextSibling();
 
             grandParent.addAfter(lastChild, nextSibling);
         }
@@ -118,7 +118,7 @@ public boolean satisfiedBy(@Nonnull PsiElement element) {
                 return false;
             }
 
-            final PsiElement parent = blockStatement.getParent();
+            PsiElement parent = blockStatement.getParent();
 
             return (parent instanceof JSIfStatement || parent instanceof JSWhileStatement || parent instanceof JSDoWhileStatement
                 || parent instanceof JSForStatement || parent instanceof JSForInStatement)
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToCStyleCommentIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToCStyleCommentIntention.java
index 52c56e41..f81b34c9 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToCStyleCommentIntention.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToCStyleCommentIntention.java
@@ -58,7 +58,7 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat
         PsiComment firstComment = (PsiComment)element;
 
         while (true) {
-            final PsiElement prevComment = JSElementFactory.getNonWhiteSpaceSibling(firstComment, false);
+            PsiElement prevComment = JSElementFactory.getNonWhiteSpaceSibling(firstComment, false);
 
             if (!isEndOfLineComment(prevComment)) {
                 break;
@@ -67,8 +67,8 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat
             firstComment = (PsiComment)prevComment;
         }
 
-        final StringBuilder buffer = new StringBuilder(getCommentContents(firstComment));
-        final List elementsToDelete = new ArrayList<>();
+        StringBuilder buffer = new StringBuilder(getCommentContents(firstComment));
+        List elementsToDelete = new ArrayList<>();
         PsiElement nextComment = firstComment;
 
         while (true) {
@@ -80,7 +80,7 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat
             }
             assert (nextComment != null);
 
-            final PsiElement prevSibling = nextComment.getPrevSibling();
+            PsiElement prevSibling = nextComment.getPrevSibling();
 
             assert (prevSibling != null);
             elementsToDelete.add(prevSibling);
@@ -89,13 +89,13 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat
                 .append(getCommentContents((PsiComment)nextComment));
         }
 
-        final String text = StringUtil.replace(buffer.toString(), "*/", "* /");
-        final String newCommentString = text.indexOf('\n') >= 0
+        String text = StringUtil.replace(buffer.toString(), "*/", "* /");
+        String newCommentString = text.indexOf('\n') >= 0
             ? "/*\n" + text + "\n*/"
             : "/*" + text + "*/";
 
         JSElementFactory.addElementBefore(firstComment, newCommentString);
-        for (final PsiElement elementToDelete : elementsToDelete) {
+        for (PsiElement elementToDelete : elementsToDelete) {
             JSElementFactory.removeElement(elementToDelete);
         }
     }
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToEndOfLineCommentIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToEndOfLineCommentIntention.java
index 28fc84a9..d22df3f6 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToEndOfLineCommentIntention.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSChangeToEndOfLineCommentIntention.java
@@ -54,15 +54,15 @@ protected JSElementPredicate getElementPredicate() {
     @Override
     @RequiredReadAction
     public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException {
-        final PsiElement parent = element.getParent();
+        PsiElement parent = element.getParent();
 
         assert (parent != null);
 
-        final String commentText = element.getText();
-        final PsiElement whitespace = element.getNextSibling();
-        final String text = commentText.substring(2, commentText.length() - 2);
-        final String[] lines = text.split("\n");
-        final String[] newComments = buildCommentStrings(lines);
+        String commentText = element.getText();
+        PsiElement whitespace = element.getNextSibling();
+        String text = commentText.substring(2, commentText.length() - 2);
+        String[] lines = text.split("\n");
+        String[] newComments = buildCommentStrings(lines);
         PsiElement currentElement = element;
 
         for (int index = newComments.length; --index >= 0; ) {
@@ -81,7 +81,7 @@ private static String[] buildCommentStrings(String[] lines) {
         int lastNonEmtpyLine = -1;
 
         for (int i = lines.length - 1; i >= 0 && lastNonEmtpyLine == -1; i--) {
-            final String line = lines[i].trim();
+            String line = lines[i].trim();
             if (!line.isEmpty()) {
                 lastNonEmtpyLine = i;
             }
@@ -90,11 +90,11 @@ private static String[] buildCommentStrings(String[] lines) {
             return new String[]{"//"};
         }
 
-        final StringBuilder buffer = new StringBuilder();
-        final String[] commentStrings = new String[lastNonEmtpyLine + 1];
+        StringBuilder buffer = new StringBuilder();
+        String[] commentStrings = new String[lastNonEmtpyLine + 1];
 
         for (int i = 0; i <= lastNonEmtpyLine; i++) {
-            final String line = lines[i];
+            String line = lines[i];
 
             if (line.trim().length() != 0) {
                 buffer.replace(0, buffer.length(), "//");
@@ -123,17 +123,17 @@ public boolean satisfiedBy(@Nonnull PsiElement element) {
                 return false;
             }
 
-            final PsiComment comment = (PsiComment)element;
-            final IElementType type = comment.getTokenType();
+            PsiComment comment = (PsiComment)element;
+            IElementType type = comment.getTokenType();
 
             if (!(JSTokenTypes.C_STYLE_COMMENT.equals(type) || JSTokenTypes.C_STYLE_COMMENT.equals(type))) {
                 return false;
             }
-            final PsiElement sibling = TreeUtil.getNextLeaf(comment);
+            PsiElement sibling = TreeUtil.getNextLeaf(comment);
             if (!(sibling instanceof PsiWhiteSpace)) {
                 return false;
             }
-            final String whitespaceText = sibling.getText();
+            String whitespaceText = sibling.getText();
             return whitespaceText.indexOf((int)'\n') >= 0 || whitespaceText.indexOf((int)'\r') >= 0;
         }
     }
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSMoveCommentToSeparateLineIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSMoveCommentToSeparateLineIntention.java
index 88b48b9d..12d0ebf8 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSMoveCommentToSeparateLineIntention.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/comment/JSMoveCommentToSeparateLineIntention.java
@@ -54,9 +54,9 @@ protected JSElementPredicate getElementPredicate() {
     @Override
     @RequiredReadAction
     public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException {
-        final PsiComment selectedComment = (PsiComment)element;
+        PsiComment selectedComment = (PsiComment)element;
         PsiElement elementToCheck = selectedComment;
-        final PsiWhiteSpace whiteSpace;
+        PsiWhiteSpace whiteSpace;
 
         while (true) {
             elementToCheck = TreeUtil.getPrevLeaf(elementToCheck);
@@ -91,26 +91,26 @@ public boolean satisfiedBy(@Nonnull PsiElement element) {
             if (!(element instanceof PsiComment)) {
                 return false;
             }
-            final PsiComment comment = (PsiComment)element;
-            final IElementType type = comment.getTokenType();
+            PsiComment comment = (PsiComment)element;
+            IElementType type = comment.getTokenType();
 
             if (!(JSTokenTypes.C_STYLE_COMMENT.equals(type) || JSTokenTypes.END_OF_LINE_COMMENT.equals(type))) {
                 return false; // can't move JSP comments
             }
 
-            final PsiElement prevSibling = TreeUtil.getPrevLeaf(element);
+            PsiElement prevSibling = TreeUtil.getPrevLeaf(element);
             if (!(prevSibling instanceof PsiWhiteSpace)) {
                 return true;
             }
-            final String prevSiblingText = prevSibling.getText();
+            String prevSiblingText = prevSibling.getText();
             if (prevSiblingText.indexOf('\n') < 0 && prevSiblingText.indexOf('\r') < 0) {
                 return true;
             }
-            final PsiElement nextSibling = TreeUtil.getNextLeaf(element);
+            PsiElement nextSibling = TreeUtil.getNextLeaf(element);
             if (!(nextSibling instanceof PsiWhiteSpace)) {
                 return true;
             }
-            final String nextSiblingText = nextSibling.getText();
+            String nextSiblingText = nextSibling.getText();
             return (nextSiblingText.indexOf('\n') < 0 && nextSiblingText.indexOf('\r') < 0);
         }
     }
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipConditionalIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipConditionalIntention.java
index afdf85b4..0b1b6af9 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipConditionalIntention.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipConditionalIntention.java
@@ -54,15 +54,15 @@ public JSElementPredicate getElementPredicate() {
     @Override
     @RequiredReadAction
     public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException {
-        final JSConditionalExpression exp = (JSConditionalExpression)element;
-        final JSExpression condition = exp.getCondition();
-        final JSExpression elseExpression = exp.getElse();
-        final JSExpression thenExpression = exp.getThen();
+        JSConditionalExpression exp = (JSConditionalExpression)element;
+        JSExpression condition = exp.getCondition();
+        JSExpression elseExpression = exp.getElse();
+        JSExpression thenExpression = exp.getThen();
 
         assert (elseExpression != null);
         assert (thenExpression != null);
 
-        final String newExpression = BoolUtils.getNegatedExpressionText(condition) + '?' +
+        String newExpression = BoolUtils.getNegatedExpressionText(condition) + '?' +
             elseExpression.getText() + ':' + thenExpression.getText();
 
         JSElementFactory.replaceExpression(exp, newExpression);
@@ -75,7 +75,7 @@ public boolean satisfiedBy(@Nonnull PsiElement element) {
                 return false;
             }
 
-            final JSConditionalExpression condition = (JSConditionalExpression)element;
+            JSConditionalExpression condition = (JSConditionalExpression)element;
 
             return condition.getCondition() != null && condition.getThen() != null && condition.getElse() != null;
         }
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipIfIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipIfIntention.java
index 7f0ae331..52f78d4c 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipIfIntention.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSFlipIfIntention.java
@@ -55,17 +55,17 @@ public JSElementPredicate getElementPredicate() {
     @Override
     @RequiredReadAction
     public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException {
-        final JSIfStatement exp = (JSIfStatement)element;
-        final JSExpression condition = exp.getCondition();
-        final JSStatement thenBranch = exp.getThen();
-        final JSStatement elseBranch = exp.getElse();
-        final String negatedText = BoolUtils.getNegatedExpressionText(condition);
-        final boolean emptyThenBranch =
+        JSIfStatement exp = (JSIfStatement)element;
+        JSExpression condition = exp.getCondition();
+        JSStatement thenBranch = exp.getThen();
+        JSStatement elseBranch = exp.getElse();
+        String negatedText = BoolUtils.getNegatedExpressionText(condition);
+        boolean emptyThenBranch =
             (thenBranch == null || (thenBranch instanceof JSBlockStatement blockStatement && blockStatement.getStatements().length == 0));
-        final String thenText = emptyThenBranch ? "" : "else " + thenBranch.getText();
-        final String elseText = elseBranch == null ? "{}" : elseBranch.getText();
+        String thenText = emptyThenBranch ? "" : "else " + thenBranch.getText();
+        String elseText = elseBranch == null ? "{}" : elseBranch.getText();
 
-        final String newStatement = "if (" + negatedText + ')' + elseText + thenText;
+        String newStatement = "if (" + negatedText + ')' + elseText + thenText;
 
         JSElementFactory.replaceStatement(exp, newStatement);
     }
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSRemoveConditionalIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSRemoveConditionalIntention.java
index 42f80dc7..9d925cb5 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSRemoveConditionalIntention.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/conditional/JSRemoveConditionalIntention.java
@@ -54,14 +54,14 @@ public JSElementPredicate getElementPredicate() {
     @Override
     @RequiredReadAction
     public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException {
-        final JSConditionalExpression exp = (JSConditionalExpression)element;
-        final JSExpression condition = exp.getCondition();
-        final JSExpression thenExpression = exp.getThen();
+        JSConditionalExpression exp = (JSConditionalExpression)element;
+        JSExpression condition = exp.getCondition();
+        JSExpression thenExpression = exp.getThen();
 
         assert (thenExpression != null);
 
-        final String thenExpressionText = thenExpression.getText();
-        final String newExpression;
+        String thenExpressionText = thenExpression.getText();
+        String newExpression;
 
         newExpression = thenExpressionText.equals(BoolUtils.TRUE)
             ? condition.getText()
@@ -74,15 +74,15 @@ private static class RemoveConditionalPredicate implements JSElementPredicate {
         @RequiredReadAction
         public boolean satisfiedBy(@Nonnull PsiElement element) {
             if (element instanceof JSConditionalExpression condition && !ErrorUtil.containsError(element)) {
-                final JSExpression thenExpression = ParenthesesUtils.stripParentheses(condition.getThen());
-                final JSExpression elseExpression = ParenthesesUtils.stripParentheses(condition.getElse());
+                JSExpression thenExpression = ParenthesesUtils.stripParentheses(condition.getThen());
+                JSExpression elseExpression = ParenthesesUtils.stripParentheses(condition.getElse());
 
                 if (condition.getCondition() == null || thenExpression == null || elseExpression == null) {
                     return false;
                 }
 
-                final String thenText = thenExpression.getText();
-                final String elseText = elseExpression.getText();
+                String thenText = thenExpression.getText();
+                String elseText = elseExpression.getText();
 
                 return (BoolUtils.TRUE.equals(elseText) && BoolUtils.FALSE.equals(thenText))
                     || (BoolUtils.TRUE.equals(thenText) && BoolUtils.FALSE.equals(elseText));
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantExpressionIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantExpressionIntention.java
index b56590e9..4a3f7540 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantExpressionIntention.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantExpressionIntention.java
@@ -54,9 +54,9 @@ protected JSElementPredicate getElementPredicate() {
 
     @Override
     public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException {
-        final JSExpression expression = (JSExpression)element;
-        final Object value = ExpressionUtil.computeConstantExpression(expression);
-        final String newExpression = value instanceof String strValue
+        JSExpression expression = (JSExpression)element;
+        Object value = ExpressionUtil.computeConstantExpression(expression);
+        String newExpression = value instanceof String strValue
             ? '"' + StringUtil.escapeStringCharacters(strValue) + '"'
             : String.valueOf(value);
         JSElementFactory.replaceExpression(expression, newExpression);
@@ -68,7 +68,7 @@ public boolean satisfiedBy(@Nonnull PsiElement element) {
             if (!(element instanceof JSExpression) || ErrorUtil.containsError(element)) {
                 return false;
             }
-            final JSExpression expression = (JSExpression)element;
+            JSExpression expression = (JSExpression)element;
 
             if (element instanceof JSLiteralExpression
                 || (element instanceof JSReferenceExpression referenceExpression && referenceExpression.getQualifier() != null)
@@ -78,7 +78,7 @@ public boolean satisfiedBy(@Nonnull PsiElement element) {
                 return false;
             }
 
-            final PsiElement parent = element.getParent();
+            PsiElement parent = element.getParent();
 
             return !(parent instanceof JSExpression parentExpression && ExpressionUtil.isConstantExpression(parentExpression));
         }
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantSubexpressionIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantSubexpressionIntention.java
index a55dfbdb..c98c59ea 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantSubexpressionIntention.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/constant/JSConstantSubexpressionIntention.java
@@ -59,12 +59,12 @@ protected LocalizeValue getBasicText() {
     @Override
     @RequiredReadAction
     protected LocalizeValue getTextForElement(PsiElement element) {
-        final PsiElement parent = element.getParent();
-        final JSBinaryExpression binaryExpression = (JSBinaryExpression)(parent instanceof JSBinaryExpression ? parent : element);
-        final JSExpression lhs = binaryExpression.getLOperand();
-        final JSExpression leftSide = lhs instanceof JSBinaryExpression lhsBinaryExpression ? lhsBinaryExpression.getROperand() : lhs;
-        final IElementType operationSign = binaryExpression.getOperationSign();
-        final JSExpression rhs = binaryExpression.getROperand();
+        PsiElement parent = element.getParent();
+        JSBinaryExpression binaryExpression = (JSBinaryExpression)(parent instanceof JSBinaryExpression ? parent : element);
+        JSExpression lhs = binaryExpression.getLOperand();
+        JSExpression leftSide = lhs instanceof JSBinaryExpression lhsBinaryExpression ? lhsBinaryExpression.getROperand() : lhs;
+        IElementType operationSign = binaryExpression.getOperationSign();
+        JSExpression rhs = binaryExpression.getROperand();
 
         assert (rhs != null);
         assert (leftSide != null);
@@ -79,17 +79,17 @@ protected LocalizeValue getTextForElement(PsiElement element) {
     @Override
     @RequiredReadAction
     public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException {
-        final PsiElement parent = element.getParent();
-        final JSExpression expression = (JSExpression)(parent instanceof JSBinaryExpression ? parent : element);
+        PsiElement parent = element.getParent();
+        JSExpression expression = (JSExpression)(parent instanceof JSBinaryExpression ? parent : element);
         String newExpression = "";
-        final Object constantValue;
+        Object constantValue;
 
         if (expression instanceof JSBinaryExpression) {
-            final JSBinaryExpression binaryExpression = (JSBinaryExpression)expression;
-            final JSExpression lhs = binaryExpression.getLOperand();
+            JSBinaryExpression binaryExpression = (JSBinaryExpression)expression;
+            JSExpression lhs = binaryExpression.getLOperand();
 
             if (lhs instanceof JSBinaryExpression lhsBinaryExpression) {
-                final JSExpression rightSide = lhsBinaryExpression.getROperand();
+                JSExpression rightSide = lhsBinaryExpression.getROperand();
 
                 newExpression += getLeftSideText(lhsBinaryExpression);
 
@@ -124,30 +124,30 @@ private static String getLeftSideText(JSBinaryExpression binaryExpression) {
     @Nullable
     @RequiredReadAction
     private static JSBinaryExpression getSubexpression(JSBinaryExpression expression) {
-        final JSExpression rhs = expression.getROperand();
-        final IElementType sign = expression.getOperationSign();
-        final int parentPrecendence = ParenthesesUtils.getPrecendence(expression);
+        JSExpression rhs = expression.getROperand();
+        IElementType sign = expression.getOperationSign();
+        int parentPrecendence = ParenthesesUtils.getPrecendence(expression);
 
         if (rhs == null) {
             return null;
         }
 
-        final JSExpression lhs = expression.getLOperand();
+        JSExpression lhs = expression.getLOperand();
 
         if (!(lhs instanceof JSBinaryExpression)) {
             return expression;
         }
 
-        final JSBinaryExpression lhsBinaryExpression = (JSBinaryExpression)lhs;
-        final int childPrecendence = ParenthesesUtils.getPrecendence(lhsBinaryExpression);
-        final JSExpression leftSide = lhsBinaryExpression.getROperand();
+        JSBinaryExpression lhsBinaryExpression = (JSBinaryExpression)lhs;
+        int childPrecendence = ParenthesesUtils.getPrecendence(lhsBinaryExpression);
+        JSExpression leftSide = lhsBinaryExpression.getROperand();
 
         if (leftSide == null || parentPrecendence > childPrecendence) {
             return null;
         }
 
         try {
-            final String subExpressionText = leftSide.getText() + BinaryOperatorUtils.getOperatorText(sign) + rhs.getText();
+            String subExpressionText = leftSide.getText() + BinaryOperatorUtils.getOperatorText(sign) + rhs.getText();
             return (JSBinaryExpression)JSChangeUtil.createExpressionFromText(expression.getProject(), subExpressionText);
         }
         catch (Throwable ignore) {
@@ -174,9 +174,9 @@ public boolean satisfiedBy(@Nonnull PsiElement element) {
                     return false;
                 }
             }
-            final JSBinaryExpression binaryExpression = (JSBinaryExpression)parent;
+            JSBinaryExpression binaryExpression = (JSBinaryExpression)parent;
 
-            final JSBinaryExpression subexpression = getSubexpression(binaryExpression);
+            JSBinaryExpression subexpression = getSubexpression(binaryExpression);
             if (subexpression == null) {
                 return false;
             }
@@ -189,7 +189,7 @@ public boolean satisfiedBy(@Nonnull PsiElement element) {
         }
 
         private static boolean isPartOfConstantExpression(JSBinaryExpression binaryExpression) {
-            final PsiElement containingElement = binaryExpression.getParent();
+            PsiElement containingElement = binaryExpression.getParent();
 
             return containingElement instanceof JSExpression expression && ExpressionUtil.isConstantExpression(expression);
         }
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/increment/JSExtractIncrementIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/increment/JSExtractIncrementIntention.java
index bfbdf265..73faa4da 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/increment/JSExtractIncrementIntention.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/increment/JSExtractIncrementIntention.java
@@ -57,11 +57,11 @@ public JSElementPredicate getElementPredicate() {
     @Override
     @RequiredReadAction
     public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException {
-        final boolean isPostfix = (element instanceof JSPostfixExpression);
-        final JSExpression operand = isPostfix
+        boolean isPostfix = (element instanceof JSPostfixExpression);
+        JSExpression operand = isPostfix
             ? ((JSPostfixExpression)element).getExpression()
             : ((JSPrefixExpression)element).getExpression();
-        final JSStatement statement = TreeUtil.getParentOfType(element, JSStatement.class);
+        JSStatement statement = TreeUtil.getParentOfType(element, JSStatement.class);
 
         assert (statement != null);
 
@@ -90,7 +90,7 @@ public boolean satisfiedBy(@Nonnull PsiElement element) {
                 return false;
             }
 
-            final JSStatement containingStatement = TreeUtil.getParentOfType(element, JSStatement.class);
+            JSStatement containingStatement = TreeUtil.getParentOfType(element, JSStatement.class);
 
             if (element instanceof JSPostfixExpression
                 && (containingStatement instanceof JSReturnStatement || containingStatement instanceof JSThrowStatement)) {
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSMergeDeclarationAndInitializationIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSMergeDeclarationAndInitializationIntention.java
index 1c84429b..405df98c 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSMergeDeclarationAndInitializationIntention.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSMergeDeclarationAndInitializationIntention.java
@@ -56,23 +56,23 @@ protected JSElementPredicate getElementPredicate() {
     public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException {
         assert (element instanceof JSVarStatement);
 
-        final JSVarStatement varStatement = (JSVarStatement)element;
+        JSVarStatement varStatement = (JSVarStatement)element;
         StringBuilder declarationBuffer = new StringBuilder();
 
-        for (final JSVariable variable : varStatement.getVariables()) {
+        for (JSVariable variable : varStatement.getVariables()) {
             if (variable.hasInitializer()) {
                 declarationBuffer.append(declarationBuffer.isEmpty() ? "var " : ", ")
                     .append(variable.getName()).append(" = ").append(variable.getInitializer().getText());
             }
             else {
-                final Iterator referenceIterator =
+                Iterator referenceIterator =
                     FindReferenceUtil.getReferencesAfter(variable, variable.getTextRange().getEndOffset()).iterator();
-                final JSReferenceExpression firstReference =
+                JSReferenceExpression firstReference =
                     (JSReferenceExpression)(referenceIterator.hasNext() ? referenceIterator.next() : null);
                 //final JSReferenceExpression firstReference = FindReferenceUtil.findFirstReference(variable);
 
                 if (firstReference != null && firstReference.getParent() instanceof JSDefinitionExpression definitionExpression) {
-                    final JSExpressionStatement assignmentStatement = (JSExpressionStatement)definitionExpression.getParent().getParent();
+                    JSExpressionStatement assignmentStatement = (JSExpressionStatement)definitionExpression.getParent().getParent();
 
                     // Replace assignment statement by var statement.
                     JSElementFactory.replaceStatement(assignmentStatement, "var " + assignmentStatement.getText());
@@ -104,9 +104,9 @@ public boolean satisfiedBy(@Nonnull PsiElement element) {
                         continue;
                     }
 
-                    final Iterator referenceIterator =
+                    Iterator referenceIterator =
                         FindReferenceUtil.getReferencesAfter(variable, variable.getTextRange().getEndOffset()).iterator();
-                    final JSReferenceExpression firstReference =
+                    JSReferenceExpression firstReference =
                         (JSReferenceExpression)(referenceIterator.hasNext() ? referenceIterator.next() : null);
 
                     if (firstReference != null
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSSplitDeclarationAndInitializationIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSSplitDeclarationAndInitializationIntention.java
index e710883e..a6094183 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSSplitDeclarationAndInitializationIntention.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/initialization/JSSplitDeclarationAndInitializationIntention.java
@@ -64,7 +64,7 @@ protected JSElementPredicate getElementPredicate() {
     public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException {
         assert (element instanceof JSVarStatement);
 
-        final JSVarStatement varStatement = (JSVarStatement)element;
+        JSVarStatement varStatement = (JSVarStatement)element;
         StringBuilder declarationBuffer = new StringBuilder();
         List initializations = new ArrayList<>();
 
@@ -73,7 +73,7 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat
                 .append(variable.getName());
 
             String s = JSPsiImplUtils.getTypeFromDeclaration(variable);
-            final PsiFile containingFile = element.getContainingFile();
+            PsiFile containingFile = element.getContainingFile();
 
             if (s == null && containingFile.getLanguage() == JavaScriptSupportLoader.ECMA_SCRIPT_L4) {
                 s = JSResolveUtil.getExpressionType(variable.getInitializer(), containingFile);
@@ -91,7 +91,7 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat
         // Do replacement.
         JSStatement newStatement = JSElementFactory.replaceStatement(varStatement, declarationBuffer.toString());
 
-        for (final String initialization : initializations) {
+        for (String initialization : initializations) {
             newStatement = JSElementFactory.addStatementAfter(newStatement, initialization);
         }
     }
@@ -108,7 +108,7 @@ public boolean satisfiedBy(@Nonnull PsiElement element) {
                 return false;
             }
 
-            final JSVarStatement varStatement = (JSVarStatement)element;
+            JSVarStatement varStatement = (JSVarStatement)element;
             if (ErrorUtil.containsError(varStatement)) {
                 return false;
             }
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForInLoopsIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForInLoopsIntention.java
index a0821dd4..bb50ad48 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForInLoopsIntention.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForInLoopsIntention.java
@@ -58,13 +58,13 @@ public JSElementPredicate getElementPredicate() {
     @Override
     @RequiredReadAction
     public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException {
-        final PsiElement nextElement = JSElementFactory.getNonWhiteSpaceSibling(element, true);
+        PsiElement nextElement = JSElementFactory.getNonWhiteSpaceSibling(element, true);
 
         assert (nextElement != null);
 
-        final JSForInStatement firstStatement = (JSForInStatement)element;
-        final JSForInStatement secondStatement = (JSForInStatement)nextElement;
-        final StringBuilder statementBuffer = new StringBuilder();
+        JSForInStatement firstStatement = (JSForInStatement)element;
+        JSForInStatement secondStatement = (JSForInStatement)nextElement;
+        StringBuilder statementBuffer = new StringBuilder();
 
         this.mergeForInStatements(statementBuffer, firstStatement, secondStatement);
         JSElementFactory.replaceStatement(firstStatement, statementBuffer.toString());
@@ -73,11 +73,11 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat
 
     @RequiredReadAction
     private void mergeForInStatements(StringBuilder statementBuffer, JSForInStatement firstStatement, JSForInStatement secondStatement) {
-        final JSExpression variableExpression = getVariableExpression(firstStatement);
-        final JSVarStatement declaration = firstStatement.getDeclarationStatement();
-        final JSExpression collectionExpression = getCollectionExpression(firstStatement);
-        final JSStatement firstBody = firstStatement.getBody();
-        final JSStatement secondBody = secondStatement.getBody();
+        JSExpression variableExpression = getVariableExpression(firstStatement);
+        JSVarStatement declaration = firstStatement.getDeclarationStatement();
+        JSExpression collectionExpression = getCollectionExpression(firstStatement);
+        JSStatement firstBody = firstStatement.getBody();
+        JSStatement secondBody = secondStatement.getBody();
 
         statementBuffer.append("for (")
             .append((declaration == null) ? variableExpression.getText() : declaration.getText())
@@ -98,26 +98,26 @@ public boolean satisfiedBy(@Nonnull PsiElement element) {
         }
 
         public static boolean forInStatementsCanBeMerged(JSForInStatement statement1, JSForInStatement statement2) {
-            final JSExpression firstVarExpression = getVariableExpression(statement1);
-            final JSExpression secondVarExpression = getVariableExpression(statement2);
+            JSExpression firstVarExpression = getVariableExpression(statement1);
+            JSExpression secondVarExpression = getVariableExpression(statement2);
             if (!EquivalenceChecker.expressionsAreEquivalent(firstVarExpression, secondVarExpression)) {
                 return false;
             }
 
-            final JSVarStatement firstDeclaration = statement1.getDeclarationStatement();
-            final JSVarStatement secondDeclaration = statement2.getDeclarationStatement();
+            JSVarStatement firstDeclaration = statement1.getDeclarationStatement();
+            JSVarStatement secondDeclaration = statement2.getDeclarationStatement();
             if (!EquivalenceChecker.statementsAreEquivalent(firstDeclaration, secondDeclaration)) {
                 return false;
             }
 
-            final JSExpression firstCollection = getCollectionExpression(statement1);
-            final JSExpression secondCollection = getCollectionExpression(statement2);
+            JSExpression firstCollection = getCollectionExpression(statement1);
+            JSExpression secondCollection = getCollectionExpression(statement2);
             if (!EquivalenceChecker.expressionsAreEquivalent(firstCollection, secondCollection)) {
                 return false;
             }
 
-            final JSStatement firstBody = statement1.getBody();
-            final JSStatement secondBody = statement2.getBody();
+            JSStatement firstBody = statement1.getBody();
+            JSStatement secondBody = statement2.getBody();
             return firstBody == null || secondBody == null || ControlFlowUtils.canBeMerged(firstBody, secondBody);
         }
     }
@@ -129,7 +129,7 @@ public static boolean forInStatementsCanBeMerged(JSForInStatement statement1, JS
      * @return the for-in statement collection expression
      */
     private static JSExpression getCollectionExpression(JSForInStatement forInStatement) {
-        final ASTNode statementNode = forInStatement.getNode();
+        ASTNode statementNode = forInStatement.getNode();
         ASTNode child = (statementNode == null) ? null : statementNode.getFirstChildNode();
         boolean inPassed = false;
 
@@ -153,7 +153,7 @@ private static JSExpression getCollectionExpression(JSForInStatement forInStatem
      * @return the for-in statement collection expression
      */
     private static JSExpression getVariableExpression(JSForInStatement forInStatement) {
-        final ASTNode statementNode = forInStatement.getNode();
+        ASTNode statementNode = forInStatement.getNode();
         ASTNode child = (statementNode == null) ? null : statementNode.getFirstChildNode();
 
         while (child != null) {
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForLoopsIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForLoopsIntention.java
index 9717648e..4289c261 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForLoopsIntention.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/loop/JSMergeParallelForLoopsIntention.java
@@ -56,13 +56,13 @@ public JSElementPredicate getElementPredicate() {
     @Override
     @RequiredReadAction
     public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException {
-        final PsiElement nextElement = JSElementFactory.getNonWhiteSpaceSibling(element, true);
+        PsiElement nextElement = JSElementFactory.getNonWhiteSpaceSibling(element, true);
 
         assert (nextElement != null);
 
-        final JSForStatement firstStatement = (JSForStatement)element;
-        final JSForStatement secondStatement = (JSForStatement)nextElement;
-        final StringBuilder statementBuffer = new StringBuilder();
+        JSForStatement firstStatement = (JSForStatement)element;
+        JSForStatement secondStatement = (JSForStatement)nextElement;
+        StringBuilder statementBuffer = new StringBuilder();
 
         this.mergeForStatements(statementBuffer, firstStatement, secondStatement);
         JSElementFactory.replaceStatement(firstStatement, statementBuffer.toString());
@@ -71,12 +71,12 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat
 
     @RequiredReadAction
     private void mergeForStatements(StringBuilder statementBuffer, JSForStatement firstStatement, JSForStatement secondStatement) {
-        final JSExpression initialization = firstStatement.getInitialization();
-        final JSVarStatement varStatement = firstStatement.getVarDeclaration();
-        final JSExpression condition = firstStatement.getCondition();
-        final JSExpression update = firstStatement.getUpdate();
-        final JSStatement firstBody = firstStatement.getBody();
-        final JSStatement secondBody = secondStatement.getBody();
+        JSExpression initialization = firstStatement.getInitialization();
+        JSVarStatement varStatement = firstStatement.getVarDeclaration();
+        JSExpression condition = firstStatement.getCondition();
+        JSExpression update = firstStatement.getUpdate();
+        JSStatement firstBody = firstStatement.getBody();
+        JSStatement secondBody = secondStatement.getBody();
 
         statementBuffer.append("for (")
             .append((initialization == null) ? varStatement.getText() : initialization.getText())
@@ -99,32 +99,32 @@ public boolean satisfiedBy(@Nonnull PsiElement element) {
         }
 
         public static boolean forStatementsCanBeMerged(JSForStatement statement1, JSForStatement statement2) {
-            final JSExpression firstInitialization = statement1.getInitialization();
-            final JSExpression secondInitialization = statement2.getInitialization();
+            JSExpression firstInitialization = statement1.getInitialization();
+            JSExpression secondInitialization = statement2.getInitialization();
             if (!EquivalenceChecker.expressionsAreEquivalent(firstInitialization, secondInitialization)) {
                 return false;
             }
 
-            final JSVarStatement firstVarStatement = statement1.getVarDeclaration();
-            final JSVarStatement secondVarStatement = statement2.getVarDeclaration();
+            JSVarStatement firstVarStatement = statement1.getVarDeclaration();
+            JSVarStatement secondVarStatement = statement2.getVarDeclaration();
             if (!EquivalenceChecker.statementsAreEquivalent(firstVarStatement, secondVarStatement)) {
                 return false;
             }
 
-            final JSExpression firstCondition = statement1.getCondition();
-            final JSExpression secondCondition = statement2.getCondition();
+            JSExpression firstCondition = statement1.getCondition();
+            JSExpression secondCondition = statement2.getCondition();
             if (!EquivalenceChecker.expressionsAreEquivalent(firstCondition, secondCondition)) {
                 return false;
             }
 
-            final JSExpression firstUpdate = statement1.getUpdate();
-            final JSExpression secondUpdate = statement2.getUpdate();
+            JSExpression firstUpdate = statement1.getUpdate();
+            JSExpression secondUpdate = statement2.getUpdate();
             if (!EquivalenceChecker.expressionsAreEquivalent(firstUpdate, secondUpdate)) {
                 return false;
             }
 
-            final JSStatement firstBody = statement1.getBody();
-            final JSStatement secondBody = statement2.getBody();
+            JSStatement firstBody = statement1.getBody();
+            JSStatement secondBody = statement2.getBody();
             return (firstBody == null || secondBody == null || ControlFlowUtils.canBeMerged(firstBody, secondBody));
         }
     }
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToDecimalIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToDecimalIntention.java
index a312b38a..6d0abc25 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToDecimalIntention.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToDecimalIntention.java
@@ -50,7 +50,7 @@ public JSElementPredicate getElementPredicate() {
 
     @Override
     public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException {
-        final JSLiteralExpression exp = (JSLiteralExpression)element;
+        JSLiteralExpression exp = (JSLiteralExpression)element;
 
         JSElementFactory.replaceExpression(exp, NumberUtil.getLiteralNumber(exp).toString());
     }
@@ -63,7 +63,7 @@ public boolean satisfiedBy(@Nonnull PsiElement element) {
                 return false;
             }
 
-            final String elementText = element.getText();
+            String elementText = element.getText();
 
             return NumberUtil.isHex(elementText) || NumberUtil.isOctal(elementText);
         }
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToHexIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToHexIntention.java
index bece8d28..b039d78c 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToHexIntention.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToHexIntention.java
@@ -50,7 +50,7 @@ public JSElementPredicate getElementPredicate() {
 
     @Override
     public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException {
-        final JSLiteralExpression exp = (JSLiteralExpression)element;
+        JSLiteralExpression exp = (JSLiteralExpression)element;
 
         JSElementFactory.replaceExpression(exp, "0x" + NumberUtil.getLiteralNumber(exp).toString(16));
     }
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToOctalIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToOctalIntention.java
index 5455e906..00ab0b65 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToOctalIntention.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSConvertIntegerToOctalIntention.java
@@ -50,7 +50,7 @@ public JSElementPredicate getElementPredicate() {
 
     @Override
     public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException {
-        final JSLiteralExpression exp = (JSLiteralExpression)element;
+        JSLiteralExpression exp = (JSLiteralExpression)element;
 
         JSElementFactory.replaceExpression(exp, '0' + NumberUtil.getLiteralNumber(exp).toString(8));
     }
@@ -63,7 +63,7 @@ public boolean satisfiedBy(@Nonnull PsiElement element) {
                 return false;
             }
 
-            final String elementText = element.getText();
+            String elementText = element.getText();
 
             return NumberUtil.isHex(elementText) || (NumberUtil.isDecimal(elementText) && !NumberUtil.isOctal(elementText));
         }
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceMultiplyWithShiftIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceMultiplyWithShiftIntention.java
index 556c7d8b..2a41a99b 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceMultiplyWithShiftIntention.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceMultiplyWithShiftIntention.java
@@ -48,8 +48,8 @@ protected LocalizeValue getBasicText() {
     @Override
     @RequiredReadAction
     protected LocalizeValue getTextForElement(PsiElement element) {
-        final IElementType tokenType = ((JSBinaryExpression)element).getOperationSign();
-        final String operatorString;
+        IElementType tokenType = ((JSBinaryExpression)element).getOperationSign();
+        String operatorString;
 
         if (element instanceof JSAssignmentExpression) {
             operatorString = JSTokenTypes.MULTEQ.equals(tokenType) ? "<<=" : ">>=";
@@ -80,11 +80,11 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat
 
     @RequiredReadAction
     private void replaceMultiplyOrDivideAssignWithShiftAssign(JSAssignmentExpression exp) throws IncorrectOperationException {
-        final JSExpression lhs = exp.getLOperand();
-        final JSExpression rhs = exp.getROperand();
-        final IElementType tokenType = exp.getOperationSign();
-        final String assignString = JSTokenTypes.MULTEQ.equals(tokenType) ? "<<=" : ">>=";
-        final String expString = lhs.getText() + assignString + ShiftUtils.getLogBase2(rhs);
+        JSExpression lhs = exp.getLOperand();
+        JSExpression rhs = exp.getROperand();
+        IElementType tokenType = exp.getOperationSign();
+        String assignString = JSTokenTypes.MULTEQ.equals(tokenType) ? "<<=" : ">>=";
+        String expString = lhs.getText() + assignString + ShiftUtils.getLogBase2(rhs);
 
         JSElementFactory.replaceExpression(exp, expString);
     }
@@ -93,8 +93,8 @@ private void replaceMultiplyOrDivideAssignWithShiftAssign(JSAssignmentExpression
     private void replaceMultiplyOrDivideWithShift(JSBinaryExpression exp) throws IncorrectOperationException {
         JSExpression lhs = exp.getLOperand();
         JSExpression rhs = exp.getROperand();
-        final IElementType tokenType = exp.getOperationSign();
-        final String operatorString = JSTokenTypes.MULT.equals(tokenType) ? "<<" : ">>";
+        IElementType tokenType = exp.getOperationSign();
+        String operatorString = JSTokenTypes.MULT.equals(tokenType) ? "<<" : ">>";
 
         if (ShiftUtils.isPowerOfTwo(lhs) && JSTokenTypes.MULT.equals(tokenType)) {
             JSExpression swap = lhs;
@@ -103,9 +103,9 @@ private void replaceMultiplyOrDivideWithShift(JSBinaryExpression exp) throws Inc
             rhs = swap;
         }
 
-        final String lhsText = ParenthesesUtils.getParenthesized(lhs, ParenthesesUtils.SHIFT_PRECENDENCE);
+        String lhsText = ParenthesesUtils.getParenthesized(lhs, ParenthesesUtils.SHIFT_PRECENDENCE);
         String expString = lhsText + operatorString + ShiftUtils.getLogBase2(rhs);
-        final JSElement parent = (JSElement)exp.getParent();
+        JSElement parent = (JSElement)exp.getParent();
 
         if (parent != null && parent instanceof JSExpression parentExpression && !(parent instanceof JSParenthesizedExpression)
             && ParenthesesUtils.getPrecendence(parentExpression) < ParenthesesUtils.SHIFT_PRECENDENCE) {
@@ -125,27 +125,27 @@ public boolean satisfiedBy(@Nonnull PsiElement element) {
 
         @RequiredReadAction
         private static boolean isMultiplyByPowerOfTwo(JSAssignmentExpression expression) {
-            final IElementType operator = expression.getOperationSign();
+            IElementType operator = expression.getOperationSign();
 
             if (operator == null || !(operator.equals(JSTokenTypes.MULTEQ) || operator.equals(JSTokenTypes.DIVEQ))) {
                 return false;
             }
 
-            final JSExpression rightExpression = expression.getROperand();
+            JSExpression rightExpression = expression.getROperand();
 
             return rightExpression != null && ShiftUtils.isPowerOfTwo(rightExpression);
         }
 
         @RequiredReadAction
         private static boolean isMultiplyByPowerOfTwo(JSBinaryExpression expression) {
-            final IElementType operator = expression.getOperationSign();
+            IElementType operator = expression.getOperationSign();
 
             if (operator == null || !(JSTokenTypes.MULT.equals(operator) || JSTokenTypes.DIV.equals(operator))) {
                 return false;
             }
 
-            final JSExpression leftOperand = expression.getLOperand();
-            final JSExpression rightOperand = expression.getROperand();
+            JSExpression leftOperand = expression.getLOperand();
+            JSExpression rightOperand = expression.getROperand();
 
             return leftOperand != null && rightOperand != null
                 && (ShiftUtils.isPowerOfTwo(leftOperand) || ShiftUtils.isPowerOfTwo(rightOperand));
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceShiftWithMultiplyIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceShiftWithMultiplyIntention.java
index 9e462d5a..ea0e3401 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceShiftWithMultiplyIntention.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/JSReplaceShiftWithMultiplyIntention.java
@@ -48,8 +48,8 @@ protected LocalizeValue getBasicText() {
     @Override
     @RequiredReadAction
     protected LocalizeValue getTextForElement(PsiElement element) {
-        final IElementType tokenType = ((JSBinaryExpression)element).getOperationSign();
-        final String operatorString;
+        IElementType tokenType = ((JSBinaryExpression)element).getOperationSign();
+        String operatorString;
 
         if (element instanceof JSAssignmentExpression) {
             operatorString = JSTokenTypes.LTLTEQ.equals(tokenType) ? "*=" : "/=";
@@ -81,25 +81,25 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat
 
     @RequiredReadAction
     private void replaceShiftAssignWithMultiplyOrDivideAssign(JSAssignmentExpression exp) throws IncorrectOperationException {
-        final JSExpression lhs = exp.getLOperand();
-        final JSExpression rhs = exp.getROperand();
-        final IElementType tokenType = exp.getOperationSign();
-        final String assignString = JSTokenTypes.LTLTEQ.equals(tokenType) ? "*=" : "/=";
+        JSExpression lhs = exp.getLOperand();
+        JSExpression rhs = exp.getROperand();
+        IElementType tokenType = exp.getOperationSign();
+        String assignString = JSTokenTypes.LTLTEQ.equals(tokenType) ? "*=" : "/=";
 
-        final String expString = lhs.getText() + assignString + ShiftUtils.getExpBase2(rhs);
+        String expString = lhs.getText() + assignString + ShiftUtils.getExpBase2(rhs);
 
         JSElementFactory.replaceExpression(exp, expString);
     }
 
     @RequiredReadAction
     private void replaceShiftWithMultiplyOrDivide(JSBinaryExpression exp) throws IncorrectOperationException {
-        final JSExpression lhs = exp.getLOperand();
-        final JSExpression rhs = exp.getROperand();
-        final IElementType tokenType = exp.getOperationSign();
-        final String operatorString = JSTokenTypes.LTLT.equals(tokenType) ? "*" : "/";
-        final String lhsText = ParenthesesUtils.getParenthesized(lhs, ParenthesesUtils.MULTIPLICATIVE_PRECENDENCE);
+        JSExpression lhs = exp.getLOperand();
+        JSExpression rhs = exp.getROperand();
+        IElementType tokenType = exp.getOperationSign();
+        String operatorString = JSTokenTypes.LTLT.equals(tokenType) ? "*" : "/";
+        String lhsText = ParenthesesUtils.getParenthesized(lhs, ParenthesesUtils.MULTIPLICATIVE_PRECENDENCE);
         String expString = lhsText + operatorString + ShiftUtils.getExpBase2(rhs);
-        final JSElement parent = (JSElement)exp.getParent();
+        JSElement parent = (JSElement)exp.getParent();
 
         if (parent != null && parent instanceof JSExpression parentExpression && !(parent instanceof JSParenthesizedExpression)
             && ParenthesesUtils.getPrecendence(parentExpression) < ParenthesesUtils.MULTIPLICATIVE_PRECENDENCE) {
@@ -119,20 +119,20 @@ public boolean satisfiedBy(@Nonnull PsiElement element) {
 
         @RequiredReadAction
         private boolean isAssignmentShiftByLiteral(JSAssignmentExpression expression) {
-            final IElementType tokenType = expression.getOperationSign();
+            IElementType tokenType = expression.getOperationSign();
 
             if (tokenType == null || !(JSTokenTypes.LTLTEQ.equals(tokenType) || JSTokenTypes.GTGTEQ.equals(tokenType))) {
                 return false;
             }
 
-            final JSExpression rhs = expression.getROperand();
+            JSExpression rhs = expression.getROperand();
 
             return rhs != null && ShiftUtils.isIntLiteral(rhs);
         }
 
         @RequiredReadAction
         private boolean isBinaryShiftByLiteral(JSBinaryExpression expression) {
-            final IElementType tokenType = expression.getOperationSign();
+            IElementType tokenType = expression.getOperationSign();
 
             return (JSTokenTypes.LTLT.equals(tokenType) || JSTokenTypes.GTGT.equals(tokenType))
                 && ShiftUtils.isIntLiteral(expression.getROperand());
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/ShiftUtils.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/ShiftUtils.java
index 9974fce8..67dc1b84 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/ShiftUtils.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/number/ShiftUtils.java
@@ -26,7 +26,7 @@ public static boolean isPowerOfTwo(JSExpression expression) {
         if (!(expression instanceof JSLiteralExpression)) {
             return false;
         }
-        final String value = expression.getText();
+        String value = expression.getText();
         long intValue;
 
         try {
@@ -46,7 +46,7 @@ public static boolean isPowerOfTwo(JSExpression expression) {
     }
 
     public static int getLogBase2(JSExpression rhs) {
-        final String value = rhs.getText();
+        String value = rhs.getText();
         long intValue;
 
         try {
@@ -66,8 +66,8 @@ public static int getLogBase2(JSExpression rhs) {
     }
 
     public static int getExpBase2(JSExpression rhs) {
-        final String value = rhs.getText();
-        final long intValue;
+        String value = rhs.getText();
+        long intValue;
 
         try {
             intValue = Integer.decode(value).longValue();
@@ -89,7 +89,7 @@ public static boolean isIntLiteral(JSExpression expression) {
             return false;
         }
 
-        final String value = expression.getText();
+        String value = expression.getText();
 
         try {
             Integer.decode(value);
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/opassign/JSReplaceWithOperatorAssignmentIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/opassign/JSReplaceWithOperatorAssignmentIntention.java
index 675499c0..21480878 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/opassign/JSReplaceWithOperatorAssignmentIntention.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/opassign/JSReplaceWithOperatorAssignmentIntention.java
@@ -49,10 +49,10 @@ protected LocalizeValue getBasicText() {
     @Override
     @RequiredReadAction
     public LocalizeValue getTextForElement(PsiElement element) {
-        final JSAssignmentExpression exp = (JSAssignmentExpression)element;
-        final JSBinaryExpression rhs = (JSBinaryExpression)exp.getROperand();
+        JSAssignmentExpression exp = (JSAssignmentExpression)element;
+        JSBinaryExpression rhs = (JSBinaryExpression)exp.getROperand();
         assert (rhs != null);
-        final IElementType sign = rhs.getOperationSign();
+        IElementType sign = rhs.getOperationSign();
 
         return JSIntentionLocalize.opassignReplaceWithOperatorAssignmentMessage(BinaryOperatorUtils.getOperatorText(sign));
     }
@@ -66,15 +66,15 @@ public JSElementPredicate getElementPredicate() {
     @Override
     @RequiredReadAction
     public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException {
-        final JSAssignmentExpression exp = (JSAssignmentExpression)element;
-        final JSBinaryExpression rhs = (JSBinaryExpression)exp.getROperand();
-        final JSExpression lhs = exp.getLOperand();
+        JSAssignmentExpression exp = (JSAssignmentExpression)element;
+        JSBinaryExpression rhs = (JSBinaryExpression)exp.getROperand();
+        JSExpression lhs = exp.getLOperand();
 
         assert (rhs != null);
 
-        final IElementType sign = rhs.getOperationSign();
-        final String operand = BinaryOperatorUtils.getOperatorText(sign);
-        final JSExpression rhsrhs = rhs.getROperand();
+        IElementType sign = rhs.getOperationSign();
+        String operand = BinaryOperatorUtils.getOperatorText(sign);
+        JSExpression rhsrhs = rhs.getROperand();
 
         assert (rhsrhs != null);
 
@@ -88,13 +88,13 @@ public boolean satisfiedBy(@Nonnull PsiElement element) {
             if (!(element instanceof JSAssignmentExpression) || ErrorUtil.containsError(element)) {
                 return false;
             }
-            final JSAssignmentExpression assignment = (JSAssignmentExpression)element;
-            final IElementType tokenType = assignment.getOperationSign();
+            JSAssignmentExpression assignment = (JSAssignmentExpression)element;
+            IElementType tokenType = assignment.getOperationSign();
             if (!JSTokenTypes.EQ.equals(tokenType)) {
                 return false;
             }
             JSExpression lhs = assignment.getLOperand();
-            final JSExpression rhs = assignment.getROperand();
+            JSExpression rhs = assignment.getROperand();
 
             if (lhs instanceof JSDefinitionExpression definitionExpression) {
                 lhs = definitionExpression.getExpression();
@@ -102,15 +102,15 @@ public boolean satisfiedBy(@Nonnull PsiElement element) {
             if (lhs == null || !(rhs instanceof JSBinaryExpression)) {
                 return false;
             }
-            final JSBinaryExpression binaryRhs = (JSBinaryExpression)rhs;
-            final JSExpression rhsRhs = binaryRhs.getROperand();
-            final JSExpression rhsLhs = binaryRhs.getLOperand();
+            JSBinaryExpression binaryRhs = (JSBinaryExpression)rhs;
+            JSExpression rhsRhs = binaryRhs.getROperand();
+            JSExpression rhsLhs = binaryRhs.getLOperand();
 
             if (rhsRhs == null) {
                 return false;
             }
 
-            final IElementType rhsTokenType = binaryRhs.getOperationSign();
+            IElementType rhsTokenType = binaryRhs.getOperationSign();
 
             return !JSTokenTypes.OROR.equals(rhsTokenType)
                 && !JSTokenTypes.ANDAND.equals(rhsTokenType)
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/parenthesis/JSRemoveUnnecessaryParenthesesIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/parenthesis/JSRemoveUnnecessaryParenthesesIntention.java
index 65921e48..7e8d7506 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/parenthesis/JSRemoveUnnecessaryParenthesesIntention.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/parenthesis/JSRemoveUnnecessaryParenthesesIntention.java
@@ -61,7 +61,7 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat
             exp = parentExp;
         }
 
-        final String newExpression = ParenthesesUtils.removeParentheses(exp);
+        String newExpression = ParenthesesUtils.removeParentheses(exp);
 
         JSElementFactory.replaceExpression(exp, newExpression);
     }
@@ -75,14 +75,14 @@ public boolean satisfiedBy(@Nonnull PsiElement element) {
                     return true;
                 }
 
-                final JSExpression body = expression.getInnerExpression();
+                JSExpression body = expression.getInnerExpression();
 
                 if (body instanceof JSParenthesizedExpression) {
                     return true;
                 }
 
-                final int parentPrecendence = ParenthesesUtils.getPrecendence(parentExpression);
-                final int childPrecendence = ParenthesesUtils.getPrecendence(body);
+                int parentPrecendence = ParenthesesUtils.getPrecendence(parentExpression);
+                int childPrecendence = ParenthesesUtils.getPrecendence(body);
 
                 if (parentPrecendence > childPrecendence) {
                     return !(body instanceof JSFunctionExpression);
@@ -90,9 +90,9 @@ public boolean satisfiedBy(@Nonnull PsiElement element) {
                 else if (parentPrecendence == childPrecendence
                     && parentExpression instanceof JSBinaryExpression parentBinaryExpression
                     && body instanceof JSBinaryExpression bodyBinaryExpression) {
-                    final IElementType parentOperator = parentBinaryExpression.getOperationSign();
-                    final IElementType childOperator = bodyBinaryExpression.getOperationSign();
-                    final JSExpression lhs = parentBinaryExpression.getLOperand();
+                    IElementType parentOperator = parentBinaryExpression.getOperationSign();
+                    IElementType childOperator = bodyBinaryExpression.getOperationSign();
+                    JSExpression lhs = parentBinaryExpression.getLOperand();
 
                     return lhs.equals(expression) && parentOperator.equals(childOperator);
                 }
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSDoubleToSingleQuotedStringIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSDoubleToSingleQuotedStringIntention.java
index 7c7008bb..49877e27 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSDoubleToSingleQuotedStringIntention.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSDoubleToSingleQuotedStringIntention.java
@@ -50,7 +50,7 @@ protected JSElementPredicate getElementPredicate() {
     @Override
     @RequiredReadAction
     public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException {
-        final JSLiteralExpression stringLiteral = (JSLiteralExpression)element;
+        JSLiteralExpression stringLiteral = (JSLiteralExpression)element;
 
         JSElementFactory.replaceExpression(stringLiteral, changeQuotes(stringLiteral.getText()));
     }
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSJoinConcatenatedStringLiteralsIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSJoinConcatenatedStringLiteralsIntention.java
index 475d1833..c603fcc6 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSJoinConcatenatedStringLiteralsIntention.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSJoinConcatenatedStringLiteralsIntention.java
@@ -55,17 +55,17 @@ protected JSElementPredicate getElementPredicate() {
     @Override
     @RequiredReadAction
     public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException {
-        final JSBinaryExpression expression = (JSBinaryExpression)element;
-        final JSExpression lhs = expression.getLOperand();
-        final JSExpression rhs = expression.getROperand();
+        JSBinaryExpression expression = (JSBinaryExpression)element;
+        JSExpression lhs = expression.getLOperand();
+        JSExpression rhs = expression.getROperand();
 
         assert (lhs instanceof JSLiteralExpression && rhs instanceof JSLiteralExpression);
 
-        final JSLiteralExpression leftLiteral = (JSLiteralExpression)lhs;
-        final JSLiteralExpression rightLiteral = (JSLiteralExpression)rhs;
+        JSLiteralExpression leftLiteral = (JSLiteralExpression)lhs;
+        JSLiteralExpression rightLiteral = (JSLiteralExpression)rhs;
         String lhsText = lhs.getText();
         String rhsText = rhs.getText();
-        final String newExpression;
+        String newExpression;
 
         if (StringUtil.isSimpleQuoteStringLiteral(leftLiteral)
             && StringUtil.isDoubleQuoteStringLiteral(rightLiteral)) {
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSSingleToDoubleQuotedStringIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSSingleToDoubleQuotedStringIntention.java
index 2fd021fd..b8b7a940 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSSingleToDoubleQuotedStringIntention.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/JSSingleToDoubleQuotedStringIntention.java
@@ -50,7 +50,7 @@ protected JSElementPredicate getElementPredicate() {
     @Override
     @RequiredReadAction
     public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException {
-        final JSLiteralExpression charLiteral = (JSLiteralExpression)element;
+        JSLiteralExpression charLiteral = (JSLiteralExpression)element;
 
         JSElementFactory.replaceExpression(charLiteral, changeQuotes(charLiteral.getText()));
     }
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/StringUtil.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/StringUtil.java
index 8373939b..383431ab 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/StringUtil.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/string/StringUtil.java
@@ -26,7 +26,7 @@ private StringUtil() {
     }
 
     public static boolean isSimpleQuoteStringLiteral(JSLiteralExpression expression) {
-        final String value = expression.getText();
+        String value = expression.getText();
 
         return (value != null &&
             value.charAt(0) == SIMPLE_QUOTE &&
@@ -34,7 +34,7 @@ public static boolean isSimpleQuoteStringLiteral(JSLiteralExpression expression)
     }
 
     public static boolean isDoubleQuoteStringLiteral(JSLiteralExpression expression) {
-        final String value = expression.getText();
+        String value = expression.getText();
 
         return (value != null &&
             value.charAt(0) == DOUBLE_QUOTE &&
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/CaseUtil.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/CaseUtil.java
index 0d383a6a..ada6aebc 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/CaseUtil.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/CaseUtil.java
@@ -46,7 +46,7 @@ public static boolean containsHiddenBreak(JSCaseClause caseClause) {
     }
 
     public static boolean containsHiddenBreak(List elements) {
-        for (final PsiElement element : elements) {
+        for (PsiElement element : elements) {
             if (element instanceof JSStatement statement && containsHiddenBreak(statement, true)) {
                 return true;
             }
@@ -60,7 +60,7 @@ public static boolean containsHiddenBreak(JSStatement statement) {
 
     private static boolean containsHiddenBreak(JSStatement statement, boolean isTopLevel) {
         if (statement instanceof JSBlockStatement blockStatement) {
-            for (final JSStatement childStatement : blockStatement.getStatements()) {
+            for (JSStatement childStatement : blockStatement.getStatements()) {
                 if (containsHiddenBreak(childStatement, false)) {
                     return true;
                 }
@@ -74,7 +74,7 @@ else if (statement instanceof JSBreakStatement breakStatement) {
                 return false;
             }
 
-            final String identifier = breakStatement.getLabel();
+            String identifier = breakStatement.getLabel();
 
             return (identifier == null || identifier.length() == 0);
         }
@@ -92,7 +92,7 @@ public static boolean isUsedByStatementList(JSVariable var, List ele
     }
 
     private static boolean isUsedByStatement(JSVariable var, JSElement statement) {
-        final LocalVariableUsageVisitor visitor = new LocalVariableUsageVisitor(var);
+        LocalVariableUsageVisitor visitor = new LocalVariableUsageVisitor(var);
         statement.accept(visitor);
         return visitor.isUsed();
     }
@@ -114,7 +114,7 @@ public static String findUniqueLabel(JSStatement statement, String baseName) {
         int val = 1;
 
         while (true) {
-            final String name = baseName + val;
+            String name = baseName + val;
 
             if (!checkForLabel(name, ancestor)) {
                 return name;
@@ -124,22 +124,22 @@ public static String findUniqueLabel(JSStatement statement, String baseName) {
     }
 
     private static boolean checkForLabel(String name, JSElement ancestor) {
-        final LabelSearchVisitor visitor = new LabelSearchVisitor(name);
+        LabelSearchVisitor visitor = new LabelSearchVisitor(name);
         ancestor.accept(visitor);
         return visitor.isUsed();
     }
 
     public static JSExpression getCaseExpression(JSIfStatement statement) {
-        final JSExpression condition = statement.getCondition();
-        final List possibleCaseExpressions = determinePossibleCaseExpressions(condition);
+        JSExpression condition = statement.getCondition();
+        List possibleCaseExpressions = determinePossibleCaseExpressions(condition);
 
         if (possibleCaseExpressions != null) {
-            for (final JSExpression caseExpression : possibleCaseExpressions) {
+            for (JSExpression caseExpression : possibleCaseExpressions) {
                 if (!SideEffectChecker.mayHaveSideEffects(caseExpression)) {
                     JSIfStatement statementToCheck = statement;
 
                     while (canBeMadeIntoCase(statementToCheck.getCondition(), caseExpression)) {
-                        final JSStatement elseBranch = statementToCheck.getElse();
+                        JSStatement elseBranch = statementToCheck.getElse();
 
                         if (elseBranch == null || !(elseBranch instanceof JSIfStatement)) {
                             return caseExpression;
@@ -153,13 +153,13 @@ public static JSExpression getCaseExpression(JSIfStatement statement) {
     }
 
     private static List determinePossibleCaseExpressions(JSExpression exp) {
-        final JSExpression expToCheck = ParenthesesUtils.stripParentheses(exp);
-        final List out = new ArrayList<>(10);
+        JSExpression expToCheck = ParenthesesUtils.stripParentheses(exp);
+        List out = new ArrayList<>(10);
 
         if (expToCheck instanceof JSBinaryExpression binaryExp) {
-            final IElementType operation = binaryExp.getOperationSign();
-            final JSExpression lhs = binaryExp.getLOperand();
-            final JSExpression rhs = binaryExp.getROperand();
+            IElementType operation = binaryExp.getOperationSign();
+            JSExpression lhs = binaryExp.getLOperand();
+            JSExpression rhs = binaryExp.getROperand();
 
             if (JSTokenTypes.OROR.equals(operation)) {
                 return determinePossibleCaseExpressions(lhs);
@@ -177,16 +177,16 @@ else if (JSTokenTypes.EQEQ.equals(operation)) {
     }
 
     private static boolean canBeMadeIntoCase(JSExpression exp, JSExpression caseExpression) {
-        final JSExpression expToCheck = ParenthesesUtils.stripParentheses(exp);
+        JSExpression expToCheck = ParenthesesUtils.stripParentheses(exp);
 
         if (!(expToCheck instanceof JSBinaryExpression)) {
             return false;
         }
 
-        final JSBinaryExpression binaryExp = (JSBinaryExpression)expToCheck;
-        final IElementType operation = binaryExp.getOperationSign();
-        final JSExpression leftOperand = binaryExp.getLOperand();
-        final JSExpression rightOperand = binaryExp.getROperand();
+        JSBinaryExpression binaryExp = (JSBinaryExpression)expToCheck;
+        IElementType operation = binaryExp.getOperationSign();
+        JSExpression leftOperand = binaryExp.getLOperand();
+        JSExpression rightOperand = binaryExp.getROperand();
 
         if (JSTokenTypes.OROR.equals(operation)) {
             return canBeMadeIntoCase(leftOperand, caseExpression) && canBeMadeIntoCase(rightOperand, caseExpression);
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceIfWithSwitchIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceIfWithSwitchIntention.java
index 23bf7220..84819e80 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceIfWithSwitchIntention.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceIfWithSwitchIntention.java
@@ -93,38 +93,38 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat
                 breaksNeedRelabeled = true;
             }
         }
-        final JSIfStatement statementToReplace = ifStatement;
-        final JSExpression caseExpression = CaseUtil.getCaseExpression(ifStatement);
+        JSIfStatement statementToReplace = ifStatement;
+        JSExpression caseExpression = CaseUtil.getCaseExpression(ifStatement);
 
         assert (caseExpression != null);
 
-        final StringBuilder switchStatementBuffer = new StringBuilder(1024);
+        StringBuilder switchStatementBuffer = new StringBuilder(1024);
 
         switchStatementBuffer.append("switch(").append(caseExpression.getText()).append(')')
             .append('{');
 
-        final List branches = new ArrayList<>(20);
+        List branches = new ArrayList<>(20);
 
         while (true) {
-            final Set topLevelVariables = new HashSet<>(5);
-            final Set innerVariables = new HashSet<>(5);
-            final JSExpression condition = ifStatement.getCondition();
-            final JSExpression[] labels = getValuesFromCondition(condition, caseExpression);
-            final JSStatement thenBranch = ifStatement.getThen();
+            Set topLevelVariables = new HashSet<>(5);
+            Set innerVariables = new HashSet<>(5);
+            JSExpression condition = ifStatement.getCondition();
+            JSExpression[] labels = getValuesFromCondition(condition, caseExpression);
+            JSStatement thenBranch = ifStatement.getThen();
 
             DeclarationUtils.calculateVariablesDeclared(thenBranch, topLevelVariables, innerVariables, true);
 
-            final IfStatementBranch ifBranch = new IfStatementBranch();
+            IfStatementBranch ifBranch = new IfStatementBranch();
 
             ifBranch.setInnerVariables(innerVariables);
             ifBranch.setTopLevelVariables(topLevelVariables);
             ifBranch.setStatement(thenBranch);
-            for (final JSExpression label : labels) {
+            for (JSExpression label : labels) {
                 ifBranch.addCondition(label.getText());
             }
             branches.add(ifBranch);
 
-            final JSStatement elseBranch = ifStatement.getElse();
+            JSStatement elseBranch = ifStatement.getElse();
 
             if (elseBranch instanceof JSIfStatement elseIfStatement) {
                 ifStatement = elseIfStatement;
@@ -133,12 +133,12 @@ else if (elseBranch == null) {
                 break;
             }
             else {
-                final Set elseTopLevelVariables = new HashSet<>(5);
-                final Set elseInnerVariables = new HashSet<>(5);
+                Set elseTopLevelVariables = new HashSet<>(5);
+                Set elseInnerVariables = new HashSet<>(5);
 
                 DeclarationUtils.calculateVariablesDeclared(elseBranch, elseTopLevelVariables, elseInnerVariables, true);
 
-                final IfStatementBranch elseIfBranch = new IfStatementBranch();
+                IfStatementBranch elseIfBranch = new IfStatementBranch();
 
                 elseIfBranch.setInnerVariables(elseInnerVariables);
                 elseIfBranch.setTopLevelVariables(elseTopLevelVariables);
@@ -157,13 +157,13 @@ else if (elseBranch == null) {
                 }
             }
 
-            final JSStatement branchStatement = branch.getStatement();
+            JSStatement branchStatement = branch.getStatement();
 
             if (branch.isElse()) {
                 dumpDefaultBranch(switchStatementBuffer, branchStatement, hasConflicts, breaksNeedRelabeled, labelString);
             }
             else {
-                final List conditions = branch.getConditions();
+                List conditions = branch.getConditions();
 
                 dumpBranch(switchStatementBuffer, conditions, branchStatement, hasConflicts, breaksNeedRelabeled, labelString);
             }
@@ -171,11 +171,11 @@ else if (elseBranch == null) {
 
         switchStatementBuffer.append('}');
 
-        final String switchStatementString = switchStatementBuffer.toString();
+        String switchStatementString = switchStatementBuffer.toString();
 
         if (breaksNeedRelabeled) {
-            final int length = switchStatementBuffer.length();
-            final StringBuilder out = new StringBuilder(length);
+            int length = switchStatementBuffer.length();
+            StringBuilder out = new StringBuilder(length);
 
             out.append(labelString).append(':');
             termReplace(out, breakTarget, statementToReplace, switchStatementString);
@@ -192,20 +192,20 @@ private static void termReplace(StringBuilder out, JSElement target, JSElement r
             out.append(stringToReplaceWith);
         }
         else if (target.getChildren().length != 0) {
-            final JSElement[] children = (JSElement[])target.getChildren();
-            for (final JSElement child : children) {
+            JSElement[] children = (JSElement[])target.getChildren();
+            for (JSElement child : children) {
                 termReplace(out, child, replace, stringToReplaceWith);
             }
         }
         else {
-            final String text = target.getText();
+            String text = target.getText();
             out.append(text);
         }
     }
 
     @RequiredReadAction
     private static JSExpression[] getValuesFromCondition(JSExpression condition, JSExpression caseExpression) {
-        final List values = new ArrayList<>(10);
+        List values = new ArrayList<>(10);
 
         getValuesFromExpression(condition, caseExpression, values);
         return values.toArray(new JSExpression[values.size()]);
@@ -214,9 +214,9 @@ private static JSExpression[] getValuesFromCondition(JSExpression condition, JSE
     @RequiredReadAction
     private static void getValuesFromExpression(JSExpression expression, JSExpression caseExpression, List values) {
         if (expression instanceof JSBinaryExpression binaryExpression) {
-            final JSExpression lhs = binaryExpression.getLOperand();
-            final JSExpression rhs = binaryExpression.getROperand();
-            final IElementType tokenType = binaryExpression.getOperationSign();
+            JSExpression lhs = binaryExpression.getLOperand();
+            JSExpression rhs = binaryExpression.getROperand();
+            IElementType tokenType = binaryExpression.getOperationSign();
 
             if (JSTokenTypes.OROR.equals(tokenType)) {
                 getValuesFromExpression(lhs, caseExpression, values);
@@ -230,7 +230,7 @@ else if (EquivalenceChecker.expressionsAreEquivalent(caseExpression, rhs)) {
             }
         }
         else if (expression instanceof JSParenthesizedExpression parenExpression) {
-            final JSExpression contents = parenExpression.getInnerExpression();
+            JSExpression contents = parenExpression.getInnerExpression();
 
             getValuesFromExpression(contents, caseExpression, values);
         }
@@ -281,7 +281,7 @@ private static void dumpBody(
             }
             else {
                 // Skip the first and last characters to unwrap the block
-                final String bodyText = bodyStatement.getText();
+                String bodyText = bodyStatement.getText();
                 switchStatementString.append(bodyText.substring(1, bodyText.length() - 1));
             }
         }
@@ -308,13 +308,13 @@ private static void appendElement(
         boolean renameBreakElements,
         String breakLabelString
     ) {
-        final String text = element.getText();
+        String text = element.getText();
 
         if (!renameBreakElements) {
             switchStatementString.append(text);
         }
         else if (element instanceof JSBreakStatement breakStatement) {
-            final String identifier = breakStatement.getLabel();
+            String identifier = breakStatement.getLabel();
             if (identifier == null || identifier.isEmpty()) {
                 switchStatementString.append(LABELED_BREAK_STATEMENT_PREFIX);
                 switchStatementString.append(breakLabelString);
@@ -325,8 +325,8 @@ else if (element instanceof JSBreakStatement breakStatement) {
             }
         }
         else if (element instanceof JSBlockStatement || element instanceof JSIfStatement) {
-            final JSElement[] children = (JSElement[])element.getChildren();
-            for (final JSElement child : children) {
+            JSElement[] children = (JSElement[])element.getChildren();
+            for (JSElement child : children) {
                 appendElement(switchStatementString, child, renameBreakElements, breakLabelString);
             }
         }
@@ -394,15 +394,15 @@ private Set getInnerVariables() {
         }
 
         public boolean topLevelDeclarationsConfictWith(IfStatementBranch testBranch) {
-            final Set innerVariables = testBranch.getInnerVariables();
-            final Set topLevel = testBranch.getTopLevelVariables();
+            Set innerVariables = testBranch.getInnerVariables();
+            Set topLevel = testBranch.getTopLevelVariables();
 
             return hasNonEmptyIntersection(this.topLevelVariables, topLevel)
                 || hasNonEmptyIntersection(this.topLevelVariables, innerVariables);
         }
 
         private static boolean hasNonEmptyIntersection(Set set1, Set set2) {
-            for (final String set1Element : set1) {
+            for (String set1Element : set1) {
                 if (set2.contains(set1Element)) {
                     return true;
                 }
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceSwitchWithIfIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceSwitchWithIfIntention.java
index 9ad1f20d..c8e3d184 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceSwitchWithIfIntention.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/JSReplaceSwitchWithIfIntention.java
@@ -72,19 +72,19 @@ public JSElementPredicate getElementPredicate() {
     @Override
     @RequiredReadAction
     public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException {
-        final JSSwitchStatement switchStatement = (JSSwitchStatement)element.getParent();
+        JSSwitchStatement switchStatement = (JSSwitchStatement)element.getParent();
 
         assert (switchStatement != null);
 
-        final PsiManager mgr = switchStatement.getManager();
-        final JSExpression switchExpression = switchStatement.getSwitchExpression();
-        final CodeStyleManager codeStyleMgr = CodeStyleManager.getInstance(element.getProject());
-        final boolean hadSideEffects = SideEffectChecker.mayHaveSideEffects(switchExpression);
-        final String declarationString;
-        final String expressionText;
+        PsiManager mgr = switchStatement.getManager();
+        JSExpression switchExpression = switchStatement.getSwitchExpression();
+        CodeStyleManager codeStyleMgr = CodeStyleManager.getInstance(element.getProject());
+        boolean hadSideEffects = SideEffectChecker.mayHaveSideEffects(switchExpression);
+        String declarationString;
+        String expressionText;
 
         if (hadSideEffects) {
-            final String variableName =
+            String variableName =
                 "i"; // TODO JavaCodeStyleManager.getInstance(switchExpression.getProject()).suggestUniqueVariableName("i", switchExpression, true);
 
             expressionText = variableName;
@@ -104,7 +104,7 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat
             }
         }
 
-        final StringBuilder ifStatementBuffer = new StringBuilder(1024);
+        StringBuilder ifStatementBuffer = new StringBuilder(1024);
         String breakLabel = null;
 
         if (renameBreaks) {
@@ -112,13 +112,13 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat
             ifStatementBuffer.append(breakLabel).append(':');
         }
 
-        final List openBranches = new ArrayList<>();
-        final Set declaredVars = new HashSet<>(5);
-        final List allBranches = new ArrayList<>();
+        List openBranches = new ArrayList<>();
+        Set declaredVars = new HashSet<>(5);
+        List allBranches = new ArrayList<>();
         SwitchStatementBranch currentBranch = null;
 
         for (JSCaseClause caseClause : switchStatement.getCaseClauses()) {
-            final PsiElement[] caseClauseChildren = caseClause.getChildren();
+            PsiElement[] caseClauseChildren = caseClause.getChildren();
 
             for (PsiElement child : caseClauseChildren) {
                 if (child == caseClauseChildren[0]) {
@@ -142,22 +142,22 @@ else if (currentBranch.hasStatements()) {
 
                 if (child instanceof JSExpression) {
                     // Processes case clause expression
-                    final JSExpression value = ParenthesesUtils.stripParentheses(caseClause.getCaseExpression());
+                    JSExpression value = ParenthesesUtils.stripParentheses(caseClause.getCaseExpression());
 
                     assert (currentBranch != null);
                     currentBranch.addLabel(value.getText());
                 }
                 else if (child instanceof JSStatement) {
                     // Processes case clause statements
-                    final JSStatement statement = (JSStatement)child;
+                    JSStatement statement = (JSStatement)child;
 
                     if (statement instanceof JSVarStatement) {
                         Collections.addAll(declaredVars, ((JSVarStatement)statement).getVariables());
                     }
                     else if (statement instanceof JSBlockStatement) {
                         for (PsiElement blockElement : statement.getChildren()) {
-                            final boolean isJsElement = (blockElement instanceof JSElement);
-                            final boolean isWhiteSpace = (blockElement instanceof PsiWhiteSpace);
+                            boolean isJsElement = (blockElement instanceof JSElement);
+                            boolean isWhiteSpace = (blockElement instanceof PsiWhiteSpace);
 
                             for (SwitchStatementBranch branch : openBranches) {
                                 if (isJsElement) {
@@ -183,7 +183,7 @@ else if (isWhiteSpace) {
                     }
                 }
                 else {
-                    final boolean isWhiteSpace = (child instanceof PsiWhiteSpace);
+                    boolean isWhiteSpace = (child instanceof PsiWhiteSpace);
 
                     for (SwitchStatementBranch openBranch : openBranches) {
                         if (isWhiteSpace) {
@@ -205,9 +205,9 @@ else if (isWhiteSpace) {
                 defaultBranch = branch;
             }
             else {
-                final List labels = branch.getLabels();
-                final List bodyElements = branch.getBodyElements();
-                final Set pendingVariableDeclarations = branch.getPendingVariableDeclarations();
+                List labels = branch.getLabels();
+                List bodyElements = branch.getBodyElements();
+                Set pendingVariableDeclarations = branch.getPendingVariableDeclarations();
 
                 dumpBranch(
                     ifStatementBuffer,
@@ -223,8 +223,8 @@ else if (isWhiteSpace) {
             }
         }
         if (defaultBranch != null) {
-            final List bodyElements = defaultBranch.getBodyElements();
-            final Set pendingVariableDeclarations = defaultBranch.getPendingVariableDeclarations();
+            List bodyElements = defaultBranch.getBodyElements();
+            Set pendingVariableDeclarations = defaultBranch.getPendingVariableDeclarations();
 
             dumpDefaultBranch(
                 ifStatementBuffer,
@@ -237,10 +237,10 @@ else if (isWhiteSpace) {
         }
 
         if (hadSideEffects) {
-            final String ifStatementString = ifStatementBuffer.toString();
-            final JSStatement declarationStatement =
+            String ifStatementString = ifStatementBuffer.toString();
+            JSStatement declarationStatement =
                 (JSStatement)JSChangeUtil.createStatementFromText(element.getProject(), declarationString).getPsi();
-            final JSStatement ifStatement =
+            JSStatement ifStatement =
                 (JSStatement)JSChangeUtil.createStatementFromText(element.getProject(), ifStatementString).getPsi();
 
             codeStyleMgr.reformat(declarationStatement);
@@ -248,8 +248,8 @@ else if (isWhiteSpace) {
             JSElementFactory.replaceStatement(switchStatement, declarationStatement.getText() + '\n' + ifStatement.getText());
         }
         else {
-            final String ifStatementString = ifStatementBuffer.toString();
-            final JSStatement newStatement =
+            String ifStatementString = ifStatementBuffer.toString();
+            JSStatement newStatement =
                 (JSStatement)JSChangeUtil.createStatementFromText(element.getProject(), ifStatementString).getPsi();
 
             codeStyleMgr.reformat(newStatement);
@@ -314,7 +314,7 @@ private static void dumpBody(
         Set variableDecls
     ) {
         ifStatementString.append('{');
-        for (final JSVariable var : variableDecls) {
+        for (JSVariable var : variableDecls) {
             if (CaseUtil.isUsedByStatementList(var, bodyStatements)) {
                 ifStatementString.append(VAR_PREFIX)
                     .append(var.getName())
@@ -322,7 +322,7 @@ private static void dumpBody(
             }
         }
 
-        for (final PsiElement bodyStatement : bodyStatements) {
+        for (PsiElement bodyStatement : bodyStatements) {
             if (!(bodyStatement instanceof JSBreakStatement)) {
                 appendElement(ifStatementString, bodyStatement, renameBreaks,
                     breakLabel
@@ -340,12 +340,12 @@ private static void appendElement(
         String breakLabelString
     ) {
         if (!renameBreakElements) {
-            final String text = element.getText();
+            String text = element.getText();
 
             ifStatementString.append(text);
         }
         else if (element instanceof JSBreakStatement breakStatement) {
-            final String identifier = breakStatement.getLabel();
+            String identifier = breakStatement.getLabel();
 
             if (identifier == null || identifier.isEmpty()) {
                 ifStatementString.append(BREAK_KEYWORD).append(breakLabelString).append(';');
@@ -355,7 +355,7 @@ else if (element instanceof JSBreakStatement breakStatement) {
             }
         }
         else if (element instanceof JSBlockStatement) {
-            for (final PsiElement child : element.getChildren()) {
+            for (PsiElement child : element.getChildren()) {
                 appendElement(ifStatementString, child, renameBreakElements, breakLabelString);
             }
         }
@@ -380,14 +380,14 @@ else if (element instanceof JSIfStatement ifStatement) {
     private static class SwitchPredicate implements JSElementPredicate {
         @Override
         public boolean satisfiedBy(@Nonnull PsiElement element) {
-            final PsiElement parent = element.getParent();
+            PsiElement parent = element.getParent();
 
             if (parent instanceof JSSwitchStatement switchStatement) {
                 if (ErrorUtil.containsError(switchStatement)) {
                     return false;
                 }
 
-                final JSExpression expression = switchStatement.getSwitchExpression();
+                JSExpression expression = switchStatement.getSwitchExpression();
 
                 return expression != null && expression.isValid();
             }
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/LabelSearchVisitor.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/LabelSearchVisitor.java
index 29302983..d73122df 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/LabelSearchVisitor.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/LabelSearchVisitor.java
@@ -33,7 +33,7 @@ public void visitJSReferenceExpression(JSReferenceExpression expression) {
 
     @Override
     public void visitJSLabeledStatement(JSLabeledStatement statement) {
-        final String labelText = statement.getLabel();
+        String labelText = statement.getLabel();
 
         this.used = labelText != null && labelText.equals(this.labelName);
     }
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/LocalVariableUsageVisitor.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/LocalVariableUsageVisitor.java
index 787ede47..aa13b4b8 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/LocalVariableUsageVisitor.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/switchtoif/LocalVariableUsageVisitor.java
@@ -30,7 +30,7 @@ class LocalVariableUsageVisitor extends JSRecursiveElementVisitor {
 
     @Override
     public void visitJSReferenceExpression(JSReferenceExpression expression) {
-        final JSElement reference = (JSElement)expression.resolve();
+        JSElement reference = (JSElement)expression.resolve();
         if (this.variable.equals(reference)) {
             this.used = true;
         }
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeElseIfIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeElseIfIntention.java
index 8029b032..954207da 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeElseIfIntention.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeElseIfIntention.java
@@ -52,12 +52,12 @@ public JSElementPredicate getElementPredicate() {
 
     @Override
     public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException {
-        final JSIfStatement parentStatement = (JSIfStatement)element.getParent();
+        JSIfStatement parentStatement = (JSIfStatement)element.getParent();
 
         assert (parentStatement != null);
 
-        final JSBlockStatement elseBranch = (JSBlockStatement)parentStatement.getElse();
-        final JSStatement elseBranchContents = elseBranch.getStatements()[0];
+        JSBlockStatement elseBranch = (JSBlockStatement)parentStatement.getElse();
+        JSStatement elseBranchContents = elseBranch.getStatements()[0];
 
         JSElementFactory.replaceStatement(elseBranch, elseBranchContents.getText());
     }
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfAndIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfAndIntention.java
index a4e0ae40..931d4ec3 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfAndIntention.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfAndIntention.java
@@ -59,14 +59,14 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat
         assert (element.getParent() != null);
         assert (element.getParent() instanceof JSIfStatement || element instanceof JSIfStatement);
 
-        final JSIfStatement parentStatement = (JSIfStatement)(element.getParent() instanceof JSIfStatement ? element.getParent() : element);
-        final JSIfStatement childStatement = (JSIfStatement)ConditionalUtils.stripBraces(parentStatement.getThen());
-        final JSExpression childCondition = childStatement.getCondition();
-        final JSExpression parentCondition = parentStatement.getCondition();
-        final String childConditionText = ParenthesesUtils.getParenthesized(childCondition, ParenthesesUtils.AND_PRECENDENCE);
-        final String parentConditionText = ParenthesesUtils.getParenthesized(parentCondition, ParenthesesUtils.AND_PRECENDENCE);
-        final JSStatement childThenBranch = childStatement.getThen();
-        final String statement = "if (" + parentConditionText + " && " + childConditionText + ')' + childThenBranch.getText();
+        JSIfStatement parentStatement = (JSIfStatement)(element.getParent() instanceof JSIfStatement ? element.getParent() : element);
+        JSIfStatement childStatement = (JSIfStatement)ConditionalUtils.stripBraces(parentStatement.getThen());
+        JSExpression childCondition = childStatement.getCondition();
+        JSExpression parentCondition = parentStatement.getCondition();
+        String childConditionText = ParenthesesUtils.getParenthesized(childCondition, ParenthesesUtils.AND_PRECENDENCE);
+        String parentConditionText = ParenthesesUtils.getParenthesized(parentCondition, ParenthesesUtils.AND_PRECENDENCE);
+        JSStatement childThenBranch = childStatement.getThen();
+        String statement = "if (" + parentConditionText + " && " + childConditionText + ')' + childThenBranch.getText();
 
         JSElementFactory.replaceStatement(parentStatement, statement);
     }
@@ -90,14 +90,14 @@ public boolean satisfiedBy(@Nonnull PsiElement element) {
                 }
             }
 
-            final JSIfStatement ifStatement = (JSIfStatement)parent;
+            JSIfStatement ifStatement = (JSIfStatement)parent;
 
             if (ErrorUtil.containsError(ifStatement)) {
                 return false;
             }
 
-            final JSStatement thenBranch = ConditionalUtils.stripBraces(ifStatement.getThen());
-            final JSStatement elseBranch = ConditionalUtils.stripBraces(ifStatement.getElse());
+            JSStatement thenBranch = ConditionalUtils.stripBraces(ifStatement.getThen());
+            JSStatement elseBranch = ConditionalUtils.stripBraces(ifStatement.getElse());
 
             return elseBranch == null && thenBranch instanceof JSIfStatement childIfStatement && childIfStatement.getElse() == null;
         }
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfOrIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfOrIntention.java
index c25bed92..a82725e7 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfOrIntention.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeIfOrIntention.java
@@ -65,23 +65,23 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat
 
     @RequiredReadAction
     private static void replaceMergeableExplicitIf(JSElement token) throws IncorrectOperationException {
-        final JSIfStatement parentStatement = (JSIfStatement)(token.getParent() instanceof JSIfStatement ? token.getParent() : token);
+        JSIfStatement parentStatement = (JSIfStatement)(token.getParent() instanceof JSIfStatement ? token.getParent() : token);
 
         assert (parentStatement != null);
 
-        final JSIfStatement childStatement = (JSIfStatement)parentStatement.getElse();
-        final JSExpression childCondition = childStatement.getCondition();
-        final JSExpression condition = parentStatement.getCondition();
-        final String childConditionText = ParenthesesUtils.getParenthesized(childCondition, ParenthesesUtils.OR_PRECENDENCE);
-        final String parentConditionText = ParenthesesUtils.getParenthesized(condition, ParenthesesUtils.OR_PRECENDENCE);
-        final JSStatement parentThenBranch = parentStatement.getThen();
-        final StringBuilder statement = new StringBuilder("if (")
+        JSIfStatement childStatement = (JSIfStatement)parentStatement.getElse();
+        JSExpression childCondition = childStatement.getCondition();
+        JSExpression condition = parentStatement.getCondition();
+        String childConditionText = ParenthesesUtils.getParenthesized(childCondition, ParenthesesUtils.OR_PRECENDENCE);
+        String parentConditionText = ParenthesesUtils.getParenthesized(condition, ParenthesesUtils.OR_PRECENDENCE);
+        JSStatement parentThenBranch = parentStatement.getThen();
+        StringBuilder statement = new StringBuilder("if (")
             .append(parentConditionText)
             .append(" || ")
             .append(childConditionText)
             .append(')')
             .append(parentThenBranch.getText());
-        final JSStatement childElseBranch = childStatement.getElse();
+        JSStatement childElseBranch = childStatement.getElse();
 
         if (childElseBranch != null) {
             statement.append("else ").append(childElseBranch.getText());
@@ -92,18 +92,18 @@ private static void replaceMergeableExplicitIf(JSElement token) throws Incorrect
 
     @RequiredReadAction
     private static void replaceMergeableImplicitIf(JSElement token) throws IncorrectOperationException {
-        final JSIfStatement parentStatement = (JSIfStatement)(token.getParent() instanceof JSIfStatement ? token.getParent() : token);
-        final JSIfStatement childStatement = (JSIfStatement)JSElementFactory.getNonWhiteSpaceSibling(parentStatement, true);
+        JSIfStatement parentStatement = (JSIfStatement)(token.getParent() instanceof JSIfStatement ? token.getParent() : token);
+        JSIfStatement childStatement = (JSIfStatement)JSElementFactory.getNonWhiteSpaceSibling(parentStatement, true);
 
         assert (childStatement != null);
         assert (parentStatement != null);
 
-        final JSExpression childCondition = childStatement.getCondition();
-        final JSExpression condition = parentStatement.getCondition();
-        final String childConditionText = ParenthesesUtils.getParenthesized(childCondition, ParenthesesUtils.OR_PRECENDENCE);
-        final String parentConditionText = ParenthesesUtils.getParenthesized(condition, ParenthesesUtils.OR_PRECENDENCE);
-        final JSStatement parentThenBranch = parentStatement.getThen();
-        final JSStatement childElseBranch = childStatement.getElse();
+        JSExpression childCondition = childStatement.getCondition();
+        JSExpression condition = parentStatement.getCondition();
+        String childConditionText = ParenthesesUtils.getParenthesized(childCondition, ParenthesesUtils.OR_PRECENDENCE);
+        String parentConditionText = ParenthesesUtils.getParenthesized(condition, ParenthesesUtils.OR_PRECENDENCE);
+        JSStatement parentThenBranch = parentStatement.getThen();
+        JSStatement childElseBranch = childStatement.getElse();
         StringBuilder statement = new StringBuilder("if (")
             .append(parentConditionText)
             .append(" || ")
@@ -138,13 +138,13 @@ public static boolean isMergableExplicitIf(JSElement element) {
                 }
             }
 
-            final JSIfStatement ifStatement = (JSIfStatement)parent;
+            JSIfStatement ifStatement = (JSIfStatement)parent;
 
             if (ErrorUtil.containsError(ifStatement)) {
                 return false;
             }
 
-            final JSStatement thenBranch = ifStatement.getThen(), elseBranch = ifStatement.getElse();
+            JSStatement thenBranch = ifStatement.getThen(), elseBranch = ifStatement.getElse();
 
             return thenBranch != null
                 && elseBranch instanceof JSIfStatement childIfStatement
@@ -163,14 +163,14 @@ private static boolean isMergableImplicitIf(JSElement element) {
                 }
             }
 
-            final JSIfStatement ifStatement = (JSIfStatement)parent;
-            final JSStatement thenBranch = ifStatement.getThen(), elseBranch = ifStatement.getElse();
+            JSIfStatement ifStatement = (JSIfStatement)parent;
+            JSStatement thenBranch = ifStatement.getThen(), elseBranch = ifStatement.getElse();
 
             if (thenBranch == null || elseBranch != null || ControlFlowUtils.statementMayCompleteNormally(thenBranch)) {
                 return false;
             }
 
-            final PsiElement nextStatement = JSElementFactory.getNonWhiteSpaceSibling(ifStatement, true);
+            PsiElement nextStatement = JSElementFactory.getNonWhiteSpaceSibling(ifStatement, true);
 
             return nextStatement instanceof JSIfStatement childIfStatement
                 && EquivalenceChecker.statementsAreEquivalent(thenBranch, childIfStatement.getThen());
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeParallelIfsIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeParallelIfsIntention.java
index 5b3fd0c1..bbca23e4 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeParallelIfsIntention.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSMergeParallelIfsIntention.java
@@ -55,13 +55,13 @@ public JSElementPredicate getElementPredicate() {
     @Override
     @RequiredReadAction
     public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException {
-        final PsiElement nextElement = JSElementFactory.getNonWhiteSpaceSibling(element, true);
+        PsiElement nextElement = JSElementFactory.getNonWhiteSpaceSibling(element, true);
 
         assert (nextElement != null);
 
-        final JSIfStatement firstStatement = (JSIfStatement)element;
-        final JSIfStatement secondStatement = (JSIfStatement)nextElement;
-        final StringBuilder statementBuffer = new StringBuilder();
+        JSIfStatement firstStatement = (JSIfStatement)element;
+        JSIfStatement secondStatement = (JSIfStatement)nextElement;
+        StringBuilder statementBuffer = new StringBuilder();
 
         this.mergeIfStatements(statementBuffer, firstStatement, secondStatement);
         JSElementFactory.replaceStatement(firstStatement, statementBuffer.toString());
@@ -70,11 +70,11 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat
 
     @RequiredReadAction
     private void mergeIfStatements(StringBuilder statementBuffer, JSIfStatement firstStatement, JSIfStatement secondStatement) {
-        final JSExpression condition = firstStatement.getCondition();
-        final JSStatement firstThenBranch = firstStatement.getThen();
-        final JSStatement secondThenBranch = secondStatement.getThen();
-        final JSStatement firstElseBranch = firstStatement.getElse();
-        final JSStatement secondElseBranch = secondStatement.getElse();
+        JSExpression condition = firstStatement.getCondition();
+        JSStatement firstThenBranch = firstStatement.getThen();
+        JSStatement secondThenBranch = secondStatement.getThen();
+        JSStatement firstElseBranch = firstStatement.getElse();
+        JSStatement secondElseBranch = secondStatement.getElse();
 
         statementBuffer.append("if (").append(condition.getText()).append(')');
         ControlFlowUtils.appendStatementsInSequence(statementBuffer, firstThenBranch, secondThenBranch);
@@ -103,23 +103,23 @@ public boolean satisfiedBy(@Nonnull PsiElement element) {
         }
 
         public static boolean ifStatementsCanBeMerged(JSIfStatement statement1, JSIfStatement statement2) {
-            final JSStatement thenBranch = statement1.getThen();
-            final JSStatement elseBranch = statement1.getElse();
+            JSStatement thenBranch = statement1.getThen();
+            JSStatement elseBranch = statement1.getElse();
             if (thenBranch == null) {
                 return false;
             }
-            final JSExpression firstCondition = statement1.getCondition();
-            final JSExpression secondCondition = statement2.getCondition();
+            JSExpression firstCondition = statement1.getCondition();
+            JSExpression secondCondition = statement2.getCondition();
             if (!EquivalenceChecker.expressionsAreEquivalent(firstCondition, secondCondition)) {
                 return false;
             }
 
-            final JSStatement nextThenBranch = statement2.getThen();
+            JSStatement nextThenBranch = statement2.getThen();
             if (!ControlFlowUtils.canBeMerged(thenBranch, nextThenBranch)) {
                 return false;
             }
 
-            final JSStatement nextElseBranch = statement2.getElse();
+            JSStatement nextElseBranch = statement2.getElse();
             return (elseBranch == null || nextElseBranch == null || ControlFlowUtils.canBeMerged(elseBranch, nextElseBranch));
         }
     }
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSRemoveRedundantElseIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSRemoveRedundantElseIntention.java
index fd89ad2d..b50242d3 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSRemoveRedundantElseIntention.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSRemoveRedundantElseIntention.java
@@ -54,16 +54,16 @@ public JSElementPredicate getElementPredicate() {
     @Override
     @RequiredReadAction
     public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException {
-        final JSIfStatement ifStatement = (JSIfStatement)element;
-        final JSStatement thenBranch = ifStatement.getThen();
-        final JSStatement elseBranch = ifStatement.getElse();
+        JSIfStatement ifStatement = (JSIfStatement)element;
+        JSStatement thenBranch = ifStatement.getThen();
+        JSStatement elseBranch = ifStatement.getElse();
 
         assert (thenBranch != null);
         assert (elseBranch != null);
 
-        final String newIfText = "if (" + ifStatement.getCondition().getText() + ')' + thenBranch.getText();
-        final String elseText = elseBranch.getText();
-        final String newStatement = elseBranch instanceof JSBlockStatement
+        String newIfText = "if (" + ifStatement.getCondition().getText() + ')' + thenBranch.getText();
+        String elseText = elseBranch.getText();
+        String newStatement = elseBranch instanceof JSBlockStatement
             ? elseText.substring(elseText.indexOf('{') + 1, elseText.lastIndexOf('}') - 1).trim()
             : elseText;
 
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSReplaceIfWithConditionalIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSReplaceIfWithConditionalIntention.java
index 2365c92f..c7538b0b 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSReplaceIfWithConditionalIntention.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSReplaceIfWithConditionalIntention.java
@@ -52,29 +52,29 @@ public JSElementPredicate getElementPredicate() {
     @Override
     @RequiredReadAction
     public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException {
-        final JSIfStatement ifStatement = (JSIfStatement)(element.getParent() instanceof JSIfStatement ? element.getParent() : element);
+        JSIfStatement ifStatement = (JSIfStatement)(element.getParent() instanceof JSIfStatement ? element.getParent() : element);
 
         assert (ifStatement != null);
 
         if (ReplaceIfWithConditionalPredicate.isReplaceableAssignment(ifStatement)) {
-            final StringBuilder newStatement = new StringBuilder();
+            StringBuilder newStatement = new StringBuilder();
 
             getAssignmentReplacement(newStatement, ifStatement);
             newStatement.append(';');
             JSElementFactory.replaceStatement(ifStatement, newStatement.toString());
         }
         else if (ReplaceIfWithConditionalPredicate.isReplaceableReturn(ifStatement)) {
-            final StringBuilder newStatement = new StringBuilder("return ");
+            StringBuilder newStatement = new StringBuilder("return ");
 
             getReturnReplacement(newStatement, ifStatement);
             newStatement.append(';');
             JSElementFactory.replaceStatement(ifStatement, newStatement.toString());
         }
         else if (ReplaceIfWithConditionalPredicate.isReplaceableImplicitReturn(ifStatement)) {
-            final JSExpression condition = ifStatement.getCondition();
-            final JSReturnStatement thenBranch = (JSReturnStatement)ConditionalUtils.stripBraces(ifStatement.getThen());
-            final JSReturnStatement elseBranch = PsiTreeUtil.getNextSiblingOfType(ifStatement, JSReturnStatement.class);
-            final String newStatement = getImplicitReturnReplacement(condition, thenBranch, elseBranch);
+            JSExpression condition = ifStatement.getCondition();
+            JSReturnStatement thenBranch = (JSReturnStatement)ConditionalUtils.stripBraces(ifStatement.getThen());
+            JSReturnStatement elseBranch = PsiTreeUtil.getNextSiblingOfType(ifStatement, JSReturnStatement.class);
+            String newStatement = getImplicitReturnReplacement(condition, thenBranch, elseBranch);
 
             JSElementFactory.replaceStatement(ifStatement, newStatement);
             if (elseBranch != null) {
@@ -85,12 +85,12 @@ else if (ReplaceIfWithConditionalPredicate.isReplaceableImplicitReturn(ifStateme
 
     @RequiredReadAction
     private static void getAssignmentReplacement(StringBuilder buffer, JSIfStatement ifStatement) {
-        final JSExpression condition = ifStatement.getCondition();
-        final JSExpressionStatement thenBranch = (JSExpressionStatement)ConditionalUtils.stripBraces(ifStatement.getThen());
-        final JSAssignmentExpression thenAssign = (JSAssignmentExpression)thenBranch.getExpression();
-        final JSExpression thenRhs = thenAssign.getROperand();
-        final String operator = BinaryOperatorUtils.getOperatorText(thenAssign.getOperationSign());
-        final JSStatement elseBranch = ifStatement.getElse();
+        JSExpression condition = ifStatement.getCondition();
+        JSExpressionStatement thenBranch = (JSExpressionStatement)ConditionalUtils.stripBraces(ifStatement.getThen());
+        JSAssignmentExpression thenAssign = (JSAssignmentExpression)thenBranch.getExpression();
+        JSExpression thenRhs = thenAssign.getROperand();
+        String operator = BinaryOperatorUtils.getOperatorText(thenAssign.getOperationSign());
+        JSStatement elseBranch = ifStatement.getElse();
 
         assert (thenRhs != null);
 
@@ -106,9 +106,9 @@ private static void getAssignmentReplacement(StringBuilder buffer, JSIfStatement
             return;
         }
 
-        final JSExpressionStatement strippedElseBranch = (JSExpressionStatement)ConditionalUtils.stripBraces(elseBranch);
-        final JSAssignmentExpression elseAssign = (JSAssignmentExpression)strippedElseBranch.getExpression();
-        final JSExpression elseRhs = elseAssign.getROperand();
+        JSExpressionStatement strippedElseBranch = (JSExpressionStatement)ConditionalUtils.stripBraces(elseBranch);
+        JSAssignmentExpression elseAssign = (JSAssignmentExpression)strippedElseBranch.getExpression();
+        JSExpression elseRhs = elseAssign.getROperand();
 
         assert (elseRhs != null);
 
@@ -116,9 +116,9 @@ private static void getAssignmentReplacement(StringBuilder buffer, JSIfStatement
     }
 
     private static void getReturnReplacement(StringBuilder buffer, JSIfStatement ifStatement) {
-        final JSStatement thenBranch = ifStatement.getThen();
-        final JSReturnStatement thenReturn = (JSReturnStatement)ConditionalUtils.stripBraces(thenBranch);
-        final JSStatement elseBranch = ifStatement.getElse();
+        JSStatement thenBranch = ifStatement.getThen();
+        JSReturnStatement thenReturn = (JSReturnStatement)ConditionalUtils.stripBraces(thenBranch);
+        JSStatement elseBranch = ifStatement.getElse();
 
         buffer.append(ParenthesesUtils.getParenthesized(ifStatement.getCondition(), ParenthesesUtils.CONDITIONAL_PRECENDENCE))
             .append('?')
@@ -130,7 +130,7 @@ private static void getReturnReplacement(StringBuilder buffer, JSIfStatement ifS
             return;
         }
 
-        final JSReturnStatement elseReturn = (JSReturnStatement)ConditionalUtils.stripBraces(elseBranch);
+        JSReturnStatement elseReturn = (JSReturnStatement)ConditionalUtils.stripBraces(elseBranch);
 
         buffer.append(ParenthesesUtils.getParenthesized(elseReturn.getExpression(), ParenthesesUtils.CONDITIONAL_PRECENDENCE));
     }
@@ -139,12 +139,12 @@ private static String getImplicitReturnReplacement(JSExpression condition, JSRet
         assert (thenBranch != null);
         assert (elseBranch != null);
 
-        final JSExpression thenReturnValue = thenBranch.getExpression();
-        final JSExpression elseReturnValue = elseBranch.getExpression();
+        JSExpression thenReturnValue = thenBranch.getExpression();
+        JSExpression elseReturnValue = elseBranch.getExpression();
 
-        final String thenValue = ParenthesesUtils.getParenthesized(thenReturnValue, ParenthesesUtils.CONDITIONAL_PRECENDENCE);
-        final String elseValue = ParenthesesUtils.getParenthesized(elseReturnValue, ParenthesesUtils.CONDITIONAL_PRECENDENCE);
-        final String conditionText = ParenthesesUtils.getParenthesized(condition, ParenthesesUtils.CONDITIONAL_PRECENDENCE);
+        String thenValue = ParenthesesUtils.getParenthesized(thenReturnValue, ParenthesesUtils.CONDITIONAL_PRECENDENCE);
+        String elseValue = ParenthesesUtils.getParenthesized(elseReturnValue, ParenthesesUtils.CONDITIONAL_PRECENDENCE);
+        String conditionText = ParenthesesUtils.getParenthesized(condition, ParenthesesUtils.CONDITIONAL_PRECENDENCE);
 
         return "return " + conditionText + '?' + thenValue + ':' + elseValue + ';';
     }
@@ -171,8 +171,8 @@ public boolean satisfiedBy(@Nonnull PsiElement element) {
                 return false;
             }
 
-            final JSIfStatement ifStatement = (JSIfStatement)parent;
-            final JSExpression condition = ifStatement.getCondition();
+            JSIfStatement ifStatement = (JSIfStatement)parent;
+            JSExpression condition = ifStatement.getCondition();
 
             if (condition == null || !condition.isValid()) {
                 return false;
@@ -183,13 +183,13 @@ public boolean satisfiedBy(@Nonnull PsiElement element) {
         }
 
         public static boolean isReplaceableImplicitReturn(JSIfStatement ifStatement) {
-            final PsiElement nextStatement = JSElementFactory.getNonWhiteSpaceSibling(ifStatement, true);
+            PsiElement nextStatement = JSElementFactory.getNonWhiteSpaceSibling(ifStatement, true);
 
             if (!(nextStatement instanceof JSReturnStatement nextReturnStatement)) {
                 return false;
             }
 
-            final JSStatement thenBranch = ConditionalUtils.stripBraces(ifStatement.getThen());
+            JSStatement thenBranch = ConditionalUtils.stripBraces(ifStatement.getThen());
 
             return thenBranch instanceof JSReturnStatement thenReturnStatement
                 && thenReturnStatement.getExpression() != null
@@ -197,8 +197,8 @@ public static boolean isReplaceableImplicitReturn(JSIfStatement ifStatement) {
         }
 
         public static boolean isReplaceableReturn(JSIfStatement ifStatement) {
-            final JSStatement thenBranch = ConditionalUtils.stripBraces(ifStatement.getThen());
-            final JSStatement elseBranch = ConditionalUtils.stripBraces(ifStatement.getElse());
+            JSStatement thenBranch = ConditionalUtils.stripBraces(ifStatement.getThen());
+            JSStatement elseBranch = ConditionalUtils.stripBraces(ifStatement.getElse());
 
             if (!(thenBranch instanceof JSReturnStatement thenReturnStatement)) {
                 return false;
@@ -215,7 +215,7 @@ public static boolean isReplaceableReturn(JSIfStatement ifStatement) {
 
         @RequiredReadAction
         public static boolean isReplaceableAssignment(JSIfStatement ifStatement) {
-            final JSStatement thenBranch = ConditionalUtils.stripBraces(ifStatement.getThen());
+            JSStatement thenBranch = ConditionalUtils.stripBraces(ifStatement.getThen());
             if (thenBranch == null) {
                 return false;
             }
@@ -223,7 +223,7 @@ public static boolean isReplaceableAssignment(JSIfStatement ifStatement) {
             if (!ConditionalUtils.isAssignment(thenBranch)) {
                 return false;
             }
-            final JSStatement elseBranch = ConditionalUtils.stripBraces(ifStatement.getElse());
+            JSStatement elseBranch = ConditionalUtils.stripBraces(ifStatement.getElse());
 
             if (elseBranch == null) {
                 return false;
@@ -237,31 +237,31 @@ public static boolean isReplaceableAssignment(JSIfStatement ifStatement) {
                 return false;
             }
 
-            final JSAssignmentExpression thenExpression = (JSAssignmentExpression)((JSExpressionStatement)thenBranch).getExpression();
-            final JSAssignmentExpression elseExpression = (JSAssignmentExpression)((JSExpressionStatement)elseBranch).getExpression();
-            final IElementType thenSign = thenExpression.getOperationSign();
-            final IElementType elseSign = elseExpression.getOperationSign();
+            JSAssignmentExpression thenExpression = (JSAssignmentExpression)((JSExpressionStatement)thenBranch).getExpression();
+            JSAssignmentExpression elseExpression = (JSAssignmentExpression)((JSExpressionStatement)elseBranch).getExpression();
+            IElementType thenSign = thenExpression.getOperationSign();
+            IElementType elseSign = elseExpression.getOperationSign();
 
             if (!thenSign.equals(elseSign)) {
                 return false;
             }
 
-            final JSExpression thenLhs = thenExpression.getLOperand();
+            JSExpression thenLhs = thenExpression.getLOperand();
 
             if (thenExpression.getROperand() == null
                 || elseExpression.getROperand() == null
                 || elseExpression.getLOperand() == null) {
                 return false;
             }
-            final JSExpression thenRhs = thenExpression.getROperand();
+            JSExpression thenRhs = thenExpression.getROperand();
             assert thenRhs != null;
 
-            final JSExpression elseRhs = elseExpression.getROperand();
+            JSExpression elseRhs = elseExpression.getROperand();
             if (elseRhs == null) {
                 return false;
             }
 
-            final JSExpression elseLhs = elseExpression.getLOperand();
+            JSExpression elseLhs = elseExpression.getLOperand();
             return EquivalenceChecker.expressionsAreEquivalent(thenLhs, elseLhs);
         }
     }
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSimplifyIfElseIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSimplifyIfElseIntention.java
index 78167562..bf63c521 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSimplifyIfElseIntention.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSimplifyIfElseIntention.java
@@ -51,7 +51,7 @@ public JSElementPredicate getElementPredicate() {
 
     @Override
     public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException {
-        final PsiElement statement = element.getParent() instanceof JSIfStatement ? element.getParent() : element;
+        PsiElement statement = element.getParent() instanceof JSIfStatement ? element.getParent() : element;
 
         ConditionalUtils.replaceAssignmentOrReturnIfSimplifiable((JSIfStatement)statement);
     }
@@ -77,8 +77,8 @@ public boolean satisfiedBy(@Nonnull PsiElement element) {
                 return false;
             }
 
-            final JSIfStatement ifStatement = (JSIfStatement)parent;
-            final JSExpression condition = ifStatement.getCondition();
+            JSIfStatement ifStatement = (JSIfStatement)parent;
+            JSExpression condition = ifStatement.getCondition();
 
             if (condition == null || !condition.isValid()) {
                 return false;
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitElseIfIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitElseIfIntention.java
index 666fcc06..4596975c 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitElseIfIntention.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitElseIfIntention.java
@@ -52,12 +52,12 @@ public JSElementPredicate getElementPredicate() {
     @Override
     @RequiredReadAction
     public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException {
-        final JSIfStatement parentStatement = (JSIfStatement)element.getParent();
+        JSIfStatement parentStatement = (JSIfStatement)element.getParent();
 
         assert (parentStatement != null);
 
-        final JSStatement elseBranch = parentStatement.getElse();
-        final String newStatement = '{' + elseBranch.getText() + '}';
+        JSStatement elseBranch = parentStatement.getElse();
+        String newStatement = '{' + elseBranch.getText() + '}';
 
         JSElementFactory.replaceStatement(elseBranch, newStatement);
     }
@@ -65,19 +65,19 @@ public void processIntention(@Nonnull PsiElement element) throws IncorrectOperat
     private static class SplitElseIfPredicate implements JSElementPredicate {
         @Override
         public boolean satisfiedBy(@Nonnull PsiElement element) {
-            final PsiElement parent = element.getParent();
+            PsiElement parent = element.getParent();
 
             if (!(parent instanceof JSIfStatement)) {
                 return false;
             }
 
-            final JSIfStatement ifStatement = (JSIfStatement)parent;
+            JSIfStatement ifStatement = (JSIfStatement)parent;
 
             if (ErrorUtil.containsError(ifStatement)) {
                 return false;
             }
-            final JSStatement thenBranch = ifStatement.getThen();
-            final JSStatement elseBranch = ifStatement.getElse();
+            JSStatement thenBranch = ifStatement.getThen();
+            JSStatement elseBranch = ifStatement.getElse();
 
             return thenBranch != null && elseBranch != null && elseBranch instanceof JSIfStatement;
         }
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfAndIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfAndIntention.java
index f1b0f6b6..c1cbad4c 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfAndIntention.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfAndIntention.java
@@ -56,27 +56,27 @@ public JSElementPredicate getElementPredicate() {
     @Override
     @RequiredReadAction
     public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException {
-        final PsiElement jsElement = (element.getParent() instanceof JSIfStatement ? element.getParent() : element);
+        PsiElement jsElement = (element.getParent() instanceof JSIfStatement ? element.getParent() : element);
 
         assert (jsElement != null);
         assert (jsElement instanceof JSIfStatement);
 
-        final JSIfStatement ifStatement = (JSIfStatement)jsElement;
+        JSIfStatement ifStatement = (JSIfStatement)jsElement;
 
         assert (ifStatement.getCondition() instanceof JSBinaryExpression);
 
-        final JSBinaryExpression condition = (JSBinaryExpression)ifStatement.getCondition();
-        final String lhsText = ParenthesesUtils.removeParentheses(condition.getLOperand());
-        final String rhsText = ParenthesesUtils.removeParentheses(condition.getROperand());
-        final JSStatement thenBranch = ifStatement.getThen();
-        final JSStatement elseBranch = ifStatement.getElse();
-        final String thenText = thenBranch.getText();
-        final String elseText = (elseBranch == null) ? null : elseBranch.getText();
-        final int elseLength = (elseBranch == null) ? 0 : elseText.length();
+        JSBinaryExpression condition = (JSBinaryExpression)ifStatement.getCondition();
+        String lhsText = ParenthesesUtils.removeParentheses(condition.getLOperand());
+        String rhsText = ParenthesesUtils.removeParentheses(condition.getROperand());
+        JSStatement thenBranch = ifStatement.getThen();
+        JSStatement elseBranch = ifStatement.getElse();
+        String thenText = thenBranch.getText();
+        String elseText = (elseBranch == null) ? null : elseBranch.getText();
+        int elseLength = (elseBranch == null) ? 0 : elseText.length();
 
         assert JSTokenTypes.ANDAND.equals(condition.getOperationSign());
 
-        final StringBuilder statement = new StringBuilder(ifStatement.getTextLength() + elseLength + 30);
+        StringBuilder statement = new StringBuilder(ifStatement.getTextLength() + elseLength + 30);
 
         statement.append("if (")
             .append(lhsText)
@@ -110,8 +110,8 @@ public boolean satisfiedBy(@Nonnull PsiElement element) {
                 }
             }
 
-            final JSIfStatement ifStatement = (JSIfStatement)parent;
-            final JSExpression condition = ifStatement.getCondition();
+            JSIfStatement ifStatement = (JSIfStatement)parent;
+            JSExpression condition = ifStatement.getCondition();
 
             return condition != null
                 && !ErrorUtil.containsError(condition)
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfOrIntention.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfOrIntention.java
index f51450a2..3d6ba289 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfOrIntention.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/intention/trivialif/JSSplitIfOrIntention.java
@@ -56,25 +56,25 @@ public JSElementPredicate getElementPredicate() {
     @Override
     @RequiredReadAction
     public void processIntention(@Nonnull PsiElement element) throws IncorrectOperationException {
-        final PsiElement jsElement = (element.getParent() instanceof JSIfStatement ? element.getParent() : element);
+        PsiElement jsElement = (element.getParent() instanceof JSIfStatement ? element.getParent() : element);
 
         assert (jsElement != null);
         assert (jsElement instanceof JSIfStatement);
 
-        final JSIfStatement ifStatement = (JSIfStatement)jsElement;
+        JSIfStatement ifStatement = (JSIfStatement)jsElement;
 
         assert (ifStatement.getCondition() instanceof JSBinaryExpression);
 
-        final JSBinaryExpression condition = (JSBinaryExpression)ifStatement.getCondition();
-        final String lhsText = ParenthesesUtils.removeParentheses(condition.getLOperand());
-        final String rhsText = ParenthesesUtils.removeParentheses(condition.getROperand());
-        final JSStatement thenBranch = ifStatement.getThen();
-        final JSStatement elseBranch = ifStatement.getElse();
-        final String thenText = thenBranch.getText();
+        JSBinaryExpression condition = (JSBinaryExpression)ifStatement.getCondition();
+        String lhsText = ParenthesesUtils.removeParentheses(condition.getLOperand());
+        String rhsText = ParenthesesUtils.removeParentheses(condition.getROperand());
+        JSStatement thenBranch = ifStatement.getThen();
+        JSStatement elseBranch = ifStatement.getElse();
+        String thenText = thenBranch.getText();
 
         assert JSTokenTypes.OROR.equals(condition.getOperationSign());
 
-        final StringBuilder statement = new StringBuilder(ifStatement.getTextLength());
+        StringBuilder statement = new StringBuilder(ifStatement.getTextLength());
 
         statement.append("if (").append(lhsText).append(')')
             .append(thenText)
@@ -103,8 +103,8 @@ public boolean satisfiedBy(@Nonnull PsiElement element) {
                 }
             }
 
-            final JSIfStatement ifStatement = (JSIfStatement)parent;
-            final JSExpression condition = ifStatement.getCondition();
+            JSIfStatement ifStatement = (JSIfStatement)parent;
+            JSExpression condition = ifStatement.getCondition();
 
             return condition != null
                 && !ErrorUtil.containsError(condition)
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/BinaryOperatorUtils.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/BinaryOperatorUtils.java
index 5aeb2e64..5fd6db38 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/BinaryOperatorUtils.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/BinaryOperatorUtils.java
@@ -37,7 +37,7 @@ public static boolean isBinaryOperator(JSExpression expression) {
 
     public static boolean isShiftOperator(JSExpression expression) {
         if (expression instanceof JSBinaryExpression binaryExpression) {
-            final IElementType sign = binaryExpression.getOperationSign();
+            IElementType sign = binaryExpression.getOperationSign();
 
             return JSTokenTypes.LTLT.equals(sign) ||
                 JSTokenTypes.GTGT.equals(sign) ||
@@ -52,7 +52,7 @@ public static String getOperatorText(IElementType operator) {
         if (operator == null) {
             return "";
         }
-        final OperatorProperties operatorProperties = operators.get(operator);
+        OperatorProperties operatorProperties = operators.get(operator);
         assert operatorProperties != null : "Operator properties is null for " + operator;
         return operatorProperties.text;
     }
@@ -61,7 +61,7 @@ public static boolean isCommutative(IElementType operator) {
         if (operator == null) {
             return false;
         }
-        final OperatorProperties operatorProperties = operators.get(operator);
+        OperatorProperties operatorProperties = operators.get(operator);
         assert operatorProperties != null : "Operator properties is null for " + operator;
         return operatorProperties.commutative;
     }
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/BoolUtils.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/BoolUtils.java
index d30446cb..8e78ff10 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/BoolUtils.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/BoolUtils.java
@@ -44,7 +44,7 @@ public static JSExpression findNegation(JSExpression condition) {
         }
 
         if (ancestor.getParent() instanceof JSPrefixExpression) {
-            final JSPrefixExpression prefixAncestor = (JSPrefixExpression)ancestor.getParent();
+            JSPrefixExpression prefixAncestor = (JSPrefixExpression)ancestor.getParent();
             if (JSTokenTypes.EXCL.equals(prefixAncestor.getOperationSign())) {
                 return prefixAncestor;
             }
@@ -59,14 +59,14 @@ public static boolean isNegation(JSExpression condition) {
 
     public static boolean isNegation(JSExpression condition, boolean ignoreNegatedNullComparison) {
         if (condition instanceof JSPrefixExpression prefixExpression) {
-            final IElementType sign = prefixExpression.getOperationSign();
+            IElementType sign = prefixExpression.getOperationSign();
 
             return JSTokenTypes.EXCL.equals(sign);
         }
         else if (condition instanceof JSBinaryExpression binaryExpression) {
-            final IElementType sign = binaryExpression.getOperationSign();
-            final JSExpression lhs = binaryExpression.getLOperand();
-            final JSExpression rhs = binaryExpression.getROperand();
+            IElementType sign = binaryExpression.getOperationSign();
+            JSExpression lhs = binaryExpression.getLOperand();
+            JSExpression rhs = binaryExpression.getROperand();
 
             if (rhs != null && JSTokenTypes.NE.equals(sign)) {
                 if (!ignoreNegatedNullComparison) {
@@ -87,22 +87,22 @@ else if (condition instanceof JSParenthesizedExpression parenExp) {
         }
     }
 
-    private static boolean isNullLiteral(final JSExpression lhs) {
+    private static boolean isNullLiteral(JSExpression lhs) {
         return lhs.getNode() != null && JSTokenTypes.NULL_KEYWORD.equals(lhs.getNode().getElementType());
     }
 
     public static JSExpression getNegated(JSExpression condition) {
         if (condition instanceof JSPrefixExpression prefixExp) {
-            final JSExpression operand = prefixExp.getExpression();
+            JSExpression operand = prefixExp.getExpression();
 
             return ParenthesesUtils.stripParentheses(operand);
         }
         else if (condition instanceof JSBinaryExpression binaryExpression) {
-            final IElementType sign = binaryExpression.getOperationSign();
-            final JSExpression lhs = binaryExpression.getLOperand();
-            final JSExpression rhs = binaryExpression.getROperand();
-            final String negatedSign = ComparisonUtils.getNegatedOperatorText(sign);
-            final String negatedText = lhs.getText() + negatedSign + rhs.getText();
+            IElementType sign = binaryExpression.getOperationSign();
+            JSExpression lhs = binaryExpression.getLOperand();
+            JSExpression rhs = binaryExpression.getROperand();
+            String negatedSign = ComparisonUtils.getNegatedOperatorText(sign);
+            String negatedText = lhs.getText() + negatedSign + rhs.getText();
 
             return JSChangeUtil.createExpressionFromText(condition.getProject(), negatedText);
         }
@@ -117,7 +117,7 @@ public static boolean isBooleanLiteral(JSExpression condition) {
             return false;
         }
 
-        final String text = condition.getText();
+        String text = condition.getText();
 
         return (TRUE.equals(text) || FALSE.equals(text));
     }
@@ -127,7 +127,7 @@ public static Boolean getBooleanLiteral(JSExpression condition) {
             return null;
         }
 
-        final String text = condition.getText();
+        String text = condition.getText();
 
         return TRUE.equals(text) ? Boolean.TRUE
             : FALSE.equals(text) ? Boolean.FALSE
@@ -147,11 +147,11 @@ public static String getNegatedExpressionText(JSExpression condition) {
             return ParenthesesUtils.getParenthesized(BoolUtils.getNegated(condition), ParenthesesUtils.OR_PRECENDENCE);
         }
         else if (ComparisonUtils.isComparisonOperator(condition)) {
-            final JSBinaryExpression binaryExpression = (JSBinaryExpression)condition;
-            final IElementType sign = binaryExpression.getOperationSign();
-            final String negatedComparison = ComparisonUtils.getNegatedOperatorText(sign);
-            final JSExpression leftOperand = binaryExpression.getLOperand();
-            final JSExpression rightOperand = binaryExpression.getROperand();
+            JSBinaryExpression binaryExpression = (JSBinaryExpression)condition;
+            IElementType sign = binaryExpression.getOperationSign();
+            String negatedComparison = ComparisonUtils.getNegatedOperatorText(sign);
+            JSExpression leftOperand = binaryExpression.getLOperand();
+            JSExpression rightOperand = binaryExpression.getROperand();
 
             return leftOperand.getText() + negatedComparison + (rightOperand != null ? rightOperand.getText() : "");
         }
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/ConditionalUtils.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/ConditionalUtils.java
index 45452eac..8e10ef32 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/ConditionalUtils.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/ConditionalUtils.java
@@ -29,7 +29,7 @@ private ConditionalUtils() {
 
     public static JSStatement stripBraces(JSStatement branch) {
         if (branch != null && branch instanceof JSBlockStatement block) {
-            final JSStatement[] statements = block.getStatements();
+            JSStatement[] statements = block.getStatements();
 
             if (statements.length == 1) {
                 return statements[0];
@@ -50,7 +50,7 @@ public static boolean isReturn(JSStatement statement, String value) {
             return false;
         }
 
-        final JSExpression returnExpression = ((JSReturnStatement)statement).getExpression();
+        JSExpression returnExpression = ((JSReturnStatement)statement).getExpression();
 
         return (returnExpression != null && value.equals(returnExpression.getText()));
     }
@@ -60,13 +60,13 @@ public static boolean isAssignment(JSStatement statement, String value) {
             return false;
         }
 
-        final JSExpression expression = ((JSExpressionStatement)statement).getExpression();
+        JSExpression expression = ((JSExpressionStatement)statement).getExpression();
 
         if (!(expression instanceof JSAssignmentExpression)) {
             return false;
         }
 
-        final JSExpression rhs = ((JSAssignmentExpression)expression).getROperand();
+        JSExpression rhs = ((JSAssignmentExpression)expression).getROperand();
 
         return (rhs != null && rhs.getText().equals(value));
     }
@@ -76,7 +76,7 @@ public static boolean isAssignment(JSStatement statement) {
             return false;
         }
 
-        final JSExpressionStatement expressionStatement = (JSExpressionStatement)statement;
+        JSExpressionStatement expressionStatement = (JSExpressionStatement)statement;
 
         return (expressionStatement.getExpression() instanceof JSAssignmentExpression);
     }
@@ -93,8 +93,8 @@ public static boolean isConditional(JSExpression expression) {
         }
 
         if (expression instanceof JSBinaryExpression) {
-            final JSBinaryExpression binaryExpression = (JSBinaryExpression)expression;
-            final IElementType sign = binaryExpression.getOperationSign();
+            JSBinaryExpression binaryExpression = (JSBinaryExpression)expression;
+            IElementType sign = binaryExpression.getOperationSign();
 
             if (JSTokenTypes.XOR.equals(sign)) {
                 return (isConditional(binaryExpression.getLOperand()) &&
@@ -111,14 +111,14 @@ public static boolean isConditional(JSExpression expression) {
     }
 
     public static boolean isSimplifiableImplicitReturn(JSIfStatement ifStatement, boolean negated) {
-        final JSStatement thenBranch = ConditionalUtils.stripBraces(ifStatement.getThen());
-        final PsiElement nextStatement = JSElementFactory.getNonWhiteSpaceSibling(ifStatement, true);
+        JSStatement thenBranch = ConditionalUtils.stripBraces(ifStatement.getThen());
+        PsiElement nextStatement = JSElementFactory.getNonWhiteSpaceSibling(ifStatement, true);
 
         if (!(nextStatement instanceof JSStatement)) {
             return false;
         }
 
-        final JSStatement elseBranch = (JSStatement)nextStatement;
+        JSStatement elseBranch = (JSStatement)nextStatement;
 
         if (negated) {
             return ConditionalUtils.isReturn(thenBranch, BoolUtils.FALSE)
@@ -131,8 +131,8 @@ public static boolean isSimplifiableImplicitReturn(JSIfStatement ifStatement, bo
     }
 
     public static boolean isSimplifiableReturn(JSIfStatement ifStatement, boolean negated) {
-        final JSStatement thenBranch = ConditionalUtils.stripBraces(ifStatement.getThen());
-        final JSStatement elseBranch = ConditionalUtils.stripBraces(ifStatement.getElse());
+        JSStatement thenBranch = ConditionalUtils.stripBraces(ifStatement.getThen());
+        JSStatement elseBranch = ConditionalUtils.stripBraces(ifStatement.getElse());
 
         if (negated) {
             return ConditionalUtils.isReturn(thenBranch, BoolUtils.FALSE)
@@ -145,10 +145,10 @@ public static boolean isSimplifiableReturn(JSIfStatement ifStatement, boolean ne
     }
 
     public static boolean isSimplifiableAssignment(JSIfStatement ifStatement, boolean negated) {
-        final JSStatement thenBranch = ConditionalUtils.stripBraces(ifStatement.getThen());
-        final JSStatement elseBranch = ConditionalUtils.stripBraces(ifStatement.getElse());
+        JSStatement thenBranch = ConditionalUtils.stripBraces(ifStatement.getThen());
+        JSStatement elseBranch = ConditionalUtils.stripBraces(ifStatement.getElse());
 
-        final boolean isAssignment;
+        boolean isAssignment;
 
         if (negated) {
             isAssignment = ConditionalUtils.isAssignment(thenBranch, BoolUtils.FALSE)
@@ -160,17 +160,17 @@ public static boolean isSimplifiableAssignment(JSIfStatement ifStatement, boolea
         }
 
         if (isAssignment) {
-            final JSAssignmentExpression thenExpression = (JSAssignmentExpression)((JSExpressionStatement)thenBranch).getExpression();
-            final JSAssignmentExpression elseExpression = (JSAssignmentExpression)((JSExpressionStatement)elseBranch).getExpression();
-            final IElementType thenSign = thenExpression.getOperationSign();
-            final IElementType elseSign = elseExpression.getOperationSign();
+            JSAssignmentExpression thenExpression = (JSAssignmentExpression)((JSExpressionStatement)thenBranch).getExpression();
+            JSAssignmentExpression elseExpression = (JSAssignmentExpression)((JSExpressionStatement)elseBranch).getExpression();
+            IElementType thenSign = thenExpression.getOperationSign();
+            IElementType elseSign = elseExpression.getOperationSign();
 
             if (!thenSign.equals(elseSign)) {
                 return false;
             }
 
-            final JSExpression thenLhs = thenExpression.getLOperand();
-            final JSExpression elseLhs = elseExpression.getLOperand();
+            JSExpression thenLhs = thenExpression.getLOperand();
+            JSExpression elseLhs = elseExpression.getLOperand();
 
             return EquivalenceChecker.expressionsAreEquivalent(thenLhs, elseLhs);
         }
@@ -183,31 +183,31 @@ public static boolean isSimplifiableImplicitAssignment(JSIfStatement ifStatement
         if (ifStatement.getElse() != null) {
             return false;
         }
-        final JSStatement thenBranch = ConditionalUtils.stripBraces(ifStatement.getThen());
-        final PsiElement nextStatement = JSElementFactory.getNonWhiteSpaceSibling(ifStatement, false);
+        JSStatement thenBranch = ConditionalUtils.stripBraces(ifStatement.getThen());
+        PsiElement nextStatement = JSElementFactory.getNonWhiteSpaceSibling(ifStatement, false);
 
         if (!(nextStatement instanceof JSStatement)) {
             return false;
         }
 
-        final JSStatement elseBranch = ConditionalUtils.stripBraces((JSStatement)nextStatement);
+        JSStatement elseBranch = ConditionalUtils.stripBraces((JSStatement)nextStatement);
 
-        final boolean isAssignment = negated
+        boolean isAssignment = negated
             ? ConditionalUtils.isAssignment(thenBranch, BoolUtils.FALSE) && ConditionalUtils.isAssignment(elseBranch, BoolUtils.TRUE)
             : ConditionalUtils.isAssignment(thenBranch, BoolUtils.TRUE) && ConditionalUtils.isAssignment(elseBranch, BoolUtils.FALSE);
 
         if (isAssignment) {
-            final JSAssignmentExpression thenExpression = (JSAssignmentExpression)((JSExpressionStatement)thenBranch).getExpression();
-            final JSAssignmentExpression elseExpression = (JSAssignmentExpression)((JSExpressionStatement)elseBranch).getExpression();
-            final IElementType thenSign = thenExpression.getOperationSign();
-            final IElementType elseSign = elseExpression.getOperationSign();
+            JSAssignmentExpression thenExpression = (JSAssignmentExpression)((JSExpressionStatement)thenBranch).getExpression();
+            JSAssignmentExpression elseExpression = (JSAssignmentExpression)((JSExpressionStatement)elseBranch).getExpression();
+            IElementType thenSign = thenExpression.getOperationSign();
+            IElementType elseSign = elseExpression.getOperationSign();
 
             if (!thenSign.equals(elseSign)) {
                 return false;
             }
 
-            final JSExpression thenLhs = thenExpression.getLOperand();
-            final JSExpression elseLhs = elseExpression.getLOperand();
+            JSExpression thenLhs = thenExpression.getLOperand();
+            JSExpression elseLhs = elseExpression.getLOperand();
 
             return EquivalenceChecker.expressionsAreEquivalent(thenLhs, elseLhs);
         }
@@ -218,10 +218,10 @@ public static boolean isSimplifiableImplicitAssignment(JSIfStatement ifStatement
 
     public static void replaceSimplifiableImplicitReturn(JSIfStatement statement, boolean negated)
         throws IncorrectOperationException {
-        final JSExpression condition = statement.getCondition();
-        final String conditionText = negated ? BoolUtils.getNegatedExpressionText(condition) : condition.getText();
-        final JSElement nextStatement = (JSElement)JSElementFactory.getNonWhiteSpaceSibling(statement, true);
-        @NonNls final String newStatement = "return " + conditionText + ';';
+        JSExpression condition = statement.getCondition();
+        String conditionText = negated ? BoolUtils.getNegatedExpressionText(condition) : condition.getText();
+        JSElement nextStatement = (JSElement)JSElementFactory.getNonWhiteSpaceSibling(statement, true);
+        @NonNls String newStatement = "return " + conditionText + ';';
 
         JSElementFactory.replaceStatement(statement, newStatement);
         assert (nextStatement != null);
@@ -230,38 +230,38 @@ public static void replaceSimplifiableImplicitReturn(JSIfStatement statement, bo
 
     public static void replaceSimplifiableReturn(JSIfStatement statement, boolean negated)
         throws IncorrectOperationException {
-        final JSExpression condition = statement.getCondition();
-        final String conditionText = (negated ? BoolUtils.getNegatedExpressionText(condition) : condition.getText());
-        @NonNls final String newStatement = "return " + conditionText + ';';
+        JSExpression condition = statement.getCondition();
+        String conditionText = (negated ? BoolUtils.getNegatedExpressionText(condition) : condition.getText());
+        @NonNls String newStatement = "return " + conditionText + ';';
 
         JSElementFactory.replaceStatement(statement, newStatement);
     }
 
     public static void replaceSimplifiableAssignment(JSIfStatement statement, boolean negated)
         throws IncorrectOperationException {
-        final JSExpression condition = statement.getCondition();
-        final String conditionText = negated ? BoolUtils.getNegatedExpressionText(condition) : condition.getText();
-        final JSExpressionStatement assignmentStatement = (JSExpressionStatement)ConditionalUtils.stripBraces(statement.getThen());
-        final JSAssignmentExpression assignmentExpression = (JSAssignmentExpression)assignmentStatement.getExpression();
-        final IElementType operator = assignmentExpression.getOperationSign();
-        final String operand = BinaryOperatorUtils.getOperatorText(operator);
-        final JSExpression lhs = assignmentExpression.getLOperand();
-        final String lhsText = lhs.getText();
+        JSExpression condition = statement.getCondition();
+        String conditionText = negated ? BoolUtils.getNegatedExpressionText(condition) : condition.getText();
+        JSExpressionStatement assignmentStatement = (JSExpressionStatement)ConditionalUtils.stripBraces(statement.getThen());
+        JSAssignmentExpression assignmentExpression = (JSAssignmentExpression)assignmentStatement.getExpression();
+        IElementType operator = assignmentExpression.getOperationSign();
+        String operand = BinaryOperatorUtils.getOperatorText(operator);
+        JSExpression lhs = assignmentExpression.getLOperand();
+        String lhsText = lhs.getText();
 
         JSElementFactory.replaceStatement(statement, lhsText + operand + conditionText + ';');
     }
 
     public static void replaceSimplifiableImplicitAssignment(JSIfStatement statement, boolean negated)
         throws IncorrectOperationException {
-        final JSElement prevStatement = (JSElement)JSElementFactory.getNonWhiteSpaceSibling(statement, false);
-        final JSExpression condition = statement.getCondition();
-        final String conditionText = (negated ? BoolUtils.getNegatedExpressionText(condition) : condition.getText());
-        final JSExpressionStatement assignmentStatement = (JSExpressionStatement)ConditionalUtils.stripBraces(statement.getThen());
-        final JSAssignmentExpression assignmentExpression = (JSAssignmentExpression)assignmentStatement.getExpression();
-        final IElementType operator = assignmentExpression.getOperationSign();
-        final String operand = BinaryOperatorUtils.getOperatorText(operator);
-        final JSExpression lhs = assignmentExpression.getLOperand();
-        final String lhsText = lhs.getText();
+        JSElement prevStatement = (JSElement)JSElementFactory.getNonWhiteSpaceSibling(statement, false);
+        JSExpression condition = statement.getCondition();
+        String conditionText = (negated ? BoolUtils.getNegatedExpressionText(condition) : condition.getText());
+        JSExpressionStatement assignmentStatement = (JSExpressionStatement)ConditionalUtils.stripBraces(statement.getThen());
+        JSAssignmentExpression assignmentExpression = (JSAssignmentExpression)assignmentStatement.getExpression();
+        IElementType operator = assignmentExpression.getOperationSign();
+        String operand = BinaryOperatorUtils.getOperatorText(operator);
+        JSExpression lhs = assignmentExpression.getLOperand();
+        String lhsText = lhs.getText();
 
         JSElementFactory.replaceStatement(statement, lhsText + operand + conditionText + ';');
 
@@ -300,20 +300,20 @@ else if (isSimplifiableImplicitAssignment(statement, true)) {
 
     public static void replaceConditionalWithIf(JSConditionalExpression conditional)
         throws IncorrectOperationException {
-        final JSStatement statement = PsiTreeUtil.getParentOfType(conditional, JSStatement.class);
+        JSStatement statement = PsiTreeUtil.getParentOfType(conditional, JSStatement.class);
 
         assert (statement != null);
 
-        final String statementText = statement.getText();
-        final String conditionalText = ParenthesesUtils.unstripParentheses(conditional).getText();
-        final int conditionalIndex = statementText.indexOf(conditionalText);
-        final String statementStart = statementText.substring(0, conditionalIndex);
-        final String statementEnd = statementText.substring(conditionalIndex + conditionalText.length());
-        final JSExpression condition = ParenthesesUtils.stripParentheses(conditional.getCondition());
-        final JSExpression thenExpression = ParenthesesUtils.stripParentheses(conditional.getThen());
-        final JSExpression elseExpression = ParenthesesUtils.stripParentheses(conditional.getElse());
+        String statementText = statement.getText();
+        String conditionalText = ParenthesesUtils.unstripParentheses(conditional).getText();
+        int conditionalIndex = statementText.indexOf(conditionalText);
+        String statementStart = statementText.substring(0, conditionalIndex);
+        String statementEnd = statementText.substring(conditionalIndex + conditionalText.length());
+        JSExpression condition = ParenthesesUtils.stripParentheses(conditional.getCondition());
+        JSExpression thenExpression = ParenthesesUtils.stripParentheses(conditional.getThen());
+        JSExpression elseExpression = ParenthesesUtils.stripParentheses(conditional.getElse());
 
-        @NonNls final String ifStatementText = "if (" + condition.getText() + ") {" +
+        @NonNls String ifStatementText = "if (" + condition.getText() + ") {" +
             statementStart + thenExpression.getText() + statementEnd +
             "} else {" +
             statementStart + elseExpression.getText() + statementEnd +
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/ControlFlowUtils.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/ControlFlowUtils.java
index 2f882b00..ee57b6f7 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/ControlFlowUtils.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/ControlFlowUtils.java
@@ -47,7 +47,7 @@ else if (statement instanceof JSExpressionStatement
             return true;
         }
         else if (statement instanceof JSForStatement loopStatement) {
-            final JSExpression condition = loopStatement.getCondition();
+            JSExpression condition = loopStatement.getCondition();
 
             return condition != null && !isBooleanConstant(condition, false) || statementIsBreakTarget(loopStatement);
         }
@@ -65,14 +65,14 @@ else if (statement instanceof JSBlockStatement blockStatement) {
             return codeBlockMayCompleteNormally(blockStatement.getStatements());
         }
         else if (statement instanceof JSLabeledStatement) {
-            final JSLabeledStatement labeledStatement = (JSLabeledStatement)statement;
-            final JSStatement body = labeledStatement.getStatement();
+            JSLabeledStatement labeledStatement = (JSLabeledStatement)statement;
+            JSStatement body = labeledStatement.getStatement();
 
             return (statementMayCompleteNormally(body) || statementIsBreakTarget(body));
         }
         else if (statement instanceof JSIfStatement ifStatement) {
-            final JSStatement thenBranch = ifStatement.getThen();
-            final JSStatement elseBranch = ifStatement.getElse();
+            JSStatement thenBranch = ifStatement.getThen();
+            JSStatement elseBranch = ifStatement.getElse();
 
             return elseBranch == null ||
                 statementMayCompleteNormally(thenBranch) ||
@@ -86,7 +86,7 @@ else if (statement instanceof JSTryStatement tryStatement) {
                 return true;
             }
 
-            final JSCatchBlock catchBlock = tryStatement.getCatchBlock();
+            JSCatchBlock catchBlock = tryStatement.getCatchBlock();
 
             return catchBlock != null && statementMayCompleteNormally(catchBlock.getStatement());
         }
@@ -109,7 +109,7 @@ else if (statement instanceof JSSwitchStatement switchStatement) {
 
     public static boolean codeBlockMayCompleteNormally(@Nullable JSStatement[] statements) {
         if (statements != null) {
-            for (final JSStatement statement : statements) {
+            for (JSStatement statement : statements) {
                 if (!statementMayCompleteNormally(statement)) {
                     return false;
                 }
@@ -123,7 +123,7 @@ private static boolean isBooleanConstant(JSExpression test, boolean val) {
         if (!ExpressionUtil.isConstantExpression(test)) {
             return false;
         }
-        final Object value = ExpressionUtil.computeConstantExpression(test);
+        Object value = ExpressionUtil.computeConstantExpression(test);
         return value != null && value instanceof Boolean && ((Boolean)value).booleanValue() == val;
     }
 
@@ -132,7 +132,7 @@ private static boolean statementIsBreakTarget(@Nullable JSStatement statement) {
             return false;
         }
 
-        final BreakTargetFinder breakFinder = new BreakTargetFinder(statement);
+        BreakTargetFinder breakFinder = new BreakTargetFinder(statement);
 
         statement.accept(breakFinder);
         return breakFinder.breakFound();
@@ -143,7 +143,7 @@ public static boolean statementContainsExitingBreak(@Nullable JSStatement statem
             return false;
         }
 
-        final ExitingBreakFinder breakFinder = new ExitingBreakFinder();
+        ExitingBreakFinder breakFinder = new ExitingBreakFinder();
 
         statement.accept(breakFinder);
         return breakFinder.breakFound();
@@ -154,7 +154,7 @@ public static boolean statementIsContinueTarget(@Nullable JSStatement statement)
             return false;
         }
 
-        final ContinueTargetFinder continueFinder = new ContinueTargetFinder(statement);
+        ContinueTargetFinder continueFinder = new ContinueTargetFinder(statement);
 
         statement.accept(continueFinder);
         return continueFinder.continueFound();
@@ -165,7 +165,7 @@ public static boolean statementContainsReturn(@Nullable JSStatement statement) {
             return false;
         }
 
-        final ReturnFinder returnFinder = new ReturnFinder();
+        ReturnFinder returnFinder = new ReturnFinder();
 
         statement.accept(returnFinder);
         return returnFinder.returnFound();
@@ -179,7 +179,7 @@ public static boolean statementCompletesWithStatement(@Nonnull JSStatement conta
                 return true;
             }
 
-            final JSStatement container = PsiTreeUtil.getParentOfType(statementToCheck, JSStatement.class);
+            JSStatement container = PsiTreeUtil.getParentOfType(statementToCheck, JSStatement.class);
 
             if (container == null) {
                 return false;
@@ -207,7 +207,7 @@ private static boolean elementCompletesWithStatement(@Nonnull JSElement element,
                 return true;
             }
 
-            final JSElement container = PsiTreeUtil.getParentOfType(statementToCheck, JSElement.class);
+            JSElement container = PsiTreeUtil.getParentOfType(statementToCheck, JSElement.class);
 
             if (container == null || container instanceof JSLoopStatement) {
                 return false;
@@ -237,11 +237,11 @@ public static boolean blockCompletesWithStatement(@Nonnull JSBlockStatement bloc
     }
 
     private static boolean statementIsLastInBlock(@Nonnull JSBlockStatement block, @Nonnull JSStatement statement) {
-        final JSStatement[] statements = block.getStatements();
+        JSStatement[] statements = block.getStatements();
 
         //noinspection ForLoopWithMissingComponent
         for (int index = statements.length; --index >= 0; ) {
-            final JSStatement childStatement = statements[index];
+            JSStatement childStatement = statements[index];
 
             if (statement.equals(childStatement)) {
                 return true;
@@ -259,14 +259,14 @@ public static JSVariable resolveVariable(@Nullable JSExpression expression) {
             return null;
         }
         else if (expression instanceof JSReferenceExpression referenceExpression) {
-            final PsiElement variable = referenceExpression.resolve();
+            PsiElement variable = referenceExpression.resolve();
 
             return variable != null && variable instanceof JSVariable jsVariable ? jsVariable : null;
         }
         else if (expression instanceof JSDefinitionExpression definitionExpression) {
-            final JSExpression referentExpression = definitionExpression.getExpression();
-            final PsiReference reference = (referentExpression == null) ? null : referentExpression.getReference();
-            final PsiElement variable = (reference == null) ? null : reference.resolve();
+            JSExpression referentExpression = definitionExpression.getExpression();
+            PsiReference reference = (referentExpression == null) ? null : referentExpression.getReference();
+            PsiElement variable = (reference == null) ? null : reference.resolve();
 
             return variable != null && variable instanceof JSVariable jsVariable ? jsVariable : null;
         }
@@ -277,10 +277,10 @@ else if (expression instanceof JSDefinitionExpression definitionExpression) {
 
     @Nullable
     public static JSFunction resolveMethod(JSCallExpression expression) {
-        final JSExpression methodExpression = (expression == null) ? null : expression.getMethodExpression();
+        JSExpression methodExpression = (expression == null) ? null : expression.getMethodExpression();
 
         if (methodExpression != null && methodExpression instanceof JSReferenceExpression referenceExpression) {
-            final PsiElement referent = referenceExpression.resolve();
+            PsiElement referent = referenceExpression.resolve();
 
             return referent != null && referent instanceof JSFunction function ? function : null;
         }
@@ -291,54 +291,54 @@ public static boolean canBeMerged(JSStatement statement1, JSStatement statement2
         if (!ControlFlowUtils.statementMayCompleteNormally(statement1)) {
             return false;
         }
-        final Set statement1Declarations = calculateTopLevelDeclarations(statement1);
+        Set statement1Declarations = calculateTopLevelDeclarations(statement1);
         if (containsConflictingDeclarations(statement1Declarations, statement2)) {
             return false;
         }
-        final Set statement2Declarations = calculateTopLevelDeclarations(statement2);
+        Set statement2Declarations = calculateTopLevelDeclarations(statement2);
         return (!containsConflictingDeclarations(statement2Declarations, statement1));
     }
 
     public static boolean isInLoopStatementBody(@Nonnull PsiElement element) {
-        final JSLoopStatement forStatement = PsiTreeUtil.getParentOfType(element, JSLoopStatement.class);
+        JSLoopStatement forStatement = PsiTreeUtil.getParentOfType(element, JSLoopStatement.class);
 
         if (forStatement == null) {
             return false;
         }
 
-        final JSStatement body = forStatement.getBody();
+        JSStatement body = forStatement.getBody();
 
         return (body != null && PsiTreeUtil.isAncestor(body, element, true));
     }
 
     @Nonnull
     public static List getRecursiveCalls(@Nonnull JSFunction function) {
-        final RecursiveCallVisitor recursiveCallVisitor = new RecursiveCallVisitor(function);
+        RecursiveCallVisitor recursiveCallVisitor = new RecursiveCallVisitor(function);
 
         function.accept(recursiveCallVisitor);
         return recursiveCallVisitor.getCalls();
     }
 
     private static boolean containsConflictingDeclarations(Set declarations, JSStatement statement) {
-        final DeclarationUtils.DeclarationConflictVisitor visitor =
+        DeclarationUtils.DeclarationConflictVisitor visitor =
             new DeclarationUtils.DeclarationConflictVisitor(declarations);
         statement.accept(visitor);
         return visitor.hasConflict();
     }
 
     public static boolean containsConflictingDeclarations(JSBlockStatement block, JSBlockStatement parentBlock) {
-        final JSStatement[] statements = block.getStatements();
-        final Set declaredVars = new HashSet<>();
+        JSStatement[] statements = block.getStatements();
+        Set declaredVars = new HashSet<>();
 
-        for (final JSStatement statement : statements) {
+        for (JSStatement statement : statements) {
             if (statement instanceof JSVarStatement declaration) {
-                for (final JSVariable var : declaration.getVariables()) {
+                for (JSVariable var : declaration.getVariables()) {
                     declaredVars.add(var);
                 }
             }
         }
 
-        for (final JSVariable variable : declaredVars) {
+        for (JSVariable variable : declaredVars) {
             if (conflictingDeclarationExists(variable.getName(), parentBlock, block)) {
                 return true;
             }
@@ -348,13 +348,13 @@ public static boolean containsConflictingDeclarations(JSBlockStatement block, JS
     }
 
     private static boolean conflictingDeclarationExists(String name, JSBlockStatement parentBlock, JSBlockStatement exceptBlock) {
-        final ConflictingDeclarationVisitor visitor = new ConflictingDeclarationVisitor(name, exceptBlock);
+        ConflictingDeclarationVisitor visitor = new ConflictingDeclarationVisitor(name, exceptBlock);
         parentBlock.accept(visitor);
         return visitor.hasConflictingDeclaration();
     }
 
     private static Set calculateTopLevelDeclarations(JSStatement statement) {
-        final Set out = new HashSet<>();
+        Set out = new HashSet<>();
 
         if (statement instanceof JSVarStatement varStatement) {
             addDeclarations(varStatement, out);
@@ -370,7 +370,7 @@ else if (statement instanceof JSBlockStatement blockStatement) {
     }
 
     private static void addDeclarations(JSVarStatement statement, Set declaredVars) {
-        for (final JSVariable variable : statement.getVariables()) {
+        for (JSVariable variable : statement.getVariables()) {
             declaredVars.add(variable.getName());
         }
     }
@@ -422,7 +422,7 @@ public void visitJSReferenceExpression(JSReferenceExpression JSReferenceExpressi
         @Override
         public void visitJSBreakStatement(JSBreakStatement breakStatement) {
             super.visitJSBreakStatement(breakStatement);
-            final JSStatement exitedStatement = breakStatement.getStatementToBreak();
+            JSStatement exitedStatement = breakStatement.getStatementToBreak();
             if (exitedStatement == null) {
                 return;
             }
@@ -449,7 +449,7 @@ public void visitJSReferenceExpression(JSReferenceExpression JSReferenceExpressi
         @Override
         public void visitJSContinueStatement(JSContinueStatement continueStatement) {
             super.visitJSContinueStatement(continueStatement);
-            final JSStatement statement = continueStatement.getStatementToContinue();
+            JSStatement statement = continueStatement.getStatementToContinue();
             if (statement == null) {
                 return;
             }
@@ -554,7 +554,7 @@ public void visitJSBlock(JSBlockStatement block) {
         public void visitJSVariable(JSVariable variable) {
             if (!this.hasConflictingDeclaration) {
                 super.visitJSVariable(variable);
-                final String name = variable.getName();
+                String name = variable.getName();
                 this.hasConflictingDeclaration = (name != null && name.equals(this.variableName));
             }
         }
@@ -577,19 +577,19 @@ private static class RecursiveCallVisitor extends JSRecursiveElementVisitor {
         public void visitJSCallExpression(JSCallExpression callExpression) {
             super.visitJSCallExpression(callExpression);
 
-            final JSExpression methodExpression = callExpression.getMethodExpression();
+            JSExpression methodExpression = callExpression.getMethodExpression();
 
             if (methodExpression == null || !(methodExpression instanceof JSReferenceExpression)) {
                 return;
             }
 
-            final JSReturnStatement returnStatement = PsiTreeUtil.getParentOfType(callExpression, JSReturnStatement.class);
+            JSReturnStatement returnStatement = PsiTreeUtil.getParentOfType(callExpression, JSReturnStatement.class);
 
             if (returnStatement == null) {
                 return;
             }
 
-            final PsiElement calledFunction = ((JSReferenceExpression)methodExpression).resolve();
+            PsiElement calledFunction = ((JSReferenceExpression)methodExpression).resolve();
 
             if (calledFunction == null ||
                 (!(calledFunction instanceof JSFunction) || !calledFunction.equals(this.function))) {
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/DeclarationUtils.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/DeclarationUtils.java
index 502aaf0e..414a2439 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/DeclarationUtils.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/DeclarationUtils.java
@@ -93,8 +93,8 @@ else if (statement instanceof JSLabeledStatement labeledStatement) {
             );
         }
         else if (statement instanceof JSIfStatement ifStatement) {
-            final JSStatement thenBranch = ifStatement.getThen();
-            final JSStatement elseBranch = ifStatement.getElse();
+            JSStatement thenBranch = ifStatement.getThen();
+            JSStatement elseBranch = ifStatement.getElse();
 
             calculateVariablesDeclared(thenBranch, variablesDeclaredAtTopLevel,
                 variablesDeclaredAtLowerLevels, false
@@ -117,7 +117,7 @@ else if (statement instanceof JSTryStatement tryStatement) {
                 false
             );
 
-            final JSCatchBlock catchBlock = tryStatement.getCatchBlock();
+            JSCatchBlock catchBlock = tryStatement.getCatchBlock();
 
             if (catchBlock != null) {
                 calculateVariablesDeclared(
@@ -147,7 +147,7 @@ private static void calculateVariablesDeclared(
         boolean isTopLevel
     ) {
         for (JSVariable variable : statement.getVariables()) {
-            final String variableName = variable.getName();
+            String variableName = variable.getName();
 
             if (isTopLevel) {
                 variablesDeclaredAtTopLevel.add(variableName);
@@ -188,7 +188,7 @@ public DeclarationConflictVisitor(Set declarations) {
         public void visitJSVariable(JSVariable variable) {
             super.visitJSVariable(variable);
 
-            final String name = variable.getName();
+            String name = variable.getName();
 
             for (String declaration : this.declarations) {
                 if (declaration.equals(name)) {
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/EquivalenceChecker.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/EquivalenceChecker.java
index 001e0dc2..c5fef4e4 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/EquivalenceChecker.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/EquivalenceChecker.java
@@ -69,8 +69,8 @@ public static boolean statementsAreEquivalent(JSStatement exp1, JSStatement exp2
             return false;
         }
 
-        final int type1 = getStatementType(exp1);
-        final int type2 = getStatementType(exp2);
+        int type1 = getStatementType(exp1);
+        int type2 = getStatementType(exp2);
 
         if (type1 != type2) {
             return false;
@@ -207,8 +207,8 @@ private static boolean switchStatementsAreEquivalent(JSSwitchStatement statement
             return false;
         }
 
-        final JSCaseClause[] caseClauses1 = statement1.getCaseClauses();
-        final JSCaseClause[] caseClauses2 = statement2.getCaseClauses();
+        JSCaseClause[] caseClauses1 = statement1.getCaseClauses();
+        JSCaseClause[] caseClauses2 = statement2.getCaseClauses();
 
         if (caseClauses1.length != caseClauses2.length) {
             return false;
@@ -231,8 +231,8 @@ private static boolean caseClausesAreEquivalent(JSCaseClause caseClause1, JSCase
             return false;
         }
 
-        final JSStatement[] statements1 = caseClause1.getStatements();
-        final JSStatement[] statements2 = caseClause2.getStatements();
+        JSStatement[] statements1 = caseClause1.getStatements();
+        JSStatement[] statements2 = caseClause2.getStatements();
 
         if (statements1.length != statements2.length) {
             return false;
@@ -271,8 +271,8 @@ private static boolean continueStatementsAreEquivalent(JSContinueStatement state
     }
 
     private static boolean labeledStatementsAreEquivalent(JSLabeledStatement statement1, JSLabeledStatement statement2) {
-        final PsiElement element1 = statement1.getLabelIdentifier();
-        final PsiElement element2 = statement2.getLabelIdentifier();
+        PsiElement element1 = statement1.getLabelIdentifier();
+        PsiElement element2 = statement2.getLabelIdentifier();
 
         return element1 == null
             ? element2 == null
@@ -322,10 +322,10 @@ public static boolean expressionsAreEquivalent(JSExpression exp1, JSExpression e
             return false;
         }
 
-        final JSExpression expToCompare1 = ParenthesesUtils.stripParentheses(exp1);
-        final JSExpression expToCompare2 = ParenthesesUtils.stripParentheses(exp2);
-        final int type1 = getExpressionType(expToCompare1);
-        final int type2 = getExpressionType(expToCompare2);
+        JSExpression expToCompare1 = ParenthesesUtils.stripParentheses(exp1);
+        JSExpression expToCompare2 = ParenthesesUtils.stripParentheses(exp2);
+        int type1 = getExpressionType(expToCompare1);
+        int type2 = getExpressionType(expToCompare2);
 
         if (type1 != type2) {
             return false;
@@ -397,18 +397,18 @@ private static boolean objectLiteralExpressionsAreEquivalent(
         JSObjectLiteralExpression objectLiteralExp1,
         JSObjectLiteralExpression objectLiteralExp2
     ) {
-        final JSProperty[] properties1 = objectLiteralExp1.getProperties();
-        final JSProperty[] properties2 = objectLiteralExp2.getProperties();
+        JSProperty[] properties1 = objectLiteralExp1.getProperties();
+        JSProperty[] properties2 = objectLiteralExp2.getProperties();
 
         if (properties1.length != properties2.length) {
             return false;
         }
 
         for (int index = 0; index < properties2.length; index++) {
-            final JSProperty property1 = properties1[index];
-            final JSProperty property2 = properties2[index];
-            final String propertyName1 = property1.getName();
-            final String propertyName2 = property2.getName();
+            JSProperty property1 = properties1[index];
+            JSProperty property2 = properties2[index];
+            String propertyName1 = property1.getName();
+            String propertyName2 = property2.getName();
 
             if (!(propertyName1 != null && propertyName2 != null &&
                 propertyName2.equals(propertyName1) &&
@@ -444,23 +444,23 @@ private static boolean callExpressionsAreEquivalent(JSCallExpression methodExp1,
             return false;
         }
 
-        final JSArgumentList argumentList1 = methodExp1.getArgumentList();
-        final JSArgumentList argumentList2 = methodExp2.getArgumentList();
+        JSArgumentList argumentList1 = methodExp1.getArgumentList();
+        JSArgumentList argumentList2 = methodExp2.getArgumentList();
 
         return argumentList1 != null && argumentList2 != null
             && expressionListsAreEquivalent(argumentList1.getArguments(), argumentList2.getArguments());
     }
 
     private static boolean newExpressionsAreEquivalent(JSNewExpression newExp1, JSNewExpression newExp2) {
-        final JSExpression exp1 = newExp1.getMethodExpression();
-        final JSExpression exp2 = newExp2.getMethodExpression();
+        JSExpression exp1 = newExp1.getMethodExpression();
+        JSExpression exp2 = newExp2.getMethodExpression();
 
         if (!expressionsAreEquivalent(exp1, exp2)) {
             return false;
         }
 
-        final JSArgumentList argumentList1 = newExp1.getArgumentList();
-        final JSArgumentList argumentList2 = newExp2.getArgumentList();
+        JSArgumentList argumentList1 = newExp1.getArgumentList();
+        JSArgumentList argumentList2 = newExp2.getArgumentList();
 
         return argumentList1 != null && argumentList2 != null
             && expressionListsAreEquivalent(argumentList1.getArguments(), argumentList2.getArguments());
@@ -474,8 +474,8 @@ private static boolean arrayLiteralExpressionsAreEquivalent(
     }
 
     private static boolean prefixExpressionsAreEquivalent(JSPrefixExpression prefixExp1, JSPrefixExpression prefixExp2) {
-        final IElementType operator1 = prefixExp1.getOperationSign();
-        final IElementType operator2 = prefixExp2.getOperationSign();
+        IElementType operator1 = prefixExp1.getOperationSign();
+        IElementType operator2 = prefixExp2.getOperationSign();
 
         return (operator1 != null && operator2 != null &&
             operator1.equals(operator2) &&
@@ -483,15 +483,15 @@ private static boolean prefixExpressionsAreEquivalent(JSPrefixExpression prefixE
     }
 
     private static boolean postfixExpressionsAreEquivalent(JSPostfixExpression postfixExp1, JSPostfixExpression postfixExp2) {
-        final IElementType operator1 = postfixExp1.getOperationSign();
-        final IElementType operator2 = postfixExp2.getOperationSign();
+        IElementType operator1 = postfixExp1.getOperationSign();
+        IElementType operator2 = postfixExp2.getOperationSign();
 
         return operator1.equals(operator2) && expressionsAreEquivalent(postfixExp1.getExpression(), postfixExp2.getExpression());
     }
 
     private static boolean binaryExpressionsAreEquivalent(JSBinaryExpression binaryExp1, JSBinaryExpression binaryExp2) {
-        final IElementType operator1 = binaryExp1.getOperationSign();
-        final IElementType operator2 = binaryExp2.getOperationSign();
+        IElementType operator1 = binaryExp1.getOperationSign();
+        IElementType operator2 = binaryExp2.getOperationSign();
 
         return operator1.equals(operator2)
             && expressionsAreEquivalent(binaryExp1.getLOperand(), binaryExp2.getLOperand())
@@ -499,8 +499,8 @@ && expressionsAreEquivalent(binaryExp1.getLOperand(), binaryExp2.getLOperand())
     }
 
     private static boolean assignmentExpressionsAreEquivalent(JSAssignmentExpression assignExp1, JSAssignmentExpression assignExp2) {
-        final IElementType operator1 = assignExp1.getOperationSign();
-        final IElementType operator2 = assignExp2.getOperationSign();
+        IElementType operator1 = assignExp1.getOperationSign();
+        IElementType operator2 = assignExp2.getOperationSign();
 
         return operator1.equals(operator2)
             && expressionsAreEquivalent(assignExp1.getLOperand(), assignExp2.getLOperand())
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/ErrorUtil.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/ErrorUtil.java
index adcd38ba..62050497 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/ErrorUtil.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/ErrorUtil.java
@@ -30,7 +30,7 @@ private ErrorUtil() {
     public static boolean containsError(@Nonnull PsiElement element) {
         // check only immediate children, full tree traversal is too expensive
         if (fullTraversal) {
-            final ErrorElementVisitor visitor = new ErrorElementVisitor();
+            ErrorElementVisitor visitor = new ErrorElementVisitor();
 
             element.accept(visitor);
             return visitor.containsErrorElement();
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/ExpressionUtil.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/ExpressionUtil.java
index 78aae5b7..f4a9d1d5 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/ExpressionUtil.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/ExpressionUtil.java
@@ -42,11 +42,11 @@ public static boolean isConstantExpression(JSExpression expression) {
 
     public static boolean isIncrementDecrementExpression(@Nonnull PsiElement expression) {
         if (expression instanceof JSPostfixExpression postfixExpression) {
-            final IElementType operator = postfixExpression.getOperationSign();
+            IElementType operator = postfixExpression.getOperationSign();
             return JSTokenTypes.PLUSPLUS.equals(operator) || JSTokenTypes.MINUSMINUS.equals(operator);
         }
         else if (expression instanceof JSPrefixExpression prefixExpression) {
-            final IElementType operator = prefixExpression.getOperationSign();
+            IElementType operator = prefixExpression.getOperationSign();
             return JSTokenTypes.PLUSPLUS.equals(operator) || JSTokenTypes.MINUSMINUS.equals(operator);
         }
         else {
@@ -112,7 +112,7 @@ public void visitJSPrefixOrPostfixExpression(JSExpression operand, IElementType
 
         @Override
         public void visitJSBinaryExpression(JSBinaryExpression expression) {
-            final JSExpression jsExpression = expression.getLOperand();
+            JSExpression jsExpression = expression.getLOperand();
             if (jsExpression == null) {
                 return;
             }
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/FindReferenceUtil.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/FindReferenceUtil.java
index d9d5f155..46db52b5 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/FindReferenceUtil.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/FindReferenceUtil.java
@@ -36,7 +36,7 @@ private FindReferenceUtil() {
     }
 
     public static JSReferenceExpression[] findReferences(@Nonnull JSVariable variable) {
-        final JSReferenceVisitor visitor = new JSReferenceVisitor(variable, Integer.MAX_VALUE, 0, Integer.MAX_VALUE);
+        JSReferenceVisitor visitor = new JSReferenceVisitor(variable, Integer.MAX_VALUE, 0, Integer.MAX_VALUE);
         JSElement scope = PsiTreeUtil.getParentOfType(variable, JSFunction.class);
 
         if (scope == null) {
@@ -84,7 +84,7 @@ public JSReferenceVisitor(@Nonnull JSVariable variable, int maxCount, int minTex
         @Override
         public void visitElement(PsiElement element) {
             if (this.references.size() < this.maxCount) {
-                final int elementTextOffset = element.getTextOffset();
+                int elementTextOffset = element.getTextOffset();
 
                 if (elementTextOffset + element.getTextLength() >= this.minTextOffset &&
                     elementTextOffset <= this.maxTextOffset) {
@@ -94,11 +94,11 @@ public void visitElement(PsiElement element) {
         }
 
         @Override
-        public void visitJSReferenceExpression(final JSReferenceExpression expression) {
+        public void visitJSReferenceExpression(JSReferenceExpression expression) {
             super.visitJSReferenceExpression(expression);
 
             if (expression.getText().equals(this.variableName)) {
-                final JSVariable referent = ControlFlowUtils.resolveVariable(expression);
+                JSVariable referent = ControlFlowUtils.resolveVariable(expression);
 
                 if (referent != null && this.variable.equals(referent)) {
                     this.references.add(expression);
@@ -135,12 +135,12 @@ public static Iterable getReferencesAfter(@Nonnull JSVariable variab
     }
 
     private static Iterable getReferences(
-        @Nonnull final JSVariable variable,
-        @Nullable final PsiElement scope,
-        final int minTextOffset,
-        final int maxTextOffset
+        @Nonnull JSVariable variable,
+        @Nullable PsiElement scope,
+        int minTextOffset,
+        int maxTextOffset
     ) {
-        final PsiElement iteratedScope;
+        PsiElement iteratedScope;
 
         if (scope == null) {
             JSElement function = PsiTreeUtil.getParentOfType(variable, JSFunction.class);
@@ -176,7 +176,7 @@ public boolean visitElement(PsiElement element) {
                 return false;
             }
 
-            final JSVariable referent = ControlFlowUtils.resolveVariable((JSReferenceExpression)element);
+            JSVariable referent = ControlFlowUtils.resolveVariable((JSReferenceExpression)element);
 
             return referent != null && this.variable.equals(referent);
         }
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/JSElementFactory.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/JSElementFactory.java
index 1cfd392e..3fd24921 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/JSElementFactory.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/JSElementFactory.java
@@ -45,10 +45,10 @@ private JSElementFactory() {
     }
 
     public static PsiElement addElementBefore(@Nonnull PsiElement element, @Nonnull PsiElement newElement) {
-        final ASTNode oldElementParentNode = element.getNode();
-        final PsiElement parentNode = element.getParent();
-        final ASTNode newElementParentNode = parentNode.getNode();
-        final ASTNode newElementNode = newElement.getNode();
+        ASTNode oldElementParentNode = element.getNode();
+        PsiElement parentNode = element.getParent();
+        ASTNode newElementParentNode = parentNode.getNode();
+        ASTNode newElementNode = newElement.getNode();
 
         if (newElementParentNode == null || newElementNode == null) {
             return null;
@@ -58,11 +58,11 @@ public static PsiElement addElementBefore(@Nonnull PsiElement element, @Nonnull
     }
 
     public static PsiElement addElementAfter(@Nonnull PsiElement element, @Nonnull PsiElement newElement) {
-        final ASTNode elementNode = element.getNode();
-        final ASTNode oldElementParentNode = ((elementNode == null) ? null : elementNode.getTreeNext());
-        final PsiElement parentNode = element.getParent();
-        final ASTNode newElementParentNode = parentNode.getNode();
-        final ASTNode newElementNode = newElement.getNode();
+        ASTNode elementNode = element.getNode();
+        ASTNode oldElementParentNode = ((elementNode == null) ? null : elementNode.getTreeNext());
+        PsiElement parentNode = element.getParent();
+        ASTNode newElementParentNode = parentNode.getNode();
+        ASTNode newElementNode = newElement.getNode();
 
         if (newElementParentNode == null || newElementNode == null) {
             return null;
@@ -73,21 +73,21 @@ public static PsiElement addElementAfter(@Nonnull PsiElement element, @Nonnull P
     }
 
     public static PsiElement addElementBefore(@Nonnull PsiElement element, @NonNls @Nonnull String elementText) {
-        final PsiElement newElement = createDummyFile(element.getProject(), elementText).getFirstChild();
+        PsiElement newElement = createDummyFile(element.getProject(), elementText).getFirstChild();
 
         assert (newElement != null);
         return addElementBefore(element, newElement);
     }
 
     public static PsiElement addElementAfter(@Nonnull PsiElement element, @Nonnull String elementText) {
-        final PsiElement newElement = createDummyFile(element.getProject(), elementText).getFirstChild();
+        PsiElement newElement = createDummyFile(element.getProject(), elementText).getFirstChild();
 
         assert (newElement != null);
         return addElementAfter(element, newElement);
     }
 
     public static ASTNode createElementFromText(Project project, String text) {
-        final PsiElement element = createDummyFile(project, text).getFirstChild();
+        PsiElement element = createDummyFile(project, text).getFirstChild();
 
         assert (element != null);
         return element.getNode();
@@ -95,7 +95,7 @@ public static ASTNode createElementFromText(Project project, String text) {
 
     @Nonnull
     private static PsiFile createDummyFile(Project project, String text) {
-        final ParserDefinition def = ParserDefinition.forLanguage(JavaScriptLanguage.INSTANCE);
+        ParserDefinition def = ParserDefinition.forLanguage(JavaScriptLanguage.INSTANCE);
 
         assert (def != null);
         return PsiFileFactory.getInstance(project)
@@ -104,14 +104,14 @@ private static PsiFile createDummyFile(Project project, String text) {
 
     public static JSStatement replaceElementWithStatement(@Nonnull JSElement element, @NonNls @Nonnull String statementText)
         throws IncorrectOperationException {
-        final ASTNode newStatementNode = JSChangeUtil.createStatementFromText(
+        ASTNode newStatementNode = JSChangeUtil.createStatementFromText(
             element.getProject(),
             statementText
         );
 
-        final ASTNode oldStatementParentNode = element.getNode();
-        final PsiElement parentNode = element.getParent();
-        final ASTNode newStatementParentNode = parentNode.getNode();
+        ASTNode oldStatementParentNode = element.getNode();
+        PsiElement parentNode = element.getParent();
+        ASTNode newStatementParentNode = parentNode.getNode();
 
         if (newStatementParentNode == null || oldStatementParentNode == null || newStatementNode == null) {
             return null;
@@ -124,7 +124,7 @@ public static JSStatement replaceElementWithStatement(@Nonnull JSElement element
 
     public static JSExpression replaceExpression(@Nonnull JSExpression expression, @NonNls @Nonnull String text)
         throws IncorrectOperationException {
-        final JSExpression newExpressionNode = JSChangeUtil.createExpressionFromText(
+        JSExpression newExpressionNode = JSChangeUtil.createExpressionFromText(
             expression.getProject(),
             text
         );
@@ -134,10 +134,10 @@ public static JSExpression replaceExpression(@Nonnull JSExpression expression, @
 
     public static JSExpression replaceExpression(@Nonnull JSExpression expression, @Nonnull JSExpression newExpression)
         throws IncorrectOperationException {
-        final ASTNode newExpressionNode = newExpression.getNode();
-        final ASTNode oldExpressionNode = expression.getNode();
-        final PsiElement parentNode = expression.getParent();
-        final ASTNode grandParentNode = parentNode.getNode();
+        ASTNode newExpressionNode = newExpression.getNode();
+        ASTNode oldExpressionNode = expression.getNode();
+        PsiElement parentNode = expression.getParent();
+        ASTNode grandParentNode = parentNode.getNode();
 
         if (grandParentNode == null || oldExpressionNode == null || newExpressionNode == null) {
             return null;
@@ -151,14 +151,14 @@ public static JSExpression replaceExpression(@Nonnull JSExpression expression, @
 
     public static JSStatement replaceStatement(@Nonnull JSStatement statement, @NonNls @Nonnull String text)
         throws IncorrectOperationException {
-        final ASTNode newStatementNode = JSChangeUtil.createStatementFromText(
+        ASTNode newStatementNode = JSChangeUtil.createStatementFromText(
             statement.getProject(),
             text
         );
 
-        final ASTNode oldStatementParentNode = statement.getNode();
-        final PsiElement parentNode = statement.getParent();
-        final ASTNode newStatementParentNode = parentNode.getNode();
+        ASTNode oldStatementParentNode = statement.getNode();
+        PsiElement parentNode = statement.getParent();
+        ASTNode newStatementParentNode = parentNode.getNode();
 
         if (newStatementParentNode == null || oldStatementParentNode == null || newStatementNode == null) {
             return null;
@@ -172,13 +172,13 @@ public static JSStatement replaceStatement(@Nonnull JSStatement statement, @NonN
 
     public static JSStatement addStatementBefore(@Nonnull JSStatement statement, @NonNls @Nonnull String previousStatementText)
         throws IncorrectOperationException {
-        final ASTNode newStatementNode = JSChangeUtil.createStatementFromText(
+        ASTNode newStatementNode = JSChangeUtil.createStatementFromText(
             statement.getProject(),
             previousStatementText
         );
-        final ASTNode oldStatementParentNode = statement.getNode();
-        final PsiElement parentNode = statement.getParent();
-        final ASTNode newStatementParentNode = parentNode.getNode();
+        ASTNode oldStatementParentNode = statement.getNode();
+        PsiElement parentNode = statement.getParent();
+        ASTNode newStatementParentNode = parentNode.getNode();
 
         if (newStatementParentNode == null || newStatementNode == null) {
             return null;
@@ -192,14 +192,14 @@ public static JSStatement addStatementBefore(@Nonnull JSStatement statement, @No
 
     public static JSStatement addStatementAfter(@Nonnull JSStatement statement, @NonNls @Nonnull String nextStatementText)
         throws IncorrectOperationException {
-        final ASTNode newStatementNode = JSChangeUtil.createStatementFromText(
+        ASTNode newStatementNode = JSChangeUtil.createStatementFromText(
             statement.getProject(),
             nextStatementText
         );
-        final ASTNode statementNode = statement.getNode();
-        final ASTNode oldStatementParentNode = ((statementNode == null) ? null : statementNode.getTreeNext());
-        final PsiElement parentNode = statement.getParent();
-        final ASTNode newStatementParentNode = parentNode.getNode();
+        ASTNode statementNode = statement.getNode();
+        ASTNode oldStatementParentNode = ((statementNode == null) ? null : statementNode.getTreeNext());
+        PsiElement parentNode = statement.getParent();
+        ASTNode newStatementParentNode = parentNode.getNode();
 
         if (newStatementParentNode == null || newStatementNode == null) {
             return null;
@@ -238,17 +238,17 @@ public static void addRangeAfter(JSStatement[] statements, int start, int length
     public static void replaceExpressionWithNegatedExpression(@Nonnull JSExpression newExpression, @Nonnull JSExpression exp)
         throws IncorrectOperationException {
         JSExpression expressionToReplace = BoolUtils.findNegation(exp);
-        final String replacementString;
+        String replacementString;
 
         if (expressionToReplace == null) {
             expressionToReplace = exp;
 
             if (ComparisonUtils.isComparisonOperator(newExpression)) {
-                final JSBinaryExpression binaryExpression = (JSBinaryExpression)newExpression;
-                final IElementType operationSign = binaryExpression.getOperationSign();
-                final String negatedComparison = ComparisonUtils.getNegatedOperatorText(operationSign);
-                final JSExpression leftOperand = binaryExpression.getLOperand();
-                final JSExpression rightOperand = binaryExpression.getROperand();
+                JSBinaryExpression binaryExpression = (JSBinaryExpression)newExpression;
+                IElementType operationSign = binaryExpression.getOperationSign();
+                String negatedComparison = ComparisonUtils.getNegatedOperatorText(operationSign);
+                JSExpression leftOperand = binaryExpression.getLOperand();
+                JSExpression rightOperand = binaryExpression.getROperand();
 
                 assert (rightOperand != null);
 
@@ -285,21 +285,21 @@ public static void replaceStatementWithUnwrapping(JSStatement statement, JSState
             return;
         }
 
-        final JSBlockStatement parentBlock = PsiTreeUtil.getParentOfType(newBranch, JSBlockStatement.class);
+        JSBlockStatement parentBlock = PsiTreeUtil.getParentOfType(newBranch, JSBlockStatement.class);
 
         if (parentBlock == null) {
             JSElementFactory.replaceStatement(statement, newBranch.getText());
             return;
         }
 
-        final JSBlockStatement block = (JSBlockStatement)newBranch;
+        JSBlockStatement block = (JSBlockStatement)newBranch;
 
         if (ControlFlowUtils.containsConflictingDeclarations(block, parentBlock)) {
             JSElementFactory.replaceStatement(statement, newBranch.getText());
             return;
         }
 
-        final PsiElement containingElement = statement.getParent();
+        PsiElement containingElement = statement.getParent();
 
         assert (containingElement instanceof JSStatement);
 
@@ -308,8 +308,8 @@ public static void replaceStatementWithUnwrapping(JSStatement statement, JSState
     }
 
     public static void removeElement(PsiElement element) {
-        final ASTNode node = element.getNode();
-        final ASTNode parentNode = element.getParent().getNode();
+        ASTNode node = element.getNode();
+        ASTNode parentNode = element.getParent().getNode();
 
         if (node != null && parentNode != null) {
             parentNode.removeChild(node);
@@ -330,8 +330,8 @@ public static PsiElement getNonWhiteSpaceSibling(PsiElement element, boolean for
     }
 
     public static boolean isFileReadOnly(Project project, PsiFile file) {
-        final ReadonlyStatusHandler instance = ReadonlyStatusHandler.getInstance(project);
-        final VirtualFile virtualFile = file.getVirtualFile();
+        ReadonlyStatusHandler instance = ReadonlyStatusHandler.getInstance(project);
+        VirtualFile virtualFile = file.getVirtualFile();
 
         return virtualFile != null && instance.ensureFilesWritable(virtualFile).hasReadonlyFiles();
     }
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/JSRecursionVisitor.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/JSRecursionVisitor.java
index aa1adf0d..51b94fde 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/JSRecursionVisitor.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/JSRecursionVisitor.java
@@ -41,13 +41,13 @@ public void visitJSCallExpression(JSCallExpression call) {
         if (!this.recursive) {
             super.visitJSCallExpression(call);
 
-            final JSExpression methodExpression = call.getMethodExpression();
-            final String qualifiedMethodText = methodExpression.getText();
-            final String methodText = qualifiedMethodText.substring(qualifiedMethodText.lastIndexOf('.') + 1);
+            JSExpression methodExpression = call.getMethodExpression();
+            String qualifiedMethodText = methodExpression.getText();
+            String methodText = qualifiedMethodText.substring(qualifiedMethodText.lastIndexOf('.') + 1);
 
             if (methodText.equals(this.functionName)) {
-                final PsiReference methodReference = methodExpression.getReference();
-                final PsiElement referent = methodReference == null ? null : methodReference.resolve();
+                PsiReference methodReference = methodExpression.getReference();
+                PsiElement referent = methodReference == null ? null : methodReference.resolve();
 
                 if (referent != null) {
                     if (referent instanceof JSFunction) {
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/ParenthesesUtils.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/ParenthesesUtils.java
index c8f6ff95..9d099475 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/ParenthesesUtils.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/ParenthesesUtils.java
@@ -196,7 +196,7 @@ public static String removeParentheses(JSExpression expression) {
     }
 
     private static String removeParensFromReferenceExpression(JSReferenceExpression expression) {
-        final JSExpression qualifier = expression.getQualifier();
+        JSExpression qualifier = expression.getQualifier();
 
         if (qualifier != null) {
             return removeParentheses(qualifier) + '.' + expression.getReferencedName();
@@ -207,24 +207,24 @@ private static String removeParensFromReferenceExpression(JSReferenceExpression
     }
 
     private static String removeParensFromParenthesizedExpression(JSParenthesizedExpression parenthesizedExp) {
-        final JSExpression body = stripParentheses(parenthesizedExp.getInnerExpression());
+        JSExpression body = stripParentheses(parenthesizedExp.getInnerExpression());
 
         if (!(parenthesizedExp.getParent() instanceof JSExpression)) {
             return removeParentheses(body);
         }
 
-        final JSExpression parentExp = (JSExpression)parenthesizedExp.getParent();
-        final int parentPrecendence = getPrecendence(parentExp);
-        final int childPrecendence = getPrecendence(body);
+        JSExpression parentExp = (JSExpression)parenthesizedExp.getParent();
+        int parentPrecendence = getPrecendence(parentExp);
+        int childPrecendence = getPrecendence(body);
 
         if (parentPrecendence < childPrecendence) {
             return '(' + removeParentheses(body) + ')';
         }
         else if (parentPrecendence == childPrecendence) {
             if (parentExp instanceof JSBinaryExpression parentBiExp && body instanceof JSBinaryExpression bodyBiExp) {
-                final IElementType parentOperator = parentBiExp.getOperationSign();
-                final IElementType bodyOperator = bodyBiExp.getOperationSign();
-                final JSExpression lhs = parentBiExp.getLOperand();
+                IElementType parentOperator = parentBiExp.getOperationSign();
+                IElementType bodyOperator = bodyBiExp.getOperationSign();
+                JSExpression lhs = parentBiExp.getLOperand();
 
                 if (lhs.equals(parenthesizedExp) && parentOperator.equals(bodyOperator)) {
                     return removeParentheses(body);
@@ -243,9 +243,9 @@ else if (parentPrecendence == childPrecendence) {
     }
 
     private static String removeParensFromConditionalExpression(JSConditionalExpression conditionalExp) {
-        final JSExpression condition = conditionalExp.getCondition();
-        final JSExpression thenBranch = conditionalExp.getThen();
-        final JSExpression elseBranch = conditionalExp.getElse();
+        JSExpression condition = conditionalExp.getCondition();
+        JSExpression thenBranch = conditionalExp.getThen();
+        JSExpression elseBranch = conditionalExp.getElse();
 
         return removeParentheses(condition) + " ? " +
             removeParentheses(thenBranch) + " : " +
@@ -253,25 +253,25 @@ private static String removeParensFromConditionalExpression(JSConditionalExpress
     }
 
     private static String removeParensFromBinaryExpression(JSBinaryExpression binaryExp) {
-        final JSExpression lhs = binaryExp.getLOperand();
-        final JSExpression rhs = binaryExp.getROperand();
-        final IElementType sign = binaryExp.getOperationSign();
+        JSExpression lhs = binaryExp.getLOperand();
+        JSExpression rhs = binaryExp.getROperand();
+        IElementType sign = binaryExp.getOperationSign();
 
         return removeParentheses(lhs) + ' ' + BinaryOperatorUtils.getOperatorText(sign) + ' ' + removeParentheses(rhs);
     }
 
     private static String removeParensFromPostfixExpression(JSPostfixExpression postfixExp) {
-        final JSExpression body = postfixExp.getExpression();
-        final IElementType sign = postfixExp.getOperationSign();
+        JSExpression body = postfixExp.getExpression();
+        IElementType sign = postfixExp.getOperationSign();
 
         return removeParentheses(body) + BinaryOperatorUtils.getOperatorText(sign);
     }
 
     private static String removeParensFromPrefixExpression(JSPrefixExpression prefixExp) {
-        final JSExpression body = prefixExp.getExpression();
+        JSExpression body = prefixExp.getExpression();
         IElementType sign = prefixExp.getOperationSign();
         if (sign == null) {
-            final ASTNode[] astNodes = prefixExp.getNode().getChildren(JSTokenTypes.UNARY_OPERATIONS); // hack for 8.1
+            ASTNode[] astNodes = prefixExp.getNode().getChildren(JSTokenTypes.UNARY_OPERATIONS); // hack for 8.1
             sign = astNodes.length == 1 ? astNodes[0].getElementType() : null;
         }
 
@@ -279,14 +279,14 @@ private static String removeParensFromPrefixExpression(JSPrefixExpression prefix
     }
 
     private static String removeParensFromArrayLiteralExpression(JSArrayLiteralExpression init) {
-        final JSExpression[] contents = init.getExpressions();
-        final String text = init.getText();
-        final int textLength = text.length();
-        final StringBuilder out = new StringBuilder(textLength);
+        JSExpression[] contents = init.getExpressions();
+        String text = init.getText();
+        int textLength = text.length();
+        StringBuilder out = new StringBuilder(textLength);
 
         out.append('(');
         for (int index = 0; index < contents.length; index++) {
-            final JSExpression arg = contents[index];
+            JSExpression arg = contents[index];
 
             if (index != 0) {
                 out.append(',');
@@ -298,30 +298,30 @@ private static String removeParensFromArrayLiteralExpression(JSArrayLiteralExpre
     }
 
     private static String removeParensFromAssignmentExpression(JSAssignmentExpression assignment) {
-        final JSExpression lhs = assignment.getLOperand();
-        final JSExpression rhs = assignment.getROperand();
-        final IElementType sign = assignment.getOperationSign();
+        JSExpression lhs = assignment.getLOperand();
+        JSExpression rhs = assignment.getROperand();
+        IElementType sign = assignment.getOperationSign();
         return removeParentheses(lhs) + ' ' +
             BinaryOperatorUtils.getOperatorText(sign) + ' ' +
             removeParentheses(rhs);
     }
 
     private static String removeParensFromFunctionCallExpression(JSCallExpression functionCall) {
-        final JSExpression target = functionCall.getMethodExpression();
-        final JSArgumentList argumentList = functionCall.getArgumentList();
+        JSExpression target = functionCall.getMethodExpression();
+        JSArgumentList argumentList = functionCall.getArgumentList();
 
         assert (argumentList != null);
 
-        final JSExpression[] args = argumentList.getArguments();
-        final String methodCallText = functionCall.getText();
-        final int length = methodCallText.length();
-        final StringBuilder out = new StringBuilder(length);
-        final String strippedTarget = removeParentheses(target);
+        JSExpression[] args = argumentList.getArguments();
+        String methodCallText = functionCall.getText();
+        int length = methodCallText.length();
+        StringBuilder out = new StringBuilder(length);
+        String strippedTarget = removeParentheses(target);
 
         out.append(strippedTarget);
         out.append('(');
         for (int index = 0; index < args.length; index++) {
-            final JSExpression arg = args[index];
+            JSExpression arg = args[index];
             if (index != 0) {
                 out.append(',');
             }
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/RecursionUtil.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/RecursionUtil.java
index dac655d9..e2711dd3 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/RecursionUtil.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/RecursionUtil.java
@@ -38,7 +38,7 @@ public static boolean statementMayReturnBeforeRecursing(JSStatement statement, J
             return false;
         }
         else if (statement instanceof JSReturnStatement returnStatement) {
-            final JSExpression returnValue = returnStatement.getExpression();
+            JSExpression returnValue = returnStatement.getExpression();
             return returnValue == null || !RecursionUtil.expressionDefinitelyRecurses(returnValue, method);
         }
         else if (statement instanceof JSForStatement forStatement) {
@@ -75,16 +75,16 @@ else if (statement instanceof JSSwitchStatement switchStatement) {
     }
 
     private static boolean doWhileStatementMayReturnBeforeRecursing(JSDoWhileStatement loopStatement, JSFunction method) {
-        final JSStatement body = loopStatement.getBody();
+        JSStatement body = loopStatement.getBody();
         return RecursionUtil.statementMayReturnBeforeRecursing(body, method);
     }
 
     private static boolean whileStatementMayReturnBeforeRecursing(JSWhileStatement loopStatement, JSFunction method) {
-        final JSExpression test = loopStatement.getCondition();
+        JSExpression test = loopStatement.getCondition();
         if (RecursionUtil.expressionDefinitelyRecurses(test, method)) {
             return false;
         }
-        final JSStatement body = loopStatement.getBody();
+        JSStatement body = loopStatement.getBody();
         return RecursionUtil.statementMayReturnBeforeRecursing(body, method);
     }
 
@@ -102,17 +102,17 @@ private static boolean forStatementMayReturnBeforeRecursing(JSForStatement loopS
     }
 
     private static boolean forInStatementMayReturnBeforeRecursing(JSForInStatement loopStatement, JSFunction method) {
-        final JSExpression collection = loopStatement.getCollectionExpression();
+        JSExpression collection = loopStatement.getCollectionExpression();
         if (RecursionUtil.expressionDefinitelyRecurses(collection, method)) {
             return false;
         }
-        final JSStatement body = loopStatement.getBody();
+        JSStatement body = loopStatement.getBody();
         return RecursionUtil.statementMayReturnBeforeRecursing(body, method);
     }
 
     private static boolean switchStatementMayReturnBeforeRecursing(JSSwitchStatement switchStatement, JSFunction method) {
-        for (final JSCaseClause clause : switchStatement.getCaseClauses()) {
-            for (final JSStatement statement : clause.getStatements()) {
+        for (JSCaseClause clause : switchStatement.getCaseClauses()) {
+            for (JSStatement statement : clause.getStatements()) {
                 if (RecursionUtil.statementMayReturnBeforeRecursing(statement, method)) {
                     return true;
                 }
@@ -122,7 +122,7 @@ private static boolean switchStatementMayReturnBeforeRecursing(JSSwitchStatement
     }
 
     private static boolean tryStatementMayReturnBeforeRecursing(JSTryStatement tryStatement, JSFunction method) {
-        final JSStatement finallyStatement = tryStatement.getFinallyStatement();
+        JSStatement finallyStatement = tryStatement.getFinallyStatement();
 
         if (finallyStatement != null) {
             if (RecursionUtil.statementMayReturnBeforeRecursing(finallyStatement, method)) {
@@ -133,16 +133,16 @@ private static boolean tryStatementMayReturnBeforeRecursing(JSTryStatement trySt
             }
         }
 
-        final JSStatement statement = tryStatement.getStatement();
+        JSStatement statement = tryStatement.getStatement();
 
         if (RecursionUtil.statementMayReturnBeforeRecursing(statement, method)) {
             return true;
         }
 
-        final JSCatchBlock catchBlock = tryStatement.getCatchBlock();
+        JSCatchBlock catchBlock = tryStatement.getCatchBlock();
 
         if (catchBlock != null) {
-            final JSStatement catchStatement = catchBlock.getStatement();
+            JSStatement catchStatement = catchBlock.getStatement();
 
             if (RecursionUtil.statementMayReturnBeforeRecursing(catchStatement, method)) {
                 return true;
@@ -152,20 +152,20 @@ private static boolean tryStatementMayReturnBeforeRecursing(JSTryStatement trySt
     }
 
     private static boolean ifStatementMayReturnBeforeRecursing(JSIfStatement ifStatement, JSFunction method) {
-        final JSExpression test = ifStatement.getCondition();
+        JSExpression test = ifStatement.getCondition();
         if (RecursionUtil.expressionDefinitelyRecurses(test, method)) {
             return false;
         }
-        final JSStatement thenBranch = ifStatement.getThen();
+        JSStatement thenBranch = ifStatement.getThen();
         if (RecursionUtil.statementMayReturnBeforeRecursing(thenBranch, method)) {
             return true;
         }
-        final JSStatement elseBranch = ifStatement.getElse();
+        JSStatement elseBranch = ifStatement.getElse();
         return elseBranch != null && RecursionUtil.statementMayReturnBeforeRecursing(elseBranch, method);
     }
 
     private static boolean labeledStatementMayReturnBeforeRecursing(JSLabeledStatement labeledStatement, JSFunction method) {
-        final JSStatement statement = labeledStatement.getStatement();
+        JSStatement statement = labeledStatement.getStatement();
         return RecursionUtil.statementMayReturnBeforeRecursing(statement, method);
     }
 
@@ -174,9 +174,9 @@ private static boolean blockStatementMayReturnBeforeRecursing(JSBlockStatement b
             return true;
         }
 
-        final JSStatement[] statements = block.getStatements();
+        JSStatement[] statements = block.getStatements();
 
-        for (final JSStatement statement : statements) {
+        for (JSStatement statement : statements) {
             if (RecursionUtil.statementMayReturnBeforeRecursing(statement, method)) {
                 return true;
             }
@@ -188,7 +188,7 @@ private static boolean blockStatementMayReturnBeforeRecursing(JSBlockStatement b
     }
 
     public static boolean functionMayRecurse(@Nonnull JSFunction function) {
-        final JSRecursionVisitor recursionVisitor = new JSRecursionVisitor(function);
+        JSRecursionVisitor recursionVisitor = new JSRecursionVisitor(function);
 
         if (recursionVisitor.isFunctionNamed()) {
             function.accept(recursionVisitor);
@@ -240,7 +240,7 @@ private static boolean expressionDefinitelyRecurses(JSExpression exp, JSFunction
     }
 
     private static boolean conditionalExpressionDefinitelyRecurses(JSConditionalExpression expression, JSFunction method) {
-        final JSExpression condExpression = expression.getCondition();
+        JSExpression condExpression = expression.getCondition();
 
         return RecursionUtil.expressionDefinitelyRecurses(condExpression, method) ||
             (RecursionUtil.expressionDefinitelyRecurses(expression.getThen(), method) &&
@@ -248,13 +248,13 @@ private static boolean conditionalExpressionDefinitelyRecurses(JSConditionalExpr
     }
 
     private static boolean binaryExpressionDefinitelyRecurses(JSBinaryExpression expression, JSFunction method) {
-        final JSExpression lhs = expression.getLOperand();
+        JSExpression lhs = expression.getLOperand();
 
         if (RecursionUtil.expressionDefinitelyRecurses(lhs, method)) {
             return true;
         }
 
-        final IElementType tokenType = expression.getOperationSign();
+        IElementType tokenType = expression.getOperationSign();
 
         if (JSTokenTypes.ANDAND.equals(tokenType) || JSTokenTypes.OROR.equals(tokenType)) {
             return false;
@@ -267,14 +267,14 @@ private static boolean indexedPropertyAccessExpressionDefinitelyRecurses(
         JSIndexedPropertyAccessExpression expression,
         JSFunction method
     ) {
-        final JSExpression arrayExp = expression.getQualifier();
-        final JSExpression indexExp = expression.getIndexExpression();
+        JSExpression arrayExp = expression.getQualifier();
+        JSExpression indexExp = expression.getIndexExpression();
         return RecursionUtil.expressionDefinitelyRecurses(arrayExp, method)
             || RecursionUtil.expressionDefinitelyRecurses(indexExp, method);
     }
 
     private static boolean arrayLiteralExpressionDefinitelyRecurses(JSArrayLiteralExpression expression, JSFunction method) {
-        for (final JSExpression initializer : expression.getExpressions()) {
+        for (JSExpression initializer : expression.getExpressions()) {
             if (RecursionUtil.expressionDefinitelyRecurses(initializer, method)) {
                 return true;
             }
@@ -283,38 +283,38 @@ private static boolean arrayLiteralExpressionDefinitelyRecurses(JSArrayLiteralEx
     }
 
     private static boolean prefixExpressionDefinitelyRecurses(JSPrefixExpression expression, JSFunction method) {
-        final JSExpression operand = expression.getExpression();
+        JSExpression operand = expression.getExpression();
         return RecursionUtil.expressionDefinitelyRecurses(operand, method);
     }
 
     private static boolean postfixExpressionDefinitelyRecurses(JSPostfixExpression expression, JSFunction method) {
-        final JSExpression operand = expression.getExpression();
+        JSExpression operand = expression.getExpression();
         return RecursionUtil.expressionDefinitelyRecurses(operand, method);
     }
 
     private static boolean parenthesizedExpressionDefinitelyRecurses(JSParenthesizedExpression expression, JSFunction method) {
-        final JSExpression innerExpression = expression.getInnerExpression();
+        JSExpression innerExpression = expression.getInnerExpression();
         return RecursionUtil.expressionDefinitelyRecurses(innerExpression, method);
     }
 
     private static boolean referenceExpressionDefinitelyRecurses(JSReferenceExpression expression, JSFunction method) {
-        final JSExpression qualifierExpression = expression.getQualifier();
+        JSExpression qualifierExpression = expression.getQualifier();
         return (qualifierExpression != null &&
             RecursionUtil.expressionDefinitelyRecurses(qualifierExpression, method));
     }
 
     private static boolean assignmentExpressionDefinitelyRecurses(JSAssignmentExpression assignmentExpression, JSFunction method) {
-        final JSExpression lhs = assignmentExpression.getLOperand();
-        final JSExpression rhs = assignmentExpression.getROperand();
+        JSExpression lhs = assignmentExpression.getLOperand();
+        JSExpression rhs = assignmentExpression.getROperand();
         return RecursionUtil.expressionDefinitelyRecurses(rhs, method)
             || RecursionUtil.expressionDefinitelyRecurses(lhs, method);
     }
 
     private static boolean newExpressionDefinitelyRecurses(JSNewExpression exp, JSFunction method) {
-        final JSArgumentList argumentList = exp.getArgumentList();
+        JSArgumentList argumentList = exp.getArgumentList();
         if (argumentList != null) {
-            final JSExpression[] args = argumentList.getArguments();
-            for (final JSExpression arg : args) {
+            JSExpression[] args = argumentList.getArguments();
+            for (JSExpression arg : args) {
                 if (RecursionUtil.expressionDefinitelyRecurses(arg, method)) {
                     return true;
                 }
@@ -324,13 +324,13 @@ private static boolean newExpressionDefinitelyRecurses(JSNewExpression exp, JSFu
     }
 
     private static boolean callExpressionDefinitelyRecurses(JSCallExpression exp, JSFunction method) {
-        final JSFunction calledMethod = ControlFlowUtils.resolveMethod(exp);
+        JSFunction calledMethod = ControlFlowUtils.resolveMethod(exp);
 
         if (calledMethod != null && calledMethod.equals(method)) {
             return true;
         }
 
-        final JSExpression methodExpression = exp.getMethodExpression();
+        JSExpression methodExpression = exp.getMethodExpression();
 
         if (methodExpression == null) {
             return false;
@@ -339,7 +339,7 @@ else if (RecursionUtil.expressionDefinitelyRecurses(methodExpression, method)) {
             return true;
         }
 
-        for (final JSExpression arg : exp.getArgumentList().getArguments()) {
+        for (JSExpression arg : exp.getArgumentList().getArguments()) {
             if (RecursionUtil.expressionDefinitelyRecurses(arg, method)) {
                 return true;
             }
@@ -358,12 +358,12 @@ private static boolean statementDefinitelyRecurses(JSStatement statement, JSFunc
             return false;
         }
         else if (statement instanceof JSExpressionStatement expressionStatement) {
-            final JSExpression expression = expressionStatement.getExpression();
+            JSExpression expression = expressionStatement.getExpression();
             return RecursionUtil.expressionDefinitelyRecurses(expression, method);
         }
         else if (statement instanceof JSVarStatement varStatement) {
-            for (final JSVariable variable : varStatement.getVariables()) {
-                final JSExpression initializer = variable.getInitializer();
+            for (JSVariable variable : varStatement.getVariables()) {
+                JSExpression initializer = variable.getInitializer();
                 if (RecursionUtil.expressionDefinitelyRecurses(initializer, method)) {
                     return true;
                 }
@@ -371,7 +371,7 @@ else if (statement instanceof JSVarStatement varStatement) {
             return false;
         }
         else if (statement instanceof JSReturnStatement returnStatement) {
-            final JSExpression returnValue = returnStatement.getExpression();
+            JSExpression returnValue = returnStatement.getExpression();
             if (returnValue != null) {
                 if (RecursionUtil.expressionDefinitelyRecurses(returnValue, method)) {
                     return true;
@@ -413,22 +413,22 @@ else if (statement instanceof JSSwitchStatement switchStatement) {
     }
 
     private static boolean switchStatementDefinitelyRecurses(JSSwitchStatement switchStatement, JSFunction method) {
-        final JSExpression switchExpression = switchStatement.getSwitchExpression();
+        JSExpression switchExpression = switchStatement.getSwitchExpression();
         return RecursionUtil.expressionDefinitelyRecurses(switchExpression, method);
     }
 
     private static boolean tryStatementDefinitelyRecurses(JSTryStatement tryStatement, JSFunction method) {
-        final JSStatement statement = tryStatement.getStatement();
+        JSStatement statement = tryStatement.getStatement();
         if (RecursionUtil.statementDefinitelyRecurses(statement, method)) {
             return true;
         }
-        final JSStatement finallyStatement = tryStatement.getFinallyStatement();
+        JSStatement finallyStatement = tryStatement.getFinallyStatement();
         return RecursionUtil.statementDefinitelyRecurses(finallyStatement, method);
     }
 
     private static boolean blockStatementDefinitelyRecurses(JSBlockStatement block, JSFunction method) {
         if (block != null) {
-            for (final JSStatement statement : block.getStatements()) {
+            for (JSStatement statement : block.getStatements()) {
                 if (RecursionUtil.statementDefinitelyRecurses(statement, method)) {
                     return true;
                 }
@@ -438,12 +438,12 @@ private static boolean blockStatementDefinitelyRecurses(JSBlockStatement block,
     }
 
     private static boolean ifStatementDefinitelyRecurses(JSIfStatement ifStatement, JSFunction method) {
-        final JSExpression condition = ifStatement.getCondition();
+        JSExpression condition = ifStatement.getCondition();
         if (RecursionUtil.expressionDefinitelyRecurses(condition, method)) {
             return true;
         }
-        final JSStatement thenBranch = ifStatement.getThen();
-        final JSStatement elseBranch = ifStatement.getElse();
+        JSStatement thenBranch = ifStatement.getThen();
+        JSStatement elseBranch = ifStatement.getElse();
         if (thenBranch == null || elseBranch == null) {
             return false;
         }
@@ -452,8 +452,8 @@ private static boolean ifStatementDefinitelyRecurses(JSIfStatement ifStatement,
     }
 
     private static boolean forStatementDefinitelyRecurses(JSForStatement forStatement, JSFunction method) {
-        final JSStatement declaration = forStatement.getVarDeclaration();
-        final JSExpression initialization = forStatement.getInitialization();
+        JSStatement declaration = forStatement.getVarDeclaration();
+        JSExpression initialization = forStatement.getInitialization();
 
         if (declaration != null &&
             RecursionUtil.statementDefinitelyRecurses(declaration, method)) {
@@ -464,54 +464,54 @@ else if (initialization != null &&
             return true;
         }
 
-        final JSExpression condition = forStatement.getCondition();
+        JSExpression condition = forStatement.getCondition();
 
         if (RecursionUtil.expressionDefinitelyRecurses(condition, method)) {
             return true;
         }
         if (BoolUtils.isTrue(condition)) {
-            final JSStatement body = forStatement.getBody();
+            JSStatement body = forStatement.getBody();
             return RecursionUtil.statementDefinitelyRecurses(body, method);
         }
         return false;
     }
 
     private static boolean forInStatementDefinitelyRecurses(JSForInStatement foreachStatement, JSFunction method) {
-        final JSExpression collection = foreachStatement.getCollectionExpression();
+        JSExpression collection = foreachStatement.getCollectionExpression();
         return RecursionUtil.expressionDefinitelyRecurses(collection, method);
     }
 
     private static boolean whileStatementDefinitelyRecurses(JSWhileStatement whileStatement, JSFunction method) {
-        final JSExpression condition = whileStatement.getCondition();
+        JSExpression condition = whileStatement.getCondition();
         if (RecursionUtil.expressionDefinitelyRecurses(condition, method)) {
             return true;
         }
         if (BoolUtils.isTrue(condition)) {
-            final JSStatement body = whileStatement.getBody();
+            JSStatement body = whileStatement.getBody();
             return RecursionUtil.statementDefinitelyRecurses(body, method);
         }
         return false;
     }
 
     private static boolean doWhileStatementDefinitelyRecurses(JSDoWhileStatement doWhileStatement, JSFunction method) {
-        final JSStatement body = doWhileStatement.getBody();
+        JSStatement body = doWhileStatement.getBody();
         if (RecursionUtil.statementDefinitelyRecurses(body, method)) {
             return true;
         }
-        final JSExpression condition = doWhileStatement.getCondition();
+        JSExpression condition = doWhileStatement.getCondition();
         return RecursionUtil.expressionDefinitelyRecurses(condition, method);
     }
 
     private static boolean labeledStatementDefinitelyRecurses(JSLabeledStatement labeledStatement, JSFunction method) {
-        final JSStatement body = labeledStatement.getStatement();
+        JSStatement body = labeledStatement.getStatement();
         return RecursionUtil.statementDefinitelyRecurses(body, method);
     }
 
     public static boolean functionDefinitelyRecurses(@Nonnull JSFunction method) {
-        final JSSourceElement[] body = method.getBody();
+        JSSourceElement[] body = method.getBody();
 
         if (body != null) {
-            for (final JSSourceElement element : body) {
+            for (JSSourceElement element : body) {
                 if (element instanceof JSStatement &&
                     RecursionUtil.statementDefinitelyRecurses((JSStatement)element, method)) {
                     return true;
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/SideEffectChecker.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/SideEffectChecker.java
index 5fe9c4e9..a6d853fa 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/SideEffectChecker.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/SideEffectChecker.java
@@ -24,7 +24,7 @@ private SideEffectChecker() {
     }
 
     public static boolean mayHaveSideEffects(JSExpression exp) {
-        final SideEffectsVisitor visitor = new SideEffectsVisitor();
+        SideEffectsVisitor visitor = new SideEffectsVisitor();
         exp.accept(visitor);
         return visitor.mayHaveSideEffects();
     }
@@ -57,7 +57,7 @@ public void visitJSAssignmentExpression(JSAssignmentExpression expression) {
         @Override
         public void visitJSPrefixExpression(JSPrefixExpression expression) {
             super.visitJSPrefixExpression(expression);
-            final IElementType sign = expression.getOperationSign();
+            IElementType sign = expression.getOperationSign();
 
             if (sign != null && (JSTokenTypes.PLUSPLUS.equals(sign) || JSTokenTypes.MINUSMINUS.equals(sign))) {
                 this.mayHaveSideEffects = true;
@@ -67,7 +67,7 @@ public void visitJSPrefixExpression(JSPrefixExpression expression) {
         @Override
         public void visitJSPostfixExpression(JSPostfixExpression expression) {
             super.visitJSPostfixExpression(expression);
-            final IElementType sign = expression.getOperationSign();
+            IElementType sign = expression.getOperationSign();
 
             if (sign != null && (JSTokenTypes.PLUSPLUS.equals(sign) || JSTokenTypes.MINUSMINUS.equals(sign))) {
                 this.mayHaveSideEffects = true;
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/TreeUtil.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/TreeUtil.java
index bd66915b..fa1d2e14 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/TreeUtil.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/TreeUtil.java
@@ -29,16 +29,16 @@ public static PsiElement getNextLeaf(PsiElement element) {
         if (element == null) {
             return null;
         }
-        final PsiElement sibling = element.getNextSibling();
+        PsiElement sibling = element.getNextSibling();
         if (sibling == null) {
-            final PsiElement parent = element.getParent();
+            PsiElement parent = element.getParent();
             return getNextLeaf(parent);
         }
         return getFirstLeaf(sibling);
     }
 
     private static PsiElement getFirstLeaf(PsiElement element) {
-        final PsiElement[] children = element.getChildren();
+        PsiElement[] children = element.getChildren();
         if (children.length == 0) {
             return element;
         }
@@ -49,16 +49,16 @@ public static PsiElement getPrevLeaf(PsiElement element) {
         if (element == null) {
             return null;
         }
-        final PsiElement sibling = element.getPrevSibling();
+        PsiElement sibling = element.getPrevSibling();
         if (sibling == null) {
-            final PsiElement parent = element.getParent();
+            PsiElement parent = element.getParent();
             return getPrevLeaf(parent);
         }
         return getLastLeaf(sibling);
     }
 
     private static PsiElement getLastLeaf(PsiElement element) {
-        final PsiElement[] children = element.getChildren();
+        PsiElement[] children = element.getChildren();
         if (children.length == 0) {
             return element;
         }
diff --git a/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/VariableAccessUtil.java b/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/VariableAccessUtil.java
index 7618f850..e2a6e067 100644
--- a/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/VariableAccessUtil.java
+++ b/intentions/src/main/java/org/intellij/idea/lang/javascript/psiutil/VariableAccessUtil.java
@@ -35,7 +35,7 @@ public static boolean variableIsAssignedFrom(
         JSVariable variable,
         JSElement context
     ) {
-        final VariableAssignedFromVisitor visitor = new VariableAssignedFromVisitor(variable);
+        VariableAssignedFromVisitor visitor = new VariableAssignedFromVisitor(variable);
         context.accept(visitor);
         return visitor.isAssignedFrom();
     }
@@ -72,7 +72,7 @@ private static boolean variableIsAssigned(
         Set notUpdatedSymbols,
         Set candidateSymbols
     ) {
-        final VariableAssignedVisitor visitor = new VariableAssignedVisitor(variable, context, notUpdatedSymbols,
+        VariableAssignedVisitor visitor = new VariableAssignedVisitor(variable, context, notUpdatedSymbols,
             candidateSymbols
         );
         context.accept(visitor);
@@ -80,25 +80,25 @@ private static boolean variableIsAssigned(
     }
 
     public static boolean variableIsReturned(JSVariable variable, JSElement context) {
-        final VariableReturnedVisitor visitor = new VariableReturnedVisitor(variable);
+        VariableReturnedVisitor visitor = new VariableReturnedVisitor(variable);
         context.accept(visitor);
         return visitor.isReturned();
     }
 
     public static boolean arrayContentsAreAccessed(JSVariable variable, JSElement context) {
-        final ArrayContentsAccessedVisitor visitor = new ArrayContentsAccessedVisitor(variable);
+        ArrayContentsAccessedVisitor visitor = new ArrayContentsAccessedVisitor(variable);
         context.accept(visitor);
         return visitor.isAccessed();
     }
 
     public static boolean arrayContentsAreAssigned(JSVariable variable, JSElement context) {
-        final ArrayContentsAssignedVisitor visitor = new ArrayContentsAssignedVisitor(variable);
+        ArrayContentsAssignedVisitor visitor = new ArrayContentsAssignedVisitor(variable);
         context.accept(visitor);
         return visitor.isAssigned();
     }
 
     public static boolean mayEvaluateToVariable(JSExpression expression, JSVariable variable) {
-        final String variableName = variable.getName();
+        String variableName = variable.getName();
         JSExpression expr = expression;
 
         if (variableName == null) {
@@ -123,7 +123,7 @@ else if (expr instanceof JSDefinitionExpression defExpr) {
                 expr = defExpr.getExpression();
             }
             else if (expr instanceof JSReferenceExpression refExpr) {
-                final PsiElement referent = refExpr.resolve();
+                PsiElement referent = refExpr.resolve();
 
                 return referent != null && referent.equals(variable);
             }
@@ -139,7 +139,7 @@ public static boolean variableIsUsed(JSVariable variable, PsiElement context) {
     }
 
     public static Set getUsedVariables(PsiElement context) {
-        final UsedVariableVisitor visitor = new UsedVariableVisitor();
+        UsedVariableVisitor visitor = new UsedVariableVisitor();
         context.accept(visitor);
         return visitor.getVariables();
     }
@@ -188,11 +188,11 @@ public void visitJSAssignmentExpression(JSAssignmentExpression assignment) {
             if (!this.assigned) {
                 super.visitJSAssignmentExpression(assignment);
 
-                final JSExpression arg = assignment.getLOperand();
+                JSExpression arg = assignment.getLOperand();
 
                 if (VariableAccessUtil.mayEvaluateToVariable(arg, this.variable)) {
-                    final Set usedVariables = getUsedVariables(assignment.getROperand());
-                    final Set newCandidateSet = new LinkedHashSet<>();
+                    Set usedVariables = getUsedVariables(assignment.getROperand());
+                    Set newCandidateSet = new LinkedHashSet<>();
                     boolean assigned = false;
 
                     newCandidateSet.addAll(this.candidateSymbols);
@@ -222,14 +222,14 @@ public void visitJSPrefixExpression(JSPrefixExpression expression) {
             if (!this.assigned) {
                 super.visitJSPrefixExpression(expression);
 
-                final IElementType tokenType = expression.getOperationSign();
+                IElementType tokenType = expression.getOperationSign();
 
                 if (!(tokenType.equals(JSTokenTypes.PLUSPLUS) ||
                     tokenType.equals(JSTokenTypes.MINUSMINUS))) {
                     return;
                 }
 
-                final JSExpression operand = expression.getExpression();
+                JSExpression operand = expression.getExpression();
 
                 this.assigned = VariableAccessUtil.mayEvaluateToVariable(operand, this.variable);
             }
@@ -240,14 +240,14 @@ public void visitJSPostfixExpression(JSPostfixExpression postfixExpression) {
             if (!this.assigned) {
                 super.visitJSPostfixExpression(postfixExpression);
 
-                final IElementType tokenType = postfixExpression.getOperationSign();
+                IElementType tokenType = postfixExpression.getOperationSign();
 
                 if (!(tokenType.equals(JSTokenTypes.PLUSPLUS) ||
                     tokenType.equals(JSTokenTypes.MINUSMINUS))) {
                     return;
                 }
 
-                final JSExpression operand = postfixExpression.getExpression();
+                JSExpression operand = postfixExpression.getExpression();
 
                 this.assigned = VariableAccessUtil.mayEvaluateToVariable(operand, this.variable);
             }
@@ -288,7 +288,7 @@ public void visitJSVarStatement(@Nonnull JSVarStatement statement) {
                 super.visitJSVarStatement(statement);
 
                 for (JSVariable declaredVariable : statement.getVariables()) {
-                    final JSExpression initializer = declaredVariable.getInitializer();
+                    JSExpression initializer = declaredVariable.getInitializer();
 
                     if (initializer != null) {
                         this.assignedFrom = VariableAccessUtil.mayEvaluateToVariable(initializer, this.variable);
@@ -353,7 +353,7 @@ public void visitJSIndexedPropertyAccessExpression(@Nonnull JSIndexedPropertyAcc
             if (!this.accessed) {
                 super.visitJSIndexedPropertyAccessExpression(accessExpression);
 
-                final PsiElement parent = accessExpression.getParent();
+                PsiElement parent = accessExpression.getParent();
 
                 if (!(parent instanceof JSAssignmentExpression ||
                     ((JSAssignmentExpression)parent).getLOperand().equals(accessExpression))) {
@@ -364,7 +364,7 @@ public void visitJSIndexedPropertyAccessExpression(@Nonnull JSIndexedPropertyAcc
 
         private void checkQualifier(JSExpression qualifier) {
             if (qualifier instanceof JSReferenceExpression referenceExpression) {
-                final PsiElement referent = referenceExpression.resolve();
+                PsiElement referent = referenceExpression.resolve();
 
                 this.accessed = (referent != null && referent.equals(this.variable));
             }
@@ -422,7 +422,7 @@ private void checkExpression(IElementType tokenType, JSExpression expression) {
             }
 
             if (arrayExpression instanceof JSReferenceExpression referenceExpression) {
-                final String referencedName = referenceExpression.getReferencedName();
+                String referencedName = referenceExpression.getReferencedName();
 
                 // TODO maybe it's better to check ((JSReferenceExpression) arrayExpression).isReferenceTo(variable) ?
                 this.assigned = referencedName != null && referencedName.equals(this.variable.getName());
@@ -446,7 +446,7 @@ public UsedVariableVisitor() {
         public void visitJSReferenceExpression(@Nonnull JSReferenceExpression ref) {
             super.visitJSReferenceExpression(ref);
 
-            final PsiElement referent = ref.resolve();
+            PsiElement referent = ref.resolve();
 
             if (referent != null && referent instanceof JSVariable variable) {
                 this.variables.add(variable);
diff --git a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptExpressionParsing.java b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptExpressionParsing.java
index 0cdf5924..edeb6577 100644
--- a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptExpressionParsing.java
+++ b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptExpressionParsing.java
@@ -123,7 +123,7 @@ else if (tokenType == JSTokenTypes.LPAR) {
 
     @Override
     protected void parseProperty(PsiBuilder builder) {
-        final IElementType nameTokenType = builder.getTokenType();
+        IElementType nameTokenType = builder.getTokenType();
         PsiBuilder.Marker propertyMark = builder.mark();
 
         IElementType isSetterOrGetterType = null;
diff --git a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptStatementParsing.java b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptStatementParsing.java
index ae2ce722..7bf16e9b 100644
--- a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptStatementParsing.java
+++ b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/ecmascript/lang/parsing/EcmaScriptStatementParsing.java
@@ -43,7 +43,7 @@ public EcmaScriptStatementParsing(EcmaScriptParsingContext context) {
 
     @Override
     public void parseSourceElement(PsiBuilder builder) {
-        final IElementType tokenType = builder.getTokenType();
+        IElementType tokenType = builder.getTokenType();
         if (tokenType == JSTokenTypes.FUNCTION_KEYWORD) {
             getFunctionParsing().parseFunctionDeclaration(builder);
         }
@@ -84,11 +84,11 @@ else if (nextType == JSTokenTypes.VAR_KEYWORD ||
     }
 
     @Override
-    protected boolean parseForLoopHeader(final PsiBuilder builder) {
+    protected boolean parseForLoopHeader(PsiBuilder builder) {
         builder.advanceLexer();
 
         Parsing.checkMatches(builder, JSTokenTypes.LPAR, JavaScriptLocalize.javascriptParserMessageExpectedLparen());
-        final boolean empty;
+        boolean empty;
         if (builder.getTokenType() == JSTokenTypes.VAR_KEYWORD
             || builder.getTokenType() == JSTokenTypes.LET_KEYWORD
             || builder.getTokenType() == JSTokenTypes.CONST_KEYWORD) {
@@ -146,8 +146,8 @@ protected void doParseStatement(PsiBuilder builder, boolean canHaveClasses) {
         super.doParseStatement(builder, canHaveClasses);
     }
 
-    private void parseImportStatement(final PsiBuilder builder) {
-        final PsiBuilder.Marker importStatement = builder.mark();
+    private void parseImportStatement(PsiBuilder builder) {
+        PsiBuilder.Marker importStatement = builder.mark();
         try {
             builder.advanceLexer();
 
@@ -288,11 +288,11 @@ protected boolean doParseStatementSub(PsiBuilder builder, boolean canHaveClasses
         return false;
     }
 
-    private void parseClass(final PsiBuilder builder, boolean nameRequired) {
+    private void parseClass(PsiBuilder builder, boolean nameRequired) {
         parseClassWithMarker(builder, builder.mark(), nameRequired);
     }
 
-    public void parseClassWithMarker(final PsiBuilder builder, final @Nonnull PsiBuilder.Marker clazz, boolean nameRequired) {
+    public void parseClassWithMarker(PsiBuilder builder, @Nonnull PsiBuilder.Marker clazz, boolean nameRequired) {
         builder.advanceLexer();
 
         if (builder.getTokenType() != JSTokenTypes.IDENTIFIER) {
@@ -312,7 +312,7 @@ public void parseClassWithMarker(final PsiBuilder builder, final @Nonnull PsiBui
         clazz.done(JSElementTypes.CLASS);
     }
 
-    protected void parseClassBody(final PsiBuilder builder, BlockType type) {
+    protected void parseClassBody(PsiBuilder builder, BlockType type) {
         if (builder.getTokenType() != JSTokenTypes.LBRACE) {
             builder.error(JavaScriptLocalize.javascriptParserMessageExpectedLbrace());
             return;
@@ -410,10 +410,10 @@ else if (isContextKeyword(builder, TokenSet.create(JSTokenTypes.STATIC_KEYWORD))
         return false;
     }
 
-    private void parseReferenceList(final PsiBuilder builder) {
-        final IElementType tokenType = builder.getTokenType();
+    private void parseReferenceList(PsiBuilder builder) {
+        IElementType tokenType = builder.getTokenType();
         LOGGER.assertTrue(tokenType == JSTokenTypes.EXTENDS_KEYWORD || tokenType == JSTokenTypes.IMPLEMENTS_KEYWORD);
-        final PsiBuilder.Marker referenceList = builder.mark();
+        PsiBuilder.Marker referenceList = builder.mark();
         builder.advanceLexer();
 
         if (getExpressionParsing().parseSimpleExpression(builder)) {
diff --git a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/jsx/codeInsight/JSXTagTreeHighlightingPassFactory.java b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/jsx/codeInsight/JSXTagTreeHighlightingPassFactory.java
index 424fe19c..e966e3e4 100644
--- a/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/jsx/codeInsight/JSXTagTreeHighlightingPassFactory.java
+++ b/lang-version-impl/ecmascript-impl/src/main/java/consulo/javascript/jsx/codeInsight/JSXTagTreeHighlightingPassFactory.java
@@ -23,7 +23,7 @@ public void register(@Nonnull Registrar registrar) {
     }
 
     @Override
-    public TextEditorHighlightingPass createHighlightingPass(@Nonnull final PsiFile file, @Nonnull final Editor editor) {
+    public TextEditorHighlightingPass createHighlightingPass(@Nonnull PsiFile file, @Nonnull Editor editor) {
         if (editor.isOneLineMode() || !(editor instanceof EditorEx) || !(file.getLanguageVersion() instanceof JSXJavaScriptVersion)) {
             return null;
         }
diff --git a/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4ExpressionParsing.java b/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4ExpressionParsing.java
index 4bddc76c..48bcd749 100644
--- a/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4ExpressionParsing.java
+++ b/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4ExpressionParsing.java
@@ -23,11 +23,11 @@ protected boolean parseMemberExpression(PsiBuilder builder, boolean allowCallSyn
         PsiBuilder.Marker expr = builder.mark();
         boolean isNew;
 
-        final IElementType type = builder.getTokenType();
+        IElementType type = builder.getTokenType();
 
         if (type == JSTokenTypes.NEW_KEYWORD) {
             isNew = true;
-            final boolean isfunction = parseNewExpression(builder);
+            boolean isfunction = parseNewExpression(builder);
 
             if (isfunction) {
                 expr.done(JSElementTypes.NEW_EXPRESSION);
@@ -121,7 +121,7 @@ public boolean parseQualifiedTypeName(PsiBuilder builder, boolean allowStar, Tok
             boolean stop = false;
             builder.advanceLexer();
 
-            final IElementType tokenType = builder.getTokenType();
+            IElementType tokenType = builder.getTokenType();
             if (tokenType == JSTokenTypes.ANY_IDENTIFIER && allowStar) {
                 builder.advanceLexer();
                 stop = true;
@@ -157,7 +157,7 @@ else if (tokenType == JSTokenTypes.DEFAULT_KEYWORD
     }
 
     @Override
-    public boolean tryParseType(final PsiBuilder builder) {
+    public boolean tryParseType(PsiBuilder builder) {
         if (builder.getTokenType() == JSTokenTypes.COLON) {
             builder.advanceLexer();
 
@@ -167,7 +167,7 @@ public boolean tryParseType(final PsiBuilder builder) {
         return false;
     }
 
-    private void parseGenericSignature(final PsiBuilder builder) {
+    private void parseGenericSignature(PsiBuilder builder) {
         assert builder.getTokenType() == JSTokenTypes.LT;
         PsiBuilder.Marker genericTypeSignature = builder.mark();
         builder.advanceLexer();
diff --git a/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4FunctionParsing.java b/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4FunctionParsing.java
index 9436a68f..04a53b46 100644
--- a/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4FunctionParsing.java
+++ b/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4FunctionParsing.java
@@ -17,8 +17,8 @@ public EcmaScript4FunctionParsing(JavaScriptParsingContext context) {
         super(context);
     }
 
-    public void parseAttributeWithoutBrackets(final PsiBuilder builder) {
-        final PsiBuilder.Marker attribute = builder.mark();
+    public void parseAttributeWithoutBrackets(PsiBuilder builder) {
+        PsiBuilder.Marker attribute = builder.mark();
         if (!checkMatches(builder, JSTokenTypes.IDENTIFIER, JavaScriptLocalize.javascriptParserMessageExpectedIdentifier())) {
             attribute.drop();
             return;
@@ -27,8 +27,8 @@ public void parseAttributeWithoutBrackets(final PsiBuilder builder) {
         attribute.done(JSElementTypes.ATTRIBUTE);
     }
 
-    void parseAttributesList(final PsiBuilder builder) {
-        final PsiBuilder.Marker modifierList = builder.mark();
+    void parseAttributesList(PsiBuilder builder) {
+        PsiBuilder.Marker modifierList = builder.mark();
 
         boolean seenNs = false;
         boolean seenAnyAttributes = false;
@@ -93,7 +93,7 @@ void parseAttributesList(final PsiBuilder builder) {
             }
         }
         finally {
-            final IElementType currentTokenType = builder.getTokenType();
+            IElementType currentTokenType = builder.getTokenType();
 
             if (seenNs && !seenAnyAttributes
                 && currentTokenType != JSTokenTypes.VAR_KEYWORD
@@ -108,8 +108,8 @@ void parseAttributesList(final PsiBuilder builder) {
         }
     }
 
-    private void parseAttributeBody(final PsiBuilder builder) {
-        final boolean haveLParen = checkMatches(builder, JSTokenTypes.LPAR, JavaScriptLocalize.javascriptParserMessageExpectedLparen());
+    private void parseAttributeBody(PsiBuilder builder) {
+        boolean haveLParen = checkMatches(builder, JSTokenTypes.LPAR, JavaScriptLocalize.javascriptParserMessageExpectedLparen());
         boolean hasName;
 
         while (haveLParen) {
diff --git a/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4StatementParsing.java b/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4StatementParsing.java
index 73530063..385a02cb 100644
--- a/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4StatementParsing.java
+++ b/lang-version-impl/ecmascript4-impl/src/main/java/consulo/javascript/ecmascript4/lang/parsing/EcmaScript4StatementParsing.java
@@ -28,7 +28,7 @@ public EcmaScript4FunctionParsing getFunctionParsing() {
 
     @Override
     public void parseSourceElement(PsiBuilder builder) {
-        final IElementType tokenType = builder.getTokenType();
+        IElementType tokenType = builder.getTokenType();
         if (tokenType == JSTokenTypes.FUNCTION_KEYWORD) {
             getFunctionParsing().parseFunctionDeclaration(builder);
         }
@@ -45,7 +45,7 @@ else if (tokenType == JSTokenTypes.AT) {
     }
 
     @Override
-    protected void parseVarDeclaration(final PsiBuilder builder, boolean allowIn) {
+    protected void parseVarDeclaration(PsiBuilder builder, boolean allowIn) {
         if (!JSTokenTypes.IDENTIFIER_TOKENS_SET.contains(builder.getTokenType())) {
             builder.error(JavaScriptLocalize.javascriptParserMessageExpectedVariableName());
             builder.advanceLexer();
@@ -75,8 +75,8 @@ protected void parseVarDeclaration(final PsiBuilder builder, boolean allowIn) {
     }
 
     @Override
-    protected void doParseStatement(final PsiBuilder builder, boolean canHaveClasses) {
-        final IElementType firstToken = builder.getTokenType();
+    protected void doParseStatement(PsiBuilder builder, boolean canHaveClasses) {
+        IElementType firstToken = builder.getTokenType();
 
         if (firstToken == null) {
             builder.error(JavaScriptLocalize.javascriptParserMessageExpectedStatement());
@@ -203,7 +203,7 @@ protected void doParseStatement(final PsiBuilder builder, boolean canHaveClasses
                     return;
                 }
 
-                final IElementType tokenType = builder.getTokenType();
+                IElementType tokenType = builder.getTokenType();
                 if (tokenType == JSTokenTypes.FUNCTION_KEYWORD) {
                     getFunctionParsing().parseFunctionNoMarker(builder, false, marker);
                     return;
@@ -242,7 +242,7 @@ else if (JSTokenTypes.COLON_COLON == builder.getTokenType()) {
 
         if (firstToken == JSTokenTypes.IDENTIFIER) {
             // Try labeled statement:
-            final PsiBuilder.Marker labeledStatement = builder.mark();
+            PsiBuilder.Marker labeledStatement = builder.mark();
             builder.advanceLexer();
             if (builder.getTokenType() == JSTokenTypes.COLON) {
                 builder.advanceLexer();
@@ -265,9 +265,9 @@ else if (JSTokenTypes.COLON_COLON == builder.getTokenType()) {
         builder.advanceLexer();
     }
 
-    private void parseDefaultNsStatement(final PsiBuilder builder) {
+    private void parseDefaultNsStatement(PsiBuilder builder) {
         EcmaScript4StatementParsing.LOGGER.assertTrue(builder.getTokenType() == JSTokenTypes.DEFAULT_KEYWORD);
-        final PsiBuilder.Marker marker = builder.mark();
+        PsiBuilder.Marker marker = builder.mark();
         builder.advanceLexer();
 
         if (builder.getTokenType() == JSTokenTypes.IDENTIFIER && "xml".equals(builder.getTokenText())) {
@@ -285,12 +285,12 @@ private void parseDefaultNsStatement(final PsiBuilder builder) {
         marker.done(JSElementTypes.ASSIGNMENT_EXPRESSION);
     }
 
-    private void parseImportStatement(final PsiBuilder builder) {
-        final PsiBuilder.Marker importStatement = builder.mark();
+    private void parseImportStatement(PsiBuilder builder) {
+        PsiBuilder.Marker importStatement = builder.mark();
         try {
             builder.advanceLexer();
 
-            final PsiBuilder.Marker nsAssignment = builder.mark();
+            PsiBuilder.Marker nsAssignment = builder.mark();
             if (!getExpressionParsing().parseQualifiedTypeName(builder, true)) {
                 builder.error(JavaScriptLocalize.javascriptParserMessageExpectedTypename());
                 nsAssignment.drop();
@@ -316,7 +316,7 @@ private void parseImportStatement(final PsiBuilder builder) {
         }
     }
 
-    private boolean parseNamespaceNoMarker(final PsiBuilder builder, final @Nonnull PsiBuilder.Marker useNSStatement) {
+    private boolean parseNamespaceNoMarker(PsiBuilder builder, @Nonnull PsiBuilder.Marker useNSStatement) {
         EcmaScript4StatementParsing.LOGGER.assertTrue(builder.getTokenType() == JSTokenTypes.NAMESPACE_KEYWORD);
 
         builder.advanceLexer();
@@ -337,8 +337,8 @@ private boolean parseNamespaceNoMarker(final PsiBuilder builder, final @Nonnull
         return true;
     }
 
-    private void parseUseNamespaceDirective(final PsiBuilder builder) {
-        final PsiBuilder.Marker useNSStatement = builder.mark();
+    private void parseUseNamespaceDirective(PsiBuilder builder) {
+        PsiBuilder.Marker useNSStatement = builder.mark();
         builder.advanceLexer();
 
         if (builder.getTokenType() != JSTokenTypes.NAMESPACE_KEYWORD) {
@@ -363,12 +363,12 @@ private void parseUseNamespaceDirective(final PsiBuilder builder) {
         useNSStatement.done(JSElementTypes.USE_NAMESPACE_DIRECTIVE);
     }
 
-    private void parseClass(final PsiBuilder builder) {
+    private void parseClass(PsiBuilder builder) {
         parseClassNoMarker(builder, builder.mark());
     }
 
-    private void parseClassNoMarker(final PsiBuilder builder, final @Nonnull PsiBuilder.Marker clazz) {
-        final IElementType tokenType = builder.getTokenType();
+    private void parseClassNoMarker(PsiBuilder builder, @Nonnull PsiBuilder.Marker clazz) {
+        IElementType tokenType = builder.getTokenType();
         EcmaScript4StatementParsing.LOGGER.assertTrue(
             JSTokenTypes.CLASS_KEYWORD == tokenType || JSTokenTypes.INTERFACE_KEYWORD == tokenType
         );
@@ -390,12 +390,12 @@ private void parseClassNoMarker(final PsiBuilder builder, final @Nonnull PsiBuil
         clazz.done(JSElementTypes.CLASS);
     }
 
-    private void parseReferenceList(final PsiBuilder builder) {
-        final IElementType tokenType = builder.getTokenType();
+    private void parseReferenceList(PsiBuilder builder) {
+        IElementType tokenType = builder.getTokenType();
         EcmaScript4StatementParsing.LOGGER.assertTrue(
             tokenType == JSTokenTypes.EXTENDS_KEYWORD || tokenType == JSTokenTypes.IMPLEMENTS_KEYWORD
         );
-        final PsiBuilder.Marker referenceList = builder.mark();
+        PsiBuilder.Marker referenceList = builder.mark();
         builder.advanceLexer();
 
         if (getExpressionParsing().parseQualifiedTypeName(builder)) {
@@ -409,8 +409,8 @@ private void parseReferenceList(final PsiBuilder builder) {
         referenceList.done(tokenType == JSTokenTypes.EXTENDS_KEYWORD ? JSElementTypes.EXTENDS_LIST : JSElementTypes.IMPLEMENTS_LIST);
     }
 
-    private void parsePackage(final PsiBuilder builder) {
-        final PsiBuilder.Marker packageMarker = builder.mark();
+    private void parsePackage(PsiBuilder builder) {
+        PsiBuilder.Marker packageMarker = builder.mark();
         builder.advanceLexer();
         if (builder.getTokenType() == JSTokenTypes.IDENTIFIER) {
             getExpressionParsing().parseQualifiedTypeName(builder);
diff --git a/lang-version-impl/javascript16-impl/src/main/java/consulo/javascript/javascript16/lang/lexer/JavaScript16Lexer.java b/lang-version-impl/javascript16-impl/src/main/java/consulo/javascript/javascript16/lang/lexer/JavaScript16Lexer.java
index 031c2052..53525432 100644
--- a/lang-version-impl/javascript16-impl/src/main/java/consulo/javascript/javascript16/lang/lexer/JavaScript16Lexer.java
+++ b/lang-version-impl/javascript16-impl/src/main/java/consulo/javascript/javascript16/lang/lexer/JavaScript16Lexer.java
@@ -627,7 +627,7 @@ public int getState() {
     }
 
     @Override
-    public void start(final CharSequence buffer, int startOffset, int endOffset, final int initialState) {
+    public void start(CharSequence buffer, int startOffset, int endOffset, int initialState) {
         reset(buffer, startOffset, endOffset, initialState);
         myTokenType = null;
     }
@@ -664,7 +664,7 @@ private void locateToken() {
         catch (java.io.IOException e) { /*Can't happen*/ }
         catch (Error e) {
             // add lexer class name to the error
-            final Error error = new Error(getClass().getName() + ": " + e.getMessage());
+            Error error = new Error(getClass().getName() + ": " + e.getMessage());
             error.setStackTrace(e.getStackTrace());
             throw error;
         }
diff --git a/lang-version-impl/javascript17-impl/src/main/java/consulo/javascript/javascript17/lang/lexer/JavaScript17Lexer.java b/lang-version-impl/javascript17-impl/src/main/java/consulo/javascript/javascript17/lang/lexer/JavaScript17Lexer.java
index b57964f2..71c3eb15 100644
--- a/lang-version-impl/javascript17-impl/src/main/java/consulo/javascript/javascript17/lang/lexer/JavaScript17Lexer.java
+++ b/lang-version-impl/javascript17-impl/src/main/java/consulo/javascript/javascript17/lang/lexer/JavaScript17Lexer.java
@@ -640,7 +640,7 @@ public int getState() {
     }
 
     @Override
-    public void start(final CharSequence buffer, int startOffset, int endOffset, final int initialState) {
+    public void start(CharSequence buffer, int startOffset, int endOffset, int initialState) {
         reset(buffer, startOffset, endOffset, initialState);
         myTokenType = null;
     }
@@ -677,7 +677,7 @@ private void locateToken() {
         catch (java.io.IOException e) { /*Can't happen*/ }
         catch (Error e) {
             // add lexer class name to the error
-            final Error error = new Error(getClass().getName() + ": " + e.getMessage());
+            Error error = new Error(getClass().getName() + ": " + e.getMessage());
             error.setStackTrace(e.getStackTrace());
             throw error;
         }
diff --git a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/proxy/JomProxyInvocationHandler.java b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/proxy/JomProxyInvocationHandler.java
index f14e766b..f788cc73 100644
--- a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/proxy/JomProxyInvocationHandler.java
+++ b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/jom/proxy/JomProxyInvocationHandler.java
@@ -21,7 +21,7 @@ public class JomProxyInvocationHandler implements InvocationHandler {
     @Nonnull
     public static JomElement createProxy(
         @Nonnull Class interfaceClass,
-        @Nullable final JSObjectLiteralExpression objectLiteralExpression
+        @Nullable JSObjectLiteralExpression objectLiteralExpression
     ) {
         return (JomElement)Proxy.newProxyInstance(
             interfaceClass.getClassLoader(),
diff --git a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/lang/JsonJavaScriptParser.java b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/lang/JsonJavaScriptParser.java
index 0f2c53c9..1f591018 100644
--- a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/lang/JsonJavaScriptParser.java
+++ b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/lang/JsonJavaScriptParser.java
@@ -28,7 +28,7 @@ public class JsonJavaScriptParser implements PsiParser {
     @Nonnull
     @Override
     public ASTNode parse(@Nonnull IElementType root, @Nonnull PsiBuilder builder, @Nonnull LanguageVersion languageVersion) {
-        final PsiBuilder.Marker rootMarker = builder.mark();
+        PsiBuilder.Marker rootMarker = builder.mark();
         parseRoot(builder);
         rootMarker.done(root);
         return builder.getTreeBuilt();
@@ -56,7 +56,7 @@ else if (builder.getTokenType() == JSTokenTypes.LBRACE) {
         }
     }
 
-    private void parseProperty(final PsiBuilder builder) {
+    private void parseProperty(PsiBuilder builder) {
         if (myPropertyDepth > 1000) {
             builder.error("Too big depth for property");
             int braceCount = 0;
@@ -85,8 +85,8 @@ else if (tokenType == JSTokenTypes.RBRACKET) {
             }
         }
 
-        final IElementType nameToken = builder.getTokenType();
-        final PsiBuilder.Marker property = builder.mark();
+        IElementType nameToken = builder.getTokenType();
+        PsiBuilder.Marker property = builder.mark();
         myPropertyDepth++;
 
         if (isNotPropertyStart(nameToken)) {
@@ -103,9 +103,9 @@ else if (tokenType == JSTokenTypes.RBRACKET) {
         property.done(JSElementTypes.PROPERTY);
     }
 
-    public void parseObjectLiteralExpression(final PsiBuilder builder) {
+    public void parseObjectLiteralExpression(PsiBuilder builder) {
         LOG.assertTrue(builder.getTokenType() == JSTokenTypes.LBRACE);
-        final PsiBuilder.Marker expr = builder.mark();
+        PsiBuilder.Marker expr = builder.mark();
         builder.advanceLexer();
 
         IElementType elementType = builder.getTokenType();
@@ -141,21 +141,21 @@ else if (isNotPropertyStart(elementType)) {
         expr.done(JSElementTypes.OBJECT_LITERAL_EXPRESSION);
     }
 
-    public static boolean isNotPropertyStart(final IElementType elementType) {
+    public static boolean isNotPropertyStart(IElementType elementType) {
         return !JSTokenTypes.IDENTIFIER_TOKENS_SET.contains(elementType)
             && !JavaScriptTokenSets.STRING_LITERALS.contains(elementType)
             && elementType != JSTokenTypes.NUMERIC_LITERAL;
     }
 
-    public void parseArrayLiteralExpression(final PsiBuilder builder) {
+    public void parseArrayLiteralExpression(PsiBuilder builder) {
         JsonJavaScriptParser.LOG.assertTrue(builder.getTokenType() == JSTokenTypes.LBRACKET);
-        final PsiBuilder.Marker expr = builder.mark();
+        PsiBuilder.Marker expr = builder.mark();
         builder.advanceLexer();
         boolean commaExpected = false;
 
         while (builder.getTokenType() != JSTokenTypes.RBRACKET) {
             if (commaExpected) {
-                final boolean b = Parsing.checkMatches(builder, JSTokenTypes.COMMA, JavaScriptLocalize.javascriptParserMessageExpectedComma());
+                boolean b = Parsing.checkMatches(builder, JSTokenTypes.COMMA, JavaScriptLocalize.javascriptParserMessageExpectedComma());
                 if (!b) {
                     break;
                 }
@@ -181,7 +181,7 @@ public void parseArrayLiteralExpression(final PsiBuilder builder) {
     }
 
     private boolean parseValue(PsiBuilder builder) {
-        final IElementType firstToken = builder.getTokenType();
+        IElementType firstToken = builder.getTokenType();
         if (firstToken == JSTokenTypes.NUMERIC_LITERAL ||
             firstToken == JSTokenTypes.STRING_LITERAL ||
             firstToken == JSTokenTypes.SINGLE_QUOTE_STRING_LITERAL ||
diff --git a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/lang/lexer/JsonLexer.java b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/lang/lexer/JsonLexer.java
index 8d513cde..4f6b8b9a 100644
--- a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/lang/lexer/JsonLexer.java
+++ b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/lang/lexer/JsonLexer.java
@@ -408,7 +408,7 @@ public int getState() {
     }
 
     @Override
-    public void start(final CharSequence buffer, int startOffset, int endOffset, final int initialState) {
+    public void start(CharSequence buffer, int startOffset, int endOffset, int initialState) {
         reset(buffer, startOffset, endOffset, initialState);
         myTokenType = null;
     }
@@ -445,7 +445,7 @@ private void locateToken() {
         catch (java.io.IOException e) { /*Can't happen*/ }
         catch (Error e) {
             // add lexer class name to the error
-            final Error error = new Error(getClass().getName() + ": " + e.getMessage());
+            Error error = new Error(getClass().getName() + ": " + e.getMessage());
             error.setStackTrace(e.getStackTrace());
             throw error;
         }
diff --git a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/completion/JsonCompletionContributor.java b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/completion/JsonCompletionContributor.java
index 7ac3c06d..d1361234 100644
--- a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/completion/JsonCompletionContributor.java
+++ b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/completion/JsonCompletionContributor.java
@@ -127,7 +127,7 @@ private static void addVariants(@Nonnull CompletionParameters parameters, @Nonnu
         }
 
         PsiElement position = parameters.getPosition();
-        final PsiElement jsProperty = position.getParent();
+        PsiElement jsProperty = position.getParent();
         if (!(jsProperty instanceof JSProperty)) {
             return;
         }
@@ -189,7 +189,7 @@ else if (currentProperty.getValue() instanceof NativeArray nativeArray) {
             }
         }
 
-        for (final Map.Entry entry : properties.entrySet()) {
+        for (Map.Entry entry : properties.entrySet()) {
             String key = entry.getKey();
             if (key == null || alreadyDefined.contains(key)) {
                 continue;
diff --git a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/descriptionByAnotherPsiElement/DescriptionByAnotherPsiElementEditorNotification.java b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/descriptionByAnotherPsiElement/DescriptionByAnotherPsiElementEditorNotification.java
index 6ee8c95f..fa4ccf2f 100644
--- a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/descriptionByAnotherPsiElement/DescriptionByAnotherPsiElementEditorNotification.java
+++ b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/descriptionByAnotherPsiElement/DescriptionByAnotherPsiElementEditorNotification.java
@@ -73,7 +73,7 @@ public EditorNotificationBuilder buildNotification(
             return null;
         }
 
-        final PsiFile psiFile = PsiManager.getInstance(myProject).findFile(file);
+        PsiFile psiFile = PsiManager.getInstance(myProject).findFile(file);
         if (psiFile == null) {
             return null;
         }
diff --git a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/descriptionByAnotherPsiElement/DescriptionByAnotherPsiElementRegistrar.java b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/descriptionByAnotherPsiElement/DescriptionByAnotherPsiElementRegistrar.java
index f2142121..27a9818a 100644
--- a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/descriptionByAnotherPsiElement/DescriptionByAnotherPsiElementRegistrar.java
+++ b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/descriptionByAnotherPsiElement/DescriptionByAnotherPsiElementRegistrar.java
@@ -38,7 +38,7 @@ public class DescriptionByAnotherPsiElementRegistrar implements ExtensionExtende
     public void extend(@Nonnull ComponentManager componentManager, @Nonnull Consumer consumer) {
         ExtensionPoint extensionPoint =
             componentManager.getExtensionPoint(DescriptionByAnotherPsiElementProvider.class);
-        for (final DescriptionByAnotherPsiElementProvider provider : extensionPoint) {
+        for (DescriptionByAnotherPsiElementProvider provider : extensionPoint) {
             consumer.accept(new DescriptionByAnotherPsiElementEditorNotification((Project)componentManager, provider));
         }
     }
diff --git a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/descriptionByAnotherPsiElement/DescriptionByAnotherPsiElementService.java b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/descriptionByAnotherPsiElement/DescriptionByAnotherPsiElementService.java
index 8818b69f..b4cf1c2d 100644
--- a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/descriptionByAnotherPsiElement/DescriptionByAnotherPsiElementService.java
+++ b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/descriptionByAnotherPsiElement/DescriptionByAnotherPsiElementService.java
@@ -79,7 +79,7 @@ public Info(
             myElementPointer = SmartPointerManager.getInstance(element.getProject()).createSmartPsiElementPointer(element);
         }
 
-        public Info(@Nonnull Project project, @Nonnull String url, @Nonnull final String providerId, @Nonnull String psiElementId) {
+        public Info(@Nonnull Project project, @Nonnull String url, @Nonnull String providerId, @Nonnull String psiElementId) {
             myProject = project;
             myVirtualFilePointer = VirtualFilePointerManager.getInstance().create(url, this, null);
 
@@ -238,7 +238,7 @@ public  Pair, T>
     @Override
     public Element getState() {
         Element stateElement = new Element("state");
-        for (final Info registeredFile : myRegisteredFiles) {
+        for (Info registeredFile : myRegisteredFiles) {
             String psiElementId = registeredFile.getPsiElementId();
             if (psiElementId == null) {
                 continue;
diff --git a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/descriptor/JsonObjectDescriptor.java b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/descriptor/JsonObjectDescriptor.java
index c06a7d4e..039b7c0c 100644
--- a/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/descriptor/JsonObjectDescriptor.java
+++ b/lang-version-impl/json-javascript-impl/src/main/java/consulo/json/validation/descriptor/JsonObjectDescriptor.java
@@ -32,7 +32,7 @@ public class JsonObjectDescriptor {
     private Map myProperties = new HashMap<>();
 
     @Nonnull
-    public JsonPropertyDescriptor addProperty(@Nullable final String propertyName, @Nonnull final Class value) {
+    public JsonPropertyDescriptor addProperty(@Nullable String propertyName, @Nonnull Class value) {
         if (value == Object.class) {
             throw new IllegalArgumentException("We cant add object type, use JsonObjectDescriptor as parameter");
         }
@@ -41,17 +41,17 @@ public JsonPropertyDescriptor addProperty(@Nullable final String propertyName, @
     }
 
     @Nonnull
-    public JsonPropertyDescriptor addProperty(@Nullable final String propertyName, @Nonnull final JsonObjectDescriptor value) {
+    public JsonPropertyDescriptor addProperty(@Nullable String propertyName, @Nonnull JsonObjectDescriptor value) {
         return myProperties.computeIfAbsent(propertyName, p -> new JsonPropertyDescriptor(p, value));
     }
 
     @Nonnull
-    public JsonPropertyDescriptor addProperty(@Nullable final String propertyName, @Nonnull final NativeArray value) {
+    public JsonPropertyDescriptor addProperty(@Nullable String propertyName, @Nonnull NativeArray value) {
         return myProperties.computeIfAbsent(propertyName, p -> new JsonPropertyDescriptor(p, value));
     }
 
     @Nullable
-    public JsonPropertyDescriptor getProperty(@Nonnull final String propertyName) {
+    public JsonPropertyDescriptor getProperty(@Nonnull String propertyName) {
         JsonPropertyDescriptor propertyDescriptor = myProperties.get(propertyName);
         if (propertyDescriptor != null) {
             return propertyDescriptor;
diff --git a/plugin/src/main/java/com/intellij/javascript/JSClassNameMacro.java b/plugin/src/main/java/com/intellij/javascript/JSClassNameMacro.java
index 0aa0e2b8..30823044 100644
--- a/plugin/src/main/java/com/intellij/javascript/JSClassNameMacro.java
+++ b/plugin/src/main/java/com/intellij/javascript/JSClassNameMacro.java
@@ -55,13 +55,13 @@ public String getDefaultValue() {
     }
 
     @Override
-    public Result calculateResult(@Nonnull final Expression[] params, final ExpressionContext context) {
-        final PsiElement elementAtCaret = findElementAtCaret(context);
-        final JSResolveUtil.ContextResolver resolver = new JSResolveUtil.ContextResolver(elementAtCaret);
+    public Result calculateResult(@Nonnull Expression[] params, ExpressionContext context) {
+        PsiElement elementAtCaret = findElementAtCaret(context);
+        JSResolveUtil.ContextResolver resolver = new JSResolveUtil.ContextResolver(elementAtCaret);
 
         String text = resolver.getQualifierAsString();
         if (text == null) {
-            final JSFunction previousFunction = PsiTreeUtil.getPrevSiblingOfType(elementAtCaret, JSFunction.class);
+            JSFunction previousFunction = PsiTreeUtil.getPrevSiblingOfType(elementAtCaret, JSFunction.class);
 
             if (previousFunction != null) {
                 text = previousFunction.getName();
@@ -75,7 +75,7 @@ public Result calculateResult(@Nonnull final Expression[] params, final Expressi
         return null;
     }
 
-    public static PsiElement findElementAtCaret(final ExpressionContext context) {
+    public static PsiElement findElementAtCaret(ExpressionContext context) {
         Project project = context.getProject();
         int templateStartOffset = context.getTemplateStartOffset();
         int offset = templateStartOffset > 0 ? context.getTemplateStartOffset() - 1 : context.getTemplateStartOffset();
@@ -87,12 +87,12 @@ public static PsiElement findElementAtCaret(final ExpressionContext context) {
     }
 
     @Override
-    public Result calculateQuickResult(@Nonnull final Expression[] params, final ExpressionContext context) {
+    public Result calculateQuickResult(@Nonnull Expression[] params, ExpressionContext context) {
         return null;
     }
 
     @Override
-    public LookupElement[] calculateLookupItems(@Nonnull final Expression[] params, final ExpressionContext context) {
+    public LookupElement[] calculateLookupItems(@Nonnull Expression[] params, ExpressionContext context) {
         return null;
     }
 }
diff --git a/plugin/src/main/java/com/intellij/javascript/JSMethodNameMacro.java b/plugin/src/main/java/com/intellij/javascript/JSMethodNameMacro.java
index 02ad8535..19c845e8 100644
--- a/plugin/src/main/java/com/intellij/javascript/JSMethodNameMacro.java
+++ b/plugin/src/main/java/com/intellij/javascript/JSMethodNameMacro.java
@@ -50,7 +50,7 @@ public String getDefaultValue() {
 
     @Override
     public Result calculateResult(@Nonnull Expression[] params, ExpressionContext context) {
-        final PsiElement elementAtCaret = JSClassNameMacro.findElementAtCaret(context);
+        PsiElement elementAtCaret = JSClassNameMacro.findElementAtCaret(context);
         if (elementAtCaret != null) {
             JSFunction function = PsiTreeUtil.getParentOfType(elementAtCaret, JSFunction.class);
             if (function instanceof JSFunctionExpression functionExpression) {
@@ -58,7 +58,7 @@ public Result calculateResult(@Nonnull Expression[] params, ExpressionContext co
             }
 
             if (function != null) {
-                final String name = function.getName();
+                String name = function.getName();
                 if (name != null) {
                     return new TextResult(name);
                 }
diff --git a/plugin/src/main/java/com/intellij/javascript/JSParameterInfoHandler.java b/plugin/src/main/java/com/intellij/javascript/JSParameterInfoHandler.java
index 24bffda6..ee3290e9 100644
--- a/plugin/src/main/java/com/intellij/javascript/JSParameterInfoHandler.java
+++ b/plugin/src/main/java/com/intellij/javascript/JSParameterInfoHandler.java
@@ -50,15 +50,15 @@ public boolean couldShowInLookup() {
     }
 
     @Override
-    public Object[] getParametersForLookup(final LookupElement item, final ParameterInfoContext context) {
+    public Object[] getParametersForLookup(LookupElement item, ParameterInfoContext context) {
         if (!(item instanceof MutableLookupElement)) {
             return null;
         }
 
         PsiElement element = item.getPsiElement();
         if (element instanceof JSFunction) {
-            final JSFunction originalFunction = (JSFunction)element;
-            final List lookupItems = new ArrayList<>();
+            JSFunction originalFunction = (JSFunction)element;
+            List lookupItems = new ArrayList<>();
             Set availableSignatures = new HashSet<>();
 
             for (PsiElement el : DefinitionsScopedSearch.search(originalFunction)) {
@@ -75,13 +75,13 @@ public Object[] getParametersForLookup(final LookupElement item, final Parameter
         return ArrayUtil.EMPTY_OBJECT_ARRAY;
     }
 
-    private static void doAddSignature(final List lookupItems, final Set availableSignatures, final PsiElement el) {
+    private static void doAddSignature(List lookupItems, Set availableSignatures, PsiElement el) {
         if (el instanceof JSFunction function) {
-            final JSParameterList parameterList = function.getParameterList();
+            JSParameterList parameterList = function.getParameterList();
 
             if (parameterList != null) {
-                final String typedSignature = buildSignature(parameterList.getParameters(), false, -1).text;
-                final String untypedSignature = buildSignature(parameterList.getParameters(), true, -1).text;
+                String typedSignature = buildSignature(parameterList.getParameters(), false, -1).text;
+                String untypedSignature = buildSignature(parameterList.getParameters(), true, -1).text;
 
                 if (!availableSignatures.contains(typedSignature) && !availableSignatures.contains(untypedSignature)) {
                     lookupItems.add(function);
@@ -93,7 +93,7 @@ private static void doAddSignature(final List lookupItems, final Set
     }
 
     @Override
-    public JSArgumentList findElementForParameterInfo(final CreateParameterInfoContext context) {
+    public JSArgumentList findElementForParameterInfo(CreateParameterInfoContext context) {
         JSArgumentList argList = findArgumentList(context.getFile(), context.getOffset());
 
         if (argList != null) {
@@ -103,10 +103,10 @@ public JSArgumentList findElementForParameterInfo(final CreateParameterInfoConte
     }
 
     @Nullable
-    public static JSArgumentList findArgumentList(final PsiFile file, final int offset) {
+    public static JSArgumentList findArgumentList(PsiFile file, int offset) {
         JSArgumentList argList = ParameterInfoUtils.findParentOfType(file, offset, JSArgumentList.class);
         if (argList == null) {
-            final JSCallExpression callExpression = ParameterInfoUtils.findParentOfType(file, offset, JSCallExpression.class);
+            JSCallExpression callExpression = ParameterInfoUtils.findParentOfType(file, offset, JSCallExpression.class);
             if (callExpression != null) {
                 argList = callExpression.getArgumentList();
             }
@@ -116,19 +116,19 @@ public static JSArgumentList findArgumentList(final PsiFile file, final int offs
 
     @Nullable
     private static JSArgumentList fillSignaturesForArgumentList(
-        final CreateParameterInfoContext context,
-        final @Nonnull JSArgumentList argList
+        CreateParameterInfoContext context,
+        @Nonnull JSArgumentList argList
     ) {
-        final PsiElement psiElement = argList.getParent();
+        PsiElement psiElement = argList.getParent();
         if (!(psiElement instanceof JSCallExpression)) {
             return null;
         }
 
-        final JSCallExpression parent = (JSCallExpression)psiElement;
-        final JSExpression methodExpression = parent.getMethodExpression();
+        JSCallExpression parent = (JSCallExpression)psiElement;
+        JSExpression methodExpression = parent.getMethodExpression();
 
         if (methodExpression instanceof JSReferenceExpression referenceExpression) {
-            final ResolveResult[] resolveResults = referenceExpression.multiResolve(true);
+            ResolveResult[] resolveResults = referenceExpression.multiResolve(true);
 
             if (resolveResults.length > 0) {
                 List items = new ArrayList(resolveResults.length);
@@ -148,7 +148,7 @@ private static JSArgumentList fillSignaturesForArgumentList(
             }
         }
         else if (methodExpression instanceof JSSuperExpression) {
-            final PsiElement clazz = methodExpression.getReference().resolve();
+            PsiElement clazz = methodExpression.getReference().resolve();
             if (clazz instanceof JSFunction) {
                 context.setItemsToShow(new Object[]{clazz});
                 return argList;
@@ -158,36 +158,36 @@ else if (methodExpression instanceof JSSuperExpression) {
     }
 
     @Override
-    public void showParameterInfo(@Nonnull final JSArgumentList element, final CreateParameterInfoContext context) {
+    public void showParameterInfo(@Nonnull JSArgumentList element, CreateParameterInfoContext context) {
         context.showHint(element, element.getTextOffset(), this);
     }
 
     @Override
-    public JSArgumentList findElementForUpdatingParameterInfo(final UpdateParameterInfoContext context) {
+    public JSArgumentList findElementForUpdatingParameterInfo(UpdateParameterInfoContext context) {
         return findArgumentList(context.getFile(), context.getOffset());
     }
 
     @Override
-    public void updateParameterInfo(@Nonnull final JSArgumentList o, final UpdateParameterInfoContext context) {
+    public void updateParameterInfo(@Nonnull JSArgumentList o, UpdateParameterInfoContext context) {
         if (context.getParameterOwner() != o) {
             context.removeHint();
             return;
         }
-        final int currentParameterIndex = ParameterInfoUtils.getCurrentParameterIndex(o.getNode(), context.getOffset(), JSTokenTypes.COMMA);
+        int currentParameterIndex = ParameterInfoUtils.getCurrentParameterIndex(o.getNode(), context.getOffset(), JSTokenTypes.COMMA);
         context.setCurrentParameter(currentParameterIndex);
     }
 
     @Override
-    public void updateUI(final JSFunction p, final ParameterInfoUIContext context) {
-        final JSParameterList parameterList = p.getParameterList();
-        final JSParameter[] params = parameterList != null ? parameterList.getParameters() : new JSParameter[0];
-        final int currentParameterIndex = context.getCurrentParameterIndex() >= 0 ? context.getCurrentParameterIndex() : params.length;
-        final JSParameter parameter = currentParameterIndex < params.length ? params[currentParameterIndex] : null;
+    public void updateUI(JSFunction p, ParameterInfoUIContext context) {
+        JSParameterList parameterList = p.getParameterList();
+        JSParameter[] params = parameterList != null ? parameterList.getParameters() : new JSParameter[0];
+        int currentParameterIndex = context.getCurrentParameterIndex() >= 0 ? context.getCurrentParameterIndex() : params.length;
+        JSParameter parameter = currentParameterIndex < params.length ? params[currentParameterIndex] : null;
 
-        final SignatureInfo signatureInfo = buildSignature(params, false, currentParameterIndex);
-        final String name = signatureInfo.text;
+        SignatureInfo signatureInfo = buildSignature(params, false, currentParameterIndex);
+        String name = signatureInfo.text;
 
-        final String currentParameterSignature = parameter != null ? getSignatureForParameter(parameter, false) : null;
+        String currentParameterSignature = parameter != null ? getSignatureForParameter(parameter, false) : null;
         int highlightStart = parameter != null ? signatureInfo.selectedParameterStart : 0;
         int highlightEnd = parameter != null ? highlightStart + currentParameterSignature.length() : 0;
         context.setupUIComponentPresentation(name, highlightStart, highlightEnd, false, false, false, context.getDefaultParameterColor());
@@ -200,7 +200,7 @@ private static class SignatureInfo {
 
     private static
     @Nonnull
-    SignatureInfo buildSignature(final JSParameter[] params, final boolean skipType, int selectedParameterIndex) {
+    SignatureInfo buildSignature(JSParameter[] params, boolean skipType, int selectedParameterIndex) {
         SignatureInfo info = new SignatureInfo();
         if (params.length > 0) {
             StringBuilder result = new StringBuilder();
@@ -222,11 +222,11 @@ SignatureInfo buildSignature(final JSParameter[] params, final boolean skipType,
         return info;
     }
 
-    public static String getSignatureForParameter(final JSParameter p, boolean skipType) {
-        final String s = skipType ? null : p.getTypeString();
+    public static String getSignatureForParameter(JSParameter p, boolean skipType) {
+        String s = skipType ? null : p.getTypeString();
 
         if (s != null && s.length() > 0) {
-            final boolean ecmal4 = p.getContainingFile().getLanguage() == JavaScriptSupportLoader.ECMA_SCRIPT_L4;
+            boolean ecmal4 = p.getContainingFile().getLanguage() == JavaScriptSupportLoader.ECMA_SCRIPT_L4;
             String result;
 
             if (ecmal4) {
@@ -240,7 +240,7 @@ public static String getSignatureForParameter(final JSParameter p, boolean skipT
             else {
                 result = "[" + s + "] " + p.getName();
             }
-            final String initializerText = p.getInitializerText();
+            String initializerText = p.getInitializerText();
             if (initializerText != null) {
                 result += " = " + initializerText;
             }
@@ -251,7 +251,7 @@ public static String getSignatureForParameter(final JSParameter p, boolean skipT
 
     @Override
     @Nonnull
-    public JSExpression[] getActualParameters(@Nonnull final JSArgumentList jsArgumentList) {
+    public JSExpression[] getActualParameters(@Nonnull JSArgumentList jsArgumentList) {
         return jsArgumentList.getArguments();
     }
 
diff --git a/plugin/src/main/java/com/intellij/javascript/manipulators/JSAbstractElementManipulator.java b/plugin/src/main/java/com/intellij/javascript/manipulators/JSAbstractElementManipulator.java
index 6f991038..551e93c9 100644
--- a/plugin/src/main/java/com/intellij/javascript/manipulators/JSAbstractElementManipulator.java
+++ b/plugin/src/main/java/com/intellij/javascript/manipulators/JSAbstractElementManipulator.java
@@ -27,7 +27,7 @@
  */
 abstract class JSAbstractElementManipulator extends AbstractElementManipulator {
     @Override
-    public T handleContentChange(final T element, final TextRange range, String newContent) throws IncorrectOperationException {
+    public T handleContentChange(T element, TextRange range, String newContent) throws IncorrectOperationException {
         String oldText = element.getText();
         newContent = StringUtil.escapeStringCharacters(newContent);
         String newText = oldText.substring(0, range.getStartOffset()) + newContent + oldText.substring(range.getEndOffset());
@@ -35,5 +35,5 @@ public T handleContentChange(final T element, final TextRange range, String newC
         return (T)element.replace(createTree(newText, element.getProject()));
     }
 
-    protected abstract T createTree(final String newText, final Project project);
+    protected abstract T createTree(String newText, Project project);
 }
diff --git a/plugin/src/main/java/com/intellij/javascript/manipulators/JSAttributeNameValuePairManipulator.java b/plugin/src/main/java/com/intellij/javascript/manipulators/JSAttributeNameValuePairManipulator.java
index a3bbee6b..463eb7b7 100644
--- a/plugin/src/main/java/com/intellij/javascript/manipulators/JSAttributeNameValuePairManipulator.java
+++ b/plugin/src/main/java/com/intellij/javascript/manipulators/JSAttributeNameValuePairManipulator.java
@@ -31,9 +31,9 @@
 @ExtensionImpl
 public class JSAttributeNameValuePairManipulator extends JSAbstractElementManipulator {
     @Override
-    protected JSAttributeNameValuePair createTree(final String newText, final Project project) {
+    protected JSAttributeNameValuePair createTree(String newText, Project project) {
         @NonNls String ToCreate = "[A(" + newText + ")] class C {}";
-        final PsiElement element = JSChangeUtil.createStatementFromText(project, ToCreate).getPsi();
+        PsiElement element = JSChangeUtil.createStatementFromText(project, ToCreate).getPsi();
         return ((JSClass)element).getAttributeList().getAttributes()[0].getValues()[0];
     }
 
diff --git a/plugin/src/main/java/com/intellij/javascript/manipulators/JSDocTagManipulator.java b/plugin/src/main/java/com/intellij/javascript/manipulators/JSDocTagManipulator.java
index 6288ea6c..21cb5543 100644
--- a/plugin/src/main/java/com/intellij/javascript/manipulators/JSDocTagManipulator.java
+++ b/plugin/src/main/java/com/intellij/javascript/manipulators/JSDocTagManipulator.java
@@ -26,9 +26,9 @@
 @ExtensionImpl
 public class JSDocTagManipulator extends JSAbstractElementManipulator {
     @Override
-    protected JSDocTag createTree(final String newText, final Project project) {
+    protected JSDocTag createTree(String newText, Project project) {
         String ToCreate = "/** " + newText + " */";
-        final PsiElement element = JSChangeUtil.createJSTreeFromText(project, ToCreate).getPsi();
+        PsiElement element = JSChangeUtil.createJSTreeFromText(project, ToCreate).getPsi();
         return ((JSDocComment)element).getTags()[0];
     }
 
diff --git a/plugin/src/main/java/com/intellij/javascript/manipulators/JSIncludeDirectiveManipulator.java b/plugin/src/main/java/com/intellij/javascript/manipulators/JSIncludeDirectiveManipulator.java
index fa35041c..a66bc687 100644
--- a/plugin/src/main/java/com/intellij/javascript/manipulators/JSIncludeDirectiveManipulator.java
+++ b/plugin/src/main/java/com/intellij/javascript/manipulators/JSIncludeDirectiveManipulator.java
@@ -28,7 +28,7 @@
 @ExtensionImpl
 public class JSIncludeDirectiveManipulator extends JSAbstractElementManipulator {
     @Override
-    protected JSIncludeDirectiveImpl createTree(final String newText, final Project project) {
+    protected JSIncludeDirectiveImpl createTree(String newText, Project project) {
         return (JSIncludeDirectiveImpl)JSChangeUtil.createStatementFromText(project, newText).getPsi();
     }
 
diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/AddImportECMAScriptClassOrFunctionAction.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/AddImportECMAScriptClassOrFunctionAction.java
index ed2daf06..406641e6 100644
--- a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/AddImportECMAScriptClassOrFunctionAction.java
+++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/AddImportECMAScriptClassOrFunctionAction.java
@@ -80,7 +80,7 @@ public AddImportECMAScriptClassOrFunctionAction(Editor editor, PsiPolyVariantRef
     @RequiredUIAccess
     public boolean showHint(@Nonnull Editor editor) {
         myEditor = editor;
-        final PsiElement element = myReference.getElement();
+        PsiElement element = myReference.getElement();
         TextRange textRange = InjectedLanguageManager.getInstance(element.getProject()).injectedToHost(element, element.getTextRange());
         HintManager.getInstance().showQuestionHint(editor, getText(), textRange.getStartOffset(), textRange.getEndOffset(), this);
         return true;
@@ -113,10 +113,10 @@ public boolean isAvailable(@Nonnull Project project, Editor editor, PsiFile file
         if (!myReference.getElement().isValid()) {
             return false;
         }
-        final long modL = myReference.getElement().getManager().getModificationTracker().getModificationCount();
+        long modL = myReference.getElement().getManager().getModificationTracker().getModificationCount();
 
         if (!isAvailableCalculated || modL != modificationCount) {
-            final ResolveResult[] results = myReference.multiResolve(false);
+            ResolveResult[] results = myReference.multiResolve(false);
             boolean hasValidResult = false;
 
             for (ResolveResult r : results) {
@@ -127,7 +127,7 @@ public boolean isAvailable(@Nonnull Project project, Editor editor, PsiFile file
             }
 
             if (!hasValidResult) {
-                final Collection candidates = getCandidates(editor, file);
+                Collection candidates = getCandidates(editor, file);
 
                 isAvailableCalculated = true;
                 isAvailable = candidates.size() > 0;
@@ -156,7 +156,7 @@ public boolean isAvailable(@Nonnull Project project, Editor editor, PsiFile file
 
     @RequiredReadAction
     private Collection getCandidates(Editor editor, PsiFile file) {
-        final Collection candidates;
+        Collection candidates;
 
         if (myReference instanceof JSReferenceExpression referenceExpression && referenceExpression.getQualifier() == null) {
             Collection c = getCandidates(editor, file, myReference.getCanonicalText());
@@ -185,7 +185,7 @@ private Collection getCandidates(Editor editor, PsiFile
 
     @RequiredReadAction
     public static Collection getCandidates(Editor editor, PsiFile file, String name) {
-        final Module element = ModuleUtilCore.findModuleForPsiElement(file);
+        Module element = ModuleUtilCore.findModuleForPsiElement(file);
         if (element != null) {
             return JSResolveUtil.findElementsByName(
                 name,
@@ -200,8 +200,8 @@ public static Collection getCandidates(Editor editor, P
 
     @Override
     @RequiredWriteAction
-    public void invoke(@Nonnull final Project project, final Editor editor, final PsiFile file) {
-        final Collection candidates = getCandidates(editor, file);
+    public void invoke(@Nonnull final Project project, final Editor editor, PsiFile file) {
+        Collection candidates = getCandidates(editor, file);
 
         if (candidates.size() > 0) {
             if (candidates.size() > 1) {
@@ -210,15 +210,15 @@ public void invoke(@Nonnull final Project project, final Editor editor, final Ps
                     new PsiElementListCellRenderer<>() {
                         @Override
                         @RequiredReadAction
-                        public String getElementText(final JSQualifiedNamedElement element) {
+                        public String getElementText(JSQualifiedNamedElement element) {
                             return element.getName();
                         }
 
                         @Override
                         @RequiredReadAction
-                        protected String getContainerText(final JSQualifiedNamedElement element, final String name) {
-                            final String qName = element.getQualifiedName();
-                            final String elementName = element.getName();
+                        protected String getContainerText(JSQualifiedNamedElement element, String name) {
+                            String qName = element.getQualifiedName();
+                            String elementName = element.getName();
                             String s = qName.equals(elementName)
                                 ? ""
                                 : qName.substring(0, qName.length() - elementName.length() - 1);
@@ -257,9 +257,9 @@ public boolean execute(@Nonnull JSQualifiedNamedElement element) {
     }
 
     @RequiredWriteAction
-    private void doImport(Editor editor, final String qName) {
+    private void doImport(Editor editor, String qName) {
         Application.get().runWriteAction(() -> {
-            final PsiElement element = myReference.getElement();
+            PsiElement element = myReference.getElement();
             ImportUtils.doImport(element, qName);
         });
     }
@@ -272,7 +272,7 @@ public boolean startInWriteAction() {
     @Override
     @RequiredWriteAction
     public boolean execute() {
-        final PsiFile containingFile = myReference.getElement().getContainingFile();
+        PsiFile containingFile = myReference.getElement().getContainingFile();
         invoke(containingFile.getProject(), myEditor, containingFile);
 
         return true;
diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/ImportUtils.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/ImportUtils.java
index 1b8515b5..b372684c 100644
--- a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/ImportUtils.java
+++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/ImportUtils.java
@@ -299,7 +299,7 @@ public static String createImportBlock(Project project, Collection fqns)
         List sorted = new ArrayList<>(fqns);
         Collections.sort(sorted, ImportUtils::compareImports);
 
-        final String semicolon = JSChangeUtil.getSemicolon(project);
+        String semicolon = JSChangeUtil.getSemicolon(project);
         StringBuilder s = new StringBuilder();
         for (String fqn : sorted) {
             s.append("import ").append(fqn).append(semicolon);
diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/AbcDumper.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/AbcDumper.java
index e46484b4..6bcbbf2d 100644
--- a/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/AbcDumper.java
+++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/flex/importer/AbcDumper.java
@@ -26,7 +26,7 @@
 class AbcDumper extends AbstractDumpProcessor {
     private boolean dumpCode;
 
-    public AbcDumper(final boolean _dumpCode) {
+    public AbcDumper(boolean _dumpCode) {
         dumpCode = _dumpCode;
     }
 
diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSCodeStylePanel.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSCodeStylePanel.java
index d31a677e..65eb68cf 100644
--- a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSCodeStylePanel.java
+++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSCodeStylePanel.java
@@ -47,7 +47,7 @@ public class JSCodeStylePanel extends CodeStyleAbstractPanel {
     private boolean myInsideUpdate = false;
 
     @RequiredUIAccess
-    public JSCodeStylePanel(final CodeStyleSettings settings) {
+    public JSCodeStylePanel(CodeStyleSettings settings) {
         super(settings);
 
         installPreviewPanel(myPreviewPanel);
@@ -60,7 +60,7 @@ public JSCodeStylePanel(final CodeStyleSettings settings) {
             }
         });
 
-        final DocumentAdapter adapter = new DocumentAdapter() {
+        DocumentAdapter adapter = new DocumentAdapter() {
             @Override
             protected void textChanged(DocumentEvent e) {
                 if (!myInsideUpdate) {
diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSSpacingProcessor.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSSpacingProcessor.java
index 29a14380..6073d735 100644
--- a/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSSpacingProcessor.java
+++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/formatter/JSSpacingProcessor.java
@@ -124,7 +124,7 @@ private boolean shouldFormatXmlLiteralExpression() {
     }
 
     @Override
-    public void visitAttributeList(final ASTNode node) {
+    public void visitAttributeList(ASTNode node) {
         if (type1 == JSElementTypes.ATTRIBUTE || type2 == JSElementTypes.ATTRIBUTE) {
             myResult = Spacing.createSpacing(
                 0,
@@ -146,7 +146,7 @@ public void visitAttributeList(final ASTNode node) {
     }
 
     @Override
-    public void visitEmbeddedContent(final ASTNode node) {
+    public void visitEmbeddedContent(ASTNode node) {
         if (type2 == JSTokenTypes.END_OF_LINE_COMMENT) {
             myResult = Spacing.createSpacing(
                 0,
diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/BaseJSGenerateAction.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/BaseJSGenerateAction.java
index fc6a811f..9f4dfb47 100644
--- a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/BaseJSGenerateAction.java
+++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/BaseJSGenerateAction.java
@@ -38,7 +38,7 @@
 abstract class BaseJSGenerateAction extends AnAction {
     @Override
     @RequiredUIAccess
-    public void actionPerformed(final AnActionEvent e) {
+    public void actionPerformed(AnActionEvent e) {
         Editor editor = e.getData(PlatformDataKeys.EDITOR);
         PsiFile psifile = e.getData(LangDataKeys.PSI_FILE);
         Project project = e.getData(PlatformDataKeys.PROJECT);
diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/BaseJSGenerateHandler.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/BaseJSGenerateHandler.java
index 7105a2eb..6d4cf14e 100644
--- a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/BaseJSGenerateHandler.java
+++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/BaseJSGenerateHandler.java
@@ -92,7 +92,7 @@ public void run() {
                     @Override
                     public void run() {
                         try {
-                            final BaseCreateMethodsFix createMethodsFix = createFix(jsClass);
+                            BaseCreateMethodsFix createMethodsFix = createFix(jsClass);
                             createMethodsFix.addElementsToProcessFrom(selectedElements);
                             createMethodsFix.invoke(project, editor, file);
                         }
@@ -149,7 +149,7 @@ else if (JSResolveUtil.isArtificialClassUsedForReferenceList(clazz)) {
 
     protected abstract BaseCreateMethodsFix createFix(JSClass clazz);
 
-    protected abstract void collectCandidates(JSClass clazz, final Collection candidates);
+    protected abstract void collectCandidates(JSClass clazz, Collection candidates);
 
     @Override
     public boolean startInWriteAction() {
diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptGenerateAccessorHandler.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptGenerateAccessorHandler.java
index 046db4ac..1088f29e 100644
--- a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptGenerateAccessorHandler.java
+++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptGenerateAccessorHandler.java
@@ -124,7 +124,7 @@ public void invoke(@Nonnull Project project, Editor editor, PsiFile file) throws
                     StringBuilder functionText = new StringBuilder("public function ").append(jsClass.getName()).append("(");
                     StringBuilder initialization = new StringBuilder();
                     boolean first = true;
-                    final String semicolon = JSChangeUtil.getSemicolon(project);
+                    String semicolon = JSChangeUtil.getSemicolon(project);
 
                     Set toProcess = getElementsToProcess();
                     Iterator variableIterator = toProcess.iterator();
@@ -138,10 +138,10 @@ public void invoke(@Nonnull Project project, Editor editor, PsiFile file) throws
 
                         first = false;
 
-                        final String name = var.getName();
+                        String name = var.getName();
                         String parameterName = transformVarNameToAccessorName(name, codeStyleSettings);
 
-                        final String typeString = var.getTypeString();
+                        String typeString = var.getTypeString();
                         functionText.append(parameterName).append(typeString != null ? ":" + typeString : "");
 
                         if (JSResolveUtil.findParent(var) == jsClass) {
@@ -199,7 +199,7 @@ else if (mode == GenerationMode.TOSTRING) {
                 public void invoke(@Nonnull Project project, Editor editor, PsiFile file) throws IncorrectOperationException {
                     evalAnchor(editor, file);
 
-                    final boolean[] needOverride = new boolean[1];
+                    boolean[] needOverride = new boolean[1];
                     JSResolveUtil.processOverrides(
                         jsClass,
                         (processor, scope, className) -> {
@@ -244,7 +244,7 @@ public void invoke(@Nonnull Project project, Editor editor, PsiFile file) throws
 
     @Override
     @RequiredReadAction
-    protected void collectCandidates(JSClass clazz, final Collection candidates) {
+    protected void collectCandidates(JSClass clazz, Collection candidates) {
         final LinkedHashMap candidatesMap = new LinkedHashMap<>();
         final JSCodeStyleSettings codeStyleSettings =
             CodeStyleSettingsManager.getSettings(clazz.getProject()).getCustomSettings(JSCodeStyleSettings.class);
diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptOverrideMethodsHandler.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptOverrideMethodsHandler.java
index d48c9083..b2a900e2 100644
--- a/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptOverrideMethodsHandler.java
+++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/generation/JavaScriptOverrideMethodsHandler.java
@@ -52,7 +52,7 @@ protected BaseCreateMethodsFix createFix(JSClass clazz) {
 
     @Override
     @RequiredReadAction
-    protected void collectCandidates(JSClass clazz, final Collection candidates) {
+    protected void collectCandidates(JSClass clazz, Collection candidates) {
         Map _functionsToOverride = null;
         Function functionFilter = function -> {
             JSAttributeList attributeList = function.getAttributeList();
diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptLineMarkerProvider.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptLineMarkerProvider.java
index 9b5b39c8..dc07ca21 100644
--- a/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptLineMarkerProvider.java
+++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/highlighting/JavaScriptLineMarkerProvider.java
@@ -144,13 +144,13 @@ protected Query search(JSFunction elt) {
 
     @Override
     @RequiredReadAction
-    public LineMarkerInfo getLineMarkerInfo(@Nonnull final PsiElement element) {
+    public LineMarkerInfo getLineMarkerInfo(@Nonnull PsiElement element) {
         if (element instanceof JSFunction function) {
             function.putUserData(ourParticipatesInHierarchyKey, null);
             if (function.getNameIdentifier() == null) {
                 return null;
             }
-            final String qName = JSResolveUtil.getQNameToStartHierarchySearch(function);
+            String qName = JSResolveUtil.getQNameToStartHierarchySearch(function);
 
             if (qName != null) {
                 PsiElement parentNode = element.getParent();
@@ -165,12 +165,12 @@ public LineMarkerInfo getLineMarkerInfo(@Nonnull final PsiElement element) {
                     parentNode = functionExpr.getContainingFile();
                 }
 
-                final MyOverrideHandler overrideHandler = new MyOverrideHandler();
-                final String typeName = parentNode instanceof JSClass jsClass ? jsClass.getQualifiedName() : qName;
+                MyOverrideHandler overrideHandler = new MyOverrideHandler();
+                String typeName = parentNode instanceof JSClass jsClass ? jsClass.getQualifiedName() : qName;
                 JSResolveUtil.iterateType(function, parentNode, typeName, overrideHandler);
 
                 if (overrideHandler.className != null) {
-                    final PsiElement parentNode1 = parentNode;
+                    PsiElement parentNode1 = parentNode;
                     function.putUserData(ourParticipatesInHierarchyKey, Boolean.TRUE);
 
                     return new LineMarkerInfo<>(
@@ -180,7 +180,7 @@ public LineMarkerInfo getLineMarkerInfo(@Nonnull final PsiElement element) {
                         Pass.UPDATE_ALL,
                         psiElement -> OVERRIDES_METHOD_IN + overrideHandler.className,
                         (e, elt) -> {
-                            final Set results = new HashSet<>();
+                            Set results = new HashSet<>();
                             JSResolveUtil.iterateType(
                                 function,
                                 parentNode1,
@@ -213,11 +213,11 @@ else if (results.size() > 1) {
 
     @Override
     @RequiredReadAction
-    public void collectSlowLineMarkers(@Nonnull final List elements, @Nonnull final Collection result) {
-        final Map> jsFunctionsToProcess = new HashMap<>();
-        final Map> jsMethodsToProcess = new HashMap<>();
+    public void collectSlowLineMarkers(@Nonnull List elements, @Nonnull final Collection result) {
+        Map> jsFunctionsToProcess = new HashMap<>();
+        Map> jsMethodsToProcess = new HashMap<>();
 
-        for (final PsiElement el : elements) {
+        for (PsiElement el : elements) {
             ProgressManager.getInstance().checkCanceled();
 
             if (el instanceof JSFunction function) {
@@ -286,7 +286,7 @@ public boolean process(JSClass jsClass) {
                     }
 
                     if (methodsClone != null) {
-                        for (final Iterator functionIterator = methodsClone.iterator(); functionIterator.hasNext(); ) {
+                        for (Iterator functionIterator = methodsClone.iterator(); functionIterator.hasNext(); ) {
                             JSFunction function = functionIterator.next();
 
                             JSFunction byName = jsClass.findFunctionByNameAndKind(function.getName(), function.getKind());
@@ -429,7 +429,7 @@ private abstract static class BasicGutterIconNavigationHandler navElements = new ArrayList<>();
+            List navElements = new ArrayList<>();
             Query elementQuery = search(elt);
             if (elementQuery == null) {
                 return;
diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/extractMethod/JSExtractFunctionHandler.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/extractMethod/JSExtractFunctionHandler.java
index aee13a49..bf35c2ef 100644
--- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/extractMethod/JSExtractFunctionHandler.java
+++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/extractMethod/JSExtractFunctionHandler.java
@@ -36,7 +36,7 @@
 public class JSExtractFunctionHandler implements RefactoringActionHandler {
     @Override
     @RequiredUIAccess
-    public void invoke(@Nonnull final Project project, final Editor editor, PsiFile file, DataContext dataContext) {
+    public void invoke(@Nonnull Project project, Editor editor, PsiFile file, DataContext dataContext) {
         if (!editor.getSelectionModel().hasSelection()) {
             editor.getSelectionModel().selectLineAtCaret();
         }
diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceConstant/JSIntroduceConstantHandler.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceConstant/JSIntroduceConstantHandler.java
index dacf8c47..f5a2dceb 100644
--- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceConstant/JSIntroduceConstantHandler.java
+++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceConstant/JSIntroduceConstantHandler.java
@@ -56,7 +56,7 @@ protected JSIntroduceConstantDialog createDialog(Project project, JSExpression e
     @Override
     protected String getDeclText(JSIntroduceConstantSettings settings) {
         String baseDeclText = "static const " + settings.getVariableName();
-        final JSAttributeList.AccessType type = settings.getAccessType();
+        JSAttributeList.AccessType type = settings.getAccessType();
         if (type != JSAttributeList.AccessType.PACKAGE_LOCAL) {
             baseDeclText = type.toString().toLowerCase() + " " + baseDeclText;
         }
diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceField/JSIntroduceFieldHandler.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceField/JSIntroduceFieldHandler.java
index d045fb06..e6d1aec1 100644
--- a/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceField/JSIntroduceFieldHandler.java
+++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/refactoring/introduceField/JSIntroduceFieldHandler.java
@@ -68,7 +68,7 @@ protected JSElement addStatementBefore(JSElement anchorStatement, JSVarStatement
     }
 
     @Override
-    protected String getDeclText(final JSIntroduceFieldSettings settings) {
+    protected String getDeclText(JSIntroduceFieldSettings settings) {
         String baseDeclText = super.getDeclText(settings);
         JSAttributeList.AccessType type = settings.getAccessType();
         if (type != JSAttributeList.AccessType.PACKAGE_LOCAL) {
diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSFunctionsSearch.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSFunctionsSearch.java
index adcc72f2..81cf7f89 100644
--- a/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSFunctionsSearch.java
+++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/search/JSFunctionsSearch.java
@@ -85,7 +85,7 @@ public boolean execute(SearchParameters queryParameters, final @Nonnull Predicat
         return makeQuery(queryParameters, clazz).forEach(new Predicate<>() {
             @Override
             @RequiredReadAction
-            public boolean test(final JSClass jsClass) {
+            public boolean test(JSClass jsClass) {
                 JSFunction function = jsClass.findFunctionByNameAndKind(baseFunction.getName(), baseFunction.getKind());
                 return function == null || consumer.test(function);
             }
diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureItemPresentation.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureItemPresentation.java
index 17f448b6..e95f58d8 100644
--- a/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureItemPresentation.java
+++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureItemPresentation.java
@@ -94,7 +94,7 @@ public static String getName(@Nonnull PsiElement psiElement) {
                         name += ", ";
                     }
                     name += p.getName();
-                    final String variableType = p.getTypeString();
+                    String variableType = p.getTypeString();
                     if (variableType != null) {
                         name += ":" + variableType;
                     }
diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewElement.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewElement.java
index 6433b7f0..475312e3 100644
--- a/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewElement.java
+++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewElement.java
@@ -122,8 +122,8 @@ public StructureViewTreeElement[] getChildren() {
 
                 TextRange t1 = InjectedLanguageManager.getInstance(e.getProject()).injectedToHost(e, e.getTextRange());
                 TextRange t2 = InjectedLanguageManager.getInstance(e.getProject()).injectedToHost(e, e.getTextRange());
-                final int offset = e.getTextOffset() + t1.getStartOffset();
-                final int offset2 = e2.getTextOffset() + t2.getStartOffset();
+                int offset = e.getTextOffset() + t1.getStartOffset();
+                int offset2 = e2.getTextOffset() + t2.getStartOffset();
 
                 return offset - offset2;
             }
diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewModel.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewModel.java
index e81fd20e..e0b3a7b9 100644
--- a/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewModel.java
+++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/structureView/JSStructureViewModel.java
@@ -231,12 +231,12 @@ public Object getCurrentEditorElement() {
 
         PsiFile file = getPsiFile();
         if (editorElement == null && !(file instanceof JSFile)) {
-            final int offset = getEditor().getCaretModel().getOffset();
+            int offset = getEditor().getCaretModel().getOffset();
             PsiElement at = file.findElementAt(offset);
             PsiLanguageInjectionHost injectionHost = PsiTreeUtil.getParentOfType(at, PsiLanguageInjectionHost.class);
 
             if (injectionHost != null) {
-                final SimpleReference ref = new SimpleReference<>();
+                SimpleReference ref = new SimpleReference<>();
                 InjectedLanguageManager.getInstance(file.getProject()).enumerate(
                     injectionHost,
                     (injectedPsi, places) -> {
diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSExpressionSurroundDescriptor.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSExpressionSurroundDescriptor.java
index 7553bc8e..4a9ee296 100644
--- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSExpressionSurroundDescriptor.java
+++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSExpressionSurroundDescriptor.java
@@ -45,7 +45,7 @@ public class JSExpressionSurroundDescriptor implements SurroundDescriptor {
     @Nonnull
     @RequiredReadAction
     public PsiElement[] getElementsToSurround(PsiFile file, int startOffset, int endOffset) {
-        final JSExpression expr = findExpressionInRange(file, startOffset, endOffset);
+        JSExpression expr = findExpressionInRange(file, startOffset, endOffset);
         if (expr == null) {
             return PsiElement.EMPTY_ARRAY;
         }
diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSStatementSurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSStatementSurrounder.java
index d14f1cd3..92ec0112 100644
--- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSStatementSurrounder.java
+++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSStatementSurrounder.java
@@ -51,8 +51,8 @@ public TextRange surroundElements(@Nonnull Project project, @Nonnull Editor edit
         ASTNode insertBeforeNode = getInsertBeforeNode(node);
 
         for (PsiElement element : elements) {
-            final ASTNode childNode = element.getNode();
-            final ASTNode childNodeCopy = childNode.copyElement();
+            ASTNode childNode = element.getNode();
+            ASTNode childNodeCopy = childNode.copyElement();
 
             container.getNode().removeChild(childNode);
             insertBeforeNode.getTreeParent().addChild(childNodeCopy, insertBeforeNode);
diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSStatementsSurroundDescriptor.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSStatementsSurroundDescriptor.java
index aa71ff34..145b8c48 100644
--- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSStatementsSurroundDescriptor.java
+++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSStatementsSurroundDescriptor.java
@@ -63,7 +63,7 @@ public class JSStatementsSurroundDescriptor implements SurroundDescriptor {
     @Nonnull
     @RequiredReadAction
     public PsiElement[] getElementsToSurround(PsiFile file, int startOffset, int endOffset) {
-        final PsiElement[] statements = findStatementsInRange(file, startOffset, endOffset);
+        PsiElement[] statements = findStatementsInRange(file, startOffset, endOffset);
         if (statements == null) {
             return PsiElement.EMPTY_ARRAY;
         }
diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryCatchFinallySurrounder.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryCatchFinallySurrounder.java
index a7df3aa7..01e7f987 100644
--- a/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryCatchFinallySurrounder.java
+++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/surroundWith/JSWithTryCatchFinallySurrounder.java
@@ -64,12 +64,12 @@ protected ASTNode getInsertBeforeNode(ASTNode statementNode) {
     @RequiredReadAction
     protected TextRange getSurroundSelectionRange(ASTNode statementNode) {
         JSTryStatement stmt = (JSTryStatement)statementNode.getPsi();
-        final JSCatchBlock catchBlock = stmt.getCatchBlock();
+        JSCatchBlock catchBlock = stmt.getCatchBlock();
         if (catchBlock != null) {
             int offset = catchBlock.getStatement().getFirstChild().getNode().getStartOffset() + 1;
             return new TextRange(offset, offset);
         }
-        final JSStatement finallyStmt = stmt.getFinallyStatement();
+        JSStatement finallyStmt = stmt.getFinallyStatement();
         if (finallyStmt != null) {
             int offset = finallyStmt.getFirstChild().getNode().getStartOffset() + 1;
             return new TextRange(offset, offset);
diff --git a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/BaseCreateMethodsFix.java b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/BaseCreateMethodsFix.java
index b4547379..129eff78 100644
--- a/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/BaseCreateMethodsFix.java
+++ b/plugin/src/main/java/com/intellij/lang/javascript/impl/validation/BaseCreateMethodsFix.java
@@ -45,7 +45,7 @@ public abstract class BaseCreateMethodsFix set = new SimpleReference<>();
+                SimpleReference set = new SimpleReference<>();
                 boolean b = JSResolveUtil.iterateType(
                     node,
                     parent,
diff --git a/plugin/src/main/java/consulo/javascript/impl/JavaScriptIconDescriptorUpdater.java b/plugin/src/main/java/consulo/javascript/impl/JavaScriptIconDescriptorUpdater.java
index 3b40f86a..98f6e6e6 100644
--- a/plugin/src/main/java/consulo/javascript/impl/JavaScriptIconDescriptorUpdater.java
+++ b/plugin/src/main/java/consulo/javascript/impl/JavaScriptIconDescriptorUpdater.java
@@ -62,13 +62,13 @@ else if (element instanceof JSFunction && ((JSFunction)element).isSetProperty())
             }
         }
         else if (element instanceof JSClass) {
-            final JSAttributeList attributeList = ((JSClass)element).getAttributeList();
+            JSAttributeList attributeList = ((JSClass)element).getAttributeList();
 
             iconDescriptor.setMainIcon(((JSClass)element).isInterface() ? AllIcons.Nodes.Interface : AllIcons.Nodes.Class);
             addStaticAndFinalIcons(iconDescriptor, attributeList);
 
             if (BitUtil.isSet(flags, Iconable.ICON_FLAG_VISIBILITY)) {
-                final JSAttributeList.AccessType accessType =
+                JSAttributeList.AccessType accessType =
                     attributeList != null ? attributeList.getAccessType() : JSAttributeList.AccessType.PACKAGE_LOCAL;
                 iconDescriptor.setRightIcon(getAccessIcon(accessType));
             }
@@ -82,10 +82,10 @@ else if (element instanceof JSParameter) {
         else if (element instanceof JSVariable) {
             iconDescriptor.setMainIcon(AllIcons.Nodes.Variable);
 
-            final PsiElement grandParent = JSResolveUtil.findParent(element);
+            PsiElement grandParent = JSResolveUtil.findParent(element);
 
             if (grandParent instanceof JSClass) {
-                final JSAttributeList attributeList = ((JSVariable)element).getAttributeList();
+                JSAttributeList attributeList = ((JSVariable)element).getAttributeList();
                 if (attributeList != null) {
                     addStaticAndFinalIcons(iconDescriptor, attributeList);
 
@@ -112,14 +112,14 @@ else if (element instanceof JSNamespaceDeclaration) {
         else if (element instanceof JSFunction) {
             iconDescriptor.setMainIcon(AllIcons.Nodes.Function);
 
-            final PsiElement parent = JSResolveUtil.findParent(element);
+            PsiElement parent = JSResolveUtil.findParent(element);
             if (parent instanceof JSBlockStatement) {
                 if (BitUtil.isSet(flags, Iconable.ICON_FLAG_VISIBILITY)) {
                     iconDescriptor.setRightIcon(AllIcons.Nodes.C_private);
                 }
             }
             else if (parent instanceof JSClass) {
-                final JSAttributeList attributeList = ((JSFunction)element).getAttributeList();
+                JSAttributeList attributeList = ((JSFunction)element).getAttributeList();
                 if (attributeList != null) {
                     addStaticAndFinalIcons(iconDescriptor, attributeList);
                     if (BitUtil.isSet(flags, Iconable.ICON_FLAG_VISIBILITY)) {
diff --git a/plugin/src/main/java/consulo/javascript/impl/copyright/UpdateJavaScriptFileCopyright.java b/plugin/src/main/java/consulo/javascript/impl/copyright/UpdateJavaScriptFileCopyright.java
index b7dcfa0d..176d4aa1 100644
--- a/plugin/src/main/java/consulo/javascript/impl/copyright/UpdateJavaScriptFileCopyright.java
+++ b/plugin/src/main/java/consulo/javascript/impl/copyright/UpdateJavaScriptFileCopyright.java
@@ -33,7 +33,7 @@ public UpdateJavaScriptFileCopyright(@Nonnull PsiFile psiFile, @Nonnull Copyrigh
     protected void scanFile() {
         PsiElement first = getFile().getFirstChild();
         if (first != null) {
-            final PsiElement child = first.getFirstChild();
+            PsiElement child = first.getFirstChild();
             if (child instanceof PsiComment) {
                 first = child;
             }
diff --git a/plugin/src/main/java/consulo/javascript/impl/ide/actions/JavaScriptCreateFileAction.java b/plugin/src/main/java/consulo/javascript/impl/ide/actions/JavaScriptCreateFileAction.java
index 9747e4cc..cbf8fc69 100644
--- a/plugin/src/main/java/consulo/javascript/impl/ide/actions/JavaScriptCreateFileAction.java
+++ b/plugin/src/main/java/consulo/javascript/impl/ide/actions/JavaScriptCreateFileAction.java
@@ -51,12 +51,12 @@ protected FileType getFileTypeForModuleResolve() {
     private static Module findModule(DataContext dataContext) {
         Project project = dataContext.getData(Project.KEY);
         assert project != null;
-        final IdeView view = dataContext.getData(IdeView.KEY);
+        IdeView view = dataContext.getData(IdeView.KEY);
         if (view == null) {
             return null;
         }
 
-        final PsiDirectory directory = view.getOrChooseDirectory();
+        PsiDirectory directory = view.getOrChooseDirectory();
         if (directory == null) {
             return null;
         }
diff --git a/plugin/src/main/java/consulo/javascript/impl/lang/JavaScriptParsingDefinition.java b/plugin/src/main/java/consulo/javascript/impl/lang/JavaScriptParsingDefinition.java
index 8969acfa..85aae054 100644
--- a/plugin/src/main/java/consulo/javascript/impl/lang/JavaScriptParsingDefinition.java
+++ b/plugin/src/main/java/consulo/javascript/impl/lang/JavaScriptParsingDefinition.java
@@ -57,7 +57,7 @@ public IFileElementType getFileNodeType() {
     @Nonnull
     @Override
     public PsiElement createElement(ASTNode node) {
-        final IElementType type = node.getElementType();
+        IElementType type = node.getElementType();
 
         if (type == JSElementTypes.EMBEDDED_CONTENT) {
             return new JSEmbeddedContentImpl(node);
@@ -81,7 +81,7 @@ public PsiFile createFile(FileViewProvider fileViewProvider) {
     @Override
     public SpaceRequirements spaceExistanceTypeBetweenTokens(ASTNode left, ASTNode right) {
         PsiElement leftPsi = left.getPsi();
-        final Lexer lexer = createLexer(leftPsi.getLanguageVersion());
+        Lexer lexer = createLexer(leftPsi.getLanguageVersion());
         return LanguageUtil.canStickTokensTogetherByLexer(left, right, lexer);
     }
 }

From 1fc0f7cc08ce4306695eee4b489eca2e8c77e593 Mon Sep 17 00:00:00 2001
From: Valery Semenchuk 
Date: Thu, 25 Dec 2025 17:36:11 +0200
Subject: [PATCH 137/150] fix #115

---
 .../runConfigurations/consulo_run_desktop_awt.xml     |  2 +-
 .../lang/javascript/types/JSFileElementType.java      |  8 ++++----
 .../consulo/javascript/lang/parsing/JSXParser.java    | 11 ++++++++---
 3 files changed, 13 insertions(+), 8 deletions(-)

diff --git a/.consulo/runConfigurations/consulo_run_desktop_awt.xml b/.consulo/runConfigurations/consulo_run_desktop_awt.xml
index 9e5dd1e0..45d7fbfd 100644
--- a/.consulo/runConfigurations/consulo_run_desktop_awt.xml
+++ b/.consulo/runConfigurations/consulo_run_desktop_awt.xml
@@ -14,7 +14,7 @@