babel / babylon

PSA: moved into babel/babel as @babel/parser -->

Home Page:https://github.com/babel/babel/tree/master/packages/babel-parser

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Optional Chaining: Stage 1

hzoo opened this issue · comments

commented

TC39 Proposals: https://github.com/tc39/proposals

Stage: 1, Gabriel Isenberg, Claude Pache

Proposed at TC39 Meeting: https://github.com/tc39/agendas/blob/master/2017/01.md#agenda-items
Spec Repo: https://github.com/tc39/proposal-optional-chaining
Slides: https://docs.google.com/presentation/d/11O_wIBBbZgE1bMVRJI8kGnmC6dWCBOwutbN9SWOK0fU/edit#slide=id.p

ESTree Issue to discuss AST Spec: estree/estree#146

cc @gisenberg if you can implement or work with someone to do so. (Please join our slack if you haven't http://slack.babeljs.io/)


Babylon PR: #545
Babel PR: babel/babel#5786

Thanks for looping me in! I wanted to let everyone know that I'm over in the BabelJS Slack if there are others that would like to discuss this feature further. I'm currently working with @bmeck on the Babel side of things.

I'm currently werking on An PR for this

As discussed in the babel slack, I'm also interested in contributing to this once the spec is a bit more settled.

I previously implemented a ?. feature for LightScript (a fork/superset of JS built on babylon/babel). In case it helps anyone, here is:

  • The babel transform
  • The associated tests
  • The commit adding the feature to the lightscript parser (a fork of babylon). It uses poor naming ("elvis operator" isn't accurate) and isn't backwards-compatible; a different approach would be necessary.

My version doesn't currently support assignments or delete, though I may add those soon.

For now I'll wait for a bit to hear back from @kristofdegrave and the babel team as to whether the spec seems stable.

Can't wait to see this on ES. Inspite of it being yet at stage-1, it is the only thing that I've always wanted to be part of EcmaScript since I stopped using CoffeeScript. I wish I had spare time to implement it.

@gisenberg @kristofdegrave is this still something you are working on? Do you need help?

Based on @kristofdegrave's work, I can make a PR with this master...xtuc:feat-optional-chaining

I have the Babel part as well babel/babel@7.0...xtuc:feat-optionnal-chaining

I currently only support the basic syntax:

a?.b = 42
delete a?.b
foo?.bar()

@thomaschaaf This is still underway. If you're interested in helping, https://github.com/gisenberg/proposal-optional-chaining is tracking the remaining work. I'm also in the BabelJS Slack if you want to reach out directly.

commented

@xtuc, @kristofdegrave Let's start the PR so we can make a review by us + Gabe?

commented

The babylon PR is merged (#545)

Please help review/test the transform PR babel/babel#5813

For context, at the TC39 meeting where this proposal was presented, there were a couple concerns raised about the scope of the proposal, one syntactic and one semantic. I've filed two issues to discuss these issues. This is a Stage 1 feature and subject to change!