<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=Windows-1252">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:Wingdings;
panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:Consolas;
panose-1:2 11 6 9 2 2 4 3 2 4;}
@font-face
{font-family:"Segoe UI";
panose-1:2 11 5 2 4 2 4 2 2 3;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
h2
{mso-style-priority:9;
mso-style-link:"Heading 2 Char";
margin-top:2.0pt;
margin-right:0cm;
margin-bottom:0cm;
margin-left:0cm;
page-break-after:avoid;
font-size:13.0pt;
font-family:"Calibri Light",sans-serif;
color:#2F5496;
font-weight:normal;}
h3
{mso-style-priority:9;
mso-style-link:"Heading 3 Char";
margin-top:2.0pt;
margin-right:0cm;
margin-bottom:0cm;
margin-left:0cm;
page-break-after:avoid;
font-size:12.0pt;
font-family:"Calibri Light",sans-serif;
color:#1F3763;
font-weight:normal;}
h4
{mso-style-priority:9;
mso-style-link:"Heading 4 Char";
margin-top:2.0pt;
margin-right:0cm;
margin-bottom:0cm;
margin-left:0cm;
page-break-after:avoid;
font-size:11.0pt;
font-family:"Calibri Light",sans-serif;
color:#2F5496;
font-weight:normal;
font-style:italic;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:#954F72;
text-decoration:underline;}
code
{mso-style-priority:99;
font-family:"Courier New";}
pre
{mso-style-priority:99;
mso-style-link:"HTML Preformatted Char";
margin:0cm;
font-size:10.0pt;
font-family:"Courier New";}
span.Heading2Char
{mso-style-name:"Heading 2 Char";
mso-style-priority:9;
mso-style-link:"Heading 2";
font-family:"Calibri Light",sans-serif;
color:#2F5496;}
span.Heading3Char
{mso-style-name:"Heading 3 Char";
mso-style-priority:9;
mso-style-link:"Heading 3";
font-family:"Calibri Light",sans-serif;
color:#1F3763;}
span.Heading4Char
{mso-style-name:"Heading 4 Char";
mso-style-priority:9;
mso-style-link:"Heading 4";
font-family:"Calibri Light",sans-serif;
color:#2F5496;
font-style:italic;}
p.part, li.part, div.part
{mso-style-name:part;
mso-margin-top-alt:auto;
margin-right:0cm;
mso-margin-bottom-alt:auto;
margin-left:0cm;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
span.HTMLPreformattedChar
{mso-style-name:"HTML Preformatted Char";
mso-style-priority:99;
mso-style-link:"HTML Preformatted";
font-family:"Courier New";}
span.token
{mso-style-name:token;}
.MsoChpDefault
{mso-style-type:export-only;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:70.85pt 70.85pt 70.85pt 70.85pt;}
div.WordSection1
{page:WordSection1;}
/* List Definitions */
@list l0
{mso-list-id:239173005;
mso-list-template-ids:-1;}
@list l0:level1
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:36.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l0:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:72.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:"Courier New";
mso-bidi-font-family:"Times New Roman";}
@list l0:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:108.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level4
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:144.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level5
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:180.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:216.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level7
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:252.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level8
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:288.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:324.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l1
{mso-list-id:637272278;
mso-list-template-ids:-1;}
@list l1:level1
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:36.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l1:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:72.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:"Courier New";
mso-bidi-font-family:"Times New Roman";}
@list l1:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:108.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l1:level4
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:144.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l1:level5
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:180.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l1:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:216.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l1:level7
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:252.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l1:level8
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:288.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l1:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:324.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l2
{mso-list-id:701788238;
mso-list-template-ids:-1;}
@list l2:level1
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:36.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l2:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:72.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:"Courier New";
mso-bidi-font-family:"Times New Roman";}
@list l2:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:108.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l2:level4
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:144.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l2:level5
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:180.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l2:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:216.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l2:level7
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:252.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l2:level8
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:288.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l2:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:324.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l3
{mso-list-id:1521626331;
mso-list-template-ids:-1;}
@list l3:level1
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:36.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l3:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:72.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:"Courier New";
mso-bidi-font-family:"Times New Roman";}
@list l3:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:108.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l3:level4
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:144.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l3:level5
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:180.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l3:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:216.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l3:level7
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:252.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l3:level8
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:288.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l3:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:324.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
ol
{margin-bottom:0cm;}
ul
{margin-bottom:0cm;}
--></style>
</head>
<body lang="NL-BE" link="blue" vlink="#954F72" style="word-wrap:break-word">
<div class="WordSection1">
<div>
<div>
<p class="part" style="margin-bottom:12.0pt;background:white"><span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt">Hello amber project experts.<o:p></o:p></span></p>
<p class="part" style="margin-bottom:12.0pt;background:white"><span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt"><o:p> </o:p></span></p>
<p class="part" style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt">I’ve been quite interested in recent java enhancement projects, and while checking<br>
out some of the details of both switch pattern matching and record patterns,<br>
I’ve noticed some things I want to address.<o:p></o:p></span></p>
<p class="part" style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;--tw-border-opacity: 1;border-color:rgba(231, 231, 231, var(--tw-border-opacity));--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt">Looking around, this seemed to be the latest version of the spec, so I’ll be basing<br>
my questions off of this:<br>
<a href="https://cr.openjdk.java.net/~gbierman/jep427%2b405/jep427%2b405-20220601/specs/patterns-switch-record-patterns-jls.html" target="_blank"><span style="font-size:11.0pt;color:#337AB7">https://cr.openjdk.java.net/~gbierman/jep427%2B405/jep427%2B405-20220601/specs/patterns-switch-record-patterns-jls.html</span></a><o:p></o:p></span></p>
<div style="mso-element:para-border-div;border:none;border-bottom:solid #EEEEEE 1.0pt;padding:0cm 0cm 4.0pt 0cm;background:white">
<h2 style="mso-margin-top-alt:18.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;border:none;padding:0cm;box-sizing: border-box;--tw-border-opacity: 1;--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="Switch-pattern-matching">
<span style="font-size:16.5pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt">Switch pattern matching<o:p></o:p></span></h2>
</div>
<h3 style="mso-margin-top-alt:18.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;--tw-border-opacity: 1;border-color:rgba(231, 231, 231, var(--tw-border-opacity));--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="Switch-syntax">
<span style="font-size:14.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt">Switch syntax<o:p></o:p></span></h3>
<p class="part" style="margin:0cm;background:white;box-sizing: border-box;--tw-border-opacity: 1;border-color:rgba(231, 231, 231, var(--tw-border-opacity));--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt">The syntax section shows that a </span><code><span style="font-size:10.0pt;font-family:Consolas;color:#333333;letter-spacing:.25pt">CaseElement</span></code><span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt"> can
be </span><code><span style="font-size:10.0pt;font-family:Consolas;color:#333333;letter-spacing:.25pt">Pattern {Guard}</span></code><span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt">.<br>
This would imply that there can be multiple </span><code><span style="font-size:10.0pt;font-family:Consolas;color:#333333;letter-spacing:.25pt">when</span></code><span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt"> guards
on a single pattern<o:p></o:p></span></p>
<h3 style="mso-margin-top-alt:18.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;--tw-border-opacity: 1;border-color:rgba(231, 231, 231, var(--tw-border-opacity));--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="Constant-boolean-expressions-in-the-guard-expression">
<span style="font-size:14.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt">Constant boolean expressions in the guard expression<o:p></o:p></span></h3>
<p class="part" style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;--tw-border-opacity: 1;border-color:rgba(231, 231, 231, var(--tw-border-opacity));--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt">The specifications mention that unlike with most guards, if the “expression has<br>
the value true”, the dominance checking treats it just as if it were<br>
an unguarded pattern case.<o:p></o:p></span></p>
<p class="part" style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;--tw-border-opacity: 1;border-color:rgba(231, 231, 231, var(--tw-border-opacity));--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt">This raised two concerns:<o:p></o:p></span></p>
<ul type="disc">
<li class="MsoNormal" style="color:#333333;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l2 level1 lfo3;background:white;box-sizing: border-box;--tw-border-opacity: 1;border-color:rgba(231, 231, 231, var(--tw-border-opacity));--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;letter-spacing:.25pt">What does ‘has the value true’ mean? In my eyes, that can mean quite a few things:<o:p></o:p></span></li></ul>
<ul type="disc">
<ul type="circle">
<li class="MsoNormal" style="color:#333333;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l2 level2 lfo3;background:white;box-sizing: border-box;--tw-border-opacity: 1;border-color:rgba(231, 231, 231, var(--tw-border-opacity));--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;letter-spacing:.25pt">The boolean literal ‘true’<o:p></o:p></span></li><li class="MsoNormal" style="color:#333333;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l2 level2 lfo3;background:white;box-sizing: border-box;--tw-border-opacity: 1;border-color:rgba(231, 231, 231, var(--tw-border-opacity));--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;letter-spacing:.25pt">Any constant expression whose value is true<o:p></o:p></span></li><li class="MsoNormal" style="color:#333333;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l2 level2 lfo3;background:white;box-sizing: border-box;--tw-border-opacity: 1;border-color:rgba(231, 231, 231, var(--tw-border-opacity));--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;letter-spacing:.25pt">Any boolean expression that always evaluates to true<o:p></o:p></span></li></ul>
</ul>
<ul type="disc">
<li class="MsoNormal" style="color:#333333;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l2 level1 lfo3;background:white;box-sizing: border-box;--tw-border-opacity: 1;border-color:rgba(231, 231, 231, var(--tw-border-opacity));--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;letter-spacing:.25pt">This treatment has no equivalent with guards that are false. Considering guards that “have the value true” as a branch that is always taken feels akin to how constant expressions
are handled in while loops, whilst </span><code><span style="font-size:10.0pt;font-family:Consolas;letter-spacing:.25pt">while (false)</span></code><span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;letter-spacing:.25pt"> always fails to compile
as it results in the body to be unreachable. However, when the guard is false, the resultant behavior mirrors a traditional if, where it considers the body to still be reachable, even though they can never get executed.<o:p></o:p></span></li></ul>
<h3 style="mso-margin-top-alt:18.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;--tw-border-opacity: 1;border-color:rgba(231, 231, 231, var(--tw-border-opacity));--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="Null-labels">
<span style="font-size:14.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt">Null labels<o:p></o:p></span></h3>
<p class="part" style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;--tw-border-opacity: 1;border-color:rgba(231, 231, 231, var(--tw-border-opacity));--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt">I wasn’t sure whether this was an issue at first, but after looking at the spec again and realizing I misinterpreted part of the spec, I’m very unsure about
whether the compiler is technically following the spec or not; nonetheless, it’s very counterintuitive to me. (This section is a bit more ‘ranty’ than I’d like, but it’s getting late, and I keep discovering new weird unexpected cases while typing)<o:p></o:p></span></p>
<p class="part" style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;--tw-border-opacity: 1;border-color:rgba(231, 231, 231, var(--tw-border-opacity));--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt">Let’s look at some examples.<o:p></o:p></span></p>
<pre style="background:#F7F7F7;box-sizing: border-box;--tw-border-opacity: 1;border:inherit !important;--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;overflow-wrap: normal;border-radius: 3px;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;overflow:auto;word-spacing:0px"><span class="token"><span style="font-family:Consolas;color:slategray;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">// example 1</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">switch</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">(</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">o</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">)</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">{</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">case</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">null</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">,</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">String</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> s when s</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">.</span></span><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">length</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">()</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">==</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#990055;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">0</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">-></span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">{</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">System</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">.</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">out</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">.</span></span><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">println</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">(</span></span><span class="token"><span style="font-family:Consolas;color:#669900;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">"o: "</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">+</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> o</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">);</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">}</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">...</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">}</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<p class="part" style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;--tw-border-opacity: 1;border-color:rgba(231, 231, 231, var(--tw-border-opacity));--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt">I was very surprised when this gave me a npe when getting the length,<br>
as I assumed that the guard would only be evaluated when the pattern matched,<br>
and didn’t expect the null to fall through to the guard.<o:p></o:p></span></p>
<p class="part" style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;--tw-border-opacity: 1;border-color:rgba(231, 231, 231, var(--tw-border-opacity));--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt">So I tested the following:<o:p></o:p></span></p>
<pre style="background:#F7F7F7;box-sizing: border-box;--tw-border-opacity: 1;border:inherit !important;--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;overflow-wrap: normal;border-radius: 3px;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;overflow:auto;word-spacing:0px"><span class="token"><span style="font-family:Consolas;color:slategray;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">// example 2</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">switch</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">(</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">o</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">)</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">{</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">case</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">String</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> s when s</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">.</span></span><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">length</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">()</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">==</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#990055;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">0</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">,</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">null</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">-></span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">{</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">System</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">.</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">out</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">.</span></span><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">println</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">(</span></span><span class="token"><span style="font-family:Consolas;color:#669900;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">"o: "</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">+</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> o</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">);</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">}</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">...</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">}</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<p class="part" style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;--tw-border-opacity: 1;border-color:rgba(231, 231, 231, var(--tw-border-opacity));--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt">This still throws an npe. This where I decided to check the spec in depth again.<o:p></o:p></span></p>
<blockquote style="border:none;border-left:solid #DDDDDD 3.0pt;padding:0cm 0cm 0cm 12.0pt;margin-left:0cm;margin-right:0cm;margin-bottom:12.0pt;box-sizing: border-box;--tw-border-opacity: 1;--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<p style="margin:0cm;background:white;box-sizing: border-box;--tw-border-opacity: 1;border-color:rgba(231, 231, 231, var(--tw-border-opacity));--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#777777;letter-spacing:.25pt">If the resulting transformed case label has both a null case element and a pattern<br>
case element p where p is a pattern declaring a pattern variable x of type U,<br>
then p is replaced with an any pattern that declares x of type U (14.30.1).<o:p></o:p></span></p>
</blockquote>
<p class="part" style="margin:0cm;background:white;box-sizing: border-box;--tw-border-opacity: 1;border-color:rgba(231, 231, 231, var(--tw-border-opacity));--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt">This explains the second case, even though the </span><code><span style="font-size:10.0pt;font-family:Consolas;color:#333333;letter-spacing:.25pt">null</span></code><span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt"> label
appears after.<br>
Let’s use </span><code><span style="font-size:10.0pt;font-family:Consolas;color:#333333;letter-spacing:.25pt">String? s</span></code><span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt"> as a notation for an any
pattern. The way I see the translation of the second example is like this:<o:p></o:p></span></p>
<pre style="background:#F7F7F7;box-sizing: border-box;--tw-border-opacity: 1;border:inherit !important;--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;overflow-wrap: normal;border-radius: 3px;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;overflow:auto;word-spacing:0px"><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">switch</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">(</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">o</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">)</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">{</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">case</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">String</span></span><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">?</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> s when s</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">.</span></span><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">length</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">()</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">==</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#990055;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">0</span></span><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">:</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">case</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">null</span></span><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">:</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">{</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">System</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">.</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">out</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">.</span></span><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">println</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">(</span></span><span class="token"><span style="font-family:Consolas;color:#669900;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">"o: "</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">+</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> o</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">);</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">break</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">;</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">}</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">...</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">}</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<p class="part" style="margin:0cm;background:white;box-sizing: border-box;--tw-border-opacity: 1;border-color:rgba(231, 231, 231, var(--tw-border-opacity));--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt">I’m keeping the </span><code><span style="font-size:10.0pt;font-family:Consolas;color:#333333;letter-spacing:.25pt">case null</span></code><span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt"> here
cause the spec doesn’t mention this getting removed, which seems like a mistake to me cause it implies that the first example gets<br>
translated as this:<o:p></o:p></span></p>
<pre style="background:#F7F7F7;box-sizing: border-box;--tw-border-opacity: 1;border:inherit !important;--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;overflow-wrap: normal;border-radius: 3px;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;overflow:auto;word-spacing:0px"><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">switch</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">(</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">o</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">)</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">{</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">case</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">null</span></span><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">:</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> <o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">case</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">String</span></span><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">?</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> s when s</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">.</span></span><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">length</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">()</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">==</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#990055;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">0</span></span><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">:</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">{</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">System</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">.</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">out</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">.</span></span><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">println</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">(</span></span><span class="token"><span style="font-family:Consolas;color:#669900;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">"o: "</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">+</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> o</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">);</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">break</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">;</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">}</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">...</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">}</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<p class="part" style="margin:0cm;background:white;box-sizing: border-box;--tw-border-opacity: 1;border-color:rgba(231, 231, 231, var(--tw-border-opacity));--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt">where </span><code><span style="font-size:10.0pt;font-family:Consolas;color:#333333;letter-spacing:.25pt">case null</span></code><span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt"> would
match null first and therefore </span><code><span style="font-size:10.0pt;font-family:Consolas;color:#333333;letter-spacing:.25pt">String? s</span></code><span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt"> wouldn’t
match the null.<o:p></o:p></span></p>
<p class="part" style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;--tw-border-opacity: 1;border-color:rgba(231, 231, 231, var(--tw-border-opacity));--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt">These 2 translations bring up the question: what if there are 2 case labels, one of<br>
which is null?<o:p></o:p></span></p>
<pre style="background:#F7F7F7;box-sizing: border-box;--tw-border-opacity: 1;border:inherit !important;--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;overflow-wrap: normal;border-radius: 3px;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;overflow:auto;word-spacing:0px"><span class="token"><span style="font-family:Consolas;color:slategray;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">// Example 3</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">switch</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">(</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">o</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">)</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">{</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">case</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">String</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> s when s</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">.</span></span><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">length</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">()</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">==</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#990055;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">0</span></span><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">:</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">case</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">null</span></span><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">:</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">{</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">System</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">.</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">out</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">.</span></span><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">println</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">(</span></span><span class="token"><span style="font-family:Consolas;color:#669900;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">"o: "</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">+</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> o</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">);</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">break</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">;</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">}</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">...</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">}</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<p class="part" style="margin:0cm;background:white;box-sizing: border-box;--tw-border-opacity: 1;border-color:rgba(231, 231, 231, var(--tw-border-opacity));--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt">Example 3 still throws an NPE when given null. This, just blew my mind, and I think this behavior is even wrong according to the spec. The spec mentions that
if a <strong><span style="font-family:"Segoe UI",sans-serif">case label</span></strong> contains both a null case label element and a pattern case element, the pattern<br>
gets converted to a any pattern. However in this example there are 2 separate <strong><span style="font-family:"Segoe UI",sans-serif">case labels</span></strong> (but only one switch label). Note that adding a single </span><code><span style="font-size:10.0pt;font-family:Consolas;color:#333333;letter-spacing:.25pt">;</span></code><span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt"><br>
after the first </span><code><span style="font-size:10.0pt;font-family:Consolas;color:#333333;letter-spacing:.25pt">:</span></code><span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt"> results in a variant that
does work as expected, most likely<br>
cause they are now 2 separate <strong><span style="font-family:"Segoe UI",sans-serif">switch labels</span></strong>.<o:p></o:p></span></p>
<p class="part" style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;--tw-border-opacity: 1;border-color:rgba(231, 231, 231, var(--tw-border-opacity));--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt">One last example:<o:p></o:p></span></p>
<pre style="background:#F7F7F7;box-sizing: border-box;--tw-border-opacity: 1;border:inherit !important;--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;overflow-wrap: normal;border-radius: 3px;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;overflow:auto;word-spacing:0px"><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">static</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">void</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">example4</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">(</span></span><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">Object</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> a</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">,</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">Object</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> b</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">)</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">{</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">switch</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">(</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">a</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">)</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">{</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">case</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">null</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">,</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">String</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> s when </span></code><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">Objects</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">.</span></span><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">equal</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">(</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">s</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">,</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> b</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">)</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">-></span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">{</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">System</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">.</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">out</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">.</span></span><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">println</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">(</span></span><span class="token"><span style="font-family:Consolas;color:#669900;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">"a & b: "</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">+</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> s</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">);</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">}</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">case</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">null</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">-></span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">{</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">System</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">.</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">out</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">.</span></span><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">println</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">(</span></span><span class="token"><span style="font-family:Consolas;color:#669900;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">"a is NULL, but b isn't"</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">);</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">}</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">default</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">-></span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">{</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">System</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">.</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">out</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">.</span></span><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">println</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">(</span></span><span class="token"><span style="font-family:Consolas;color:#669900;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">"Objects: "</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">+</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> a </span></code><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">+</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#669900;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">", "</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">+</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> b</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">);</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">}</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">}</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">}</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<p class="part" style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;--tw-border-opacity: 1;border-color:rgba(231, 231, 231, var(--tw-border-opacity));--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt">This fails to compile, citing a “duplicate case label”, however I can’t find anything in the spec that disallows 2 null cases in the same switch, even without
the guard. The closest thing I see is:<o:p></o:p></span></p>
<blockquote style="border:none;border-left:solid #DDDDDD 3.0pt;padding:0cm 0cm 0cm 12.0pt;margin-left:0cm;margin-right:0cm;margin-bottom:12.0pt;box-sizing: border-box;--tw-border-opacity: 1;--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<p style="margin:0cm;background:white;box-sizing: border-box;--tw-border-opacity: 1;border-color:rgba(231, 231, 231, var(--tw-border-opacity));--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#777777;letter-spacing:.25pt">A switch label that supports a case constant dominates another<br>
switch label supporting the same case constant.<o:p></o:p></span></p>
</blockquote>
<p class="part" style="margin:0cm;background:white;box-sizing: border-box;--tw-border-opacity: 1;border-color:rgba(231, 231, 231, var(--tw-border-opacity));--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<code><span style="font-size:10.0pt;font-family:Consolas;color:#333333;letter-spacing:.25pt">null</span></code><span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt">, however, is not considered a case constant -
as the guard is acting on the null case, it means the second null case shouldn’t be dominated by the first one. Perhpas should be a rule that doesn’t allow this, but nothing in the current spec should disallow this, even though javac does, in fact, disallow
it.<o:p></o:p></span></p>
<h3 style="mso-margin-top-alt:18.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;--tw-border-opacity: 1;border-color:rgba(231, 231, 231, var(--tw-border-opacity));--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="Definite-assignment">
<span style="font-size:14.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt">Definite assignment<o:p></o:p></span></h3>
<p class="part" style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;--tw-border-opacity: 1;border-color:rgba(231, 231, 231, var(--tw-border-opacity));--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt">It seems the part on definite assignment doesn’t take into account the possible assignments in the guard of switch cases.<o:p></o:p></span></p>
<p class="part" style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;--tw-border-opacity: 1;border-color:rgba(231, 231, 231, var(--tw-border-opacity));--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt">I thought this was gonna be a small thing to fix as javac seemed to behave as expected despite the specification, but then I noticed something else and ended
up writing a some code where I was able to reassign a final var.<o:p></o:p></span></p>
<h4 style="mso-margin-top-alt:18.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;--tw-border-opacity: 1;border-color:rgba(231, 231, 231, var(--tw-border-opacity));--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="Issue-1">
<span style="font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt">Issue 1:</span><span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt"><o:p></o:p></span></h4>
<blockquote style="border:none;border-left:solid #DDDDDD 3.0pt;padding:0cm 0cm 0cm 12.0pt;margin-left:0cm;margin-right:0cm;margin-bottom:12.0pt;box-sizing: border-box;--tw-border-opacity: 1;--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<ul type="disc">
<li class="MsoNormal" style="color:#777777;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo4;background:white;box-sizing: border-box;--tw-border-opacity: 1;border-color:rgba(231, 231, 231, var(--tw-border-opacity));--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;letter-spacing:.25pt">V is [un]assigned before the switch rule expression, switch rule block, or switch rule throw statement introduced by a switch rule in the switch block iff V is [un]assigned
after the selector expression of the switch statement.<o:p></o:p></span></li><li class="MsoNormal" style="color:#777777;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo4;background:white;box-sizing: border-box;--tw-border-opacity: 1;border-color:rgba(231, 231, 231, var(--tw-border-opacity));--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;letter-spacing:.25pt">V is [un]assigned before the first block statement of a switch labeled statement group in the switch block iff both of the following are true:<o:p></o:p></span></li></ul>
<ul type="disc">
<ul type="circle">
<li class="MsoNormal" style="color:#777777;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l1 level2 lfo4;background:white;box-sizing: border-box;--tw-border-opacity: 1;border-color:rgba(231, 231, 231, var(--tw-border-opacity));--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;letter-spacing:.25pt">V is [un]assigned after the selector expression of the switch statement.<o:p></o:p></span></li><li class="MsoNormal" style="color:#777777;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l1 level2 lfo4;background:white;box-sizing: border-box;--tw-border-opacity: 1;border-color:rgba(231, 231, 231, var(--tw-border-opacity));--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;letter-spacing:.25pt">…<o:p></o:p></span></li></ul>
</ul>
</blockquote>
<p class="part" style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;--tw-border-opacity: 1;border-color:rgba(231, 231, 231, var(--tw-border-opacity));--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt">If the case is guarded, this shouldn’t be checking the assignment status after the selector expression, but after the guard expression when true.<o:p></o:p></span></p>
<p class="part" style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;--tw-border-opacity: 1;border-color:rgba(231, 231, 231, var(--tw-border-opacity));--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt">It seems javac already does this.<o:p></o:p></span></p>
<h4 style="mso-margin-top-alt:18.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;--tw-border-opacity: 1;border-color:rgba(231, 231, 231, var(--tw-border-opacity));--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="Issue-2">
<span style="font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt">Issue 2:</span><span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt"><o:p></o:p></span></h4>
<p class="part" style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;--tw-border-opacity: 1;border-color:rgba(231, 231, 231, var(--tw-border-opacity));--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt">The naive assumption, which javac seems to be using, is that a variable V is [un]assigned before a guard expression iff it is [un]assigned after the selector
expression. This however is not correct. See the following snippet:<o:p></o:p></span></p>
<pre style="background:#F7F7F7;box-sizing: border-box;--tw-border-opacity: 1;border:inherit !important;--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;overflow-wrap: normal;border-radius: 3px;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;overflow:auto;word-spacing:0px"><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">public</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">class</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> test </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">{</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">static</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">void</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">test</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">(</span></span><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">Object</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> o</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">)</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">{</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">final</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">String</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> res</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">;</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">switch</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">(</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">o</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">)</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">{</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">case</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">String</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> s when </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">(</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">res </span></code><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">=</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> s</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">)</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">!=</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">null</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">&&</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">log</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">(</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">res</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">)</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">&&</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> s</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">.</span></span><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">length</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">()</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">></span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#990055;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">3</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">-></span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">{</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">System</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">.</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">out</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">.</span></span><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">println</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">(</span></span><span class="token"><span style="font-family:Consolas;color:#669900;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">"res: "</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">+</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> res</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">);</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">}</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">case</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">String</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> i when </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">(</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">res </span></code><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">=</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#669900;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">"???"</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">)</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">!=</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">null</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">&&</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">log</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">(</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">res</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">)</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">-></span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">{</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">System</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">.</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">out</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">.</span></span><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">println</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">(</span></span><span class="token"><span style="font-family:Consolas;color:#669900;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">"res: "</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">+</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> res</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">);</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">}</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">default</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">-></span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">{</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">System</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">.</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">out</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">.</span></span><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">println</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">(</span></span><span class="token"><span style="font-family:Consolas;color:#669900;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">"Object: "</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">+</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> o</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">);</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">}</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">}</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">}</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p> </o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">static</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">boolean</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">log</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">(</span></span><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">String</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> res</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">)</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">{</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">System</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">.</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">out</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">.</span></span><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">println</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">(</span></span><span class="token"><span style="font-family:Consolas;color:#669900;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">"res: "</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">+</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> res</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">);</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">return</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#990055;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">true</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">;</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">}</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p> </o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">public</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">static</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">void</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">main</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">(</span></span><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">String</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">[]</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> args</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">){</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">System</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">.</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">out</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">.</span></span><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">println</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">(</span></span><span class="token"><span style="font-family:Consolas;color:#669900;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">"Trial 1: "</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">);</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">test</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">(</span></span><span class="token"><span style="font-family:Consolas;color:#669900;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">"Hello"</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">);</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">System</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">.</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">out</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">.</span></span><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">println</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">(</span></span><span class="token"><span style="font-family:Consolas;color:#669900;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">"Trial 2: "</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">);</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">test</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">(</span></span><span class="token"><span style="font-family:Consolas;color:#669900;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">"Huh"</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">);</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">}</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">}</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<p class="part" style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;--tw-border-opacity: 1;border-color:rgba(231, 231, 231, var(--tw-border-opacity));--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt">Which outputs:<o:p></o:p></span></p>
<pre style="background:#F7F7F7;box-sizing: border-box;--tw-border-opacity: 1;border:inherit !important;--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;overflow-wrap: normal;border-radius: 3px;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;overflow:auto;word-spacing:0px"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">Trial 1:<o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">res: Hello<o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">res: Hello<o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">Trial 2:<o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">res: Huh<o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">res: ???<o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">res: ???<o:p></o:p></span></code></pre>
<p class="part" style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;--tw-border-opacity: 1;border-color:rgba(231, 231, 231, var(--tw-border-opacity));--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt">This code compiles, even though it is reassigning a final var.<o:p></o:p></span></p>
<p class="part" style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;--tw-border-opacity: 1;border-color:rgba(231, 231, 231, var(--tw-border-opacity));--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt">A correct definition for definite (un)assignment in this case would have to take all the pattern cases that could have matched before it into account, and the
maybe also the fact that (some of) those cases could cover all possible pathways to this label, like:<o:p></o:p></span></p>
<pre style="background:#F7F7F7;box-sizing: border-box;--tw-border-opacity: 1;border:inherit !important;--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;overflow-wrap: normal;border-radius: 3px;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;overflow:auto;word-spacing:0px"><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">case</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">A</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> a when </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">(</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">res </span></code><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">=</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#669900;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">"Hi"</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">)</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">==</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">null</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">-></span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">{}</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">case</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">B</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> b when </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">(</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">res </span></code><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">=</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#669900;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">"Hello"</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">)</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">==</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">null</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">-></span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">{}</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">case</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">SealedAOrB</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">-></span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">{</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:slategray;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">// res is now definitely assigned?</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">}</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<div style="mso-element:para-border-div;border:none;border-bottom:solid #EEEEEE 1.0pt;padding:0cm 0cm 4.0pt 0cm;background:white">
<h2 style="mso-margin-top-alt:18.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;border:none;padding:0cm;box-sizing: border-box;--tw-border-opacity: 1;--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="Record-Patterns">
<span style="font-size:16.5pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt">Record Patterns<o:p></o:p></span></h2>
</div>
<h3 style="mso-margin-top-alt:18.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;--tw-border-opacity: 1;border-color:rgba(231, 231, 231, var(--tw-border-opacity));--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="Integer-components">
<span style="font-size:14.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt">Integer components.<o:p></o:p></span></h3>
<p class="part" style="margin:0cm;background:white;box-sizing: border-box;--tw-border-opacity: 1;border-color:rgba(231, 231, 231, var(--tw-border-opacity));--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt">It seems that when accessing </span><code><span style="font-size:10.0pt;font-family:Consolas;color:#333333;letter-spacing:.25pt">int</span></code><span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt"> fields,
it boxes them, to then immediately unbox them again.<o:p></o:p></span></p>
<p class="part" style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;--tw-border-opacity: 1;border-color:rgba(231, 231, 231, var(--tw-border-opacity));--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt">Example<o:p></o:p></span></p>
<pre style="background:#F7F7F7;box-sizing: border-box;--tw-border-opacity: 1;border:inherit !important;--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;overflow-wrap: normal;border-radius: 3px;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;overflow:auto;word-spacing:0px"><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">switch</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">(</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">o</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">)</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">{</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">case</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">Point</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">(</span></span><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">var</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> x</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">,</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">var</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> y</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">)</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">-></span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">System</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">.</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">out</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">.</span></span><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">println</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">(</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">x </span></code><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">+</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> y</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">);</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">...</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<p class="part" style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;--tw-border-opacity: 1;border-color:rgba(231, 231, 231, var(--tw-border-opacity));--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt">compiles into something like:<o:p></o:p></span></p>
<pre style="background:#F7F7F7;box-sizing: border-box;--tw-border-opacity: 1;border:inherit !important;--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;overflow-wrap: normal;border-radius: 3px;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;overflow:auto;word-spacing:0px"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">var1 </span></code><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">=</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> o<o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">switch</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">(</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">indy typeswitch</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">)</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">{</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">case</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#990055;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">0</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">-></span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">{</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">int</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> var5 </span></code><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">=</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> $proxy$</span></code><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">x</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">((</span></span><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">Point</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">)</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> var1</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">);</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">int</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> var3 </span></code><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">=</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">Integer</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">.</span></span><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">valueOf</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">(</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">var5</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">).</span></span><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">intValue</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">();</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> var5 </span></code><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">=</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> $proxy$</span></code><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">y</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">((</span></span><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">Point</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">)</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> var1</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">);</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#0077AA;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">int</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> var4 </span></code><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">=</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">Integer</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">.</span></span><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">valueOf</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">(</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">var5</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">).</span></span><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">intValue</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">();</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> <o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">System</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">.</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">out</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">.</span></span><span class="token"><span style="font-family:Consolas;color:#DD4A68;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">println</span></span><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">(</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">var3 </span></code><span class="token"><span style="font-family:Consolas;color:#9A6E3A;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">+</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> var4</span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">)</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<pre style="background:#F7F7F7"><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"> </span></code><span class="token"><span style="font-family:Consolas;color:#999999;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm">}</span></span><code><span style="font-family:Consolas;color:#333333;letter-spacing:.25pt;border:none windowtext 1.0pt;padding:0cm"><o:p></o:p></span></code></pre>
<p class="part" style="margin:0cm;background:white;box-sizing: border-box;--tw-border-opacity: 1;border-color:rgba(231, 231, 231, var(--tw-border-opacity));--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt">I gave a quick look to the code in </span><code><span style="font-size:10.0pt;font-family:Consolas;color:#333333;letter-spacing:.25pt">TransPattern</span></code><span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt">,
but couldn’t actually find anything about it. Seems like something that gets triggered by accident?<o:p></o:p></span></p>
<p class="part" style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;--tw-border-opacity: 1;border-color:rgba(231, 231, 231, var(--tw-border-opacity));--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt">Hope all of this helps with improving the language!<o:p></o:p></span></p>
<p class="part" style="margin-top:0cm;background:white;box-sizing: border-box;--tw-border-opacity: 1;border-color:rgba(231, 231, 231, var(--tw-border-opacity));--tw-shadow: 0 0 #0000;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt">Greetings<br>
Robbe Pincket<o:p></o:p></span></p>
</div>
<p class="part" style="margin-bottom:12.0pt;background:white"><span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#333333;letter-spacing:.25pt"><o:p> </o:p></span></p>
</div>
</div>
</body>
</html>