Deprecated extension method syntax dropped

This commit is contained in:
Roman Shevchenko
2013-02-27 20:40:44 +01:00
parent f4330beba2
commit 54a7b4dc70
31 changed files with 67 additions and 290 deletions

View File

@@ -44,6 +44,6 @@ class UnsupportedFeatures {
}
interface I {
<error descr="Extension methods are not supported at this language level">void m() default { }</error>
<error descr="Extension methods are not supported at this language level">default void m() { }</error>
}
}

View File

@@ -1,10 +1,11 @@
class Test {
public static final BinaryOperator<Integer> rPlus = (x, y) -> x + y;
interface BinaryOperator<T> extends Combiner<T,T,T> {
public T operate(T left, T right);
@Override
T combine(T t1, T t2) default {
default T combine(T t1, T t2) {
return operate(t1, t2);
}
}
@@ -13,5 +14,3 @@ class Test {
V combine(T t, U u);
}
}

View File

@@ -1,8 +0,0 @@
interface I {
void m1() <error descr="Deprecated extension method syntax">default</error> { }
default void m2() <error descr="Deprecated extension method syntax">default</error> { }
@SuppressWarnings("extensionSyntax")
void m3() default { }
}

View File

@@ -17,11 +17,11 @@
class C {
interface I {
int i = 42;
void m() default { }
default void m() { }
}
interface II extends I {
void m() default {
default void m() {
I.super.m();
<error descr="Unqualified super reference is not allowed in extension method">super.m</error>();
@@ -46,18 +46,18 @@ class C {
}
class D {
<error descr="Extension methods can only be used within an interface">void m()</error> default { }
<error descr="Extension methods can only be used within an interface">default void m()</error> { }
}
interface IllegalMods {
<error descr="Static methods in interfaces should have a body">static void m1()</error>;
<error descr="Illegal combination of modifiers: 'static' and 'default'">static</error> void m2() default { }
void m1()<error descr="'{' or ';' expected"> </error>default<error descr="Identifier or type expected">;</error> <error descr="Not allowed in interface">{ }</error>
<error descr="Static methods in interfaces should have a body">static void m2()</error>;
<error descr="Illegal combination of modifiers: 'static' and 'default'">static</error> <error descr="Illegal combination of modifiers: 'default' and 'static'">default</error> void m3() { }
<error descr="Illegal combination of modifiers: 'abstract' and 'default'">abstract</error> void m4() default { }
<error descr="Illegal combination of modifiers: 'abstract' and 'default'">abstract</error> <error descr="Illegal combination of modifiers: 'default' and 'abstract'">default</error> void m5() { }
<error descr="Illegal combination of modifiers: 'abstract' and 'default'">abstract</error> <error descr="Illegal combination of modifiers: 'default' and 'abstract'">default</error> void m4() { }
<error descr="Extension method should have a body">default void m6()</error>;
<error descr="Extension method should have a body">default void m5()</error>;
<error descr="Modifier 'default' not allowed here">default</error> int i;
<error descr="Modifier 'default' not allowed here">default</error> interface X { }

View File

@@ -1,6 +1,6 @@
import java.util.*;
class MyTest2{
class MyTest2 {
{
Comparator<? super String> comparator = String::compareToIgnoreCase;
}
@@ -16,5 +16,5 @@ interface Foo2<T> {
void bar(T i, T j);
}
interface Bar2 {
public void xxx(Bar2 p) default {}
default void xxx(Bar2 p) { }
}

View File

@@ -7,7 +7,7 @@ class Test {
interface InOut<A> {
A run() throws IOException;
<B> InOut<B> bind(final Eff<A, InOut<B>> f) default {
default <B> InOut<B> bind(final Eff<A, InOut<B>> f) {
return () -> f.f(InOut.this.run()).run();
}
}

View File

@@ -7,7 +7,7 @@ class Test {
interface InOut<A> {
A run() throws IOException;
<B> InOut<B> bind(final Eff<A, InOut<B>> f) default {
default <B> InOut<B> bind(final Eff<A, InOut<B>> f) {
return new In<caret>Out<B>() {
@Override
public B run() throws IOException {

View File

@@ -4,7 +4,7 @@ interface A<T> {
}
interface B<T> extends A<T> {
void m1(T t) default { }
default void m1(T t) { }
}
class MyClass<T> implements B<T> {

View File

@@ -1,5 +1,5 @@
interface A<T> {
void m(T t) default { }
default void m(T t) { }
}
class MyClass<T> implements A<T> {

View File

@@ -4,7 +4,7 @@ interface A<T> {
}
interface B<T> extends A<T> {
void m1(T t) default { }
default void m1(T t) { }
}
class MyClass<T> implements B<T> {

View File

@@ -1,5 +1,5 @@
interface A<T> {
void m(T t) default { }
default void m(T t) { }
}
class MyClass<T> implements A<T> {

View File

@@ -2,10 +2,11 @@ PsiJavaFile:Extension.java
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiMethod:f
PsiModifierList:
<empty list>
PsiModifierList:default
PsiKeyword:default('default')
PsiTypeParameterList
<empty list>
PsiWhiteSpace(' ')
PsiTypeElement:int
PsiKeyword:int('int')
PsiWhiteSpace(' ')
@@ -22,8 +23,6 @@ PsiJavaFile:Extension.java
PsiReferenceParameterList
<empty list>
PsiWhiteSpace(' ')
PsiKeyword:default('default')
PsiWhiteSpace(' ')
PsiCodeBlock
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
@@ -36,4 +35,4 @@ PsiJavaFile:Extension.java
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
PsiJavaToken:RBRACE('}')

View File

@@ -15,9 +15,12 @@ PsiJavaFile:Unclosed8.java
PsiJavaToken:RPARENTH(')')
PsiReferenceList
<empty list>
PsiWhiteSpace(' ')
PsiKeyword:default('default')
PsiErrorElement:'{' or ';' expected
<empty list>
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')
PsiModifierList:default
PsiKeyword:default('default')
PsiErrorElement:Identifier or type expected
<empty list>
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')

View File

@@ -1,25 +0,0 @@
PsiJavaFile:Unclosed9.java
PsiJavaToken:LBRACE('{')
PsiWhiteSpace(' ')
PsiMethod:f
PsiModifierList:
<empty list>
PsiTypeParameterList
<empty list>
PsiTypeElement:void
PsiKeyword:void('void')
PsiWhiteSpace(' ')
PsiIdentifier:f('f')
PsiParameterList:()
PsiJavaToken:LPARENTH('(')
PsiJavaToken:RPARENTH(')')
PsiReferenceList
<empty list>
PsiWhiteSpace(' ')
PsiKeyword:default('default')
PsiErrorElement:'{' expected
<empty list>
PsiWhiteSpace(' ')
PsiJavaToken:SEMICOLON(';')
PsiWhiteSpace(' ')
PsiJavaToken:RBRACE('}')

View File

@@ -2,7 +2,7 @@ interface Base {
}
interface I2 extends Base {
void foo<caret>() default {
default void foo<caret>() {
System.out.println("Hi there.");
}
}

View File

@@ -1,5 +1,5 @@
interface Base {
void foo() default {
default void foo() {
System.out.println("Hi there.");
}
}

View File

@@ -1,5 +1,5 @@
interface Base {
void foo<caret>() default {
default void foo<caret>() {
System.out.println("Hi there.");
}
}

View File

@@ -1,5 +1,5 @@
interface Base {
void foo<caret>() default {
default void foo<caret>() {
System.out.println("Hi there.");
}
}

View File

@@ -2,7 +2,7 @@ interface Base {
}
interface I2 extends Base {
void foo() default {
default void foo() {
System.out.println("Hi there.");
}
}