jade-lang 0.9.0 → 0.10.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 (145) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +400 -12
  3. data/docs/interop.md +18 -1
  4. data/docs/stdlib.md +3 -1
  5. data/docs/syntax.md +96 -0
  6. data/lib/jade/api.rb +9 -0
  7. data/lib/jade/ast.rb +37 -1
  8. data/lib/jade/cli/eject.rb +132 -0
  9. data/lib/jade/cli.rb +2 -0
  10. data/lib/jade/codegen/boundary/specialized/list.rb +11 -7
  11. data/lib/jade/codegen/boundary/specialized/maybe.rb +2 -2
  12. data/lib/jade/codegen/boundary/specialized/record.rb +19 -4
  13. data/lib/jade/codegen/boundary/specialized/scalar.rb +2 -2
  14. data/lib/jade/codegen/boundary/specialized.rb +13 -5
  15. data/lib/jade/codegen/boundary.rb +12 -2
  16. data/lib/jade/codegen/context.rb +17 -0
  17. data/lib/jade/codegen/error.rb +1 -0
  18. data/lib/jade/codegen/function_call.rb +23 -7
  19. data/lib/jade/codegen/function_declaration.rb +25 -13
  20. data/lib/jade/codegen/helpers.rb +27 -4
  21. data/lib/jade/codegen/implementation.rb +2 -2
  22. data/lib/jade/codegen/inline.rb +1 -1
  23. data/lib/jade/codegen/inlines.rb +6 -1
  24. data/lib/jade/codegen/names.rb +31 -0
  25. data/lib/jade/codegen/pattern/constructor.rb +2 -2
  26. data/lib/jade/codegen/transforms/fold_shape.rb +1 -1
  27. data/lib/jade/codegen.rb +76 -15
  28. data/lib/jade/compiler.rb +2 -0
  29. data/lib/jade/entry.rb +1 -1
  30. data/lib/jade/formatter/calls.rb +68 -11
  31. data/lib/jade/formatter/collections.rb +4 -4
  32. data/lib/jade/formatter/declarations.rb +13 -15
  33. data/lib/jade/formatter/helper.rb +20 -0
  34. data/lib/jade/formatter/infix_application.rb +19 -4
  35. data/lib/jade/formatter/lambda.rb +24 -12
  36. data/lib/jade/formatter/pattern.rb +3 -0
  37. data/lib/jade/frontend/desugaring/placeholder.rb +40 -17
  38. data/lib/jade/frontend/desugaring.rb +29 -9
  39. data/lib/jade/frontend/fixity_fixer.rb +6 -4
  40. data/lib/jade/frontend/forward_declaration/error/alias_expansion.rb +23 -0
  41. data/lib/jade/frontend/forward_declaration/error/duplicate_constructor_name.rb +45 -0
  42. data/lib/jade/frontend/forward_declaration/error/duplicate_type_name.rb +42 -0
  43. data/lib/jade/frontend/forward_declaration/error.rb +3 -0
  44. data/lib/jade/frontend/forward_declaration/helper.rb +58 -0
  45. data/lib/jade/frontend/forward_declaration/import_declaration.rb +4 -0
  46. data/lib/jade/frontend/forward_declaration/interface_declaration.rb +6 -0
  47. data/lib/jade/frontend/forward_declaration/module.rb +4 -0
  48. data/lib/jade/frontend/forward_declaration/struct_declaration.rb +10 -1
  49. data/lib/jade/frontend/forward_declaration/type_alias_declaration.rb +37 -0
  50. data/lib/jade/frontend/forward_declaration/type_declaration.rb +10 -1
  51. data/lib/jade/frontend/forward_declaration.rb +2 -0
  52. data/lib/jade/frontend/pattern_analysis/exhaustiveness.rb +47 -43
  53. data/lib/jade/frontend/pattern_analysis/matrix.rb +28 -219
  54. data/lib/jade/frontend/pattern_analysis/pattern.rb +132 -0
  55. data/lib/jade/frontend/pattern_analysis/redundancy.rb +24 -0
  56. data/lib/jade/frontend/pattern_analysis/signature.rb +220 -0
  57. data/lib/jade/frontend/pattern_analysis/usefulness.rb +72 -0
  58. data/lib/jade/frontend/pattern_analysis/witnesses.rb +73 -0
  59. data/lib/jade/frontend/pattern_analysis.rb +5 -38
  60. data/lib/jade/frontend/semantic_analysis/error/implementation_on_alias.rb +24 -0
  61. data/lib/jade/frontend/semantic_analysis/error/no_base_case.rb +45 -0
  62. data/lib/jade/frontend/semantic_analysis/error/placeholder_not_allowed.rb +15 -3
  63. data/lib/jade/frontend/semantic_analysis/error/recursive_type_alias.rb +24 -0
  64. data/lib/jade/frontend/semantic_analysis/error.rb +3 -0
  65. data/lib/jade/frontend/semantic_analysis/helper.rb +31 -0
  66. data/lib/jade/frontend/semantic_analysis/implementation.rb +13 -0
  67. data/lib/jade/frontend/semantic_analysis/inhabitedness.rb +90 -0
  68. data/lib/jade/frontend/semantic_analysis/interop_import_declaration.rb +28 -16
  69. data/lib/jade/frontend/semantic_analysis/keyed_call.rb +21 -5
  70. data/lib/jade/frontend/semantic_analysis/pattern_range.rb +16 -0
  71. data/lib/jade/frontend/semantic_analysis/struct_declaration.rb +1 -0
  72. data/lib/jade/frontend/semantic_analysis/type_alias_declaration/cycle_detection.rb +95 -0
  73. data/lib/jade/frontend/semantic_analysis/type_alias_declaration.rb +48 -0
  74. data/lib/jade/frontend/semantic_analysis/type_declaration.rb +1 -0
  75. data/lib/jade/frontend/semantic_analysis.rb +5 -0
  76. data/lib/jade/frontend/type_checking/canonicalize.rb +1 -0
  77. data/lib/jade/frontend/type_checking/cascade.rb +90 -0
  78. data/lib/jade/frontend/type_checking/constraints/deriving/encodable.rb +10 -0
  79. data/lib/jade/frontend/type_checking/constraints.rb +18 -3
  80. data/lib/jade/frontend/type_checking/error/display.rb +49 -0
  81. data/lib/jade/frontend/type_checking/error/division_by_zero.rb +31 -0
  82. data/lib/jade/frontend/type_checking/error/empty_range_pattern.rb +25 -0
  83. data/lib/jade/frontend/type_checking/error/function_body_type_mismatch.rb +4 -3
  84. data/lib/jade/frontend/type_checking/error/function_call_type_mismatch.rb +108 -5
  85. data/lib/jade/frontend/type_checking/error/if_branch_type_mismatch.rb +1 -1
  86. data/lib/jade/frontend/type_checking/error/if_branches_type_mismatch.rb +1 -1
  87. data/lib/jade/frontend/type_checking/error/if_condition_type_mismatch.rb +1 -1
  88. data/lib/jade/frontend/type_checking/error/implementation_type_mismatch.rb +1 -1
  89. data/lib/jade/frontend/type_checking/error/list_item_type_mismatch.rb +1 -1
  90. data/lib/jade/frontend/type_checking/error/missing_patterns.rb +20 -4
  91. data/lib/jade/frontend/type_checking/error/pattern_type_mismatch.rb +7 -1
  92. data/lib/jade/frontend/type_checking/error/range_pattern_type.rb +29 -0
  93. data/lib/jade/frontend/type_checking/error/record_access_type_mismatch.rb +2 -2
  94. data/lib/jade/frontend/type_checking/error/recursive_derivation.rb +25 -0
  95. data/lib/jade/frontend/type_checking/error/type_mismatch.rb +10 -2
  96. data/lib/jade/frontend/type_checking/error/unreachable_branch.rb +22 -0
  97. data/lib/jade/frontend/type_checking/error.rb +6 -0
  98. data/lib/jade/frontend/type_checking/inference/assign.rb +1 -1
  99. data/lib/jade/frontend/type_checking/inference/case_of.rb +21 -4
  100. data/lib/jade/frontend/type_checking/inference/division.rb +50 -0
  101. data/lib/jade/frontend/type_checking/inference/function_call.rb +26 -1
  102. data/lib/jade/frontend/type_checking/inference/lambda.rb +1 -1
  103. data/lib/jade/frontend/type_checking/inference/pattern.rb +35 -0
  104. data/lib/jade/frontend/type_checking/inference/type_alias_declaration.rb +18 -0
  105. data/lib/jade/frontend/type_checking/inference.rb +2 -0
  106. data/lib/jade/frontend/type_checking/loader.rb +11 -0
  107. data/lib/jade/frontend/type_checking/port_resolution.rb +26 -8
  108. data/lib/jade/frontend/type_checking/substitution.rb +2 -2
  109. data/lib/jade/frontend/type_checking.rb +3 -1
  110. data/lib/jade/frontend/usage_analysis.rb +5 -1
  111. data/lib/jade/interop/boundary.rb +64 -24
  112. data/lib/jade/interop/error.rb +35 -7
  113. data/lib/jade/interop/lowering.rb +8 -2
  114. data/lib/jade/lsp/converters.rb +83 -2
  115. data/lib/jade/lsp/handlers.rb +122 -25
  116. data/lib/jade/lsp/snippets.rb +12 -0
  117. data/lib/jade/lsp/state.rb +11 -4
  118. data/lib/jade/module_loader/build.rb +36 -0
  119. data/lib/jade/module_loader.rb +1 -0
  120. data/lib/jade/parsing/combinators.rb +78 -2
  121. data/lib/jade/parsing/error.rb +43 -6
  122. data/lib/jade/parsing/type.rb +5 -3
  123. data/lib/jade/parsing.rb +140 -26
  124. data/lib/jade/runtime.rb +32 -13
  125. data/lib/jade/source.rb +6 -2
  126. data/lib/jade/stdlib/basics.rb +22 -3
  127. data/lib/jade/stdlib/char.rb +2 -0
  128. data/lib/jade/stdlib/clock.rb +6 -2
  129. data/lib/jade/stdlib/decimal.rb +51 -14
  130. data/lib/jade/stdlib/intrinsics.rb +59 -6
  131. data/lib/jade/stdlib/list.rb +37 -1
  132. data/lib/jade/stdlib/number.rb +47 -0
  133. data/lib/jade/stdlib/range.rb +211 -0
  134. data/lib/jade/stdlib.rb +11 -4
  135. data/lib/jade/symbol/alias.rb +11 -0
  136. data/lib/jade/symbol/parser.rb +1 -1
  137. data/lib/jade/symbol.rb +13 -1
  138. data/lib/jade/task.rb +0 -2
  139. data/lib/jade/type/anonymous_record.rb +11 -2
  140. data/lib/jade/type/application.rb +11 -2
  141. data/lib/jade/type/base.rb +26 -0
  142. data/lib/jade/type/function.rb +11 -2
  143. data/lib/jade/type.rb +36 -10
  144. data/lib/jade/version.rb +1 -1
  145. metadata +33 -2
