private ExceptionConsumer createExceptionConsumer(MethodDependency methodDep, BasicBlockReader block) { List<? extends TryCatchBlockReader> tryCatchBlocks = block.readTryCatchBlocks(); ClassReader[] exceptions = new ClassReader[tryCatchBlocks.size()]; DependencyNode[] vars = new DependencyNode[tryCatchBlocks.size()]; for (int i = 0; i < tryCatchBlocks.size(); ++i) { TryCatchBlockReader tryCatch = tryCatchBlocks.get(i); if (tryCatch.getExceptionType() != null) { exceptions[i] = dependencyAnalyzer.getClassSource().get(tryCatch.getExceptionType()); } if (tryCatch.getHandler().getExceptionVariable() != null) { vars[i] = methodDep.getVariable(tryCatch.getHandler().getExceptionVariable().getIndex()); } } return new ExceptionConsumer(dependencyAnalyzer, exceptions, vars, methodDep); }
private ExceptionConsumer createExceptionConsumer(MethodDependency methodDep, BasicBlockReader block) { List<? extends TryCatchBlockReader> tryCatchBlocks = block.readTryCatchBlocks(); ClassReader[] exceptions = new ClassReader[tryCatchBlocks.size()]; DependencyNode[] vars = new DependencyNode[tryCatchBlocks.size()]; for (int i = 0; i < tryCatchBlocks.size(); ++i) { TryCatchBlockReader tryCatch = tryCatchBlocks.get(i); if (tryCatch.getExceptionType() != null) { exceptions[i] = dependencyChecker.getClassSource().get(tryCatch.getExceptionType()); } if (tryCatch.getHandler().getExceptionVariable() != null) { vars[i] = methodDep.getVariable(tryCatch.getHandler().getExceptionVariable().getIndex()); } } return new ExceptionConsumer(dependencyChecker, exceptions, vars, methodDep); }
@Override public void nullCheck(VariableReader receiver, VariableReader value) { DependencyNode valueNode = nodes[value.getIndex()]; DependencyNode receiverNode = nodes[receiver.getIndex()]; valueNode.connect(receiverNode); dependencyChecker.linkMethod(new MethodReference(NullPointerException.class, "<init>", void.class), new CallLocation(caller.getMethod(), currentLocation)).use(); currentExceptionConsumer.consume(dependencyChecker.getType("java.lang.NullPointerException")); }
@Override public void nullCheck(VariableReader receiver, VariableReader value) { super.nullCheck(receiver, value); currentExceptionConsumer.consume(dependencyAnalyzer.getType("java.lang.NullPointerException")); }