text: test("basic functionality", () => {
      let callHoisted = hoisted();
      function hoisted() {
          return "foo";
      }
      expect(hoisted()).toBe("foo");
      expect(callHoisted).toBe("foo");
  });
  
  // First two calls produce a ReferenceError, but the declarations should be hoisted
  test.skip("functions are hoisted across non-lexical scopes", () => {
      expect(scopedHoisted).toBeUndefined();
      expect(callScopedHoisted).toBeUndefined();
      {
          var callScopedHoisted = scopedHoisted();
          function scopedHoisted() {
              return "foo";
          }
          expect(scopedHoisted()).toBe("foo");
          expect(callScopedHoisted).toBe("foo");
      }
      expect(scopedHoisted()).toBe("foo");
      expect(callScopedHoisted).toBe("foo");
  });
  
  test("functions are not hoisted across lexical scopes", () => {
      const test = () => {
          var iife = (function () {
              return declaredLater();
          })();
          function declaredLater() {
              return "yay";
          }
          return iife;
      };
  
      expect(() => declaredLater).toThrow(ReferenceError);
      expect(test()).toBe("yay");
  });
  