@@ -1,9 +1,18 @@
1
1
  module Jade
2
2
  module Type
3
- AnonymousRecord = Data.define(:fields, :row_var) do
3
+ AnonymousRecord = Data.define(:fields, :row_var, :display) do
4
4
  include Base
5
+ include Displayable
5
6
 
6
- def to_s
7
+ def initialize(fields:, row_var:, display: nil)
8
+ super
9
+ end
10
+
11
+ def identity
12
+ [fields, row_var]
13
+ end
14
+
15
+ def render
7
16
  row = row_var ? "#{row_var} | " : ""
8
17
 
9
18
  fields
@@ -1,9 +1,18 @@
1
1
  module Jade
2
2
  module Type
3
- Application = Data.define(:constructor, :args) do
3
+ Application = Data.define(:constructor, :args, :display) do
4
4
  include Base
5
+ include Displayable
5
6
 
6
- def to_s
7
+ def initialize(constructor:, args:, display: nil)
8
+ super
9
+ end
10
+
11
+ def identity
12
+ [constructor, args]
13
+ end
14
+
15
+ def render
7
16
  return constructor.to_s if args.empty?
8
17
 
9
18
  if constructor.name.start_with?('Tuple.Tuple')
@@ -5,5 +5,31 @@ module Jade
5
5
  fail NotImplementedError
