@scriptc/compiler 0.0.25 → 0.0.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +15 -7
  2. package/dist/backend/cc.d.ts +22 -0
  3. package/dist/backend/cc.js +128 -10
  4. package/dist/backend/cc.js.map +1 -1
  5. package/dist/backend/emission/emit-exprs.js +81 -10
  6. package/dist/backend/emission/emit-exprs.js.map +1 -1
  7. package/dist/backend/emission/emitter.d.ts +14 -1
  8. package/dist/backend/emission/emitter.js +126 -13
  9. package/dist/backend/emission/emitter.js.map +1 -1
  10. package/dist/backend/emission/may-throw.js +11 -1
  11. package/dist/backend/emission/may-throw.js.map +1 -1
  12. package/dist/backend/ffi-callbacks.d.ts +11 -0
  13. package/dist/backend/ffi-callbacks.js +33 -0
  14. package/dist/backend/ffi-callbacks.js.map +1 -0
  15. package/dist/backend/llvm/classes.js +21 -21
  16. package/dist/backend/llvm/classes.js.map +1 -1
  17. package/dist/backend/llvm/dyn.d.ts +7 -4
  18. package/dist/backend/llvm/dyn.js +145 -141
  19. package/dist/backend/llvm/dyn.js.map +1 -1
  20. package/dist/backend/llvm/emitter.d.ts +7 -1
  21. package/dist/backend/llvm/emitter.js +961 -303
  22. package/dist/backend/llvm/emitter.js.map +1 -1
  23. package/dist/backend/llvm/shapes.d.ts +4 -0
  24. package/dist/backend/llvm/shapes.js +26 -24
  25. package/dist/backend/llvm/shapes.js.map +1 -1
  26. package/dist/backend/llvm/unsupported.js +1 -1
  27. package/dist/backend/llvm/unsupported.js.map +1 -1
  28. package/dist/backend/llvm/walkers.d.ts +2 -0
  29. package/dist/backend/llvm/walkers.js +50 -46
  30. package/dist/backend/llvm/walkers.js.map +1 -1
  31. package/dist/coverage/surface-manifest.js +1 -1
  32. package/dist/coverage/surface-manifest.js.map +1 -1
  33. package/dist/diagnostics/diagnostic.d.ts +1 -1
  34. package/dist/diagnostics/diagnostic.js +3 -2
  35. package/dist/diagnostics/diagnostic.js.map +1 -1
  36. package/dist/ffi/profile.d.ts +20 -2
  37. package/dist/ffi/profile.js +130 -6
  38. package/dist/ffi/profile.js.map +1 -1
  39. package/dist/frontend/lowering/lower-calls.js +58 -22
  40. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  41. package/dist/frontend/lowering/lower-exprs.js +17 -7
  42. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  43. package/dist/frontend/lowering/lower-server.d.ts +5 -0
  44. package/dist/frontend/lowering/lower-server.js +129 -37
  45. package/dist/frontend/lowering/lower-server.js.map +1 -1
  46. package/dist/frontend/lowering/lower-stmts.js +8 -1
  47. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  48. package/dist/frontend/lowering/surfaces.d.ts +3 -2
  49. package/dist/frontend/lowering/surfaces.js +4 -3
  50. package/dist/frontend/lowering/surfaces.js.map +1 -1
  51. package/dist/frontend/npm.d.ts +16 -0
  52. package/dist/frontend/npm.js +257 -0
  53. package/dist/frontend/npm.js.map +1 -1
  54. package/dist/index.d.ts +7 -4
  55. package/dist/index.js +188 -5
  56. package/dist/index.js.map +1 -1
  57. package/dist/ir/nodes.d.ts +54 -13
  58. package/dist/ir/nodes.js +49 -7
  59. package/dist/ir/nodes.js.map +1 -1
  60. package/dist/ir/validate.js +10 -22
  61. package/dist/ir/validate.js.map +1 -1
  62. package/dist/library/profile.d.ts +11 -0
  63. package/dist/library/profile.js +74 -2
  64. package/dist/library/profile.js.map +1 -1
  65. package/dist/wasi-paths.d.ts +5 -0
  66. package/dist/wasi-paths.js +22 -0
  67. package/dist/wasi-paths.js.map +1 -0
  68. package/package.json +2 -2
  69. package/surface-manifest.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/ffi/profile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/ffi/profile.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  * generic instantiation (bounded by MAX_GENERIC_INSTANCES). */
5
5
  import * as ts from "../ts7/adapter.js";
6
6
  import { lowerGenMethodCall } from "./lower-generators.js";
