An example of substituability test that is recursive

Karen Kinnear karen.kinnear at oracle.com
Thu Jan 31 13:57:32 UTC 2019


Remi,

Thank you. So there were two kinds of “recurse to its death” we talked about
1) expected behavior
2) surprise

This strikes me as the expected behavior - where we can set expectations.

If we were to always return false - how would you make this kind of example work?

thanks,
Karen

> On Jan 31, 2019, at 6:19 AM, Remi Forax <forax at univ-mlv.fr> wrote:
> 
> Hi Karen,
> here is an example that recurse to its death with the current prototype
> 
> import java.lang.invoke.ValueBootstrapMethods;
> import java.util.stream.IntStream;
> 
> public class Substituable {
>  static value class Link {
>    private final int value;
>    private final Object next;
> 
>    public Link(int value, Object next) {
>      this.value = value;
>      this.next = next;
>    }
> 
>    static Object times(int count) {
>      return IntStream.range(0, count).boxed().reduce(null, (acc, index) -> new Link(index, acc), (l1, l2) -> { throw null; });
>    }
>  }
> 
> 
>  public static void main(String[] args) {
>    var l = Link.times(1_000);
> 
>    //System.out.println(l == l);
>    System.out.println(ValueBootstrapMethods.isSubstitutable(l, l));
>  }
> }
> 
> 
> Rémi
> 



More information about the valhalla-spec-observers mailing list