/*
* Copyright 2000-2010 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import java.io.*;
class Test {
interface InterfA {
void foo(T x);
void foo(T x);
}
abstract class A {
abstract & Serializable> void foo(T x, A> y);
abstract > void foo(T x, A extends Cloneable> y);
}
/* abstract class B {
abstract & Serializable> void foo(T x, B> y);
abstract > void foo(T x, B extends Throwable> y);
}
abstract class C {
abstract & Serializable> void foo(T x, C extends Serializable> y);
abstract > void foo(T x, C extends Throwable> y);
}*/
abstract class D {
abstract > void foo(T x, D extends Runnable> y);
abstract > void foo(T x, D extends Throwable> y);
}
interface IA {}
interface IB {}
void testExtendsOrder() {
class E {
void foo(E extends IA> x) {}
void foo(E extends IB> x) {}
}
}
abstract class F {
abstract void foo(F> y);
abstract void foo(F extends Throwable> y);
}
}