Skip to content
This repository was archived by the owner on May 19, 2018. It is now read-only.

Optional Chaining: Stage 1 #328

Closed
hzoo opened this issue Jan 27, 2017 · 12 comments
Closed

Optional Chaining: Stage 1 #328

hzoo opened this issue Jan 27, 2017 · 12 comments

Comments

@hzoo
Copy link
Member

hzoo commented Jan 27, 2017

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

@gisenberg
Copy link
Member

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.

@kristofdegrave
Copy link

I'm currently werking on An PR for this

kristofdegrave pushed a commit to kristofdegrave/babylon that referenced this issue Feb 11, 2017
…member access. (.? or ?.[) If the object is undefined this will return undefined. If the object on which you want to access the property is defined, the value of the propery will be given back.
@sunnylqm
Copy link

Any news? @kristofdegrave

@rattrayalex
Copy link
Contributor

rattrayalex commented Mar 16, 2017

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.

@cusspvz
Copy link

cusspvz commented Mar 31, 2017

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.

@thomaschaaf
Copy link

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

@hzoo hzoo changed the title Null Propagation Operator: Stage-1 Null Propagation Operator: Stage 1 May 26, 2017
@xtuc
Copy link
Member

xtuc commented May 26, 2017

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()

@gisenberg
Copy link
Member

@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.

@hzoo
Copy link
Member Author

hzoo commented May 27, 2017

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

@hzoo hzoo added the Has PR label May 28, 2017
@hzoo hzoo changed the title Null Propagation Operator: Stage 1 Optional Chaining: Stage 1 May 30, 2017
@hzoo
Copy link
Member Author

hzoo commented Jun 5, 2017

The babylon PR is merged (#545)

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

@littledan
Copy link

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!

@sunnylqm
Copy link

sunnylqm commented Jul 4, 2017

https://github.com/babel/babel/tree/7.0/packages/babel-plugin-transform-optional-chaining

@xtuc xtuc closed this as completed Jul 4, 2017
# for free to subscribe to this conversation on GitHub. Already have an account? #.
Projects
None yet
Development

No branches or pull requests

10 participants