edict-lang 1.2.0 → 1.6.0
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/README.md +39 -13
- package/dist/ast/nodes.d.ts +4 -3
- package/dist/ast/nodes.d.ts.map +1 -1
- package/dist/ast/nodes.js +1 -0
- package/dist/ast/nodes.js.map +1 -1
- package/dist/ast/type-constants.d.ts +12 -0
- package/dist/ast/type-constants.d.ts.map +1 -0
- package/dist/ast/type-constants.js +16 -0
- package/dist/ast/type-constants.js.map +1 -0
- package/dist/ast/types.d.ts +1 -1
- package/dist/ast/types.d.ts.map +1 -1
- package/dist/builtins/builtin-enums.d.ts +12 -0
- package/dist/builtins/builtin-enums.d.ts.map +1 -0
- package/dist/builtins/builtin-enums.js +45 -0
- package/dist/builtins/builtin-enums.js.map +1 -0
- package/dist/builtins/builtin-types.d.ts +20 -0
- package/dist/builtins/builtin-types.d.ts.map +1 -0
- package/dist/builtins/builtin-types.js +6 -0
- package/dist/builtins/builtin-types.js.map +1 -0
- package/dist/builtins/builtins.d.ts +3 -0
- package/dist/builtins/builtins.d.ts.map +1 -0
- package/dist/builtins/builtins.js +3 -0
- package/dist/builtins/builtins.js.map +1 -0
- package/dist/builtins/domains/array.d.ts +3 -0
- package/dist/builtins/domains/array.d.ts.map +1 -0
- package/dist/builtins/domains/array.js +236 -0
- package/dist/builtins/domains/array.js.map +1 -0
- package/dist/builtins/domains/core.d.ts +3 -0
- package/dist/builtins/domains/core.d.ts.map +1 -0
- package/dist/builtins/domains/core.js +45 -0
- package/dist/builtins/domains/core.js.map +1 -0
- package/dist/builtins/domains/crypto.d.ts +3 -0
- package/dist/builtins/domains/crypto.d.ts.map +1 -0
- package/dist/builtins/domains/crypto.js +49 -0
- package/dist/builtins/domains/crypto.js.map +1 -0
- package/dist/builtins/domains/datetime.d.ts +3 -0
- package/dist/builtins/domains/datetime.d.ts.map +1 -0
- package/dist/builtins/domains/datetime.js +45 -0
- package/dist/builtins/domains/datetime.js.map +1 -0
- package/dist/builtins/domains/http.d.ts +3 -0
- package/dist/builtins/domains/http.d.ts.map +1 -0
- package/dist/builtins/domains/http.js +55 -0
- package/dist/builtins/domains/http.js.map +1 -0
- package/dist/builtins/domains/int64.d.ts +3 -0
- package/dist/builtins/domains/int64.d.ts.map +1 -0
- package/dist/builtins/domains/int64.js +31 -0
- package/dist/builtins/domains/int64.js.map +1 -0
- package/dist/builtins/domains/io.d.ts +3 -0
- package/dist/builtins/domains/io.d.ts.map +1 -0
- package/dist/builtins/domains/io.js +79 -0
- package/dist/builtins/domains/io.js.map +1 -0
- package/dist/builtins/domains/json.d.ts +3 -0
- package/dist/builtins/domains/json.d.ts.map +1 -0
- package/dist/builtins/domains/json.js +47 -0
- package/dist/builtins/domains/json.js.map +1 -0
- package/dist/builtins/domains/math.d.ts +3 -0
- package/dist/builtins/domains/math.d.ts.map +1 -0
- package/dist/builtins/domains/math.js +47 -0
- package/dist/builtins/domains/math.js.map +1 -0
- package/dist/builtins/domains/option.d.ts +3 -0
- package/dist/builtins/domains/option.d.ts.map +1 -0
- package/dist/builtins/domains/option.js +56 -0
- package/dist/builtins/domains/option.js.map +1 -0
- package/dist/builtins/domains/random.d.ts +3 -0
- package/dist/builtins/domains/random.d.ts.map +1 -0
- package/dist/builtins/domains/random.js +50 -0
- package/dist/builtins/domains/random.js.map +1 -0
- package/dist/builtins/domains/regex.d.ts +3 -0
- package/dist/builtins/domains/regex.d.ts.map +1 -0
- package/dist/builtins/domains/regex.js +69 -0
- package/dist/builtins/domains/regex.js.map +1 -0
- package/dist/builtins/domains/result.d.ts +3 -0
- package/dist/builtins/domains/result.d.ts.map +1 -0
- package/dist/builtins/domains/result.js +84 -0
- package/dist/builtins/domains/result.js.map +1 -0
- package/dist/builtins/domains/string.d.ts +3 -0
- package/dist/builtins/domains/string.d.ts.map +1 -0
- package/dist/builtins/domains/string.js +139 -0
- package/dist/builtins/domains/string.js.map +1 -0
- package/dist/builtins/domains/type-conversion.d.ts +3 -0
- package/dist/builtins/domains/type-conversion.d.ts.map +1 -0
- package/dist/builtins/domains/type-conversion.js +42 -0
- package/dist/builtins/domains/type-conversion.js.map +1 -0
- package/dist/builtins/host-helpers.d.ts +66 -0
- package/dist/builtins/host-helpers.d.ts.map +1 -0
- package/dist/builtins/host-helpers.js +127 -0
- package/dist/builtins/host-helpers.js.map +1 -0
- package/dist/builtins/registry.d.ts +48 -0
- package/dist/builtins/registry.d.ts.map +1 -0
- package/dist/builtins/registry.js +118 -0
- package/dist/builtins/registry.js.map +1 -0
- package/dist/check.d.ts +9 -2
- package/dist/check.d.ts.map +1 -1
- package/dist/check.js +30 -9
- package/dist/check.js.map +1 -1
- package/dist/checker/check.d.ts +18 -1
- package/dist/checker/check.d.ts.map +1 -1
- package/dist/checker/check.js +157 -108
- package/dist/checker/check.js.map +1 -1
- package/dist/checker/type-env.d.ts +2 -0
- package/dist/checker/type-env.d.ts.map +1 -1
- package/dist/checker/type-env.js +9 -0
- package/dist/checker/type-env.js.map +1 -1
- package/dist/codegen/browser-host-adapter.d.ts +29 -0
- package/dist/codegen/browser-host-adapter.d.ts.map +1 -0
- package/dist/codegen/browser-host-adapter.js +51 -0
- package/dist/codegen/browser-host-adapter.js.map +1 -0
- package/dist/codegen/builtins.d.ts +2 -26
- package/dist/codegen/builtins.d.ts.map +1 -1
- package/dist/codegen/builtins.js +2 -341
- package/dist/codegen/builtins.js.map +1 -1
- package/dist/codegen/closures.d.ts +17 -0
- package/dist/codegen/closures.d.ts.map +1 -0
- package/dist/codegen/closures.js +140 -0
- package/dist/codegen/closures.js.map +1 -0
- package/dist/codegen/codegen.d.ts +6 -30
- package/dist/codegen/codegen.d.ts.map +1 -1
- package/dist/codegen/codegen.js +154 -1103
- package/dist/codegen/codegen.js.map +1 -1
- package/dist/codegen/collect-strings.d.ts +4 -0
- package/dist/codegen/collect-strings.d.ts.map +1 -0
- package/dist/codegen/collect-strings.js +76 -0
- package/dist/codegen/collect-strings.js.map +1 -0
- package/dist/codegen/compile-calls.d.ts +10 -0
- package/dist/codegen/compile-calls.d.ts.map +1 -0
- package/dist/codegen/compile-calls.js +374 -0
- package/dist/codegen/compile-calls.js.map +1 -0
- package/dist/codegen/compile-data.d.ts +22 -0
- package/dist/codegen/compile-data.d.ts.map +1 -0
- package/dist/codegen/compile-data.js +243 -0
- package/dist/codegen/compile-data.js.map +1 -0
- package/dist/codegen/compile-expr.d.ts +10 -0
- package/dist/codegen/compile-expr.d.ts.map +1 -0
- package/dist/codegen/compile-expr.js +156 -0
- package/dist/codegen/compile-expr.js.map +1 -0
- package/dist/codegen/compile-match.d.ts +7 -0
- package/dist/codegen/compile-match.d.ts.map +1 -0
- package/dist/codegen/compile-match.js +195 -0
- package/dist/codegen/compile-match.js.map +1 -0
- package/dist/codegen/compile-scalars.d.ts +25 -0
- package/dist/codegen/compile-scalars.d.ts.map +1 -0
- package/dist/codegen/compile-scalars.js +211 -0
- package/dist/codegen/compile-scalars.js.map +1 -0
- package/dist/codegen/hof-generators.d.ts +39 -0
- package/dist/codegen/hof-generators.d.ts.map +1 -0
- package/dist/codegen/hof-generators.js +336 -0
- package/dist/codegen/hof-generators.js.map +1 -0
- package/dist/codegen/host-adapter.d.ts +44 -0
- package/dist/codegen/host-adapter.d.ts.map +1 -0
- package/dist/codegen/host-adapter.js +9 -0
- package/dist/codegen/host-adapter.js.map +1 -0
- package/dist/codegen/imports.d.ts +15 -0
- package/dist/codegen/imports.d.ts.map +1 -0
- package/dist/codegen/imports.js +165 -0
- package/dist/codegen/imports.js.map +1 -0
- package/dist/codegen/node-host-adapter.d.ts +35 -0
- package/dist/codegen/node-host-adapter.d.ts.map +1 -0
- package/dist/codegen/node-host-adapter.js +155 -0
- package/dist/codegen/node-host-adapter.js.map +1 -0
- package/dist/codegen/runner.d.ts +36 -2
- package/dist/codegen/runner.d.ts.map +1 -1
- package/dist/codegen/runner.js +147 -271
- package/dist/codegen/runner.js.map +1 -1
- package/dist/codegen/types.d.ts +96 -0
- package/dist/codegen/types.d.ts.map +1 -0
- package/dist/codegen/types.js +63 -0
- package/dist/codegen/types.js.map +1 -0
- package/dist/compact/expand.d.ts +25 -0
- package/dist/compact/expand.d.ts.map +1 -0
- package/dist/compact/expand.js +199 -0
- package/dist/compact/expand.js.map +1 -0
- package/dist/compile.d.ts +2 -1
- package/dist/compile.d.ts.map +1 -1
- package/dist/compile.js +2 -2
- package/dist/compile.js.map +1 -1
- package/dist/contracts/translate.js.map +1 -1
- package/dist/contracts/verify.d.ts +10 -2
- package/dist/contracts/verify.d.ts.map +1 -1
- package/dist/contracts/verify.js +26 -21
- package/dist/contracts/verify.js.map +1 -1
- package/dist/effects/call-graph.d.ts.map +1 -1
- package/dist/effects/call-graph.js +27 -4
- package/dist/effects/call-graph.js.map +1 -1
- package/dist/effects/effect-check.d.ts +10 -2
- package/dist/effects/effect-check.d.ts.map +1 -1
- package/dist/effects/effect-check.js +12 -7
- package/dist/effects/effect-check.js.map +1 -1
- package/dist/errors/error-catalog.d.ts +1 -1
- package/dist/errors/error-catalog.d.ts.map +1 -1
- package/dist/errors/error-catalog.js +119 -0
- package/dist/errors/error-catalog.js.map +1 -1
- package/dist/errors/structured-errors.d.ts +28 -1
- package/dist/errors/structured-errors.d.ts.map +1 -1
- package/dist/errors/structured-errors.js +9 -0
- package/dist/errors/structured-errors.js.map +1 -1
- package/dist/index.d.ts +20 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +26 -10
- package/dist/index.js.map +1 -1
- package/dist/lint/lint.d.ts +9 -0
- package/dist/lint/lint.d.ts.map +1 -0
- package/dist/lint/lint.js +354 -0
- package/dist/lint/lint.js.map +1 -0
- package/dist/lint/warnings.d.ts +54 -0
- package/dist/lint/warnings.d.ts.map +1 -0
- package/dist/lint/warnings.js +39 -0
- package/dist/lint/warnings.js.map +1 -0
- package/dist/mcp/create-server.d.ts.map +1 -1
- package/dist/mcp/create-server.js +66 -5
- package/dist/mcp/create-server.js.map +1 -1
- package/dist/mcp/handlers.d.ts +21 -5
- package/dist/mcp/handlers.d.ts.map +1 -1
- package/dist/mcp/handlers.js +65 -15
- package/dist/mcp/handlers.js.map +1 -1
- package/dist/mcp/prompts.d.ts +17 -0
- package/dist/mcp/prompts.d.ts.map +1 -0
- package/dist/mcp/prompts.js +181 -0
- package/dist/mcp/prompts.js.map +1 -0
- package/dist/mcp/server.js +1 -4
- package/dist/mcp/server.js.map +1 -1
- package/dist/resolver/resolve.d.ts.map +1 -1
- package/dist/resolver/resolve.js +62 -16
- package/dist/resolver/resolve.js.map +1 -1
- package/dist/validator/node-validators.d.ts.map +1 -1
- package/dist/validator/node-validators.js +60 -5
- package/dist/validator/node-validators.js.map +1 -1
- package/package.json +4 -2
|
@@ -135,4 +135,13 @@ export function patchIndexOutOfRange(nodeId, field, index, arrayLength, patchInd
|
|
|
135
135
|
export function patchDeleteNotInArray(nodeId, patchIndex) {
|
|
136
136
|
return { error: "patch_delete_not_in_array", nodeId, patchIndex };
|
|
137
137
|
}
|
|
138
|
+
export function analysisDiagnostic(diagnostic, functionName, nodeId, phase, detail) {
|
|
139
|
+
const d = { diagnostic, functionName, nodeId, phase };
|
|
140
|
+
if (detail !== undefined)
|
|
141
|
+
d.detail = detail;
|
|
142
|
+
return d;
|
|
143
|
+
}
|
|
144
|
+
export function wasmValidationError(message) {
|
|
145
|
+
return { error: "wasm_validation_error", message };
|
|
146
|
+
}
|
|
138
147
|
//# sourceMappingURL=structured-errors.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"structured-errors.js","sourceRoot":"","sources":["../../src/errors/structured-errors.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,0BAA0B;AAC1B,gFAAgF;AAChF,uEAAuE;AACvE,0DAA0D;
|
|
1
|
+
{"version":3,"file":"structured-errors.js","sourceRoot":"","sources":["../../src/errors/structured-errors.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -5,12 +5,15 @@ export { Scope } from "./resolver/scope.js";
|
|
|
5
5
|
export type { SymbolKind, SymbolInfo } from "./resolver/scope.js";
|
|
6
6
|
export { levenshteinDistance, findCandidates } from "./resolver/levenshtein.js";
|
|
7
7
|
export { typeCheck } from "./checker/check.js";
|
|
8
|
+
export type { TypedModuleInfo, TypeCheckResult } from "./checker/check.js";
|
|
8
9
|
export { TypeEnv } from "./checker/type-env.js";
|
|
9
10
|
export { typesEqual, isUnknown, resolveType } from "./checker/types-equal.js";
|
|
10
11
|
export { effectCheck } from "./effects/effect-check.js";
|
|
12
|
+
export type { EffectCheckResult } from "./effects/effect-check.js";
|
|
11
13
|
export { buildCallGraph, collectCalls } from "./effects/call-graph.js";
|
|
12
14
|
export type { CallEdge, CallGraph } from "./effects/call-graph.js";
|
|
13
15
|
export { contractVerify } from "./contracts/verify.js";
|
|
16
|
+
export type { ContractVerifyResult } from "./contracts/verify.js";
|
|
14
17
|
export { getZ3, resetZ3 } from "./contracts/z3-context.js";
|
|
15
18
|
export { translateExpr, translateExprList, createParamVariables } from "./contracts/translate.js";
|
|
16
19
|
export type { TranslationContext, TranslationError } from "./contracts/translate.js";
|
|
@@ -18,19 +21,27 @@ export { check } from "./check.js";
|
|
|
18
21
|
export type { CheckResult } from "./check.js";
|
|
19
22
|
export type { EdictModule, Import, Definition, FunctionDef, TypeDef, RecordDef, EnumDef, ConstDef, RecordField, EnumVariant, Param, Contract, Effect, Expression, Literal, Identifier, BinaryOp, BinaryOperator, UnaryOp, UnaryOperator, Call, IfExpr, LetExpr, MatchExpr, MatchArm, Pattern, LiteralPattern, WildcardPattern, BindingPattern, ConstructorPattern, ArrayExpr, TupleExpr, RecordExpr, EnumConstructor, FieldAccess, LambdaExpr, BlockExpr, FieldInit, StringInterp, } from "./ast/nodes.js";
|
|
20
23
|
export type { TypeExpr, BasicType, ArrayType, OptionType, ResultType, UnitType, RefinedType, FunctionType, NamedType, TupleType, } from "./ast/types.js";
|
|
21
|
-
export type { StructuredError, DuplicateIdError, UnknownNodeKindError, MissingFieldError, InvalidFieldTypeError, InvalidEffectError, InvalidOperatorError, InvalidBasicTypeName, ConflictingEffectsError, UndefinedReferenceError, DuplicateDefinitionError, UnknownRecordError, UnknownEnumError, UnknownVariantError, TypeMismatchError, ArityMismatchError, NotAFunctionError, UnknownFieldError, MissingRecordFieldsError, EffectViolationError, EffectInPureError, ContractFailureError, VerificationTimeoutError, UndecidablePredicateError, PreconditionNotMetError, } from "./errors/structured-errors.js";
|
|
22
|
-
export { duplicateId, unknownNodeKind, missingField, invalidFieldType, invalidEffect, invalidOperator, invalidBasicTypeName, conflictingEffects, } from "./errors/structured-errors.js";
|
|
23
|
-
export { undefinedReference, duplicateDefinition, unknownRecord, unknownEnum, unknownVariant, typeMismatch, arityMismatch, notAFunction, unknownField, missingRecordFields, } from "./errors/structured-errors.js";
|
|
24
|
-
export { effectViolation, effectInPure, } from "./errors/structured-errors.js";
|
|
25
|
-
export { contractFailure, verificationTimeout, undecidablePredicate, preconditionNotMet, } from "./errors/structured-errors.js";
|
|
24
|
+
export type { StructuredError, DuplicateIdError, UnknownNodeKindError, MissingFieldError, InvalidFieldTypeError, InvalidEffectError, InvalidOperatorError, InvalidBasicTypeName, ConflictingEffectsError, UndefinedReferenceError, DuplicateDefinitionError, UnknownRecordError, UnknownEnumError, UnknownVariantError, TypeMismatchError, ArityMismatchError, NotAFunctionError, UnknownFieldError, MissingRecordFieldsError, EffectViolationError, EffectInPureError, ContractFailureError, VerificationTimeoutError, UndecidablePredicateError, PreconditionNotMetError, PatchNodeNotFoundError, PatchInvalidFieldError, PatchIndexOutOfRangeError, PatchDeleteNotInArrayError, AnalysisDiagnostic, AnalysisDiagnosticKind, VerificationCoverage, } from "./errors/structured-errors.js";
|
|
25
|
+
export { duplicateId, unknownNodeKind, missingField, invalidFieldType, invalidEffect, invalidOperator, invalidBasicTypeName, conflictingEffects, undefinedReference, duplicateDefinition, unknownRecord, unknownEnum, unknownVariant, typeMismatch, arityMismatch, notAFunction, unknownField, missingRecordFields, effectViolation, effectInPure, contractFailure, verificationTimeout, undecidablePredicate, preconditionNotMet, patchNodeNotFound, patchInvalidField, patchIndexOutOfRange, patchDeleteNotInArray, analysisDiagnostic, } from "./errors/structured-errors.js";
|
|
26
26
|
export { compile } from "./codegen/codegen.js";
|
|
27
|
-
export type { CompileResult, CompileSuccess, CompileFailure, } from "./codegen/codegen.js";
|
|
28
|
-
export { run } from "./codegen/runner.js";
|
|
29
|
-
export type { RunResult } from "./codegen/runner.js";
|
|
27
|
+
export type { CompileResult, CompileSuccess, CompileFailure, CompileOptions, } from "./codegen/codegen.js";
|
|
28
|
+
export { run, runDirect } from "./codegen/runner.js";
|
|
29
|
+
export type { RunResult, RunLimits } from "./codegen/runner.js";
|
|
30
30
|
export { compileAndRun } from "./compile.js";
|
|
31
31
|
export type { CompileAndRunResult, CompileAndRunSuccess, CompileAndRunFailure, } from "./compile.js";
|
|
32
32
|
export { StringTable } from "./codegen/string-table.js";
|
|
33
|
-
export { BUILTIN_FUNCTIONS, isBuiltin, getBuiltin } from "./
|
|
33
|
+
export { BUILTIN_FUNCTIONS, isBuiltin, getBuiltin } from "./builtins/builtins.js";
|
|
34
|
+
export type { EdictHostAdapter } from "./codegen/host-adapter.js";
|
|
35
|
+
export { NodeHostAdapter } from "./codegen/node-host-adapter.js";
|
|
36
|
+
export { BrowserHostAdapter } from "./codegen/browser-host-adapter.js";
|
|
37
|
+
export { EdictOomError } from "./builtins/host-helpers.js";
|
|
34
38
|
export { buildErrorCatalog } from "./errors/error-catalog.js";
|
|
35
39
|
export type { ErrorCatalog, ErrorCatalogEntry } from "./errors/error-catalog.js";
|
|
40
|
+
export { expandCompact, isCompactAst, compactSchemaReference } from "./compact/expand.js";
|
|
41
|
+
export { lint } from "./lint/lint.js";
|
|
42
|
+
export type { LintWarning } from "./lint/lint.js";
|
|
43
|
+
export type { UnusedVariableWarning, UnusedImportWarning, MissingContractWarning, OversizedFunctionWarning, EmptyBodyWarning, RedundantEffectWarning, } from "./lint/warnings.js";
|
|
44
|
+
export { unusedVariable, unusedImport, missingContract, oversizedFunction, emptyBody, redundantEffect, } from "./lint/warnings.js";
|
|
45
|
+
export { applyPatches } from "./patch/apply.js";
|
|
46
|
+
export type { AstPatch, PatchApplyResult } from "./patch/apply.js";
|
|
36
47
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,YAAY,EACR,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,GACpB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAGhF,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAG9E,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAGnE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAClG,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAGrF,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAG9C,YAAY,EACR,WAAW,EACX,MAAM,EACN,UAAU,EACV,WAAW,EACX,OAAO,EACP,SAAS,EACT,OAAO,EACP,QAAQ,EACR,WAAW,EACX,WAAW,EACX,KAAK,EACL,QAAQ,EACR,MAAM,EACN,UAAU,EACV,OAAO,EACP,UAAU,EACV,QAAQ,EACR,cAAc,EACd,OAAO,EACP,aAAa,EACb,IAAI,EACJ,MAAM,EACN,OAAO,EACP,SAAS,EACT,QAAQ,EACR,OAAO,EACP,cAAc,EACd,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,SAAS,EACT,SAAS,EACT,UAAU,EACV,eAAe,EACf,WAAW,EACX,UAAU,EACV,SAAS,EACT,SAAS,EACT,YAAY,GACf,MAAM,gBAAgB,CAAC;AAGxB,YAAY,EACR,QAAQ,EACR,SAAS,EACT,SAAS,EACT,UAAU,EACV,UAAU,EACV,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,SAAS,EACT,SAAS,GACZ,MAAM,gBAAgB,CAAC;AAGxB,YAAY,EACR,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,EAEvB,uBAAuB,EACvB,wBAAwB,EACxB,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,wBAAwB,EAExB,oBAAoB,EACpB,iBAAiB,EAEjB,oBAAoB,EACpB,wBAAwB,EACxB,yBAAyB,EACzB,uBAAuB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,YAAY,EACR,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,GACpB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAGhF,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAG9E,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,YAAY,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAGnE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,YAAY,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAClG,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAGrF,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAG9C,YAAY,EACR,WAAW,EACX,MAAM,EACN,UAAU,EACV,WAAW,EACX,OAAO,EACP,SAAS,EACT,OAAO,EACP,QAAQ,EACR,WAAW,EACX,WAAW,EACX,KAAK,EACL,QAAQ,EACR,MAAM,EACN,UAAU,EACV,OAAO,EACP,UAAU,EACV,QAAQ,EACR,cAAc,EACd,OAAO,EACP,aAAa,EACb,IAAI,EACJ,MAAM,EACN,OAAO,EACP,SAAS,EACT,QAAQ,EACR,OAAO,EACP,cAAc,EACd,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,SAAS,EACT,SAAS,EACT,UAAU,EACV,eAAe,EACf,WAAW,EACX,UAAU,EACV,SAAS,EACT,SAAS,EACT,YAAY,GACf,MAAM,gBAAgB,CAAC;AAGxB,YAAY,EACR,QAAQ,EACR,SAAS,EACT,SAAS,EACT,UAAU,EACV,UAAU,EACV,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,SAAS,EACT,SAAS,GACZ,MAAM,gBAAgB,CAAC;AAGxB,YAAY,EACR,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,EAEvB,uBAAuB,EACvB,wBAAwB,EACxB,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,wBAAwB,EAExB,oBAAoB,EACpB,iBAAiB,EAEjB,oBAAoB,EACpB,wBAAwB,EACxB,yBAAyB,EACzB,uBAAuB,EAEvB,sBAAsB,EACtB,sBAAsB,EACtB,yBAAyB,EACzB,0BAA0B,EAE1B,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,GACvB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAEH,WAAW,EACX,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAElB,kBAAkB,EAClB,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,cAAc,EACd,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,mBAAmB,EAEnB,eAAe,EACf,YAAY,EAEZ,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAElB,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EAErB,kBAAkB,GACrB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,YAAY,EACR,aAAa,EACb,cAAc,EACd,cAAc,EACd,cAAc,GACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,YAAY,EACR,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,GACvB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGlF,YAAY,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAG3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAGjF,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAG1F,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,YAAY,EACR,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,wBAAwB,EACxB,gBAAgB,EAChB,sBAAsB,GACzB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACH,cAAc,EACd,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,SAAS,EACT,eAAe,GAClB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,YAAY,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -20,20 +20,36 @@ export { getZ3, resetZ3 } from "./contracts/z3-context.js";
|
|
|
20
20
|
export { translateExpr, translateExprList, createParamVariables } from "./contracts/translate.js";
|
|
21
21
|
// Pipeline
|
|
22
22
|
export { check } from "./check.js";
|
|
23
|
-
// Error constructors
|
|
24
|
-
export {
|
|
25
|
-
//
|
|
26
|
-
|
|
27
|
-
//
|
|
28
|
-
|
|
29
|
-
//
|
|
30
|
-
|
|
23
|
+
// Error constructors (all phases)
|
|
24
|
+
export {
|
|
25
|
+
// Phase 1
|
|
26
|
+
duplicateId, unknownNodeKind, missingField, invalidFieldType, invalidEffect, invalidOperator, invalidBasicTypeName, conflictingEffects,
|
|
27
|
+
// Phase 2
|
|
28
|
+
undefinedReference, duplicateDefinition, unknownRecord, unknownEnum, unknownVariant, typeMismatch, arityMismatch, notAFunction, unknownField, missingRecordFields,
|
|
29
|
+
// Phase 3
|
|
30
|
+
effectViolation, effectInPure,
|
|
31
|
+
// Phase 4
|
|
32
|
+
contractFailure, verificationTimeout, undecidablePredicate, preconditionNotMet,
|
|
33
|
+
// Patch errors
|
|
34
|
+
patchNodeNotFound, patchInvalidField, patchIndexOutOfRange, patchDeleteNotInArray,
|
|
35
|
+
// Analysis diagnostics
|
|
36
|
+
analysisDiagnostic, } from "./errors/structured-errors.js";
|
|
31
37
|
// Phase 5 — Code generation
|
|
32
38
|
export { compile } from "./codegen/codegen.js";
|
|
33
|
-
export { run } from "./codegen/runner.js";
|
|
39
|
+
export { run, runDirect } from "./codegen/runner.js";
|
|
34
40
|
export { compileAndRun } from "./compile.js";
|
|
35
41
|
export { StringTable } from "./codegen/string-table.js";
|
|
36
|
-
export { BUILTIN_FUNCTIONS, isBuiltin, getBuiltin } from "./
|
|
42
|
+
export { BUILTIN_FUNCTIONS, isBuiltin, getBuiltin } from "./builtins/builtins.js";
|
|
43
|
+
export { NodeHostAdapter } from "./codegen/node-host-adapter.js";
|
|
44
|
+
export { BrowserHostAdapter } from "./codegen/browser-host-adapter.js";
|
|
45
|
+
export { EdictOomError } from "./builtins/host-helpers.js";
|
|
37
46
|
// Error catalog
|
|
38
47
|
export { buildErrorCatalog } from "./errors/error-catalog.js";
|
|
48
|
+
// Compact AST format
|
|
49
|
+
export { expandCompact, isCompactAst, compactSchemaReference } from "./compact/expand.js";
|
|
50
|
+
// Lint
|
|
51
|
+
export { lint } from "./lint/lint.js";
|
|
52
|
+
export { unusedVariable, unusedImport, missingContract, oversizedFunction, emptyBody, redundantEffect, } from "./lint/warnings.js";
|
|
53
|
+
// Patch engine
|
|
54
|
+
export { applyPatches } from "./patch/apply.js";
|
|
39
55
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF,uBAAuB;AACvB,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAOnD,4BAA4B;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE5C,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAEhF,0BAA0B;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF,uBAAuB;AACvB,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAOnD,4BAA4B;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE5C,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAEhF,0BAA0B;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE9E,4BAA4B;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAGvE,kCAAkC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAGlG,WAAW;AACX,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAqGnC,kCAAkC;AAClC,OAAO;AACH,UAAU;AACV,WAAW,EACX,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,oBAAoB,EACpB,kBAAkB;AAClB,UAAU;AACV,kBAAkB,EAClB,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,cAAc,EACd,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,mBAAmB;AACnB,UAAU;AACV,eAAe,EACf,YAAY;AACZ,UAAU;AACV,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB;AAClB,eAAe;AACf,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB;AACrB,uBAAuB;AACvB,kBAAkB,GACrB,MAAM,+BAA+B,CAAC;AAEvC,4BAA4B;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAO/C,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAM7C,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAIlF,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,gBAAgB;AAChB,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAG9D,qBAAqB;AACrB,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAE1F,OAAO;AACP,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAUtC,OAAO,EACH,cAAc,EACd,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,SAAS,EACT,eAAe,GAClB,MAAM,oBAAoB,CAAC;AAE5B,eAAe;AACf,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { EdictModule } from "../ast/nodes.js";
|
|
2
|
+
import { type LintWarning } from "./warnings.js";
|
|
3
|
+
export type { LintWarning } from "./warnings.js";
|
|
4
|
+
/**
|
|
5
|
+
* Run lint analysis on a validated Edict module.
|
|
6
|
+
* Returns an array of non-blocking warnings.
|
|
7
|
+
*/
|
|
8
|
+
export declare function lint(module: EdictModule): LintWarning[];
|
|
9
|
+
//# sourceMappingURL=lint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lint.d.ts","sourceRoot":"","sources":["../../src/lint/lint.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAmC,MAAM,iBAAiB,CAAC;AAEpF,OAAO,EAOH,KAAK,WAAW,EACnB,MAAM,eAAe,CAAC;AAGvB,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AASjD;;;GAGG;AACH,wBAAgB,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,EAAE,CAQvD"}
|
|
@@ -0,0 +1,354 @@
|
|
|
1
|
+
// =============================================================================
|
|
2
|
+
// Lint Engine — lint(module) → LintWarning[]
|
|
3
|
+
// =============================================================================
|
|
4
|
+
// Non-blocking analysis pass. Runs on a validated module (post-Phase 1).
|
|
5
|
+
// Returns structured warnings without blocking compilation.
|
|
6
|
+
import { buildCallGraph } from "../effects/call-graph.js";
|
|
7
|
+
import { unusedVariable, unusedImport, missingContract, oversizedFunction, emptyBody, redundantEffect, } from "./warnings.js";
|
|
8
|
+
/** Default threshold for oversized function warning */
|
|
9
|
+
const OVERSIZED_THRESHOLD = 50;
|
|
10
|
+
// =============================================================================
|
|
11
|
+
// Main entry point
|
|
12
|
+
// =============================================================================
|
|
13
|
+
/**
|
|
14
|
+
* Run lint analysis on a validated Edict module.
|
|
15
|
+
* Returns an array of non-blocking warnings.
|
|
16
|
+
*/
|
|
17
|
+
export function lint(module) {
|
|
18
|
+
const warnings = [];
|
|
19
|
+
checkUnusedImports(module, warnings);
|
|
20
|
+
checkFunctionWarnings(module, warnings);
|
|
21
|
+
checkRedundantEffects(module, warnings);
|
|
22
|
+
return warnings;
|
|
23
|
+
}
|
|
24
|
+
// =============================================================================
|
|
25
|
+
// Unused imports
|
|
26
|
+
// =============================================================================
|
|
27
|
+
function checkUnusedImports(module, warnings) {
|
|
28
|
+
if (module.imports.length === 0)
|
|
29
|
+
return;
|
|
30
|
+
// Collect all referenced names across all definitions
|
|
31
|
+
const referencedNames = new Set();
|
|
32
|
+
for (const def of module.definitions) {
|
|
33
|
+
switch (def.kind) {
|
|
34
|
+
case "fn":
|
|
35
|
+
collectReferencedNames(def.body, referencedNames);
|
|
36
|
+
for (const contract of def.contracts) {
|
|
37
|
+
collectReferencedNamesFromExpr(contract.condition, referencedNames);
|
|
38
|
+
}
|
|
39
|
+
break;
|
|
40
|
+
case "const":
|
|
41
|
+
collectReferencedNamesFromExpr(def.value, referencedNames);
|
|
42
|
+
break;
|
|
43
|
+
case "record":
|
|
44
|
+
for (const field of def.fields) {
|
|
45
|
+
if (field.defaultValue) {
|
|
46
|
+
collectReferencedNamesFromExpr(field.defaultValue, referencedNames);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
break;
|
|
50
|
+
case "enum":
|
|
51
|
+
for (const variant of def.variants) {
|
|
52
|
+
for (const field of variant.fields) {
|
|
53
|
+
if (field.defaultValue) {
|
|
54
|
+
collectReferencedNamesFromExpr(field.defaultValue, referencedNames);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
// Check each import for unused names
|
|
62
|
+
for (const imp of module.imports) {
|
|
63
|
+
const unused = imp.names.filter(n => !referencedNames.has(n));
|
|
64
|
+
if (unused.length > 0) {
|
|
65
|
+
warnings.push(unusedImport(imp.id, imp.module, unused));
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
// =============================================================================
|
|
70
|
+
// Per-function warnings: unused variables, missing contracts, oversized, empty
|
|
71
|
+
// =============================================================================
|
|
72
|
+
function checkFunctionWarnings(module, warnings) {
|
|
73
|
+
for (const def of module.definitions) {
|
|
74
|
+
if (def.kind !== "fn")
|
|
75
|
+
continue;
|
|
76
|
+
// Empty body
|
|
77
|
+
if (def.body.length === 0) {
|
|
78
|
+
warnings.push(emptyBody(def.id, def.name));
|
|
79
|
+
continue; // No point checking other warnings on empty body
|
|
80
|
+
}
|
|
81
|
+
// Missing contract (skip main — entry point, contracts less useful)
|
|
82
|
+
if (def.contracts.length === 0 && def.name !== "main") {
|
|
83
|
+
warnings.push(missingContract(def.id, def.name));
|
|
84
|
+
}
|
|
85
|
+
// Oversized function
|
|
86
|
+
const nodeCount = countExprNodes(def.body);
|
|
87
|
+
if (nodeCount > OVERSIZED_THRESHOLD) {
|
|
88
|
+
warnings.push(oversizedFunction(def.id, def.name, nodeCount, OVERSIZED_THRESHOLD));
|
|
89
|
+
}
|
|
90
|
+
// Unused variables
|
|
91
|
+
checkUnusedVariables(def.body, warnings);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Check for unused let bindings in an expression list.
|
|
96
|
+
* A let binding's scope covers subsequent sibling expressions.
|
|
97
|
+
*/
|
|
98
|
+
function checkUnusedVariables(exprs, warnings) {
|
|
99
|
+
for (let i = 0; i < exprs.length; i++) {
|
|
100
|
+
const expr = exprs[i];
|
|
101
|
+
// Recurse into nested expression lists
|
|
102
|
+
recurseIntoExprForUnused(expr, warnings);
|
|
103
|
+
if (expr.kind === "let") {
|
|
104
|
+
// Check if name is referenced in subsequent siblings
|
|
105
|
+
const referencedInRest = new Set();
|
|
106
|
+
for (let j = i + 1; j < exprs.length; j++) {
|
|
107
|
+
collectReferencedNamesFromExpr(exprs[j], referencedInRest);
|
|
108
|
+
}
|
|
109
|
+
if (!referencedInRest.has(expr.name)) {
|
|
110
|
+
warnings.push(unusedVariable(expr.id, expr.name));
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Recurse into sub-expression lists within an expression to check for unused variables.
|
|
117
|
+
*/
|
|
118
|
+
function recurseIntoExprForUnused(expr, warnings) {
|
|
119
|
+
switch (expr.kind) {
|
|
120
|
+
case "if":
|
|
121
|
+
if (expr.then)
|
|
122
|
+
checkUnusedVariables(expr.then, warnings);
|
|
123
|
+
if (expr.else)
|
|
124
|
+
checkUnusedVariables(expr.else, warnings);
|
|
125
|
+
break;
|
|
126
|
+
case "match":
|
|
127
|
+
for (const arm of expr.arms) {
|
|
128
|
+
checkUnusedVariables(arm.body, warnings);
|
|
129
|
+
}
|
|
130
|
+
break;
|
|
131
|
+
case "lambda":
|
|
132
|
+
checkUnusedVariables(expr.body, warnings);
|
|
133
|
+
break;
|
|
134
|
+
case "block":
|
|
135
|
+
checkUnusedVariables(expr.body, warnings);
|
|
136
|
+
break;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
// =============================================================================
|
|
140
|
+
// Redundant effects
|
|
141
|
+
// =============================================================================
|
|
142
|
+
function checkRedundantEffects(module, warnings) {
|
|
143
|
+
const { graph, functionDefs, importedNames } = buildCallGraph(module);
|
|
144
|
+
for (const def of module.definitions) {
|
|
145
|
+
if (def.kind !== "fn")
|
|
146
|
+
continue;
|
|
147
|
+
if (def.effects.includes("pure"))
|
|
148
|
+
continue; // Pure functions can't have redundant effects
|
|
149
|
+
const declaredNonPure = new Set(def.effects.filter(e => e !== "pure"));
|
|
150
|
+
if (declaredNonPure.size === 0)
|
|
151
|
+
continue;
|
|
152
|
+
// Compute required effects from call graph
|
|
153
|
+
const required = computeRequiredEffects(def.name, graph, functionDefs, importedNames);
|
|
154
|
+
const redundant = [...declaredNonPure].filter(e => !required.has(e));
|
|
155
|
+
if (redundant.length > 0) {
|
|
156
|
+
const requiredArray = required.size > 0 ? [...required] : [];
|
|
157
|
+
warnings.push(redundantEffect(def.id, def.name, redundant, requiredArray));
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Compute the required non-pure effects for a function based on its call graph.
|
|
163
|
+
* Walks callee edges transitively to find all effects needed.
|
|
164
|
+
*/
|
|
165
|
+
function computeRequiredEffects(fnName, graph, functionDefs, importedNames) {
|
|
166
|
+
const required = new Set();
|
|
167
|
+
const visited = new Set();
|
|
168
|
+
function visit(name) {
|
|
169
|
+
if (visited.has(name))
|
|
170
|
+
return;
|
|
171
|
+
visited.add(name);
|
|
172
|
+
const edges = graph.get(name);
|
|
173
|
+
if (!edges)
|
|
174
|
+
return;
|
|
175
|
+
for (const edge of edges) {
|
|
176
|
+
// Skip imported functions — effect-opaque
|
|
177
|
+
if (importedNames.has(edge.calleeName))
|
|
178
|
+
continue;
|
|
179
|
+
const callee = functionDefs.get(edge.calleeName);
|
|
180
|
+
if (!callee)
|
|
181
|
+
continue;
|
|
182
|
+
for (const effect of callee.effects) {
|
|
183
|
+
if (effect !== "pure") {
|
|
184
|
+
required.add(effect);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
// Recurse into callee's callees
|
|
188
|
+
visit(edge.calleeName);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
visit(fnName);
|
|
192
|
+
return required;
|
|
193
|
+
}
|
|
194
|
+
// =============================================================================
|
|
195
|
+
// Helpers
|
|
196
|
+
// =============================================================================
|
|
197
|
+
/**
|
|
198
|
+
* Recursively collect all referenced identifier names from an expression list.
|
|
199
|
+
*/
|
|
200
|
+
function collectReferencedNames(exprs, names) {
|
|
201
|
+
for (const expr of exprs) {
|
|
202
|
+
collectReferencedNamesFromExpr(expr, names);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Recursively collect all referenced identifier names from a single expression.
|
|
207
|
+
*/
|
|
208
|
+
function collectReferencedNamesFromExpr(expr, names) {
|
|
209
|
+
switch (expr.kind) {
|
|
210
|
+
case "ident":
|
|
211
|
+
names.add(expr.name);
|
|
212
|
+
break;
|
|
213
|
+
case "literal":
|
|
214
|
+
break;
|
|
215
|
+
case "binop":
|
|
216
|
+
collectReferencedNamesFromExpr(expr.left, names);
|
|
217
|
+
collectReferencedNamesFromExpr(expr.right, names);
|
|
218
|
+
break;
|
|
219
|
+
case "unop":
|
|
220
|
+
collectReferencedNamesFromExpr(expr.operand, names);
|
|
221
|
+
break;
|
|
222
|
+
case "call":
|
|
223
|
+
collectReferencedNamesFromExpr(expr.fn, names);
|
|
224
|
+
for (const arg of expr.args) {
|
|
225
|
+
collectReferencedNamesFromExpr(arg, names);
|
|
226
|
+
}
|
|
227
|
+
break;
|
|
228
|
+
case "if":
|
|
229
|
+
collectReferencedNamesFromExpr(expr.condition, names);
|
|
230
|
+
if (expr.then)
|
|
231
|
+
collectReferencedNames(expr.then, names);
|
|
232
|
+
if (expr.else)
|
|
233
|
+
collectReferencedNames(expr.else, names);
|
|
234
|
+
break;
|
|
235
|
+
case "let":
|
|
236
|
+
collectReferencedNamesFromExpr(expr.value, names);
|
|
237
|
+
break;
|
|
238
|
+
case "match":
|
|
239
|
+
collectReferencedNamesFromExpr(expr.target, names);
|
|
240
|
+
for (const arm of expr.arms) {
|
|
241
|
+
collectReferencedNames(arm.body, names);
|
|
242
|
+
}
|
|
243
|
+
break;
|
|
244
|
+
case "array":
|
|
245
|
+
for (const el of expr.elements) {
|
|
246
|
+
collectReferencedNamesFromExpr(el, names);
|
|
247
|
+
}
|
|
248
|
+
break;
|
|
249
|
+
case "tuple_expr":
|
|
250
|
+
for (const el of expr.elements) {
|
|
251
|
+
collectReferencedNamesFromExpr(el, names);
|
|
252
|
+
}
|
|
253
|
+
break;
|
|
254
|
+
case "record_expr":
|
|
255
|
+
for (const f of expr.fields) {
|
|
256
|
+
collectReferencedNamesFromExpr(f.value, names);
|
|
257
|
+
}
|
|
258
|
+
break;
|
|
259
|
+
case "enum_constructor":
|
|
260
|
+
for (const f of expr.fields) {
|
|
261
|
+
collectReferencedNamesFromExpr(f.value, names);
|
|
262
|
+
}
|
|
263
|
+
break;
|
|
264
|
+
case "access":
|
|
265
|
+
collectReferencedNamesFromExpr(expr.target, names);
|
|
266
|
+
break;
|
|
267
|
+
case "lambda":
|
|
268
|
+
collectReferencedNames(expr.body, names);
|
|
269
|
+
break;
|
|
270
|
+
case "block":
|
|
271
|
+
collectReferencedNames(expr.body, names);
|
|
272
|
+
break;
|
|
273
|
+
case "string_interp":
|
|
274
|
+
for (const part of expr.parts) {
|
|
275
|
+
collectReferencedNamesFromExpr(part, names);
|
|
276
|
+
}
|
|
277
|
+
break;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Recursively count expression nodes in an expression list.
|
|
282
|
+
*/
|
|
283
|
+
function countExprNodes(exprs) {
|
|
284
|
+
let count = 0;
|
|
285
|
+
for (const expr of exprs) {
|
|
286
|
+
count += countExprNode(expr);
|
|
287
|
+
}
|
|
288
|
+
return count;
|
|
289
|
+
}
|
|
290
|
+
function countExprNode(expr) {
|
|
291
|
+
let count = 1; // Count this node
|
|
292
|
+
switch (expr.kind) {
|
|
293
|
+
case "literal":
|
|
294
|
+
case "ident":
|
|
295
|
+
break;
|
|
296
|
+
case "binop":
|
|
297
|
+
count += countExprNode(expr.left);
|
|
298
|
+
count += countExprNode(expr.right);
|
|
299
|
+
break;
|
|
300
|
+
case "unop":
|
|
301
|
+
count += countExprNode(expr.operand);
|
|
302
|
+
break;
|
|
303
|
+
case "call":
|
|
304
|
+
count += countExprNode(expr.fn);
|
|
305
|
+
for (const arg of expr.args) {
|
|
306
|
+
count += countExprNode(arg);
|
|
307
|
+
}
|
|
308
|
+
break;
|
|
309
|
+
case "if":
|
|
310
|
+
count += countExprNode(expr.condition);
|
|
311
|
+
if (expr.then)
|
|
312
|
+
count += countExprNodes(expr.then);
|
|
313
|
+
if (expr.else)
|
|
314
|
+
count += countExprNodes(expr.else);
|
|
315
|
+
break;
|
|
316
|
+
case "let":
|
|
317
|
+
count += countExprNode(expr.value);
|
|
318
|
+
break;
|
|
319
|
+
case "match":
|
|
320
|
+
count += countExprNode(expr.target);
|
|
321
|
+
for (const arm of expr.arms) {
|
|
322
|
+
count += countExprNodes(arm.body);
|
|
323
|
+
}
|
|
324
|
+
break;
|
|
325
|
+
case "array":
|
|
326
|
+
case "tuple_expr":
|
|
327
|
+
for (const el of expr.elements) {
|
|
328
|
+
count += countExprNode(el);
|
|
329
|
+
}
|
|
330
|
+
break;
|
|
331
|
+
case "record_expr":
|
|
332
|
+
case "enum_constructor":
|
|
333
|
+
for (const f of expr.fields) {
|
|
334
|
+
count += countExprNode(f.value);
|
|
335
|
+
}
|
|
336
|
+
break;
|
|
337
|
+
case "access":
|
|
338
|
+
count += countExprNode(expr.target);
|
|
339
|
+
break;
|
|
340
|
+
case "lambda":
|
|
341
|
+
count += countExprNodes(expr.body);
|
|
342
|
+
break;
|
|
343
|
+
case "block":
|
|
344
|
+
count += countExprNodes(expr.body);
|
|
345
|
+
break;
|
|
346
|
+
case "string_interp":
|
|
347
|
+
for (const part of expr.parts) {
|
|
348
|
+
count += countExprNode(part);
|
|
349
|
+
}
|
|
350
|
+
break;
|
|
351
|
+
}
|
|
352
|
+
return count;
|
|
353
|
+
}
|
|
354
|
+
//# sourceMappingURL=lint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lint.js","sourceRoot":"","sources":["../../src/lint/lint.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { Effect } from "../ast/nodes.js";
|
|
2
|
+
import type { FixSuggestion } from "../errors/structured-errors.js";
|
|
3
|
+
export type LintWarning = UnusedVariableWarning | UnusedImportWarning | MissingContractWarning | OversizedFunctionWarning | EmptyBodyWarning | RedundantEffectWarning;
|
|
4
|
+
export interface UnusedVariableWarning {
|
|
5
|
+
warning: "unused_variable";
|
|
6
|
+
severity: "warning";
|
|
7
|
+
nodeId: string;
|
|
8
|
+
name: string;
|
|
9
|
+
suggestion?: FixSuggestion;
|
|
10
|
+
}
|
|
11
|
+
export interface UnusedImportWarning {
|
|
12
|
+
warning: "unused_import";
|
|
13
|
+
severity: "warning";
|
|
14
|
+
nodeId: string;
|
|
15
|
+
importModule: string;
|
|
16
|
+
unusedNames: string[];
|
|
17
|
+
suggestion?: FixSuggestion;
|
|
18
|
+
}
|
|
19
|
+
export interface MissingContractWarning {
|
|
20
|
+
warning: "missing_contract";
|
|
21
|
+
severity: "warning";
|
|
22
|
+
nodeId: string;
|
|
23
|
+
functionName: string;
|
|
24
|
+
}
|
|
25
|
+
export interface OversizedFunctionWarning {
|
|
26
|
+
warning: "oversized_function";
|
|
27
|
+
severity: "warning";
|
|
28
|
+
nodeId: string;
|
|
29
|
+
functionName: string;
|
|
30
|
+
expressionCount: number;
|
|
31
|
+
threshold: number;
|
|
32
|
+
}
|
|
33
|
+
export interface EmptyBodyWarning {
|
|
34
|
+
warning: "empty_body";
|
|
35
|
+
severity: "warning";
|
|
36
|
+
nodeId: string;
|
|
37
|
+
functionName: string;
|
|
38
|
+
}
|
|
39
|
+
export interface RedundantEffectWarning {
|
|
40
|
+
warning: "redundant_effect";
|
|
41
|
+
severity: "warning";
|
|
42
|
+
nodeId: string;
|
|
43
|
+
functionName: string;
|
|
44
|
+
redundantEffects: Effect[];
|
|
45
|
+
requiredEffects: Effect[];
|
|
46
|
+
suggestion?: FixSuggestion;
|
|
47
|
+
}
|
|
48
|
+
export declare function unusedVariable(nodeId: string, name: string): UnusedVariableWarning;
|
|
49
|
+
export declare function unusedImport(nodeId: string, importModule: string, unusedNames: string[]): UnusedImportWarning;
|
|
50
|
+
export declare function missingContract(nodeId: string, functionName: string): MissingContractWarning;
|
|
51
|
+
export declare function oversizedFunction(nodeId: string, functionName: string, expressionCount: number, threshold: number): OversizedFunctionWarning;
|
|
52
|
+
export declare function emptyBody(nodeId: string, functionName: string): EmptyBodyWarning;
|
|
53
|
+
export declare function redundantEffect(nodeId: string, functionName: string, redundantEffects: Effect[], requiredEffects: Effect[]): RedundantEffectWarning;
|
|
54
|
+
//# sourceMappingURL=warnings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"warnings.d.ts","sourceRoot":"","sources":["../../src/lint/warnings.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAMpE,MAAM,MAAM,WAAW,GACjB,qBAAqB,GACrB,mBAAmB,GACnB,sBAAsB,GACtB,wBAAwB,GACxB,gBAAgB,GAChB,sBAAsB,CAAC;AAM7B,MAAM,WAAW,qBAAqB;IAClC,OAAO,EAAE,iBAAiB,CAAC;IAC3B,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,aAAa,CAAC;CAC9B;AAED,MAAM,WAAW,mBAAmB;IAChC,OAAO,EAAE,eAAe,CAAC;IACzB,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE,aAAa,CAAC;CAC9B;AAED,MAAM,WAAW,sBAAsB;IACnC,OAAO,EAAE,kBAAkB,CAAC;IAC5B,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,wBAAwB;IACrC,OAAO,EAAE,oBAAoB,CAAC;IAC9B,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC7B,OAAO,EAAE,YAAY,CAAC;IACtB,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,sBAAsB;IACnC,OAAO,EAAE,kBAAkB,CAAC;IAC5B,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,UAAU,CAAC,EAAE,aAAa,CAAC;CAC9B;AAMD,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,qBAAqB,CAElF;AAED,wBAAgB,YAAY,CACxB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EAAE,GACtB,mBAAmB,CAErB;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,sBAAsB,CAE5F;AAED,wBAAgB,iBAAiB,CAC7B,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,MAAM,GAClB,wBAAwB,CAE1B;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,gBAAgB,CAEhF;AAED,wBAAgB,eAAe,CAC3B,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,MAAM,EAAE,EAC1B,eAAe,EAAE,MAAM,EAAE,GAC1B,sBAAsB,CAcxB"}
|