From: aclement Date: Thu, 4 Dec 2008 23:41:16 +0000 (+0000) Subject: 162135: test and fix X-Git-Tag: V1_6_3rc1~57 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=7147c4a3650bc6ea608bce40363df2e79f5ddca5;p=aspectj.git 162135: test and fix --- diff --git a/weaver/src/org/aspectj/weaver/bcel/BcelRenderer.java b/weaver/src/org/aspectj/weaver/bcel/BcelRenderer.java index 5b8efc31b..b55d00545 100644 --- a/weaver/src/org/aspectj/weaver/bcel/BcelRenderer.java +++ b/weaver/src/org/aspectj/weaver/bcel/BcelRenderer.java @@ -192,7 +192,7 @@ public final class BcelRenderer implements ITestVisitor, IExprVisitor { public void visit(Literal literal) { if (literal == Literal.FALSE) - throw new BCException("bad"); + throw new BCException("visiting a false expression"); } public void visit(Call call) { @@ -204,7 +204,15 @@ public final class BcelRenderer implements ITestVisitor, IExprVisitor { for (int i = 0, len = args.length; i < len; i++) { // XXX only correct for static method calls Type desiredType = BcelWorld.makeBcelType(method.getParameterTypes()[i]); - callIl.append(renderExpr(fact, world, args[i], desiredType)); + Expr arg = args[i]; + // if arg is null it is because we couldn't bind it properly, for example see 162135 + if (arg == null) { + InstructionList iList = new InstructionList(); + iList.append(InstructionFactory.createNull(desiredType)); + callIl.append(iList); + } else { + callIl.append(renderExpr(fact, world, arg, desiredType)); + } } // System.out.println("rendered args: " + callIl); callIl.append(Utility.createInvoke(fact, world, method));