52 import java.util.Deque; |
52 import java.util.Deque; |
53 import java.util.HashSet; |
53 import java.util.HashSet; |
54 import java.util.Iterator; |
54 import java.util.Iterator; |
55 import java.util.List; |
55 import java.util.List; |
56 import java.util.Set; |
56 import java.util.Set; |
57 |
|
58 import jdk.nashorn.internal.codegen.types.Type; |
57 import jdk.nashorn.internal.codegen.types.Type; |
59 import jdk.nashorn.internal.ir.AccessNode; |
58 import jdk.nashorn.internal.ir.AccessNode; |
60 import jdk.nashorn.internal.ir.BinaryNode; |
59 import jdk.nashorn.internal.ir.BinaryNode; |
61 import jdk.nashorn.internal.ir.Block; |
60 import jdk.nashorn.internal.ir.Block; |
62 import jdk.nashorn.internal.ir.CallNode; |
61 import jdk.nashorn.internal.ir.CallNode; |
341 |
340 |
342 start(catchNode); |
341 start(catchNode); |
343 catchNestingLevel++; |
342 catchNestingLevel++; |
344 |
343 |
345 // define block-local exception variable |
344 // define block-local exception variable |
346 final Symbol def = defineSymbol(block, exception.getName(), IS_VAR | IS_LET | IS_ALWAYS_DEFINED); |
345 final String exname = exception.getName(); |
|
346 final Symbol def = defineSymbol(block, exname, IS_VAR | IS_LET | IS_ALWAYS_DEFINED); |
347 newType(def, Type.OBJECT); //we can catch anything, not just ecma exceptions |
347 newType(def, Type.OBJECT); //we can catch anything, not just ecma exceptions |
348 |
348 |
349 addLocalDef(exception.getName()); |
349 addLocalDef(exname); |
350 |
350 |
351 return true; |
351 return true; |
352 } |
352 } |
353 |
353 |
354 @Override |
354 @Override |