maybe-promise-fences.ts:8:10 - error SC2009: values of type 'Promise<number> | Thenish' cannot be compiled: the union shape is supported, but its arm 'Thenish' declares 'then' beside a promise arm, so 'await' would have to adopt it as a thenable (a maybe-promise union's data arms must not be thenable)

  7 | }
  8 | function thenable(): Thenish | Promise<number> {
    |          ^~~~~~~~
  9 |   return Promise.resolve(1);

  hint: the outer shape is supported — the named component is the blocker; restate it inside the compilable set (number, string, boolean, arrays, Maps, Sets, RegExp, functions, classes, records, unions of those, and 'unknown')

maybe-promise-fences.ts:11:20 - error SC2004: uses of 'thenable' inherit the blocker on its declaration

  10 | }
  11 | console.log(typeof thenable);
     |                    ^~~~~~~~
  12 | 

  hint: the declaration of 'thenable' did not compile — fix the diagnostic reported there and these sites clear with it

maybe-promise-fences.ts:14:10 - error SC2009: values of type 'boolean | Promise<string> | Promise<number>' cannot be compiled: the union shape is supported, but it has several promise arms ('Promise<string>' and 'Promise<number>'), and a compiled union holds at most one (the union tag is the 'instanceof Promise' test)

  13 | // Two promise arms: the union tag cannot tell them apart by instanceof.
  14 | function twoPromises(): Promise<number> | Promise<string> | boolean {
     |          ^~~~~~~~~~~
  15 |   return true;

  hint: the outer shape is supported — the named component is the blocker; restate it inside the compilable set (number, string, boolean, arrays, Maps, Sets, RegExp, functions, classes, records, unions of those, and 'unknown')

maybe-promise-fences.ts:17:20 - error SC2004: uses of 'twoPromises' inherit the blocker on its declaration

  16 | }
  17 | console.log(typeof twoPromises);
     |                    ^~~~~~~~~~~
  18 | 

  hint: the declaration of 'twoPromises' did not compile — fix the diagnostic reported there and these sites clear with it

maybe-promise-fences.ts:23:13 - error SC1090: console.log of 'Promise<string> | string' values ('Promise<string>' values have no inspect lowering) are not supported yet

  22 | }
  23 | console.log(maybe(true));
     |             ^~~~~~~~~~~
  24 | 

maybe-promise-fences.ts:27:50 - error SC2020: 'Promise.resolve over 'Promise<string> | string' at this result type' is part of the standard library types but has no scriptc lowering yet

  26 | // must be that arm's own promise type.
  27 | const widened = Promise.resolve<string | number>(maybe(false));
     |                                                  ^~~~~~~~~~~~
  28 | console.log(typeof widened);

  hint: the promise arm passes through identically, so it must already be the result's promise type

maybe-promise-fences.ts:32:13 - error SC1090: 'instanceof Promise' on '{ v: number }' values (only promises, promise-armed unions, and checked-dynamic values have a lowering) are not supported yet

  31 | const record = { v: 1 };
  32 | console.log(record instanceof Promise);
     |             ^~~~~~~~~~~~~~~~~~~~~~~~~
  33 | 