program-non-strict.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. "do not use strict";
  2. "no really";
  3. // /\ Valid directives which should not trigger strict mode
  4. test("basic functionality", () => {
  5. expect(isStrictMode()).toBeFalse();
  6. (function () {
  7. expect(isStrictMode()).toBeFalse();
  8. })();
  9. (() => {
  10. expect(isStrictMode()).toBeFalse();
  11. })();
  12. (() => {
  13. expect(isStrictMode()).toBeFalse();
  14. })();
  15. function a() {
  16. expect(isStrictMode()).toBeFalse();
  17. }
  18. a();
  19. eval("expect(isStrictMode()).toBeFalse()");
  20. });
  21. test("functions with strict mode", () => {
  22. expect(isStrictMode()).toBeFalse();
  23. function a() {
  24. "this is allowed trust me";
  25. "use strict";
  26. expect(isStrictMode()).toBeTrue();
  27. }
  28. a();
  29. expect(isStrictMode()).toBeFalse();
  30. (() => {
  31. "use strict";
  32. expect(isStrictMode()).toBeTrue();
  33. })();
  34. function b() {
  35. eval("expect(isStrictMode()).toBeFalse()");
  36. function nested() {
  37. "use strict";
  38. eval("expect(isStrictMode()).toBeTrue()");
  39. }
  40. nested();
  41. eval("expect(isStrictMode()).toBeFalse()");
  42. }
  43. b();
  44. });