@@ -190,6 +190,7 @@ public void visitTypeTest(JCInstanceOf tree) {
190190 syms .objectType
191191 : tree .expr .type ;
192192 VarSymbol prevCurrentValue = currentValue ;
193+ bindingContext = new BasicBindingContext ();
193194 try {
194195 JCExpression translatedExpr = translate (tree .expr );
195196 Symbol exprSym = TreeInfo .symbol (translatedExpr );
@@ -206,16 +207,20 @@ public void visitTypeTest(JCInstanceOf tree) {
206207 }
207208
208209 Type principalType = principalType ((JCPattern ) tree .pattern );
209- result = makeBinary (Tag .AND ,
210- makeTypeTest (make .Ident (currentValue ), make .Type (principalType )),
211- (JCExpression ) this .<JCTree >translate (tree .pattern ));
210+ JCExpression resultExpression =
211+ makeBinary (Tag .AND ,
212+ makeTypeTest (make .Ident (currentValue ), make .Type (principalType )),
213+ (JCExpression ) this .<JCTree >translate (tree .pattern ));
212214 if (currentValue != exprSym ) {
213- result = make .at (tree .pos ).LetExpr (make .VarDef (currentValue , translatedExpr ),
214- (JCExpression )result ).setType (syms .booleanType );
215- ((LetExpr ) result ).needsCond = true ;
215+ resultExpression =
216+ make .at (tree .pos ).LetExpr (make .VarDef (currentValue , translatedExpr ),
217+ resultExpression ).setType (syms .booleanType );
218+ ((LetExpr ) resultExpression ).needsCond = true ;
216219 }
220+ result = bindingContext .decorateExpression (resultExpression );
217221 } finally {
218222 currentValue = prevCurrentValue ;
223+ bindingContext .pop ();
219224 }
220225 } else {
221226 super .visitTypeTest (tree );
0 commit comments