Skip to content

Commit b612e96

Browse files
authored
Support IntelliJ 2021.3 (fkorotkov#124)
* Support IntelliJ 2021.3 * Suppress NoClassDefFoundError error message * Resolve deprecation warning
1 parent 9a800c0 commit b612e96

File tree

4 files changed

+25
-34
lines changed

4 files changed

+25
-34
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ subprojects {
1818
apply plugin: 'org.jetbrains.intellij'
1919
intellij {
2020
version project.property("ideaVersion")
21-
plugins = ['copyright', 'java', 'org.intellij.scala:2021.1.16']
21+
plugins = ['copyright', 'java', 'org.intellij.scala:2021.3.14']
2222
downloadSources Boolean.valueOf(sources)
2323
sameSinceUntilBuild Boolean.valueOf(isEAP)
2424
}

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
ideaVersion = 2021.2
1+
ideaVersion = 2021.3
22
sources = true
33
isEAP = false
44

thrift/src/main/java/com/intellij/plugins/thrift/editor/GoToThriftDefinition.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -85,12 +85,17 @@ protected int getIconFlags() {
8585

8686
@NotNull
8787
private List<ThriftDeclaration> getThriftDeclarations(PsiElement psiElement, Project project) {
88-
if (psiElement instanceof PsiClass) {
89-
PsiClass psiClassElement = (PsiClass) psiElement;
90-
String name = psiClassElement.getName();
91-
if (name != null) { // todo - handle multiple matches
92-
return ThriftDeclarationIndex.findDeclaration(name, project, GlobalSearchScope.allScope(project));
88+
// FIXME: The PsiClass might not valid in Non-Java editors such as GoLand
89+
try {
90+
if (psiElement instanceof PsiClass) {
91+
PsiClass psiClassElement = (PsiClass) psiElement;
92+
String name = psiClassElement.getName();
93+
if (name != null) { // todo - handle multiple matches
94+
return ThriftDeclarationIndex.findDeclaration(name, project, GlobalSearchScope.allScope(project));
95+
}
9396
}
97+
} catch (NoClassDefFoundError e) {
98+
logger.warn("NoClassDefFoundError at GoToThriftDefinition.java:90");
9499
}
95100
return Lists.newArrayList();
96101
}
Lines changed: 13 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package com.intellij.plugins.thrift.editor;
22

3-
import com.intellij.codeHighlighting.Pass;
43
import com.intellij.codeInsight.daemon.DaemonBundle;
5-
import com.intellij.codeInsight.daemon.GutterIconNavigationHandler;
64
import com.intellij.codeInsight.daemon.LineMarkerInfo;
75
import com.intellij.codeInsight.daemon.LineMarkerProvider;
86
import com.intellij.codeInsight.daemon.impl.PsiElementListNavigator;
@@ -13,11 +11,9 @@
1311
import com.intellij.plugins.thrift.util.ThriftPsiUtil;
1412
import com.intellij.psi.NavigatablePsiElement;
1513
import com.intellij.psi.PsiElement;
16-
import com.intellij.util.Function;
1714
import org.jetbrains.annotations.NotNull;
1815
import org.jetbrains.annotations.Nullable;
1916

20-
import java.awt.event.MouseEvent;
2117
import java.util.List;
2218

2319
/**
@@ -26,43 +22,33 @@
2622
public class ThriftLineMarkerProvider implements LineMarkerProvider {
2723
@Nullable
2824
@Override
29-
public LineMarkerInfo getLineMarkerInfo(@NotNull PsiElement element) {
25+
public LineMarkerInfo<PsiElement> getLineMarkerInfo(@NotNull PsiElement element) {
3026
if (element instanceof ThriftDefinitionName) {
3127
return findImplementationsAndCreateMarker((ThriftDefinitionName)element);
3228
}
3329
return null;
3430
}
3531

3632
@Nullable
37-
private LineMarkerInfo findImplementationsAndCreateMarker(final ThriftDefinitionName definitionName) {
33+
private LineMarkerInfo<PsiElement> findImplementationsAndCreateMarker(final ThriftDefinitionName definitionName) {
3834
final List<NavigatablePsiElement> implementations = ThriftPsiUtil.findImplementations(definitionName);
3935
if (implementations.isEmpty()) {
4036
return null;
4137
}
42-
return new LineMarkerInfo<PsiElement>(
38+
return new LineMarkerInfo<>(
4339
definitionName,
4440
definitionName.getTextRange(),
4541
AllIcons.Gutter.ImplementedMethod,
46-
Pass.UPDATE_ALL,
47-
new Function<PsiElement, String>() {
48-
@Override
49-
public String fun(PsiElement element) {
50-
return DaemonBundle.message("interface.is.implemented.too.many");
51-
}
52-
},
53-
new GutterIconNavigationHandler<PsiElement>() {
54-
@Override
55-
public void navigate(MouseEvent e, PsiElement elt) {
56-
PsiElementListNavigator.openTargets(
57-
e,
58-
implementations.toArray(new NavigatablePsiElement[implementations.size()]),
59-
DaemonBundle.message("navigation.title.implementation.method", definitionName.getText(), implementations.size()),
60-
"Implementations of " + definitionName.getText(),
61-
new DefaultPsiElementCellRenderer()
62-
);
63-
}
64-
},
65-
GutterIconRenderer.Alignment.RIGHT
42+
element -> DaemonBundle.message("interface.is.implemented.too.many"),
43+
(e, elt) -> PsiElementListNavigator.openTargets(
44+
e,
45+
implementations.toArray(new NavigatablePsiElement[0]),
46+
DaemonBundle.message("navigation.title.implementation.method", definitionName.getText(), implementations.size()),
47+
"Implementations of " + definitionName.getText(),
48+
new DefaultPsiElementCellRenderer()
49+
),
50+
GutterIconRenderer.Alignment.RIGHT,
51+
() -> DaemonBundle.message("interface.is.implemented.too.many")
6652
);
6753
}
6854
}

0 commit comments

Comments
 (0)