| //------------------------------------------------------------------------------------------------------- |
| // Copyright (C) Microsoft. All rights reserved. |
| // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. |
| //------------------------------------------------------------------------------------------------------- |
| |
| var foo = function(){} |
| function letTest() { |
| let sc1 = 0; |
| with({}) |
| { |
| sc1 = foo; |
| sc1(); |
| } |
| this.method0.apply(this, arguments); |
| } |
| |
| function constTest() { |
| const sc1 = 0; |
| with({}) |
| { |
| sc1 = foo; |
| sc1(); |
| } |
| this.method0.apply(this, arguments); |
| } |
| |
| function varTest() { |
| with({}) |
| { |
| var sc1 = foo; |
| sc1(); |
| } |
| this.method0.apply(this, arguments); |
| } |
| |
| function TryFunction(f) |
| { |
| try |
| { |
| f(); |
| }catch (e) { |
| if (e instanceof TypeError) { // Unable to get property 'apply' of undefined or null reference (method0) |
| return true; |
| } |
| if (e instanceof ReferenceError) { // Assignment to const |
| return true; |
| } |
| } |
| } |
| if(TryFunction(letTest) && TryFunction(constTest) && TryFunction(varTest)) |
| { |
| print("Pass"); |
| } |