<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:DengXian;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:DengXian;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        text-align:justify;
        text-justify:inter-ideograph;
        font-size:10.5pt;
        font-family:DengXian;}
.MsoChpDefault
        {mso-style-type:export-only;}
/* Page Definitions */
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style></head><body lang=ZH-CN link=blue vlink="#954F72" style='word-wrap:break-word'><div class=WordSection1><p class=MsoNormal><span lang=EN-US>Hi all,</span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>I am not sure whether this should be reported to amber-dev or compiler-dev so I am reporting it here (sorry!)</span></p><p class=MsoNormal><span lang=EN-US>A minimal repro was attached below or you can visit here: https://gist.github.com/imkiva/8db13b6e578e473c1c9b977086bfe898</span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>import java.util.function.BiFunction;</span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>public class Bug {</span></p><p class=MsoNormal><span lang=EN-US>  sealed interface Term {</span></p><p class=MsoNormal><span lang=EN-US>    record Lit() implements Term {}</span></p><p class=MsoNormal><span lang=EN-US>    record Lam(String x, Term a) implements Term {}</span></p><p class=MsoNormal><span lang=EN-US>  }</span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>  public static <X, T> void call(BiFunction<X, T, T> op, X x, T t) {</span></p><p class=MsoNormal><span lang=EN-US>    op.apply(x, t);</span></p><p class=MsoNormal><span lang=EN-US>  }</span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>  public static void main(String[] args) {</span></p><p class=MsoNormal><span lang=EN-US>    // this code works</span></p><p class=MsoNormal><span lang=EN-US>    call(Term.Lam::new, "x", (Term) new Term.Lit());</span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>    // this does not</span></p><p class=MsoNormal><span lang=EN-US>    call(Term.Lam::new, "x", new Term.Lit());</span></p><p class=MsoNormal><span lang=EN-US>    // java.lang.invoke.LambdaConversionException: Type mismatch for lambda argument 1: </span></p><p class=MsoNormal><span lang=EN-US>    // class java.lang.Record is not convertible to interface Term</span></p><p class=MsoNormal><span lang=EN-US>  }</span></p><p class=MsoNormal><span lang=EN-US>}</span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p></div></body></html>