test/tools/javac/lambda/8068399/T8068399.java

Thu, 12 Feb 2015 10:16:19 +0530

author
vromero
date
Thu, 12 Feb 2015 10:16:19 +0530
changeset 2730
a513711d6171
permissions
-rw-r--r--

8069545: javac shouldn't check nested stuck lambdas during overload resolution
Summary: Nested lambdas should not be considered while overload resolution is in progress
Reviewed-by: mcimadamore
Contributed-by: vicente.romero@oracle.com, srikanth.adayapalam@oracle.com

vromero@2730 1 /*
vromero@2730 2 * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
vromero@2730 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
vromero@2730 4 *
vromero@2730 5 * This code is free software; you can redistribute it and/or modify it
vromero@2730 6 * under the terms of the GNU General Public License version 2 only, as
vromero@2730 7 * published by the Free Software Foundation. Oracle designates this
vromero@2730 8 * particular file as subject to the "Classpath" exception as provided
vromero@2730 9 * by Oracle in the LICENSE file that accompanied this code.
vromero@2730 10 *
vromero@2730 11 * This code is distributed in the hope that it will be useful, but WITHOUT
vromero@2730 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
vromero@2730 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
vromero@2730 14 * version 2 for more details (a copy is included in the LICENSE file that
vromero@2730 15 * accompanied this code).
vromero@2730 16 *
vromero@2730 17 * You should have received a copy of the GNU General Public License version
vromero@2730 18 * 2 along with this work; if not, write to the Free Software Foundation,
vromero@2730 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
vromero@2730 20 *
vromero@2730 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
vromero@2730 22 * or visit www.oracle.com if you need additional information or have any
vromero@2730 23 * questions.
vromero@2730 24 */
vromero@2730 25 /*
vromero@2730 26 * @test
vromero@2730 27 * @bug 8068399
vromero@2730 28 * @summary structural most specific and stuckness
vromero@2730 29 */
vromero@2730 30
vromero@2730 31 import java.util.function.Function;
vromero@2730 32 import java.util.stream.IntStream;
vromero@2730 33 import java.util.stream.Stream;
vromero@2730 34
vromero@2730 35 public class T8068399 {
vromero@2730 36
vromero@2730 37 public static class Spectrum {
vromero@2730 38 public double[] getEnergy() {
vromero@2730 39 return new double[0];
vromero@2730 40 }
vromero@2730 41 }
vromero@2730 42
vromero@2730 43 protected Spectrum spectrum;
vromero@2730 44
vromero@2730 45 public static class Ref<T> {
vromero@2730 46
vromero@2730 47 T value;
vromero@2730 48
vromero@2730 49 public Ref() {
vromero@2730 50 }
vromero@2730 51
vromero@2730 52 public Ref(T value) {
vromero@2730 53 this.value = value;
vromero@2730 54 }
vromero@2730 55
vromero@2730 56 public boolean isNull() {
vromero@2730 57 return value == null;
vromero@2730 58 }
vromero@2730 59
vromero@2730 60 public T get() {
vromero@2730 61 return value;
vromero@2730 62 }
vromero@2730 63
vromero@2730 64 public void set(T value) {
vromero@2730 65 this.value = value;
vromero@2730 66 }
vromero@2730 67 }
vromero@2730 68
vromero@2730 69 public static <T>T maxKey(Stream<T> stream, Function<T, Double> function) {
vromero@2730 70 Ref<Double> max = new Ref<>();
vromero@2730 71 Ref<T> index = new Ref<>();
vromero@2730 72 stream.forEach(v -> {
vromero@2730 73 Double value = function.apply(v);
vromero@2730 74
vromero@2730 75 if (max.isNull() || value > max.get()) {
vromero@2730 76 max.set(value);
vromero@2730 77 index.set(v);
vromero@2730 78 }
vromero@2730 79 });
vromero@2730 80
vromero@2730 81 return index.get();
vromero@2730 82 }
vromero@2730 83
vromero@2730 84 public static int interpolate(int x, int x0, int x1, int y0, int y1) {
vromero@2730 85 return y0 + (x - x0) * (y1 - y0) / (x1 - x0);
vromero@2730 86 }
vromero@2730 87
vromero@2730 88 public static double interpolate(double x, double x0, double x1, double y0, double y1) {
vromero@2730 89 return y0 + (x - x0) * (y1 - y0) / (x1 - x0);
vromero@2730 90 }
vromero@2730 91
vromero@2730 92 protected int getXByFrequency(double frequency) {
vromero@2730 93 return (int) Math.round(interpolate(frequency,
vromero@2730 94 getMinSpectrumCoord(),
vromero@2730 95 getMaxSpectrumCoord(),
vromero@2730 96 0, getWidth()));
vromero@2730 97 }
vromero@2730 98
vromero@2730 99 private int getWidth() {
vromero@2730 100 return 0;
vromero@2730 101 }
vromero@2730 102
vromero@2730 103 private double getMaxSpectrumCoord() {
vromero@2730 104 return 0;
vromero@2730 105 }
vromero@2730 106
vromero@2730 107 private double getMinSpectrumCoord() {
vromero@2730 108 return 0;
vromero@2730 109 }
vromero@2730 110
vromero@2730 111 void foo() {
vromero@2730 112 int maxBpmIndex = 0;
vromero@2730 113 int xcur = getXByFrequency(maxKey(IntStream.range(0, maxBpmIndex).boxed(),
vromero@2730 114 i -> Math.abs(spectrum.getEnergy()[i])));
vromero@2730 115 }
vromero@2730 116
vromero@2730 117 public static void main(String [] args) {
vromero@2730 118 }
vromero@2730 119 }

mercurial