From 3e7725fee715afb3bf03cee4b256e91053e71a10 Mon Sep 17 00:00:00 2001 From: Tagir Valeev Date: Wed, 22 Jul 2020 12:51:48 +0700 Subject: [PATCH] NonNls annotations; using PsiKeyword constants GitOrigin-RevId: 52f8ed1371f46bbd175d78fb78acde5c331078a0 --- .../daemon/impl/analysis/HighlightUtil.java | 10 +- .../AddTypeArgumentsConditionalFix.java | 2 +- .../quickfix/QualifySuperArgumentFix.java | 2 +- .../impl/quickfix/QualifyThisArgumentFix.java | 2 +- .../ReplaceGetClassWithClassLiteralFix.java | 2 +- .../WrapWithAdapterMethodCallFix.java | 5 +- .../intention/AddAnnotationPsiFix.java | 2 +- .../intention/impl/SplitConditionUtil.java | 6 +- ...onymousHasLambdaAlternativeInspection.java | 6 +- .../RedundantLambdaCodeBlockInspection.java | 3 +- .../StringTokenizerDelimiterInspection.java | 3 + .../bytecodeAnalysis/Member.java | 9 +- .../src/com/intellij/psi/PsiKeyword.java | 130 +++++++++--------- .../RemoteRepositoryDescription.java | 3 +- .../com/intellij/util/gist/GistManager.java | 5 +- 15 files changed, 101 insertions(+), 89 deletions(-) diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java index dcfee68613d3..8e48abbeea37 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java @@ -262,7 +262,7 @@ public final class HighlightUtil { } final List typeList = ContainerUtil.map(conjList, PsiTypeElement::getType); - final Ref differentArgumentsMessage = new Ref<>(); + final Ref<@Nls String> differentArgumentsMessage = new Ref<>(); final PsiClass sameGenericParameterization = InferenceSession.findParameterizationOfTheSameGenericClass(typeList, pair -> { if (!TypesDistinctProver.provablyDistinct(pair.first, pair.second)) { @@ -594,12 +594,12 @@ public final class HighlightUtil { } @NotNull - public static String getUnhandledExceptionsDescriptor(@NotNull final Collection unhandled) { + public static String getUnhandledExceptionsDescriptor(@NotNull Collection unhandled) { return getUnhandledExceptionsDescriptor(unhandled, null); } @NotNull - private static String getUnhandledExceptionsDescriptor(@NotNull final Collection unhandled, @Nullable final String source) { + private static String getUnhandledExceptionsDescriptor(@NotNull Collection unhandled, @Nullable @Nls String source) { final String exceptions = formatTypes(unhandled); return source == null ? JavaErrorBundle.message("unhandled.exceptions", exceptions, unhandled.size()) @@ -2473,10 +2473,10 @@ public final class HighlightUtil { if (thisExpression.getQualifier() != null) { resolvedName = referencedClass == null ? null - : PsiFormatUtil.formatClass(referencedClass, PsiFormatUtilBase.SHOW_NAME) + ".this"; + : PsiFormatUtil.formatClass(referencedClass, PsiFormatUtilBase.SHOW_NAME) + "." + PsiKeyword.THIS; } else { - resolvedName = "this"; + resolvedName = PsiKeyword.THIS; } } else { diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/AddTypeArgumentsConditionalFix.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/AddTypeArgumentsConditionalFix.java index 3d7b451e079c..e22dfaa76b6e 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/AddTypeArgumentsConditionalFix.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/AddTypeArgumentsConditionalFix.java @@ -83,7 +83,7 @@ public class AddTypeArgumentsConditionalFix implements IntentionAction { withTypeArgsText = aClass.getQualifiedName(); } else { - withTypeArgsText = "this"; + withTypeArgsText = PsiKeyword.THIS; } } withTypeArgsText += "." + typeArguments + myExpression.getMethodExpression().getReferenceName(); diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/QualifySuperArgumentFix.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/QualifySuperArgumentFix.java index b7ff8c8954f5..712f94cb8509 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/QualifySuperArgumentFix.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/QualifySuperArgumentFix.java @@ -30,7 +30,7 @@ public class QualifySuperArgumentFix extends QualifyThisOrSuperArgumentFix { @Override protected String getQualifierText() { - return "super"; + return PsiKeyword.SUPER; } @Override diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/QualifyThisArgumentFix.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/QualifyThisArgumentFix.java index 22a90b050ccb..f8c9125b6510 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/QualifyThisArgumentFix.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/QualifyThisArgumentFix.java @@ -36,7 +36,7 @@ public class QualifyThisArgumentFix extends QualifyThisOrSuperArgumentFix{ @Override protected String getQualifierText() { - return "this"; + return PsiKeyword.THIS; } @Override diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ReplaceGetClassWithClassLiteralFix.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ReplaceGetClassWithClassLiteralFix.java index cc7fae9adf0c..ab1f2462a56c 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ReplaceGetClassWithClassLiteralFix.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ReplaceGetClassWithClassLiteralFix.java @@ -46,7 +46,7 @@ public class ReplaceGetClassWithClassLiteralFix extends LocalQuickFixAndIntentio if (aClass == null) return false; String className = aClass.getName(); if (className == null) return false; - myText = "Replace with " + className + ".class"; + myText = "Replace with " + className + "." + PsiKeyword.CLASS; return super.isAvailable(project, file, startElement, endElement); } diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/WrapWithAdapterMethodCallFix.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/WrapWithAdapterMethodCallFix.java index 0f43f0c1c202..560de4daa439 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/WrapWithAdapterMethodCallFix.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/WrapWithAdapterMethodCallFix.java @@ -37,6 +37,7 @@ import com.intellij.util.IncorrectOperationException; import com.intellij.util.ObjectUtils; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.Nls; +import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -57,7 +58,7 @@ public final class WrapWithAdapterMethodCallFix extends LocalQuickFixAndIntentio * It's allowed to check imprecisely (return true even if output type is not acceptable) as more * expensive type check will be performed automatically. */ - Wrapper(String template, Predicate inTypeFilter, Predicate outTypeFilter) { + Wrapper(@NonNls String template, Predicate inTypeFilter, Predicate outTypeFilter) { myInTypeFilter = inTypeFilter; myOutTypeFilter = outTypeFilter; myTemplate = template; @@ -114,7 +115,7 @@ public final class WrapWithAdapterMethodCallFix extends LocalQuickFixAndIntentio } @NotNull - private PsiExpression createReplacement(PsiElement context, String replacement) { + private PsiExpression createReplacement(PsiElement context, @NonNls String replacement) { return JavaPsiFacade.getElementFactory(context.getProject()).createExpressionFromText( myTemplate.replace("{0}", replacement), context); } diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/intention/AddAnnotationPsiFix.java b/java/java-analysis-impl/src/com/intellij/codeInsight/intention/AddAnnotationPsiFix.java index 01a50d243c1e..d4978c61494c 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/intention/AddAnnotationPsiFix.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/intention/AddAnnotationPsiFix.java @@ -283,7 +283,7 @@ public class AddAnnotationPsiFix extends LocalQuickFixOnPsiElement { int index = ArrayUtil.indexOf(parameters, parameter); PsiParameterList newList; if (PsiUtil.isLanguageLevel11OrHigher(list)) { - String newListText = StreamEx.of(parameters).map(p -> "var " + p.getName()).joining(",", "(", ")"); + String newListText = StreamEx.of(parameters).map(p -> PsiKeyword.VAR + " " + p.getName()).joining(",", "(", ")"); newList = ((PsiLambdaExpression)JavaPsiFacade.getElementFactory(list.getProject()) .createExpressionFromText(newListText+" -> {}", null)).getParameterList(); newList = (PsiParameterList)new CommentTracker().replaceAndRestoreComments(list, newList); diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/intention/impl/SplitConditionUtil.java b/java/java-analysis-impl/src/com/intellij/codeInsight/intention/impl/SplitConditionUtil.java index ff60e8a78fa5..5c3cd91f6b64 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/intention/impl/SplitConditionUtil.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/intention/impl/SplitConditionUtil.java @@ -170,7 +170,7 @@ public final class SplitConditionUtil { } } else { - thenString = "{" + createIfString(leave, thenBranch, String.join("\nelse ", elseChain), tracker) + "\n}"; + thenString = "{" + createIfString(leave, thenBranch, String.join("\n" + PsiKeyword.ELSE + " ", elseChain), tracker) + "\n}"; } String ifString = createIfString(extract, thenString, elseBranch, tracker); return (PsiIfStatement)factory.createStatementFromText(ifString, thenBranch); @@ -222,8 +222,8 @@ public final class SplitConditionUtil { private static String createIfString(@NotNull String condition, @NotNull String thenBranch, @Nullable String elseBranch) { - final String elsePart = elseBranch != null ? "\n else " + elseBranch : ""; - return "if (" + condition + ")\n" + thenBranch + elsePart; + final String elsePart = elseBranch != null ? "\n " + PsiKeyword.ELSE + " " + elseBranch : ""; + return PsiKeyword.IF + " (" + condition + ")\n" + thenBranch + elsePart; } @NotNull diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/AnonymousHasLambdaAlternativeInspection.java b/java/java-analysis-impl/src/com/intellij/codeInspection/AnonymousHasLambdaAlternativeInspection.java index 5d813b29315c..b6af7480be98 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/AnonymousHasLambdaAlternativeInspection.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/AnonymousHasLambdaAlternativeInspection.java @@ -10,6 +10,7 @@ import com.intellij.psi.*; import com.intellij.psi.util.PsiTreeUtil; import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.Nls; +import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import java.util.Collections; @@ -24,7 +25,10 @@ public class AnonymousHasLambdaAlternativeInspection extends AbstractBaseJavaLoc final String myLambdaAlternative; final String myReplacementMessage; - AnonymousLambdaAlternative(String className, String methodName, String lambdaAlternative, String replacementMessage) { + AnonymousLambdaAlternative(@NonNls String className, + @NonNls String methodName, + @NonNls String lambdaAlternative, + @NonNls String replacementMessage) { myClassName = className; myMethodName = methodName; myLambdaAlternative = lambdaAlternative; diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/RedundantLambdaCodeBlockInspection.java b/java/java-analysis-impl/src/com/intellij/codeInspection/RedundantLambdaCodeBlockInspection.java index 89adb021c560..620c92081a8b 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/RedundantLambdaCodeBlockInspection.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/RedundantLambdaCodeBlockInspection.java @@ -9,13 +9,14 @@ import com.intellij.psi.*; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.util.PsiUtil; import org.jetbrains.annotations.Nls; +import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import java.util.Collection; public class RedundantLambdaCodeBlockInspection extends AbstractBaseJavaLocalInspectionTool { public static final Logger LOG = Logger.getInstance(RedundantLambdaCodeBlockInspection.class); - private static final String SHORT_NAME = "CodeBlock2Expr"; + private static final @NonNls String SHORT_NAME = "CodeBlock2Expr"; @Nls @NotNull diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/StringTokenizerDelimiterInspection.java b/java/java-analysis-impl/src/com/intellij/codeInspection/StringTokenizerDelimiterInspection.java index 39288ef566f0..5afd6852f305 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/StringTokenizerDelimiterInspection.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/StringTokenizerDelimiterInspection.java @@ -6,6 +6,7 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.*; import gnu.trove.THashSet; +import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import java.util.LinkedHashSet; @@ -16,7 +17,9 @@ import java.util.Set; */ public class StringTokenizerDelimiterInspection extends AbstractBaseJavaLocalInspectionTool { + @NonNls private final static String NEXT_TOKEN = "nextToken"; + @NonNls private final static String STRING_TOKENIZER = "java.util.StringTokenizer"; @NotNull diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/bytecodeAnalysis/Member.java b/java/java-analysis-impl/src/com/intellij/codeInspection/bytecodeAnalysis/Member.java index 620ce5909184..ac96e25f0515 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/bytecodeAnalysis/Member.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/bytecodeAnalysis/Member.java @@ -1,13 +1,14 @@ // 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.codeInspection.bytecodeAnalysis; +import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.org.objectweb.asm.tree.MethodInsnNode; public final class Member implements MemberDescriptor { - final String internalClassName; - final String methodName; - final String methodDesc; + @NonNls final String internalClassName; + @NonNls final String methodName; + @NonNls final String methodDesc; /** * Primary constructor @@ -16,7 +17,7 @@ public final class Member implements MemberDescriptor { * @param methodName method name * @param methodDesc method descriptor in asm format */ - public Member(@NotNull String internalClassName, @NotNull String methodName, @NotNull String methodDesc) { + public Member(@NotNull @NonNls String internalClassName, @NotNull @NonNls String methodName, @NotNull @NonNls String methodDesc) { this.internalClassName = internalClassName; this.methodName = methodName; this.methodDesc = methodDesc; diff --git a/java/java-psi-api/src/com/intellij/psi/PsiKeyword.java b/java/java-psi-api/src/com/intellij/psi/PsiKeyword.java index cfe3e1646218..8bfc714f2dd1 100644 --- a/java/java-psi-api/src/com/intellij/psi/PsiKeyword.java +++ b/java/java-psi-api/src/com/intellij/psi/PsiKeyword.java @@ -7,78 +7,78 @@ import com.intellij.openapi.util.NlsSafe; * Represents a Java keyword. Constants defined in this interface represent all keywords and literals of the Java language. */ public interface PsiKeyword extends PsiJavaToken { - String ABSTRACT = "abstract"; - String ASSERT = "assert"; - String BOOLEAN = "boolean"; - String BREAK = "break"; - String BYTE = "byte"; - String CASE = "case"; - String CATCH = "catch"; - String CHAR = "char"; - String CLASS = "class"; - String CONST = "const"; - String CONTINUE = "continue"; - String DEFAULT = "default"; - String DO = "do"; - String DOUBLE = "double"; - String ELSE = "else"; - String ENUM = "enum"; - String EXTENDS = "extends"; - String FINAL = "final"; - String FINALLY = "finally"; - String FLOAT = "float"; - String FOR = "for"; - String GOTO = "goto"; - String IF = "if"; - String IMPLEMENTS = "implements"; - String IMPORT = "import"; - String INSTANCEOF = "instanceof"; - String INT = "int"; - String INTERFACE = "interface"; - String LONG = "long"; - String NATIVE = "native"; - String NEW = "new"; + @NlsSafe String ABSTRACT = "abstract"; + @NlsSafe String ASSERT = "assert"; + @NlsSafe String BOOLEAN = "boolean"; + @NlsSafe String BREAK = "break"; + @NlsSafe String BYTE = "byte"; + @NlsSafe String CASE = "case"; + @NlsSafe String CATCH = "catch"; + @NlsSafe String CHAR = "char"; + @NlsSafe String CLASS = "class"; + @NlsSafe String CONST = "const"; + @NlsSafe String CONTINUE = "continue"; + @NlsSafe String DEFAULT = "default"; + @NlsSafe String DO = "do"; + @NlsSafe String DOUBLE = "double"; + @NlsSafe String ELSE = "else"; + @NlsSafe String ENUM = "enum"; + @NlsSafe String EXTENDS = "extends"; + @NlsSafe String FINAL = "final"; + @NlsSafe String FINALLY = "finally"; + @NlsSafe String FLOAT = "float"; + @NlsSafe String FOR = "for"; + @NlsSafe String GOTO = "goto"; + @NlsSafe String IF = "if"; + @NlsSafe String IMPLEMENTS = "implements"; + @NlsSafe String IMPORT = "import"; + @NlsSafe String INSTANCEOF = "instanceof"; + @NlsSafe String INT = "int"; + @NlsSafe String INTERFACE = "interface"; + @NlsSafe String LONG = "long"; + @NlsSafe String NATIVE = "native"; + @NlsSafe String NEW = "new"; @NlsSafe String PACKAGE = "package"; @NlsSafe String PRIVATE = "private"; @NlsSafe String PROTECTED = "protected"; @NlsSafe String PUBLIC = "public"; - String RETURN = "return"; - String SHORT = "short"; - String STATIC = "static"; - String STRICTFP = "strictfp"; - String SUPER = "super"; - String SWITCH = "switch"; - String SYNCHRONIZED = "synchronized"; - String THIS = "this"; - String THROW = "throw"; - String THROWS = "throws"; - String TRANSIENT = "transient"; - String TRY = "try"; - String VOID = "void"; - String VOLATILE = "volatile"; - String WHILE = "while"; + @NlsSafe String RETURN = "return"; + @NlsSafe String SHORT = "short"; + @NlsSafe String STATIC = "static"; + @NlsSafe String STRICTFP = "strictfp"; + @NlsSafe String SUPER = "super"; + @NlsSafe String SWITCH = "switch"; + @NlsSafe String SYNCHRONIZED = "synchronized"; + @NlsSafe String THIS = "this"; + @NlsSafe String THROW = "throw"; + @NlsSafe String THROWS = "throws"; + @NlsSafe String TRANSIENT = "transient"; + @NlsSafe String TRY = "try"; + @NlsSafe String VOID = "void"; + @NlsSafe String VOLATILE = "volatile"; + @NlsSafe String WHILE = "while"; - String TRUE = "true"; - String FALSE = "false"; - String NULL = "null"; + @NlsSafe String TRUE = "true"; + @NlsSafe String FALSE = "false"; + @NlsSafe String NULL = "null"; - String OPEN = "open"; - String MODULE = "module"; - String REQUIRES = "requires"; - String EXPORTS = "exports"; - String OPENS = "opens"; - String USES = "uses"; - String PROVIDES = "provides"; - String TRANSITIVE = "transitive"; - String TO = "to"; - String WITH = "with"; + @NlsSafe String OPEN = "open"; + @NlsSafe String MODULE = "module"; + @NlsSafe String REQUIRES = "requires"; + @NlsSafe String EXPORTS = "exports"; + @NlsSafe String OPENS = "opens"; + @NlsSafe String USES = "uses"; + @NlsSafe String PROVIDES = "provides"; + @NlsSafe String TRANSITIVE = "transitive"; + @NlsSafe String TO = "to"; + @NlsSafe String WITH = "with"; - String VAR = "var"; - String YIELD = "yield"; + @NlsSafe String VAR = "var"; + @NlsSafe String YIELD = "yield"; - String RECORD = "record"; + @NlsSafe String RECORD = "record"; - String SEALED = "sealed"; - String PERMITS = "permits"; - String NON_SEALED = "non-sealed"; + @NlsSafe String SEALED = "sealed"; + @NlsSafe String PERMITS = "permits"; + @NlsSafe String NON_SEALED = "non-sealed"; } \ No newline at end of file diff --git a/java/openapi/src/com/intellij/jarRepository/RemoteRepositoryDescription.java b/java/openapi/src/com/intellij/jarRepository/RemoteRepositoryDescription.java index fd07feadd1f6..b9f6fa85a21e 100644 --- a/java/openapi/src/com/intellij/jarRepository/RemoteRepositoryDescription.java +++ b/java/openapi/src/com/intellij/jarRepository/RemoteRepositoryDescription.java @@ -2,6 +2,7 @@ package com.intellij.jarRepository; import com.intellij.util.containers.ContainerUtil; +import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import java.util.List; @@ -30,7 +31,7 @@ public class RemoteRepositoryDescription { private final String myUrl; private final boolean myAllowSnapshots; - public RemoteRepositoryDescription(@NotNull String id, @NotNull String name, @NotNull String url) { + public RemoteRepositoryDescription(@NonNls @NotNull String id, @NotNull String name, @NotNull String url) { this(id, name, url, true); } diff --git a/platform/indexing-api/src/com/intellij/util/gist/GistManager.java b/platform/indexing-api/src/com/intellij/util/gist/GistManager.java index 97347b67974a..269cdd09af24 100644 --- a/platform/indexing-api/src/com/intellij/util/gist/GistManager.java +++ b/platform/indexing-api/src/com/intellij/util/gist/GistManager.java @@ -6,6 +6,7 @@ import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiFile; import com.intellij.util.NullableFunction; import com.intellij.util.io.DataExternalizer; +import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; /** @@ -28,7 +29,7 @@ public abstract class GistManager { * @return the gist object, where {@link VirtualFileGist#getFileData} can later be used to retrieve the cached data */ @NotNull - public abstract VirtualFileGist newVirtualFileGist(@NotNull String id, + public abstract VirtualFileGist newVirtualFileGist(@NotNull @NonNls String id, int version, @NotNull DataExternalizer externalizer, @NotNull VirtualFileGist.GistCalculator calcData); @@ -43,7 +44,7 @@ public abstract class GistManager { * @return the gist object, where {@link PsiFileGist#getFileData} can later be used to retrieve the cached data */ @NotNull - public abstract PsiFileGist newPsiFileGist(@NotNull String id, + public abstract PsiFileGist newPsiFileGist(@NotNull @NonNls String id, int version, @NotNull DataExternalizer externalizer, @NotNull NullableFunction calcData);