Skip to content

Statement simplified into const switch condition is eliminated as dead code #880

@vermie

Description

@vermie

Input Code

(function () {
    var CONST_CASE_1 = 1,
        CONST_CASE_2 = 2,
        CONST_CASE_3 = 3;
        
    var CONST_VALUE = CONST_CASE_2;

    console.log('before switch');

    switch (CONST_VALUE) {
        case CONST_CASE_1:
            console.log('case 1');
            break;
            
        case CONST_CASE_2:
            console.log('case 2');
            break;
            
        case CONST_CASE_3:
        default:
            console.log('case 3');
            break;
    }

    console.log('after switch');
})();

Actual Output

case 2
after switch

Expected Output

before switch
case 2
after switch

Configuration

Using these packages:

"babel-core": "~6.26.0"
"babel-preset-env": "~1.6.1"
"babel-preset-minify": "~0.3.0"

Enable deadcode in .babelrc

{
    "presets": [
        ["minify", {
            "booleans": false,
            "builtIns": false,
            "consecutiveAdds": false,
            "deadcode": true,
            "evaluate": false,
            "flipComparisons": false,
            "guards": false,
            "infinity": false,
            "mangle": false,
            "memberExpressions": false,
            "mergeVars": false,
            "numericLiterals": false,
            "propertyLiterals": false,
            "regexpConstructors": false,
            "removeConsole": false,
            "removeDebugger": false,
            "removeUndefined": false,
            "replace": false,
            "simplify": false,
            "simplifyComparisons": false,
            "typeConstructors": false,
            "undefinedToVoid": false
        }]
    ]
}

Or enable deadcode and simplify in babel-cli:

babel repro.js --out-file repro.min.js --no-babelrc --plugins=minify-dead-code-elimination,minify-simplify

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugConfirmed bug

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions