Lower static blocks when static fields are lowered (#2800, #2950, #3025)
This release fixes a bug where esbuild incorrectly did not lower static class blocks when static class fields needed to be lowered. For example, the following code should print 1 2 3 but previously printed 2 1 3 instead due to this bug:
// Original code
class Foo {
static x = console.log(1)
static { console.log(2) }
static y = console.log(3)
}
// Old output (with --supported:class-static-field=false)
class Foo {
static {
console.log(2);
}
}
__publicField(Foo, "x", console.log(1));
__publicField(Foo, "y", console.log(3));
// New output (with --supported:class-static-field=false)
class Foo {
}
__publicField(Foo, "x", console.log(1));
console.log(2);
__publicField(Foo, "y", console.log(3));
Use static blocks to implement --keep-names on classes (#2389)
This change fixes a bug where the name property could previously be incorrect within a class static context when using --keep-names. The problem was that the name property was being initialized after static blocks were run instead of before. This has been fixed by moving the name property initializer into a static block at the top of the class body:
// Original code
if (typeof Foo === 'undefined') {
let Foo = class {
static test = this.name
}
console.log(Foo.test)
}
// Old output (with --keep-names)
if (typeof Foo === "undefined") {
let Foo2 = /* @PURE */ __name(class {
static test = this.name;
}, "Foo");
console.log(Foo2.test);
}
Lower static blocks when static fields are lowered (#2800, #2950, #3025)
This release fixes a bug where esbuild incorrectly did not lower static class blocks when static class fields needed to be lowered. For example, the following code should print 1 2 3 but previously printed 2 1 3 instead due to this bug:
// Original code
class Foo {
static x = console.log(1)
static { console.log(2) }
static y = console.log(3)
}
// Old output (with --supported:class-static-field=false)
class Foo {
static {
console.log(2);
}
}
__publicField(Foo, "x", console.log(1));
__publicField(Foo, "y", console.log(3));
// New output (with --supported:class-static-field=false)
class Foo {
}
__publicField(Foo, "x", console.log(1));
console.log(2);
__publicField(Foo, "y", console.log(3));
Use static blocks to implement --keep-names on classes (#2389)
This change fixes a bug where the name property could previously be incorrect within a class static context when using --keep-names. The problem was that the name property was being initialized after static blocks were run instead of before. This has been fixed by moving the name property initializer into a static block at the top of the class body:
// Original code
if (typeof Foo === 'undefined') {
let Foo = class {
static test = this.name
}
console.log(Foo.test)
}
// Old output (with --keep-names)
if (typeof Foo === "undefined") {
let Foo2 = /* @PURE */ __name(class {
static test = this.name;
}, "Foo");
console.log(Foo2.test);
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Bumps github.com/evanw/esbuild from 0.18.1 to 0.18.2.
Release notes
Sourced from github.com/evanw/esbuild's releases.
... (truncated)
Changelog
Sourced from github.com/evanw/esbuild's changelog.
... (truncated)
Commits
a7a9096
publish 0.18.2 to npmd5b317a
fix #2389: use a static block for--keep-names
fb38ef6
inline static blocks that are all expressions8bdc589
useX
instead of✘
in expected logs on windowsb76b433
ignore uglify failure about default arugment tdz70e59c3
run more class lowering tests with bundling onc12cc90
fix #2800, fix #2950, fix #3025:static
blocksa1a1e44
auto-annotate pure iife expressionsDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)