@aster-cloud/aster-lang-ts 0.2.0 → 0.2.2
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/CHANGELOG.md +24 -0
- package/dist/src/ast/ast.d.ts +2 -2
- package/dist/src/ast/ast.d.ts.map +1 -1
- package/dist/src/ast/ast.js +5 -2
- package/dist/src/ast/ast.js.map +1 -1
- package/dist/src/browser.d.ts +16 -1
- package/dist/src/browser.d.ts.map +1 -1
- package/dist/src/browser.js +10 -2
- package/dist/src/browser.js.map +1 -1
- package/dist/src/config/effect_config.d.ts.map +1 -1
- package/dist/src/config/effect_config.js +7 -1
- package/dist/src/config/effect_config.js.map +1 -1
- package/dist/src/config/lexicons/de-DE.d.ts.map +1 -1
- package/dist/src/config/lexicons/de-DE.js +1 -0
- package/dist/src/config/lexicons/de-DE.js.map +1 -1
- package/dist/src/config/lexicons/en-US.d.ts.map +1 -1
- package/dist/src/config/lexicons/en-US.js +1 -0
- package/dist/src/config/lexicons/en-US.js.map +1 -1
- package/dist/src/config/lexicons/identifiers/registry.d.ts +9 -0
- package/dist/src/config/lexicons/identifiers/registry.d.ts.map +1 -1
- package/dist/src/config/lexicons/identifiers/registry.js +12 -0
- package/dist/src/config/lexicons/identifiers/registry.js.map +1 -1
- package/dist/src/config/lexicons/template.d.ts.map +1 -1
- package/dist/src/config/lexicons/template.js +2 -0
- package/dist/src/config/lexicons/template.js.map +1 -1
- package/dist/src/config/lexicons/zh-CN.d.ts.map +1 -1
- package/dist/src/config/lexicons/zh-CN.js +36 -20
- package/dist/src/config/lexicons/zh-CN.js.map +1 -1
- package/dist/src/config/semantic.d.ts +1 -0
- package/dist/src/config/semantic.d.ts.map +1 -1
- package/dist/src/config/semantic.js +1 -0
- package/dist/src/config/semantic.js.map +1 -1
- package/dist/src/config/token-kind.d.ts +2 -0
- package/dist/src/config/token-kind.d.ts.map +1 -1
- package/dist/src/config/token-kind.js +3 -1
- package/dist/src/config/token-kind.js.map +1 -1
- package/dist/src/core/core_ir.d.ts +2 -2
- package/dist/src/core/core_ir.d.ts.map +1 -1
- package/dist/src/core/core_ir.js +5 -2
- package/dist/src/core/core_ir.js.map +1 -1
- package/dist/src/core/interpreter.js +4 -1
- package/dist/src/core/interpreter.js.map +1 -1
- package/dist/src/diagnostics/error_codes.d.ts +2 -0
- package/dist/src/diagnostics/error_codes.d.ts.map +1 -1
- package/dist/src/diagnostics/error_codes.js +11 -5
- package/dist/src/diagnostics/error_codes.js.map +1 -1
- package/dist/src/effects/effect_inference_browser.d.ts.map +1 -1
- package/dist/src/effects/effect_inference_browser.js +22 -4
- package/dist/src/effects/effect_inference_browser.js.map +1 -1
- package/dist/src/frontend/canonicalizer.d.ts +33 -0
- package/dist/src/frontend/canonicalizer.d.ts.map +1 -1
- package/dist/src/frontend/canonicalizer.js +77 -5
- package/dist/src/frontend/canonicalizer.js.map +1 -1
- package/dist/src/lower_to_core.js +2 -2
- package/dist/src/lower_to_core.js.map +1 -1
- package/dist/src/lsp/config.d.ts +13 -9
- package/dist/src/lsp/config.d.ts.map +1 -1
- package/dist/src/lsp/config.js +19 -5
- package/dist/src/lsp/config.js.map +1 -1
- package/dist/src/lsp/server.js +19 -7
- package/dist/src/lsp/server.js.map +1 -1
- package/dist/src/parser/context.d.ts.map +1 -1
- package/dist/src/parser/context.js +32 -12
- package/dist/src/parser/context.js.map +1 -1
- package/dist/src/parser/decl-parser.d.ts +2 -2
- package/dist/src/parser/decl-parser.d.ts.map +1 -1
- package/dist/src/parser/decl-parser.js +101 -13
- package/dist/src/parser/decl-parser.js.map +1 -1
- package/dist/src/parser/expr-stmt-parser.d.ts.map +1 -1
- package/dist/src/parser/expr-stmt-parser.js +31 -1
- package/dist/src/parser/expr-stmt-parser.js.map +1 -1
- package/dist/src/parser/import-parser.d.ts +3 -2
- package/dist/src/parser/import-parser.d.ts.map +1 -1
- package/dist/src/parser/import-parser.js +12 -3
- package/dist/src/parser/import-parser.js.map +1 -1
- package/dist/src/typecheck/alias.d.ts +24 -0
- package/dist/src/typecheck/alias.d.ts.map +1 -0
- package/dist/src/typecheck/alias.js +30 -0
- package/dist/src/typecheck/alias.js.map +1 -0
- package/dist/src/typecheck/browser.d.ts +41 -4
- package/dist/src/typecheck/browser.d.ts.map +1 -1
- package/dist/src/typecheck/browser.js +112 -16
- package/dist/src/typecheck/browser.js.map +1 -1
- package/dist/src/typecheck/context.js +1 -1
- package/dist/src/typecheck/context.js.map +1 -1
- package/dist/src/typecheck/effects.js +1 -1
- package/dist/src/typecheck/effects.js.map +1 -1
- package/dist/src/typecheck/expression.js +1 -1
- package/dist/src/typecheck/expression.js.map +1 -1
- package/dist/src/typecheck/generics.js +1 -1
- package/dist/src/typecheck/generics.js.map +1 -1
- package/dist/src/typecheck/module.d.ts.map +1 -1
- package/dist/src/typecheck/module.js +13 -8
- package/dist/src/typecheck/module.js.map +1 -1
- package/dist/src/typecheck/pattern.js +1 -1
- package/dist/src/typecheck/pattern.js.map +1 -1
- package/dist/src/typecheck/pure.d.ts +66 -0
- package/dist/src/typecheck/pure.d.ts.map +1 -0
- package/dist/src/typecheck/pure.js +163 -0
- package/dist/src/typecheck/pure.js.map +1 -0
- package/dist/src/typecheck/statement.js +1 -1
- package/dist/src/typecheck/statement.js.map +1 -1
- package/dist/src/typecheck/type_system.d.ts +6 -1
- package/dist/src/typecheck/type_system.d.ts.map +1 -1
- package/dist/src/typecheck/type_system.js +61 -13
- package/dist/src/typecheck/type_system.js.map +1 -1
- package/dist/src/typecheck/utils.d.ts +4 -69
- package/dist/src/typecheck/utils.d.ts.map +1 -1
- package/dist/src/typecheck/utils.js +17 -170
- package/dist/src/typecheck/utils.js.map +1 -1
- package/dist/src/typecheck/workflow.js +1 -1
- package/dist/src/typecheck/workflow.js.map +1 -1
- package/dist/src/typecheck-pii.d.ts.map +1 -1
- package/dist/src/typecheck-pii.js +11 -1
- package/dist/src/typecheck-pii.js.map +1 -1
- package/dist/src/types/base.d.ts +1 -0
- package/dist/src/types/base.d.ts.map +1 -1
- package/dist/src/types.d.ts +17 -0
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js.map +1 -1
- package/dist/test/type-checker/pii-propagation.test.js +24 -18
- package/dist/test/type-checker/pii-propagation.test.js.map +1 -1
- package/dist/test/unit/browser/typecheck-browser-pii-failure.test.d.ts +2 -0
- package/dist/test/unit/browser/typecheck-browser-pii-failure.test.d.ts.map +1 -0
- package/dist/test/unit/browser/typecheck-browser-pii-failure.test.js +193 -0
- package/dist/test/unit/browser/typecheck-browser-pii-failure.test.js.map +1 -0
- package/dist/test/unit/browser/typecheck-browser-unsupported.test.js +21 -11
- package/dist/test/unit/browser/typecheck-browser-unsupported.test.js.map +1 -1
- package/dist/test/unit/canonicalizer/canonicalizer.test.js +91 -1
- package/dist/test/unit/canonicalizer/canonicalizer.test.js.map +1 -1
- package/dist/test/unit/canonicalizer/cjk-punctuation.test.d.ts +2 -0
- package/dist/test/unit/canonicalizer/cjk-punctuation.test.d.ts.map +1 -0
- package/dist/test/unit/canonicalizer/cjk-punctuation.test.js +118 -0
- package/dist/test/unit/canonicalizer/cjk-punctuation.test.js.map +1 -0
- package/dist/test/unit/canonicalizer/conformance-cjk-v2.test.d.ts +2 -0
- package/dist/test/unit/canonicalizer/conformance-cjk-v2.test.d.ts.map +1 -0
- package/dist/test/unit/canonicalizer/conformance-cjk-v2.test.js +40 -0
- package/dist/test/unit/canonicalizer/conformance-cjk-v2.test.js.map +1 -0
- package/dist/test/unit/config/lexicons/i18n.test.js +11 -3
- package/dist/test/unit/config/lexicons/i18n.test.js.map +1 -1
- package/dist/test/unit/config/lexicons/zh-CN.test.js +129 -132
- package/dist/test/unit/config/lexicons/zh-CN.test.js.map +1 -1
- package/dist/test/unit/keyword-translator.test.js +16 -19
- package/dist/test/unit/keyword-translator.test.js.map +1 -1
- package/dist/test/unit/lowering/lowering.test.js +12 -0
- package/dist/test/unit/lowering/lowering.test.js.map +1 -1
- package/dist/test/unit/parser/entry-annotations.test.d.ts +2 -0
- package/dist/test/unit/parser/entry-annotations.test.d.ts.map +1 -0
- package/dist/test/unit/parser/entry-annotations.test.js +110 -0
- package/dist/test/unit/parser/entry-annotations.test.js.map +1 -0
- package/dist/test/unit/parser/parser.test.js +30 -6
- package/dist/test/unit/parser/parser.test.js.map +1 -1
- package/dist/test/unit/scripts/verify-browser-entry.test.d.ts +2 -0
- package/dist/test/unit/scripts/verify-browser-entry.test.d.ts.map +1 -0
- package/dist/test/unit/scripts/verify-browser-entry.test.js +179 -0
- package/dist/test/unit/scripts/verify-browser-entry.test.js.map +1 -0
- package/dist/test/unit/typecheck/function-return-inference.test.d.ts +2 -0
- package/dist/test/unit/typecheck/function-return-inference.test.d.ts.map +1 -0
- package/dist/test/unit/typecheck/function-return-inference.test.js +79 -0
- package/dist/test/unit/typecheck/function-return-inference.test.js.map +1 -0
- package/dist/test/unit/typecheck/pii-cross-runtime-conformance.test.d.ts +2 -0
- package/dist/test/unit/typecheck/pii-cross-runtime-conformance.test.d.ts.map +1 -0
- package/dist/test/unit/typecheck/pii-cross-runtime-conformance.test.js +191 -0
- package/dist/test/unit/typecheck/pii-cross-runtime-conformance.test.js.map +1 -0
- package/dist/test/unit/typecheck/should-enforce-pii.test.js +25 -110
- package/dist/test/unit/typecheck/should-enforce-pii.test.js.map +1 -1
- package/dist/test/unit/typecheck/type-system.test.js +83 -3
- package/dist/test/unit/typecheck/type-system.test.js.map +1 -1
- package/package.json +38 -9
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure type-system helpers — **browser-safe leaf module**.
|
|
3
|
+
*
|
|
4
|
+
* R15 (codex round 14/15 review): split from `typecheck/utils.ts` because
|
|
5
|
+
* utils.ts carries `loadPrefixes()` at module-load that statically references
|
|
6
|
+
* `require('node:module')`. Webpack/strict bundlers see that reference even
|
|
7
|
+
* if wrapped in try/catch, so any browser-reachable file that imports from
|
|
8
|
+
* utils.ts pulls Node built-ins into the bundle closure.
|
|
9
|
+
*
|
|
10
|
+
* This module contains **only** pure constants and pure functions over Core
|
|
11
|
+
* types — no Node API surface, no IO/CPU prefix loading, no path resolution.
|
|
12
|
+
*
|
|
13
|
+
* Callers:
|
|
14
|
+
* - `typecheck/browser.ts` (browser entry)
|
|
15
|
+
* - `typecheck-pii.ts` (via alias.ts; cross-runtime PII flow)
|
|
16
|
+
* - any future browser/edge-bound module
|
|
17
|
+
*
|
|
18
|
+
* For Node-only callers (`typecheck.ts`, `lsp/*`, `ai/validator.ts`),
|
|
19
|
+
* `typecheck/utils.ts` re-exports the same symbols + the prefix loaders.
|
|
20
|
+
*/
|
|
21
|
+
import { TypeSystem } from './type_system.js';
|
|
22
|
+
// Re-export resolveAlias 从 alias.ts (纯 leaf) — 让 pure.ts 成为单一 browser-safe
|
|
23
|
+
// import 来源, 调用方不必同时 import pure + alias.
|
|
24
|
+
export { resolveAlias } from './alias.js';
|
|
25
|
+
export const UNKNOWN_TYPE = TypeSystem.unknown();
|
|
26
|
+
export const UNIT_TYPE = { kind: 'TypeName', name: 'Unit' };
|
|
27
|
+
export const IO_EFFECT_TYPE = { kind: 'TypeName', name: 'IO' };
|
|
28
|
+
export const CPU_EFFECT_TYPE = { kind: 'TypeName', name: 'CPU' };
|
|
29
|
+
export const PURE_EFFECT_TYPE = { kind: 'TypeName', name: 'PURE' };
|
|
30
|
+
/**
|
|
31
|
+
* 默认 IO 前缀 (browser-safe, 无 config loading).
|
|
32
|
+
* Node-only 调用方应通过 `typecheck/utils.ts` 的 `getIOPrefixesCompat()` 读 config.
|
|
33
|
+
* 同 effect_config.ts DEFAULT_CONFIG, 复制以避免 transitive Node 依赖.
|
|
34
|
+
*/
|
|
35
|
+
export const IO_PREFIXES = [
|
|
36
|
+
'IO.',
|
|
37
|
+
'Http.',
|
|
38
|
+
'AuthRepo.',
|
|
39
|
+
'ProfileSvc.',
|
|
40
|
+
'FeedSvc.',
|
|
41
|
+
'Db.',
|
|
42
|
+
'UUID.randomUUID',
|
|
43
|
+
];
|
|
44
|
+
/** 默认 CPU 前缀 (browser-safe). */
|
|
45
|
+
export const CPU_PREFIXES = [];
|
|
46
|
+
export function isUnknown(type) {
|
|
47
|
+
if (!type)
|
|
48
|
+
return true;
|
|
49
|
+
return type.kind === 'TypeName' && type.name === 'Unknown';
|
|
50
|
+
}
|
|
51
|
+
export function unknownType() {
|
|
52
|
+
return UNKNOWN_TYPE;
|
|
53
|
+
}
|
|
54
|
+
export function normalizeType(type) {
|
|
55
|
+
return type ?? UNKNOWN_TYPE;
|
|
56
|
+
}
|
|
57
|
+
export function buildFieldTypeMap(decls) {
|
|
58
|
+
const fieldTypes = new Map();
|
|
59
|
+
const conflicts = new Set();
|
|
60
|
+
for (const decl of decls) {
|
|
61
|
+
if (decl.kind !== 'Data')
|
|
62
|
+
continue;
|
|
63
|
+
for (const field of decl.fields) {
|
|
64
|
+
const normalized = normalizeType(field.type);
|
|
65
|
+
const existing = fieldTypes.get(field.name);
|
|
66
|
+
if (!existing)
|
|
67
|
+
fieldTypes.set(field.name, normalized);
|
|
68
|
+
if (existing && !TypeSystem.equals(existing, normalized, true))
|
|
69
|
+
conflicts.add(field.name);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
for (const name of conflicts)
|
|
73
|
+
fieldTypes.delete(name);
|
|
74
|
+
return fieldTypes;
|
|
75
|
+
}
|
|
76
|
+
export function checkEntryRuleUniqueness(decls) {
|
|
77
|
+
const entryFuncs = decls.filter((decl) => decl.kind === 'Func' && (decl.annotations ?? []).some(annotation => annotation.name === 'entry'));
|
|
78
|
+
if (entryFuncs.length <= 1)
|
|
79
|
+
return [];
|
|
80
|
+
const first = entryFuncs[0];
|
|
81
|
+
const second = entryFuncs[1];
|
|
82
|
+
const diagnostic = {
|
|
83
|
+
severity: 'error',
|
|
84
|
+
code: "MULTIPLE_ENTRY_RULES" /* ErrorCode.MULTIPLE_ENTRY_RULES */,
|
|
85
|
+
message: `Multiple @entry rules found in module: ${first.name} and ${second.name}`,
|
|
86
|
+
help: 'Keep at most one Rule annotated with @entry in a module.',
|
|
87
|
+
data: { first: first.name, second: second.name },
|
|
88
|
+
};
|
|
89
|
+
if (second.origin)
|
|
90
|
+
diagnostic.origin = second.origin;
|
|
91
|
+
return [diagnostic];
|
|
92
|
+
}
|
|
93
|
+
export function formatType(type) {
|
|
94
|
+
return TypeSystem.format(normalizeType(type));
|
|
95
|
+
}
|
|
96
|
+
export function isWorkflowType(type) {
|
|
97
|
+
return type.kind === 'TypeApp' && type.base === 'Workflow' && type.args.length >= 1;
|
|
98
|
+
}
|
|
99
|
+
export function unwrapWorkflowResult(type) {
|
|
100
|
+
if (isWorkflowType(type)) {
|
|
101
|
+
return normalizeType(type.args[0]);
|
|
102
|
+
}
|
|
103
|
+
return type;
|
|
104
|
+
}
|
|
105
|
+
export function typesEqual(a, b, strict = false) {
|
|
106
|
+
const left = normalizeType(a);
|
|
107
|
+
const right = normalizeType(b);
|
|
108
|
+
if (isWorkflowType(left) && !isWorkflowType(right)) {
|
|
109
|
+
return typesEqual(unwrapWorkflowResult(left), right, strict);
|
|
110
|
+
}
|
|
111
|
+
if (!isWorkflowType(left) && isWorkflowType(right)) {
|
|
112
|
+
return typesEqual(left, unwrapWorkflowResult(right), strict);
|
|
113
|
+
}
|
|
114
|
+
return TypeSystem.equals(left, right, strict);
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* 判断实际类型是否可赋值给期望类型.
|
|
118
|
+
*
|
|
119
|
+
* 比 typesEqual 更宽松, 支持 CNL 自然语言编程中的隐式类型提升:
|
|
120
|
+
* - Int → Float/Double(整数提升为浮点)
|
|
121
|
+
* - Long → Double(长整型提升为双精度)
|
|
122
|
+
* - Float ↔ Double(浮点类型互通)
|
|
123
|
+
*
|
|
124
|
+
* 设计理由:
|
|
125
|
+
* 1. 字段类型推断可能推断为 Float,但字面量是 Int
|
|
126
|
+
* 2. 用户写 `rate = 350` 比 `rate = 350.0` 更自然
|
|
127
|
+
* 3. 不影响严格类型比较(分支/匹配/泛型等场景仍用 typesEqual)
|
|
128
|
+
*/
|
|
129
|
+
export function isAssignable(expected, actual, strict = false) {
|
|
130
|
+
if (typesEqual(expected, actual, strict))
|
|
131
|
+
return true;
|
|
132
|
+
if (strict)
|
|
133
|
+
return false;
|
|
134
|
+
const expectedType = normalizeType(expected);
|
|
135
|
+
const actualType = normalizeType(actual);
|
|
136
|
+
if (expectedType.kind !== 'TypeName' || actualType.kind !== 'TypeName') {
|
|
137
|
+
return false;
|
|
138
|
+
}
|
|
139
|
+
const expectedName = expectedType.name;
|
|
140
|
+
const actualName = actualType.name;
|
|
141
|
+
switch (expectedName) {
|
|
142
|
+
case 'Float':
|
|
143
|
+
return actualName === 'Int' || actualName === 'Double';
|
|
144
|
+
case 'Double':
|
|
145
|
+
return actualName === 'Int' || actualName === 'Long' || actualName === 'Float';
|
|
146
|
+
default:
|
|
147
|
+
return false;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
export function originToSpan(origin) {
|
|
151
|
+
if (!origin)
|
|
152
|
+
return undefined;
|
|
153
|
+
return { start: origin.start, end: origin.end };
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* @deprecated Since ADR-0009 (P0-1): PII flow analysis is **always enabled**
|
|
157
|
+
* across all runtimes (Node / browser / CF Workers). Stub kept for source
|
|
158
|
+
* compat; will be removed in next major.
|
|
159
|
+
*/
|
|
160
|
+
export function shouldEnforcePii() {
|
|
161
|
+
return true;
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=pure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pure.js","sourceRoot":"","sources":["../../../src/typecheck/pure.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAIH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,2EAA2E;AAC3E,0CAA0C;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,MAAM,CAAC,MAAM,YAAY,GAAc,UAAU,CAAC,OAAO,EAAE,CAAC;AAC5D,MAAM,CAAC,MAAM,SAAS,GAAc,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AACvE,MAAM,CAAC,MAAM,cAAc,GAAc,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC1E,MAAM,CAAC,MAAM,eAAe,GAAc,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAC5E,MAAM,CAAC,MAAM,gBAAgB,GAAc,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAE9E;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAsB;IAC5C,KAAK;IACL,OAAO;IACP,WAAW;IACX,aAAa;IACb,UAAU;IACV,KAAK;IACL,iBAAiB;CAClB,CAAC;AAEF,gCAAgC;AAChC,MAAM,CAAC,MAAM,YAAY,GAAsB,EAAE,CAAC;AAElD,MAAM,UAAU,SAAS,CAAC,IAAkC;IAC1D,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,OAAO,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAkC;IAC9D,OAAO,IAAI,IAAI,YAAY,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAkC;IAClE,MAAM,UAAU,GAAG,IAAI,GAAG,EAAqB,CAAC;IAChD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;YAAE,SAAS;QACnC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,IAAiB,CAAC,CAAC;YAC1D,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5C,IAAI,CAAC,QAAQ;gBAAE,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YACtD,IAAI,QAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC;gBAAE,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5F,CAAC;IACH,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,SAAS;QAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAkC;IACzE,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAC7B,CAAC,IAAI,EAAqB,EAAE,CAC1B,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,KAAK,OAAO,CAAC,CACnG,CAAC;IACF,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAEtC,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAE,CAAC;IAC7B,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAE,CAAC;IAC9B,MAAM,UAAU,GAAwB;QACtC,QAAQ,EAAE,OAAO;QACjB,IAAI,6DAAgC;QACpC,OAAO,EAAE,0CAA0C,KAAK,CAAC,IAAI,QAAQ,MAAM,CAAC,IAAI,EAAE;QAClF,IAAI,EAAE,0DAA0D;QAChE,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE;KACjD,CAAC;IACF,IAAI,MAAM,CAAC,MAAM;QAAE,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IACrD,OAAO,CAAC,UAAU,CAAC,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAkC;IAC3D,OAAO,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAe;IAC5C,OAAO,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;AACtF,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAe;IAClD,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAc,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,UAAU,CACxB,CAA+B,EAC/B,CAA+B,EAC/B,MAAM,GAAG,KAAK;IAEd,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAE/B,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;QACnD,OAAO,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAC/D,CAAC;IACD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;QACnD,OAAO,UAAU,CAAC,IAAI,EAAE,oBAAoB,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAChD,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,YAAY,CAC1B,QAAsC,EACtC,MAAoC,EACpC,MAAM,GAAG,KAAK;IAEd,IAAI,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IACtD,IAAI,MAAM;QAAE,OAAO,KAAK,CAAC;IAEzB,MAAM,YAAY,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC7C,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAEzC,IAAI,YAAY,CAAC,IAAI,KAAK,UAAU,IAAI,UAAU,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACvE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC;IACvC,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC;IAEnC,QAAQ,YAAY,EAAE,CAAC;QACrB,KAAK,OAAO;YACV,OAAO,UAAU,KAAK,KAAK,IAAI,UAAU,KAAK,QAAQ,CAAC;QACzD,KAAK,QAAQ;YACX,OAAO,UAAU,KAAK,KAAK,IAAI,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,OAAO,CAAC;QACjF;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAA0B;IACrD,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;AAClD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { DefaultCoreVisitor } from '../core/visitor.js';
|
|
2
2
|
import { assignSymbol, defineSymbol } from './context.js';
|
|
3
|
-
import { formatType, isUnknown, typesEqual, unknownType, } from './
|
|
3
|
+
import { formatType, isUnknown, typesEqual, unknownType, } from './pure.js';
|
|
4
4
|
import { typeOfExpr } from './expression.js';
|
|
5
5
|
import { bindPattern } from './pattern.js';
|
|
6
6
|
import { typecheckWorkflow } from './workflow.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statement.js","sourceRoot":"","sources":["../../../src/typecheck/statement.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAGxD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG1D,OAAO,EACL,UAAU,EACV,SAAS,EACT,UAAU,EACV,WAAW,GACZ,MAAM,
|
|
1
|
+
{"version":3,"file":"statement.js","sourceRoot":"","sources":["../../../src/typecheck/statement.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAGxD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG1D,OAAO,EACL,UAAU,EACV,SAAS,EACT,UAAU,EACV,WAAW,GACZ,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD,MAAM,OAAO,gBAAiB,SAAQ,kBAA0C;IACvE,MAAM,GAAc,WAAW,EAAE,CAAC;IAEhC,UAAU,CAAC,KAAiB,EAAE,OAA+B;QACpE,IAAI,IAAI,GAAc,WAAW,EAAE,CAAC;QACpC,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACzC,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACxC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IAEQ,cAAc,CAAC,SAAyB,EAAE,OAA+B;QAChF,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;QACjD,QAAQ,SAAS,CAAC,IAAI,EAAE,CAAC;YACvB,KAAK,KAAK,CAAC,CAAC,CAAC;gBACX,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;gBAC3E,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;gBACxE,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;gBACxB,OAAO;YACT,CAAC;YACD,KAAK,KAAK,CAAC,CAAC,CAAC;gBACX,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;gBAC3E,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;gBACjE,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;gBACxB,OAAO;YACT,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;gBACvE,OAAO;YACT,CAAC;YACD,KAAK,IAAI,CAAC,CAAC,CAAC;gBACV,KAAK,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;gBAC9D,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;gBACnF,MAAM,QAAQ,GAAG,SAAS,CAAC,SAAS;oBAClC,CAAC,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,SAAS,EAAE,WAAW,CAAC;oBACnE,CAAC,CAAC,WAAW,EAAE,CAAC;gBAClB,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACxB,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;gBACzB,CAAC;qBAAM,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC/B,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;gBACzB,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;wBACpC,WAAW,CAAC,KAAK,4CAA+B,SAAS,CAAC,IAAI,EAAE;4BAC9D,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC;4BAC9B,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC;yBAC/B,CAAC,CAAC;oBACL,CAAC;oBACD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;gBACzB,CAAC;gBACD,OAAO;YACT,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;gBAC/E,IAAI,UAAU,GAAqB,IAAI,CAAC;gBACxC,IAAI,WAAW,GAAG,KAAK,CAAC;gBACxB,IAAI,cAAc,GAAG,KAAK,CAAC;gBAC3B,MAAM,QAAQ,GACZ,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,IAAI,KAAK,UAAU;oBAC5D,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC;oBACtC,CAAC,CAAC,SAAS,CAAC;gBAChB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;gBACnC,IAAI,WAAW,GAAG,KAAK,CAAC;gBACxB,KAAK,MAAM,UAAU,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;oBACzC,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;oBACxF,IAAI,CAAC,UAAU,EAAE,CAAC;wBAChB,UAAU,GAAG,QAAQ,CAAC;oBACxB,CAAC;yBAAM,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC;wBAC7C,WAAW,CAAC,KAAK,+CAEf,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,EACtC;4BACE,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC;4BAChC,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC;yBAC7B,CACF,CAAC;oBACJ,CAAC;oBACD,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS;wBAAE,WAAW,GAAG,IAAI,CAAC;;wBACzD,cAAc,GAAG,IAAI,CAAC;oBAC3B,IAAI,QAAQ,EAAE,CAAC;wBACb,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;4BAC1C,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gCACxD,IAAI,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;oCAC1C,WAAW,CAAC,OAAO,6CAEjB,UAAU,CAAC,OAAO,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,EACzC,EAAE,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CACvD,CAAC;gCACJ,CAAC;gCACD,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;4BACxC,CAAC;iCAAM,CAAC;gCACN,WAAW,GAAG,IAAI,CAAC;4BACrB,CAAC;wBACH,CAAC;6BAAM,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;4BACjD,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;gCAC5D,IAAI,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;oCAC9C,WAAW,CAAC,OAAO,6CAEjB,UAAU,CAAC,OAAO,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,EACzC,EAAE,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAC3D,CAAC;gCACJ,CAAC;gCACD,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;4BAC5C,CAAC;wBACH,CAAC;6BAAM,CAAC;4BACN,WAAW,GAAG,IAAI,CAAC;wBACrB,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBAChE,IAAI,CAAC,CAAC,WAAW,IAAI,cAAc,CAAC,EAAE,CAAC;wBACrC,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC;wBAC/F,WAAW,CAAC,OAAO,8CAAiC,SAAS,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;oBACnF,CAAC;gBACH,CAAC;qBAAM,IAAI,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC;oBACpC,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;oBAC5E,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACvB,WAAW,CAAC,OAAO,6CAAgC,SAAS,CAAC,IAAI,EAAE;4BACjE,IAAI,EAAE,QAAQ,CAAC,IAAI;4BACnB,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;yBAC5B,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBACD,IAAI,CAAC,MAAM,GAAG,UAAU,IAAI,WAAW,EAAE,CAAC;gBAC1C,OAAO;YACT,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,MAAM,GAAe;oBACzB,IAAI,EAAE,OAAO;oBACb,UAAU,EAAE,SAAS,CAAC,UAAU;oBAChC,IAAI,EAAE,SAAS,CAAC,IAAI;iBACP,CAAC;gBAChB,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;gBACnE,OAAO;YACT,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,KAAK,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;gBAC9D,IAAI,CAAC,MAAM,GAAG,WAAW,EAAE,CAAC;gBAC5B,OAAO;YACT,CAAC;YACD,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,IAAI,CAAC,MAAM,GAAG,WAAW,EAAE,CAAC;gBAC5B,OAAO;YACT,CAAC;YACD,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,IAAI,CAAC,MAAM,GAAG,iBAAiB,CAAC,OAAO,EAAE,SAA0B,CAAC,CAAC;gBACrE,OAAO;YACT,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAED,MAAM,UAAU,cAAc,CAC5B,GAAkB,EAClB,OAAoB,EACpB,KAAiB,EACjB,WAA8B;IAE9B,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAC5B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACvC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;QACjE,OAAO,OAAO,CAAC,MAAM,CAAC;IACxB,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,SAAS,EAAE,CAAC;IACtB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,GAAkB,EAClB,OAAoB,EACpB,UAAqB,EACrB,aAAwB,EACxB,WAA8B;IAE9B,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAC5B,IAAI,CAAC;QACH,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;QAC1E,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtC,OAAO,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACrE,CAAC;QACD,OAAO,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACpE,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,SAAS,EAAE,CAAC;IACtB,CAAC;AACH,CAAC"}
|
|
@@ -11,10 +11,15 @@ export declare class TypeSystem {
|
|
|
11
11
|
static expand(type: Type, aliases: Map<string, Type>): Type;
|
|
12
12
|
private static expandRecursive;
|
|
13
13
|
static inferListElementType(elements: readonly Core.Expression[]): Type;
|
|
14
|
-
static inferFunctionType(params: readonly Core.Parameter[], body: readonly Core.Statement[]): Core.FuncType;
|
|
14
|
+
static inferFunctionType(params: readonly Core.Parameter[], body: readonly Core.Statement[], fieldTypes?: ReadonlyMap<string, Type>): Core.FuncType;
|
|
15
15
|
static format(type: Type | undefined | null): string;
|
|
16
16
|
private static inferReturnType;
|
|
17
17
|
private static inferStaticType;
|
|
18
|
+
private static fieldNameFromDottedName;
|
|
19
|
+
private static inferArithmeticCall;
|
|
20
|
+
private static promoteNumericTypes;
|
|
21
|
+
private static isNumericType;
|
|
22
|
+
private static hasTypeName;
|
|
18
23
|
}
|
|
19
24
|
export interface TypeConstraint {
|
|
20
25
|
kind: 'equals' | 'subtype';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type_system.d.ts","sourceRoot":"","sources":["../../../src/typecheck/type_system.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AAwF7B,qBAAa,UAAU;IACrB,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI;IAI3B,OAAO,CAAC,MAAM,CAAC,UAAU;IAoBzB,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,UAAQ,GAAG,OAAO;IAkF1D,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,GAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAa,GAAG,OAAO;IA+ElF,OAAO,CAAC,MAAM,CAAC,WAAW;IAU1B,OAAO,CAAC,MAAM,CAAC,aAAa;IAe5B,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,GAAG,OAAO;IA0C/C,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,IAAI;IAK3D,OAAO,CAAC,MAAM,CAAC,eAAe;IAoD9B,MAAM,CAAC,oBAAoB,CAAC,QAAQ,EAAE,SAAS,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI;IAgBvE,MAAM,CAAC,iBAAiB,
|
|
1
|
+
{"version":3,"file":"type_system.d.ts","sourceRoot":"","sources":["../../../src/typecheck/type_system.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AAwF7B,qBAAa,UAAU;IACrB,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI;IAI3B,OAAO,CAAC,MAAM,CAAC,UAAU;IAoBzB,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,UAAQ,GAAG,OAAO;IAkF1D,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,GAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAa,GAAG,OAAO;IA+ElF,OAAO,CAAC,MAAM,CAAC,WAAW;IAU1B,OAAO,CAAC,MAAM,CAAC,aAAa;IAe5B,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,GAAG,OAAO;IA0C/C,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,IAAI;IAK3D,OAAO,CAAC,MAAM,CAAC,eAAe;IAoD9B,MAAM,CAAC,oBAAoB,CAAC,QAAQ,EAAE,SAAS,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI;IAgBvE,MAAM,CAAC,iBAAiB,CACtB,MAAM,EAAE,SAAS,IAAI,CAAC,SAAS,EAAE,EACjC,IAAI,EAAE,SAAS,IAAI,CAAC,SAAS,EAAE,EAC/B,UAAU,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,GACrC,IAAI,CAAC,QAAQ;IAUhB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM;IAgCpD,OAAO,CAAC,MAAM,CAAC,eAAe;IAmB9B,OAAO,CAAC,MAAM,CAAC,eAAe;IA0E9B,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAKtC,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAYlC,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAOlC,OAAO,CAAC,MAAM,CAAC,aAAa;IAI5B,OAAO,CAAC,MAAM,CAAC,WAAW;CAM3B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC3B,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,IAAI,CAAC;IACZ,IAAI,CAAC,EAAE,IAAI,CAAC;CACb;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAwB;IAEpD,aAAa,CAAC,UAAU,EAAE,cAAc,GAAG,IAAI;IAI/C,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,IAAI;CAgBlC"}
|
|
@@ -387,9 +387,9 @@ export class TypeSystem {
|
|
|
387
387
|
}
|
|
388
388
|
return current;
|
|
389
389
|
}
|
|
390
|
-
static inferFunctionType(params, body) {
|
|
390
|
+
static inferFunctionType(params, body, fieldTypes) {
|
|
391
391
|
const paramTypes = params.map(p => cloneType(p.type));
|
|
392
|
-
const ret = TypeSystem.inferReturnType(body);
|
|
392
|
+
const ret = TypeSystem.inferReturnType(body, fieldTypes);
|
|
393
393
|
return {
|
|
394
394
|
kind: 'FuncType',
|
|
395
395
|
params: paramTypes,
|
|
@@ -428,17 +428,24 @@ export class TypeSystem {
|
|
|
428
428
|
return 'Unknown';
|
|
429
429
|
}
|
|
430
430
|
}
|
|
431
|
-
static inferReturnType(body) {
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
if (stmt.kind
|
|
435
|
-
|
|
436
|
-
|
|
431
|
+
static inferReturnType(body, fieldTypes) {
|
|
432
|
+
const returnTypes = [];
|
|
433
|
+
for (const stmt of body) {
|
|
434
|
+
if (stmt.kind !== 'Return')
|
|
435
|
+
continue;
|
|
436
|
+
returnTypes.push(TypeSystem.inferStaticType(stmt.expr, fieldTypes) ?? TypeSystem.unknown());
|
|
437
|
+
}
|
|
438
|
+
if (returnTypes.length === 0)
|
|
439
|
+
return TypeSystem.unknown();
|
|
440
|
+
const current = cloneType(returnTypes[0]);
|
|
441
|
+
for (let i = 1; i < returnTypes.length; i++) {
|
|
442
|
+
if (!TypeSystem.equals(current, returnTypes[i], true)) {
|
|
443
|
+
return TypeSystem.unknown();
|
|
437
444
|
}
|
|
438
445
|
}
|
|
439
|
-
return
|
|
446
|
+
return current;
|
|
440
447
|
}
|
|
441
|
-
static inferStaticType(expr) {
|
|
448
|
+
static inferStaticType(expr, fieldTypes) {
|
|
442
449
|
if (!expr)
|
|
443
450
|
return null;
|
|
444
451
|
switch (expr.kind) {
|
|
@@ -455,15 +462,15 @@ export class TypeSystem {
|
|
|
455
462
|
case 'Null':
|
|
456
463
|
return { kind: 'Maybe', type: TypeSystem.unknown() };
|
|
457
464
|
case 'Ok': {
|
|
458
|
-
const inner = TypeSystem.inferStaticType(expr.expr) ?? TypeSystem.unknown();
|
|
465
|
+
const inner = TypeSystem.inferStaticType(expr.expr, fieldTypes) ?? TypeSystem.unknown();
|
|
459
466
|
return { kind: 'Result', ok: inner, err: TypeSystem.unknown() };
|
|
460
467
|
}
|
|
461
468
|
case 'Err': {
|
|
462
|
-
const inner = TypeSystem.inferStaticType(expr.expr) ?? TypeSystem.unknown();
|
|
469
|
+
const inner = TypeSystem.inferStaticType(expr.expr, fieldTypes) ?? TypeSystem.unknown();
|
|
463
470
|
return { kind: 'Result', ok: TypeSystem.unknown(), err: inner };
|
|
464
471
|
}
|
|
465
472
|
case 'Some': {
|
|
466
|
-
const inner = TypeSystem.inferStaticType(expr.expr) ?? TypeSystem.unknown();
|
|
473
|
+
const inner = TypeSystem.inferStaticType(expr.expr, fieldTypes) ?? TypeSystem.unknown();
|
|
467
474
|
return { kind: 'Option', type: inner };
|
|
468
475
|
}
|
|
469
476
|
case 'None':
|
|
@@ -479,8 +486,19 @@ export class TypeSystem {
|
|
|
479
486
|
}
|
|
480
487
|
case 'Construct':
|
|
481
488
|
return { kind: 'TypeName', name: expr.typeName };
|
|
489
|
+
case 'Name': {
|
|
490
|
+
const fieldName = TypeSystem.fieldNameFromDottedName(expr.name);
|
|
491
|
+
const fieldType = fieldName ? fieldTypes?.get(fieldName) : undefined;
|
|
492
|
+
if (fieldType)
|
|
493
|
+
return cloneType(fieldType);
|
|
494
|
+
const annotated = expr.inferredType;
|
|
495
|
+
return annotated ?? null;
|
|
496
|
+
}
|
|
482
497
|
case 'Call': {
|
|
483
498
|
if (expr.target.kind === 'Name') {
|
|
499
|
+
const arithmetic = TypeSystem.inferArithmeticCall(expr.target.name, expr.args, fieldTypes);
|
|
500
|
+
if (arithmetic)
|
|
501
|
+
return arithmetic;
|
|
484
502
|
switch (expr.target.name) {
|
|
485
503
|
case 'Text.concat':
|
|
486
504
|
case 'Crypto.hash':
|
|
@@ -501,6 +519,36 @@ export class TypeSystem {
|
|
|
501
519
|
}
|
|
502
520
|
}
|
|
503
521
|
}
|
|
522
|
+
static fieldNameFromDottedName(name) {
|
|
523
|
+
if (!name.includes('.'))
|
|
524
|
+
return null;
|
|
525
|
+
return name.split('.').pop() || null;
|
|
526
|
+
}
|
|
527
|
+
static inferArithmeticCall(operator, args, fieldTypes) {
|
|
528
|
+
if (!['+', '-', '*', '/', '%'].includes(operator) || args.length < 2)
|
|
529
|
+
return null;
|
|
530
|
+
const left = TypeSystem.inferStaticType(args[0], fieldTypes);
|
|
531
|
+
const right = TypeSystem.inferStaticType(args[1], fieldTypes);
|
|
532
|
+
if (!left || !right)
|
|
533
|
+
return null;
|
|
534
|
+
return TypeSystem.promoteNumericTypes(left, right);
|
|
535
|
+
}
|
|
536
|
+
static promoteNumericTypes(left, right) {
|
|
537
|
+
if (!TypeSystem.isNumericType(left) || !TypeSystem.isNumericType(right))
|
|
538
|
+
return null;
|
|
539
|
+
if (TypeSystem.hasTypeName(left, right, 'Double'))
|
|
540
|
+
return { kind: 'TypeName', name: 'Double' };
|
|
541
|
+
if (TypeSystem.hasTypeName(left, right, 'Long'))
|
|
542
|
+
return { kind: 'TypeName', name: 'Long' };
|
|
543
|
+
return { kind: 'TypeName', name: 'Int' };
|
|
544
|
+
}
|
|
545
|
+
static isNumericType(type) {
|
|
546
|
+
return type.kind === 'TypeName' && ['Int', 'Long', 'Double'].includes(type.name);
|
|
547
|
+
}
|
|
548
|
+
static hasTypeName(left, right, name) {
|
|
549
|
+
return ((left.kind === 'TypeName' && left.name === name) ||
|
|
550
|
+
(right.kind === 'TypeName' && right.name === name));
|
|
551
|
+
}
|
|
504
552
|
}
|
|
505
553
|
export class ConstraintSolver {
|
|
506
554
|
constraints = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type_system.js","sourceRoot":"","sources":["../../../src/typecheck/type_system.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"type_system.js","sourceRoot":"","sources":["../../../src/typecheck/type_system.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,74 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export declare const UNIT_TYPE: Core.Type;
|
|
4
|
-
export declare const IO_EFFECT_TYPE: Core.Type;
|
|
5
|
-
export declare const CPU_EFFECT_TYPE: Core.Type;
|
|
6
|
-
export declare const PURE_EFFECT_TYPE: Core.Type;
|
|
7
|
-
/**
|
|
8
|
-
* Get IO prefixes for effect inference.
|
|
9
|
-
* Loads from config in Node.js, uses defaults in browser.
|
|
10
|
-
*/
|
|
1
|
+
export { UNKNOWN_TYPE, UNIT_TYPE, IO_EFFECT_TYPE, CPU_EFFECT_TYPE, PURE_EFFECT_TYPE, IO_PREFIXES, CPU_PREFIXES, isUnknown, unknownType, buildFieldTypeMap, normalizeType, formatType, isWorkflowType, unwrapWorkflowResult, typesEqual, isAssignable, originToSpan, shouldEnforcePii, checkEntryRuleUniqueness, } from './pure.js';
|
|
2
|
+
/** Get IO prefixes for effect inference (Node-only path, reads from config). */
|
|
11
3
|
export declare function getIOPrefixesCompat(): readonly string[];
|
|
12
|
-
/**
|
|
13
|
-
* Get CPU prefixes for effect inference.
|
|
14
|
-
* Loads from config in Node.js, uses defaults in browser.
|
|
15
|
-
*/
|
|
4
|
+
/** Get CPU prefixes for effect inference (Node-only path, reads from config). */
|
|
16
5
|
export declare function getCPUPrefixesCompat(): readonly string[];
|
|
17
|
-
export
|
|
18
|
-
export declare const CPU_PREFIXES: readonly string[];
|
|
19
|
-
/**
|
|
20
|
-
* 解析导入别名到真实模块前缀
|
|
21
|
-
* @param name 原始名称(如 "H.get")
|
|
22
|
-
* @param imports 别名映射(如 {H: "Http"})
|
|
23
|
-
* @returns 解析后的名称(如 "Http.get")
|
|
24
|
-
*/
|
|
25
|
-
export declare function resolveAlias(name: string, imports: ReadonlyMap<string, string>): string;
|
|
26
|
-
/**
|
|
27
|
-
* 判断是否启用 PII 检查
|
|
28
|
-
*
|
|
29
|
-
* 采用渐进式启用策略,默认禁用 PII 检查,需显式启用。
|
|
30
|
-
* 配置优先级(从高到低):
|
|
31
|
-
* 1. LSP 配置注入(globalThis.lspConfig.enforcePiiChecks)
|
|
32
|
-
* 2. 环境变量(ENFORCE_PII 或 ASTER_ENFORCE_PII,大小写不敏感)
|
|
33
|
-
* 3. 默认值 false(opt-in 策略)
|
|
34
|
-
*
|
|
35
|
-
* 设计理由:
|
|
36
|
-
* 1. 兼容性:避免破坏现有项目,给团队时间逐步迁移
|
|
37
|
-
* 2. 渐进式:允许团队按自己的节奏采纳 PII 检查
|
|
38
|
-
* 3. 明确性:需要显式声明启用,避免意外启用
|
|
39
|
-
* 4. 统一性:与 Java 编译器的 shouldEnforcePii() 保持一致(大小写无关匹配)
|
|
40
|
-
* 5. 解耦性:通过 globalThis 注入避免 LSP 与 typecheck 模块循环依赖
|
|
41
|
-
*
|
|
42
|
-
* @returns true 表示启用 PII 检查,false 表示禁用
|
|
43
|
-
*/
|
|
44
|
-
export declare function shouldEnforcePii(): boolean;
|
|
45
|
-
export declare function isUnknown(type: Core.Type | undefined | null): boolean;
|
|
46
|
-
export declare function unknownType(): Core.Type;
|
|
47
|
-
export declare function normalizeType(type: Core.Type | undefined | null): Core.Type;
|
|
48
|
-
export declare function formatType(type: Core.Type | undefined | null): string;
|
|
49
|
-
export declare function isWorkflowType(type: Core.Type): type is Core.TypeApp;
|
|
50
|
-
export declare function unwrapWorkflowResult(type: Core.Type): Core.Type;
|
|
51
|
-
export declare function typesEqual(a: Core.Type | undefined | null, b: Core.Type | undefined | null, strict?: boolean): boolean;
|
|
52
|
-
/**
|
|
53
|
-
* 判断实际类型是否可赋值给期望类型
|
|
54
|
-
*
|
|
55
|
-
* 比 typesEqual 更宽松,支持 CNL 自然语言编程中的隐式类型提升:
|
|
56
|
-
* - Int → Float/Double(整数提升为浮点)
|
|
57
|
-
* - Long → Double(长整型提升为双精度)
|
|
58
|
-
* - Float ↔ Double(浮点类型互通)
|
|
59
|
-
*
|
|
60
|
-
* 设计理由:
|
|
61
|
-
* 1. 字段类型推断可能推断为 Float,但字面量是 Int
|
|
62
|
-
* 2. 用户写 `rate = 350` 比 `rate = 350.0` 更自然
|
|
63
|
-
* 3. 不影响严格类型比较(分支/匹配/泛型等场景仍用 typesEqual)
|
|
64
|
-
*
|
|
65
|
-
* @param expected 期望的类型(字段声明类型)
|
|
66
|
-
* @param actual 实际的类型(赋值表达式类型)
|
|
67
|
-
* @param strict 是否启用严格模式(禁用隐式提升)
|
|
68
|
-
* @returns true 表示可赋值
|
|
69
|
-
*/
|
|
70
|
-
export declare function isAssignable(expected: Core.Type | undefined | null, actual: Core.Type | undefined | null, strict?: boolean): boolean;
|
|
71
|
-
export declare function originToSpan(origin: Origin | undefined): Span | undefined;
|
|
6
|
+
export { resolveAlias } from './alias.js';
|
|
72
7
|
/**
|
|
73
8
|
* Get default module search paths.
|
|
74
9
|
* Uses dynamic import to avoid Node.js dependency at module load time.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/typecheck/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/typecheck/utils.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,YAAY,EACZ,SAAS,EACT,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,SAAS,EACT,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,UAAU,EACV,cAAc,EACd,oBAAoB,EACpB,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,WAAW,CAAC;AA0BnB,gFAAgF;AAChF,wBAAgB,mBAAmB,IAAI,SAAS,MAAM,EAAE,CAGvD;AAED,iFAAiF;AACjF,wBAAgB,oBAAoB,IAAI,SAAS,MAAM,EAAE,CAGxD;AAID,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,EAAE,CASnD;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,MAAM,EAAE,CAmBvF"}
|