mirror of https://github.com/tc39/test262.git
39 lines
931 B
JavaScript
39 lines
931 B
JavaScript
// Copyright (C) 2017 Lucas Azzola. All rights reserved.
|
|
// This code is governed by the BSD license found in the LICENSE file.
|
|
|
|
/*---
|
|
author: Lucas Azzola
|
|
esid: pending
|
|
description: lexical environment runtime semantics for optional catch binding
|
|
features: [optional-catch-binding]
|
|
info: |
|
|
Runtime Semantics: CatchClauseEvaluation
|
|
|
|
Catch : catch Block
|
|
Let oldEnv be the running execution context's LexicalEnvironment.
|
|
Let catchEnv be NewDeclarativeEnvironment(oldEnv).
|
|
Set the running execution context's LexicalEnvironment to catchEnv.
|
|
(...)
|
|
Set the running execution context's LexicalEnvironment to oldEnv.
|
|
Return Completion(B).
|
|
---*/
|
|
|
|
let x = 1;
|
|
let ranCatch = false;
|
|
|
|
try {
|
|
x = 2;
|
|
throw new Error();
|
|
} catch {
|
|
let x = 3;
|
|
let y = true;
|
|
ranCatch = true;
|
|
}
|
|
|
|
assert(ranCatch, 'executed `catch` block');
|
|
assert.sameValue(x, 2);
|
|
|
|
assert.throws(ReferenceError, function() {
|
|
y;
|
|
});
|