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

Add ArrowFunctionExpression to opaqueTypes #277

Merged
merged 1 commit into from Feb 13, 2017

Conversation

yavorsky
Copy link
Contributor

@yavorsky yavorsky commented Feb 13, 2017

Using arrow functions inside generators:

function* gen () {
  const a = () => { 
    return 1 
  };
};

throws:

Error: src/index.js: unknown Expression of type "ArrowFunctionExpression"
    at /Users/aqson/Development/temp/babel-preset-env-issue-160/node_modules/regenerator-transform/lib/emit.js:1035:15

But works fine with FunctionExpressions and arrow functions without BlockStatements:

function gen* {
  const a = () => 1;
};

function gen2* {
  const a = function () {
    return 1;
  };
};

The root of the problems lies in the explodeStatement method where we check node for the leaps and 2 of working cases returns false, but the one with ArrowFunctionExpression + BlockStatement - true.

Resolves: babel/babel-preset-env#160 and other cases without babel-plugin-transform-es2015-arrow-functions.

@facebook-github-bot
Copy link

Thank you for your pull request and welcome to our community. We require contributors to sign our Contributor License Agreement, and we don't seem to have you on file. In order for us to review and merge your code, please sign up at https://code.facebook.com/cla - and if you have received this in error or have any questions, please drop us a line at cla@fb.com. Thanks!

If you are contributing on behalf of someone else (eg your employer): the individual CLA is not sufficient - use https://developers.facebook.com/opensource/cla?type=company instead. Contact cla@fb.com if you have any questions.

@facebook-github-bot
Copy link

Thank you for signing our Contributor License Agreement. We can now accept your code for this (and any) Facebook open source project. Thanks!

@@ -68,7 +68,8 @@ function makePredicate(propertyName, knownTypes) {
}

let opaqueTypes = {
FunctionExpression: true
FunctionExpression: true,
ArrowFunctionExpression: true
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This makes a ton of sense!

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

Successfully merging this pull request may close these issues.

None yet

3 participants