7
- import { BOOL, BYTES_U8, CAUGHT, DYN, F64, JSVAL, STRING, SYMBOL_T, UNDEFINED_T, VOID, arrayOf, canBoxFuncIntoDyn, canConvertToDyn, canDynCheckTo, canMarshalTypedFuncIntoIsland, funcOf, isUnitType, shapeHasAccessorSlots, typeEquals } from "../../ir/nodes.js";
7
+ import { BOOL, CAUGHT, DYN, F64, JSVAL, STRING, SYMBOL_T, UNDEFINED_T, VOID, arrayOf, canBoxFuncIntoDyn, canConvertToDyn, canDynCheckTo, canMarshalTypedFuncIntoIsland, ffiClassType, ffiSourceParamTypes, funcOf, isFfiCallbackParam, isFfiContextParam, isUnitType, shapeHasAccessorSlots, typeEquals } from "../../ir/nodes.js";
8
8
  import { isJsSourceFile, locOf } from "../program.js";
9
9
  import { isGenericCallableMemberType, typeKey } from "../types.js";
10
10
  import { PoisonError, dynFallbackType, dynUndefinedExpr, importCallHandleType, jsFuncNameOf, newFnCtx, nodeThrowExpr } from "./lowerer.js";
@@ -2272,19 +2272,46 @@ export function lowerTimersMemberCall(L, expr, member, loc) {
2272
2272
  }
2273
2273
  return null;
2274
2274
  }
