mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-04-20 13:31:28 +07:00
[java] merges language level name and JDK version description
This commit is contained in:
@@ -165,8 +165,7 @@ public class AttachSourcesNotificationProvider extends EditorNotifications.Provi
|
||||
StringBuilder info = new StringBuilder().append("bytecode version: ").append(major).append('.').append(minor);
|
||||
JavaSdkVersion sdkVersion = ClsParsingUtil.getJdkVersionByBytecode(major);
|
||||
if (sdkVersion != null) {
|
||||
int feature = sdkVersion.ordinal();
|
||||
info.append(" (Java ").append(feature < 5 ? "1." : "").append(feature).append(')');
|
||||
info.append(" (Java ").append(sdkVersion.getDescription()).append(')');
|
||||
}
|
||||
return info.toString();
|
||||
}
|
||||
|
||||
@@ -42,7 +42,8 @@ public enum JavaSdkVersion {
|
||||
|
||||
@NotNull
|
||||
public String getDescription() {
|
||||
return JavaVersion.compose(ordinal(), 0, 0, 0, false).toString();
|
||||
int feature = ordinal();
|
||||
return feature < 5 ? "1." + feature : String.valueOf(feature);
|
||||
}
|
||||
|
||||
public boolean isAtLeast(@NotNull JavaSdkVersion version) {
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
// 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.pom.java;
|
||||
|
||||
import com.intellij.core.JavaCoreBundle;
|
||||
@@ -22,19 +20,18 @@ import org.jetbrains.annotations.Nullable;
|
||||
* @see JavaSdkVersion
|
||||
*/
|
||||
public enum LanguageLevel {
|
||||
JDK_1_3("Java 1.3", JavaCoreBundle.message("jdk.1.3.language.level.description"), "1.3"),
|
||||
JDK_1_4("Java 1.4", JavaCoreBundle.message("jdk.1.4.language.level.description"), "1.4"),
|
||||
JDK_1_5("Java 5.0", JavaCoreBundle.message("jdk.1.5.language.level.description"), "1.5", "5"),
|
||||
JDK_1_6("Java 6", JavaCoreBundle.message("jdk.1.6.language.level.description"), "1.6", "6"),
|
||||
JDK_1_7("Java 7", JavaCoreBundle.message("jdk.1.7.language.level.description"), "1.7", "7"),
|
||||
JDK_1_8("Java 8", JavaCoreBundle.message("jdk.1.8.language.level.description"), "1.8", "8"),
|
||||
JDK_1_9("Java 9", JavaCoreBundle.message("jdk.1.9.language.level.description"), "9", "1.9"),
|
||||
JDK_X("Java X", JavaCoreBundle.message("jdk.X.language.level.description"), "");
|
||||
JDK_1_3(JavaCoreBundle.message("jdk.1.3.language.level.description"), "1.3"),
|
||||
JDK_1_4(JavaCoreBundle.message("jdk.1.4.language.level.description"), "1.4"),
|
||||
JDK_1_5(JavaCoreBundle.message("jdk.1.5.language.level.description"), "1.5", "5"),
|
||||
JDK_1_6(JavaCoreBundle.message("jdk.1.6.language.level.description"), "1.6", "6"),
|
||||
JDK_1_7(JavaCoreBundle.message("jdk.1.7.language.level.description"), "1.7", "7"),
|
||||
JDK_1_8(JavaCoreBundle.message("jdk.1.8.language.level.description"), "1.8", "8"),
|
||||
JDK_1_9(JavaCoreBundle.message("jdk.1.9.language.level.description"), "9", "1.9"),
|
||||
JDK_X(JavaCoreBundle.message("jdk.X.language.level.description"), "");
|
||||
|
||||
public static final LanguageLevel HIGHEST = JDK_1_9;
|
||||
public static final Key<LanguageLevel> KEY = Key.create("LANGUAGE_LEVEL");
|
||||
|
||||
private final String myName;
|
||||
private final String myPresentableText;
|
||||
private final String[] myCompilerComplianceOptions;
|
||||
|
||||
@@ -42,15 +39,14 @@ public enum LanguageLevel {
|
||||
* @param compilerComplianceOptions versions supported by Javac '-source' parameter
|
||||
* @see <a href="http://docs.oracle.com/javase/8/docs/technotes/tools/windows/javac.html">Javac Reference</a>
|
||||
*/
|
||||
LanguageLevel(String name, @Nls String presentableText, String... compilerComplianceOptions) {
|
||||
myName = name;
|
||||
LanguageLevel(@Nls String presentableText, String... compilerComplianceOptions) {
|
||||
myPresentableText = presentableText;
|
||||
myCompilerComplianceOptions = compilerComplianceOptions;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
/** @deprecated use {@link JavaSdkVersion#getDescription()} (to be removed in IDEA 2019) */
|
||||
public String getName() {
|
||||
return myName;
|
||||
return this == JDK_X ? "Java X" : "Java " + JavaSdkVersion.fromLanguageLevel(this).getDescription();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
@@ -6,7 +6,7 @@ class UnsupportedFeatures {
|
||||
for (String s : args) { System.out.println(s); }
|
||||
|
||||
List<String> list =
|
||||
new ArrayList<error descr="Diamond types are not supported at language level '1.6'"><></error>();
|
||||
new ArrayList<error descr="Diamond types are not supported at language level '6'"><></error>();
|
||||
|
||||
for (String s : list) {}
|
||||
Arrays.asList("");
|
||||
@@ -14,22 +14,22 @@ class UnsupportedFeatures {
|
||||
boolean b1 = Boolean.TRUE;
|
||||
|
||||
try { Reader r = new FileReader("/dev/null"); }
|
||||
catch (<error descr="Multi-catches are not supported at language level '1.6'">FileNotFoundException | IOException e</error>) { e.printStackTrace(); }
|
||||
catch (<error descr="Multi-catches are not supported at language level '6'">FileNotFoundException | IOException e</error>) { e.printStackTrace(); }
|
||||
|
||||
try <error descr="Try-with-resources are not supported at language level '1.6'">(Reader r = new FileReader("/dev/null"))</error> { }
|
||||
try <error descr="Try-with-resources are not supported at language level '6'">(Reader r = new FileReader("/dev/null"))</error> { }
|
||||
|
||||
I i1 = <error descr="Method references are not supported at language level '1.6'">UnsupportedFeatures::m</error>;
|
||||
I i2 = <error descr="Lambda expressions are not supported at language level '1.6'">() -> { }</error>;
|
||||
I i1 = <error descr="Method references are not supported at language level '6'">UnsupportedFeatures::m</error>;
|
||||
I i2 = <error descr="Lambda expressions are not supported at language level '6'">() -> { }</error>;
|
||||
|
||||
switch (<error descr="Incompatible types. Found: 'java.lang.String', required: 'byte, char, short or int'">list.get(0)</error>) {
|
||||
case "foo": break;
|
||||
}
|
||||
}
|
||||
|
||||
void f(<error descr="Receiver parameters are not supported at language level '1.6'">Object this</error>) { }
|
||||
void f(<error descr="Receiver parameters are not supported at language level '6'">Object this</error>) { }
|
||||
|
||||
interface I {
|
||||
<error descr="Extension methods are not supported at language level '1.6'">default void m() { }</error>
|
||||
<error descr="Extension methods are not supported at language level '1.6'">static void m() { }</error>
|
||||
<error descr="Extension methods are not supported at language level '6'">default void m() { }</error>
|
||||
<error descr="Extension methods are not supported at language level '6'">static void m() { }</error>
|
||||
}
|
||||
}
|
||||
@@ -1,14 +1,14 @@
|
||||
class Test {
|
||||
interface I {
|
||||
<error descr="Extension methods are not supported at language level '1.7'">static void foo() {}</error>
|
||||
<error descr="Extension methods are not supported at language level '7'">static void foo() {}</error>
|
||||
}
|
||||
|
||||
|
||||
abstract static class IImpl implements I {}
|
||||
interface I2 extends I {}
|
||||
|
||||
{
|
||||
I.<error descr="Static interface method calls are not supported at language level '1.7'">foo</error>();
|
||||
IImpl.<error descr="Static interface method calls are not supported at language level '1.7'">foo</error>();
|
||||
I2.<error descr="Static interface method calls are not supported at language level '1.7'">foo</error>();
|
||||
I.<error descr="Static interface method calls are not supported at language level '7'">foo</error>();
|
||||
IImpl.<error descr="Static interface method calls are not supported at language level '7'">foo</error>();
|
||||
I2.<error descr="Static interface method calls are not supported at language level '7'">foo</error>();
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,6 @@ import java.io.Serializable;
|
||||
|
||||
class IntersectionTypeCast {
|
||||
void m(Runnable r) {
|
||||
Object o = <error descr="Intersection types in casts are not supported at language level '1.7'">(Runnable & Serializable)r</error>;
|
||||
Object o = <error descr="Intersection types in casts are not supported at language level '7'">(Runnable & Serializable)r</error>;
|
||||
}
|
||||
}
|
||||
@@ -1,3 +1,3 @@
|
||||
<error descr="Modules are not supported at language level '1.8'">module M {
|
||||
<error descr="Modules are not supported at language level '8'">module M {
|
||||
requires A;
|
||||
}</error>
|
||||
@@ -3,6 +3,6 @@ import java.io.*;
|
||||
class UnsupportedFeatures {
|
||||
void m() throws Exception {
|
||||
Reader r1 = new FileReader("/dev/null");
|
||||
try (<error descr="Resource references are not supported at language level '1.8'">r1</error>; Reader r2 = new FileReader("/dev/null")) { }
|
||||
try (<error descr="Resource references are not supported at language level '8'">r1</error>; Reader r2 = new FileReader("/dev/null")) { }
|
||||
}
|
||||
}
|
||||
@@ -15,7 +15,7 @@ abstract class C {
|
||||
void notWrong() { }
|
||||
}
|
||||
|
||||
class B extends <error descr="Type annotations are not supported at language level '1.7'">@Deprecated</error> Object { }
|
||||
class B extends <error descr="Type annotations are not supported at language level '7'">@Deprecated</error> Object { }
|
||||
|
||||
enum E {
|
||||
@Anno E1
|
||||
@@ -24,7 +24,7 @@ enum E {
|
||||
interface I {
|
||||
@<error descr="Duplicate annotation">Anno</error>
|
||||
public @<error descr="Duplicate annotation">Anno</error>
|
||||
Collection<<error descr="Type annotations are not supported at language level '1.7'">@Anno</error> String>
|
||||
Collection<<error descr="Type annotations are not supported at language level '7'">@Anno</error> String>
|
||||
method(@<error descr="Duplicate annotation">Anno</error> @<error descr="Duplicate annotation">Anno</error> Object o);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
class Test {
|
||||
public void closeable(AutoCloseable y) {
|
||||
try(<error descr="Resource references are not supported at language level '1.7'">y</error>) {
|
||||
try(<error descr="Resource references are not supported at language level '7'">y</error>) {
|
||||
System.out.println("Hello");
|
||||
}
|
||||
catch (Exception e) {
|
||||
@@ -9,7 +9,7 @@ class Test {
|
||||
}
|
||||
|
||||
public void incompleteCode(AutoCloseable y) {
|
||||
try(<error descr="Resource references are not supported at language level '1.7'">y</error><error descr="')' expected"> </error>{
|
||||
try(<error descr="Resource references are not supported at language level '7'">y</error><error descr="')' expected"> </error>{
|
||||
System.out.println("Hello");
|
||||
}
|
||||
catch (Exception e) {
|
||||
|
||||
Reference in New Issue
Block a user