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