Browse Source

162135: test and fix

tags/V1_6_3rc1
aclement 15 years ago
parent
commit
7147c4a365
1 changed files with 10 additions and 2 deletions
  1. 10
    2
      weaver/src/org/aspectj/weaver/bcel/BcelRenderer.java

+ 10
- 2
weaver/src/org/aspectj/weaver/bcel/BcelRenderer.java View File

@@ -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));

Loading…
Cancel
Save