6
6
  end
7
7
  end
8
+
9
+ module Displayable
10
+ def display_as(name)
11
+ with(display: name)
12
+ end
13
+
14
+ def to_s
15
+ display || render
16
+ end
17
+
18
+ def annotated
19
+ display ? "#{display} (= #{with(display: nil)})" : render
20
+ end
21
+
22
+ # `display` is deliberately out of `identity`: two spellings of one type
23
+ # must still unify, hash alike and compare equal.
24
+ def ==(other)
25
+ other.is_a?(self.class) && identity == other.identity
26
+ end
27
+
28
+ alias eql? ==
29
+
30
+ def hash
31
+ [self.class, *identity].hash
32
+ end
33
+ end
8
34
  end
9
35
  end
@@ -1,9 +1,18 @@
1
1
  module Jade
2
2
  module Type
3
- Function = Data.define(:args, :return_type) do
3
+ Function = Data.define(:args, :return_type, :display) do
4
4
  include Base
5
+ include Displayable
5
6
 
6
- def to_s
7
+ def initialize(args:, return_type:, display: nil)
8
+ super
9
+ end
10
+
11
+ def identity
12
+ [args, return_type]
13
+ end
14
+
15
+ def render
7
16
  args
8
17
  .map(&:to_s).join(', ')
