On Tue, 3 Oct 2023 08:54:57 GMT, Maurizio Cimadamore <mcimadam...@openjdk.org> wrote:
>> Aggelos Biboudis has updated the pull request with a new target base due to >> a merge or a rebase. The incremental webrev excludes the unrelated changes >> brought in by the merge/rebase. The pull request contains four additional >> commits since the last revision: >> >> - Merge branch 'master' into primitive-patterns >> - Implement type pairs to exactnessMethod name >> - Apply suggestions from code review >> >> Co-authored-by: Raffaello Giulietti <raffaello.giulie...@oracle.com> >> - 8303374: Compiler Implementation for Primitive types in patterns, >> instanceof, and switch (Preview) > > src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Lower.java line 2929: > >> 2927: // This branch covers true unconditionality for the >> underlying type as well. >> 2928: if (types.checkUnconditionallyExact(tree.expr.type, >> tree.pattern.type) && >> 2929: !(tree.expr.type.isReference() && >> types.isExactPrimitiveWidening(types.unboxedType(tree.expr.type), >> tree.pattern.type))) { > > Not super sure I get this line: if the expression type is unconditionally > exact for the pattern type, shouldn't the test be always `true` ? What is the > role of the extra guard after the `&&` ? Also, doesn't unconditionally exact > implies that there is convertibility? Agree to all. Convertibility was covered. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/15638#discussion_r1346991986