<p dir="auto">An arrow function as part of an extends clause requires parenthesis. This was changed before ES2015 became final, see <a href="http://wiki.ecmascript.org/doku.php?id=harmony%3Aspecification_drafts#january_20_2014_draft_rev_22" rel="nofollow">http://wiki.ecmascript.org/doku.php?id=harmony%3Aspecification_drafts#january_20_2014_draft_rev_22</a></p>
<p dir="auto"><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gabelevi/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gabelevi">@gabelevi</a> summarized the issue internally at FB:</p>
<ol dir="auto">
<li>After "extends" there is a LeftHandSideExpression: <a href="http://www.ecma-international.org/ecma-262/6.0/#sec-class-definitions" rel="nofollow">http://www.ecma-international.org/ecma-262/6.0/#sec-class-definitions</a></li>
<li>LeftHandSideExpression is a CallExpression or a NewExpression: <a href="http://www.ecma-international.org/ecma-262/6.0/#sec-left-hand-side-expressions" rel="nofollow">http://www.ecma-international.org/ecma-262/6.0/#sec-left-hand-side-expressions</a></li>
<li>ArrowFunction is an AssignmentExpression: <a href="http://www.ecma-international.org/ecma-262/6.0/#sec-assignment-operators" rel="nofollow">http://www.ecma-international.org/ecma-262/6.0/#sec-assignment-operators</a></li>
</ol>
<p dir="auto">These non-programs are accepted by babel: <code class="notranslate">!()=&gt;0</code>, <code class="notranslate">a + ()=&gt;0</code>, <code class="notranslate">a || ()=&gt;0</code>, etc.</p>
<p dir="auto">Arrows should have the precedence of an assignment expression.</p>