9
18
  .then { "(#{it})"} + " -> " + return_type.to_s
data/lib/jade/type.rb CHANGED
@@ -60,8 +60,8 @@ module Jade
60
60
  [args, return_type]
61
61
  end
62
62
 
63
- def anonymous_record(fields, row_var)
64
- AnonymousRecord[fields, row_var]
63
+ def anonymous_record(fields, row_var, display = nil)
64
+ AnonymousRecord[fields, row_var, display]
65
65
  end
66
66
 
67
67
  def constraint(interface_id, type, origin, index: :unindex)
@@ -246,17 +246,43 @@ module Jade
246
246
  [Type::Application[constructor_type, arg_types], union_cs + args_cs, args_map]
247
247
 
248
248
  in Symbol::TypeApplication(constructor:, args:)
249
- constructor_type, union_cs, union_vars =
250
- from_symbol_r(constructor, registry, var_gen, var_map)
249
+ resolved_head = constructor.is_a?(Symbol::TypeRef) ? registry.lookup(constructor) : constructor
250
+
251
+ if resolved_head.is_a?(Symbol::Alias)
252
+ arg_types, args_cs, args_map = args
253
+ .reduce([[], [], var_map]) do |(types, cs, local_map), sym|
254
+ from_symbol_r(sym, registry, var_gen, local_map)
255
+ .then { |(t, c, new_map)| [types + [t], cs + c, new_map] }
256
+ end
257
+
258
+ alias_var_map = resolved_head.type_params.map(&:name).zip(arg_types).to_h
259
+
260
+ body_type, body_cs, _ = from_symbol_r(resolved_head.body, registry, var_gen, alias_var_map)
261
+ display = arg_types.empty? ?
262
+ resolved_head.name :
263
+ "#{resolved_head.name}(#{arg_types.join(', ')})"
264
+ [display_as(body_type, display), args_cs + body_cs, args_map]
265
+ else
266
+ constructor_type, union_cs, union_vars =
267
+ from_symbol_r(constructor, registry, var_gen, var_map)
251
268
 
252
- arg_types, args_cs, args_map = args
253
- .reduce([[], [], union_vars]) do |(types, cs, local_map), sym|
254
- from_symbol_r(sym, registry, var_gen, local_map)
255
- .then { |(t, c, new_map)| [types + [t], cs + c, new_map] }
256
- end
269
+ arg_types, args_cs, args_map = args
270
+ .reduce([[], [], union_vars]) do |(types, cs, local_map), sym|
271
+ from_symbol_r(sym, registry, var_gen, local_map)
272
+ .then { |(t, c, new_map)| [types + [t], cs + c, new_map] }
273
+ end
274
+
275
+ [Type.constructor(constructor.qualified_name).apply(arg_types), union_cs + args_cs, args_map]
276
+ end
257
277
 
