Google 闭包编译器不会删除标有@define 注释的无法访问的代码

Google closure compiler doesn't remove unreachable code marked with @define annotation

为什么此代码在使用 SIMPLE_OPTIMIZATIONS

编译后不会生成空字符串
/**
 * @define {boolean}
 */
var TEST = false;
(function() {
    if (TEST) {
        foo();
    }
})();

相反,我得到了以下信息?

var TEST=!1;(function(){TEST&&foo()})();

无法访问 if 但闭包编译器不会删除代码。
使用 "advanced optimizations" 结果是我所期望的(空)但是 "simple optimizations" 给出了上述结果。为什么会有这种差异?在这两种情况下都不会执行代码。

编辑:
如果我删除闭包,if 块也会被删除。为什么关闭后不会发生这种情况?

我相信如果使用 "advanced optimizations"

它会被删除