Zhou Renjian - 2009-01-19

It is a bug in the compiler. Compiler should unbox the expression "!b" into "!b.booleanValue()".

"if (b) {}" is compiled correctly into "if (b.booleanValue()) {}".

The bug lies in ASTKeywordVisitor, line 830:
public boolean visit(PrefixExpression node) {
and ASTScriptVisitor, line 1648:
public boolean visit(SimpleName node) {
There should be some lines checking "exp.resolveUnboxing()", similar as in ASTTigerVisitor line 62.