PS:因为最近很忙,好久没有更新 Blog 了。
最近发现了一个 mxmlc 编译器的 BUG,当含有 -(true ? 1 : 0)
的代码编译会出错。
比如以下代码:
package {
import flash.display.Sprite;
public class TestBUG extends Sprite {
public function TestBUG() {
trace('Test');
var foo:Number = -(true ? 1 : 0);
}
}
}
使用 mxmlc 编译时会弹出错误:
Error: null java.lang.NullPointerException at macromedia.asc.semantics.ConstantEvaluator.evaluate(ConstantEvaluator.java:1168) at macromedia.asc.parser.UnaryExpressionNode.evaluate(UnaryExpressionNode.java:33) at macromedia.asc.semantics.ConstantEvaluator.evaluate(ConstantEvaluator.java:1805) ......
但把 -(true ? 1 : 0)
的 -
号去掉后编译却可以正常进行,真奇怪!
影响的版本:
- 2.0
- 2.0.1
- 3.0.0
1 条评论:
Your blog was very useful to me. I encountered same error message. I found the resolution.
Don't modify the result of a ternary operation.
Use below two sentences,
var foo:Number = true ? 1 : 0;
foo = -foo;
instead of your below syntax.
var foo:Number = -(true ? 1 : 0);
发表评论