mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
suggest to increase language level for unresolved var references
IDEA-188912
This commit is contained in:
+53
@@ -0,0 +1,53 @@
|
||||
// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package com.intellij.codeInsight.daemon.impl.analysis;
|
||||
|
||||
import com.intellij.codeInsight.daemon.QuickFixActionRegistrar;
|
||||
import com.intellij.codeInsight.intention.QuickFixFactory;
|
||||
import com.intellij.codeInsight.quickfix.UnresolvedReferenceQuickFixProvider;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.pom.java.LanguageLevel;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class LocalVariableTypeInferenceUnresolvedFixProvider extends UnresolvedReferenceQuickFixProvider<PsiJavaCodeReferenceElement> {
|
||||
@Override
|
||||
public void registerFixes(@NotNull PsiJavaCodeReferenceElement ref, @NotNull QuickFixActionRegistrar registrar) {
|
||||
PsiElement typeElement = ref.getParent();
|
||||
PsiElement parent = typeElement instanceof PsiTypeElement ? typeElement.getParent() : null;
|
||||
boolean increaseLanguageLevel = true;
|
||||
LanguageLevel targetLanguageLevel;
|
||||
if (parent instanceof PsiParameter && ((PsiParameter)parent).getDeclarationScope() instanceof PsiLambdaExpression) {
|
||||
//early-draft specification support to be enabled after release
|
||||
if (LanguageLevel.HIGHEST.isAtLeast(LanguageLevel.JDK_X)) {
|
||||
targetLanguageLevel = LanguageLevel.JDK_X;
|
||||
}
|
||||
else if (ApplicationManager.getApplication().isEAP()) {
|
||||
targetLanguageLevel = LanguageLevel.JDK_X;
|
||||
|
||||
//show module options with ability to explicitly agree with legal notice
|
||||
increaseLanguageLevel = false;
|
||||
}
|
||||
else {
|
||||
return;
|
||||
}
|
||||
}
|
||||
else {
|
||||
targetLanguageLevel = LanguageLevel.JDK_10;
|
||||
}
|
||||
|
||||
if (PsiUtil.getLanguageLevel(ref).isAtLeast(targetLanguageLevel)) return;
|
||||
if (!PsiKeyword.VAR.equals(ref.getReferenceName())) return;
|
||||
|
||||
if (increaseLanguageLevel) {
|
||||
registrar.register(QuickFixFactory.getInstance().createIncreaseLanguageLevelFix(targetLanguageLevel));
|
||||
}
|
||||
registrar.register(QuickFixFactory.getInstance().createShowModulePropertiesFix(ref));
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public Class<PsiJavaCodeReferenceElement> getReferenceClass() {
|
||||
return PsiJavaCodeReferenceElement.class;
|
||||
}
|
||||
}
|
||||
@@ -2798,6 +2798,7 @@
|
||||
bundle="com.siyeh.InspectionGadgetsBundle" key="inspection.constant.expression.display.name"
|
||||
groupBundle="messages.InspectionsBundle" groupKey="group.names.code.style.issues"
|
||||
implementationClass="com.siyeh.ig.style.ConstantExpressionInspection"/>
|
||||
<codeInsight.unresolvedReferenceQuickFixProvider implementation="com.intellij.codeInsight.daemon.impl.analysis.LocalVariableTypeInferenceUnresolvedFixProvider"/>
|
||||
</extensions>
|
||||
|
||||
</idea-plugin>
|
||||
|
||||
Reference in New Issue
Block a user