semantifold 0.13.0 → 0.14.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 (59) hide show
  1. package/README.md +1 -0
  2. package/build/src/backends/effects.js +3 -1
  3. package/build/src/backends/php.d.ts.map +1 -1
  4. package/build/src/backends/php.js +56 -3
  5. package/build/src/backends/scalars.js +2 -2
  6. package/build/src/backends/shared.d.ts +2 -1
  7. package/build/src/backends/shared.d.ts.map +1 -1
  8. package/build/src/backends/shared.js +209 -7
  9. package/build/src/backends/writer.d.ts +18 -4
  10. package/build/src/backends/writer.d.ts.map +1 -1
  11. package/build/src/backends/writer.js +40 -4
  12. package/build/src/frontends/java.d.ts +1 -1
  13. package/build/src/frontends/java.d.ts.map +1 -1
  14. package/build/src/frontends/java.js +14 -11
  15. package/build/src/frontends/javascript-typescript.d.ts +1 -1
  16. package/build/src/frontends/javascript-typescript.d.ts.map +1 -1
  17. package/build/src/frontends/javascript-typescript.js +17 -17
  18. package/build/src/frontends/php.d.ts +5 -1
  19. package/build/src/frontends/php.d.ts.map +1 -1
  20. package/build/src/frontends/php.js +159 -31
  21. package/build/src/frontends/ruby.d.ts +1 -1
  22. package/build/src/frontends/ruby.d.ts.map +1 -1
  23. package/build/src/frontends/ruby.js +12 -9
  24. package/build/src/frontends/types.d.ts +9 -2
  25. package/build/src/frontends/types.d.ts.map +1 -1
  26. package/build/src/frontends/types.js +26 -9
  27. package/build/src/language-registry.d.ts.map +1 -1
  28. package/build/src/language-registry.js +14 -6
  29. package/build/src/mapping.d.ts.map +1 -1
  30. package/build/src/mapping.js +4 -2
  31. package/build/src/semantic/effects.d.ts.map +1 -1
  32. package/build/src/semantic/effects.js +3 -1
  33. package/build/src/semantic/provenance.d.ts.map +1 -1
  34. package/build/src/semantic/provenance.js +37 -4
  35. package/build/src/semantic/types.d.ts +140 -9
  36. package/build/src/semantic/types.d.ts.map +1 -1
  37. package/build/src/semantic/types.js +37 -6
  38. package/build/src/semantic/validate.d.ts +31 -2
  39. package/build/src/semantic/validate.d.ts.map +1 -1
  40. package/build/src/semantic/validate.js +346 -27
  41. package/docs/adr-bounded-subtyping.md +180 -0
  42. package/docs/language-support.md +1 -1
  43. package/package.json +1 -1
  44. package/src/backends/effects.js +1 -0
  45. package/src/backends/php.js +56 -2
  46. package/src/backends/scalars.js +1 -1
  47. package/src/backends/shared.js +210 -6
  48. package/src/backends/writer.js +41 -3
  49. package/src/frontends/java.js +13 -10
  50. package/src/frontends/javascript-typescript.js +16 -16
  51. package/src/frontends/php.js +175 -31
  52. package/src/frontends/ruby.js +11 -8
  53. package/src/frontends/types.js +26 -8
  54. package/src/language-registry.js +13 -5
  55. package/src/mapping.js +3 -1
  56. package/src/semantic/effects.js +1 -0
  57. package/src/semantic/provenance.js +34 -3
  58. package/src/semantic/types.js +39 -5
  59. package/src/semantic/validate.js +377 -26
@@ -1,6 +1,33 @@
1
1
  export type RecordRegistry = Map<string, import("./types.js").RecordDeclaration>;
2
2
  export type ClassRegistry = Map<string, import("./types.js").ClassDeclaration>;
3
+ export type InterfaceRegistry = Map<string, import("./types.js").InterfaceDeclaration>;
3
4
  export type ErrorRegistry = Map<string, import("./types.js").ErrorDeclaration>;
