Skip to content
← Back

src/ioc/container.ghul

1
namespace IoC is
2
use IO.Std
3
4
use Syntax
5
use Parsers.LAZY_PARSER
6
7
class CONTAINER is
8
_instance: CONTAINER? static
9
10
instance: CONTAINER static is
11
let result = _instance ?? CONTAINER()
12
13
_instance = result
14
15
return result
16
si
17
18
logger: Logging.Logger
19
logger_formatter: Logging.DiagnosticFormatter
20
logger_writer: IO.TextWriter
21
22
timers: Logging.TIMERS
23
watchdog: Analysis.WATCHDOG
24
25
path_config: Driver.PATH_CONFIG
26
build_flags: Compiler.GLOBAL_BUILD_FLAGS
27
28
location_stack: Source.LOCATION_STACK
29
30
precedence_map: Collections.MutableMap[string,Syntax.Parsers.Expressions.PRECEDENCE]
31
pragma_precedence: Syntax.Parsers.Definitions.PRAGMA_PRECEDENCE
32
identifier_parser: Syntax.Parsers.Parser[Trees.Identifiers.Identifier]
33
identifier_qualified_parser: Syntax.Parsers.Parser[Trees.Identifiers.Identifier]
34
identifier_function_name_parser: Syntax.Parsers.Parser[Trees.Identifiers.Identifier]
35
modifier_parser: Syntax.Parsers.Parser[Trees.Modifiers.Modifier]
36
type_parser: LAZY_PARSER[Trees.TypeExpressions.TypeExpression]
37
type_list_parser: LAZY_PARSER[Trees.TypeExpressions.LIST]
38
variable_parser: LAZY_PARSER[Trees.Variables.VARIABLE]
39
variable_list_parser: LAZY_PARSER[Trees.Variables.LIST]
40
variable_destructure_left_parser: LAZY_PARSER[Trees.Variables.DESTRUCTURING_VARIABLE_LEFT]
41
modifier_list_parser: LAZY_PARSER[Trees.Modifiers.LIST]
42
definition_parser: LAZY_PARSER[Trees.Definitions.Definition]
43
definition_global_list_parser: LAZY_PARSER[Trees.Definitions.LIST]
44
definition_member_list_parser: LAZY_PARSER[Trees.Definitions.LIST]
45
definition_namespace_parser: LAZY_PARSER[Trees.Definitions.NAMESPACE]
46
definition_class_parser: LAZY_PARSER[Trees.Definitions.CLASS]
47
definition_use_parser: LAZY_PARSER[Trees.Definitions.USE]
48
definition_trait_parser: LAZY_PARSER[Trees.Definitions.TRAIT]
49
definition_struct_parser: LAZY_PARSER[Trees.Definitions.STRUCT]
50
definition_partial_parser: LAZY_PARSER[Trees.Definitions.PARTIAL]
51
definition_impl_parser: LAZY_PARSER[Trees.Definitions.IMPL]
52
definition_union_parser: LAZY_PARSER[Trees.Definitions.UNION]
53
definition_variant_parser: LAZY_PARSER[Trees.Definitions.VARIANT]
54
definition_variant_list_parser: LAZY_PARSER[Trees.Definitions.LIST]
55
definition_enum_parser: LAZY_PARSER[Trees.Definitions.ENUM]
56
definition_member_parser: LAZY_PARSER[Trees.Definitions.Definition]
57
definition_function_parser: LAZY_PARSER[Trees.Definitions.FUNCTION]
58
definition_property_parser: LAZY_PARSER[Trees.Definitions.PROPERTY]
59
definition_indexer_parser: LAZY_PARSER[Trees.Definitions.INDEXER]
60
definition_pragma_parser: LAZY_PARSER[Trees.Definitions.PRAGMA]
61
definition_super_call_parser: LAZY_PARSER[Trees.Definitions.SUPER_CALL]
62
pragma_node_parser: LAZY_PARSER[Trees.Pragmas.PRAGMA]
63
expression_parser: LAZY_PARSER[Trees.Expressions.Expression]
64
expression_list_parser: LAZY_PARSER[Trees.Expressions.LIST]
65
expression_primary_parser: LAZY_PARSER[Trees.Expressions.Expression]
66
expression_secondary_parser: LAZY_PARSER[Trees.Expressions.Expression]
67
expression_tertiary_parser: LAZY_PARSER[Trees.Expressions.Expression]
68
expression_tuple_parser: LAZY_PARSER[Trees.Expressions.Expression]
69
statement_parser: LAZY_PARSER[Trees.Statements.Statement]
70
statement_list_parser: LAZY_PARSER[Trees.Statements.LIST]
71
paren_statement_list_parser: LAZY_PARSER[Trees.Statements.LIST]
72
statement_pragma_parser: LAZY_PARSER[Trees.Statements.PRAGMA]
73
body_parser: LAZY_PARSER[Trees.Bodies.Body]
74
75
type_details_lookup: Semantic.DotNet.TYPE_DETAILS_LOOKUP
76
77
ghul_namespace_creator: Semantic.DotNet.GHUL_NAMESPACE_CREATOR
78
referenced_assemblies: Semantic.DotNet.REFERENCED_ASSEMBLIES
79
assembly_info: Semantic.DotNet.ASSEMBLY_INFO
80
81
dotnet_symbol_table: System.Lazy[Semantic.DotNet.SYMBOL_TABLE]
82
symbol_factory: Semantic.DotNet.SYMBOL_FACTORY
83
type_mapper: Semantic.DotNet.TYPE_MAPPER
84
type_name_map: Semantic.DotNet.TYPE_NAME_MAP
85
assemblies: Semantic.DotNet.ASSEMBLIES
86
87
// Empty, and never added to, outside submission mode.
88
complement_singletons: Semantic.Types.COMPLEMENT_SINGLETONS
89
90
symbol_table: Semantic.SYMBOL_TABLE
91
namespaces: Semantic.NAMESPACES
92
symbol_loader: Semantic.SYMBOL_LOADER
93
innate_symbol_lookup: Semantic.Lookups.InnateSymbolLookup
94
function_caller: Semantic.FUNCTION_CALLER
95
overload_resolver: Semantic.OVERLOAD_RESOLVER
96
conversion_lookup: Semantic.USER_DEFINED_CONVERSION_LOOKUP
97
type_caster: Semantic.TYPE_CASTER
98
task_conversion: Semantic.TASK_CONVERSION
99
100
symbol_use_locations: Semantic.SYMBOL_USE_LOCATIONS
101
symbol_definition_locations: Semantic.SYMBOL_DEFINITION_LOCATIONS
102
103
state_store_registry: Syntax.Process.STATE_STORE_REGISTRY
104
variable_left_state: Syntax.Process.VARIABLE_LEFT_STATE_STORE
105
composite_spill_state: Syntax.Process.COMPOSITE_SPILL_STORE
106
107
value_boxer: IR.VALUE_BOXER
108
value_converter: IR.VALUE_CONVERTER
109
block_stack: IR.BLOCK_STACK
110
ir_context: IR.CONTEXT
111
brancher: IR.BRANCHER
112
innate_operation_generator: IR.INNATE_OPERATION_GENERATOR
113
local_id_generator: IR.LOCAL_ID_GENERATOR
114
115
name_display: Semantic.NAME_DISPLAY
116
117
type_parameter_positions: Semantic.Symbols.TYPE_PARAMETER_POSITIONS
118
119
conditional_compilation: Syntax.Process.CONDITIONAL_COMPILATION
120
rewrite_primary_constructors: Syntax.Process.REWRITE_PRIMARY_CONSTRUCTORS
121
synthesise_top_level_entry: Syntax.Process.SYNTHESISE_TOP_LEVEL_ENTRY
122
synthesise_entry_environment_wrapper: Syntax.Process.SYNTHESISE_ENTRY_ENVIRONMENT_WRAPPER
123
expand_namespaces: Syntax.Process.EXPAND_NAMESPACES
124
add_accessors_for_properties: Syntax.Process.ADD_ACCESSORS_FOR_PROPERTIES
125
spill_awaits: Syntax.Process.SPILL_AWAITS
126
collect_suppress_pragmas: Syntax.Process.COLLECT_SUPPRESS_PRAGMAS
127
collect_modifier_keyword_locations: Syntax.Process.COLLECT_MODIFIER_KEYWORD_LOCATIONS
128
check_name_conventions: Syntax.Process.CHECK_NAME_CONVENTIONS
129
definition_virtuality: Syntax.Process.DEFINITION_VIRTUALITY
130
select_entry_point: Syntax.Process.SELECT_ENTRY_POINT
131
declare_symbols: Syntax.Process.DECLARE_SYMBOLS
132
declare_members: Syntax.Process.DECLARE_MEMBERS
133
resolve_uses: Syntax.Process.RESOLVE_USES
134
resolve_member_uses: Syntax.Process.RESOLVE_USES
135
resolve_ancestors: Syntax.Process.RESOLVE_ANCESTORS
136
resolve_type_expressions: Syntax.Process.RESOLVE_TYPE_EXPRESSIONS
137
resolve_explicit_types: Syntax.Process.RESOLVE_EXPLICIT_TYPES
138
synthesize_class_equality: Syntax.Process.SYNTHESIZE_CLASS_EQUALITY
139
synthesize_iterator_reset: Syntax.Process.SYNTHESIZE_ITERATOR_RESET
140
check_type_argument_bounds: Syntax.Process.CHECK_TYPE_ARGUMENT_BOUNDS
141
compile_expressions: Syntax.Process.COMPILE_EXPRESSIONS
142
resolve_overrides: Syntax.Process.RESOLVE_OVERRIDES
143
infer_store_free: Syntax.Process.INFER_STORE_FREE
144
check_pure_overrides: Syntax.Process.CHECK_PURE_OVERRIDES
145
verify_compile_state: Syntax.Process.VERIFY_COMPILE_STATE
146
register_source_intrinsics: Syntax.Process.REGISTER_SOURCE_INTRINSICS
147
record_type_argument_uses: Syntax.Process.RECORD_TYPE_ARGUMENT_USES
148
mark_boxed_locals: Syntax.Process.MARK_BOXED_LOCALS
149
generate_il: Syntax.Process.GENERATE_IL
150
151
ghul_printer: Syntax.Process.Printer.GHUL => Syntax.Process.Printer.GHUL()
152
153
completer: Syntax.Process.COMPLETER
154
signature_help: Syntax.Process.SIGNATURE_HELP
155
156
init() is
157
Source.LOCATION.init_static()
158
159
logger = Logging.DIAGNOSTICS_STORE()
160
161
want_human_readable_logger(Std.error)
162
163
timers = Logging.TIMERS()
164
watchdog = Analysis.WATCHDOG()
165
166
path_config = Driver.PATH_CONFIG()
167
build_flags = Compiler.GLOBAL_BUILD_FLAGS()
168
build_flags.set_logger(logger)
169
170
location_stack = Source.LOCATION_STACK()
171
172
value_boxer = IR.VALUE_BOXER(logger)
173
174
ir_context = IR.CONTEXT(logger, "entry")
175
block_stack = IR.BLOCK_STACK()
176
brancher = IR.BRANCHER()
177
innate_operation_generator = IR.INNATE_OPERATION_GENERATOR(logger, value_boxer, brancher)
178
local_id_generator = IR.LOCAL_ID_GENERATOR()
179
180
name_display = Semantic.NAME_DISPLAY()
181
182
type_parameter_positions = Semantic.Symbols.TYPE_PARAMETER_POSITIONS()
183
184
precedence_map = Collections.MAP[string,Syntax.Parsers.Expressions.PRECEDENCE]()
185
186
pragma_precedence = Parsers.Definitions.PRAGMA_PRECEDENCE()
187
188
identifier_parser = Parsers.Identifiers.IDENTIFIER()
189
identifier_qualified_parser = Parsers.Identifiers.QUALIFIED()
190
identifier_function_name_parser = Parsers.Identifiers.FUNCTION_NAME()
191
modifier_parser = Parsers.Modifiers.MODIFIER()
192
type_parser = LAZY_PARSER()
193
type_list_parser = LAZY_PARSER()
194
variable_parser = LAZY_PARSER()
195
variable_list_parser = LAZY_PARSER()
196
variable_destructure_left_parser = LAZY_PARSER()
197
modifier_list_parser = LAZY_PARSER()
198
definition_parser = LAZY_PARSER()
199
definition_global_list_parser = LAZY_PARSER()
200
definition_member_list_parser = LAZY_PARSER()
201
definition_namespace_parser = LAZY_PARSER()
202
definition_use_parser = LAZY_PARSER()
203
definition_class_parser = LAZY_PARSER()
204
definition_trait_parser = LAZY_PARSER()
205
definition_struct_parser = LAZY_PARSER()
206
definition_partial_parser = LAZY_PARSER()
207
definition_impl_parser = LAZY_PARSER()
208
definition_union_parser = LAZY_PARSER()
209
definition_variant_parser = LAZY_PARSER()
210
definition_variant_list_parser = LAZY_PARSER()
211
definition_enum_parser = LAZY_PARSER()
212
definition_member_parser = LAZY_PARSER()
213
definition_function_parser = LAZY_PARSER()
214
definition_property_parser = LAZY_PARSER()
215
definition_indexer_parser = LAZY_PARSER()
216
definition_pragma_parser = LAZY_PARSER()
217
definition_super_call_parser = LAZY_PARSER()
218
pragma_node_parser = LAZY_PARSER()
219
expression_parser = LAZY_PARSER()
220
expression_list_parser = LAZY_PARSER()
221
expression_primary_parser = LAZY_PARSER()
222
expression_secondary_parser = LAZY_PARSER()
223
expression_tertiary_parser = LAZY_PARSER()
224
expression_tuple_parser = LAZY_PARSER()
225
statement_parser = LAZY_PARSER()
226
statement_list_parser = LAZY_PARSER()
227
paren_statement_list_parser = LAZY_PARSER()
228
statement_pragma_parser = LAZY_PARSER()
229
body_parser = LAZY_PARSER()
230
231
type_parser.create = () =>
232
Parsers.TypeExpressions.PRIMARY_TYPE_EXPRESSION(identifier_parser, identifier_qualified_parser, type_list_parser)
233
234
type_list_parser.create = () =>
235
Parsers.TypeExpressions.LIST(type_parser)
236
237
variable_parser.create = () =>
238
Parsers.Variables.VARIABLE(
239
identifier_parser,
240
variable_destructure_left_parser,
241
type_parser,
242
expression_parser,
243
modifier_list_parser,
244
pragma_node_parser)
245
246
variable_list_parser.create = () =>
247
Parsers.Variables.LIST(variable_parser)
248
249
variable_destructure_left_parser.create = () =>
250
Parsers.Variables.DESTRUCTURING_VARIABLE_LEFT(identifier_parser, identifier_qualified_parser, type_parser)
251
252
modifier_list_parser.create = () =>
253
Parsers.Modifiers.LIST(modifier_parser)
254
255
definition_parser.create = () =>
256
Parsers.Definitions.DEFINITION(
257
definition_namespace_parser,
258
definition_use_parser,
259
definition_class_parser,
260
definition_trait_parser,
261
definition_struct_parser,
262
definition_partial_parser,
263
definition_impl_parser,
264
definition_union_parser,
265
definition_enum_parser,
266
definition_member_parser,
267
definition_pragma_parser
268
)
269
270
definition_global_list_parser.create = () =>
271
Parsers.Definitions.GLOBAL_LIST(pragma_node_parser, definition_parser, statement_parser, precedence_map, pragma_precedence)
272
273
definition_member_list_parser.create = () =>
274
Parsers.Definitions.MEMBER_LIST(definition_member_parser)
275
276
definition_namespace_parser.create = () =>
277
Parsers.Definitions.NAMESPACE(identifier_qualified_parser, definition_global_list_parser)
278
279
definition_use_parser.create = () =>
280
Parsers.Definitions.USE(identifier_qualified_parser, type_parser, type_list_parser)
281
282
definition_class_parser.create = () =>
283
Parsers.Definitions.CLASS(
284
identifier_parser,
285
type_parser,
286
type_list_parser,
287
modifier_list_parser,
288
variable_list_parser,
289
definition_member_list_parser
290
)
291
292
definition_trait_parser.create = () =>
293
Parsers.Definitions.TRAIT(
294
identifier_parser,
295
type_parser,
296
type_list_parser,
297
modifier_list_parser,
298
definition_member_list_parser
299
)
300
301
definition_partial_parser.create = () =>
302
Parsers.Definitions.PARTIAL(
303
identifier_qualified_parser,
304
type_list_parser,
305
modifier_list_parser,
306
definition_member_list_parser
307
)
308
309
definition_impl_parser.create = () =>
310
Parsers.Definitions.IMPL(
311
identifier_qualified_parser,
312
type_parser,
313
type_list_parser,
314
modifier_list_parser,
315
definition_member_list_parser
316
)
317
318
definition_union_parser.create = () =>
319
Parsers.Definitions.UNION(
320
identifier_parser,
321
type_parser,
322
type_list_parser,
323
modifier_list_parser,
324
variable_list_parser,
325
definition_variant_list_parser
326
)
327
328
definition_variant_parser.create = () =>
329
Parsers.Definitions.VARIANT(
330
identifier_parser,
331
variable_list_parser,
332
modifier_list_parser
333
)
334
335
definition_variant_list_parser.create = () =>
336
Parsers.Definitions.VARIANT_LIST(definition_variant_parser)
337
338
definition_struct_parser.create = () =>
339
Parsers.Definitions.STRUCT(
340
identifier_parser,
341
type_parser,
342
type_list_parser,
343
modifier_list_parser,
344
variable_list_parser,
345
definition_member_list_parser
346
)
347
348
definition_enum_parser.create = () =>
349
Parsers.Definitions.ENUM(identifier_parser, modifier_list_parser, expression_parser)
350
351
definition_member_parser.create = () =>
352
Parsers.Definitions.MEMBER(
353
definition_function_parser,
354
definition_property_parser,
355
definition_indexer_parser,
356
definition_pragma_parser,
357
definition_super_call_parser
358
)
359
360
definition_super_call_parser.create = () =>
361
Parsers.Definitions.SUPER_CALL(expression_parser)
362
363
definition_function_parser.create = () =>
364
Parsers.Definitions.FUNCTION(
365
identifier_function_name_parser,
366
type_parser,
367
type_list_parser,
368
modifier_list_parser,
369
body_parser,
370
variable_list_parser
371
)
372
373
definition_property_parser.create = () =>
374
Parsers.Definitions.PROPERTY(
375
identifier_parser,
376
type_parser,
377
modifier_list_parser,
378
body_parser
379
)
380
381
definition_indexer_parser.create = () =>
382
Parsers.Definitions.INDEXER(
383
identifier_parser,
384
type_parser,
385
modifier_list_parser,
386
variable_parser,
387
body_parser
388
)
389
390
definition_pragma_parser.create = () =>
391
Parsers.Definitions.PRAGMA(pragma_node_parser, definition_parser, precedence_map, pragma_precedence)
392
393
pragma_node_parser.create = () =>
394
Parsers.Pragmas.PRAGMA(identifier_qualified_parser, expression_parser)
395
396
expression_parser.create = () =>
397
Parsers.Expressions.EXPRESSION(expression_tertiary_parser, expression_secondary_parser, precedence_map)
398
399
expression_list_parser.create = () =>
400
Parsers.Expressions.LIST(expression_parser)
401
402
expression_primary_parser.create = () =>
403
Parsers.Expressions.PRIMARY(
404
identifier_parser,
405
type_parser,
406
expression_parser,
407
expression_list_parser,
408
expression_tuple_parser,
409
statement_parser,
410
statement_list_parser,
411
variable_list_parser,
412
pragma_node_parser
413
)
414
415
expression_secondary_parser.create = () =>
416
Parsers.Expressions.SECONDARY(
417
identifier_parser,
418
type_parser,
419
type_list_parser,
420
expression_parser,
421
expression_primary_parser,
422
expression_list_parser,
423
body_parser
424
)
425
426
expression_tertiary_parser.create = () =>
427
Parsers.Expressions.TERTIARY(
428
expression_secondary_parser
429
)
430
431
expression_tuple_parser.create = () =>
432
Parsers.Expressions.TUPLE(
433
expression_list_parser,
434
type_parser,
435
expression_parser,
436
paren_statement_list_parser
437
)
438
439
paren_statement_list_parser.create = () =>
440
Parsers.Statements.LIST(
441
Collections.LIST([
442
Lexical.TOKEN.PAREN_CLOSE,
443
Lexical.TOKEN.ELSE,
444
Lexical.TOKEN.ELIF,
445
Lexical.TOKEN.FI,
446
Lexical.TOKEN.OD,
447
Lexical.TOKEN.CATCH,
448
Lexical.TOKEN.FINALLY,
449
Lexical.TOKEN.YRT,
450
Lexical.TOKEN.WHEN,
451
Lexical.TOKEN.ESAC,
452
Lexical.TOKEN.LAV,
453
Lexical.TOKEN.SI,
454
Lexical.TOKEN.COMMA
455
]),
456
statement_parser
457
)
458
459
statement_parser.create = () =>
460
Parsers.Statements.STATEMENT(
461
Collections.LIST([Lexical.TOKEN.FOR, Lexical.TOKEN.WHILE, Lexical.TOKEN.DO]),
462
identifier_parser,
463
expression_parser,
464
expression_list_parser,
465
variable_parser,
466
variable_list_parser,
467
statement_list_parser,
468
statement_pragma_parser
469
)
470
471
statement_list_parser.create = () =>
472
Parsers.Statements.LIST(
473
Collections.LIST([
474
Lexical.TOKEN.ELSE,
475
Lexical.TOKEN.ELIF,
476
Lexical.TOKEN.FI,
477
Lexical.TOKEN.OD,
478
Lexical.TOKEN.CATCH,
479
Lexical.TOKEN.FINALLY,
480
Lexical.TOKEN.YRT,
481
Lexical.TOKEN.WHEN,
482
Lexical.TOKEN.ESAC,
483
Lexical.TOKEN.LAV,
484
Lexical.TOKEN.SI,
485
Lexical.TOKEN.COMMA
486
]),
487
statement_parser
488
)
489
490
statement_pragma_parser.create = () =>
491
Parsers.Statements.PRAGMA(pragma_node_parser, statement_parser)
492
493
body_parser.create = () =>
494
Parsers.Bodies.BODY(
495
expression_parser,
496
statement_parser,
497
statement_list_parser,
498
identifier_qualified_parser)
499
500
type_details_lookup = Semantic.DotNet.TYPE_DETAILS_LOOKUP()
501
502
symbol_table = Semantic.SYMBOL_TABLE(logger)
503
namespaces = Semantic.NAMESPACES(logger, symbol_table)
504
505
ghul_namespace_creator = Semantic.DotNet.GHUL_NAMESPACE_CREATOR(timers, symbol_table, namespaces, type_details_lookup)
506
507
dotnet_symbol_table =
508
System.Lazy[Semantic.DotNet.SYMBOL_TABLE](
509
() =>
510
Semantic.DotNet.SYMBOL_TABLE(type_details_lookup, symbol_factory)
511
)
512
513
type_name_map = Semantic.DotNet.TYPE_NAME_MAP(build_flags, type_details_lookup)
514
515
complement_singletons = Semantic.Types.COMPLEMENT_SINGLETONS()
516
517
assemblies = Semantic.DotNet.ASSEMBLIES(
518
timers,
519
build_flags,
520
path_config,
521
symbol_table,
522
namespaces,
523
type_name_map,
524
type_details_lookup
525
)
526
527
referenced_assemblies = Semantic.DotNet.REFERENCED_ASSEMBLIES(name => assemblies.version_of(name), name => assemblies.public_key_token_of(name))
528
529
innate_symbol_lookup = Semantic.Lookups.LAZY_INNATE_SYMBOL_LOOKUP(
530
() =>
531
Semantic.Lookups.REFLECTION_INNATE_SYMBOL_LOOKUP(
532
type_mapper,
533
dotnet_symbol_table.value,
534
Semantic.Lookups.GHUL_INNATE_TYPE_LOOKUP(symbol_table),
535
assemblies
536
)
537
)
538
539
type_mapper = Semantic.DotNet.TYPE_MAPPER(dotnet_symbol_table, innate_symbol_lookup, type_name_map, assemblies)
540
541
symbol_factory = Semantic.DotNet.SYMBOL_FACTORY(namespaces, type_name_map, type_mapper, assemblies, type_details_lookup, logger)
542
543
assembly_info = Semantic.DotNet.ASSEMBLY_INFO(ir_context)
544
545
value_converter = IR.VALUE_CONVERTER(logger, innate_symbol_lookup)
546
547
function_caller = Semantic.FUNCTION_CALLER(symbol_table, value_boxer)
548
549
symbol_loader =
550
Semantic.SYMBOL_LOADER(
551
logger,
552
symbol_table,
553
function_caller,
554
value_boxer,
555
innate_symbol_lookup)
556
557
function_caller.loader = symbol_loader
558
559
overload_resolver = Semantic.OVERLOAD_RESOLVER(logger)
560
561
conversion_lookup = Semantic.USER_DEFINED_CONVERSION_LOOKUP()
562
563
type_caster =
564
Semantic.TYPE_CASTER(
565
brancher,
566
block_stack,
567
value_boxer,
568
value_converter,
569
innate_symbol_lookup,
570
conversion_lookup,
571
logger
572
)
573
574
task_conversion = Semantic.TASK_CONVERSION(innate_symbol_lookup)
575
576
symbol_use_locations = Semantic.SYMBOL_USE_LOCATIONS()
577
578
symbol_definition_locations = Semantic.SYMBOL_DEFINITION_LOCATIONS(symbol_use_locations)
579
580
state_store_registry = Syntax.Process.STATE_STORE_REGISTRY()
581
variable_left_state = Syntax.Process.VARIABLE_LEFT_STATE_STORE(state_store_registry)
582
composite_spill_state = Syntax.Process.COMPOSITE_SPILL_STORE(state_store_registry)
583
584
conditional_compilation = Syntax.Process.CONDITIONAL_COMPILATION()
585
586
rewrite_primary_constructors = Syntax.Process.REWRITE_PRIMARY_CONSTRUCTORS(logger)
587
synthesise_top_level_entry = Syntax.Process.SYNTHESISE_TOP_LEVEL_ENTRY(ir_context, logger)
588
synthesise_entry_environment_wrapper = Syntax.Process.SYNTHESISE_ENTRY_ENVIRONMENT_WRAPPER(ir_context)
589
590
expand_namespaces = Syntax.Process.EXPAND_NAMESPACES(System.IO.Abstractions.FileSystem())
591
592
add_accessors_for_properties = Syntax.Process.ADD_ACCESSORS_FOR_PROPERTIES()
593
594
spill_awaits = Syntax.Process.SPILL_AWAITS()
595
596
collect_suppress_pragmas = Syntax.Process.COLLECT_SUPPRESS_PRAGMAS(logger)
597
598
collect_modifier_keyword_locations = Syntax.Process.COLLECT_MODIFIER_KEYWORD_LOCATIONS()
599
600
check_name_conventions = Syntax.Process.CHECK_NAME_CONVENTIONS(logger, symbol_table)
601
definition_virtuality = Syntax.Process.DEFINITION_VIRTUALITY(logger, symbol_table)
602
select_entry_point = Syntax.Process.SELECT_ENTRY_POINT(logger, symbol_table, ir_context, build_flags)
603
604
declare_symbols =
605
Syntax.Process.DECLARE_SYMBOLS(
606
logger,
607
symbol_table,
608
namespaces,
609
symbol_definition_locations)
610
611
declare_members =
612
Syntax.Process.DECLARE_MEMBERS(
613
logger,
614
symbol_table,
615
namespaces,
616
symbol_definition_locations,
617
symbol_use_locations,
618
local_id_generator)
619
620
resolve_uses = Syntax.Process.RESOLVE_USES(logger, symbol_table, namespaces, symbol_use_locations, false)
621
resolve_member_uses = Syntax.Process.RESOLVE_USES(logger, symbol_table, namespaces, symbol_use_locations, true)
622
623
resolve_ancestors =
624
Syntax.Process.RESOLVE_ANCESTORS(logger, symbol_table, namespaces, innate_symbol_lookup)
625
626
resolve_type_expressions =
627
Syntax.Process.RESOLVE_TYPE_EXPRESSIONS(
628
logger,
629
symbol_table,
630
namespaces,
631
symbol_use_locations,
632
innate_symbol_lookup)
633
634
resolve_explicit_types =
635
Syntax.Process.RESOLVE_EXPLICIT_TYPES(
636
logger,
637
symbol_table,
638
namespaces,
639
innate_symbol_lookup
640
)
641
642
synthesize_class_equality =
643
Syntax.Process.SYNTHESIZE_CLASS_EQUALITY(logger, symbol_table, innate_symbol_lookup)
644
645
synthesize_iterator_reset =
646
Syntax.Process.SYNTHESIZE_ITERATOR_RESET(symbol_table, innate_symbol_lookup)
647
648
check_type_argument_bounds =
649
Syntax.Process.CHECK_TYPE_ARGUMENT_BOUNDS(
650
logger,
651
symbol_table,
652
namespaces
653
)
654
655
compile_expressions =
656
Syntax.Process.COMPILE_EXPRESSIONS(
657
logger,
658
symbol_table,
659
namespaces,
660
symbol_loader,
661
innate_symbol_lookup,
662
function_caller,
663
type_caster,
664
task_conversion,
665
overload_resolver,
666
symbol_use_locations,
667
ir_context,
668
value_converter,
669
value_boxer,
670
build_flags,
671
variable_left_state,
672
composite_spill_state
673
)
674
675
resolve_overrides =
676
Syntax.Process.RESOLVE_OVERRIDES(
677
logger,
678
symbol_table,
679
namespaces
680
)
681
682
infer_store_free =
683
Syntax.Process.INFER_STORE_FREE(
684
logger,
685
symbol_table,
686
namespaces,
687
innate_symbol_lookup
688
)
689
690
check_pure_overrides =
691
Syntax.Process.CHECK_PURE_OVERRIDES(
692
logger,
693
symbol_table,
694
namespaces
695
)
696
697
verify_compile_state =
698
Syntax.Process.VERIFY_COMPILE_STATE(
699
logger,
700
symbol_table,
701
namespaces
702
)
703
704
register_source_intrinsics =
705
Syntax.Process.REGISTER_SOURCE_INTRINSICS(
706
logger,
707
symbol_table,
708
namespaces
709
)
710
711
record_type_argument_uses =
712
Syntax.Process.RECORD_TYPE_ARGUMENT_USES(
713
logger,
714
symbol_table,
715
namespaces,
716
innate_symbol_lookup
717
)
718
719
mark_boxed_locals =
720
Syntax.Process.MARK_BOXED_LOCALS(
721
logger,
722
symbol_table,
723
namespaces
724
)
725
726
generate_il =
727
Syntax.Process.GENERATE_IL(
728
logger,
729
symbol_table,
730
namespaces,
731
symbol_loader,
732
innate_symbol_lookup,
733
function_caller,
734
type_caster,
735
overload_resolver,
736
symbol_use_locations,
737
ir_context,
738
block_stack,
739
brancher,
740
value_boxer,
741
build_flags,
742
composite_spill_state,
743
variable_left_state
744
)
745
746
completer =
747
Syntax.Process.COMPLETER(
748
logger,
749
symbol_table,
750
namespaces,
751
dotnet_symbol_table
752
)
753
754
signature_help =
755
Syntax.Process.SIGNATURE_HELP(
756
logger,
757
symbol_table,
758
namespaces,
759
overload_resolver
760
)
761
si
762
763
want_tab_delimited_logger(writer: IO.TextWriter) is
764
logger_writer = writer
765
766
logger_formatter = Logging.TAB_DELIMITED_DIAGNOSTIC_FORMATTER()
767
si
768
769
// A test run captures diagnostics as a snapshot, so it sees
770
// exactly what the passes reported: a pass that reports the
771
// same thing four times shows as four lines rather than one.
772
want_duplicate_diagnostics() is
773
if let store: Logging.DIAGNOSTICS_STORE = logger then
774
store.keep_duplicate_diagnostics()
775
fi
776
si
777
778
want_human_readable_logger(writer: IO.TextWriter) is
779
logger_writer = writer
780
781
logger_formatter = Logging.HUMAN_READABLE_DIAGNOSTIC_FORMATTER()
782
si
783
784
want_msbuild_logger(writer: IO.TextWriter) is
785
logger_writer = writer
786
787
logger_formatter = Logging.MSBUILD_DIAGNOSTIC_FORMATTER()
788
si
789
si
790
si