2275
- function ffiTypeForClass(cls) {
2276
- switch (cls) {
2277
- case "bool":
2278
- return BOOL;
2279
- case "string":
2280
- return STRING;
2281
- case "bytes":
2282
- return BYTES_U8;
2283
- case "void":
2284
- return VOID;
2285
- default:
2286
- return F64;
2275
+ function ffiSourceParams(binding) {
2276
+ return binding.params.filter((param) => !isFfiContextParam(param));
2277
+ }
2278
+ function ffiParamDisplay(param) {
2279
+ return isFfiCallbackParam(param) ? `callback '${param.callback.id}'` : `class '${param}'`;
2280
+ }
2281
+ /** Callback arguments flow from native code into TypeScript. Their source
2282
+ * declarations therefore need to cover the whole scalar domain represented
2283
+ * by the manifest class: IR widening alone cannot distinguish `0`, a numeric
2284
+ * enum, or `never` from an unrestricted `number`. */
2285
+ function ffiCallbackInputDiagnostic(L, descriptor, callbackType) {
2286
+ const signatures = L.checker.getCallSignatures(callbackType);
2287
+ if (signatures.length !== 1)
2288
+ return null;
2289
+ const nativeParams = descriptor.callback.params.filter((param) => !isFfiContextParam(param));
2290
+ let nativeIndex = 0;
2291
+ const params = signatures[0].getParameters();
2292
+ for (let i = 0; i < params.length; i++) {
2293
+ const paramType = L.checker.getTypeOfSymbol(params[i]);
2294
+ const mapped = L.mapTypeOf(paramType);
2295
+ // Function mapping drops a `void` parameter because it consumes no
2296
+ // argument. Mirror that alignment before comparing manifest slots.
2297
+ if (mapped?.kind === "void")
2298
+ continue;
2299
+ const nativeClass = nativeParams[nativeIndex++];
2300
+ if (nativeClass === undefined ||
2301
+ mapped === null ||
2302
+ !typeEquals(mapped, ffiClassType(nativeClass))) {
2303
+ continue;
2304
+ }
2305
+ const domain = nativeClass === "bool" ? "boolean" : "number";
2306
+ const coversDomain = nativeClass === "bool"
2307
+ ? (paramType.flags & ts.TypeFlags.Boolean) !== 0
2308
+ : (paramType.flags & ts.TypeFlags.Number) !== 0;
2309
+ if (!coversDomain) {
2310
+ return (`callback '${descriptor.callback.id}' parameter ${i + 1} is '${L.checker.typeToString(paramType)}', ` +
2311
+ `but native class '${nativeClass}' may supply any ${domain}; declare it as '${domain}'`);
2312
+ }
2287
2313
  }
2314
+ return null;
2288
2315
  }
2289
2316
  /** The declaration half of an outbound FFI binding. Kept independent of
2290
2317
  * call-site argument checks so the whole manifest can be validated even
@@ -2306,12 +2333,15 @@ function ffiDeclarationDiagnostic(L, binding, symbol, loc) {
2306
2333
  }
2307
2334
  const signature = signatures[0];
2308
2335
  const params = signature.getParameters();
2309
- if (params.length !== binding.params.length) {
2310
- return ffiSignatureDiag(binding.name, `the TypeScript declaration has ${params.length} parameter(s), but the manifest declares ${binding.params.length}`, loc);
2336
+ const sourceParams = ffiSourceParams(binding);
2337
+ if (params.length !== sourceParams.length) {
2338
+ return ffiSignatureDiag(binding.name, `the TypeScript declaration has ${params.length} parameter(s), but the manifest declares ${sourceParams.length} source parameter(s) ` +
2339
+ `(${binding.params.length - sourceParams.length} additional native context slot(s) are compiler-supplied)`, loc);
2311
2340
  }
2312
- const expectedParams = binding.params.map(ffiTypeForClass);
2341
+ const expectedParams = ffiSourceParamTypes(binding.params);
2313
2342
  for (let i = 0; i < params.length; i++) {
2314
2343
  const paramType = L.checker.getTypeOfSymbol(params[i]);
2344
+ const sourceParam = sourceParams[i];
2315
2345
  // `mapType` deliberately gives uninhabited value positions a cheap f64
2316
2346
  // slot because no TypeScript value can ever reach them. An FFI
2317
2347
  // declaration is different: it is a callable external contract, so a
@@ -2319,11 +2349,17 @@ function ffiDeclarationDiagnostic(L, binding, symbol, loc) {
2319
2349
  if ((paramType.flags & ts.TypeFlags.Never) !== 0) {
2320
2350
  return ffiSignatureDiag(binding.name, `parameter ${i + 1} is 'never', an uninhabited TypeScript type that cannot describe a native ABI parameter`, loc);
2321
2351
  }
2352
+ if (isFfiCallbackParam(sourceParam)) {
2353
+ const callbackDiagnostic = ffiCallbackInputDiagnostic(L, sourceParam, paramType);
2354
+ if (callbackDiagnostic !== null) {
2355
+ return ffiSignatureDiag(binding.name, callbackDiagnostic, loc);
2356
+ }
2357
+ }
2322
2358
  const mapped = L.mapTypeOf(paramType);
2323
2359
  const expected = expectedParams[i];
2324
2360
  if (mapped === null || !typeEquals(mapped, expected)) {
2325
2361
  return ffiSignatureDiag(binding.name, `parameter ${i + 1} maps to '${mapped === null ? L.checker.typeToString(paramType) : L.fmt(mapped)}', ` +
2326
- `which does not fit manifest class '${binding.params[i]}'`, loc);
2362
+ `which does not fit manifest ${ffiParamDisplay(sourceParam)}`, loc);
2327
2363
  }
2328
2364
  }
2329
2365
  const returnType = L.checker.getReturnTypeOfSignature(signature);
@@ -2334,7 +2370,7 @@ function ffiDeclarationDiagnostic(L, binding, symbol, loc) {
2334
2370
  return ffiSignatureDiag(binding.name, "the return type is 'never', but a native ABI return cannot uphold TypeScript's non-returning contract", loc);
2335
2371
  }
2336
2372
  const declaredReturn = L.mapTypeOf(returnType);
2337
- const expectedReturn = ffiTypeForClass(binding.returns);
2373
+ const expectedReturn = ffiClassType(binding.returns);
2338
2374
  if (declaredReturn === null || !typeEquals(declaredReturn, expectedReturn)) {
2339
2375
  return ffiSignatureDiag(binding.name, `the return maps to '${declaredReturn === null ? L.checker.typeToString(returnType) : L.fmt(declaredReturn)}', ` +
2340
2376
  `which does not fit manifest class '${binding.returns}'`, loc);
@@ -2447,11 +2483,11 @@ export function lowerFfiCall(L, expr) {
2447
2483
  if (expr.arguments.some(ts.isSpreadElement)) {
2448
2484
  signatureError("spread arguments do not have a fixed native ABI");
2449
2485
  }
2450
- if (expr.arguments.length !== binding.params.length) {
2451
- signatureError(`this call passes ${expr.arguments.length} argument(s), but the native ABI requires exactly ${binding.params.length}`);
2486
+ const expectedParams = ffiSourceParamTypes(binding.params);
2487
+ if (expr.arguments.length !== expectedParams.length) {
2488
+ signatureError(`this call passes ${expr.arguments.length} argument(s), but the native binding requires exactly ${expectedParams.length}`);
2452
2489
  }
2453
- const expectedParams = binding.params.map(ffiTypeForClass);
2454
- const expectedReturn = ffiTypeForClass(binding.returns);
2490
+ const expectedReturn = ffiClassType(binding.returns);
2455
2491
  const args = expr.arguments.map((arg, i) => L.lowerExprExpecting(arg, expectedParams[i]));
2456
2492
  return {
2457
2493
  kind: "ffiCall",