[java] IDEA-355892 JEP 477 JEP 477. Problems with run gutters

- new java features are introduced (for main methods)
- `mainCandidateComparator` is moved to `PsiMethodUtil`
- `PsiMethodUtil.findMainMethod` can compare methods and not only return first
- ApplicationRunLineMarkerProvider works with `getSlowInfo` in dumb mode
- ApplicationRunLineMarkerProvider uses the same logic for classes and methods

GitOrigin-RevId: e2c20e8690ac032b52c7de742cdb39933ef1d1d3
This commit is contained in:
Mikhail Pyltsin
2024-07-04 20:24:54 +00:00
committed by intellij-monorepo-bot
parent ff1a51e79f
commit c437caf780
9 changed files with 192 additions and 71 deletions
@@ -111,6 +111,8 @@ feature.enum.qualified.name.in.switch=Qualified enum as a constant in switch
feature.string.templates=String templates
feature.unnamed.vars=Unnamed patterns and variables
feature.implicit.classes=Implicitly declared classes
feature.instance.main.method=Instance main method
feature.inherited.static.main.method=Inherited static main method
feature.scoped.values=Scoped Values
feature.structured.concurrency=Structured Concurrency
feature.sequenced.collections=Sequenced Collections
@@ -95,7 +95,10 @@ public enum JavaFeature {
return super.isSufficient(useSiteLevel) || LanguageLevel.JDK_21_PREVIEW == useSiteLevel;
}
},
//jep 463,477
IMPLICIT_CLASSES(LanguageLevel.JDK_21_PREVIEW, "feature.implicit.classes"),
INSTANCE_MAIN_METHOD(LanguageLevel.JDK_21_PREVIEW, "feature.instance.main.method"),
SCOPED_VALUES(LanguageLevel.JDK_21_PREVIEW, "feature.scoped.values"),
STRUCTURED_CONCURRENCY(LanguageLevel.JDK_21_PREVIEW, "feature.structured.concurrency"),
CLASSFILE_API(LanguageLevel.JDK_22_PREVIEW, "feature.classfile.api"),
@@ -108,8 +111,10 @@ public enum JavaFeature {
RECORD_PATTERNS_IN_FOR_EACH(LanguageLevel.JDK_X, "feature.record.patterns.in.for.each",
LanguageLevel.JDK_20_PREVIEW),
PRIMITIVE_TYPES_IN_PATTERNS(LanguageLevel.JDK_23_PREVIEW, "feature.primitive.types.in.patterns"),
//jep 463,477
INHERITED_STATIC_MAIN_METHOD(LanguageLevel.JDK_22_PREVIEW, "feature.inherited.static.main.method"),
IMPLICIT_IMPORT_IN_IMPLICIT_CLASSES(LanguageLevel.JDK_23_PREVIEW, "feature.implicit.import.in.implicit.classes"),
PRIMITIVE_TYPES_IN_PATTERNS(LanguageLevel.JDK_23_PREVIEW, "feature.primitive.types.in.patterns"),
;
private final @NotNull LanguageLevel myLevel;