Fix deprecation warnings
Drops support for IntelliJ 2019
Change-Id: Ib8a9550c0bd286db60461e14136e6054ba13ce6a
Reviewed-on: https://fuchsia-review.googlesource.com/c/intellij-language-fidl/+/775282
Reviewed-by: Alex Zaslavsky <[email protected]>
diff --git a/WORKSPACE b/WORKSPACE
index 8d2f20d..830e8bb 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -2,19 +2,19 @@
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
-# The plugin api for IntelliJ 2019.3.3.
+# The plugin api for IntelliJ 2020.1.4.
http_archive(
- name = "intellij_ce_2019_3_3",
+ name = "intellij_ce_2020_1_4",
build_file = "//:intellij_platform_sdk/BUILD.idea",
- sha256 = "c40536791c754c30dbf378bd6b59e0524b0588f26ddb4d85a9f260cf13454d14",
- url = "https://download.jetbrains.com/idea/ideaIC-2019.3.3-no-jbr.tar.gz",
+ sha256 = "bc36f0b80e9c9f3e6c132d146ecd97937614990dcecfaa723592442d415f4b14",
+ url = "https://download.jetbrains.com/idea/ideaIC-2020.1.4-no-jbr.tar.gz",
)
http_archive(
name = "grammar_kit",
build_file = "//:grammar_kit/BUILD.grammar_kit",
- sha256 = "a33f9732b8bed61e509a8282e9a9ae72130ab5e7e18a449eb60cf00bb142018d",
- url = "https://github.com/JetBrains/Grammar-Kit/releases/download/2019.3/grammar-kit-2019.3.zip",
+ sha256 = "9cfc31d090de5c68ff6e3fd265615168ec1d28a95984c6d96cb0ebabaab08562",
+ url = "https://github.com/JetBrains/Grammar-Kit/releases/download/2020.1/grammar-kit-2020.1.zip",
)
http_archive(
diff --git a/grammar_kit/BUILD.grammar_kit b/grammar_kit/BUILD.grammar_kit
index e71fd46..0c79efb 100644
--- a/grammar_kit/BUILD.grammar_kit
+++ b/grammar_kit/BUILD.grammar_kit
@@ -2,5 +2,5 @@
java_import(
name = "grammar_kit",
- jars = ["grammar-kit/lib/grammar-kit-2019.3.jar"],
+ jars = ["grammar-kit/lib/grammar-kit-2020.1.jar"],
)
diff --git a/resources/META-INF/plugin.xml b/resources/META-INF/plugin.xml
index fe3f05a..68f4749 100644
--- a/resources/META-INF/plugin.xml
+++ b/resources/META-INF/plugin.xml
@@ -22,6 +22,7 @@
<ul>
<li>Remove support for deprecated struct defaults.</li>
<li>Support for simplified escape sequences</li>
+ <li>Drop support for IntelliJ 2019.</li>
</ul>
</li>
<li><b>0.18</b>
@@ -133,14 +134,13 @@
</change-notes>
<!-- please see http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/build_number_ranges.html for description -->
- <idea-version since-build="183.0"/>
+ <idea-version since-build="201.0"/>
<!-- please see http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/plugin_compatibility.html
on how to target different products -->
<depends>com.intellij.modules.lang</depends>
<extensions defaultExtensionNs="com.intellij">
- <fileTypeFactory implementation="fuchsia.developer.plugin.fidl.DeprecatedFidlFileTypeFactory"/>
<fileType name="FIDL file" implementationClass="fuchsia.developer.plugin.fidl.FileType"
fieldName="INSTANCE" language="FIDL" extensions="fidl"/>
<lang.parserDefinition language="FIDL"
diff --git a/src/fuchsia/developer/plugin/fidl/BUILD b/src/fuchsia/developer/plugin/fidl/BUILD
index 7ad95f0..8009954 100644
--- a/src/fuchsia/developer/plugin/fidl/BUILD
+++ b/src/fuchsia/developer/plugin/fidl/BUILD
@@ -19,7 +19,7 @@
main_class = "org.intellij.grammar.Main",
runtime_deps = [
"@grammar_kit",
- "@intellij_ce_2019_3_3//:sdk",
+ "@intellij_ce_2020_1_4//:sdk",
],
)
@@ -168,9 +168,9 @@
deps = [
"@google_bazel_common//third_party/java/guava",
"@grammar_kit",
- "@intellij_ce_2019_3_3//:annotations",
- "@intellij_ce_2019_3_3//:platform-api",
- "@intellij_ce_2019_3_3//:util",
+ "@intellij_ce_2020_1_4//:annotations",
+ "@intellij_ce_2020_1_4//:platform-api",
+ "@intellij_ce_2020_1_4//:util",
],
)
diff --git a/src/fuchsia/developer/plugin/fidl/ContextAwareHighlighter.java b/src/fuchsia/developer/plugin/fidl/ContextAwareHighlighter.java
index fe11105..30149c6 100644
--- a/src/fuchsia/developer/plugin/fidl/ContextAwareHighlighter.java
+++ b/src/fuchsia/developer/plugin/fidl/ContextAwareHighlighter.java
@@ -1,9 +1,9 @@
package fuchsia.developer.plugin.fidl;
import com.intellij.lang.ASTNode;
-import com.intellij.lang.annotation.Annotation;
import com.intellij.lang.annotation.AnnotationHolder;
import com.intellij.lang.annotation.Annotator;
+import com.intellij.lang.annotation.HighlightSeverity;
import com.intellij.openapi.editor.colors.TextAttributesKey;
import com.intellij.openapi.util.TextRange;
import com.intellij.psi.PsiElement;
@@ -248,8 +248,10 @@
// SyntaxHighlighter might highlight it, then make sure it is colored as an identifier
if (parentType == Types.IDENTIFIER_TOKEN
&& SYNTAX_HIGHLIGHTER.getTokenHighlights(thisType).length != 0) {
- Annotation annotation = holder.createInfoAnnotation(element, null);
- annotation.setTextAttributes(IDENTIFIER_ATTRIBUTE);
+ holder
+ .newSilentAnnotation(HighlightSeverity.INFORMATION)
+ .textAttributes(IDENTIFIER_ATTRIBUTE)
+ .create();
}
// Context-sensitive keywords, part II: The Syntax Highlighter does not color types. If we
@@ -257,8 +259,10 @@
if (parentType == Types.COMPOUND_IDENTIFIER) {
if (grandParentType != null && grandParentType == Types.TYPE_CONSTRUCTOR) {
if (FidlLexer.ALL_KEYWORDS.contains(element.getText())) {
- Annotation annotation = holder.createInfoAnnotation(element, null);
- annotation.setTextAttributes(KEYWORD_ATTRIBUTE);
+ holder
+ .newAnnotation(HighlightSeverity.INFORMATION, null)
+ .textAttributes(KEYWORD_ATTRIBUTE)
+ .create();
}
}
}
@@ -278,15 +282,21 @@
// Only unsigned integers allowed for bits.
if (identifierToken != null
&& identifierToken.findChildByType(UNSIGNED_INTEGRAL_TYPES) == null) {
- holder.createErrorAnnotation(
- element, "Expected integral type, found " + identifierToken.getText());
+ holder
+ .newAnnotation(
+ HighlightSeverity.ERROR,
+ "Expected integral type, found " + identifierToken.getText())
+ .create();
}
} else {
// Only integers allowed for enums.
if (identifierToken != null
&& identifierToken.findChildByType(INTEGRAL_TYPES) == null) {
- holder.createErrorAnnotation(
- element, "Expected integral type, found " + identifierToken.getText());
+ holder
+ .newAnnotation(
+ HighlightSeverity.ERROR,
+ "Expected integral type, found " + identifierToken.getText())
+ .create();
}
}
}
@@ -313,14 +323,20 @@
ASTNode numericLiteral = literal.findChildByType(Types.NUMERIC_LITERAL);
if (numericLiteral == null) {
// Must be a numeric literal in either case:
- holder.createErrorAnnotation(
- element, "Expected integer value for member, found " + literal.getText());
+ holder
+ .newAnnotation(
+ HighlightSeverity.ERROR,
+ "Expected integer value for member, found " + literal.getText())
+ .create();
} else {
ASTNode integralLiteral = numericLiteral.findChildByType(Types.INTEGRAL_LITERAL);
if (integralLiteral == null) {
// Must be an integral literal in either case:
- holder.createErrorAnnotation(
- element, "Expected integer value for member, found " + literal.getText());
+ holder
+ .newAnnotation(
+ HighlightSeverity.ERROR,
+ "Expected integer value for member, found " + literal.getText())
+ .create();
} else {
// INLINE_LAYOUT -> LAYOUT_BODY -> VALUE_LAYOUT -> VALUE_LAYOUT_MEMBER
ASTNode subtype = greatGrandParent.getNode().findChildByType(Types.LAYOUT_SUBTYPE);
@@ -329,13 +345,13 @@
correctTypeOrError(
subtype.findChildByType(Types.TYPE_CONSTRUCTOR), integralLiteral);
if (value != null) {
- holder.createErrorAnnotation(element, value);
+ holder.newAnnotation(HighlightSeverity.ERROR, value).create();
}
}
if (maybeGreatGrandParentLayoutKind == Types.BITS) {
String value = unsignedLongPowerOfTwoOrError(integralLiteral);
if (value != null) {
- holder.createErrorAnnotation(element, value);
+ holder.newAnnotation(HighlightSeverity.ERROR, value).create();
}
}
}
@@ -350,8 +366,11 @@
if (parent.getNode().getElementType() == Types.ORDINAL_LAYOUT_MEMBER) {
ASTNode maybeAttributeList = parent.getNode().findChildByType(Types.ATTRIBUTE_BLOCK);
if (maybeAttributeList != null && !maybeAttributeList.getText().equals("")) {
- holder.createErrorAnnotation(
- maybeAttributeList, "Attributes are not allowed on reserved table members");
+ holder
+ .newAnnotation(
+ HighlightSeverity.ERROR, "Attributes are not allowed on reserved table members")
+ .range(maybeAttributeList)
+ .create();
}
}
}
@@ -375,8 +394,12 @@
if (flexible == null) {
flexible = found;
} else {
- holder.createErrorAnnotation(
- found, "The `flexible` modifier cannot be used twice in the same declaration");
+ holder
+ .newAnnotation(
+ HighlightSeverity.ERROR,
+ "The `flexible` modifier cannot be used twice in the same declaration")
+ .range(found)
+ .create();
}
}
found = siblingNode.findChildByType(Types.STRICT);
@@ -384,8 +407,12 @@
if (strict == null) {
strict = found;
} else {
- holder.createErrorAnnotation(
- found, "The `strict` modifier cannot be used twice in the same declaration");
+ holder
+ .newAnnotation(
+ HighlightSeverity.ERROR,
+ "The `strict` modifier cannot be used twice in the same declaration")
+ .range(found)
+ .create();
}
}
found = siblingNode.findChildByType(Types.RESOURCE);
@@ -393,8 +420,12 @@
if (resource == null) {
resource = found;
} else {
- holder.createErrorAnnotation(
- found, "The `resource` modifier cannot be used twice in the same declaration");
+ holder
+ .newAnnotation(
+ HighlightSeverity.ERROR,
+ "The `resource` modifier cannot be used twice in the same declaration")
+ .range(found)
+ .create();
}
}
}
@@ -405,21 +436,33 @@
&& maybeThisLayoutKind != Types.ENUM
&& maybeThisLayoutKind != Types.UNION) {
ASTNode theNode = flexible != null ? flexible : strict;
- holder.createErrorAnnotation(
- theNode,
- "The `flexible` and `strict` modifiers can only be used on bits, enum, and union.");
+ holder
+ .newAnnotation(
+ HighlightSeverity.ERROR,
+ "The `flexible` and `strict` modifiers can only be used on bits, enum, and"
+ + " union.")
+ .range(theNode)
+ .create();
}
if (flexible != null && strict != null) {
- holder.createErrorAnnotation(
- flexible, "The flexible and strict modifiers cannot be used together");
+ holder
+ .newAnnotation(
+ HighlightSeverity.ERROR,
+ "The flexible and strict modifiers cannot be used together")
+ .range(flexible)
+ .create();
}
}
if (resource != null) {
if (maybeThisLayoutKind != Types.STRUCT
&& maybeThisLayoutKind != Types.TABLE
&& maybeThisLayoutKind != Types.UNION) {
- holder.createErrorAnnotation(
- resource, "The `resource` modifier can only be used on struct, table, and union.");
+ holder
+ .newAnnotation(
+ HighlightSeverity.ERROR,
+ "The `resource` modifier can only be used on struct, table, and union.")
+ .range(resource)
+ .create();
}
}
}
@@ -444,25 +487,29 @@
literal.getChars(0, literal.length(), chars, 0);
for (int i = 1; i < chars.length; i++) {
if (chars[i] == '\n' || chars[i] == '\r') {
- holder.createErrorAnnotation(element, "CR and LF not allowed in string literal");
+ holder.newAnnotation(HighlightSeverity.ERROR, "CR and LF not allowed in string literal");
}
if (chars[i] == '\\') {
if (i < chars.length - 2) {
int jump = isEscape(chars, i + 1);
int startOffset = element.getTextOffset() + i;
if (jump == -1) {
- holder.createErrorAnnotation(
- new TextRange(startOffset, startOffset + 2),
- "Unknown escape sequence \\" + chars[i + 1]);
+ holder
+ .newAnnotation(
+ HighlightSeverity.ERROR, "Unknown escape sequence \\" + chars[i + 1])
+ .range(new TextRange(startOffset, startOffset + 2))
+ .create();
} else if (jump == -2) {
- holder.createErrorAnnotation(
- new TextRange(startOffset, startOffset + 2),
- "Malformed \\" + chars[i + 1] + " escape sequence");
+ holder
+ .newAnnotation(
+ HighlightSeverity.ERROR, "Malformed \\" + chars[i + 1] + " escape sequence")
+ .range(new TextRange(startOffset, startOffset + 2))
+ .create();
} else {
i += jump;
}
} else {
- holder.createErrorAnnotation(element, "Illegal string termination");
+ holder.newAnnotation(HighlightSeverity.ERROR, "Illegal string termination").create();
}
}
}
diff --git a/src/fuchsia/developer/plugin/fidl/DeprecatedFidlFileTypeFactory.java b/src/fuchsia/developer/plugin/fidl/DeprecatedFidlFileTypeFactory.java
deleted file mode 100644
index 206ff12..0000000
--- a/src/fuchsia/developer/plugin/fidl/DeprecatedFidlFileTypeFactory.java
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright 2020 The Fuchsia Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package fuchsia.developer.plugin.fidl;
-
-import com.intellij.openapi.fileTypes.FileTypeConsumer;
-import com.intellij.openapi.fileTypes.FileTypeFactory;
-import org.jetbrains.annotations.NotNull;
-
-public class DeprecatedFidlFileTypeFactory extends FileTypeFactory {
- public void createFileTypes(@NotNull FileTypeConsumer fileTypeConsumer) {
- fileTypeConsumer.consume(FileType.INSTANCE);
- }
-}
diff --git a/src/fuchsia/developer/plugin/fidl/Icons.java b/src/fuchsia/developer/plugin/fidl/Icons.java
index c31cd56..e737b29 100644
--- a/src/fuchsia/developer/plugin/fidl/Icons.java
+++ b/src/fuchsia/developer/plugin/fidl/Icons.java
@@ -9,5 +9,5 @@
public class Icons {
public static final Icon FILE =
- IconLoader.getIcon("/fuchsia/developer/plugin/fidl/icons/fuchsia-logo.svg");
+ IconLoader.getIcon("/fuchsia/developer/plugin/fidl/icons/fuchsia-logo.svg", Icons.class);
}
diff --git a/src/fuchsia/developer/plugin/fidl/psi/FidlNamedElementImpl.java b/src/fuchsia/developer/plugin/fidl/psi/FidlNamedElementImpl.java
index ccd8a01..993e520 100644
--- a/src/fuchsia/developer/plugin/fidl/psi/FidlNamedElementImpl.java
+++ b/src/fuchsia/developer/plugin/fidl/psi/FidlNamedElementImpl.java
@@ -31,13 +31,27 @@
String path = "/fuchsia/developer/plugin/fidl/icons/";
icons =
ImmutableMap.<Class<? extends FidlNamedElementImpl>, Icon>builder()
- .put(FidlConstDeclarationImpl.class, IconLoader.getIcon(path + "C.png"))
- .put(FidlProtocolDeclarationImpl.class, IconLoader.getIcon(path + "P.png"))
- .put(FidlLayoutDeclarationImpl.class, IconLoader.getIcon(path + "T.png"))
- .put(FidlTypeAliasDeclarationImpl.class, IconLoader.getIcon(path + "U.png"))
- .put(FidlProtocolMethodImpl.class, IconLoader.getIcon(path + "M.png"))
- .put(FidlProtocolEventImpl.class, IconLoader.getIcon(path + "E.png"))
- .put(FidlMemberFieldImpl.class, IconLoader.getIcon(path + "F.png"))
+ .put(
+ FidlConstDeclarationImpl.class,
+ IconLoader.getIcon(path + "C.png", FidlNamedElementImpl.class))
+ .put(
+ FidlProtocolDeclarationImpl.class,
+ IconLoader.getIcon(path + "P.png", FidlNamedElementImpl.class))
+ .put(
+ FidlLayoutDeclarationImpl.class,
+ IconLoader.getIcon(path + "T.png", FidlNamedElementImpl.class))
+ .put(
+ FidlTypeAliasDeclarationImpl.class,
+ IconLoader.getIcon(path + "U.png", FidlNamedElementImpl.class))
+ .put(
+ FidlProtocolMethodImpl.class,
+ IconLoader.getIcon(path + "M.png", FidlNamedElementImpl.class))
+ .put(
+ FidlProtocolEventImpl.class,
+ IconLoader.getIcon(path + "E.png", FidlNamedElementImpl.class))
+ .put(
+ FidlMemberFieldImpl.class,
+ IconLoader.getIcon(path + "F.png", FidlNamedElementImpl.class))
.build();
}