Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Avoid unnecessary ASI in output #3547

Open
guybedford opened this issue May 9, 2020 · 2 comments
Open

Avoid unnecessary ASI in output #3547

guybedford opened this issue May 9, 2020 · 2 comments

Comments

@guybedford
Copy link
Contributor

guybedford commented May 9, 2020

Feature Use Case

One of the great features of Rollup is the way it uses magic string to retain the original source code formatting.

It seems there is some automatic semicolon insertion though that is affecting this process.

For example, notice how Preact built with Rollup inserts semicolons in the code even where it is untouched by Rollup optimization (the first semicolon is after the removeChild(n) expression):

http://rollupjs.org/repl/?version=2.8.2&shareable=JTdCJTIybW9kdWxlcyUyMiUzQSU1QiU3QiUyMm5hbWUlMjIlM0ElMjJtYWluLmpzJTIyJTJDJTIyY29kZSUyMiUzQSUyMnZhciUyMG4lMkNsJTJDdSUyQ2klMkN0JTJDciUyQ28lMkNmJTJDZSUzRCU3QiU3RCUyQ2MlM0QlNUIlNUQlMkNzJTNEJTJGYWNpdCU3Q2V4KCUzRiUzQXMlN0NnJTdDbiU3Q3AlN0MlMjQpJTdDcnBoJTdDZ3JpZCU3Q293cyU3Q21uYyU3Q250dyU3Q2luZSU1QmNoJTVEJTdDem9vJTdDJTVFb3JkJTJGaSUzQmZ1bmN0aW9uJTIwYShuJTJDbCklN0Jmb3IodmFyJTIwdSUyMGluJTIwbCluJTVCdSU1RCUzRGwlNUJ1JTVEJTNCcmV0dXJuJTIwbiU3RGZ1bmN0aW9uJTIwdihuKSU3QnZhciUyMGwlM0RuLnBhcmVudE5vZGUlM0JsJTI2JTI2bC5yZW1vdmVDaGlsZChuKSU3RGZ1bmN0aW9uJTIwaChuJTJDbCUyQ3UpJTdCdmFyJTIwaSUyQ3QlM0Rhcmd1bWVudHMlMkNyJTNEJTdCJTdEJTNCZm9yKGklMjBpbiUyMGwpJTVDJTIya2V5JTVDJTIyISUzRCUzRGklMjYlMjYlNUMlMjJyZWYlNUMlMjIhJTNEJTNEaSUyNiUyNihyJTVCaSU1RCUzRGwlNUJpJTVEKSUzQmlmKGFyZ3VtZW50cy5sZW5ndGglM0UzKWZvcih1JTNEJTVCdSU1RCUyQ2klM0QzJTNCaSUzQ2FyZ3VtZW50cy5sZW5ndGglM0JpJTJCJTJCKXUucHVzaCh0JTVCaSU1RCklM0JpZihudWxsISUzRHUlMjYlMjYoci5jaGlsZHJlbiUzRHUpJTJDJTVDJTIyZnVuY3Rpb24lNUMlMjIlM0QlM0R0eXBlb2YlMjBuJTI2JTI2bnVsbCElM0RuLmRlZmF1bHRQcm9wcylmb3IoaSUyMGluJTIwbi5kZWZhdWx0UHJvcHMpdm9pZCUyMDAlM0QlM0QlM0RyJTVCaSU1RCUyNiUyNihyJTVCaSU1RCUzRG4uZGVmYXVsdFByb3BzJTVCaSU1RCklM0JyZXR1cm4lMjBwKG4lMkNyJTJDbCUyNiUyNmwua2V5JTJDbCUyNiUyNmwucmVmJTJDbnVsbCklN0RmdW5jdGlvbiUyMHAobCUyQ3UlMkNpJTJDdCUyQ3IpJTdCdmFyJTIwbyUzRCU3QnR5cGUlM0FsJTJDcHJvcHMlM0F1JTJDa2V5JTNBaSUyQ3JlZiUzQXQlMkNfX2slM0FudWxsJTJDX18lM0FudWxsJTJDX19iJTNBMCUyQ19fZSUzQW51bGwlMkNfX2QlM0F2b2lkJTIwMCUyQ19fYyUzQW51bGwlMkNjb25zdHJ1Y3RvciUzQXZvaWQlMjAwJTJDX192JTNBciU3RCUzQnJldHVybiUyMG51bGwlM0QlM0RyJTI2JTI2KG8uX192JTNEbyklMkNuLnZub2RlJTI2JTI2bi52bm9kZShvKSUyQ28lN0RmdW5jdGlvbiUyMHkoKSU3QnJldHVybiU3QiU3RCU3RGZ1bmN0aW9uJTIwZChuKSU3QnJldHVybiUyMG4uY2hpbGRyZW4lN0RmdW5jdGlvbiUyMG0obiUyQ2wpJTdCdGhpcy5wcm9wcyUzRG4lMkN0aGlzLmNvbnRleHQlM0RsJTdEZnVuY3Rpb24lMjB3KG4lMkNsKSU3QmlmKG51bGwlM0QlM0RsKXJldHVybiUyMG4uX18lM0Z3KG4uX18lMkNuLl9fLl9fay5pbmRleE9mKG4pJTJCMSklM0FudWxsJTNCZm9yKHZhciUyMHUlM0JsJTNDbi5fX2subGVuZ3RoJTNCbCUyQiUyQilpZihudWxsISUzRCh1JTNEbi5fX2slNUJsJTVEKSUyNiUyNm51bGwhJTNEdS5fX2UpcmV0dXJuJTIwdS5fX2UlM0JyZXR1cm4lNUMlMjJmdW5jdGlvbiU1QyUyMiUzRCUzRHR5cGVvZiUyMG4udHlwZSUzRncobiklM0FudWxsJTdEZnVuY3Rpb24lMjBrKG4pJTdCdmFyJTIwbCUyQ3UlM0JpZihudWxsISUzRChuJTNEbi5fXyklMjYlMjZudWxsISUzRG4uX19jKSU3QmZvcihuLl9fZSUzRG4uX19jLmJhc2UlM0RudWxsJTJDbCUzRDAlM0JsJTNDbi5fX2subGVuZ3RoJTNCbCUyQiUyQilpZihudWxsISUzRCh1JTNEbi5fX2slNUJsJTVEKSUyNiUyNm51bGwhJTNEdS5fX2UpJTdCbi5fX2UlM0RuLl9fYy5iYXNlJTNEdS5fX2UlM0JicmVhayU3RHJldHVybiUyMGsobiklN0QlN0RmdW5jdGlvbiUyMGcobCklN0IoIWwuX19kJTI2JTI2KGwuX19kJTNEITApJTI2JTI2dS5wdXNoKGwpJTI2JTI2IWklMkIlMkIlN0MlN0NyISUzRCUzRG4uZGVib3VuY2VSZW5kZXJpbmcpJTI2JTI2KChyJTNEbi5kZWJvdW5jZVJlbmRlcmluZyklN0MlN0N0KShfKSU3RGZ1bmN0aW9uJTIwXygpJTdCZm9yKHZhciUyMG4lM0JpJTNEdS5sZW5ndGglM0IpbiUzRHUuc29ydChmdW5jdGlvbihuJTJDbCklN0JyZXR1cm4lMjBuLl9fdi5fX2ItbC5fX3YuX19iJTdEKSUyQ3UlM0QlNUIlNUQlMkNuLnNvbWUoZnVuY3Rpb24obiklN0J2YXIlMjBsJTJDdSUyQ2klMkN0JTJDciUyQ28lMkNmJTNCbi5fX2QlMjYlMjYobyUzRChyJTNEKGwlM0RuKS5fX3YpLl9fZSUyQyhmJTNEbC5fX1ApJTI2JTI2KHUlM0QlNUIlNUQlMkMoaSUzRGEoJTdCJTdEJTJDcikpLl9fdiUzRGklMkN0JTNEQShmJTJDciUyQ2klMkNsLl9fbiUyQ3ZvaWQlMjAwISUzRCUzRGYub3duZXJTVkdFbGVtZW50JTJDbnVsbCUyQ3UlMkNudWxsJTNEJTNEbyUzRncociklM0FvKSUyQ1QodSUyQ3IpJTJDdCElM0RvJTI2JTI2ayhyKSkpJTdEKSU3RGZ1bmN0aW9uJTIwYihuJTJDbCUyQ3UlMkNpJTJDdCUyQ3IlMkNvJTJDZiUyQ3MpJTdCdmFyJTIwYSUyQ2glMkNwJTJDeSUyQ2QlMkNtJTJDayUyQ2clM0R1JTI2JTI2dS5fX2slN0MlN0NjJTJDXyUzRGcubGVuZ3RoJTNCaWYoZiUzRCUzRGUlMjYlMjYoZiUzRG51bGwhJTNEciUzRnIlNUIwJTVEJTNBXyUzRncodSUyQzApJTNBbnVsbCklMkNhJTNEMCUyQ2wuX19rJTNEeChsLl9fayUyQ2Z1bmN0aW9uKHUpJTdCaWYobnVsbCElM0R1KSU3QmlmKHUuX18lM0RsJTJDdS5fX2IlM0RsLl9fYiUyQjElMkNudWxsJTNEJTNEJTNEKHAlM0RnJTVCYSU1RCklN0MlN0NwJTI2JTI2dS5rZXklM0QlM0RwLmtleSUyNiUyNnUudHlwZSUzRCUzRCUzRHAudHlwZSlnJTVCYSU1RCUzRHZvaWQlMjAwJTNCZWxzZSUyMGZvcihoJTNEMCUzQmglM0NfJTNCaCUyQiUyQiklN0JpZigocCUzRGclNUJoJTVEKSUyNiUyNnUua2V5JTNEJTNEcC5rZXklMjYlMjZ1LnR5cGUlM0QlM0QlM0RwLnR5cGUpJTdCZyU1QmglNUQlM0R2b2lkJTIwMCUzQmJyZWFrJTdEcCUzRG51bGwlN0RpZih5JTNEQShuJTJDdSUyQ3AlM0RwJTdDJTdDZSUyQ2klMkN0JTJDciUyQ28lMkNmJTJDcyklMkMoaCUzRHUucmVmKSUyNiUyNnAucmVmISUzRGglMjYlMjYoayU3QyU3QyhrJTNEJTVCJTVEKSUyQ3AucmVmJTI2JTI2ay5wdXNoKHAucmVmJTJDbnVsbCUyQ3UpJTJDay5wdXNoKGglMkN1Ll9fYyU3QyU3Q3klMkN1KSklMkNudWxsISUzRHkpJTdCdmFyJTIwYyUzQmlmKG51bGwlM0QlM0RtJTI2JTI2KG0lM0R5KSUyQ3ZvaWQlMjAwISUzRCUzRHUuX19kKWMlM0R1Ll9fZCUyQ3UuX19kJTNEdm9pZCUyMDAlM0JlbHNlJTIwaWYociUzRCUzRHAlN0MlN0N5ISUzRGYlN0MlN0NudWxsJTNEJTNEeS5wYXJlbnROb2RlKSU3Qm4lM0FpZihudWxsJTNEJTNEZiU3QyU3Q2YucGFyZW50Tm9kZSElM0QlM0RuKW4uYXBwZW5kQ2hpbGQoeSklMkNjJTNEbnVsbCUzQmVsc2UlN0Jmb3IoZCUzRGYlMkNoJTNEMCUzQihkJTNEZC5uZXh0U2libGluZyklMjYlMjZoJTNDXyUzQmglMkIlM0QyKWlmKGQlM0QlM0R5KWJyZWFrJTIwbiUzQm4uaW5zZXJ0QmVmb3JlKHklMkNmKSUyQ2MlM0RmJTdEJTVDJTIyb3B0aW9uJTVDJTIyJTNEJTNEbC50eXBlJTI2JTI2KG4udmFsdWUlM0QlNUMlMjIlNUMlMjIpJTdEZiUzRHZvaWQlMjAwISUzRCUzRGMlM0ZjJTNBeS5uZXh0U2libGluZyUyQyU1QyUyMmZ1bmN0aW9uJTVDJTIyJTNEJTNEdHlwZW9mJTIwbC50eXBlJTI2JTI2KGwuX19kJTNEZiklN0RlbHNlJTIwZiUyNiUyNnAuX19lJTNEJTNEZiUyNiUyNmYucGFyZW50Tm9kZSElM0RuJTI2JTI2KGYlM0R3KHApKSU3RHJldHVybiUyMGElMkIlMkIlMkN1JTdEKSUyQ2wuX19lJTNEbSUyQ251bGwhJTNEciUyNiUyNiU1QyUyMmZ1bmN0aW9uJTVDJTIyISUzRHR5cGVvZiUyMGwudHlwZSlmb3IoYSUzRHIubGVuZ3RoJTNCYS0tJTNCKW51bGwhJTNEciU1QmElNUQlMjYlMjZ2KHIlNUJhJTVEKSUzQmZvcihhJTNEXyUzQmEtLSUzQiludWxsISUzRGclNUJhJTVEJTI2JTI2RChnJTVCYSU1RCUyQ2clNUJhJTVEKSUzQmlmKGspZm9yKGElM0QwJTNCYSUzQ2subGVuZ3RoJTNCYSUyQiUyQilqKGslNUJhJTVEJTJDayU1QiUyQiUyQmElNUQlMkNrJTVCJTJCJTJCYSU1RCklN0RmdW5jdGlvbiUyMHgobiUyQ2wlMkN1KSU3QmlmKG51bGwlM0QlM0R1JTI2JTI2KHUlM0QlNUIlNUQpJTJDbnVsbCUzRCUzRG4lN0MlN0MlNUMlMjJib29sZWFuJTVDJTIyJTNEJTNEdHlwZW9mJTIwbilsJTI2JTI2dS5wdXNoKGwobnVsbCkpJTNCZWxzZSUyMGlmKEFycmF5LmlzQXJyYXkobikpZm9yKHZhciUyMGklM0QwJTNCaSUzQ24ubGVuZ3RoJTNCaSUyQiUyQil4KG4lNUJpJTVEJTJDbCUyQ3UpJTNCZWxzZSUyMHUucHVzaChsJTNGbCglNUMlMjJzdHJpbmclNUMlMjIlM0QlM0R0eXBlb2YlMjBuJTdDJTdDJTVDJTIybnVtYmVyJTVDJTIyJTNEJTNEdHlwZW9mJTIwbiUzRnAobnVsbCUyQ24lMkNudWxsJTJDbnVsbCUyQ24pJTNBbnVsbCElM0RuLl9fZSU3QyU3Q251bGwhJTNEbi5fX2MlM0ZwKG4udHlwZSUyQ24ucHJvcHMlMkNuLmtleSUyQ251bGwlMkNuLl9fdiklM0FuKSUzQW4pJTNCcmV0dXJuJTIwdSU3RGZ1bmN0aW9uJTIwUChuJTJDbCUyQ3UlMkNpJTJDdCklN0J2YXIlMjByJTNCZm9yKHIlMjBpbiUyMHUpJTVDJTIyY2hpbGRyZW4lNUMlMjIlM0QlM0QlM0RyJTdDJTdDJTVDJTIya2V5JTVDJTIyJTNEJTNEJTNEciU3QyU3Q3IlMjBpbiUyMGwlN0MlN0NOKG4lMkNyJTJDbnVsbCUyQ3UlNUJyJTVEJTJDaSklM0Jmb3IociUyMGluJTIwbCl0JTI2JTI2JTVDJTIyZnVuY3Rpb24lNUMlMjIhJTNEdHlwZW9mJTIwbCU1QnIlNUQlN0MlN0MlNUMlMjJjaGlsZHJlbiU1QyUyMiUzRCUzRCUzRHIlN0MlN0MlNUMlMjJrZXklNUMlMjIlM0QlM0QlM0RyJTdDJTdDJTVDJTIydmFsdWUlNUMlMjIlM0QlM0QlM0RyJTdDJTdDJTVDJTIyY2hlY2tlZCU1QyUyMiUzRCUzRCUzRHIlN0MlN0N1JTVCciU1RCUzRCUzRCUzRGwlNUJyJTVEJTdDJTdDTihuJTJDciUyQ2wlNUJyJTVEJTJDdSU1QnIlNUQlMkNpKSU3RGZ1bmN0aW9uJTIwQyhuJTJDbCUyQ3UpJTdCJTVDJTIyLSU1QyUyMiUzRCUzRCUzRGwlNUIwJTVEJTNGbi5zZXRQcm9wZXJ0eShsJTJDdSklM0FuJTVCbCU1RCUzRCU1QyUyMm51bWJlciU1QyUyMiUzRCUzRHR5cGVvZiUyMHUlMjYlMjYhMSUzRCUzRCUzRHMudGVzdChsKSUzRnUlMkIlNUMlMjJweCU1QyUyMiUzQW51bGwlM0QlM0R1JTNGJTVDJTIyJTVDJTIyJTNBdSU3RGZ1bmN0aW9uJTIwTihuJTJDbCUyQ3UlMkNpJTJDdCklN0J2YXIlMjByJTJDbyUyQ2YlMkNlJTJDYyUzQmlmKHQlM0YlNUMlMjJjbGFzc05hbWUlNUMlMjIlM0QlM0QlM0RsJTI2JTI2KGwlM0QlNUMlMjJjbGFzcyU1QyUyMiklM0ElNUMlMjJjbGFzcyU1QyUyMiUzRCUzRCUzRGwlMjYlMjYobCUzRCU1QyUyMmNsYXNzTmFtZSU1QyUyMiklMkMlNUMlMjJzdHlsZSU1QyUyMiUzRCUzRCUzRGwpaWYociUzRG4uc3R5bGUlMkMlNUMlMjJzdHJpbmclNUMlMjIlM0QlM0R0eXBlb2YlMjB1KXIuY3NzVGV4dCUzRHUlM0JlbHNlJTdCaWYoJTVDJTIyc3RyaW5nJTVDJTIyJTNEJTNEdHlwZW9mJTIwaSUyNiUyNihyLmNzc1RleHQlM0QlNUMlMjIlNUMlMjIlMkNpJTNEbnVsbCklMkNpKWZvcihlJTIwaW4lMjBpKXUlMjYlMjZlJTIwaW4lMjB1JTdDJTdDQyhyJTJDZSUyQyU1QyUyMiU1QyUyMiklM0JpZih1KWZvcihjJTIwaW4lMjB1KWklMjYlMjZ1JTVCYyU1RCUzRCUzRCUzRGklNUJjJTVEJTdDJTdDQyhyJTJDYyUyQ3UlNUJjJTVEKSU3RGVsc2UlNUMlMjJvJTVDJTIyJTNEJTNEJTNEbCU1QjAlNUQlMjYlMjYlNUMlMjJuJTVDJTIyJTNEJTNEJTNEbCU1QjElNUQlM0YobyUzRGwhJTNEJTNEKGwlM0RsLnJlcGxhY2UoJTJGQ2FwdHVyZSUyNCUyRiUyQyU1QyUyMiU1QyUyMikpJTJDZiUzRGwudG9Mb3dlckNhc2UoKSUyQ2wlM0QoZiUyMGluJTIwbiUzRmYlM0FsKS5zbGljZSgyKSUyQ3UlM0YoaSU3QyU3Q24uYWRkRXZlbnRMaXN0ZW5lcihsJTJDeiUyQ28pJTJDKG4ubCU3QyU3QyhuLmwlM0QlN0IlN0QpKSU1QmwlNUQlM0R1KSUzQW4ucmVtb3ZlRXZlbnRMaXN0ZW5lcihsJTJDeiUyQ28pKSUzQSU1QyUyMmxpc3QlNUMlMjIhJTNEJTNEbCUyNiUyNiU1QyUyMnRhZ05hbWUlNUMlMjIhJTNEJTNEbCUyNiUyNiU1QyUyMmZvcm0lNUMlMjIhJTNEJTNEbCUyNiUyNiU1QyUyMnR5cGUlNUMlMjIhJTNEJTNEbCUyNiUyNiU1QyUyMnNpemUlNUMlMjIhJTNEJTNEbCUyNiUyNiF0JTI2JTI2bCUyMGluJTIwbiUzRm4lNUJsJTVEJTNEbnVsbCUzRCUzRHUlM0YlNUMlMjIlNUMlMjIlM0F1JTNBJTVDJTIyZnVuY3Rpb24lNUMlMjIhJTNEdHlwZW9mJTIwdSUyNiUyNiU1QyUyMmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MJTVDJTIyISUzRCUzRGwlMjYlMjYobCElM0QlM0QobCUzRGwucmVwbGFjZSglMkYlNUV4bGluayUzQSUzRiUyRiUyQyU1QyUyMiU1QyUyMikpJTNGbnVsbCUzRCUzRHUlN0MlN0MhMSUzRCUzRCUzRHUlM0ZuLnJlbW92ZUF0dHJpYnV0ZU5TKCU1QyUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMTk5OSUyRnhsaW5rJTVDJTIyJTJDbC50b0xvd2VyQ2FzZSgpKSUzQW4uc2V0QXR0cmlidXRlTlMoJTVDJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYxOTk5JTJGeGxpbmslNUMlMjIlMkNsLnRvTG93ZXJDYXNlKCklMkN1KSUzQW51bGwlM0QlM0R1JTdDJTdDITElM0QlM0QlM0R1JTI2JTI2ISUyRiU1RWFyJTJGLnRlc3QobCklM0ZuLnJlbW92ZUF0dHJpYnV0ZShsKSUzQW4uc2V0QXR0cmlidXRlKGwlMkN1KSklN0RmdW5jdGlvbiUyMHoobCklN0J0aGlzLmwlNUJsLnR5cGUlNUQobi5ldmVudCUzRm4uZXZlbnQobCklM0FsKSU3RGZ1bmN0aW9uJTIwQShsJTJDdSUyQ2klMkN0JTJDciUyQ28lMkNmJTJDZSUyQ2MpJTdCdmFyJTIwcyUyQ3YlMkNoJTJDcCUyQ3klMkN3JTJDayUyQ2clMkNfJTJDeCUyQ1AlM0R1LnR5cGUlM0JpZih2b2lkJTIwMCElM0QlM0R1LmNvbnN0cnVjdG9yKXJldHVybiUyMG51bGwlM0IocyUzRG4uX19iKSUyNiUyNnModSklM0J0cnklN0JuJTNBaWYoJTVDJTIyZnVuY3Rpb24lNUMlMjIlM0QlM0R0eXBlb2YlMjBQKSU3QmlmKGclM0R1LnByb3BzJTJDXyUzRChzJTNEUC5jb250ZXh0VHlwZSklMjYlMjZ0JTVCcy5fX2MlNUQlMkN4JTNEcyUzRl8lM0ZfLnByb3BzLnZhbHVlJTNBcy5fXyUzQXQlMkNpLl9fYyUzRmslM0QodiUzRHUuX19jJTNEaS5fX2MpLl9fJTNEdi5fX0UlM0EoJTVDJTIycHJvdG90eXBlJTVDJTIyaW4lMjBQJTI2JTI2UC5wcm90b3R5cGUucmVuZGVyJTNGdS5fX2MlM0R2JTNEbmV3JTIwUChnJTJDeCklM0EodS5fX2MlM0R2JTNEbmV3JTIwbShnJTJDeCklMkN2LmNvbnN0cnVjdG9yJTNEUCUyQ3YucmVuZGVyJTNERSklMkNfJTI2JTI2Xy5zdWIodiklMkN2LnByb3BzJTNEZyUyQ3Yuc3RhdGUlN0MlN0Modi5zdGF0ZSUzRCU3QiU3RCklMkN2LmNvbnRleHQlM0R4JTJDdi5fX24lM0R0JTJDaCUzRHYuX19kJTNEITAlMkN2Ll9faCUzRCU1QiU1RCklMkNudWxsJTNEJTNEdi5fX3MlMjYlMjYodi5fX3MlM0R2LnN0YXRlKSUyQ251bGwhJTNEUC5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMlMjYlMjYodi5fX3MlM0QlM0R2LnN0YXRlJTI2JTI2KHYuX19zJTNEYSglN0IlN0QlMkN2Ll9fcykpJTJDYSh2Ll9fcyUyQ1AuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKGclMkN2Ll9fcykpKSUyQ3AlM0R2LnByb3BzJTJDeSUzRHYuc3RhdGUlMkNoKW51bGwlM0QlM0RQLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyUyNiUyNm51bGwhJTNEdi5jb21wb25lbnRXaWxsTW91bnQlMjYlMjZ2LmNvbXBvbmVudFdpbGxNb3VudCgpJTJDbnVsbCElM0R2LmNvbXBvbmVudERpZE1vdW50JTI2JTI2di5fX2gucHVzaCh2LmNvbXBvbmVudERpZE1vdW50KSUzQmVsc2UlN0JpZihudWxsJTNEJTNEUC5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMlMjYlMjZnISUzRCUzRHAlMjYlMjZudWxsISUzRHYuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyUyNiUyNnYuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhnJTJDeCklMkMhdi5fX2UlMjYlMjZudWxsISUzRHYuc2hvdWxkQ29tcG9uZW50VXBkYXRlJTI2JTI2ITElM0QlM0QlM0R2LnNob3VsZENvbXBvbmVudFVwZGF0ZShnJTJDdi5fX3MlMkN4KSU3QyU3Q3UuX192JTNEJTNEJTNEaS5fX3YlMjYlMjYhdi5fXyklN0Jmb3Iodi5wcm9wcyUzRGclMkN2LnN0YXRlJTNEdi5fX3MlMkN1Ll9fdiElM0QlM0RpLl9fdiUyNiUyNih2Ll9fZCUzRCExKSUyQ3YuX192JTNEdSUyQ3UuX19lJTNEaS5fX2UlMkN1Ll9fayUzRGkuX19rJTJDdi5fX2gubGVuZ3RoJTI2JTI2Zi5wdXNoKHYpJTJDcyUzRDAlM0JzJTNDdS5fX2subGVuZ3RoJTNCcyUyQiUyQil1Ll9fayU1QnMlNUQlMjYlMjYodS5fX2slNUJzJTVELl9fJTNEdSklM0JicmVhayUyMG4lN0RudWxsISUzRHYuY29tcG9uZW50V2lsbFVwZGF0ZSUyNiUyNnYuY29tcG9uZW50V2lsbFVwZGF0ZShnJTJDdi5fX3MlMkN4KSUyQ251bGwhJTNEdi5jb21wb25lbnREaWRVcGRhdGUlMjYlMjZ2Ll9faC5wdXNoKGZ1bmN0aW9uKCklN0J2LmNvbXBvbmVudERpZFVwZGF0ZShwJTJDeSUyQ3cpJTdEKSU3RHYuY29udGV4dCUzRHglMkN2LnByb3BzJTNEZyUyQ3Yuc3RhdGUlM0R2Ll9fcyUyQyhzJTNEbi5fX3IpJTI2JTI2cyh1KSUyQ3YuX19kJTNEITElMkN2Ll9fdiUzRHUlMkN2Ll9fUCUzRGwlMkNzJTNEdi5yZW5kZXIodi5wcm9wcyUyQ3Yuc3RhdGUlMkN2LmNvbnRleHQpJTJDdS5fX2slM0RudWxsISUzRHMlMjYlMjZzLnR5cGUlM0QlM0RkJTI2JTI2bnVsbCUzRCUzRHMua2V5JTNGcy5wcm9wcy5jaGlsZHJlbiUzQUFycmF5LmlzQXJyYXkocyklM0ZzJTNBJTVCcyU1RCUyQ251bGwhJTNEdi5nZXRDaGlsZENvbnRleHQlMjYlMjYodCUzRGEoYSglN0IlN0QlMkN0KSUyQ3YuZ2V0Q2hpbGRDb250ZXh0KCkpKSUyQ2glN0MlN0NudWxsJTNEJTNEdi5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSU3QyU3Qyh3JTNEdi5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZShwJTJDeSkpJTJDYihsJTJDdSUyQ2klMkN0JTJDciUyQ28lMkNmJTJDZSUyQ2MpJTJDdi5iYXNlJTNEdS5fX2UlMkN2Ll9faC5sZW5ndGglMjYlMjZmLnB1c2godiklMkNrJTI2JTI2KHYuX19FJTNEdi5fXyUzRG51bGwpJTJDdi5fX2UlM0QhMSU3RGVsc2UlMjBudWxsJTNEJTNEbyUyNiUyNnUuX192JTNEJTNEJTNEaS5fX3YlM0YodS5fX2slM0RpLl9fayUyQ3UuX19lJTNEaS5fX2UpJTNBdS5fX2UlM0QlMjQoaS5fX2UlMkN1JTJDaSUyQ3QlMkNyJTJDbyUyQ2YlMkNjKSUzQihzJTNEbi5kaWZmZWQpJTI2JTI2cyh1KSU3RGNhdGNoKGwpJTdCdS5fX3YlM0RudWxsJTJDbi5fX2UobCUyQ3UlMkNpKSU3RHJldHVybiUyMHUuX19lJTdEZnVuY3Rpb24lMjBUKGwlMkN1KSU3Qm4uX19jJTI2JTI2bi5fX2ModSUyQ2wpJTJDbC5zb21lKGZ1bmN0aW9uKHUpJTdCdHJ5JTdCbCUzRHUuX19oJTJDdS5fX2glM0QlNUIlNUQlMkNsLnNvbWUoZnVuY3Rpb24obiklN0JuLmNhbGwodSklN0QpJTdEY2F0Y2gobCklN0JuLl9fZShsJTJDdS5fX3YpJTdEJTdEKSU3RGZ1bmN0aW9uJTIwJTI0KG4lMkNsJTJDdSUyQ2klMkN0JTJDciUyQ28lMkNmKSU3QnZhciUyMHMlMkNhJTJDdiUyQ2glMkNwJTJDeSUzRHUucHJvcHMlMkNkJTNEbC5wcm9wcyUzQmlmKHQlM0QlNUMlMjJzdmclNUMlMjIlM0QlM0QlM0RsLnR5cGUlN0MlN0N0JTJDbnVsbCElM0RyKWZvcihzJTNEMCUzQnMlM0NyLmxlbmd0aCUzQnMlMkIlMkIpaWYobnVsbCElM0QoYSUzRHIlNUJzJTVEKSUyNiUyNigobnVsbCUzRCUzRCUzRGwudHlwZSUzRjMlM0QlM0QlM0RhLm5vZGVUeXBlJTNBYS5sb2NhbE5hbWUlM0QlM0QlM0RsLnR5cGUpJTdDJTdDbiUzRCUzRGEpKSU3Qm4lM0RhJTJDciU1QnMlNUQlM0RudWxsJTNCYnJlYWslN0RpZihudWxsJTNEJTNEbiklN0JpZihudWxsJTNEJTNEJTNEbC50eXBlKXJldHVybiUyMGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGQpJTNCbiUzRHQlM0Zkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJTVDJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTVDJTIyJTJDbC50eXBlKSUzQWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQobC50eXBlJTJDZC5pcyUyNiUyNiU3QmlzJTNBZC5pcyU3RCklMkNyJTNEbnVsbCUyQ2YlM0QhMSU3RGlmKG51bGwlM0QlM0QlM0RsLnR5cGUpeSElM0QlM0RkJTI2JTI2bi5kYXRhISUzRGQlMjYlMjYobi5kYXRhJTNEZCklM0JlbHNlJTdCaWYobnVsbCElM0RyJTI2JTI2KHIlM0RjLnNsaWNlLmNhbGwobi5jaGlsZE5vZGVzKSklMkN2JTNEKHklM0R1LnByb3BzJTdDJTdDZSkuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwlMkNoJTNEZC5kYW5nZXJvdXNseVNldElubmVySFRNTCUyQyFmKSU3QmlmKHklM0QlM0QlM0RlKWZvcih5JTNEJTdCJTdEJTJDcCUzRDAlM0JwJTNDbi5hdHRyaWJ1dGVzLmxlbmd0aCUzQnAlMkIlMkIpeSU1Qm4uYXR0cmlidXRlcyU1QnAlNUQubmFtZSU1RCUzRG4uYXR0cmlidXRlcyU1QnAlNUQudmFsdWUlM0IoaCU3QyU3Q3YpJTI2JTI2KGglMjYlMjZ2JTI2JTI2aC5fX2h0bWwlM0QlM0R2Ll9faHRtbCU3QyU3QyhuLmlubmVySFRNTCUzRGglMjYlMjZoLl9faHRtbCU3QyU3QyU1QyUyMiU1QyUyMikpJTdEUChuJTJDZCUyQ3klMkN0JTJDZiklMkNoJTNGbC5fX2slM0QlNUIlNUQlM0EobC5fX2slM0RsLnByb3BzLmNoaWxkcmVuJTJDYihuJTJDbCUyQ3UlMkNpJTJDJTVDJTIyZm9yZWlnbk9iamVjdCU1QyUyMiElM0QlM0RsLnR5cGUlMjYlMjZ0JTJDciUyQ28lMkNlJTJDZikpJTJDZiU3QyU3QyglNUMlMjJ2YWx1ZSU1QyUyMmluJTIwZCUyNiUyNnZvaWQlMjAwISUzRCUzRChzJTNEZC52YWx1ZSklMjYlMjZzISUzRCUzRG4udmFsdWUlMjYlMjZOKG4lMkMlNUMlMjJ2YWx1ZSU1QyUyMiUyQ3MlMkN5LnZhbHVlJTJDITEpJTJDJTVDJTIyY2hlY2tlZCU1QyUyMmluJTIwZCUyNiUyNnZvaWQlMjAwISUzRCUzRChzJTNEZC5jaGVja2VkKSUyNiUyNnMhJTNEJTNEbi5jaGVja2VkJTI2JTI2TihuJTJDJTVDJTIyY2hlY2tlZCU1QyUyMiUyQ3MlMkN5LmNoZWNrZWQlMkMhMSkpJTdEcmV0dXJuJTIwbiU3RGZ1bmN0aW9uJTIwaihsJTJDdSUyQ2kpJTdCdHJ5JTdCJTVDJTIyZnVuY3Rpb24lNUMlMjIlM0QlM0R0eXBlb2YlMjBsJTNGbCh1KSUzQWwuY3VycmVudCUzRHUlN0RjYXRjaChsKSU3Qm4uX19lKGwlMkNpKSU3RCU3RGZ1bmN0aW9uJTIwRChsJTJDdSUyQ2kpJTdCdmFyJTIwdCUyQ3IlMkNvJTNCaWYobi51bm1vdW50JTI2JTI2bi51bm1vdW50KGwpJTJDKHQlM0RsLnJlZiklMjYlMjYodC5jdXJyZW50JTI2JTI2dC5jdXJyZW50ISUzRCUzRGwuX19lJTdDJTdDaih0JTJDbnVsbCUyQ3UpKSUyQ2klN0MlN0MlNUMlMjJmdW5jdGlvbiU1QyUyMiUzRCUzRHR5cGVvZiUyMGwudHlwZSU3QyU3QyhpJTNEbnVsbCElM0QociUzRGwuX19lKSklMkNsLl9fZSUzRGwuX19kJTNEdm9pZCUyMDAlMkNudWxsISUzRCh0JTNEbC5fX2MpKSU3QmlmKHQuY29tcG9uZW50V2lsbFVubW91bnQpdHJ5JTdCdC5jb21wb25lbnRXaWxsVW5tb3VudCgpJTdEY2F0Y2gobCklN0JuLl9fZShsJTJDdSklN0R0LmJhc2UlM0R0Ll9fUCUzRG51bGwlN0RpZih0JTNEbC5fX2spZm9yKG8lM0QwJTNCbyUzQ3QubGVuZ3RoJTNCbyUyQiUyQil0JTVCbyU1RCUyNiUyNkQodCU1Qm8lNUQlMkN1JTJDaSklM0JudWxsISUzRHIlMjYlMjZ2KHIpJTdEZnVuY3Rpb24lMjBFKG4lMkNsJTJDdSklN0JyZXR1cm4lMjB0aGlzLmNvbnN0cnVjdG9yKG4lMkN1KSU3RGZ1bmN0aW9uJTIwSChsJTJDdSUyQ2kpJTdCdmFyJTIwdCUyQ3IlMkNmJTNCbi5fXyUyNiUyNm4uX18obCUyQ3UpJTJDciUzRCh0JTNEaSUzRCUzRCUzRG8pJTNGbnVsbCUzQWklMjYlMjZpLl9fayU3QyU3Q3UuX19rJTJDbCUzRGgoZCUyQ251bGwlMkMlNUJsJTVEKSUyQ2YlM0QlNUIlNUQlMkNBKHUlMkModCUzRnUlM0FpJTdDJTdDdSkuX19rJTNEbCUyQ3IlN0MlN0NlJTJDZSUyQ3ZvaWQlMjAwISUzRCUzRHUub3duZXJTVkdFbGVtZW50JTJDaSUyNiUyNiF0JTNGJTVCaSU1RCUzQXIlM0ZudWxsJTNBYy5zbGljZS5jYWxsKHUuY2hpbGROb2RlcyklMkNmJTJDaSU3QyU3Q2UlMkN0KSUyQ1QoZiUyQ2wpJTdEZnVuY3Rpb24lMjBJKG4lMkNsKSU3QkgobiUyQ2wlMkNvKSU3RGZ1bmN0aW9uJTIwTChuJTJDbCklN0J2YXIlMjB1JTJDaSUzQmZvcihpJTIwaW4lMjBsJTNEYShhKCU3QiU3RCUyQ24ucHJvcHMpJTJDbCklMkNhcmd1bWVudHMubGVuZ3RoJTNFMiUyNiUyNihsLmNoaWxkcmVuJTNEYy5zbGljZS5jYWxsKGFyZ3VtZW50cyUyQzIpKSUyQ3UlM0QlN0IlN0QlMkNsKSU1QyUyMmtleSU1QyUyMiElM0QlM0RpJTI2JTI2JTVDJTIycmVmJTVDJTIyISUzRCUzRGklMjYlMjYodSU1QmklNUQlM0RsJTVCaSU1RCklM0JyZXR1cm4lMjBwKG4udHlwZSUyQ3UlMkNsLmtleSU3QyU3Q24ua2V5JTJDbC5yZWYlN0MlN0NuLnJlZiUyQ251bGwpJTdEZnVuY3Rpb24lMjBNKG4pJTdCdmFyJTIwbCUzRCU3QiU3RCUyQ3UlM0QlN0JfX2MlM0ElNUMlMjJfX2NDJTVDJTIyJTJCZiUyQiUyQiUyQ19fJTNBbiUyQ0NvbnN1bWVyJTNBZnVuY3Rpb24obiUyQ2wpJTdCcmV0dXJuJTIwbi5jaGlsZHJlbihsKSU3RCUyQ1Byb3ZpZGVyJTNBZnVuY3Rpb24obiklN0J2YXIlMjBpJTJDdCUzRHRoaXMlM0JyZXR1cm4lMjB0aGlzLmdldENoaWxkQ29udGV4dCU3QyU3QyhpJTNEJTVCJTVEJTJDdGhpcy5nZXRDaGlsZENvbnRleHQlM0RmdW5jdGlvbigpJTdCcmV0dXJuJTIwbCU1QnUuX19jJTVEJTNEdCUyQ2wlN0QlMkN0aGlzLnNob3VsZENvbXBvbmVudFVwZGF0ZSUzRGZ1bmN0aW9uKG4pJTdCdC5wcm9wcy52YWx1ZSElM0QlM0RuLnZhbHVlJTI2JTI2aS5zb21lKGZ1bmN0aW9uKGwpJTdCbC5jb250ZXh0JTNEbi52YWx1ZSUyQ2cobCklN0QpJTdEJTJDdGhpcy5zdWIlM0RmdW5jdGlvbihuKSU3QmkucHVzaChuKSUzQnZhciUyMGwlM0RuLmNvbXBvbmVudFdpbGxVbm1vdW50JTNCbi5jb21wb25lbnRXaWxsVW5tb3VudCUzRGZ1bmN0aW9uKCklN0JpLnNwbGljZShpLmluZGV4T2YobiklMkMxKSUyQ2wlMjYlMjZsLmNhbGwobiklN0QlN0QpJTJDbi5jaGlsZHJlbiU3RCU3RCUzQnJldHVybiUyMHUuQ29uc3VtZXIuY29udGV4dFR5cGUlM0R1JTJDdS5Qcm92aWRlci5fXyUzRHUlMkN1JTdEbiUzRCU3Ql9fZSUzQWZ1bmN0aW9uKG4lMkNsKSU3QmZvcih2YXIlMjB1JTJDaSUzQmwlM0RsLl9fJTNCKWlmKCh1JTNEbC5fX2MpJTI2JTI2IXUuX18pdHJ5JTdCaWYodS5jb25zdHJ1Y3RvciUyNiUyNm51bGwhJTNEdS5jb25zdHJ1Y3Rvci5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3IlMjYlMjYoaSUzRCEwJTJDdS5zZXRTdGF0ZSh1LmNvbnN0cnVjdG9yLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvcihuKSkpJTJDbnVsbCElM0R1LmNvbXBvbmVudERpZENhdGNoJTI2JTI2KGklM0QhMCUyQ3UuY29tcG9uZW50RGlkQ2F0Y2gobikpJTJDaSlyZXR1cm4lMjBnKHUuX19FJTNEdSklN0RjYXRjaChsKSU3Qm4lM0RsJTdEdGhyb3clMjBuJTdEJTdEJTJDbCUzRGZ1bmN0aW9uKG4pJTdCcmV0dXJuJTIwbnVsbCElM0RuJTI2JTI2dm9pZCUyMDAlM0QlM0QlM0RuLmNvbnN0cnVjdG9yJTdEJTJDbS5wcm90b3R5cGUuc2V0U3RhdGUlM0RmdW5jdGlvbihuJTJDbCklN0J2YXIlMjB1JTNCdSUzRHRoaXMuX19zISUzRCUzRHRoaXMuc3RhdGUlM0Z0aGlzLl9fcyUzQXRoaXMuX19zJTNEYSglN0IlN0QlMkN0aGlzLnN0YXRlKSUyQyU1QyUyMmZ1bmN0aW9uJTVDJTIyJTNEJTNEdHlwZW9mJTIwbiUyNiUyNihuJTNEbih1JTJDdGhpcy5wcm9wcykpJTJDbiUyNiUyNmEodSUyQ24pJTJDbnVsbCElM0RuJTI2JTI2dGhpcy5fX3YlMjYlMjYobCUyNiUyNnRoaXMuX19oLnB1c2gobCklMkNnKHRoaXMpKSU3RCUyQ20ucHJvdG90eXBlLmZvcmNlVXBkYXRlJTNEZnVuY3Rpb24obiklN0J0aGlzLl9fdiUyNiUyNih0aGlzLl9fZSUzRCEwJTJDbiUyNiUyNnRoaXMuX19oLnB1c2gobiklMkNnKHRoaXMpKSU3RCUyQ20ucHJvdG90eXBlLnJlbmRlciUzRGQlMkN1JTNEJTVCJTVEJTJDaSUzRDAlMkN0JTNEJTVDJTIyZnVuY3Rpb24lNUMlMjIlM0QlM0R0eXBlb2YlMjBQcm9taXNlJTNGUHJvbWlzZS5wcm90b3R5cGUudGhlbi5iaW5kKFByb21pc2UucmVzb2x2ZSgpKSUzQXNldFRpbWVvdXQlMkNvJTNEZSUyQ2YlM0QwJTNCZXhwb3J0JTdCSCUyMGFzJTIwcmVuZGVyJTJDSSUyMGFzJTIwaHlkcmF0ZSUyQ2glMjBhcyUyMGNyZWF0ZUVsZW1lbnQlMkNoJTJDZCUyMGFzJTIwRnJhZ21lbnQlMkN5JTIwYXMlMjBjcmVhdGVSZWYlMkNsJTIwYXMlMjBpc1ZhbGlkRWxlbWVudCUyQ20lMjBhcyUyMENvbXBvbmVudCUyQ0wlMjBhcyUyMGNsb25lRWxlbWVudCUyQ00lMjBhcyUyMGNyZWF0ZUNvbnRleHQlMkN4JTIwYXMlMjB0b0NoaWxkQXJyYXklMkNEJTIwYXMlMjBfdW5tb3VudCUyQ24lMjBhcyUyMG9wdGlvbnMlN0QlM0IlMjIlMkMlMjJpc0VudHJ5JTIyJTNBdHJ1ZSU3RCU1RCUyQyUyMm9wdGlvbnMlMjIlM0ElN0IlMjJmb3JtYXQlMjIlM0ElMjJlcyUyMiUyQyUyMm5hbWUlMjIlM0ElMjJteUJ1bmRsZSUyMiUyQyUyMmFtZCUyMiUzQSU3QiUyMmlkJTIyJTNBJTIyJTIyJTdEJTJDJTIyZ2xvYmFscyUyMiUzQSU3QiU3RCU3RCUyQyUyMmV4YW1wbGUlMjIlM0FudWxsJTdE

Feature Proposal

It should be possible to disable this ASI when no source transformations have taken place to that code.

A simpler starting heuristic could also be to just disable ASI entirely when treeshaking: false is used.

@guybedford
Copy link
Contributor Author

guybedford commented May 9, 2020

Unfortunately it seems the Preact example is breaking the repl request length :)

It can be seen by copying this source though - https://unpkg.com/preact@10.4.1/dist/preact.module.js.

@lukastaegert
Copy link
Member

This ASI makes things a lot easier as there are many edge cases where "untouched code" borders on other modules or modified code that we do no need to handle explicitly here. Avoiding this will also not provide any structural code improvements but rather just some syntactic optimization. If people are interested in this minimal gain, I would rather expect them to use a minifier to handle this. For Rollup, this will just introduce complexity.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants