Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin' into regex-modifiers
Browse files Browse the repository at this point in the history
  • Loading branch information
leaysgur committed Oct 10, 2024
2 parents 55942a7 + c5deb32 commit 02bff7a
Show file tree
Hide file tree
Showing 9 changed files with 1,433 additions and 135 deletions.
141 changes: 141 additions & 0 deletions crates/oxc_minifier/src/ast_passes/collapse_variable_declarations.rs
Original file line number Diff line number Diff line change
Expand Up @@ -129,4 +129,145 @@ mod test {
",
);
}

#[test]
#[ignore]
fn test_collapsing() {
// Basic collapsing
test("var a;var b;", "var a,b;");

// With initial values
test("var a = 1;var b = 1;", "var a=1,b=1;");

// Already collapsed
test_same("var a, b;");

// Already collapsed with values
test_same("var a = 1, b = 1;");

// Some already collapsed
test("var a;var b, c;var d;", "var a,b,c,d;");

// Some already collapsed with values
test("var a = 1;var b = 2, c = 3;var d = 4;", "var a=1,b=2,c=3,d=4;");

test(
"var x = 2; foo(x); x = 3; x = 1; var y = 2; var z = 4; x = 5",
"var x = 2; foo(x); x = 3; x = 1; var y = 2, z = 4; x = 5",
);
}

#[test]
fn test_issue820() {
// Don't redeclare function parameters, this is incompatible with
// strict mode.
test_same("function f(a){ var b=1; a=2; var c; }");
}

#[test]
fn test_if_else_var_declarations() {
test_same("if (x) var a = 1; else var b = 2;");
}

#[test]
fn test_aggressive_redeclaration_in_for() {
test_same("for(var x = 1; x = 2; x = 3) {x = 4}");
test_same("for(var x = 1; y = 2; z = 3) {var a = 4}");
test_same("var x; for(x = 1; x = 2; z = 3) {x = 4}");
}

#[test]
#[ignore]
fn test_issue397() {
test_same("var x; x = 5; var z = 7;");
test("var x; var y = 3; x = 5;", "var x, y = 3; x = 5;");
test("var a = 1; var x; var y = 3; x = 5;", "var a = 1, x, y = 3; x = 5;");
test("var x; var y = 3; x = 5; var z = 7;", "var x, y = 3; x = 5; var z = 7;");
}

#[test]
fn test_arguments_assignment() {
test_same("function f() {arguments = 1;}");
}

// ES6 Tests
#[test]
#[ignore]
fn test_collapsing_let_const() {
// Basic collapsing
test("let a;let b;", "let a,b;");

// With initial values
test("const a = 1;const b = 1;", "const a=1,b=1;");

// Already collapsed
test_same("let a, b;");

// Already collapsed with values
test_same("let a = 1, b = 1;");

// Some already collapsed
test("let a;let b, c;let d;", "let a,b,c,d;");

// Some already collapsed with values
test("let a = 1;let b = 2, c = 3;let d = 4;", "let a=1,b=2,c=3,d=4;");

// Different variable types
test_same("let a = 1; const b = 2;");
}

#[test]
fn test_if_else_var_declarations_let() {
test_same("if (x) { let a = 1; } else { let b = 2; }");
}

#[test]
fn test_aggressive_redeclaration_of_let_in_for() {
test_same("for(let x = 1; x = 2; x = 3) {x = 4}");
test_same("for(let x = 1; y = 2; z = 3) {let a = 4}");
test_same("let x; for(x = 1; x = 2; z = 3) {x = 4}");
}

#[test]
#[ignore]
fn test_redeclaration_let_in_function() {
test(
"function f() { let x = 1; let y = 2; let z = 3; x + y + z; }",
"function f() { let x = 1, y = 2, z = 3; x + y + z; } ",
);

// recognize local scope version of x
test(
"var x = 1; function f() { let x = 1; let y = 2; x + y; }",
"var x = 1; function f() { let x = 1, y = 2; x + y } ",
);

// do not redeclare function parameters
// incompatible with strict mode
test_same("function f(x) { let y = 3; x = 4; x + y; }");
}

#[test]
#[ignore]
fn test_arrow_function() {
test("() => {let x = 1; let y = 2; x + y; }", "() => {let x = 1, y = 2; x + y; }");

// do not redeclare function parameters
// incompatible with strict mode
test_same("(x) => {x = 4; let y = 2; x + y; }");
}

#[test]
fn test_uncollapsable_declarations() {
test_same("let x = 1; var y = 2; const z = 3");
test_same("let x = 1; var y = 2; let z = 3;");
}

#[test]
#[ignore]
fn test_mixed_declaration_types() {
// lets, vars, const declarations consecutive
test("let x = 1; let z = 3; var y = 2;", "let x = 1, z = 3; var y = 2;");
test("let x = 1; let y = 2; var z = 3; var a = 4;", "let x = 1, y = 2; var z = 3, a = 4");
}
}

This file was deleted.

Loading

0 comments on commit 02bff7a

Please sign in to comment.