Comments (3)
So is your suggestion maybe to have then nullable and nulll when they are missing from the AST?
from esprima-dotnet.
I think the model is fine (AST explorer generates the same AST), so I wouldn't change that. It just feels off that the enumeration includes the same node instance multiple times.
What we could possibly do is to check for these cases and make sure these nodes are enumerated/visited only once.
However, there's the case of shorthand properties of object patterns. Consider var { v } = { }
first. In this case the parser doesn't use the same Identifier
instance for Key
and Value
but creates two separate instances with the same content (as opposed to the case of object expression shorthand properties, where only a single instance is created).
Take another example: var { v = 0 } = { }
. Now Value
is an AssignmentExpression
whose Left
property is the same identifier as Key
. Also two different Identifer
instances with the same content are created but in this case they don't even have the same parent node...
How to deal with this? The only correct way I can think of is to change the parser (to be precise, ParsePropertyPattern
) to reuse the Key
instance in the case of shorthand properties. Then change the enumeration/visitation to skip the Key
node in such cases.
from esprima-dotnet.
I don't have a strong opinion here. I always have my Jint glasses on so basically for Jint approach doesn't matter, Jint handles the content of AST without worrying of identity.
Would "back to javascript" be a good use case to prove if the current model is problematic? Like does double-visiting make things hard if not impossible.
I don't se much harm in tweaking the ParsePropertyPattern
logic.
from esprima-dotnet.
Related Issues (20)
- Version 3.0.0-beta-10 suffix problem HOT 10
- Import Assertions (aka Import Atributes) are back at stage 3 so we should add them again HOT 2
- Inconsistencies with ESTree HOT 1
- Keeping trivia HOT 1
- Decorator parsing is too forgiving
- Remove obsolete APIs
- Update readme HOT 5
- Issue with parsing import statement HOT 4
- IndexOutOfRangeException when parsing `#`
- Error parsing empty JSX element HOT 2
- Error parsing literal with weird characters
- Issues with optional chaining HOT 8
- Issues generating nested logical expressions HOT 1
- Issue with parsing spread operator HOT 1
- Some RegExp adaptation tests fail on NET 8 HOT 1
- Sequence expressions not formatted "correctly" HOT 2
- Minor parser issues that incorrectly pass tests
- Unable to modify Arguments Literal value from AST using AstRewriter HOT 1
- Any sample code or docs for modifying AST nodes?
- About how to easily add, delete, modify the AST node structure
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 esprima-dotnet.