5
+ export type InterfaceContractMember = {
6
+ /**
7
+ * - Declaring interface identity.
8
+ */
9
+ interfaceId: string;
10
+ /**
11
+ * - Declaring interface method identity.
12
+ */
13
+ methodId: string;
14
+ /**
15
+ * - Contract method name.
16
+ */
17
+ name: string;
18
+ /**
19
+ * - Source-ordered contract parameters.
20
+ */
21
+ parameters: import("./types.js").Parameter[];
22
+ /**
23
+ * - Contract return type.
24
+ */
25
+ returnType: import("./types.js").SemanticFunctionReturnType;
26
+ /**
27
+ * - Declaring method source location.
28
+ */
29
+ location: import("./types.js").SourceLocation;
30
+ };
4
31
  export type Binding = {
5
32
  /**
6
33
  * - Whether assignment is allowed.
@@ -90,12 +117,13 @@ export type SemanticFail = (code: string, detail: string, location: import("./ty
90
117
  * Enforces the coherent release-candidate semantic subset after adaptation.
91
118
  * @param {import("./types.js").SemanticModule} module - Adapted semantic module.
92
119
  * @param {import("./types.js").SemanticLanguage} language - Source language.
93
- * @param {{classes?: Map<string, import("./types.js").ClassDeclaration>, functions?: Map<string, import("./types.js").FunctionDeclaration>, records?: Map<string, import("./types.js").RecordDeclaration>, errors?: Map<string, import("./types.js").ErrorDeclaration>, callEffects?: Map<string, Set<string>>}} [visible] - Program imports visible during validation.
120
+ * @param {{classes?: Map<string, import("./types.js").ClassDeclaration>, functions?: Map<string, import("./types.js").FunctionDeclaration>, interfaces?: Map<string, import("./types.js").InterfaceDeclaration>, records?: Map<string, import("./types.js").RecordDeclaration>, errors?: Map<string, import("./types.js").ErrorDeclaration>, callEffects?: Map<string, Set<string>>}} [visible] - Program imports visible during validation.
94
121
  * @returns {import("./types.js").SemanticModule} Validated module.
95
122
  */
96
123
  export declare function validateParsedModule(module: import("./types.js").SemanticModule, language: import("./types.js").SemanticLanguage, visible?: {
97
124
  classes?: Map<string, import("./types.js").ClassDeclaration>;
98
125
  functions?: Map<string, import("./types.js").FunctionDeclaration>;
126
+ interfaces?: Map<string, import("./types.js").InterfaceDeclaration>;
99
127
  records?: Map<string, import("./types.js").RecordDeclaration>;
100
128
  errors?: Map<string, import("./types.js").ErrorDeclaration>;
101
129
  callEffects?: Map<string, Set<string>>;
@@ -104,12 +132,13 @@ export declare function validateParsedModule(module: import("./types.js").Semant
104
132
  * Validates scalar types and bindings for a caller-supplied semantic module before emission.
105
133
  * @param {import("./types.js").SemanticModule} module - Semantic module.
106
134
  * @param {import("./types.js").BackendLanguage} language - Backend language or binary target.
107
- * @param {{classes?: Map<string, import("./types.js").ClassDeclaration>, functions?: Map<string, import("./types.js").FunctionDeclaration>, records?: Map<string, import("./types.js").RecordDeclaration>, errors?: Map<string, import("./types.js").ErrorDeclaration>, callEffects?: Map<string, Set<string>>}} [visible] - Resolved program imports.
135
+ * @param {{classes?: Map<string, import("./types.js").ClassDeclaration>, functions?: Map<string, import("./types.js").FunctionDeclaration>, interfaces?: Map<string, import("./types.js").InterfaceDeclaration>, records?: Map<string, import("./types.js").RecordDeclaration>, errors?: Map<string, import("./types.js").ErrorDeclaration>, callEffects?: Map<string, Set<string>>}} [visible] - Resolved program imports.
108
136
  * @returns {void}
109
137
  */
110
138
  export declare function validateBackendTypes(module: import("./types.js").SemanticModule, language: import("./types.js").BackendLanguage, visible?: {
111
139
  classes?: Map<string, import("./types.js").ClassDeclaration>;
112
140
  functions?: Map<string, import("./types.js").FunctionDeclaration>;
141
+ interfaces?: Map<string, import("./types.js").InterfaceDeclaration>;
113
142
  records?: Map<string, import("./types.js").RecordDeclaration>;
114
143
  errors?: Map<string, import("./types.js").ErrorDeclaration>;
115
144
  callEffects?: Map<string, Set<string>>;
@@ -1 +1 @@
1
- {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../src/semantic/validate.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../src/semantic/validate.js"],"names":[],"mappings":"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"}