1/* 2 * Copyright (c) 2012, 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 8003280 27 * @summary Add lambda tests 28 * check that method reference handles varargs conversion properly 29 * @run main MethodReference36 30 */ 31 32public class MethodReference36 { 33 34 static int assertionCount = 0; 35 36 static void assertTrue(boolean cond) { 37 assertionCount++; 38 if (!cond) 39 throw new AssertionError(); 40 } 41 42 interface SamC { void m(char[] a); } 43 interface SamZ { void m(boolean[] a); } 44 interface SamB { void m(byte[] a); } 45 interface SamS { void m(short[] a); } 46 interface SamI { void m(int[] a); } 47 interface SamL { void m(long[] a); } 48 interface SamF { void m(float[] a); } 49 interface SamD { void m(double[] a); } 50 interface SamO { void m(Object[] a); } 51 52 53 static void m(Object... vi) { 54 assertTrue(true); 55 } 56 57 public void test() { 58 59 SamC sc = MethodReference36::m; 60 sc.m(new char[] { 'a', 'b' } ); 61 62 SamZ sz = MethodReference36::m; 63 sz.m(new boolean[] { true, false } ); 64 65 SamB sb = MethodReference36::m; 66 sb.m(new byte[] { 0, 1 } ); 67 68 SamS ss = MethodReference36::m; 69 ss.m(new short[] { 0, 1 } ); 70 71 SamI si = MethodReference36::m; 72 si.m(new int[] { 0, 1 } ); 73 74 SamL sl = MethodReference36::m; 75 sl.m(new long[] { 0, 1 } ); 76 77 SamF sf = MethodReference36::m; 78 sf.m(new float[] { 0, 1 } ); 79 80 SamD sd = MethodReference36::m; 81 sd.m(new double[] { 0, 1 } ); 82 83 SamO so = MethodReference36::m; 84 so.m(new Object[] { null, null } ); 85 } 86 87 public static void main(String[] args) { 88 new MethodReference36().test(); 89 assertTrue(assertionCount == 9); 90 } 91} 92