258
- [Type.constructor(constructor.qualified_name).apply(arg_types), union_cs + args_cs, args_map]
278
+ in Symbol::Alias(body:)
279
+ from_symbol_r(body, registry, var_gen, var_map)
280
+ .then { |(type, cs, map)| [display_as(type, symbol.name), cs, map] }
259
281
  end
260
282
  end
283
+
284
+ def display_as(type, name)
285
+ type.is_a?(Displayable) ? type.display_as(name) : type
286
+ end
261
287
  end
262
288
  end
data/lib/jade/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Jade
2
- VERSION = '0.9.0'
2
+ VERSION = '0.10.0'
3
3
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jade-lang
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Agustin Cornu
8
8
  bindir: exe
9
9
  cert_chain: []
10
- date: 2026-08-21 00:00:00.000000000 Z
10
+ date: 2026-09-03 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: base64
@@ -55,6 +55,7 @@ files:
55
55
  - lib/jade/calendar/runtime.rb
56
56
  - lib/jade/cli.rb
57
57
  - lib/jade/cli/check.rb
58
+ - lib/jade/cli/eject.rb
58
59
  - lib/jade/cli/fmt.rb
59
60
  - lib/jade/cli/lsp.rb
60
61
  - lib/jade/cli/q.rb
@@ -78,6 +79,7 @@ files:
78
79
  - lib/jade/codegen/inline.rb
79
80
  - lib/jade/codegen/inlines.rb
80
81
  - lib/jade/codegen/method_names.rb
82
+ - lib/jade/codegen/names.rb
81
83
  - lib/jade/codegen/pattern/constructor.rb
82
84
  - lib/jade/codegen/port_codec.rb
83
85
  - lib/jade/codegen/pretty.rb
@@ -122,7 +124,10 @@ files:
122
124
  - lib/jade/frontend/forward_declaration.rb
123
125
  - lib/jade/frontend/forward_declaration/body.rb
124
126
  - lib/jade/frontend/forward_declaration/error.rb
127
+ - lib/jade/frontend/forward_declaration/error/alias_expansion.rb
125
128
  - lib/jade/frontend/forward_declaration/error/bad_import.rb
129
+ - lib/jade/frontend/forward_declaration/error/duplicate_constructor_name.rb
130
+ - lib/jade/frontend/forward_declaration/error/duplicate_type_name.rb
126
131
  - lib/jade/frontend/forward_declaration/error/exposed_type_not_found.rb
127
132
  - lib/jade/frontend/forward_declaration/error/exposed_value_not_found.rb
128
133
  - lib/jade/frontend/forward_declaration/error/module_not_found.rb
@@ -140,10 +145,16 @@ files:
140
145
  - lib/jade/frontend/forward_declaration/interop_import_declaration.rb
141
146
  - lib/jade/frontend/forward_declaration/module.rb
142
147
  - lib/jade/frontend/forward_declaration/struct_declaration.rb
148
+ - lib/jade/frontend/forward_declaration/type_alias_declaration.rb
143
149
  - lib/jade/frontend/forward_declaration/type_declaration.rb
144
150
  - lib/jade/frontend/pattern_analysis.rb
145
151
  - lib/jade/frontend/pattern_analysis/exhaustiveness.rb
146
152
  - lib/jade/frontend/pattern_analysis/matrix.rb
153
+ - lib/jade/frontend/pattern_analysis/pattern.rb
154
+ - lib/jade/frontend/pattern_analysis/redundancy.rb
155
+ - lib/jade/frontend/pattern_analysis/signature.rb
156
+ - lib/jade/frontend/pattern_analysis/usefulness.rb
157
+ - lib/jade/frontend/pattern_analysis/witnesses.rb
147
158
  - lib/jade/frontend/semantic_analysis.rb
148
159
  - lib/jade/frontend/semantic_analysis/assign.rb
149
160
  - lib/jade/frontend/semantic_analysis/body.rb
@@ -160,6 +171,7 @@ files:
160
171
  - lib/jade/frontend/semantic_analysis/error/duplicate_function_declaration.rb
161
172
  - lib/jade/frontend/semantic_analysis/error/duplicate_implementation.rb
162
173
  - lib/jade/frontend/semantic_analysis/error/duplicate_record_field.rb
