Changelog

若川大约 16 分钟

Changelog

Tags:

  • 💥 [Breaking Change]
  • 👓 [Spec Compliance]
  • 🚀 [New Feature]
  • 🐛 [Bug Fix]
  • 📝 [Documentation]
  • 🏠 [Internal]
  • 💅 [Polish]

Semver Policy: https://github.com/babel/babel/tree/master/packages/babel-parser#semveropen in new window

Note: Gaps between patch versions are faulty, broken or test releases.

See the Babel Changelogopen in new window for the pre-6.8.0 version Changelog.

6.17.1 (2017-05-10)

🐛 Bug Fix

6.17.0 (2017-04-20)

🐛 Bug Fix

7.0.0-beta.8 (2017-04-04)

New Feature

  • Add support for flow type spread (#418) (Conrad Buck)
  • Allow statics in flow interfaces (#427) (Brian Ng)

Bug Fix

  • Fix predicate attachment to match flow parser (#428) (Brian Ng)
  • Add extra.raw back to JSXText and JSXAttribute (#344) (Alex Rattray)
  • Fix rest parameters with array and objects (#424) (Brian Ng)
  • Fix number parser (#433) (Alex Kuzmenko)

Docs

Internal

  • Use babel-register script when running babel smoke tests (#442) (Brian Ng)

7.0.0-beta.7 (2017-03-22)

Spec Compliance

  • Remove babylon plugin for template revision since it's stage-4 (#426) (Henry Zhu)

Bug Fix

  • Fix push-pop logic in flow (#405) (Daniel Tschinder)

7.0.0-beta.6 (2017-03-21)

New Feature

  • Add support for invalid escapes in tagged templates (#274) (Kevin Gibbons)

Polish

  • Improves error message when super is called outside of constructor (#408) (Arshabh Kumar Agarwal)

Docs

  • [7.0] Moved value field in spec from ObjectMember to ObjectProperty as ObjectMethod's don't have it (#415) [skip ci] (James Browning)

7.0.0-beta.5 (2017-03-21)

Bug Fix

  • Throw error if new.target is used outside of a function (#402) (Brian Ng)
  • Fix parsing of class properties (#351) (Kevin Gibbons)

Other

  • Test runner: Detect extra property in 'actual' but not in 'expected'. (#407) (Andy)
  • Optimize travis builds (#419) (Daniel Tschinder)
  • Update codecov to 2.0 (#412) (Daniel Tschinder)
  • Fix spec for ClassMethod: It doesn't have a function, it is a function. (#406) [skip ci] (Andy)
  • Changed Non-existent RestPattern to RestElement which is what is actually parsed (#409) [skip ci] (James Browning)
  • Upgrade flow to 0.41 (Daniel Tschinder)
  • Fix watch command (#403) (Brian Ng)
  • Update yarn lock (Daniel Tschinder)
  • Fix watch command (#403) (Brian Ng)
  • chore(package): update flow-bin to version 0.41.0 (#395) (greenkeeper[bot])
  • Add estree test for correct order of directives (Daniel Tschinder)
  • Add DoExpression to spec (#364) (Alex Kuzmenko)
  • Mention cloning of repository in CONTRIBUTING.mdopen in new window (#391) [skip ci] (Sumedh Nimkarde)
  • Explain how to run only one test (#389) [skip ci] (Aaron Ang)

7.0.0-beta.4 (2017-03-01)

  • Don't consume async when checking for async func decl (#377) (Brian Ng)
  • add ranges option [skip ci] (Henry Zhu)
  • Don't parse class properties without initializers when classProperties is disabled and Flow is enabled (#300) (Andrew Levine)

7.0.0-beta.3 (2017-02-28)

  • [7.0] Change RestProperty/SpreadProperty to RestElement/SpreadElement (#384)
  • Merge changes from 6.x

7.0.0-beta.2 (2017-02-20)

  • estree: correctly change literals in all cases (#368) (Daniel Tschinder)

7.0.0-beta.1 (2017-02-20)

  • Fix negative number literal typeannotations (#366) (Daniel Tschinder)
  • Update contributing with more test info [skip ci] (#355) (Brian Ng)

7.0.0-beta.0 (2017-02-15)

  • Reintroduce Variance node (#333) (Daniel Tschinder)
  • Rename NumericLiteralTypeAnnotation to NumberLiteralTypeAnnotation (#332) (Charles Pick)
  • [7.0] Remove ForAwaitStatement, add await flag to ForOfStatement (#349) (Brandon Dail)
  • chore(package): update ava to version 0.18.0 (#345) (greenkeeper[bot])
  • chore(package): update babel-plugin-istanbul to version 4.0.0 (#350) (greenkeeper[bot])
  • Change location of ObjectTypeIndexer to match flow (#228) (Daniel Tschinder)
  • Rename flow AST Type ExistentialTypeParam to ExistsTypeAnnotation (#322) (Toru Kobayashi)
  • Revert "Temporary rollback for erroring on trailing comma with spread (#154)" (#290) (Daniel Tschinder)
  • Remove classConstructorCall plugin (#291) (Brian Ng)
  • Update yarn.lock (Daniel Tschinder)
  • Update cross-env to 3.x (Daniel Tschinder)
  • [7.0] Remove node 0.10, 0.12 and 5 from Travis (#284) (Sergey Rubanov)
  • Remove String.fromCodePoint shim (#279) (Mathias Bynens)

6.16.1 (2017-02-23)

🐛 Regression

Need to modify Babel for this AST node change, so moving to 7.0.

  • Revert "Don't parse class properties without initializers when classProperties plugin is disabled, and Flow is enabled" (#376open in new window)

react-nativeopen in new window broke with this so we reverted.

6.16.0 (2017-02-23)

🚀 New Feature

ESTree compatibility as plugin (#277open in new window) (Daniel Tschinder)

We finally introduce a new compatibility layer for ESTree. To put babylon into ESTree-compatible mode the new plugin estree can be enabled. In this mode the parser will output an AST that is compliant to the specs of ESTreeopen in new window

We highly recommend everyone who uses babylon outside of babel to use this plugin. This will make it much easier for users to switch between different ESTree-compatible parsers. We so far tested several projects with different parsers and exchanged their parser to babylon and in nearly all cases it worked out of the box. Some other estree-compatible parsers include acorn, esprima, espree, flow-parser, etc.

To enable estree mode simply add the plugin in the config:

{
  "plugins": [ "estree" ]
}

If you want to migrate your project from non-ESTree mode to ESTree, have a look at our Readmeopen in new window, where all deviations are mentioned.

Add a parseExpression public method (#213open in new window) (jeromew)

Babylon exports a new function to parse a single expression

import { parseExpression } from 'babylon';

const ast = parseExpression('x || y && z', options);

The returned AST will only consist of the expression. The options are the same as for parse()

Add startLine option (#346open in new window) (Raphael Mu)

A new option was added to babylon allowing to change the initial linenumber for the first line which is usually 1. Changing this for example to 100 will make line 1 of the input source to be marked as line 100, line 2 as 101, line 3 as 102, ...

Function predicate declaration (#103open in new window) (Panagiotis Vekris)

Added support for function predicates which flow introduced in version 0.33.0

declare function is_number(x: mixed): boolean %checks(typeof x === "number");

Allow imports in declare module (#315open in new window) (Daniel Tschinder)

Added support for imports within module declarations which flow introduced in version 0.37.0

declare module "C" {
  import type { DT } from "D";
  declare export type CT = { D: DT };
}

👓 Spec Compliance

Forbid semicolons after decorators in classes (#352open in new window) (Kevin Gibbons)

This example now correctly throws an error when there is a semicolon after the decorator:

class A {
@a;
foo(){}
}

Keywords are not allowed as local specifier (#307open in new window) (Daniel Tschinder)

Using keywords in imports is not allowed anymore:

import { default } from "foo";
import { a as debugger } from "foo";

Do not allow overwritting of primitive types (#314open in new window) (Daniel Tschinder)

In flow it is now forbidden to overwrite the primitive types "any", "mixed", "empty", "bool", "boolean", "number", "string", "void" and "null" with your own type declaration.

Disallow import type { type a } from … (#305open in new window) (Daniel Tschinder)

The following code now correctly throws an error

import type { type a } from "foo";

Don't parse class properties without initializers when classProperties is disabled and Flow is enabled (#300open in new window) (Andrew Levine)

Ensure that you enable the classProperties plugin in order to enable correct parsing of class properties. Prior to this version it was possible to parse them by enabling the flow plugin but this was not intended the behaviour.

If you enable the flow plugin you can only define the type of the class properties, but not initialize them.

Fix export default async function to be FunctionDeclaration (#324open in new window) (Daniel Tschinder)

Parsing the following code now returns a FunctionDeclaration AST node instead of FunctionExpression.

export default async function bar() {};

💅 Polish

Improve error message on attempt to destructure named import (#288open in new window) (Brian Ng)

🐛 Bug Fix

Fix negative number literal typeannotations (#366open in new window) (Daniel Tschinder)

Ensure takeDecorators is called on exported class (#358open in new window) (Brian Ng)

ESTree: correctly change literals in all cases (#368open in new window) (Daniel Tschinder)

Correctly convert RestProperty to Assignable (#339open in new window) (Daniel Tschinder)

Fix #321 by allowing question marks in type params (#338open in new window) (Daniel Tschinder)

Fix #336 by correctly setting arrow-param (#337open in new window) (Daniel Tschinder)

Fix parse error when destructuring set with default value (#317open in new window) (Brian Ng)

Fix ObjectTypeCallProperty static (#298open in new window) (Dan Harper)

🏠 Internal

Fix generator-method-with-computed-name spec (#360open in new window) (Alex Rattray)

Fix flow type-parameter-declaration test with unintended semantic (#361open in new window) (Alex Rattray)

Cleanup and splitup parser functions (#295open in new window) (Daniel Tschinder)

chore(package): update flow-bin to version 0.38.0 (#313open in new window) (greenkeeper[bot])

Call inner function instead of 1:1 copy to plugin (#294open in new window) (Daniel Tschinder)

Update eslint-config-babel to the latest version 🚀 (#299open in new window) (greenkeeper[bot])

Update eslint-config-babel to the latest version 🚀 (#293open in new window) (greenkeeper[bot])

devDeps: remove eslint-plugin-babel (#292open in new window) (Kai Cataldo)

Correct indent eslint rule config (#276open in new window) (Daniel Tschinder)

Fail tests that have expected.json and throws-option (#285open in new window) (Daniel Tschinder)

📝 Documentation

Update contributing with more test info [skip ci] (#355open in new window) (Brian Ng)

Update API documentation (#330open in new window) (Timothy Gu)

Added keywords to package.json (#323open in new window) (Dmytro)

AST spec: fix casing of RegExpLiteral (#318open in new window) (Mathias Bynens)

6.15.0 (2017-01-10)

👓 Spec Compliance

Add support for Flow shorthand import type (#267open in new window) (Jeff Morrison)

This change implements flows new shorthand import syntax and where previously you had to write this code:

import {someValue} from "blah";
import type {someType} from "blah";
import typeof {someOtherValue} from "blah";

you can now write it like this:

import {
  someValue,
  type someType,
  typeof someOtherValue,
} from "blah";

For more information look at thisopen in new window pull request.

flow: allow leading pipes in all positions (#256open in new window) (Vladimir Kurchatkin)

This change now allows a leading pipe everywhere types can be used:

var f = (x): | 1 | 2 => 1;

Throw error when exporting non-declaration (#241open in new window) (Kai Cataldo)

Previously babylon parsed the following exports, although they are not valid:

export typeof foo;
export new Foo();
export function() {};
export for (;;);
export while(foo);

🐛 Bug Fix

Don't set inType flag when parsing property names (#266open in new window) (Vladimir Kurchatkin)

This fixes parsing of this case:

const map = {
  [age <= 17] : 'Too young'
};

Fix source location for JSXEmptyExpression nodes (fixes #248) (#249open in new window) (James Long)

The following case produced an invalid AST

<div>{/* foo */}</div>

Use fromCodePoint to convert high value unicode entities (#243open in new window) (Ryan Duffy)

When high value unicode entities (e.g. 💩) were used in the input source code they are now correctly encoded in the resulting AST.

Rename folder to avoid Windows-illegal characters (#281open in new window) (Ryan Plant)

Allow this.state.clone() when parsing decorators (#262open in new window) (Alex Rattray)

🏠 Internal

User external-helpers (#254open in new window) (Daniel Tschinder)

Add watch script for dev (#234open in new window) (Kai Cataldo)

Freeze current plugins list for "*" option, and remove from README.mdopen in new window (#245open in new window) (Andrew Levine)

Prepare tests for multiple fixture runners. (#240open in new window) (Daniel Tschinder)

Add some test coverage for decorators stage-0 plugin (#250open in new window) (Andrew Levine)

Refactor tokenizer types file (#263open in new window) (Sven SAULEAU)

Update eslint-config-babel to the latest version 🚀 (#273open in new window) (greenkeeper[bot])

chore(package): update rollup to version 0.41.0 (#272open in new window) (greenkeeper[bot])

chore(package): update flow-bin to version 0.37.0 (#255open in new window) (greenkeeper[bot])

6.14.1 (2016-11-17)

🐛 Bug Fix

Allow "plugins": ["*"] (#229open in new window) (Daniel Tschinder)

{
  "plugins": ["*"]
}

Will include all parser plugins instead of specifying each one individually. Useful for tools like babel-eslint, jscodeshift, and ast-explorer.

6.14.0 (2016-11-16)

👓 Spec Compliance

Throw error for reserved words enum and await (#195open in new window) (Kai Cataldo)

11.6.2.2 Future Reserved Wordsopen in new window

Babylon will throw for more reserved words such as enum or await (in strict mode).

class enum {} // throws
class await {} // throws in strict mode (module)

Optional names for function types and object type indexers (#197open in new window) (Gabe Levi)

So where you used to have to write

type A = (x: string, y: boolean) => number;
type B = (z: string) => number;
type C = { [key: string]: number };

you can now write (with flow 0.34.0)

type A = (string, boolean) => number;
type B = string => number;
type C = { [string]: number };

Parse flow nested array type annotations like number[][] (#219open in new window) (Bernhard Häussner)

Supports these form now of specifying array types:

var a: number[][][][];
var b: string[][];

🐛 Bug Fix

Correctly eat semicolon at the end of DelcareModuleExports (#223open in new window) (Daniel Tschinder)

declare module "foo" { declare module.exports: number }
declare module "foo" { declare module.exports: number; }  // also allowed now

🏠 Internal

v6.13.1 (2016-10-26)

💅 Polish

const babylon = require('babylon');
const ast = babylon.parse('var foo = "lol";');

With that test case, there was a ~95ms savings by removing the need for node to build/traverse the dependency graph.

Without bundlingimage

With bundlingimage

v6.13.0 (2016-10-21)

👓 Spec Compliance

Property variance type annotations for Flow plugin (#161open in new window) (Sam Goldman)

See https://flowtype.org/docs/variance.htmlopen in new window for more information

type T = { +p: T };
interface T { -p: T };
declare class T { +[k:K]: V };
class T { -[k:K]: V };
class C2 { +p: T = e };

Raise error on duplicate definition of proto (#183open in new window) (Moti Zilberman)

({ __proto__: 1, __proto__: 2 }) // Throws an error now

🐛 Bug Fix

Flow: Allow class properties to be named static (#184open in new window) (Moti Zilberman)

declare class A {
  static: T;
}

Allow "async" as identifier for object literal property shorthand (#187open in new window) (Andrew Levine)

var foo = { async, bar };

💅 Polish

Fix flowtype and add inType to state (#189open in new window) (Daniel Tschinder)

This improves the performance slightly (because of hidden classes)

🏠 Internal

Fix .gitattributes line ending setting (#191open in new window) (Moti Zilberman)

Increase test coverage (#175open in new window (Moti Zilberman)

Readd missin .eslinignore for IDEs (Daniel Tschinder)

Error on missing expected.json fixture in CI (#188open in new window) (Moti Zilberman)

Add .gitattributes and .editorconfig for LF line endings (#179open in new window) (Moti Zilberman)

Fixes two tests that are failing after the merge of #172 (#177open in new window) (Moti Zilberman)

v6.12.0 (2016-10-14)

👓 Spec Compliance

Implement import() syntax (#163open in new window) (Jordan Gensler)

Dynamic Import

This repository contains a proposal for adding a "function-like" import() module loading syntactic form to JavaScript

import(`./section-modules/${link.dataset.entryModule}.js`)
.then(module => {
  module.loadPageInto(main);
})

Add EmptyTypeAnnotation (#171open in new window) (Sam Goldman)

EmptyTypeAnnotation

Just wasn't covered before.

type T = empty;

🐛 Bug Fix

Fix crash when exporting with destructuring and sparse array (#170open in new window) (Jeroen Engels)

// was failing due to sparse array
export const { foo: [ ,, qux7 ] } = bar;

Allow keyword in Flow object declaration property names with type parameters (#146open in new window) (Dan Harper)

declare class X {
  foobar<T>(): void;
  static foobar<T>(): void;
}

Allow keyword in object/class property names with Flow type parameters (#145open in new window) (Dan Harper)

class Foo {
  delete<T>(item: T): T {
    return item;
  }
}

Allow typeAnnotations for yield expressions (#174open in new window)) (Daniel Tschinder)

function *foo() {
  const x = (yield 5: any);
}

💅 Polish

Annotate more errors with expected token (#172open in new window)) (Moti Zilberman)

// Unexpected token, expected ; (1:6)
{ set 1 }

🏠 Internal

Remove kcheck (#173open in new window)) (Daniel Tschinder)

Also run flow, linting, babel tests on separate instances (add back node 0.10)

v6.11.6 (2016-10-12)

🐛 Bug Fix/Regression

Fix crash when exporting with destructuring and sparse array (#170open in new window) (Jeroen Engels)

// was failing with `Cannot read property 'type' of null` because of null identifiers
export const { foo: [ ,, qux7 ] } = bar;

v6.11.5 (2016-10-12)

👓 Spec Compliance

Fix: Check for duplicate named exports in exported destructuring assignments (#144open in new window) (Kai Cataldo)

// `foo` has already been exported. Exported identifiers must be unique. (2:20)
export function foo() {};
export const { a: [{foo}] } = bar;

Fix: Check for duplicate named exports in exported rest elements/properties (#164open in new window) (Kai Cataldo)

// `foo` has already been exported. Exported identifiers must be unique. (2:22)
export const foo = 1;
export const [bar, ...foo] = baz;

🐛 Bug Fix

Fix: Allow identifier async for default param in arrow expression (#165open in new window) (Kai Cataldo)

// this is ok now
const test = ({async = true}) => {};

💅 Polish

Babylon will now print out the token it's expecting if there's a SyntaxError (#150open in new window) (Daniel Tschinder)

# So in the case of a missing ending curly (`}`)
Module build failed: SyntaxError: Unexpected token, expected } (30:0)
  28 |   }
  29 |
> 30 |
     | ^

v6.11.4 (2016-10-03)

Temporary rollback for erroring on trailing comma with spread (#154) (Henry Zhu)

v6.11.3 (2016-10-01)

👓 Spec Compliance

Add static errors for object rest (#149) (@danezopen in new window)

https://github.com/sebmarkbage/ecmascript-rest-spreadopen in new window

Object rest copies the rest of properties from the right hand side obj starting from the left to right.

let { x, y, ...z } =  { x: 1, y: 2, z: 3 };
// x = 1
// y = 2
// z = { z: 3 }

New Syntax Errors:

SyntaxError: The rest element has to be the last element when destructuring (1:10)

> 1 | let { ...x, y, z } = { x: 1, y: 2, z: 3};
    |           ^
# Previous behavior:
# x = { x: 1, y: 2, z: 3 }
# y = 2
# z = 3

Before, this was just a more verbose way of shallow copying obj since it doesn't actually do what you think.

SyntaxError: Cannot have multiple rest elements when destructuring (1:13)

> 1 | let { x, ...y, ...z } = { x: 1, y: 2, z: 3};
    |              ^
# Previous behavior:
# x = 1
# y = { y: 2, z: 3 }
# z = { y: 2, z: 3 }

Before y and z would just be the same value anyway so there is no reason to need to have both.

SyntaxError: A trailing comma is not permitted after the rest element (1:16)

let { x, y, ...z, } = obj;

The rationale for this is that the use case for trailing comma is that you can add something at the end without affecting the line above. Since a RestProperty always has to be the last property it doesn't make sense.


get / set are valid property names in default assignment (#142) (@jezellopen in new window)

// valid
function something({ set = null, get = null }) {}

v6.11.2 (2016-09-23)

Bug Fix

// regression with duplicate export check
SyntaxError: ./typography.js: `undefined` has already been exported. Exported identifiers must be unique. (22:13)
  20 |
  21 | export const { rhythm } = typography;
> 22 | export const { TypographyStyle } = typography

Bail out for now, and make a change to account for destructuring in the next release.

6.11.1 (2016-09-22)

Bug Fix

  • #137open in new window - Fix a regression with duplicate exports - it was erroring on all keys in Object.prototype. @danez
export toString from './toString';
`toString` has already been exported. Exported identifiers must be unique. (1:7)
> 1 | export toString from './toString';
    |        ^
  2 |

6.11.0 (2016-09-22)

Spec Compliance (will break CI)

// Only one default export allowed per module. (2:9)
export default function() {};
export { foo as default };

// Only one default export allowed per module. (2:0)
export default {};
export default function() {};

// `Foo` has already been exported. Exported identifiers must be unique. (2:0)
export { Foo };
export class Foo {};

New Feature (Syntax)

// AST
interface ClassProperty <: Node {
  type: "ClassProperty";
  key: Identifier;
  value: Expression;
  computed: boolean; // added
}
// with "plugins": ["classProperties"]
class Foo {
  [x]
  ['y']
}

class Bar {
  [p]
  [m] () {}
}

Bug Fix

declare class X {
    a: number;
    static b: number; // static
    c: number; // this was being marked as static in the AST as well
}

Polish

// Used to error with:
// SyntaxError: Assigning to rvalue (1:0)

// Now:
// Invalid left-hand side in assignment expression (1:0)
3 = 4

// Invalid left-hand side in for-in statement (1:5)
for (+i in {});

Internal

6.10.0 (2016-09-19)

We plan to include some spec compliance bugs in patch versions. An example was the multiple default exports issue.

Spec Compliance

It is a Syntax Error if ContainsUseStrict of FunctionBody is true and IsSimpleParameterList of FormalParameters is false. https://tc39.github.io/ecma262/2016/#sec-function-definitions-static-semantics-early-errorsopen in new window

More Context: tc39-notesopen in new window

For example:

// this errors because it uses destructuring and default parameters
// in a function with a "use strict" directive
function a([ option1, option2 ] = []) {
  "use strict";
}

The solution would be to use a top level "use strict" or to remove the destructuring or default parameters when using a function + "use strict" or to.

New Feature

Added to flow in https://github.com/facebook/flow/commit/c710c40aa2a115435098d6c0dfeaadb023cd39b8open in new window

Looks like:

var a : {| x: number, y: string |} = { x: 0, y: 'foo' };

Bug Fixes

Misc

  • Add tests for export extensions (#127open in new window) (Daniel Tschinder)
  • Fix Contributing guidelines [skip ci] (Daniel Tschinder)

6.9.2 (2016-09-09)

The only change is to remove the babel-runtime dependency by compiling with Babel's ES2015 loose mode. So using babylon standalone should be smaller.

6.9.1 (2016-08-23)

This release contains mainly small bugfixes but also updates babylons default mode to es2017. The features for exponentiationOperator, asyncFunctions and trailingFunctionCommas which previously needed to be activated via plugin are now enabled by default and the plugins are now no-ops.

Bug Fixes

6.9.0 (2016-08-16)

New syntax support

(Be aware that React is not going to support this syntax)

<div>
  {...todos.map(todo => <Todo key={todo.id} todo={todo}/>)}
</div>
declare module "foo" {
  declare module.exports: {}
}

New Features

Bug Fixes

Internal

  • Add codecoverage to tests @danez
  • Fix tests to not save expected output if we expect the test to fail @danez
  • Make a shallow clone of babel for testing @danez
  • chore(package): update cross-env to version 2.0.0 (#77open in new window) @greenkeeperio-bot
  • chore(package): update ava to version 0.16.0 (#86open in new window) @greenkeeperio-bot
  • chore(package): update babel-plugin-istanbul to version 2.0.0 (#89open in new window) @greenkeeperio-bot
  • chore(package): update nyc to version 8.0.0 (#88open in new window) @greenkeeperio-bot

6.8.4 (2016-07-06)

Bug Fixes

6.8.3 (2016-07-02)

Bug Fixes

6.8.2 (2016-06-24)

Bug Fixes

  • Fix parse error with yielding jsx elements in generators function* it() { yield <a></a>; } (#31open in new window) @eldereal
  • When cloning nodes do not clone its comments (#24open in new window) @danez
  • Fix parse errors when using arrow functions with an spread element and return type (...props): void => {} (#10open in new window) @danez
  • Fix leading comments added from previous node (#23open in new window) @danez
  • Fix parse errors with flow's optional arguments (arg?) => {} (#19open in new window) @danez
  • Support negative numeric type literals @kittens
  • Remove line terminator restriction after await keyword @kittens
  • Remove grouped type arrow restriction as it seems flow no longer has it @kittens
  • Fix parse error with generic methods that have the name get or set class foo { get() {} } (#55open in new window) @vkurchatkin
  • Fix parse error with arrow functions that have flow type parameter declarations <T>(x: T): T => x; (#54open in new window) @gabelevi

Documentation

Internal

  • Enable skipped tests (#16open in new window) @danez
  • Add script to test latest version of babylon with babel (#21open in new window) @danez
  • Upgrade test runner ava @kittens
  • Add missing generate-identifier-regex script @kittens
  • Rename parser context types @kittens
  • Add node v6 to travis testing @hzoo
  • Update to Unicode v9 (#45open in new window) @mathiasbynens

6.8.1 (2016-06-06)

New Feature

  • Parse type parameter declarations with defaults like type Foo<T = string> = T

Bug Fixes

  • Type parameter declarations need 1 or more type parameters.
  • The existential type * is not a valid type parameter.
  • The existential type * is a primary type

Spec Compliance

  • The param list for type parameter declarations now consists of TypeParameter nodes
  • New TypeParameter AST Node (replaces using the Identifier node before)
interface TypeParameter <: Node {
  bound: TypeAnnotation;
  default: TypeAnnotation;
  name: string;
  variance: "plus" | "minus";
}

6.8.0 (2016-05-02)

New Feature

Parse Method Parameter Decorators (#12open in new window)

Method Parameter Decoratorsopen in new window is now a TC39 stage 0 proposalopen in new window.

Examples:

class Foo {
  constructor(@foo() x, @bar({ a: 123 }) @baz() y) {}
}

export default function func(@foo() x, @bar({ a: 123 }) @baz() y) {}

var obj = {
  method(@foo() x, @bar({ a: 123 }) @baz() y) {}
};
Parse for-await statements (w/ asyncGenerators plugin) (#17open in new window)

There is also a new node type, ForAwaitStatement.

Async generators and for-awaitopen in new window are now a stage 2 proposalopen in new window.

Example:

async function f() {
  for await (let x of y);
}
欢迎扫码加我微信
拉你进源码共读群
一起学习源码