v0.15.11
-
Fix various edge cases regarding template tags and
this
(#2610)This release fixes some bugs where the value of
this
wasn't correctly preserved when evaluating template tags in a few edge cases. These edge cases are listed below:async function test() { class Foo { foo() { return this } } class Bar extends Foo { a = async () => super.foo`` b = async () => super['foo']`` c = async (foo) => super[foo]`` } function foo() { return this } const obj = { foo } const bar = new Bar console.log( (await bar.a()) === bar, (await bar.b()) === bar, (await bar.c('foo')) === bar, { foo }.foo``.foo === foo, (true && obj.foo)`` !== obj, (false || obj.foo)`` !== obj, (null ?? obj.foo)`` !== obj, ) } test()
Each edge case in the code above previously incorrectly printed
false
when run through esbuild with--minify --target=es6
but now correctly printstrue
. These edge cases are unlikely to have affected real-world code.