174
+ - lib/jade/frontend/semantic_analysis/error/implementation_on_alias.rb
163
175
  - lib/jade/frontend/semantic_analysis/error/invalid_list_rest_pattern.rb
164
176
  - lib/jade/frontend/semantic_analysis/error/kwargs_on_non_constructor.rb
165
177
  - lib/jade/frontend/semantic_analysis/error/missing_exposing_clause.rb
@@ -168,11 +180,13 @@ files:
168
180
  - lib/jade/frontend/semantic_analysis/error/missing_implementation_function.rb
169
181
  - lib/jade/frontend/semantic_analysis/error/module_not_found.rb
170
182
  - lib/jade/frontend/semantic_analysis/error/nested_task_port.rb
183
+ - lib/jade/frontend/semantic_analysis/error/no_base_case.rb
171
184
  - lib/jade/frontend/semantic_analysis/error/non_task_port.rb
172
185
  - lib/jade/frontend/semantic_analysis/error/orphan_implementation.rb
173
186
  - lib/jade/frontend/semantic_analysis/error/placeholder_not_allowed.rb
174
187
  - lib/jade/frontend/semantic_analysis/error/predicate_must_return_bool.rb
175
188
  - lib/jade/frontend/semantic_analysis/error/predicate_name_not_allowed.rb
189
+ - lib/jade/frontend/semantic_analysis/error/recursive_type_alias.rb
176
190
  - lib/jade/frontend/semantic_analysis/error/shadowing_error.rb
177
191
  - lib/jade/frontend/semantic_analysis/error/type_args_mismatch.rb
178
192
  - lib/jade/frontend/semantic_analysis/error/type_param_required.rb
@@ -191,6 +205,7 @@ files:
191
205
  - lib/jade/frontend/semantic_analysis/implementation.rb
192
206
  - lib/jade/frontend/semantic_analysis/implementation_function.rb
193
207
  - lib/jade/frontend/semantic_analysis/import_declaration.rb
208
+ - lib/jade/frontend/semantic_analysis/inhabitedness.rb
194
209
  - lib/jade/frontend/semantic_analysis/interface_declaration.rb
195
210
  - lib/jade/frontend/semantic_analysis/interop_import_declaration.rb
196
211
  - lib/jade/frontend/semantic_analysis/keyed_call.rb
@@ -204,6 +219,7 @@ files:
204
219
  - lib/jade/frontend/semantic_analysis/pattern_constructor.rb
205
220
  - lib/jade/frontend/semantic_analysis/pattern_list.rb
206
221
  - lib/jade/frontend/semantic_analysis/pattern_literal.rb
222
+ - lib/jade/frontend/semantic_analysis/pattern_range.rb
207
223
  - lib/jade/frontend/semantic_analysis/pattern_record.rb
208
224
  - lib/jade/frontend/semantic_analysis/pattern_wildcard.rb
209
225
  - lib/jade/frontend/semantic_analysis/qualified_access.rb
@@ -213,11 +229,14 @@ files:
213
229
  - lib/jade/frontend/semantic_analysis/record_update.rb
214
230
  - lib/jade/frontend/semantic_analysis/struct_declaration.rb
215
231
  - lib/jade/frontend/semantic_analysis/tuple.rb
232
+ - lib/jade/frontend/semantic_analysis/type_alias_declaration.rb
233
+ - lib/jade/frontend/semantic_analysis/type_alias_declaration/cycle_detection.rb
216
234
  - lib/jade/frontend/semantic_analysis/type_declaration.rb
217
235
  - lib/jade/frontend/semantic_analysis/variable_reference.rb
218
236
  - lib/jade/frontend/semantic_analysis/variant_declaration.rb
219
237
  - lib/jade/frontend/type_checking.rb
220
238
  - lib/jade/frontend/type_checking/canonicalize.rb
239
+ - lib/jade/frontend/type_checking/cascade.rb
221
240
  - lib/jade/frontend/type_checking/constraints.rb
222
241
  - lib/jade/frontend/type_checking/constraints/deriving.rb
223
242
  - lib/jade/frontend/type_checking/constraints/deriving/decodable.rb
@@ -230,6 +249,9 @@ files:
230
249
  - lib/jade/frontend/type_checking/error.rb
231
250
  - lib/jade/frontend/type_checking/error/case_of_branches_type_mismatch.rb
