Comments (8)
My first guess is that we can only improve this by delaying validation of update and assignment expressions till after we traversed the whole tree. A simpler alternative would be to turn this error into a warning.
from buble.
I think the former is the way to go. A warning with false positives is not helpful.
Acorn catches a number of these types of errors doesn't it? If so, maybe this logic is not required at all.
from buble.
Well, I think a warning would be a reasonable approach, exactly because it could be a false positive. Also, a) it is easily fixable b) it is confusing for humans, so fixing it makes sense anyway. But I'm not opposed to the more elaborate and correct solution.
As far as I know acorn doesn't do anything like this, for example it parses const x = 1; ++x
.
from buble.
The problem is that warnings are almost always ignored by users - even if valid. What's the downside of passing illegal code to Buble as you have above? The generated code will incorrectly behave as if the const
is a let
?
from buble.
Yes, it will be transpiled to a var
. Since most people never run their untranspiled code, this would effectively mean that they can theoretically use const
in all kinds of wrong places, ignore the warnings and have incorrect assumptions about their code.
from buble.
That doesn't sound desirable - particularly for users like me who never use linters.
from buble.
I actually found an easy solution for this: The checks used to happen in initialise
, now I moved them to transpile
. I also added them to destructuring assignments.
from buble.
@adrianheine Well done! Thanks.
from buble.
Related Issues (20)
- Please update acorn to 5.7.4, 6.4.1, or 7.1.1 to resolve vulnerability in acorn HOT 2
- class extends expression not transpiled HOT 1
- Number range expression is not compiled accordingly HOT 1
- Add support for Vue render functions
- compile error with for...of HOT 2
- Function declarations within blocks are transpiled into code that breaks on some pre-ES2015 targets
- A bug when destructuring in a for .. of loop HOT 1
- super relies on name of base class HOT 5
- async/await -> using array method yields error
- Invalid output when a computed property follows a property with an arrow function as value
- Mutated variables in pseudo-block-scope loops aren't written back when using `continue`
- Must call super constructor in derived class before accessing 'this' or returning from derived constructor
- Support optional chaining. HOT 5
- Security policy questions
- Jsx convertion has some problem HOT 1
- Wrong variable name in block scope
- Remove unicode regexp support and reduce50%+ bundle size.
- Make Buble ignore JSX?
- Please support setPrototypeOf instead of __proto__ HOT 1
- 11 failing tests due to mocha timeout of 2000ms HOT 7
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from buble.