< prev index next >

src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransPatterns.java

Print this page
rev 57740 : [mq]: 8237528

@@ -168,12 +168,15 @@
 
             VarSymbol bindingVar = bindingContext.bindingDeclared(patt.symbol);
             if (bindingVar != null) { //TODO: cannot be null here?
                 JCAssign fakeInit = (JCAssign)make.at(tree.pos).Assign(
                         make.Ident(bindingVar), convert(make.Ident(temp), castTargetType)).setType(bindingVar.erasure(types));
-                result = makeBinary(Tag.AND, (JCExpression)result,
-                        makeBinary(Tag.EQ, fakeInit, convert(make.Ident(temp), castTargetType)));
+                LetExpr nestedLE = make.LetExpr(List.of(make.Exec(fakeInit)),
+                                                make.Literal(true));
+                nestedLE.needsCond = true;
+                nestedLE.setType(syms.booleanType);
+                result = makeBinary(Tag.AND, (JCExpression)result, nestedLE);
             }
             result = make.at(tree.pos).LetExpr(make.VarDef(temp, translatedExpr), (JCExpression)result).setType(syms.booleanType);
             ((LetExpr) result).needsCond = true;
         } else {
             super.visitTypeTest(tree);
< prev index next >