Files
liuxingbaoyuandGitHub f431e0cc85 Fix hoisting of function declarations in loops and switch (#17691)
* fix

* fix switch

* Revert "Fix order of `transform-block-scoped-functions` in `preset-env` (#16475)"

This reverts commit 15a3342b39.

* clean

* fix test

* use enter

* fix
2026-01-23 18:36:41 +01:00

37 lines
1.1 KiB
JavaScript

// |reftest| error:ReferenceError
// Copyright (C) 2020 Rick Waldron. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-switch-statement-runtime-semantics-evaluation
description: Creation of new lexical environment (into `default` clause)
info: |
1. Let exprRef be the result of evaluating Expression.
2. Let switchValue be ? GetValue(exprRef).
3. Let oldEnv be the running execution context's LexicalEnvironment.
4. Let blockEnv be NewDeclarativeEnvironment(oldEnv).
5. Perform BlockDeclarationInstantiation(CaseBlock, blockEnv).
6. Set the running execution context's LexicalEnvironment to blockEnv.
7. Let R be the result of performing CaseBlockEvaluation of CaseBlock with
argument switchValue.
[...]
negative:
phase: runtime
type: ReferenceError
---*/
expect(() => {
{
var _x2 = function _x() {
_x = babelHelpers.wrapAsyncGenerator(function* () {});
return _x.apply(this, arguments);
},
_x3 = function x() {
return _x2.apply(this, arguments);
};
switch (0) {
default:
}
}
x;
}).toThrow(ReferenceError);