mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[java] IDEA-372997 JavaFeature: create two versions of the Structured Concurrency to reflect reality in JEPs
see discussion in IJ-MR-167068 GitOrigin-RevId: 6d36cb4375f8f6a6d7d7b603de037c2c7a5255a8
This commit is contained in:
committed by
intellij-monorepo-bot
parent
90549f68a6
commit
2e30b4d2c4
@@ -1196,9 +1196,9 @@
|
||||
<liveTemplateContext contextId="JAVA_NORMAL_CLASS_DECLARATION_WITH_INSTANCE_MAIN" baseContextId="JAVA_CODE"
|
||||
implementation="com.intellij.codeInsight.template.JavaCodeContextType$NormalClassDeclarationAfterShortMainMethod"/>
|
||||
<liveTemplateContext contextId="JAVA_STATEMENT_WITH_STRUCTURED_CONCURRENCY_AVAILABLE_24" baseContextId="JAVA_CODE"
|
||||
implementation="com.intellij.codeInsight.template.JavaCodeContextType$Java24StructuredConcurrency" />
|
||||
implementation="com.intellij.codeInsight.template.JavaCodeContextType$JavaStructuredConcurrencyConstructors" />
|
||||
<liveTemplateContext contextId="JAVA_STATEMENT_WITH_STRUCTURED_CONCURRENCY_AVAILABLE_25" baseContextId="JAVA_CODE"
|
||||
implementation="com.intellij.codeInsight.template.JavaCodeContextType$Java25StructuredConcurrency" />
|
||||
implementation="com.intellij.codeInsight.template.JavaCodeContextType$JavaStructuredConcurrencyStaticFactoryMethods" />
|
||||
<liveTemplateContext contextId="JAVA_COMMENT" baseContextId="JAVA_CODE"
|
||||
implementation="com.intellij.codeInsight.template.JavaCommentContextType"/>
|
||||
<liveTemplateContext contextId="JAVA_STRING" baseContextId="JAVA_CODE"
|
||||
|
||||
@@ -12,7 +12,6 @@ import com.intellij.openapi.fileTypes.SyntaxHighlighter;
|
||||
import com.intellij.openapi.project.DumbService;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.pom.java.JavaFeature;
|
||||
import com.intellij.pom.java.LanguageLevel;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
@@ -311,34 +310,32 @@ public abstract class JavaCodeContextType extends TemplateContextType {
|
||||
}
|
||||
}
|
||||
|
||||
public static final class Java24StructuredConcurrency extends JavaCodeContextType {
|
||||
public static final class JavaStructuredConcurrencyConstructors extends JavaCodeContextType {
|
||||
private final JavaCodeContextType statementContext = new Statement();
|
||||
|
||||
Java24StructuredConcurrency() {
|
||||
super(JavaBundle.message("live.template.context.statement.java.structured.concurrency.24"));
|
||||
JavaStructuredConcurrencyConstructors() {
|
||||
super(JavaBundle.message("live.template.context.statement.java.structured.concurrency.constructors"));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isInContext(@NotNull PsiElement element) {
|
||||
return statementContext.isInContext(element) &&
|
||||
PsiUtil.isAvailable(JavaFeature.STRUCTURED_CONCURRENCY, element) &&
|
||||
PsiUtil.getLanguageLevel(element).equals(LanguageLevel.JDK_24_PREVIEW);
|
||||
PsiUtil.isAvailable(JavaFeature.STRUCTURED_CONCURRENCY_TASK_SCOPE_CONSTRUCTORS, element);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static final class Java25StructuredConcurrency extends JavaCodeContextType {
|
||||
public static final class JavaStructuredConcurrencyStaticFactoryMethods extends JavaCodeContextType {
|
||||
private final JavaCodeContextType statementContext = new Statement();
|
||||
|
||||
Java25StructuredConcurrency() {
|
||||
super(JavaBundle.message("live.template.context.statement.java.structured.concurrency.25"));
|
||||
JavaStructuredConcurrencyStaticFactoryMethods() {
|
||||
super(JavaBundle.message("live.template.context.statement.java.structured.concurrency.static.factory.methods"));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isInContext(@NotNull PsiElement element) {
|
||||
return statementContext.isInContext(element) &&
|
||||
PsiUtil.isAvailable(JavaFeature.STRUCTURED_CONCURRENCY, element) &&
|
||||
PsiUtil.getLanguageLevel(element).equals(LanguageLevel.JDK_25_PREVIEW);
|
||||
PsiUtil.isAvailable(JavaFeature.STRUCTURED_CONCURRENCY_TASK_SCOPE_STATIC_FACTORY_METHODS, element);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -67,7 +67,8 @@ feature.implicit.class.name.out.of.scope=The name of an implicitly declared clas
|
||||
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.structured.concurrency.constructors=Structured Concurrency (StructuredTaskScope with constructors)
|
||||
feature.structured.concurrency.static.factory.methods=Structured Concurrency (StructuredTaskScope with static factory methods)
|
||||
feature.sequenced.collections=Sequenced Collections
|
||||
feature.classfile.api=ClassFile API
|
||||
feature.stream.gatherers=Stream Gatherers
|
||||
|
||||
@@ -136,7 +136,13 @@ enum class JavaFeature {
|
||||
},
|
||||
|
||||
SCOPED_VALUES(LanguageLevel.JDK_21_PREVIEW, "feature.scoped.values"),
|
||||
STRUCTURED_CONCURRENCY(LanguageLevel.JDK_21_PREVIEW, "feature.structured.concurrency"),
|
||||
STRUCTURED_CONCURRENCY_TASK_SCOPE_CONSTRUCTORS(LanguageLevel.JDK_21_PREVIEW, "feature.structured.concurrency.constructors") {
|
||||
override fun isSufficient(useSiteLevel: LanguageLevel): Boolean {
|
||||
return super.isSufficient(useSiteLevel) && !useSiteLevel.isAtLeast(LanguageLevel.JDK_25)
|
||||
}
|
||||
},
|
||||
|
||||
STRUCTURED_CONCURRENCY_TASK_SCOPE_STATIC_FACTORY_METHODS(LanguageLevel.JDK_25_PREVIEW, "feature.structured.concurrency.static.factory.methods"),
|
||||
|
||||
/**
|
||||
* JEP 512
|
||||
@@ -359,7 +365,7 @@ enum class JavaFeature {
|
||||
"STRING_TEMPLATES" -> STRING_TEMPLATES
|
||||
"UNNAMED_CLASSES", "IMPLICIT_CLASSES" -> IMPLICIT_CLASSES
|
||||
"SCOPED_VALUES" -> SCOPED_VALUES
|
||||
"STRUCTURED_CONCURRENCY" -> STRUCTURED_CONCURRENCY
|
||||
"STRUCTURED_CONCURRENCY" -> STRUCTURED_CONCURRENCY_TASK_SCOPE_CONSTRUCTORS
|
||||
"CLASSFILE_API" -> CLASSFILE_API
|
||||
"STREAM_GATHERERS" -> STREAM_GATHERERS
|
||||
"FOREIGN" -> FOREIGN_FUNCTIONS
|
||||
|
||||
@@ -1322,8 +1322,8 @@ live.template.context.else='else' position
|
||||
live.template.context.expression=Expression
|
||||
live.template.context.declaration=Declaration
|
||||
live.template.context.statement.java.lang.io=Statement with available java.lang.IO
|
||||
live.template.context.statement.java.structured.concurrency.24=Statement with available Structured Concurrency (Java 24 / JEP 499)
|
||||
live.template.context.statement.java.structured.concurrency.25=Statement with available Structured Concurrency (Java 25 / JEP 505)
|
||||
live.template.context.statement.java.structured.concurrency.constructors=Statement with available StructuredTaskScope with constructors
|
||||
live.template.context.statement.java.structured.concurrency.static.factory.methods=Statement with available StructuredTaskScope with static factory methods
|
||||
live.template.context.normal.class.before.instance.main.declaration=Declaration inside a normal class without instance 'main' method
|
||||
live.template.context.normal.class.after.instance.main.declaration=Declaration inside a normal class with instance 'main' method
|
||||
live.template.context.implicit.class.declaration=Declaration inside a compact source file
|
||||
|
||||
Reference in New Issue
Block a user