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.
Files changed (227) hide show
  1. package/README.md +39 -13
  2. package/dist/ast/nodes.d.ts +4 -3
  3. package/dist/ast/nodes.d.ts.map +1 -1
  4. package/dist/ast/nodes.js +1 -0
  5. package/dist/ast/nodes.js.map +1 -1
  6. package/dist/ast/type-constants.d.ts +12 -0
  7. package/dist/ast/type-constants.d.ts.map +1 -0
  8. package/dist/ast/type-constants.js +16 -0
  9. package/dist/ast/type-constants.js.map +1 -0
  10. package/dist/ast/types.d.ts +1 -1
  11. package/dist/ast/types.d.ts.map +1 -1
  12. package/dist/builtins/builtin-enums.d.ts +12 -0
  13. package/dist/builtins/builtin-enums.d.ts.map +1 -0
  14. package/dist/builtins/builtin-enums.js +45 -0
  15. package/dist/builtins/builtin-enums.js.map +1 -0
  16. package/dist/builtins/builtin-types.d.ts +20 -0
  17. package/dist/builtins/builtin-types.d.ts.map +1 -0
  18. package/dist/builtins/builtin-types.js +6 -0
  19. package/dist/builtins/builtin-types.js.map +1 -0
  20. package/dist/builtins/builtins.d.ts +3 -0
  21. package/dist/builtins/builtins.d.ts.map +1 -0
  22. package/dist/builtins/builtins.js +3 -0
  23. package/dist/builtins/builtins.js.map +1 -0
  24. package/dist/builtins/domains/array.d.ts +3 -0
  25. package/dist/builtins/domains/array.d.ts.map +1 -0
  26. package/dist/builtins/domains/array.js +236 -0
  27. package/dist/builtins/domains/array.js.map +1 -0
  28. package/dist/builtins/domains/core.d.ts +3 -0
  29. package/dist/builtins/domains/core.d.ts.map +1 -0
  30. package/dist/builtins/domains/core.js +45 -0
  31. package/dist/builtins/domains/core.js.map +1 -0
  32. package/dist/builtins/domains/crypto.d.ts +3 -0
  33. package/dist/builtins/domains/crypto.d.ts.map +1 -0
  34. package/dist/builtins/domains/crypto.js +49 -0
  35. package/dist/builtins/domains/crypto.js.map +1 -0
  36. package/dist/builtins/domains/datetime.d.ts +3 -0
  37. package/dist/builtins/domains/datetime.d.ts.map +1 -0
  38. package/dist/builtins/domains/datetime.js +45 -0
  39. package/dist/builtins/domains/datetime.js.map +1 -0
  40. package/dist/builtins/domains/http.d.ts +3 -0
  41. package/dist/builtins/domains/http.d.ts.map +1 -0
  42. package/dist/builtins/domains/http.js +55 -0
  43. package/dist/builtins/domains/http.js.map +1 -0
  44. package/dist/builtins/domains/int64.d.ts +3 -0
  45. package/dist/builtins/domains/int64.d.ts.map +1 -0
  46. package/dist/builtins/domains/int64.js +31 -0
  47. package/dist/builtins/domains/int64.js.map +1 -0
  48. package/dist/builtins/domains/io.d.ts +3 -0
  49. package/dist/builtins/domains/io.d.ts.map +1 -0
  50. package/dist/builtins/domains/io.js +79 -0
  51. package/dist/builtins/domains/io.js.map +1 -0
  52. package/dist/builtins/domains/json.d.ts +3 -0
  53. package/dist/builtins/domains/json.d.ts.map +1 -0
  54. package/dist/builtins/domains/json.js +47 -0
  55. package/dist/builtins/domains/json.js.map +1 -0
  56. package/dist/builtins/domains/math.d.ts +3 -0
  57. package/dist/builtins/domains/math.d.ts.map +1 -0
  58. package/dist/builtins/domains/math.js +47 -0
  59. package/dist/builtins/domains/math.js.map +1 -0
  60. package/dist/builtins/domains/option.d.ts +3 -0
  61. package/dist/builtins/domains/option.d.ts.map +1 -0
  62. package/dist/builtins/domains/option.js +56 -0
  63. package/dist/builtins/domains/option.js.map +1 -0
  64. package/dist/builtins/domains/random.d.ts +3 -0
  65. package/dist/builtins/domains/random.d.ts.map +1 -0
  66. package/dist/builtins/domains/random.js +50 -0
  67. package/dist/builtins/domains/random.js.map +1 -0
  68. package/dist/builtins/domains/regex.d.ts +3 -0
  69. package/dist/builtins/domains/regex.d.ts.map +1 -0
  70. package/dist/builtins/domains/regex.js +69 -0
  71. package/dist/builtins/domains/regex.js.map +1 -0
  72. package/dist/builtins/domains/result.d.ts +3 -0
  73. package/dist/builtins/domains/result.d.ts.map +1 -0
  74. package/dist/builtins/domains/result.js +84 -0
  75. package/dist/builtins/domains/result.js.map +1 -0
  76. package/dist/builtins/domains/string.d.ts +3 -0
  77. package/dist/builtins/domains/string.d.ts.map +1 -0
  78. package/dist/builtins/domains/string.js +139 -0
  79. package/dist/builtins/domains/string.js.map +1 -0
  80. package/dist/builtins/domains/type-conversion.d.ts +3 -0
  81. package/dist/builtins/domains/type-conversion.d.ts.map +1 -0
  82. package/dist/builtins/domains/type-conversion.js +42 -0
  83. package/dist/builtins/domains/type-conversion.js.map +1 -0
  84. package/dist/builtins/host-helpers.d.ts +66 -0
  85. package/dist/builtins/host-helpers.d.ts.map +1 -0
  86. package/dist/builtins/host-helpers.js +127 -0
  87. package/dist/builtins/host-helpers.js.map +1 -0
  88. package/dist/builtins/registry.d.ts +48 -0
  89. package/dist/builtins/registry.d.ts.map +1 -0
  90. package/dist/builtins/registry.js +118 -0
  91. package/dist/builtins/registry.js.map +1 -0
  92. package/dist/check.d.ts +9 -2
  93. package/dist/check.d.ts.map +1 -1
  94. package/dist/check.js +30 -9
  95. package/dist/check.js.map +1 -1
  96. package/dist/checker/check.d.ts +18 -1
  97. package/dist/checker/check.d.ts.map +1 -1
  98. package/dist/checker/check.js +157 -108
  99. package/dist/checker/check.js.map +1 -1
  100. package/dist/checker/type-env.d.ts +2 -0
  101. package/dist/checker/type-env.d.ts.map +1 -1
  102. package/dist/checker/type-env.js +9 -0
  103. package/dist/checker/type-env.js.map +1 -1
  104. package/dist/codegen/browser-host-adapter.d.ts +29 -0
  105. package/dist/codegen/browser-host-adapter.d.ts.map +1 -0
  106. package/dist/codegen/browser-host-adapter.js +51 -0
  107. package/dist/codegen/browser-host-adapter.js.map +1 -0
  108. package/dist/codegen/builtins.d.ts +2 -26
  109. package/dist/codegen/builtins.d.ts.map +1 -1
  110. package/dist/codegen/builtins.js +2 -341
  111. package/dist/codegen/builtins.js.map +1 -1
  112. package/dist/codegen/closures.d.ts +17 -0
  113. package/dist/codegen/closures.d.ts.map +1 -0
  114. package/dist/codegen/closures.js +140 -0
  115. package/dist/codegen/closures.js.map +1 -0
  116. package/dist/codegen/codegen.d.ts +6 -30
  117. package/dist/codegen/codegen.d.ts.map +1 -1
  118. package/dist/codegen/codegen.js +154 -1103
  119. package/dist/codegen/codegen.js.map +1 -1
  120. package/dist/codegen/collect-strings.d.ts +4 -0
  121. package/dist/codegen/collect-strings.d.ts.map +1 -0
  122. package/dist/codegen/collect-strings.js +76 -0
  123. package/dist/codegen/collect-strings.js.map +1 -0
  124. package/dist/codegen/compile-calls.d.ts +10 -0
  125. package/dist/codegen/compile-calls.d.ts.map +1 -0
  126. package/dist/codegen/compile-calls.js +374 -0
  127. package/dist/codegen/compile-calls.js.map +1 -0
  128. package/dist/codegen/compile-data.d.ts +22 -0
  129. package/dist/codegen/compile-data.d.ts.map +1 -0
  130. package/dist/codegen/compile-data.js +243 -0
  131. package/dist/codegen/compile-data.js.map +1 -0
  132. package/dist/codegen/compile-expr.d.ts +10 -0
  133. package/dist/codegen/compile-expr.d.ts.map +1 -0
  134. package/dist/codegen/compile-expr.js +156 -0
  135. package/dist/codegen/compile-expr.js.map +1 -0
  136. package/dist/codegen/compile-match.d.ts +7 -0
  137. package/dist/codegen/compile-match.d.ts.map +1 -0
  138. package/dist/codegen/compile-match.js +195 -0
  139. package/dist/codegen/compile-match.js.map +1 -0
  140. package/dist/codegen/compile-scalars.d.ts +25 -0
  141. package/dist/codegen/compile-scalars.d.ts.map +1 -0
  142. package/dist/codegen/compile-scalars.js +211 -0
  143. package/dist/codegen/compile-scalars.js.map +1 -0
  144. package/dist/codegen/hof-generators.d.ts +39 -0
  145. package/dist/codegen/hof-generators.d.ts.map +1 -0
  146. package/dist/codegen/hof-generators.js +336 -0
  147. package/dist/codegen/hof-generators.js.map +1 -0
  148. package/dist/codegen/host-adapter.d.ts +44 -0
  149. package/dist/codegen/host-adapter.d.ts.map +1 -0
  150. package/dist/codegen/host-adapter.js +9 -0
  151. package/dist/codegen/host-adapter.js.map +1 -0
  152. package/dist/codegen/imports.d.ts +15 -0
  153. package/dist/codegen/imports.d.ts.map +1 -0
  154. package/dist/codegen/imports.js +165 -0
  155. package/dist/codegen/imports.js.map +1 -0
  156. package/dist/codegen/node-host-adapter.d.ts +35 -0
  157. package/dist/codegen/node-host-adapter.d.ts.map +1 -0
  158. package/dist/codegen/node-host-adapter.js +155 -0
  159. package/dist/codegen/node-host-adapter.js.map +1 -0
  160. package/dist/codegen/runner.d.ts +36 -2
  161. package/dist/codegen/runner.d.ts.map +1 -1
  162. package/dist/codegen/runner.js +147 -271
  163. package/dist/codegen/runner.js.map +1 -1
  164. package/dist/codegen/types.d.ts +96 -0
  165. package/dist/codegen/types.d.ts.map +1 -0
  166. package/dist/codegen/types.js +63 -0
  167. package/dist/codegen/types.js.map +1 -0
  168. package/dist/compact/expand.d.ts +25 -0
  169. package/dist/compact/expand.d.ts.map +1 -0
  170. package/dist/compact/expand.js +199 -0
  171. package/dist/compact/expand.js.map +1 -0
  172. package/dist/compile.d.ts +2 -1
  173. package/dist/compile.d.ts.map +1 -1
  174. package/dist/compile.js +2 -2
  175. package/dist/compile.js.map +1 -1
  176. package/dist/contracts/translate.js.map +1 -1
  177. package/dist/contracts/verify.d.ts +10 -2
  178. package/dist/contracts/verify.d.ts.map +1 -1
  179. package/dist/contracts/verify.js +26 -21
  180. package/dist/contracts/verify.js.map +1 -1
  181. package/dist/effects/call-graph.d.ts.map +1 -1
  182. package/dist/effects/call-graph.js +27 -4
  183. package/dist/effects/call-graph.js.map +1 -1
  184. package/dist/effects/effect-check.d.ts +10 -2
  185. package/dist/effects/effect-check.d.ts.map +1 -1
  186. package/dist/effects/effect-check.js +12 -7
  187. package/dist/effects/effect-check.js.map +1 -1
  188. package/dist/errors/error-catalog.d.ts +1 -1
  189. package/dist/errors/error-catalog.d.ts.map +1 -1
  190. package/dist/errors/error-catalog.js +119 -0
  191. package/dist/errors/error-catalog.js.map +1 -1
  192. package/dist/errors/structured-errors.d.ts +28 -1
  193. package/dist/errors/structured-errors.d.ts.map +1 -1
  194. package/dist/errors/structured-errors.js +9 -0
  195. package/dist/errors/structured-errors.js.map +1 -1
  196. package/dist/index.d.ts +20 -9
  197. package/dist/index.d.ts.map +1 -1
  198. package/dist/index.js +26 -10
  199. package/dist/index.js.map +1 -1
  200. package/dist/lint/lint.d.ts +9 -0
  201. package/dist/lint/lint.d.ts.map +1 -0
  202. package/dist/lint/lint.js +354 -0
  203. package/dist/lint/lint.js.map +1 -0
  204. package/dist/lint/warnings.d.ts +54 -0
  205. package/dist/lint/warnings.d.ts.map +1 -0
  206. package/dist/lint/warnings.js +39 -0
  207. package/dist/lint/warnings.js.map +1 -0
  208. package/dist/mcp/create-server.d.ts.map +1 -1
  209. package/dist/mcp/create-server.js +66 -5
  210. package/dist/mcp/create-server.js.map +1 -1
  211. package/dist/mcp/handlers.d.ts +21 -5
  212. package/dist/mcp/handlers.d.ts.map +1 -1
  213. package/dist/mcp/handlers.js +65 -15
  214. package/dist/mcp/handlers.js.map +1 -1
  215. package/dist/mcp/prompts.d.ts +17 -0
  216. package/dist/mcp/prompts.d.ts.map +1 -0
  217. package/dist/mcp/prompts.js +181 -0
  218. package/dist/mcp/prompts.js.map +1 -0
  219. package/dist/mcp/server.js +1 -4
  220. package/dist/mcp/server.js.map +1 -1
  221. package/dist/resolver/resolve.d.ts.map +1 -1
  222. package/dist/resolver/resolve.js +62 -16
  223. package/dist/resolver/resolve.js.map +1 -1
  224. package/dist/validator/node-validators.d.ts.map +1 -1
  225. package/dist/validator/node-validators.js +60 -5
  226. package/dist/validator/node-validators.js.map +1 -1
  227. 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":"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"}
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 "./codegen/builtins.js";
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
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
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 Phase 1
24
- export { duplicateId, unknownNodeKind, missingField, invalidFieldType, invalidEffect, invalidOperator, invalidBasicTypeName, conflictingEffects, } from "./errors/structured-errors.js";
25
- // Error constructors — Phase 2
26
- export { undefinedReference, duplicateDefinition, unknownRecord, unknownEnum, unknownVariant, typeMismatch, arityMismatch, notAFunction, unknownField, missingRecordFields, } from "./errors/structured-errors.js";
27
- // Error constructors — Phase 3
28
- export { effectViolation, effectInPure, } from "./errors/structured-errors.js";
29
- // Error constructors — Phase 4
30
- export { contractFailure, verificationTimeout, undecidablePredicate, preconditionNotMet, } from "./errors/structured-errors.js";
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 "./codegen/builtins.js";
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;AAC/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;AACxD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAGvE,kCAAkC;AAClC,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;AAGlG,WAAW;AACX,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AA4FnC,+BAA+B;AAC/B,OAAO,EACH,WAAW,EACX,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,oBAAoB,EACpB,kBAAkB,GACrB,MAAM,+BAA+B,CAAC;AAEvC,+BAA+B;AAC/B,OAAO,EACH,kBAAkB,EAClB,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,cAAc,EACd,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,mBAAmB,GACtB,MAAM,+BAA+B,CAAC;AAEvC,+BAA+B;AAC/B,OAAO,EACH,eAAe,EACf,YAAY,GACf,MAAM,+BAA+B,CAAC;AAEvC,+BAA+B;AAC/B,OAAO,EACH,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,GACrB,MAAM,+BAA+B,CAAC;AAEvC,4BAA4B;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAM/C,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAE1C,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,uBAAuB,CAAC;AAEjF,gBAAgB;AAChB,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,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"}