@scriptc/compiler 0.3.3 → 0.3.4
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.
- package/ambient/scriptc-node-fallback.d.ts +713 -26
- package/dist/backend/cycle-mutability.d.ts +5 -0
- package/dist/backend/cycle-mutability.js +62 -3
- package/dist/backend/cycle-mutability.js.map +1 -1
- package/dist/backend/executable-features.js +1 -0
- package/dist/backend/executable-features.js.map +1 -1
- package/dist/backend/library-pack.js +1 -0
- package/dist/backend/library-pack.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.d.ts +5 -1
- package/dist/backend/llvm/call-lifetimes.js +11 -3
- package/dist/backend/llvm/call-lifetimes.js.map +1 -1
- package/dist/backend/llvm/call-lifetimes.test.js +31 -1
- package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/common.d.ts +5 -0
- package/dist/backend/llvm/common.js +7 -0
- package/dist/backend/llvm/common.js.map +1 -1
- package/dist/backend/llvm/dense-array-access.js +2 -2
- package/dist/backend/llvm/dense-array-access.js.map +1 -1
- package/dist/backend/llvm/dyn.d.ts +40 -1
- package/dist/backend/llvm/dyn.js +178 -27
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +12 -0
- package/dist/backend/llvm/emitter.js +164 -27
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.d.ts +9 -0
- package/dist/backend/llvm/expr-bytes.js +158 -63
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-calls.d.ts +3 -1
- package/dist/backend/llvm/expr-calls.js +49 -1
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-containers.js +16 -5
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/intern-tables.test.d.ts +1 -0
- package/dist/backend/llvm/intern-tables.test.js +77 -0
- package/dist/backend/llvm/intern-tables.test.js.map +1 -0
- package/dist/backend/llvm/lib-datagram.js +10 -0
- package/dist/backend/llvm/lib-datagram.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +92 -1
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +51 -0
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-network.js +16 -0
- package/dist/backend/llvm/lib-network.js.map +1 -1
- package/dist/backend/llvm/lib-shared.d.ts +5 -0
- package/dist/backend/llvm/lib-shared.js +80 -1
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-stream.js +87 -0
- package/dist/backend/llvm/lib-stream.js.map +1 -1
- package/dist/backend/llvm/lib-test.js +9 -0
- package/dist/backend/llvm/lib-test.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.d.ts +4 -0
- package/dist/backend/llvm/map-number-lookup.js +22 -0
- package/dist/backend/llvm/map-number-lookup.js.map +1 -1
- package/dist/backend/llvm/map-number-lookup.test.js +56 -0
- package/dist/backend/llvm/map-number-lookup.test.js.map +1 -1
- package/dist/backend/llvm/map-read-lifetimes.d.ts +9 -0
- package/dist/backend/llvm/map-read-lifetimes.js +89 -1
- package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
- package/dist/backend/llvm/map-read-lifetimes.test.js +129 -1
- package/dist/backend/llvm/map-read-lifetimes.test.js.map +1 -1
- package/dist/backend/llvm/publish.d.ts +5 -0
- package/dist/backend/llvm/publish.js +22 -3
- package/dist/backend/llvm/publish.js.map +1 -1
- package/dist/backend/llvm/reference-writes.js +5 -2
- package/dist/backend/llvm/reference-writes.js.map +1 -1
- package/dist/backend/llvm/regions.d.ts +4 -1
- package/dist/backend/llvm/regions.js +12 -3
- package/dist/backend/llvm/regions.js.map +1 -1
- package/dist/backend/llvm/string-reads.js +2 -2
- package/dist/backend/llvm/string-reads.js.map +1 -1
- package/dist/backend/llvm/string-slices.js +2 -2
- package/dist/backend/llvm/string-slices.js.map +1 -1
- package/dist/backend/may-throw.js +4 -0
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/native/contracts.d.ts +3 -0
- package/dist/backend/native/executable.js +13 -5
- package/dist/backend/native/executable.js.map +1 -1
- package/dist/backend/native/runtime-inputs.d.ts +1 -1
- package/dist/backend/native/runtime-inputs.js +1 -0
- package/dist/backend/native/runtime-inputs.js.map +1 -1
- package/dist/backend/native-codegen-core.d.ts +4 -4
- package/dist/backend/native-codegen-core.js +4 -6
- package/dist/backend/native-codegen-core.js.map +1 -1
- package/dist/backend/native-codegen.test.js +7 -8
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/native-link-info-core.d.ts +3 -0
- package/dist/backend/native-link-info-core.js.map +1 -1
- package/dist/backend/publication.js +3 -1
- package/dist/backend/publication.js.map +1 -1
- package/dist/backend/runtime-pack-targets.test.js +1 -0
- package/dist/backend/runtime-pack-targets.test.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +1 -0
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/target-diagnostics.js +7 -0
- package/dist/backend/target-diagnostics.js.map +1 -1
- package/dist/backend/warm-cache.js +1 -0
- package/dist/backend/warm-cache.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +1 -0
- package/dist/executable/executable-cache.js +1 -0
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +1 -0
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/frontend/experimental-import.d.ts +5 -1
- package/dist/frontend/experimental-import.js +28 -3
- package/dist/frontend/experimental-import.js.map +1 -1
- package/dist/frontend/lowering/assert-instances.d.ts +38 -0
- package/dist/frontend/lowering/assert-instances.js +269 -0
- package/dist/frontend/lowering/assert-instances.js.map +1 -0
- package/dist/frontend/lowering/builtins/compression.d.ts +18 -0
- package/dist/frontend/lowering/builtins/compression.js +175 -2
- package/dist/frontend/lowering/builtins/compression.js.map +1 -1
- package/dist/frontend/lowering/builtins/constants.js +7 -2
- package/dist/frontend/lowering/builtins/constants.js.map +1 -1
- package/dist/frontend/lowering/builtins/crypto.d.ts +6 -0
- package/dist/frontend/lowering/builtins/crypto.js +111 -1
- package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
- package/dist/frontend/lowering/builtins/errors.js +23 -0
- package/dist/frontend/lowering/builtins/errors.js.map +1 -1
- package/dist/frontend/lowering/builtins/timers.d.ts +3 -0
- package/dist/frontend/lowering/builtins/timers.js +109 -23
- package/dist/frontend/lowering/builtins/timers.js.map +1 -1
- package/dist/frontend/lowering/call-signatures.js +6 -0
- package/dist/frontend/lowering/call-signatures.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.js +66 -12
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/intern-tables.d.ts +13 -0
- package/dist/frontend/lowering/intern-tables.js +536 -0
- package/dist/frontend/lowering/intern-tables.js.map +1 -0
- package/dist/frontend/lowering/lower-assert.js +700 -61
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-async-iteration.js +11 -2
- package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.js +17 -3
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +3 -0
- package/dist/frontend/lowering/lower-classes.js +36 -0
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-dgram.js +77 -52
- package/dist/frontend/lowering/lower-dgram.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.js +12 -0
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.d.ts +6 -0
- package/dist/frontend/lowering/lower-inspect.js +112 -39
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-mock.d.ts +11 -0
- package/dist/frontend/lowering/lower-mock.js +504 -0
- package/dist/frontend/lowering/lower-mock.js.map +1 -0
- package/dist/frontend/lowering/lower-modules.js +7 -0
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-server.d.ts +3 -0
- package/dist/frontend/lowering/lower-server.js +380 -30
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.js +23 -2
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.d.ts +10 -6
- package/dist/frontend/lowering/lower-stream.js +786 -27
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lower-test.js +86 -8
- package/dist/frontend/lowering/lower-test.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +22 -0
- package/dist/frontend/lowering/lowerer.js +72 -7
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/pairs-snapshot.d.ts +6 -0
- package/dist/frontend/lowering/pairs-snapshot.js +49 -0
- package/dist/frontend/lowering/pairs-snapshot.js.map +1 -1
- package/dist/frontend/lowering/surfaces.d.ts +4 -0
- package/dist/frontend/lowering/surfaces.js +61 -15
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/zlib-constants.d.ts +1 -0
- package/dist/frontend/lowering/zlib-constants.js +181 -0
- package/dist/frontend/lowering/zlib-constants.js.map +1 -0
- package/dist/frontend/mock-shapes.d.ts +10 -0
- package/dist/frontend/mock-shapes.js +76 -0
- package/dist/frontend/mock-shapes.js.map +1 -0
- package/dist/frontend/pipeline.js +5 -3
- package/dist/frontend/pipeline.js.map +1 -1
- package/dist/frontend/program.js +6 -1
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/resolve.d.ts +4 -0
- package/dist/frontend/resolve.js +14 -0
- package/dist/frontend/resolve.js.map +1 -1
- package/dist/frontend/tsc-codes.js +1 -0
- package/dist/frontend/tsc-codes.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +5 -0
- package/dist/frontend/type-mapper.js +102 -9
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/ir/builtin-effects.js +36 -0
- package/dist/ir/builtin-effects.js.map +1 -1
- package/dist/ir/builtin-signatures.d.ts +1 -1
- package/dist/ir/builtin-signatures.js +147 -8
- package/dist/ir/builtin-signatures.js.map +1 -1
- package/dist/ir/ir.d.ts +20 -1
- package/dist/ir/ir.js +17 -0
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/runtime-features.d.ts +1 -0
- package/dist/ir/runtime-features.js +29 -2
- package/dist/ir/runtime-features.js.map +1 -1
- package/dist/ir/validate.js +195 -5
- package/dist/ir/validate.js.map +1 -1
- package/dist/library/ir-policy.js +1 -0
- package/dist/library/ir-policy.js.map +1 -1
- package/dist/native/cli.js +1 -0
- package/dist/native/cli.js.map +1 -1
- package/dist/native/compiler.js +1 -3
- package/dist/native/compiler.js.map +1 -1
- package/dist/native/prepare.js +1 -0
- package/dist/native/prepare.js.map +1 -1
- package/dist/native/sanitizer.test.js +1 -0
- package/dist/native/sanitizer.test.js.map +1 -1
- package/package.json +20 -20
- package/surface-manifest.json +869 -48
|
@@ -122,6 +122,9 @@ export interface ClassInfo {
|
|
|
122
122
|
* lifetime-regions.ts): its constructor is synthesized with the class,
|
|
123
123
|
* and its methods lower at their call sites. */
|
|
124
124
|
lifetimeRegion?: true;
|
|
125
|
+
/** The synthetic InternTable class (@scriptc/experimental,
|
|
126
|
+
* intern-tables.ts): synthesized like lifetimeRegion. */
|
|
127
|
+
internTable?: true;
|
|
125
128
|
/** This class's own `emit` override in the FORWARDING SHAPE (the one
|
|
126
129
|
* EventEmitter member a subclass may re-declare): never in `methods` —
|
|
127
130
|
* emit calls keep routing through the emitter spoke, which lowers the
|
|
@@ -8,6 +8,7 @@ import { InternalCompilerError } from "../../errors.js";
|
|
|
8
8
|
* accessor access, upcasts, `new` expressions, and the builtin Error
|
|
9
9
|
* hierarchy registration. */
|
|
10
10
|
import * as ts from "../ts7/adapter.js";
|
|
11
|
+
import { lowerZlibStreamNew, zlibStreamModeOf } from "./builtins/compression.js";
|
|
11
12
|
import { BOOL, DATE_T, DYN, F64, bytesOf, RUNTIME_EMITTER_CLASS, RUNTIME_ERROR_CLASSES, RUNTIME_STREAM_CLASSES, STRING, UNDEFINED_T, VOID, arrayOf, isSupportedMapKey, isSupportedMapValue, isSupportedSetElem, isUnitType, typeEquals, } from "../../ir/ir.js";
|
|
12
13
|
import { genericCallInstance, implicitAnyParamSymbolsOf, implicitCallInstance, implicitMonoFile, } from "./generic-functions.js";
|
|
13
14
|
import { extendInstantiationPath, MAX_INSTANTIATION_RECURSION, } from "./instantiation-path.js";
|
|
@@ -18,6 +19,7 @@ import { omittedArgFor } from "./call-arguments.js";
|
|
|
18
19
|
import { isGenericCallableMemberType, jsOpenObjectType, typeKey, withUnitArm, } from "../type-mapper.js";
|
|
19
20
|
import { cjsClassExprWholeExportOf, isCjsJsFile, isJsSourceFile, isModuleExportsAccess, isNodeTypesPath, locOf, } from "../program.js";
|
|
20
21
|
import { PoisonError, dynFallbackType, newFnCtx, own } from "./lowerer.js";
|
|
22
|
+
import { isAssertClassNew } from "./assert-instances.js";
|
|
21
23
|
import { lowerArrayConstructor } from "./containers/array-construction.js";
|
|
22
24
|
import { lowerMapSeedNew, lowerSetSeedNew } from "./containers/collection-methods.js";
|
|
23
25
|
import { lowerObjectConstructor } from "./containers/indexed-objects.js";
|
|
@@ -1441,6 +1443,9 @@ mixin) {
|
|
|
1441
1443
|
if (lowerer.builtinErrorInfoOf(symbol)?.def.name === "%AggregateError") {
|
|
1442
1444
|
lowerer.unsupported("SC1090", t, "extending AggregateError (its runtime layout carries a hidden errors slot a subclass would overlap — extend Error and keep the list in a field)");
|
|
1443
1445
|
}
|
|
1446
|
+
if (lowerer.builtinErrorInfoOf(symbol)?.def.name === "%AssertionError") {
|
|
1447
|
+
lowerer.unsupported("SC1090", t, "extending AssertionError (its constructor takes an options object the subclass constructor would have to forward — extend Error, or construct AssertionError directly)");
|
|
1448
|
+
}
|
|
1444
1449
|
const named = (symbol && lowerer.classBySymbol.get(symbol)) ??
|
|
1445
1450
|
lowerer.builtinErrorInfoOf(symbol) ??
|
|
1446
1451
|
lowerer.builtinEmitterInfoOf(symbol) ??
|
|
@@ -6966,6 +6971,12 @@ export function lowerNew(lowerer, expr) {
|
|
|
6966
6971
|
const streamInfoNs = builtinStreamInfoOf(lowerer, resolved);
|
|
6967
6972
|
if (streamInfoNs)
|
|
6968
6973
|
return lowerStreamNew(lowerer, expr, streamInfoNs);
|
|
6974
|
+
// `new zlib.Gzip(options?)` — the zlib stream classes.
|
|
6975
|
+
const zlibModeNs = zlibStreamModeOf(lowerer, resolved);
|
|
6976
|
+
if (zlibModeNs !== null) {
|
|
6977
|
+
const what = `new zlib.${expr.expression.name.text}`;
|
|
6978
|
+
return lowerZlibStreamNew(lowerer, expr.arguments ?? [], zlibModeNs, what, expr, loc);
|
|
6979
|
+
}
|
|
6969
6980
|
// `new N.C(...)` / `new a.Point(...)` — construction through a
|
|
6970
6981
|
// USER namespace qualifier (import= alias chains included): the
|
|
6971
6982
|
// member resolves to the registered program class, guarded by the
|
|
@@ -7126,6 +7137,26 @@ export function lowerNew(lowerer, expr) {
|
|
|
7126
7137
|
loc,
|
|
7127
7138
|
};
|
|
7128
7139
|
}
|
|
7140
|
+
// `new Assert(...)` that is not a static instance (assert-instances.ts):
|
|
7141
|
+
// the instance would be a run-time value.
|
|
7142
|
+
if (isAssertClassNew(lowerer, expr)) {
|
|
7143
|
+
lowerer.noLowering("assert.Assert instances used as values", expr, "bind `new Assert(...)` with literal options to a const and only call methods on it (`const a = new Assert({ diff: 'full' }); a.strictEqual(x, y)`)");
|
|
7144
|
+
}
|
|
7145
|
+
if (errInfo && errInfo.def.name === "%AssertionError") {
|
|
7146
|
+
// new AssertionError(options): Node validates the options object and
|
|
7147
|
+
// generates the message from operator, actual and expected.
|
|
7148
|
+
const args = expr.arguments ?? [];
|
|
7149
|
+
if (args.length > 1 || args.some(ts.isSpreadElement)) {
|
|
7150
|
+
lowerer.noLowering(`new AssertionError with this argument list`, expr);
|
|
7151
|
+
}
|
|
7152
|
+
return {
|
|
7153
|
+
kind: "libCall",
|
|
7154
|
+
fn: "assert.errorNew",
|
|
7155
|
+
args: [args[0] ? lowerer.lowerExprExpecting(args[0], DYN) : dynUndefinedExpr(loc)],
|
|
7156
|
+
type: { kind: "object", className: "%AssertionError" },
|
|
7157
|
+
loc,
|
|
7158
|
+
};
|
|
7159
|
+
}
|
|
7129
7160
|
if (errInfo && errInfo.def.name === "%AggregateError") {
|
|
7130
7161
|
const args = expr.arguments ?? [];
|
|
7131
7162
|
if (args.length > 3 || args.some(ts.isSpreadElement)) {
|
|
@@ -7171,6 +7202,11 @@ export function lowerNew(lowerer, expr) {
|
|
|
7171
7202
|
const streamInfo = builtinStreamInfoOf(lowerer, symbol);
|
|
7172
7203
|
if (streamInfo)
|
|
7173
7204
|
return lowerStreamNew(lowerer, expr, streamInfo);
|
|
7205
|
+
const zlibMode = zlibStreamModeOf(lowerer, symbol);
|
|
7206
|
+
if (zlibMode !== null) {
|
|
7207
|
+
const what = `new zlib.${symbol.name}`;
|
|
7208
|
+
return lowerZlibStreamNew(lowerer, expr.arguments ?? [], zlibMode, what, expr, loc);
|
|
7209
|
+
}
|
|
7174
7210
|
// `new URL(input)`: the WHATWG URL class (stdlib/@types provenance —
|
|
7175
7211
|
// a user's own `class URL` resolves through classBySymbol below).
|
|
7176
7212
|
// Invalid input or base throws a catchable TypeError ("Invalid URL").
|