bug_OS17895855.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. //-------------------------------------------------------------------------------------------------------
  2. // Copyright (C) Microsoft. All rights reserved.
  3. // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
  4. //-------------------------------------------------------------------------------------------------------
  5. WScript.LoadScriptFile("..\\UnitTestFramework\\UnitTestFramework.js");
  6. var tests = [
  7. {
  8. name: "Concise-body lambda function containing in expression",
  9. body: function () {
  10. var l = a => '0' in [123]
  11. assert.areEqual("a => '0' in [123]", l.toString(), "consise-body lambda containing in expression");
  12. assert.isTrue(l(), "in expression can be the concise-body lambda body");
  13. }
  14. },
  15. {
  16. name: "Concise-body lambda function as var decl initializer in a for..in loop",
  17. body: function () {
  18. for (var a = () => 'pass' in []) {
  19. assert.fail("Should not enter for loop since [] has no properties");
  20. }
  21. assert.areEqual('pass', a(), "var decl from for loop should have initialized a");
  22. for (var a2 = () => 'pass' in [123]) {
  23. assert.areEqual('0', a2, "Should enter the for loop with property '0'");
  24. }
  25. assert.areEqual('0', a2, "var decl from for loop should have been assigned to during iteration");
  26. }
  27. },
  28. {
  29. name: "Concise-body lambda function as var decl initializer in a for..in..in loop",
  30. body: function () {
  31. for (var b = () => 'pass' in [] in []) {
  32. assert.fail("Should not enter for loop");
  33. }
  34. assert.areEqual('pass', b(), "var decl from for loop should still have initial value");
  35. for (var b2 = () => 'pass' in '0' in [123]) {
  36. assert.fail("var decl initialization turns into var b2 = () => 'pass' in true which should not enter this loop");
  37. }
  38. assert.areEqual('pass', b2(), "var decl was not overriden inside the for loop");
  39. }
  40. },
  41. ];
  42. testRunner.runTests(tests, { verbose: WScript.Arguments[0] != "summary" });