зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1198453 - Make ES7 Exponentiation operator nightly only. (r=jorendorff)
This commit is contained in:
Родитель
84431602a4
Коммит
4228187034
|
@ -1509,9 +1509,11 @@ TokenStream::getTokenInternal(TokenKind* ttp, Modifier modifier)
|
|||
goto out;
|
||||
|
||||
case '*':
|
||||
#ifdef JS_HAS_EXPONENTIATION
|
||||
if (matchChar('*'))
|
||||
tp->type = matchChar('=') ? TOK_POWASSIGN : TOK_POW;
|
||||
else
|
||||
#endif
|
||||
tp->type = matchChar('=') ? TOK_MULASSIGN : TOK_MUL;
|
||||
goto out;
|
||||
|
||||
|
@ -1823,7 +1825,7 @@ TokenStream::getStringOrTemplateToken(int untilChar, Token** tp)
|
|||
}
|
||||
|
||||
c = char16_t(val);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
} else if (TokenBuf::isRawEOLChar(c)) {
|
||||
|
|
|
@ -41,9 +41,14 @@
|
|||
*/
|
||||
#define JS_OLD_GETTER_SETTER_METHODS 1
|
||||
|
||||
/* Support for ES6 Classes. */
|
||||
#ifdef NIGHTLY_BUILD
|
||||
|
||||
/* Support for ES6 Classes. */
|
||||
#define JS_HAS_CLASSES 1
|
||||
#endif
|
||||
|
||||
/* Support for ES7 Exponentiation proposal. */
|
||||
//#define JS_HAS_EXPONENTIATION 1
|
||||
|
||||
#endif // NIGHTLY_BUILD
|
||||
|
||||
#endif /* jsversion_h */
|
||||
|
|
|
@ -9,6 +9,8 @@ var summary = "Implement the exponentiation operator";
|
|||
|
||||
print(BUGNUMBER + ": " + summary);
|
||||
|
||||
var test = `
|
||||
|
||||
// Constant folding
|
||||
assertEq(2 ** 2 ** 3, 256);
|
||||
assertEq(1 ** 1 ** 4, 1);
|
||||
|
@ -99,6 +101,18 @@ function assertTrue(v) {
|
|||
function assertFalse(v) {
|
||||
assertEq(v, false);
|
||||
}
|
||||
`;
|
||||
|
||||
function exponentiationEnabled() {
|
||||
try {
|
||||
Function("1 ** 1");
|
||||
return true;
|
||||
} catch (e if e instanceof SyntaxError) { }
|
||||
return false;
|
||||
}
|
||||
|
||||
if (exponentiationEnabled())
|
||||
eval(test);
|
||||
|
||||
if (typeof reportCompare === "function")
|
||||
reportCompare(true, true);
|
||||
|
|
Загрузка…
Ссылка в новой задаче