1 /* 2 * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23 24 /* 25 * @test 26 * @bug 5073079 27 * @summary Allow unchecked override of generified methods in 28 * parameterless classes 29 * @author Peter von der Ah\u00e9 30 * 31 * @compile -Xlint:unchecked -Werror AttributeSet.java 32 */ 33 34 interface Attribute<T> { } 35 36 interface AttributeSet2 { get(Class<T> category)37 <T> Attribute<?> get(Class<T> category); 38 } 39 40 class AttributeSet2Impl implements AttributeSet2 { get(Class category)41 public Attribute get(Class category) { return null; } 42 } 43 44 interface AttributeSet3 { get(Class<?> category)45 Attribute<?> get(Class<?> category); 46 } 47 48 class AttributeSet3Impl implements AttributeSet3 { get(Class category)49 public Attribute get(Class category) { return null; } 50 } 51 52 interface AttributeSet4 { get(Number category)53 Attribute<?> get(Number category); 54 } 55 56 class AttributeSet4Impl implements AttributeSet4 { get(Number category)57 public Attribute get(Number category) { return null; } 58 } 59 60 interface AttributeSet5 { get(Attribute<Number> category)61 Attribute<?> get(Attribute<Number> category); 62 } 63 64 class AttributeSet5Impl implements AttributeSet5 { get(Attribute category)65 public Attribute get(Attribute category) { return null; } 66 } 67 68 interface I1<T> { f(Attribute<T> l)69 void f(Attribute<T> l); 70 } 71 72 class C1 implements I1<String> { f(Attribute l)73 public void f(Attribute l) { } test()74 void test() { 75 Attribute<Number> n = null; 76 f(n); 77 } 78 } 79 80 interface A2 { f(Attribute<String> a)81 void f(Attribute<String> a); 82 } 83 84 class B2 { f(Attribute a)85 public void f(Attribute a) { } 86 } 87 88 class C2 extends B2 implements A2 { test(Attribute<Number> a)89 void test(Attribute<Number> a) { 90 f(a); 91 } 92 } 93