232
251
  - lib/jade/frontend/type_checking/error/derivation_failed.rb
252
+ - lib/jade/frontend/type_checking/error/display.rb
253
+ - lib/jade/frontend/type_checking/error/division_by_zero.rb
254
+ - lib/jade/frontend/type_checking/error/empty_range_pattern.rb
233
255
  - lib/jade/frontend/type_checking/error/function_body_type_mismatch.rb
234
256
  - lib/jade/frontend/type_checking/error/function_call_type_mismatch.rb
235
257
  - lib/jade/frontend/type_checking/error/if_branch_type_mismatch.rb
@@ -242,8 +264,11 @@ files:
242
264
  - lib/jade/frontend/type_checking/error/pattern_type_mismatch.rb
243
265
  - lib/jade/frontend/type_checking/error/port_not_decodable.rb
244
266
  - lib/jade/frontend/type_checking/error/port_not_encodable.rb
267
+ - lib/jade/frontend/type_checking/error/range_pattern_type.rb
245
268
  - lib/jade/frontend/type_checking/error/record_access_type_mismatch.rb
269
+ - lib/jade/frontend/type_checking/error/recursive_derivation.rb
246
270
  - lib/jade/frontend/type_checking/error/type_mismatch.rb
271
+ - lib/jade/frontend/type_checking/error/unreachable_branch.rb
247
272
  - lib/jade/frontend/type_checking/error/unresolved_constraint.rb
248
273
  - lib/jade/frontend/type_checking/expected.rb
249
274
  - lib/jade/frontend/type_checking/generalization.rb
@@ -253,6 +278,7 @@ files:
253
278
  - lib/jade/frontend/type_checking/inference/body.rb
254
279
  - lib/jade/frontend/type_checking/inference/case_of.rb
255
280
  - lib/jade/frontend/type_checking/inference/constructor_reference.rb
281
+ - lib/jade/frontend/type_checking/inference/division.rb
256
282
  - lib/jade/frontend/type_checking/inference/function_call.rb
257
283
  - lib/jade/frontend/type_checking/inference/function_declaration.rb
258
284
  - lib/jade/frontend/type_checking/inference/grouping.rb
@@ -273,6 +299,7 @@ files:
273
299
  - lib/jade/frontend/type_checking/inference/record_literal.rb
274
300
  - lib/jade/frontend/type_checking/inference/record_update.rb
275
301
  - lib/jade/frontend/type_checking/inference/struct_declaration.rb
302
+ - lib/jade/frontend/type_checking/inference/type_alias_declaration.rb
276
303
  - lib/jade/frontend/type_checking/inference/type_declaration.rb
277
304
  - lib/jade/frontend/type_checking/inference/variable_reference.rb
278
305
  - lib/jade/frontend/type_checking/instantiation.rb
@@ -302,6 +329,7 @@ files:
302
329
  - lib/jade/lsp/snippets.rb
303
330
  - lib/jade/lsp/state.rb
304
331
  - lib/jade/module_loader.rb
332
+ - lib/jade/module_loader/build.rb
305
333
  - lib/jade/module_loader/cache.rb
306
334
  - lib/jade/module_loader/dependency_graph.rb
307
335
  - lib/jade/module_loader/dependency_resolver.rb
@@ -336,6 +364,8 @@ files:
336
364
  - lib/jade/stdlib/intrinsics.rb
337
365
  - lib/jade/stdlib/list.rb
338
366
  - lib/jade/stdlib/maybe.rb
367
+ - lib/jade/stdlib/number.rb
368
+ - lib/jade/stdlib/range.rb
339
369
  - lib/jade/stdlib/result.rb
340
370
  - lib/jade/stdlib/set.rb
341
371
  - lib/jade/stdlib/show.rb
@@ -344,6 +374,7 @@ files:
344
374
  - lib/jade/stdlib/text.rb
345
375
  - lib/jade/stdlib/tuple.rb
346
376
  - lib/jade/symbol.rb
377
+ - lib/jade/symbol/alias.rb
347
378
  - lib/jade/symbol/anonymous_record.rb
348
379
  - lib/jade/symbol/base.rb
349
380
  - lib/jade/symbol/constructor.rb