firefly-compiler 0.4.18 → 0.4.20
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.
- package/compiler/Builder.ff +1 -1
- package/compiler/Compiler.ff +6 -5
- package/compiler/Inference.ff +31 -19
- package/compiler/JsEmitter.ff +98 -71
- package/compiler/JsImporter.ff +1 -1
- package/compiler/LspHook.ff +17 -5
- package/compiler/Main.ff +6 -6
- package/compiler/Parser.ff +50 -52
- package/compiler/Patterns.ff +2 -0
- package/compiler/Syntax.ff +1 -1
- package/compiler/Tokenizer.ff +2 -2
- package/compiler/Workspace.ff +2 -2
- package/core/Array.ff +135 -294
- package/core/Buffer.ff +3 -3
- package/core/BuildSystem.ff +1 -1
- package/core/Equal.ff +36 -52
- package/core/HttpClient.ff +1 -1
- package/core/IntMap.ff +14 -18
- package/core/JsSystem.ff +1 -1
- package/core/JsValue.ff +6 -12
- package/core/Json.ff +21 -30
- package/core/List.ff +281 -312
- package/core/Map.ff +4 -8
- package/core/NodeSystem.ff +2 -2
- package/core/Option.ff +0 -4
- package/core/Ordering.ff +10 -6
- package/core/Pair.ff +0 -4
- package/core/Random.ff +12 -26
- package/core/RbMap.ff +216 -216
- package/core/Serializable.ff +9 -18
- package/core/Set.ff +0 -1
- package/core/SourceLocation.ff +1 -1
- package/core/Stream.ff +10 -14
- package/core/String.ff +24 -6
- package/core/StringMap.ff +15 -19
- package/guide/Main.ff +20 -2
- package/lsp/CompletionHandler.ff +18 -18
- package/lsp/Handler.ff +45 -34
- package/lsp/HoverHandler.ff +2 -2
- package/lsp/LanguageServer.ff +2 -2
- package/lsp/SignatureHelpHandler.ff +1 -1
- package/lsp/SymbolHandler.ff +19 -5
- package/lux/Lux.ff +3 -3
- package/output/js/ff/compiler/Builder.mjs +19 -21
- package/output/js/ff/compiler/Compiler.mjs +18 -20
- package/output/js/ff/compiler/Dependencies.mjs +8 -10
- package/output/js/ff/compiler/Deriver.mjs +234 -236
- package/output/js/ff/compiler/Dictionaries.mjs +6 -8
- package/output/js/ff/compiler/Environment.mjs +42 -44
- package/output/js/ff/compiler/Inference.mjs +346 -304
- package/output/js/ff/compiler/JsEmitter.mjs +907 -833
- package/output/js/ff/compiler/JsImporter.mjs +0 -2
- package/output/js/ff/compiler/LspHook.mjs +872 -51
- package/output/js/ff/compiler/Main.mjs +109 -111
- package/output/js/ff/compiler/Parser.mjs +427 -441
- package/output/js/ff/compiler/Patterns.mjs +64 -50
- package/output/js/ff/compiler/Resolver.mjs +36 -38
- package/output/js/ff/compiler/Substitution.mjs +4 -6
- package/output/js/ff/compiler/Syntax.mjs +160 -162
- package/output/js/ff/compiler/Token.mjs +52 -54
- package/output/js/ff/compiler/Tokenizer.mjs +16 -18
- package/output/js/ff/compiler/Unification.mjs +24 -26
- package/output/js/ff/compiler/Wildcards.mjs +0 -2
- package/output/js/ff/compiler/Workspace.mjs +18 -20
- package/output/js/ff/core/Any.mjs +0 -2
- package/output/js/ff/core/Array.mjs +216 -613
- package/output/js/ff/core/AssetSystem.mjs +2 -4
- package/output/js/ff/core/Atomic.mjs +0 -2
- package/output/js/ff/core/Bool.mjs +0 -2
- package/output/js/ff/core/Box.mjs +0 -2
- package/output/js/ff/core/BrowserSystem.mjs +0 -2
- package/output/js/ff/core/Buffer.mjs +0 -2
- package/output/js/ff/core/BuildSystem.mjs +12 -14
- package/output/js/ff/core/Channel.mjs +0 -2
- package/output/js/ff/core/Char.mjs +0 -2
- package/output/js/ff/core/Core.mjs +0 -2
- package/output/js/ff/core/Duration.mjs +0 -2
- package/output/js/ff/core/Equal.mjs +0 -22
- package/output/js/ff/core/Error.mjs +0 -2
- package/output/js/ff/core/FileHandle.mjs +0 -2
- package/output/js/ff/core/Float.mjs +0 -2
- package/output/js/ff/core/HttpClient.mjs +2 -4
- package/output/js/ff/core/Instant.mjs +0 -2
- package/output/js/ff/core/Int.mjs +8 -10
- package/output/js/ff/core/IntMap.mjs +32 -42
- package/output/js/ff/core/JsSystem.mjs +1 -3
- package/output/js/ff/core/JsValue.mjs +5 -12
- package/output/js/ff/core/Json.mjs +25 -58
- package/output/js/ff/core/List.mjs +648 -1989
- package/output/js/ff/core/Lock.mjs +0 -2
- package/output/js/ff/core/Log.mjs +0 -2
- package/output/js/ff/core/Map.mjs +10 -20
- package/output/js/ff/core/NodeSystem.mjs +6 -8
- package/output/js/ff/core/Nothing.mjs +0 -2
- package/output/js/ff/core/Option.mjs +8 -18
- package/output/js/ff/core/Ordering.mjs +20 -98
- package/output/js/ff/core/Pair.mjs +6 -16
- package/output/js/ff/core/Path.mjs +12 -14
- package/output/js/ff/core/Random.mjs +24 -54
- package/output/js/ff/core/RbMap.mjs +54 -56
- package/output/js/ff/core/Serializable.mjs +19 -36
- package/output/js/ff/core/Set.mjs +0 -14
- package/output/js/ff/core/Show.mjs +0 -2
- package/output/js/ff/core/SourceLocation.mjs +0 -2
- package/output/js/ff/core/Stream.mjs +34 -44
- package/output/js/ff/core/String.mjs +31 -5
- package/output/js/ff/core/StringMap.mjs +32 -42
- package/output/js/ff/core/Task.mjs +0 -2
- package/output/js/ff/core/Try.mjs +0 -2
- package/output/js/ff/core/Unit.mjs +0 -2
- package/package.json +1 -1
- package/vscode/client/src/extension.ts +30 -2
- package/vscode/package.json +17 -1
- package/webserver/WebServer.ff +8 -8
- package/core/Stack.ff +0 -263
- package/output/js/ff/core/Stack.mjs +0 -603
|
@@ -88,8 +88,6 @@ import * as ff_core_Show from "../../ff/core/Show.mjs"
|
|
|
88
88
|
|
|
89
89
|
import * as ff_core_SourceLocation from "../../ff/core/SourceLocation.mjs"
|
|
90
90
|
|
|
91
|
-
import * as ff_core_Stack from "../../ff/core/Stack.mjs"
|
|
92
|
-
|
|
93
91
|
import * as ff_core_Stream from "../../ff/core/Stream.mjs"
|
|
94
92
|
|
|
95
93
|
import * as ff_core_String from "../../ff/core/String.mjs"
|
|
@@ -117,10 +115,10 @@ export function ParsedTargets(js_, jsSync_, jsAsync_, browser_, browserSync_, br
|
|
|
117
115
|
return {js_, jsSync_, jsAsync_, browser_, browserSync_, browserAsync_, node_, nodeSync_, nodeAsync_};
|
|
118
116
|
}
|
|
119
117
|
|
|
120
|
-
export const binaryOperators_ =
|
|
118
|
+
export const binaryOperators_ = [["||"], ["&&"], ["!=", "=="], ["<=", ">=", "<", ">"], ["+", "-"], ["*", "/", "%"], ["^"]];
|
|
121
119
|
|
|
122
120
|
export function make_(packagePair_, file_, tokens_, targetIsNode_, lspHook_) {
|
|
123
|
-
return ff_compiler_Parser.Parser(packagePair_, file_, tokens_,
|
|
121
|
+
return ff_compiler_Parser.Parser(packagePair_, file_, tokens_, ff_core_List.List_grabLast(tokens_), targetIsNode_, lspHook_, false, 0, 1)
|
|
124
122
|
}
|
|
125
123
|
|
|
126
124
|
export function findBestTarget_(targetIsNode_, body_, targets_) {
|
|
@@ -195,7 +193,7 @@ return
|
|
|
195
193
|
}
|
|
196
194
|
|
|
197
195
|
export async function make_$(packagePair_, file_, tokens_, targetIsNode_, lspHook_, $task) {
|
|
198
|
-
return ff_compiler_Parser.Parser(packagePair_, file_, tokens_,
|
|
196
|
+
return ff_compiler_Parser.Parser(packagePair_, file_, tokens_, ff_core_List.List_grabLast(tokens_), targetIsNode_, lspHook_, false, 0, 1)
|
|
199
197
|
}
|
|
200
198
|
|
|
201
199
|
export async function findBestTarget_$(targetIsNode_, body_, targets_, $task) {
|
|
@@ -277,8 +275,8 @@ export function Parser_behind(self_) {
|
|
|
277
275
|
if((self_.offset_ === 0)) {
|
|
278
276
|
return ff_compiler_Parser.Parser_current(self_)
|
|
279
277
|
} else {
|
|
280
|
-
if(((self_.offset_ - 1) <
|
|
281
|
-
return
|
|
278
|
+
if(((self_.offset_ - 1) < ff_core_List.List_size(self_.tokens_))) {
|
|
279
|
+
return ff_core_List.List_grab(self_.tokens_, (self_.offset_ - 1))
|
|
282
280
|
} else {
|
|
283
281
|
return self_.end_
|
|
284
282
|
}
|
|
@@ -286,24 +284,24 @@ return self_.end_
|
|
|
286
284
|
}
|
|
287
285
|
|
|
288
286
|
export function Parser_current(self_) {
|
|
289
|
-
if((self_.offset_ <
|
|
290
|
-
return
|
|
287
|
+
if((self_.offset_ < ff_core_List.List_size(self_.tokens_))) {
|
|
288
|
+
return ff_core_List.List_grab(self_.tokens_, self_.offset_)
|
|
291
289
|
} else {
|
|
292
290
|
return self_.end_
|
|
293
291
|
}
|
|
294
292
|
}
|
|
295
293
|
|
|
296
294
|
export function Parser_ahead(self_) {
|
|
297
|
-
if(((self_.offset_ + 1) <
|
|
298
|
-
return
|
|
295
|
+
if(((self_.offset_ + 1) < ff_core_List.List_size(self_.tokens_))) {
|
|
296
|
+
return ff_core_List.List_grab(self_.tokens_, (self_.offset_ + 1))
|
|
299
297
|
} else {
|
|
300
298
|
return self_.end_
|
|
301
299
|
}
|
|
302
300
|
}
|
|
303
301
|
|
|
304
302
|
export function Parser_aheadAhead(self_) {
|
|
305
|
-
if(((self_.offset_ + 2) <
|
|
306
|
-
return
|
|
303
|
+
if(((self_.offset_ + 2) < ff_core_List.List_size(self_.tokens_))) {
|
|
304
|
+
return ff_core_List.List_grab(self_.tokens_, (self_.offset_ + 2))
|
|
307
305
|
} else {
|
|
308
306
|
return self_.end_
|
|
309
307
|
}
|
|
@@ -390,46 +388,46 @@ return p_
|
|
|
390
388
|
if((ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LKeyword()) && ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "package"))) {
|
|
391
389
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), "Duplicate package definition"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
392
390
|
};
|
|
393
|
-
const dependencies_ =
|
|
391
|
+
const dependencies_ = ff_core_Array.make_();
|
|
394
392
|
while((ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LKeyword()) && ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "dependency"))) {
|
|
395
|
-
|
|
393
|
+
ff_core_Array.Array_push(dependencies_, ff_compiler_Parser.Parser_parseDependencyDefinition(self_, package_.targets_));
|
|
396
394
|
if((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LEnd()))) {
|
|
397
395
|
ff_compiler_Parser.Parser_skipSeparator(self_, ff_compiler_Token.LSemicolon())
|
|
398
396
|
}
|
|
399
397
|
};
|
|
400
|
-
const includes_ =
|
|
398
|
+
const includes_ = ff_core_Array.make_();
|
|
401
399
|
while((ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LKeyword()) && ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "include"))) {
|
|
402
|
-
|
|
400
|
+
ff_core_Array.Array_push(includes_, ff_compiler_Parser.Parser_parseIncludeDefinition(self_));
|
|
403
401
|
if((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LEnd()))) {
|
|
404
402
|
ff_compiler_Parser.Parser_skipSeparator(self_, ff_compiler_Token.LSemicolon())
|
|
405
403
|
}
|
|
406
404
|
};
|
|
407
|
-
return ff_compiler_Syntax.PackageInfo(package_,
|
|
405
|
+
return ff_compiler_Syntax.PackageInfo(package_, ff_core_Array.Array_toList(dependencies_, 0, 9007199254740991), ff_core_Array.Array_toList(includes_, 0, 9007199254740991))
|
|
408
406
|
}
|
|
409
407
|
|
|
410
408
|
export function Parser_parseModule(self_) {
|
|
411
|
-
const imports_ =
|
|
412
|
-
const types_ =
|
|
413
|
-
const traits_ =
|
|
414
|
-
const instances_ =
|
|
415
|
-
const extends_ =
|
|
416
|
-
const lets_ =
|
|
417
|
-
const functions_ =
|
|
409
|
+
const imports_ = ff_core_Array.make_();
|
|
410
|
+
const types_ = ff_core_Array.make_();
|
|
411
|
+
const traits_ = ff_core_Array.make_();
|
|
412
|
+
const instances_ = ff_core_Array.make_();
|
|
413
|
+
const extends_ = ff_core_Array.make_();
|
|
414
|
+
const lets_ = ff_core_Array.make_();
|
|
415
|
+
const functions_ = ff_core_Array.make_();
|
|
418
416
|
while((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LEnd()))) {
|
|
419
417
|
if((ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LLower()) && (ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_ahead(self_), ff_compiler_Token.LAssign()) || ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_ahead(self_), ff_compiler_Token.LColon())))) {
|
|
420
|
-
|
|
418
|
+
ff_core_Array.Array_push(lets_, ff_compiler_Parser.Parser_parseLetDefinition(self_))
|
|
421
419
|
} else if(ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LLower())) {
|
|
422
|
-
|
|
420
|
+
ff_core_Array.Array_push(functions_, ff_compiler_Parser.Parser_parseFunctionDefinition(self_, false))
|
|
423
421
|
} else if((ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LKeyword()) && ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "extend"))) {
|
|
424
|
-
|
|
422
|
+
ff_core_Array.Array_push(extends_, ff_compiler_Parser.Parser_parseExtendDefinition(self_))
|
|
425
423
|
} else if((ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LKeyword()) && ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "trait"))) {
|
|
426
|
-
|
|
424
|
+
ff_core_Array.Array_push(traits_, ff_compiler_Parser.Parser_parseTraitDefinition(self_))
|
|
427
425
|
} else if((ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LKeyword()) && ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "instance"))) {
|
|
428
|
-
|
|
426
|
+
ff_core_Array.Array_push(instances_, ff_compiler_Parser.Parser_parseInstanceDefinition(self_))
|
|
429
427
|
} else if((ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LKeyword()) && ff_compiler_Token.Token_rawIs4(ff_compiler_Parser.Parser_current(self_), "data", "class", "capability", "newtype"))) {
|
|
430
|
-
|
|
428
|
+
ff_core_Array.Array_push(types_, ff_compiler_Parser.Parser_parseTypeDefinition(self_))
|
|
431
429
|
} else if((ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LKeyword()) && ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "import"))) {
|
|
432
|
-
|
|
430
|
+
ff_core_Array.Array_push(imports_, ff_compiler_Parser.Parser_parseImportDefinition(self_, self_.packagePair_))
|
|
433
431
|
} else if((ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LKeyword()) && ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "include"))) {
|
|
434
432
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), "Includes must be at the top of the file or below 'package'"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
435
433
|
} else if((ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LKeyword()) && ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "dependency"))) {
|
|
@@ -443,7 +441,7 @@ if((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_com
|
|
|
443
441
|
ff_compiler_Parser.Parser_skipSeparator(self_, ff_compiler_Token.LSemicolon())
|
|
444
442
|
}
|
|
445
443
|
};
|
|
446
|
-
return ff_compiler_Syntax.Module(self_.file_, self_.packagePair_,
|
|
444
|
+
return ff_compiler_Syntax.Module(self_.file_, self_.packagePair_, ff_core_Array.Array_toList(imports_, 0, 9007199254740991), ff_core_Array.Array_toList(types_, 0, 9007199254740991), ff_core_Array.Array_toList(traits_, 0, 9007199254740991), ff_core_Array.Array_toList(instances_, 0, 9007199254740991), ff_core_Array.Array_toList(extends_, 0, 9007199254740991), ff_core_Array.Array_toList(lets_, 0, 9007199254740991), ff_core_Array.Array_toList(functions_, 0, 9007199254740991))
|
|
447
445
|
}
|
|
448
446
|
|
|
449
447
|
export function Parser_parseLetDefinition(self_) {
|
|
@@ -461,7 +459,7 @@ ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LAssign());
|
|
|
461
459
|
const value_ = ff_compiler_Parser.Parser_parseTerm(self_);
|
|
462
460
|
const retult_ = ff_compiler_Syntax.DLet(ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_raw(nameToken_), variableType_, value_);
|
|
463
461
|
if(self_.lspHook_.trackSymbols_) {
|
|
464
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(nameToken_),
|
|
462
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(nameToken_), ff_compiler_LspHook.SLet(false), ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_end(nameToken_), ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
|
|
465
463
|
};
|
|
466
464
|
return retult_
|
|
467
465
|
}
|
|
@@ -478,10 +476,7 @@ const targets_ = ff_compiler_Parser.Parser_parseTargets(self_, ff_core_List.List
|
|
|
478
476
|
const bestTarget_ = ff_compiler_Parser.findBestTarget_(self_.targetIsNode_, body_, targets_);
|
|
479
477
|
const result_ = ff_compiler_Syntax.DFunction(signature_.at_, signature_, bestTarget_);
|
|
480
478
|
if(self_.lspHook_.trackSymbols_) {
|
|
481
|
-
|
|
482
|
-
? 6
|
|
483
|
-
: 12);
|
|
484
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(signature_.name_, kind_, signature_.at_, (((_c) => {
|
|
479
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(signature_.name_, ff_compiler_LspHook.SFunction(member_), signature_.at_, (((_c) => {
|
|
485
480
|
return ff_compiler_Syntax.Location(_c.file_, _c.line_, (signature_.at_.column_ + ff_core_String.String_size(signature_.name_)))
|
|
486
481
|
}))(signature_.at_), signature_.at_, ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
|
|
487
482
|
};
|
|
@@ -507,7 +502,7 @@ const lambda_ = ff_compiler_Parser.Parser_parseLambda(self_, parameterCount_, fa
|
|
|
507
502
|
do {
|
|
508
503
|
const _1 = target_;
|
|
509
504
|
{
|
|
510
|
-
if(_1
|
|
505
|
+
if(_1 === "js") {
|
|
511
506
|
if(ff_core_Equal.notEquals_(targets_.jsSync_, ff_core_Option.None(), ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String))) {
|
|
512
507
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, "Duplicate target definition"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
513
508
|
};
|
|
@@ -518,7 +513,7 @@ break
|
|
|
518
513
|
}
|
|
519
514
|
}
|
|
520
515
|
{
|
|
521
|
-
if(_1
|
|
516
|
+
if(_1 === "browser") {
|
|
522
517
|
if(ff_core_Equal.notEquals_(targets_.browserSync_, ff_core_Option.None(), ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String))) {
|
|
523
518
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, "Duplicate target definition"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
524
519
|
};
|
|
@@ -529,7 +524,7 @@ break
|
|
|
529
524
|
}
|
|
530
525
|
}
|
|
531
526
|
{
|
|
532
|
-
if(_1
|
|
527
|
+
if(_1 === "node") {
|
|
533
528
|
if(ff_core_Equal.notEquals_(targets_.nodeAsync_, ff_core_Option.None(), ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String))) {
|
|
534
529
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, "Duplicate target definition"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
535
530
|
};
|
|
@@ -550,8 +545,8 @@ const code_ = processCode_(ff_compiler_Token.Token_raw(ff_compiler_Parser.Parser
|
|
|
550
545
|
do {
|
|
551
546
|
const _1 = ff_core_Pair.Pair(target_, mode_);
|
|
552
547
|
{
|
|
553
|
-
if(_1.first_
|
|
554
|
-
if(_1.second_
|
|
548
|
+
if(_1.first_ === "js") {
|
|
549
|
+
if(_1.second_ === "sync") {
|
|
555
550
|
if(ff_core_Equal.notEquals_(targets_.jsSync_, ff_core_Option.None(), ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String))) {
|
|
556
551
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, "Duplicate target definition"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
557
552
|
};
|
|
@@ -563,8 +558,8 @@ break
|
|
|
563
558
|
}
|
|
564
559
|
}
|
|
565
560
|
{
|
|
566
|
-
if(_1.first_
|
|
567
|
-
if(_1.second_
|
|
561
|
+
if(_1.first_ === "js") {
|
|
562
|
+
if(_1.second_ === "async") {
|
|
568
563
|
if(ff_core_Equal.notEquals_(targets_.jsAsync_, ff_core_Option.None(), ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String))) {
|
|
569
564
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, "Duplicate target definition"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
570
565
|
};
|
|
@@ -576,8 +571,8 @@ break
|
|
|
576
571
|
}
|
|
577
572
|
}
|
|
578
573
|
{
|
|
579
|
-
if(_1.first_
|
|
580
|
-
if(_1.second_
|
|
574
|
+
if(_1.first_ === "browser") {
|
|
575
|
+
if(_1.second_ === "sync") {
|
|
581
576
|
if(ff_core_Equal.notEquals_(targets_.browserSync_, ff_core_Option.None(), ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String))) {
|
|
582
577
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, "Duplicate target definition"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
583
578
|
};
|
|
@@ -589,8 +584,8 @@ break
|
|
|
589
584
|
}
|
|
590
585
|
}
|
|
591
586
|
{
|
|
592
|
-
if(_1.first_
|
|
593
|
-
if(_1.second_
|
|
587
|
+
if(_1.first_ === "browser") {
|
|
588
|
+
if(_1.second_ === "async") {
|
|
594
589
|
if(ff_core_Equal.notEquals_(targets_.browserAsync_, ff_core_Option.None(), ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String))) {
|
|
595
590
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, "Duplicate target definition"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
596
591
|
};
|
|
@@ -602,8 +597,8 @@ break
|
|
|
602
597
|
}
|
|
603
598
|
}
|
|
604
599
|
{
|
|
605
|
-
if(_1.first_
|
|
606
|
-
if(_1.second_
|
|
600
|
+
if(_1.first_ === "node") {
|
|
601
|
+
if(_1.second_ === "sync") {
|
|
607
602
|
if(ff_core_Equal.notEquals_(targets_.nodeSync_, ff_core_Option.None(), ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String))) {
|
|
608
603
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, "Duplicate target definition"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
609
604
|
};
|
|
@@ -615,8 +610,8 @@ break
|
|
|
615
610
|
}
|
|
616
611
|
}
|
|
617
612
|
{
|
|
618
|
-
if(_1.first_
|
|
619
|
-
if(_1.second_
|
|
613
|
+
if(_1.first_ === "node") {
|
|
614
|
+
if(_1.second_ === "async") {
|
|
620
615
|
if(ff_core_Equal.notEquals_(targets_.nodeAsync_, ff_core_Option.None(), ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String))) {
|
|
621
616
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, "Duplicate target definition"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
622
617
|
};
|
|
@@ -641,17 +636,17 @@ export function Parser_parseSignature(self_, member_) {
|
|
|
641
636
|
const nameToken_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LLower());
|
|
642
637
|
const poly_ = (ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "[")
|
|
643
638
|
? ff_compiler_Parser.Parser_parseTypeParameters(self_)
|
|
644
|
-
: ff_compiler_Parser.Poly(
|
|
639
|
+
: ff_compiler_Parser.Poly([], []));
|
|
645
640
|
const parameters_ = ((ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_) && (!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "(")))
|
|
646
|
-
?
|
|
641
|
+
? []
|
|
647
642
|
: ff_compiler_Parser.Parser_parseFunctionParameters(self_, false));
|
|
648
643
|
const returnType_ = (ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LColon())
|
|
649
644
|
? (function() {
|
|
650
645
|
ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LColon());
|
|
651
646
|
return ff_compiler_Parser.Parser_parseType(self_)
|
|
652
647
|
})()
|
|
653
|
-
: ff_compiler_Syntax.TConstructor(ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), "ff:core/Unit.Unit",
|
|
654
|
-
const temporaryEffect_ = ff_compiler_Syntax.TConstructor(ff_compiler_Token.Token_at(nameToken_), "TemporaryEffect$",
|
|
648
|
+
: ff_compiler_Syntax.TConstructor(ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), "ff:core/Unit.Unit", []));
|
|
649
|
+
const temporaryEffect_ = ff_compiler_Syntax.TConstructor(ff_compiler_Token.Token_at(nameToken_), "TemporaryEffect$", []);
|
|
655
650
|
return ff_compiler_Syntax.Signature(ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_raw(nameToken_), member_, poly_.generics_, poly_.constraints_, parameters_, returnType_, temporaryEffect_)
|
|
656
651
|
}
|
|
657
652
|
|
|
@@ -663,20 +658,20 @@ const extendToken_ = ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.
|
|
|
663
658
|
const nameToken_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LLower());
|
|
664
659
|
const poly_ = (ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "[")
|
|
665
660
|
? ff_compiler_Parser.Parser_parseTypeParameters(self_)
|
|
666
|
-
: ff_compiler_Parser.Poly(
|
|
661
|
+
: ff_compiler_Parser.Poly([], []));
|
|
667
662
|
ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LColon());
|
|
668
663
|
const type_ = ff_compiler_Parser.Parser_parseType(self_);
|
|
669
664
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketLeft(), "{");
|
|
670
|
-
const methods_ =
|
|
665
|
+
const methods_ = ff_core_Array.make_();
|
|
671
666
|
while((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
|
|
672
|
-
|
|
667
|
+
ff_core_Array.Array_push(methods_, ff_compiler_Parser.Parser_parseFunctionDefinition(self_, true));
|
|
673
668
|
if((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
|
|
674
669
|
ff_compiler_Parser.Parser_skipSeparator(self_, ff_compiler_Token.LSemicolon())
|
|
675
670
|
}
|
|
676
671
|
};
|
|
677
672
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketRight(), "}");
|
|
678
673
|
if(self_.lspHook_.trackSymbols_) {
|
|
679
|
-
let name_ = ff_compiler_Syntax.Type_show(type_,
|
|
674
|
+
let name_ = ff_compiler_Syntax.Type_show(type_, []);
|
|
680
675
|
ff_core_List.List_each(ff_core_List.List_zip(poly_.generics_, poly_.constraints_), ((_1) => {
|
|
681
676
|
{
|
|
682
677
|
const generic_ = _1.first_;
|
|
@@ -688,9 +683,9 @@ name_ = ff_core_String.String_replace(name_, ((", " + generic_) + "]"), ((((", "
|
|
|
688
683
|
return
|
|
689
684
|
}
|
|
690
685
|
}));
|
|
691
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(name_,
|
|
686
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(name_, ff_compiler_LspHook.SExtend(), ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_end(nameToken_), ff_compiler_Token.Token_at(extendToken_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
|
|
692
687
|
};
|
|
693
|
-
return ff_compiler_Syntax.DExtend(ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_raw(nameToken_), poly_.generics_, poly_.constraints_, type_,
|
|
688
|
+
return ff_compiler_Syntax.DExtend(ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_raw(nameToken_), poly_.generics_, poly_.constraints_, type_, ff_core_Array.Array_toList(methods_, 0, 9007199254740991))
|
|
694
689
|
}
|
|
695
690
|
|
|
696
691
|
export function Parser_parseTraitDefinition(self_) {
|
|
@@ -702,26 +697,26 @@ const typeParameterToken_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_To
|
|
|
702
697
|
ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LColon());
|
|
703
698
|
const nameToken_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LUpper());
|
|
704
699
|
const poly_ = ((!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "["))
|
|
705
|
-
? ff_compiler_Parser.Poly(
|
|
700
|
+
? ff_compiler_Parser.Poly([], [])
|
|
706
701
|
: ff_compiler_Parser.Parser_parseTypeParameters(self_));
|
|
707
|
-
const constraints_ =
|
|
702
|
+
const constraints_ = ff_core_Array.make_();
|
|
708
703
|
while(ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LColon())) {
|
|
709
704
|
ff_compiler_Parser.Parser_fail(self_, ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), "Trait constraints is not yet implemented");
|
|
710
705
|
ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LColon());
|
|
711
706
|
const constraint_ = ff_compiler_Parser.Parser_parseConstraint(self_);
|
|
712
|
-
|
|
713
|
-
return ff_compiler_Syntax.Constraint(_c.at_, _c.name_,
|
|
707
|
+
ff_core_Array.Array_push(constraints_, (((_c) => {
|
|
708
|
+
return ff_compiler_Syntax.Constraint(_c.at_, _c.name_, [ff_compiler_Syntax.TConstructor(ff_compiler_Token.Token_at(typeParameterToken_), ff_compiler_Token.Token_raw(typeParameterToken_), []), ...constraint_.generics_])
|
|
714
709
|
}))(constraint_))
|
|
715
710
|
};
|
|
716
711
|
const generatorParameters_ = ((!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "("))
|
|
717
|
-
?
|
|
712
|
+
? []
|
|
718
713
|
: ff_compiler_Parser.Parser_parseFunctionParameters(self_, false));
|
|
719
|
-
const methodGenerators_ =
|
|
720
|
-
const methodDefaults_ =
|
|
714
|
+
const methodGenerators_ = ff_core_Array.make_();
|
|
715
|
+
const methodDefaults_ = ff_core_Array.make_();
|
|
721
716
|
const methodSignatures_ = ((!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "{"))
|
|
722
|
-
?
|
|
717
|
+
? []
|
|
723
718
|
: (function() {
|
|
724
|
-
const signatures_ =
|
|
719
|
+
const signatures_ = ff_core_Array.make_();
|
|
725
720
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketLeft(), "{");
|
|
726
721
|
while((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
|
|
727
722
|
if(self_.lspHook_.trackSymbols_) {
|
|
@@ -730,16 +725,16 @@ ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbol
|
|
|
730
725
|
const signatureNameToken_ = ff_compiler_Parser.Parser_current(self_);
|
|
731
726
|
const signature_ = ff_compiler_Parser.Parser_parseSignature(self_, true);
|
|
732
727
|
if(self_.lspHook_.trackSymbols_) {
|
|
733
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(signatureNameToken_),
|
|
728
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(signatureNameToken_), ff_compiler_LspHook.STraitFunction(), ff_compiler_Token.Token_at(signatureNameToken_), ff_compiler_Token.Token_end(signatureNameToken_), ff_compiler_Token.Token_at(signatureNameToken_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
|
|
734
729
|
};
|
|
735
|
-
|
|
730
|
+
ff_core_Array.Array_push(signatures_, signature_);
|
|
736
731
|
if(ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "{")) {
|
|
737
732
|
const generator_ = (ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_ahead(self_), ff_compiler_Token.LKeyword()) && ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_ahead(self_), "generate"));
|
|
738
733
|
const body_ = ff_compiler_Parser.Parser_parseLambda(self_, ff_core_List.List_size(signature_.parameters_), true, false);
|
|
739
734
|
if(generator_) {
|
|
740
|
-
|
|
735
|
+
ff_core_Array.Array_push(methodGenerators_, ff_core_Pair.Pair(signature_.name_, body_))
|
|
741
736
|
} else {
|
|
742
|
-
|
|
737
|
+
ff_core_Array.Array_push(methodDefaults_, ff_core_Pair.Pair(signature_.name_, body_))
|
|
743
738
|
}
|
|
744
739
|
};
|
|
745
740
|
if((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
|
|
@@ -747,12 +742,12 @@ ff_compiler_Parser.Parser_skipSeparator(self_, ff_compiler_Token.LSemicolon())
|
|
|
747
742
|
}
|
|
748
743
|
};
|
|
749
744
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketRight(), "}");
|
|
750
|
-
return
|
|
745
|
+
return ff_core_Array.Array_toList(signatures_, 0, 9007199254740991)
|
|
751
746
|
})());
|
|
752
747
|
if(self_.lspHook_.trackSymbols_) {
|
|
753
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(nameToken_),
|
|
748
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(nameToken_), ff_compiler_LspHook.STrait(), ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_end(nameToken_), ff_compiler_Token.Token_at(traitToken_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
|
|
754
749
|
};
|
|
755
|
-
return ff_compiler_Syntax.DTrait(ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_raw(nameToken_),
|
|
750
|
+
return ff_compiler_Syntax.DTrait(ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_raw(nameToken_), [ff_compiler_Token.Token_raw(typeParameterToken_), ...poly_.generics_], [...ff_core_Array.Array_toList(constraints_, 0, 9007199254740991), ...poly_.constraints_], generatorParameters_, methodSignatures_, ff_core_Array.Array_toList(methodDefaults_, 0, 9007199254740991), ff_core_Array.Array_toList(methodGenerators_, 0, 9007199254740991))
|
|
756
751
|
}
|
|
757
752
|
|
|
758
753
|
export function Parser_parseInstanceDefinition(self_) {
|
|
@@ -762,18 +757,18 @@ ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbol
|
|
|
762
757
|
const instanceToken_ = ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LKeyword(), "instance");
|
|
763
758
|
const token_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LUpper());
|
|
764
759
|
const poly_ = ((!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "["))
|
|
765
|
-
? ff_compiler_Parser.Poly(
|
|
760
|
+
? ff_compiler_Parser.Poly([], [])
|
|
766
761
|
: ff_compiler_Parser.Parser_parseTypeParameters(self_));
|
|
767
|
-
const typeArguments_ =
|
|
768
|
-
|
|
769
|
-
return ff_compiler_Syntax.TConstructor(ff_compiler_Token.Token_at(token_), _w1,
|
|
762
|
+
const typeArguments_ = ff_core_Array.make_();
|
|
763
|
+
ff_core_Array.Array_push(typeArguments_, ff_compiler_Syntax.TConstructor(ff_compiler_Token.Token_at(token_), ff_compiler_Token.Token_raw(token_), ff_core_List.List_map(poly_.generics_, ((_w1) => {
|
|
764
|
+
return ff_compiler_Syntax.TConstructor(ff_compiler_Token.Token_at(token_), _w1, [])
|
|
770
765
|
}))));
|
|
771
766
|
ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LColon());
|
|
772
767
|
const nameToken_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LUpper());
|
|
773
768
|
if(ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "[")) {
|
|
774
769
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketLeft(), "[");
|
|
775
770
|
while((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
|
|
776
|
-
|
|
771
|
+
ff_core_Array.Array_push(typeArguments_, ff_compiler_Parser.Parser_parseType(self_));
|
|
777
772
|
if((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
|
|
778
773
|
ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LComma())
|
|
779
774
|
}
|
|
@@ -782,24 +777,24 @@ ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketRight(), "]")
|
|
|
782
777
|
};
|
|
783
778
|
const generatorArguments_ = ff_compiler_Parser.Parser_parseFunctionArguments(self_, ff_compiler_Token.Token_at(nameToken_), false).first_;
|
|
784
779
|
const methods_ = ((!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "{"))
|
|
785
|
-
?
|
|
780
|
+
? []
|
|
786
781
|
: (function() {
|
|
787
|
-
const definitions_ =
|
|
782
|
+
const definitions_ = ff_core_Array.make_();
|
|
788
783
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketLeft(), "{");
|
|
789
784
|
while((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
|
|
790
|
-
|
|
785
|
+
ff_core_Array.Array_push(definitions_, ff_compiler_Parser.Parser_parseFunctionDefinition(self_, false));
|
|
791
786
|
if((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
|
|
792
787
|
ff_compiler_Parser.Parser_skipSeparator(self_, ff_compiler_Token.LSemicolon())
|
|
793
788
|
}
|
|
794
789
|
};
|
|
795
790
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketRight(), "}");
|
|
796
|
-
return
|
|
791
|
+
return ff_core_Array.Array_toList(definitions_, 0, 9007199254740991)
|
|
797
792
|
})());
|
|
798
793
|
if(self_.lspHook_.trackSymbols_) {
|
|
799
794
|
const name_ = ((ff_compiler_Token.Token_raw(token_) + ": ") + ff_compiler_Token.Token_raw(nameToken_));
|
|
800
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(name_,
|
|
795
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(name_, ff_compiler_LspHook.SInstance(), ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_end(nameToken_), ff_compiler_Token.Token_at(instanceToken_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
|
|
801
796
|
};
|
|
802
|
-
return ff_compiler_Syntax.DInstance(ff_compiler_Token.Token_at(nameToken_), poly_.generics_, poly_.constraints_, ff_compiler_Token.Token_raw(nameToken_),
|
|
797
|
+
return ff_compiler_Syntax.DInstance(ff_compiler_Token.Token_at(nameToken_), poly_.generics_, poly_.constraints_, ff_compiler_Token.Token_raw(nameToken_), ff_core_Array.Array_toList(typeArguments_, 0, 9007199254740991), generatorArguments_, methods_, false)
|
|
803
798
|
}
|
|
804
799
|
|
|
805
800
|
export function Parser_parseTypeDefinition(self_) {
|
|
@@ -808,8 +803,8 @@ ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbol
|
|
|
808
803
|
};
|
|
809
804
|
const newtype_ = ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "newtype");
|
|
810
805
|
const effectParameter_ = (ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "capability")
|
|
811
|
-
?
|
|
812
|
-
:
|
|
806
|
+
? ["Q$"]
|
|
807
|
+
: []);
|
|
813
808
|
const allowMutable_ = ff_compiler_Token.Token_rawIs2(ff_compiler_Parser.Parser_current(self_), "class", "capability");
|
|
814
809
|
const kindToken_ = (ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "newtype")
|
|
815
810
|
? ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LKeyword(), "newtype")
|
|
@@ -820,26 +815,26 @@ const kindToken_ = (ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_curr
|
|
|
820
815
|
: ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LKeyword(), "capability"));
|
|
821
816
|
const nameToken_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LUpper());
|
|
822
817
|
const poly_ = ((!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "["))
|
|
823
|
-
? ff_compiler_Parser.Poly(
|
|
818
|
+
? ff_compiler_Parser.Poly([], [])
|
|
824
819
|
: ff_compiler_Parser.Parser_parseTypeParameters(self_));
|
|
825
820
|
if(((!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "(")) && (!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "{")))) {
|
|
826
821
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketLeft(), "{")
|
|
827
822
|
};
|
|
828
823
|
const commonFields_ = ((!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "("))
|
|
829
|
-
?
|
|
824
|
+
? []
|
|
830
825
|
: ff_compiler_Parser.Parser_parseFunctionParameters(self_, true));
|
|
831
826
|
const variants_ = ((newtype_ || (!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "{")))
|
|
832
|
-
?
|
|
827
|
+
? [ff_compiler_Syntax.Variant(ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_raw(nameToken_), [])]
|
|
833
828
|
: (function() {
|
|
834
829
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketLeft(), "{");
|
|
835
|
-
const variantsBuilder_ =
|
|
830
|
+
const variantsBuilder_ = ff_core_Array.make_();
|
|
836
831
|
while((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
|
|
837
832
|
if(self_.lspHook_.trackSymbols_) {
|
|
838
833
|
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolBegin())
|
|
839
834
|
};
|
|
840
835
|
const variantNameToken_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LUpper());
|
|
841
836
|
const variantFields_ = ((!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "("))
|
|
842
|
-
?
|
|
837
|
+
? []
|
|
843
838
|
: ff_compiler_Parser.Parser_parseFunctionParameters(self_, true));
|
|
844
839
|
if(((!allowMutable_) && ff_core_List.List_any(variantFields_, ((_w1) => {
|
|
845
840
|
return _w1.mutable_
|
|
@@ -848,16 +843,16 @@ throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Sy
|
|
|
848
843
|
return _w1.mutable_
|
|
849
844
|
}))).at_, "Only classes can have mutable fields"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
850
845
|
};
|
|
851
|
-
|
|
846
|
+
ff_core_Array.Array_push(variantsBuilder_, ff_compiler_Syntax.Variant(ff_compiler_Token.Token_at(variantNameToken_), ff_compiler_Token.Token_raw(variantNameToken_), variantFields_));
|
|
852
847
|
if((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
|
|
853
848
|
ff_compiler_Parser.Parser_skipSeparator(self_, ff_compiler_Token.LSemicolon())
|
|
854
849
|
};
|
|
855
850
|
if(self_.lspHook_.trackSymbols_) {
|
|
856
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(variantNameToken_),
|
|
851
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(variantNameToken_), ff_compiler_LspHook.SVariant(), ff_compiler_Token.Token_at(variantNameToken_), ff_compiler_Token.Token_end(variantNameToken_), ff_compiler_Token.Token_at(variantNameToken_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
|
|
857
852
|
}
|
|
858
853
|
};
|
|
859
854
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketRight(), "}");
|
|
860
|
-
return
|
|
855
|
+
return ff_core_Array.Array_toList(variantsBuilder_, 0, 9007199254740991)
|
|
861
856
|
})());
|
|
862
857
|
if((newtype_ && (ff_core_List.List_size(commonFields_) !== 1))) {
|
|
863
858
|
ff_core_Log.show_(commonFields_, ff_core_Show.ff_core_Show_Show$ff_core_List_List(ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_Parameter));
|
|
@@ -870,19 +865,19 @@ throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Sy
|
|
|
870
865
|
return _w1.mutable_
|
|
871
866
|
}))).at_, "Only classes and capabilities can have mutable fields"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
872
867
|
};
|
|
873
|
-
const generics_ =
|
|
868
|
+
const generics_ = [...effectParameter_, ...poly_.generics_];
|
|
874
869
|
const result_ = ff_compiler_Syntax.DType(ff_compiler_Token.Token_at(nameToken_), newtype_, (!allowMutable_), ff_compiler_Token.Token_raw(nameToken_), generics_, poly_.constraints_, commonFields_, variants_);
|
|
875
870
|
if(self_.lspHook_.trackSymbols_) {
|
|
876
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(nameToken_),
|
|
871
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(nameToken_), ff_compiler_LspHook.SType(), ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_end(nameToken_), ff_compiler_Token.Token_at(kindToken_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
|
|
877
872
|
};
|
|
878
873
|
return result_
|
|
879
874
|
}
|
|
880
875
|
|
|
881
876
|
export function Parser_parseImportDefinition(self_, currentPackagePair_) {
|
|
882
877
|
const importToken_ = ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LKeyword(), "import");
|
|
883
|
-
const path_ =
|
|
878
|
+
const path_ = ff_core_Array.make_();
|
|
884
879
|
while(ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LLower())) {
|
|
885
|
-
|
|
880
|
+
ff_core_Array.Array_push(path_, ff_compiler_Parser.Parser_parseDashedName(self_));
|
|
886
881
|
ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LDot())
|
|
887
882
|
};
|
|
888
883
|
const fileToken_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LUpper());
|
|
@@ -901,7 +896,7 @@ const packageName_ = ff_compiler_Parser.Parser_parseDashedName(self_);
|
|
|
901
896
|
return ff_compiler_Syntax.PackagePair(userName_, packageName_)
|
|
902
897
|
})()
|
|
903
898
|
: currentPackagePair_);
|
|
904
|
-
return ff_compiler_Syntax.DImport(ff_compiler_Token.Token_at(fileToken_), alias_, packagePair_,
|
|
899
|
+
return ff_compiler_Syntax.DImport(ff_compiler_Token.Token_at(fileToken_), alias_, packagePair_, ff_core_Array.Array_toList(path_, 0, 9007199254740991), ff_compiler_Token.Token_raw(fileToken_))
|
|
905
900
|
}
|
|
906
901
|
|
|
907
902
|
export function Parser_parsePackageDefinition(self_) {
|
|
@@ -946,7 +941,7 @@ const token_ = (ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(sel
|
|
|
946
941
|
do {
|
|
947
942
|
const _1 = ff_compiler_Token.Token_raw(token_);
|
|
948
943
|
{
|
|
949
|
-
if(_1
|
|
944
|
+
if(_1 === "node") {
|
|
950
945
|
const _guard1 = targets_.node_;
|
|
951
946
|
if(_guard1) {
|
|
952
947
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(token_), "Duplicate target name"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
@@ -955,7 +950,7 @@ break
|
|
|
955
950
|
}
|
|
956
951
|
}
|
|
957
952
|
{
|
|
958
|
-
if(_1
|
|
953
|
+
if(_1 === "node") {
|
|
959
954
|
targets_ = (((_c) => {
|
|
960
955
|
return ff_compiler_Syntax.TargetNames(true, _c.browser_)
|
|
961
956
|
}))(targets_)
|
|
@@ -963,7 +958,7 @@ break
|
|
|
963
958
|
}
|
|
964
959
|
}
|
|
965
960
|
{
|
|
966
|
-
if(_1
|
|
961
|
+
if(_1 === "browser") {
|
|
967
962
|
const _guard1 = targets_.browser_;
|
|
968
963
|
if(_guard1) {
|
|
969
964
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(token_), "Duplicate target name"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
@@ -972,7 +967,7 @@ break
|
|
|
972
967
|
}
|
|
973
968
|
}
|
|
974
969
|
{
|
|
975
|
-
if(_1
|
|
970
|
+
if(_1 === "browser") {
|
|
976
971
|
targets_ = (((_c) => {
|
|
977
972
|
return ff_compiler_Syntax.TargetNames(_c.node_, true)
|
|
978
973
|
}))(targets_)
|
|
@@ -1003,7 +998,7 @@ ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LDot());
|
|
|
1003
998
|
return ff_core_String.String_grabInt(ff_compiler_Token.Token_raw(ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LInt())))
|
|
1004
999
|
})()
|
|
1005
1000
|
: 0);
|
|
1006
|
-
return ff_compiler_Syntax.Version(ff_compiler_Token.Token_at(majorMinor_), ff_core_String.String_grabInt(
|
|
1001
|
+
return ff_compiler_Syntax.Version(ff_compiler_Token.Token_at(majorMinor_), ff_core_String.String_grabInt(ff_core_List.List_grab(parts_, 0)), ff_core_String.String_grabInt(ff_core_List.List_grab(parts_, 1)), patch_)
|
|
1007
1002
|
} else {
|
|
1008
1003
|
const major_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LInt());
|
|
1009
1004
|
return ff_compiler_Syntax.Version(ff_compiler_Token.Token_at(major_), ff_core_String.String_grabInt(ff_compiler_Token.Token_raw(major_)), 0, 0)
|
|
@@ -1046,19 +1041,19 @@ return part_
|
|
|
1046
1041
|
|
|
1047
1042
|
export function Parser_parseTypeParameters(self_) {
|
|
1048
1043
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketLeft(), "[");
|
|
1049
|
-
const parameters_ =
|
|
1050
|
-
const constraints_ =
|
|
1044
|
+
const parameters_ = ff_core_Array.make_();
|
|
1045
|
+
const constraints_ = ff_core_Array.make_();
|
|
1051
1046
|
while(((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight())) && (!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LSemicolon())))) {
|
|
1052
1047
|
if(ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_ahead(self_), ff_compiler_Token.LBracketLeft())) {
|
|
1053
|
-
|
|
1048
|
+
ff_core_Array.Array_push(constraints_, ff_compiler_Parser.Parser_parseConstraint(self_))
|
|
1054
1049
|
} else {
|
|
1055
1050
|
const parameterNameToken_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LUpper());
|
|
1056
|
-
|
|
1051
|
+
ff_core_Array.Array_push(parameters_, ff_compiler_Token.Token_raw(parameterNameToken_));
|
|
1057
1052
|
while(ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LColon())) {
|
|
1058
1053
|
ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LColon());
|
|
1059
1054
|
const constraint_ = ff_compiler_Parser.Parser_parseConstraint(self_);
|
|
1060
|
-
|
|
1061
|
-
return ff_compiler_Syntax.Constraint(_c.at_, _c.name_,
|
|
1055
|
+
ff_core_Array.Array_push(constraints_, (((_c) => {
|
|
1056
|
+
return ff_compiler_Syntax.Constraint(_c.at_, _c.name_, [ff_compiler_Syntax.TConstructor(ff_compiler_Token.Token_at(parameterNameToken_), ff_compiler_Token.Token_raw(parameterNameToken_), []), ...constraint_.generics_])
|
|
1062
1057
|
}))(constraint_))
|
|
1063
1058
|
}
|
|
1064
1059
|
};
|
|
@@ -1067,16 +1062,16 @@ ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LComma())
|
|
|
1067
1062
|
}
|
|
1068
1063
|
};
|
|
1069
1064
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketRight(), "]");
|
|
1070
|
-
return ff_compiler_Parser.Poly(
|
|
1065
|
+
return ff_compiler_Parser.Poly(ff_core_Array.Array_toList(parameters_, 0, 9007199254740991), ff_core_Array.Array_toList(constraints_, 0, 9007199254740991))
|
|
1071
1066
|
}
|
|
1072
1067
|
|
|
1073
1068
|
export function Parser_parseTypeArguments(self_, parenthesis_ = false) {
|
|
1074
1069
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketLeft(), (parenthesis_
|
|
1075
1070
|
? "("
|
|
1076
1071
|
: "["));
|
|
1077
|
-
const types_ =
|
|
1072
|
+
const types_ = ff_core_Array.make_();
|
|
1078
1073
|
while((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
|
|
1079
|
-
|
|
1074
|
+
ff_core_Array.Array_push(types_, ff_compiler_Parser.Parser_parseType(self_));
|
|
1080
1075
|
if((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
|
|
1081
1076
|
ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LComma())
|
|
1082
1077
|
}
|
|
@@ -1084,11 +1079,11 @@ ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LComma())
|
|
|
1084
1079
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketRight(), (parenthesis_
|
|
1085
1080
|
? ")"
|
|
1086
1081
|
: "]"));
|
|
1087
|
-
return
|
|
1082
|
+
return ff_core_Array.Array_toList(types_, 0, 9007199254740991)
|
|
1088
1083
|
}
|
|
1089
1084
|
|
|
1090
1085
|
export function Parser_parseFunctionParameters(self_, allowMutable_ = false) {
|
|
1091
|
-
const parameters_ =
|
|
1086
|
+
const parameters_ = ff_core_Array.make_();
|
|
1092
1087
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketLeft(), "(");
|
|
1093
1088
|
while((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
|
|
1094
1089
|
const lspTrackSymbols_ = (self_.lspHook_.trackSymbols_ && allowMutable_);
|
|
@@ -1102,8 +1097,8 @@ ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LKeyword())
|
|
|
1102
1097
|
};
|
|
1103
1098
|
const parameterNameToken_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LLower());
|
|
1104
1099
|
if((ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_) && (!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LColon())))) {
|
|
1105
|
-
const t_ = ff_compiler_Syntax.TConstructor(ff_compiler_Token.Token_at(parameterNameToken_), "ff:core/Nothing.Nothing",
|
|
1106
|
-
|
|
1100
|
+
const t_ = ff_compiler_Syntax.TConstructor(ff_compiler_Token.Token_at(parameterNameToken_), "ff:core/Nothing.Nothing", []);
|
|
1101
|
+
ff_core_Array.Array_push(parameters_, ff_compiler_Syntax.Parameter(ff_compiler_Token.Token_at(parameterNameToken_), mutable_, ff_compiler_Token.Token_raw(parameterNameToken_), t_, ff_core_Option.None()));
|
|
1107
1102
|
if((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
|
|
1108
1103
|
ff_compiler_Parser.Parser_skipSeparator(self_, ff_compiler_Token.LComma())
|
|
1109
1104
|
}
|
|
@@ -1116,9 +1111,9 @@ const default_ = ((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current
|
|
|
1116
1111
|
ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LAssign());
|
|
1117
1112
|
return ff_core_Option.Some(ff_compiler_Parser.Parser_parseTerm(self_))
|
|
1118
1113
|
})());
|
|
1119
|
-
|
|
1114
|
+
ff_core_Array.Array_push(parameters_, ff_compiler_Syntax.Parameter(ff_compiler_Token.Token_at(parameterNameToken_), mutable_, ff_compiler_Token.Token_raw(parameterNameToken_), parameterType_, default_));
|
|
1120
1115
|
if(lspTrackSymbols_) {
|
|
1121
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(parameterNameToken_),
|
|
1116
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(parameterNameToken_), ff_compiler_LspHook.SParameter(), ff_compiler_Token.Token_at(parameterNameToken_), ff_compiler_Token.Token_end(parameterNameToken_), ff_compiler_Token.Token_at(lspFirst_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
|
|
1122
1117
|
};
|
|
1123
1118
|
if((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
|
|
1124
1119
|
ff_compiler_Parser.Parser_skipSeparator(self_, ff_compiler_Token.LComma())
|
|
@@ -1126,11 +1121,11 @@ ff_compiler_Parser.Parser_skipSeparator(self_, ff_compiler_Token.LComma())
|
|
|
1126
1121
|
}
|
|
1127
1122
|
};
|
|
1128
1123
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketRight(), ")");
|
|
1129
|
-
return
|
|
1124
|
+
return ff_core_Array.Array_toList(parameters_, 0, 9007199254740991)
|
|
1130
1125
|
}
|
|
1131
1126
|
|
|
1132
1127
|
export function Parser_parseFunctionArguments(self_, callAt_, trailing_) {
|
|
1133
|
-
const arguments_ =
|
|
1128
|
+
const arguments_ = ff_core_Array.make_();
|
|
1134
1129
|
if(ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "(")) {
|
|
1135
1130
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketLeft(), "(");
|
|
1136
1131
|
while((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
|
|
@@ -1145,13 +1140,13 @@ return ff_core_Option.Some(token_)
|
|
|
1145
1140
|
const value_ = ff_compiler_Parser.Parser_parseTerm(self_);
|
|
1146
1141
|
if((ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_) && (!self_.lspEmittedArgumentHook_))) {
|
|
1147
1142
|
if(ff_compiler_LspHook.strictlyBetween_(callAt_, ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), self_.lspHook_.at_, 1)) {
|
|
1148
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseArgumentHook(callAt_,
|
|
1143
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseArgumentHook(callAt_, ff_core_Array.Array_size(arguments_), ff_core_Option.Option_map(nameToken_, ((_w1) => {
|
|
1149
1144
|
return ff_compiler_Token.Token_raw(_w1)
|
|
1150
1145
|
}))));
|
|
1151
1146
|
self_.lspEmittedArgumentHook_ = true
|
|
1152
1147
|
}
|
|
1153
1148
|
};
|
|
1154
|
-
|
|
1149
|
+
ff_core_Array.Array_push(arguments_, ff_compiler_Syntax.Argument(ff_compiler_Token.Token_at(argumentToken_), ff_core_Option.Option_map(nameToken_, ((_w1) => {
|
|
1155
1150
|
return ff_compiler_Token.Token_raw(_w1)
|
|
1156
1151
|
})), value_));
|
|
1157
1152
|
if((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
|
|
@@ -1160,7 +1155,7 @@ ff_compiler_Parser.Parser_skipSeparator(self_, ff_compiler_Token.LComma())
|
|
|
1160
1155
|
};
|
|
1161
1156
|
if((ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_) && (!self_.lspEmittedArgumentHook_))) {
|
|
1162
1157
|
if(ff_compiler_LspHook.strictlyBetween_(callAt_, ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), self_.lspHook_.at_, 1)) {
|
|
1163
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseArgumentHook(callAt_,
|
|
1158
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseArgumentHook(callAt_, ff_core_Array.Array_size(arguments_), ff_core_Option.None()));
|
|
1164
1159
|
self_.lspEmittedArgumentHook_ = true
|
|
1165
1160
|
}
|
|
1166
1161
|
};
|
|
@@ -1171,30 +1166,30 @@ if(trailing_) {
|
|
|
1171
1166
|
if((ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_) && (ff_compiler_Token.Token_is3(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LLower(), ff_compiler_Token.LUpper(), ff_compiler_Token.LString()) || ff_compiler_Token.Token_is3(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LInt(), ff_compiler_Token.LChar(), ff_compiler_Token.LFloat())))) {
|
|
1172
1167
|
lastWasCurly_ = true;
|
|
1173
1168
|
const term_ = ff_compiler_Parser.Parser_parseTerm(self_);
|
|
1174
|
-
const temporaryEffect_ = ff_compiler_Syntax.TConstructor(term_.at_, "TemporaryEffect$",
|
|
1175
|
-
const cases_ =
|
|
1169
|
+
const temporaryEffect_ = ff_compiler_Syntax.TConstructor(term_.at_, "TemporaryEffect$", []);
|
|
1170
|
+
const cases_ = [ff_compiler_Syntax.MatchCase(term_.at_, [], [], term_)];
|
|
1176
1171
|
if((ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_) && (!self_.lspEmittedArgumentHook_))) {
|
|
1177
1172
|
if(ff_compiler_LspHook.strictlyBetween_(callAt_, ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), self_.lspHook_.at_, 1)) {
|
|
1178
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseArgumentHook(callAt_,
|
|
1173
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseArgumentHook(callAt_, ff_core_Array.Array_size(arguments_), ff_core_Option.None()));
|
|
1179
1174
|
self_.lspEmittedArgumentHook_ = true
|
|
1180
1175
|
}
|
|
1181
1176
|
};
|
|
1182
|
-
|
|
1177
|
+
ff_core_Array.Array_push(arguments_, ff_compiler_Syntax.Argument(term_.at_, ff_core_Option.None(), ff_compiler_Syntax.ELambda(term_.at_, ff_compiler_Syntax.Lambda(term_.at_, temporaryEffect_, cases_))))
|
|
1183
1178
|
} else {
|
|
1184
1179
|
while((ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "{") || ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LColon()))) {
|
|
1185
1180
|
lastWasCurly_ = ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "{");
|
|
1186
1181
|
const lambda_ = ff_compiler_Parser.Parser_parseLambda(self_, 0, false, true);
|
|
1187
1182
|
if((ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_) && (!self_.lspEmittedArgumentHook_))) {
|
|
1188
1183
|
if(ff_compiler_LspHook.strictlyBetween_(callAt_, ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), self_.lspHook_.at_, 1)) {
|
|
1189
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseArgumentHook(callAt_,
|
|
1184
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseArgumentHook(callAt_, ff_core_Array.Array_size(arguments_), ff_core_Option.None()));
|
|
1190
1185
|
self_.lspEmittedArgumentHook_ = true
|
|
1191
1186
|
}
|
|
1192
1187
|
};
|
|
1193
|
-
|
|
1188
|
+
ff_core_Array.Array_push(arguments_, ff_compiler_Syntax.Argument(lambda_.at_, ff_core_Option.None(), ff_compiler_Syntax.ELambda(lambda_.at_, lambda_)))
|
|
1194
1189
|
}
|
|
1195
1190
|
}
|
|
1196
1191
|
};
|
|
1197
|
-
return ff_core_Pair.Pair(
|
|
1192
|
+
return ff_core_Pair.Pair(ff_core_Array.Array_toList(arguments_, 0, 9007199254740991), lastWasCurly_)
|
|
1198
1193
|
}
|
|
1199
1194
|
|
|
1200
1195
|
export function Parser_parseLambda(self_, defaultParameterCount_ = 0, ignoreGenerateKeyword_ = false, allowColon_ = false) {
|
|
@@ -1207,21 +1202,21 @@ ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LKeyword())
|
|
|
1207
1202
|
};
|
|
1208
1203
|
const result_ = (ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LPipe())
|
|
1209
1204
|
? (function() {
|
|
1210
|
-
const cases_ =
|
|
1205
|
+
const cases_ = ff_core_Array.make_();
|
|
1211
1206
|
while(ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LPipe())) {
|
|
1212
|
-
|
|
1207
|
+
ff_core_Array.Array_push(cases_, ff_compiler_Parser.Parser_parseCase(self_))
|
|
1213
1208
|
};
|
|
1214
|
-
return
|
|
1209
|
+
return ff_core_Array.Array_toList(cases_, 0, 9007199254740991)
|
|
1215
1210
|
})()
|
|
1216
1211
|
: (ff_compiler_Token.Token_is2(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LLower(), ff_compiler_Token.LWildcard()) && ff_compiler_Token.Token_is2(ff_compiler_Parser.Parser_ahead(self_), ff_compiler_Token.LComma(), ff_compiler_Token.LArrowThick()))
|
|
1217
1212
|
? (function() {
|
|
1218
|
-
const parameters_ =
|
|
1213
|
+
const parameters_ = ff_core_Array.make_();
|
|
1219
1214
|
while((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LArrowThick()))) {
|
|
1220
1215
|
const isVariable_ = ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LLower());
|
|
1221
1216
|
const parameterToken_ = (isVariable_
|
|
1222
1217
|
? ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LLower())
|
|
1223
1218
|
: ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LWildcard()));
|
|
1224
|
-
|
|
1219
|
+
ff_core_Array.Array_push(parameters_, ff_compiler_Syntax.PVariable(ff_compiler_Token.Token_at(parameterToken_), (isVariable_
|
|
1225
1220
|
? ff_core_Option.Some(ff_compiler_Token.Token_raw(parameterToken_))
|
|
1226
1221
|
: ff_core_Option.None())));
|
|
1227
1222
|
if((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LArrowThick()))) {
|
|
@@ -1230,7 +1225,7 @@ ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LComma())
|
|
|
1230
1225
|
};
|
|
1231
1226
|
ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LArrowThick());
|
|
1232
1227
|
const term_ = ff_compiler_Parser.Parser_parseStatements(self_);
|
|
1233
|
-
return
|
|
1228
|
+
return [ff_compiler_Syntax.MatchCase(ff_compiler_Token.Token_at(token_), ff_core_Array.Array_toList(parameters_, 0, 9007199254740991), [], term_)]
|
|
1234
1229
|
})()
|
|
1235
1230
|
: (function() {
|
|
1236
1231
|
const term_ = ff_compiler_Parser.Parser_parseStatements(self_);
|
|
@@ -1243,40 +1238,40 @@ return ff_compiler_Syntax.PVariable(ff_compiler_Token.Token_at(token_), ff_core_
|
|
|
1243
1238
|
: ff_core_List.List_map(ff_core_List.range_(defaultParameterCount_), ((i_) => {
|
|
1244
1239
|
return ff_compiler_Syntax.PVariable(ff_compiler_Token.Token_at(token_), ff_core_Option.None())
|
|
1245
1240
|
})));
|
|
1246
|
-
return
|
|
1241
|
+
return [ff_compiler_Syntax.MatchCase(ff_compiler_Token.Token_at(token_), arguments_, [], e_)]
|
|
1247
1242
|
})());
|
|
1248
1243
|
if((!colon_)) {
|
|
1249
1244
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketRight(), "}")
|
|
1250
1245
|
};
|
|
1251
|
-
const temporaryEffect_ = ff_compiler_Syntax.TConstructor(ff_compiler_Token.Token_at(token_), "TemporaryEffect$",
|
|
1246
|
+
const temporaryEffect_ = ff_compiler_Syntax.TConstructor(ff_compiler_Token.Token_at(token_), "TemporaryEffect$", []);
|
|
1252
1247
|
return ff_compiler_Syntax.Lambda(ff_compiler_Token.Token_at(token_), temporaryEffect_, result_)
|
|
1253
1248
|
}
|
|
1254
1249
|
|
|
1255
1250
|
export function Parser_parseCase(self_) {
|
|
1256
1251
|
const token_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LPipe());
|
|
1257
|
-
const patterns_ =
|
|
1252
|
+
const patterns_ = ff_core_Array.make_();
|
|
1258
1253
|
while(((!ff_compiler_Token.Token_is3(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LArrowThick(), ff_compiler_Token.LPipe(), ff_compiler_Token.LBracketRight())) && (!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "{")))) {
|
|
1259
|
-
|
|
1254
|
+
ff_core_Array.Array_push(patterns_, ff_compiler_Parser.Parser_parsePattern(self_));
|
|
1260
1255
|
if(((!ff_compiler_Token.Token_is3(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LArrowThick(), ff_compiler_Token.LPipe(), ff_compiler_Token.LBracketRight())) && (!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "{")))) {
|
|
1261
1256
|
ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LComma())
|
|
1262
1257
|
}
|
|
1263
1258
|
};
|
|
1264
|
-
const guards_ =
|
|
1259
|
+
const guards_ = ff_core_Array.make_();
|
|
1265
1260
|
while(ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "{")) {
|
|
1266
|
-
|
|
1261
|
+
ff_core_Array.Array_push(guards_, ff_compiler_Parser.Parser_parseCaseGuard(self_))
|
|
1267
1262
|
};
|
|
1268
1263
|
if(((!ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_)) || (!ff_compiler_Token.Token_is2(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LPipe(), ff_compiler_Token.LBracketRight())))) {
|
|
1269
1264
|
ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LArrowThick())
|
|
1270
1265
|
};
|
|
1271
1266
|
const body_ = ff_compiler_Parser.Parser_parseStatements(self_);
|
|
1272
|
-
return ff_compiler_Syntax.MatchCase(ff_compiler_Token.Token_at(token_),
|
|
1267
|
+
return ff_compiler_Syntax.MatchCase(ff_compiler_Token.Token_at(token_), ff_core_Array.Array_toList(patterns_, 0, 9007199254740991), ff_core_Array.Array_toList(guards_, 0, 9007199254740991), body_)
|
|
1273
1268
|
}
|
|
1274
1269
|
|
|
1275
1270
|
export function Parser_parseCaseGuard(self_) {
|
|
1276
1271
|
const guardToken_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LBracketLeft());
|
|
1277
1272
|
const term_ = ff_compiler_Parser.Parser_parseStatements(self_);
|
|
1278
1273
|
const p_ = ((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LPipe()))
|
|
1279
|
-
? ff_compiler_Syntax.PVariant(ff_compiler_Token.Token_at(guardToken_), "True",
|
|
1274
|
+
? ff_compiler_Syntax.PVariant(ff_compiler_Token.Token_at(guardToken_), "True", [])
|
|
1280
1275
|
: (function() {
|
|
1281
1276
|
ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LPipe());
|
|
1282
1277
|
return ff_compiler_Parser.Parser_parsePattern(self_)
|
|
@@ -1322,29 +1317,29 @@ return ff_compiler_Syntax.PChar(ff_compiler_Token.Token_at(token_), ff_compiler_
|
|
|
1322
1317
|
: (function() {
|
|
1323
1318
|
const token_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LUpper());
|
|
1324
1319
|
if(ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "(")) {
|
|
1325
|
-
const patterns_ =
|
|
1320
|
+
const patterns_ = ff_core_Array.make_();
|
|
1326
1321
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketLeft(), "(");
|
|
1327
1322
|
while((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
|
|
1328
1323
|
const pattern_ = ff_compiler_Parser.Parser_parsePattern(self_);
|
|
1329
1324
|
if((ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_) && (!self_.lspEmittedArgumentHook_))) {
|
|
1330
1325
|
if(ff_compiler_LspHook.strictlyBetween_(ff_compiler_Token.Token_at(token_), ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), self_.lspHook_.at_, 1)) {
|
|
1331
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseArgumentHook(ff_compiler_Token.Token_at(token_),
|
|
1326
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseArgumentHook(ff_compiler_Token.Token_at(token_), ff_core_Array.Array_size(patterns_), ff_core_Option.None()));
|
|
1332
1327
|
self_.lspEmittedArgumentHook_ = true
|
|
1333
1328
|
}
|
|
1334
1329
|
};
|
|
1335
|
-
|
|
1330
|
+
ff_core_Array.Array_push(patterns_, pattern_);
|
|
1336
1331
|
if((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
|
|
1337
1332
|
ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LComma())
|
|
1338
1333
|
}
|
|
1339
1334
|
};
|
|
1340
1335
|
if((ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_) && (!self_.lspEmittedArgumentHook_))) {
|
|
1341
1336
|
if(ff_compiler_LspHook.strictlyBetween_(ff_compiler_Token.Token_at(token_), ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), self_.lspHook_.at_, 1)) {
|
|
1342
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseArgumentHook(ff_compiler_Token.Token_at(token_),
|
|
1337
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseArgumentHook(ff_compiler_Token.Token_at(token_), ff_core_Array.Array_size(patterns_), ff_core_Option.None()));
|
|
1343
1338
|
self_.lspEmittedArgumentHook_ = true
|
|
1344
1339
|
}
|
|
1345
1340
|
};
|
|
1346
1341
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketRight(), ")");
|
|
1347
|
-
return ff_compiler_Syntax.PVariant(ff_compiler_Token.Token_at(token_), ff_compiler_Token.Token_raw(token_),
|
|
1342
|
+
return ff_compiler_Syntax.PVariant(ff_compiler_Token.Token_at(token_), ff_compiler_Token.Token_raw(token_), ff_core_Array.Array_toList(patterns_, 0, 9007199254740991))
|
|
1348
1343
|
} else {
|
|
1349
1344
|
if(ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LLower())) {
|
|
1350
1345
|
const asToken_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LLower());
|
|
@@ -1353,7 +1348,7 @@ return ff_compiler_Syntax.PVariantAs(ff_compiler_Token.Token_at(token_), ff_comp
|
|
|
1353
1348
|
const wildcardToken_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LWildcard());
|
|
1354
1349
|
return ff_compiler_Syntax.PVariantAs(ff_compiler_Token.Token_at(token_), ff_compiler_Token.Token_raw(token_), ff_compiler_Token.Token_at(wildcardToken_), ff_core_Option.None())
|
|
1355
1350
|
} else {
|
|
1356
|
-
return ff_compiler_Syntax.PVariant(ff_compiler_Token.Token_at(token_), ff_compiler_Token.Token_raw(token_),
|
|
1351
|
+
return ff_compiler_Syntax.PVariant(ff_compiler_Token.Token_at(token_), ff_compiler_Token.Token_raw(token_), [])
|
|
1357
1352
|
}
|
|
1358
1353
|
}
|
|
1359
1354
|
})());
|
|
@@ -1371,7 +1366,7 @@ const leftTypes_ = (((ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_cu
|
|
|
1371
1366
|
? (function() {
|
|
1372
1367
|
const at_ = ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_));
|
|
1373
1368
|
const pair_ = ff_core_List.List_unzip(ff_compiler_Parser.Parser_parseRecordType(self_));
|
|
1374
|
-
return
|
|
1369
|
+
return [ff_compiler_Syntax.TConstructor(at_, ("Record$" + ff_core_List.List_join(pair_.first_, "$")), pair_.second_)]
|
|
1375
1370
|
})()
|
|
1376
1371
|
: ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "(")
|
|
1377
1372
|
? ff_compiler_Parser.Parser_parseTypeArguments(self_, true)
|
|
@@ -1381,16 +1376,16 @@ const namespace_ = (ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current
|
|
|
1381
1376
|
: "");
|
|
1382
1377
|
const token_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LUpper());
|
|
1383
1378
|
const arguments_ = ((!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "["))
|
|
1384
|
-
?
|
|
1379
|
+
? []
|
|
1385
1380
|
: ff_compiler_Parser.Parser_parseTypeArguments(self_, false));
|
|
1386
|
-
return
|
|
1381
|
+
return [ff_compiler_Syntax.TConstructor(ff_compiler_Token.Token_at(token_), (namespace_ + ff_compiler_Token.Token_raw(token_)), arguments_)]
|
|
1387
1382
|
})());
|
|
1388
1383
|
if(((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LArrowThick())) && (ff_core_List.List_size(leftTypes_) === 1))) {
|
|
1389
1384
|
return ff_core_List.List_grabFirst(leftTypes_)
|
|
1390
1385
|
} else {
|
|
1391
1386
|
const arrowToken_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LArrowThick());
|
|
1392
1387
|
const rightType_ = ff_compiler_Parser.Parser_parseType(self_);
|
|
1393
|
-
return ff_compiler_Syntax.TConstructor(ff_compiler_Token.Token_at(arrowToken_), ("Function$" + ff_core_List.List_size(leftTypes_)),
|
|
1388
|
+
return ff_compiler_Syntax.TConstructor(ff_compiler_Token.Token_at(arrowToken_), ("Function$" + ff_core_List.List_size(leftTypes_)), [...leftTypes_, rightType_])
|
|
1394
1389
|
}
|
|
1395
1390
|
}
|
|
1396
1391
|
|
|
@@ -1400,14 +1395,14 @@ const namespace_ = (ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current
|
|
|
1400
1395
|
: "");
|
|
1401
1396
|
const token_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LUpper());
|
|
1402
1397
|
const arguments_ = ((!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "["))
|
|
1403
|
-
?
|
|
1398
|
+
? []
|
|
1404
1399
|
: ff_compiler_Parser.Parser_parseTypeArguments(self_, false));
|
|
1405
1400
|
return ff_compiler_Syntax.Constraint(ff_compiler_Token.Token_at(token_), (namespace_ + ff_compiler_Token.Token_raw(token_)), arguments_)
|
|
1406
1401
|
}
|
|
1407
1402
|
|
|
1408
1403
|
export function Parser_parseStatements(self_) {
|
|
1409
1404
|
if(ff_compiler_Token.Token_is2(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight(), ff_compiler_Token.LPipe())) {
|
|
1410
|
-
return ff_compiler_Syntax.EVariant(ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), "Unit",
|
|
1405
|
+
return ff_compiler_Syntax.EVariant(ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), "Unit", [], ff_core_Option.None())
|
|
1411
1406
|
} else {
|
|
1412
1407
|
let result_ = ff_compiler_Parser.Parser_parseStatement(self_);
|
|
1413
1408
|
while(ff_compiler_Parser.Parser_currentIsSeparator(self_, ff_compiler_Token.LSemicolon())) {
|
|
@@ -1490,30 +1485,27 @@ ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LColon());
|
|
|
1490
1485
|
return ff_compiler_Parser.Parser_parseType(self_)
|
|
1491
1486
|
})());
|
|
1492
1487
|
if((ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_) && (!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LAssign())))) {
|
|
1493
|
-
const unit_ = ff_compiler_Syntax.EVariant(ff_compiler_Token.Token_at(keywordToken_), "Unit",
|
|
1488
|
+
const unit_ = ff_compiler_Syntax.EVariant(ff_compiler_Token.Token_at(keywordToken_), "Unit", [], ff_core_Option.None());
|
|
1494
1489
|
return ff_compiler_Syntax.ELet(ff_compiler_Token.Token_at(nameToken_), mutable_, ff_compiler_Token.Token_raw(nameToken_), valueType_, unit_, unit_)
|
|
1495
1490
|
} else {
|
|
1496
1491
|
ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LAssign());
|
|
1497
1492
|
const value_ = ff_compiler_Parser.Parser_parseTerm(self_);
|
|
1498
1493
|
if(self_.lspHook_.trackSymbols_) {
|
|
1499
|
-
|
|
1500
|
-
? 13
|
|
1501
|
-
: 14);
|
|
1502
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(nameToken_), kind_, ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_end(nameToken_), ff_compiler_Token.Token_at(mutableToken_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
|
|
1494
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(nameToken_), ff_compiler_LspHook.SLet(mutable_), ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_end(nameToken_), ff_compiler_Token.Token_at(mutableToken_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
|
|
1503
1495
|
};
|
|
1504
1496
|
const body_ = (ff_compiler_Parser.Parser_currentIsSeparator(self_, ff_compiler_Token.LSemicolon())
|
|
1505
1497
|
? (function() {
|
|
1506
1498
|
ff_compiler_Parser.Parser_skipSeparator(self_, ff_compiler_Token.LSemicolon());
|
|
1507
1499
|
return ff_compiler_Parser.Parser_parseStatements(self_)
|
|
1508
1500
|
})()
|
|
1509
|
-
: ff_compiler_Syntax.EVariant(ff_compiler_Token.Token_at(keywordToken_), "Unit",
|
|
1501
|
+
: ff_compiler_Syntax.EVariant(ff_compiler_Token.Token_at(keywordToken_), "Unit", [], ff_core_Option.None()));
|
|
1510
1502
|
return ff_compiler_Syntax.ELet(ff_compiler_Token.Token_at(nameToken_), mutable_, ff_compiler_Token.Token_raw(nameToken_), valueType_, value_, body_)
|
|
1511
1503
|
}
|
|
1512
1504
|
}
|
|
1513
1505
|
|
|
1514
1506
|
export function Parser_parseFunctions(self_) {
|
|
1515
1507
|
const at_ = ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_));
|
|
1516
|
-
const functions_ =
|
|
1508
|
+
const functions_ = ff_core_Array.make_();
|
|
1517
1509
|
while(ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "function")) {
|
|
1518
1510
|
if(self_.lspHook_.trackSymbols_) {
|
|
1519
1511
|
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolBegin())
|
|
@@ -1522,13 +1514,13 @@ const functionAt_ = ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_rawSkip
|
|
|
1522
1514
|
const signature_ = ff_compiler_Parser.Parser_parseSignature(self_, false);
|
|
1523
1515
|
const body_ = ((ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_) && (!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "{")))
|
|
1524
1516
|
? (function() {
|
|
1525
|
-
const temporaryEffect_ = ff_compiler_Syntax.TConstructor(functionAt_, "TemporaryEffect$",
|
|
1526
|
-
return ff_compiler_Syntax.Lambda(functionAt_, temporaryEffect_,
|
|
1517
|
+
const temporaryEffect_ = ff_compiler_Syntax.TConstructor(functionAt_, "TemporaryEffect$", []);
|
|
1518
|
+
return ff_compiler_Syntax.Lambda(functionAt_, temporaryEffect_, [])
|
|
1527
1519
|
})()
|
|
1528
1520
|
: ff_compiler_Parser.Parser_parseLambda(self_, ff_core_List.List_size(signature_.parameters_), false, false));
|
|
1529
|
-
|
|
1521
|
+
ff_core_Array.Array_push(functions_, ff_compiler_Syntax.DFunction(signature_.at_, signature_, ff_compiler_Syntax.FireflyTarget(body_)));
|
|
1530
1522
|
if(self_.lspHook_.trackSymbols_) {
|
|
1531
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(signature_.name_,
|
|
1523
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(signature_.name_, ff_compiler_LspHook.SFunction(false), signature_.at_, (((_c) => {
|
|
1532
1524
|
return ff_compiler_Syntax.Location(_c.file_, _c.line_, (signature_.at_.column_ + ff_core_String.String_size(signature_.name_)))
|
|
1533
1525
|
}))(signature_.at_), functionAt_, ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
|
|
1534
1526
|
};
|
|
@@ -1539,7 +1531,7 @@ ff_compiler_Parser.Parser_skipSeparator(self_, ff_compiler_Token.LSemicolon())
|
|
|
1539
1531
|
}
|
|
1540
1532
|
};
|
|
1541
1533
|
const body_ = ff_compiler_Parser.Parser_parseStatements(self_);
|
|
1542
|
-
return ff_compiler_Syntax.EFunctions(at_,
|
|
1534
|
+
return ff_compiler_Syntax.EFunctions(at_, ff_core_Array.Array_toList(functions_, 0, 9007199254740991), body_)
|
|
1543
1535
|
}
|
|
1544
1536
|
|
|
1545
1537
|
export function Parser_parseTerm(self_) {
|
|
@@ -1547,10 +1539,10 @@ return ff_compiler_Parser.Parser_parseBinary(self_, 0)
|
|
|
1547
1539
|
}
|
|
1548
1540
|
|
|
1549
1541
|
export function Parser_parseBinary(self_, level_) {
|
|
1550
|
-
if((level_ >=
|
|
1542
|
+
if((level_ >= ff_core_List.List_size(ff_compiler_Parser.binaryOperators_))) {
|
|
1551
1543
|
return ff_compiler_Parser.Parser_parseUnary(self_)
|
|
1552
1544
|
} else {
|
|
1553
|
-
const operators_ =
|
|
1545
|
+
const operators_ = ff_core_List.List_grab(ff_compiler_Parser.binaryOperators_, level_);
|
|
1554
1546
|
let result_ = ff_compiler_Parser.Parser_parseBinary(self_, (level_ + 1));
|
|
1555
1547
|
if(ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LOperator())) {
|
|
1556
1548
|
while(ff_core_List.List_any(operators_, ((value_) => {
|
|
@@ -1558,41 +1550,41 @@ return ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), v
|
|
|
1558
1550
|
}))) {
|
|
1559
1551
|
const token_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LOperator());
|
|
1560
1552
|
const right_ = ff_compiler_Parser.Parser_parseBinary(self_, (level_ + 1));
|
|
1561
|
-
const arguments_ =
|
|
1553
|
+
const arguments_ = [ff_compiler_Syntax.Argument(result_.at_, ff_core_Option.None(), result_), ff_compiler_Syntax.Argument(right_.at_, ff_core_Option.None(), right_)];
|
|
1562
1554
|
const effect_ = ff_compiler_Parser.Parser_freshUnificationVariable(self_, ff_compiler_Token.Token_at(token_));
|
|
1563
1555
|
const target_ = (((_1) => {
|
|
1564
1556
|
{
|
|
1565
|
-
if(_1
|
|
1557
|
+
if(_1 === "==") {
|
|
1566
1558
|
return ff_compiler_Syntax.DynamicCall(ff_compiler_Syntax.EVariable(ff_compiler_Token.Token_at(token_), "ff:core/Equal.equals"), false)
|
|
1567
1559
|
return
|
|
1568
1560
|
}
|
|
1569
1561
|
}
|
|
1570
1562
|
{
|
|
1571
|
-
if(_1
|
|
1563
|
+
if(_1 === "!=") {
|
|
1572
1564
|
return ff_compiler_Syntax.DynamicCall(ff_compiler_Syntax.EVariable(ff_compiler_Token.Token_at(token_), "ff:core/Equal.notEquals"), false)
|
|
1573
1565
|
return
|
|
1574
1566
|
}
|
|
1575
1567
|
}
|
|
1576
1568
|
{
|
|
1577
|
-
if(_1
|
|
1569
|
+
if(_1 === "<") {
|
|
1578
1570
|
return ff_compiler_Syntax.DynamicCall(ff_compiler_Syntax.EVariable(ff_compiler_Token.Token_at(token_), "ff:core/Ordering.before"), false)
|
|
1579
1571
|
return
|
|
1580
1572
|
}
|
|
1581
1573
|
}
|
|
1582
1574
|
{
|
|
1583
|
-
if(_1
|
|
1575
|
+
if(_1 === "<=") {
|
|
1584
1576
|
return ff_compiler_Syntax.DynamicCall(ff_compiler_Syntax.EVariable(ff_compiler_Token.Token_at(token_), "ff:core/Ordering.notAfter"), false)
|
|
1585
1577
|
return
|
|
1586
1578
|
}
|
|
1587
1579
|
}
|
|
1588
1580
|
{
|
|
1589
|
-
if(_1
|
|
1581
|
+
if(_1 === ">") {
|
|
1590
1582
|
return ff_compiler_Syntax.DynamicCall(ff_compiler_Syntax.EVariable(ff_compiler_Token.Token_at(token_), "ff:core/Ordering.after"), false)
|
|
1591
1583
|
return
|
|
1592
1584
|
}
|
|
1593
1585
|
}
|
|
1594
1586
|
{
|
|
1595
|
-
if(_1
|
|
1587
|
+
if(_1 === ">=") {
|
|
1596
1588
|
return ff_compiler_Syntax.DynamicCall(ff_compiler_Syntax.EVariable(ff_compiler_Token.Token_at(token_), "ff:core/Ordering.notBefore"), false)
|
|
1597
1589
|
return
|
|
1598
1590
|
}
|
|
@@ -1603,7 +1595,7 @@ return ff_compiler_Syntax.DynamicCall(ff_compiler_Syntax.EVariable(ff_compiler_T
|
|
|
1603
1595
|
return
|
|
1604
1596
|
}
|
|
1605
1597
|
}))(ff_compiler_Token.Token_raw(token_));
|
|
1606
|
-
result_ = ff_compiler_Syntax.ECall(ff_compiler_Token.Token_at(token_), target_, effect_,
|
|
1598
|
+
result_ = ff_compiler_Syntax.ECall(ff_compiler_Token.Token_at(token_), target_, effect_, [], arguments_, [])
|
|
1607
1599
|
}
|
|
1608
1600
|
};
|
|
1609
1601
|
return result_
|
|
@@ -1616,7 +1608,7 @@ const token_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LOperator
|
|
|
1616
1608
|
const term_ = ff_compiler_Parser.Parser_parseUnary(self_);
|
|
1617
1609
|
const effect_ = ff_compiler_Parser.Parser_freshUnificationVariable(self_, ff_compiler_Token.Token_at(token_));
|
|
1618
1610
|
const target_ = ff_compiler_Syntax.DynamicCall(ff_compiler_Syntax.EVariable(ff_compiler_Token.Token_at(token_), ff_compiler_Token.Token_raw(token_)), false);
|
|
1619
|
-
return ff_compiler_Syntax.ECall(ff_compiler_Token.Token_at(token_), target_, effect_,
|
|
1611
|
+
return ff_compiler_Syntax.ECall(ff_compiler_Token.Token_at(token_), target_, effect_, [], [ff_compiler_Syntax.Argument(term_.at_, ff_core_Option.None(), term_)], [])
|
|
1620
1612
|
} else {
|
|
1621
1613
|
return ff_compiler_Parser.Parser_parseFieldsAndCalls(self_)
|
|
1622
1614
|
}
|
|
@@ -1646,12 +1638,12 @@ result_ = ff_compiler_Syntax.EField(ff_compiler_Token.Token_at(token_), false, r
|
|
|
1646
1638
|
} else {
|
|
1647
1639
|
const at_ = ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_));
|
|
1648
1640
|
const typeArguments_ = ((!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "["))
|
|
1649
|
-
?
|
|
1641
|
+
? []
|
|
1650
1642
|
: ff_compiler_Parser.Parser_parseTypeArguments(self_, false));
|
|
1651
1643
|
const arguments_ = ff_compiler_Parser.Parser_parseFunctionArguments(self_, result_.at_, true);
|
|
1652
1644
|
const effect_ = ff_compiler_Parser.Parser_freshUnificationVariable(self_, at_);
|
|
1653
1645
|
const target_ = ff_compiler_Syntax.DynamicCall(result_, tailCall_);
|
|
1654
|
-
result_ = ff_compiler_Syntax.ECall(result_.at_, target_, effect_, typeArguments_, arguments_.first_,
|
|
1646
|
+
result_ = ff_compiler_Syntax.ECall(result_.at_, target_, effect_, typeArguments_, arguments_.first_, []);
|
|
1655
1647
|
if((arguments_.second_ && ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LLower()))) {
|
|
1656
1648
|
const token_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LLower());
|
|
1657
1649
|
result_ = ff_compiler_Syntax.EField(ff_compiler_Token.Token_at(token_), false, result_, ff_compiler_Token.Token_raw(token_))
|
|
@@ -1723,7 +1715,7 @@ export function Parser_parseVariant(self_, prefix_) {
|
|
|
1723
1715
|
const token_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LUpper());
|
|
1724
1716
|
const name_ = (prefix_ + ff_compiler_Token.Token_raw(token_));
|
|
1725
1717
|
const typeArguments_ = ((!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "["))
|
|
1726
|
-
?
|
|
1718
|
+
? []
|
|
1727
1719
|
: ff_compiler_Parser.Parser_parseTypeArguments(self_, false));
|
|
1728
1720
|
if(ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "?")) {
|
|
1729
1721
|
ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LOperator());
|
|
@@ -1747,13 +1739,13 @@ const prefix_ = (namespace_ + extraNamespace_);
|
|
|
1747
1739
|
const token_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LUpper());
|
|
1748
1740
|
const name_ = (prefix_ + ff_compiler_Token.Token_raw(token_));
|
|
1749
1741
|
const fields_ = ((ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_) && (!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "(")))
|
|
1750
|
-
?
|
|
1742
|
+
? []
|
|
1751
1743
|
: ff_compiler_Parser.Parser_parseRecord(self_, ff_core_Option.Some(ff_compiler_Token.Token_at(token_))));
|
|
1752
1744
|
return ff_compiler_Syntax.ECopy(ff_compiler_Token.Token_at(token_), name_, record_, fields_)
|
|
1753
1745
|
}
|
|
1754
1746
|
|
|
1755
1747
|
export function Parser_parseRecord(self_, copyAt_) {
|
|
1756
|
-
const fields_ =
|
|
1748
|
+
const fields_ = ff_core_Array.make_();
|
|
1757
1749
|
const startBracketAt_ = ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketLeft(), "("));
|
|
1758
1750
|
const startAt_ = ff_core_Option.Option_else(copyAt_, (() => {
|
|
1759
1751
|
return startBracketAt_
|
|
@@ -1768,57 +1760,57 @@ return ff_compiler_Syntax.Field(ff_compiler_Token.Token_at(fieldToken_), ff_comp
|
|
|
1768
1760
|
: ff_compiler_Syntax.Field(ff_compiler_Token.Token_at(fieldToken_), ff_compiler_Token.Token_raw(fieldToken_), ff_compiler_Syntax.EVariable(ff_compiler_Token.Token_at(fieldToken_), ff_compiler_Token.Token_raw(fieldToken_))));
|
|
1769
1761
|
if((ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_) && (!self_.lspEmittedArgumentHook_))) {
|
|
1770
1762
|
if(ff_compiler_LspHook.strictlyBetween_(startAt_, ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), self_.lspHook_.at_, 1)) {
|
|
1771
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseArgumentHook(startAt_,
|
|
1763
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseArgumentHook(startAt_, ff_core_Array.Array_size(fields_), ff_core_Option.Option_filter(ff_core_Option.Some(field_.name_), ((_w1) => {
|
|
1772
1764
|
return (_w1 !== "")
|
|
1773
1765
|
}))));
|
|
1774
1766
|
self_.lspEmittedArgumentHook_ = true
|
|
1775
1767
|
}
|
|
1776
1768
|
};
|
|
1777
|
-
|
|
1769
|
+
ff_core_Array.Array_push(fields_, field_);
|
|
1778
1770
|
if((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
|
|
1779
1771
|
ff_compiler_Parser.Parser_skipSeparator(self_, ff_compiler_Token.LComma())
|
|
1780
1772
|
}
|
|
1781
1773
|
};
|
|
1782
1774
|
if((ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_) && (!self_.lspEmittedArgumentHook_))) {
|
|
1783
1775
|
if(ff_compiler_LspHook.strictlyBetween_(startAt_, ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), self_.lspHook_.at_, 1)) {
|
|
1784
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseArgumentHook(startAt_,
|
|
1776
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseArgumentHook(startAt_, ff_core_Array.Array_size(fields_), ff_core_Option.None()));
|
|
1785
1777
|
self_.lspEmittedArgumentHook_ = true
|
|
1786
1778
|
}
|
|
1787
1779
|
};
|
|
1788
1780
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketRight(), ")");
|
|
1789
|
-
return
|
|
1781
|
+
return ff_core_Array.Array_toList(fields_, 0, 9007199254740991)
|
|
1790
1782
|
}
|
|
1791
1783
|
|
|
1792
1784
|
export function Parser_parseRecordType(self_) {
|
|
1793
|
-
const fields_ =
|
|
1785
|
+
const fields_ = ff_core_Array.make_();
|
|
1794
1786
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketLeft(), "(");
|
|
1795
1787
|
while((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
|
|
1796
1788
|
const fieldToken_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LLower());
|
|
1797
1789
|
ff_compiler_Parser.Parser_skipSeparator(self_, ff_compiler_Token.LColon());
|
|
1798
|
-
|
|
1790
|
+
ff_core_Array.Array_push(fields_, ff_core_Pair.Pair(ff_compiler_Token.Token_raw(fieldToken_), ff_compiler_Parser.Parser_parseType(self_)));
|
|
1799
1791
|
if((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
|
|
1800
1792
|
ff_compiler_Parser.Parser_skipSeparator(self_, ff_compiler_Token.LComma())
|
|
1801
1793
|
}
|
|
1802
1794
|
};
|
|
1803
1795
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketRight(), ")");
|
|
1804
|
-
return ff_core_List.List_sortBy(
|
|
1796
|
+
return ff_core_List.List_sortBy(ff_core_Array.Array_toList(fields_, 0, 9007199254740991), ((_w1) => {
|
|
1805
1797
|
return _w1.first_
|
|
1806
1798
|
}), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String)
|
|
1807
1799
|
}
|
|
1808
1800
|
|
|
1809
1801
|
export function Parser_parseRecordPattern(self_) {
|
|
1810
|
-
const fields_ =
|
|
1802
|
+
const fields_ = ff_core_Array.make_();
|
|
1811
1803
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketLeft(), "(");
|
|
1812
1804
|
while((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
|
|
1813
1805
|
const fieldToken_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LLower());
|
|
1814
1806
|
ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LAssign());
|
|
1815
|
-
|
|
1807
|
+
ff_core_Array.Array_push(fields_, ff_core_Pair.Pair(ff_compiler_Token.Token_raw(fieldToken_), ff_compiler_Parser.Parser_parsePattern(self_)));
|
|
1816
1808
|
if((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
|
|
1817
1809
|
ff_compiler_Parser.Parser_skipSeparator(self_, ff_compiler_Token.LComma())
|
|
1818
1810
|
}
|
|
1819
1811
|
};
|
|
1820
1812
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketRight(), ")");
|
|
1821
|
-
return ff_core_List.List_sortBy(
|
|
1813
|
+
return ff_core_List.List_sortBy(ff_core_Array.Array_toList(fields_, 0, 9007199254740991), ((_w1) => {
|
|
1822
1814
|
return _w1.first_
|
|
1823
1815
|
}), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String)
|
|
1824
1816
|
}
|
|
@@ -1829,26 +1821,26 @@ function convertListPattern_(at_, items_) {
|
|
|
1829
1821
|
const at_a = at_;
|
|
1830
1822
|
const items_a = items_;
|
|
1831
1823
|
{
|
|
1832
|
-
if(items_a.
|
|
1833
|
-
return ff_compiler_Syntax.PVariant(at_, "
|
|
1824
|
+
if(items_a.length === 0) {
|
|
1825
|
+
return ff_compiler_Syntax.PVariant(at_, "List$Empty", [])
|
|
1834
1826
|
return
|
|
1835
1827
|
}
|
|
1836
1828
|
}
|
|
1837
1829
|
{
|
|
1838
|
-
if(items_a.
|
|
1839
|
-
const p_ = items_a.
|
|
1840
|
-
if(!items_a.
|
|
1841
|
-
const ps_ = items_a.
|
|
1842
|
-
return ff_compiler_Syntax.PVariant(at_, "
|
|
1830
|
+
if(items_a.length > 0) {
|
|
1831
|
+
const p_ = items_a[0].first_;
|
|
1832
|
+
if(!items_a[0].second_) {
|
|
1833
|
+
const ps_ = items_a.slice(1);
|
|
1834
|
+
return ff_compiler_Syntax.PVariant(at_, "List$Link", [p_, convertListPattern_(at_, ps_)])
|
|
1843
1835
|
return
|
|
1844
1836
|
}
|
|
1845
1837
|
}
|
|
1846
1838
|
}
|
|
1847
1839
|
{
|
|
1848
|
-
if(items_a.
|
|
1849
|
-
const p_ = items_a.
|
|
1850
|
-
if(items_a.
|
|
1851
|
-
if(items_a.
|
|
1840
|
+
if(items_a.length > 0) {
|
|
1841
|
+
const p_ = items_a[0].first_;
|
|
1842
|
+
if(items_a[0].second_) {
|
|
1843
|
+
if(items_a.length === 1) {
|
|
1852
1844
|
return p_
|
|
1853
1845
|
return
|
|
1854
1846
|
}
|
|
@@ -1856,9 +1848,9 @@ return
|
|
|
1856
1848
|
}
|
|
1857
1849
|
}
|
|
1858
1850
|
{
|
|
1859
|
-
if(items_a.
|
|
1860
|
-
const p_ = items_a.
|
|
1861
|
-
if(items_a.
|
|
1851
|
+
if(items_a.length > 0) {
|
|
1852
|
+
const p_ = items_a[0].first_;
|
|
1853
|
+
if(items_a[0].second_) {
|
|
1862
1854
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(p_.at_, "Invalid pattern: ... is only allowed for the last element in a list"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
1863
1855
|
return
|
|
1864
1856
|
}
|
|
@@ -1866,7 +1858,7 @@ return
|
|
|
1866
1858
|
}
|
|
1867
1859
|
}
|
|
1868
1860
|
}
|
|
1869
|
-
const items_ =
|
|
1861
|
+
const items_ = ff_core_Array.make_();
|
|
1870
1862
|
const at_ = ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketLeft(), "["));
|
|
1871
1863
|
while((!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "]"))) {
|
|
1872
1864
|
const spread_ = ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LDotDotDot());
|
|
@@ -1876,30 +1868,30 @@ ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LDotDotDot())
|
|
|
1876
1868
|
const pattern_ = ((spread_ && ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "]"))
|
|
1877
1869
|
? ff_compiler_Syntax.PVariable(ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), ff_core_Option.None())
|
|
1878
1870
|
: ff_compiler_Parser.Parser_parsePattern(self_));
|
|
1879
|
-
|
|
1871
|
+
ff_core_Array.Array_push(items_, ff_core_Pair.Pair(pattern_, spread_));
|
|
1880
1872
|
if((!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "]"))) {
|
|
1881
1873
|
ff_compiler_Parser.Parser_skipSeparator(self_, ff_compiler_Token.LComma())
|
|
1882
1874
|
}
|
|
1883
1875
|
};
|
|
1884
1876
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketRight(), "]");
|
|
1885
|
-
return convertListPattern_(at_,
|
|
1877
|
+
return convertListPattern_(at_, ff_core_Array.Array_toList(items_, 0, 9007199254740991))
|
|
1886
1878
|
}
|
|
1887
1879
|
|
|
1888
1880
|
export function Parser_parseList(self_) {
|
|
1889
|
-
const items_ =
|
|
1881
|
+
const items_ = ff_core_Array.make_();
|
|
1890
1882
|
const at_ = ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketLeft(), "["));
|
|
1891
1883
|
while((!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "]"))) {
|
|
1892
1884
|
const spread_ = ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LDotDotDot());
|
|
1893
1885
|
if(spread_) {
|
|
1894
1886
|
ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LDotDotDot())
|
|
1895
1887
|
};
|
|
1896
|
-
|
|
1888
|
+
ff_core_Array.Array_push(items_, ff_core_Pair.Pair(ff_compiler_Parser.Parser_parseTerm(self_), spread_));
|
|
1897
1889
|
if((!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "]"))) {
|
|
1898
1890
|
ff_compiler_Parser.Parser_skipSeparator(self_, ff_compiler_Token.LComma())
|
|
1899
1891
|
}
|
|
1900
1892
|
};
|
|
1901
1893
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketRight(), "]");
|
|
1902
|
-
return ff_compiler_Syntax.EList(at_, ff_compiler_Parser.Parser_freshUnificationVariable(self_, at_),
|
|
1894
|
+
return ff_compiler_Syntax.EList(at_, ff_compiler_Parser.Parser_freshUnificationVariable(self_, at_), ff_core_Array.Array_toList(items_, 0, 9007199254740991))
|
|
1903
1895
|
}
|
|
1904
1896
|
|
|
1905
1897
|
export async function Parser_fail$(self_, at_, message_, $task) {
|
|
@@ -1910,8 +1902,8 @@ export async function Parser_behind$(self_, $task) {
|
|
|
1910
1902
|
if((self_.offset_ === 0)) {
|
|
1911
1903
|
return ff_compiler_Parser.Parser_current(self_)
|
|
1912
1904
|
} else {
|
|
1913
|
-
if(((self_.offset_ - 1) <
|
|
1914
|
-
return
|
|
1905
|
+
if(((self_.offset_ - 1) < ff_core_List.List_size(self_.tokens_))) {
|
|
1906
|
+
return ff_core_List.List_grab(self_.tokens_, (self_.offset_ - 1))
|
|
1915
1907
|
} else {
|
|
1916
1908
|
return self_.end_
|
|
1917
1909
|
}
|
|
@@ -1919,24 +1911,24 @@ return self_.end_
|
|
|
1919
1911
|
}
|
|
1920
1912
|
|
|
1921
1913
|
export async function Parser_current$(self_, $task) {
|
|
1922
|
-
if((self_.offset_ <
|
|
1923
|
-
return
|
|
1914
|
+
if((self_.offset_ < ff_core_List.List_size(self_.tokens_))) {
|
|
1915
|
+
return ff_core_List.List_grab(self_.tokens_, self_.offset_)
|
|
1924
1916
|
} else {
|
|
1925
1917
|
return self_.end_
|
|
1926
1918
|
}
|
|
1927
1919
|
}
|
|
1928
1920
|
|
|
1929
1921
|
export async function Parser_ahead$(self_, $task) {
|
|
1930
|
-
if(((self_.offset_ + 1) <
|
|
1931
|
-
return
|
|
1922
|
+
if(((self_.offset_ + 1) < ff_core_List.List_size(self_.tokens_))) {
|
|
1923
|
+
return ff_core_List.List_grab(self_.tokens_, (self_.offset_ + 1))
|
|
1932
1924
|
} else {
|
|
1933
1925
|
return self_.end_
|
|
1934
1926
|
}
|
|
1935
1927
|
}
|
|
1936
1928
|
|
|
1937
1929
|
export async function Parser_aheadAhead$(self_, $task) {
|
|
1938
|
-
if(((self_.offset_ + 2) <
|
|
1939
|
-
return
|
|
1930
|
+
if(((self_.offset_ + 2) < ff_core_List.List_size(self_.tokens_))) {
|
|
1931
|
+
return ff_core_List.List_grab(self_.tokens_, (self_.offset_ + 2))
|
|
1940
1932
|
} else {
|
|
1941
1933
|
return self_.end_
|
|
1942
1934
|
}
|
|
@@ -2023,46 +2015,46 @@ return p_
|
|
|
2023
2015
|
if((ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LKeyword()) && ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "package"))) {
|
|
2024
2016
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), "Duplicate package definition"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
2025
2017
|
};
|
|
2026
|
-
const dependencies_ =
|
|
2018
|
+
const dependencies_ = ff_core_Array.make_();
|
|
2027
2019
|
while((ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LKeyword()) && ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "dependency"))) {
|
|
2028
|
-
|
|
2020
|
+
ff_core_Array.Array_push(dependencies_, ff_compiler_Parser.Parser_parseDependencyDefinition(self_, package_.targets_));
|
|
2029
2021
|
if((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LEnd()))) {
|
|
2030
2022
|
ff_compiler_Parser.Parser_skipSeparator(self_, ff_compiler_Token.LSemicolon())
|
|
2031
2023
|
}
|
|
2032
2024
|
};
|
|
2033
|
-
const includes_ =
|
|
2025
|
+
const includes_ = ff_core_Array.make_();
|
|
2034
2026
|
while((ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LKeyword()) && ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "include"))) {
|
|
2035
|
-
|
|
2027
|
+
ff_core_Array.Array_push(includes_, ff_compiler_Parser.Parser_parseIncludeDefinition(self_));
|
|
2036
2028
|
if((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LEnd()))) {
|
|
2037
2029
|
ff_compiler_Parser.Parser_skipSeparator(self_, ff_compiler_Token.LSemicolon())
|
|
2038
2030
|
}
|
|
2039
2031
|
};
|
|
2040
|
-
return ff_compiler_Syntax.PackageInfo(package_,
|
|
2032
|
+
return ff_compiler_Syntax.PackageInfo(package_, ff_core_Array.Array_toList(dependencies_, 0, 9007199254740991), ff_core_Array.Array_toList(includes_, 0, 9007199254740991))
|
|
2041
2033
|
}
|
|
2042
2034
|
|
|
2043
2035
|
export async function Parser_parseModule$(self_, $task) {
|
|
2044
|
-
const imports_ =
|
|
2045
|
-
const types_ =
|
|
2046
|
-
const traits_ =
|
|
2047
|
-
const instances_ =
|
|
2048
|
-
const extends_ =
|
|
2049
|
-
const lets_ =
|
|
2050
|
-
const functions_ =
|
|
2036
|
+
const imports_ = ff_core_Array.make_();
|
|
2037
|
+
const types_ = ff_core_Array.make_();
|
|
2038
|
+
const traits_ = ff_core_Array.make_();
|
|
2039
|
+
const instances_ = ff_core_Array.make_();
|
|
2040
|
+
const extends_ = ff_core_Array.make_();
|
|
2041
|
+
const lets_ = ff_core_Array.make_();
|
|
2042
|
+
const functions_ = ff_core_Array.make_();
|
|
2051
2043
|
while((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LEnd()))) {
|
|
2052
2044
|
if((ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LLower()) && (ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_ahead(self_), ff_compiler_Token.LAssign()) || ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_ahead(self_), ff_compiler_Token.LColon())))) {
|
|
2053
|
-
|
|
2045
|
+
ff_core_Array.Array_push(lets_, ff_compiler_Parser.Parser_parseLetDefinition(self_))
|
|
2054
2046
|
} else if(ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LLower())) {
|
|
2055
|
-
|
|
2047
|
+
ff_core_Array.Array_push(functions_, ff_compiler_Parser.Parser_parseFunctionDefinition(self_, false))
|
|
2056
2048
|
} else if((ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LKeyword()) && ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "extend"))) {
|
|
2057
|
-
|
|
2049
|
+
ff_core_Array.Array_push(extends_, ff_compiler_Parser.Parser_parseExtendDefinition(self_))
|
|
2058
2050
|
} else if((ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LKeyword()) && ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "trait"))) {
|
|
2059
|
-
|
|
2051
|
+
ff_core_Array.Array_push(traits_, ff_compiler_Parser.Parser_parseTraitDefinition(self_))
|
|
2060
2052
|
} else if((ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LKeyword()) && ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "instance"))) {
|
|
2061
|
-
|
|
2053
|
+
ff_core_Array.Array_push(instances_, ff_compiler_Parser.Parser_parseInstanceDefinition(self_))
|
|
2062
2054
|
} else if((ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LKeyword()) && ff_compiler_Token.Token_rawIs4(ff_compiler_Parser.Parser_current(self_), "data", "class", "capability", "newtype"))) {
|
|
2063
|
-
|
|
2055
|
+
ff_core_Array.Array_push(types_, ff_compiler_Parser.Parser_parseTypeDefinition(self_))
|
|
2064
2056
|
} else if((ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LKeyword()) && ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "import"))) {
|
|
2065
|
-
|
|
2057
|
+
ff_core_Array.Array_push(imports_, ff_compiler_Parser.Parser_parseImportDefinition(self_, self_.packagePair_))
|
|
2066
2058
|
} else if((ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LKeyword()) && ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "include"))) {
|
|
2067
2059
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), "Includes must be at the top of the file or below 'package'"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
2068
2060
|
} else if((ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LKeyword()) && ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "dependency"))) {
|
|
@@ -2076,7 +2068,7 @@ if((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_com
|
|
|
2076
2068
|
ff_compiler_Parser.Parser_skipSeparator(self_, ff_compiler_Token.LSemicolon())
|
|
2077
2069
|
}
|
|
2078
2070
|
};
|
|
2079
|
-
return ff_compiler_Syntax.Module(self_.file_, self_.packagePair_,
|
|
2071
|
+
return ff_compiler_Syntax.Module(self_.file_, self_.packagePair_, ff_core_Array.Array_toList(imports_, 0, 9007199254740991), ff_core_Array.Array_toList(types_, 0, 9007199254740991), ff_core_Array.Array_toList(traits_, 0, 9007199254740991), ff_core_Array.Array_toList(instances_, 0, 9007199254740991), ff_core_Array.Array_toList(extends_, 0, 9007199254740991), ff_core_Array.Array_toList(lets_, 0, 9007199254740991), ff_core_Array.Array_toList(functions_, 0, 9007199254740991))
|
|
2080
2072
|
}
|
|
2081
2073
|
|
|
2082
2074
|
export async function Parser_parseLetDefinition$(self_, $task) {
|
|
@@ -2094,7 +2086,7 @@ ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LAssign());
|
|
|
2094
2086
|
const value_ = ff_compiler_Parser.Parser_parseTerm(self_);
|
|
2095
2087
|
const retult_ = ff_compiler_Syntax.DLet(ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_raw(nameToken_), variableType_, value_);
|
|
2096
2088
|
if(self_.lspHook_.trackSymbols_) {
|
|
2097
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(nameToken_),
|
|
2089
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(nameToken_), ff_compiler_LspHook.SLet(false), ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_end(nameToken_), ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
|
|
2098
2090
|
};
|
|
2099
2091
|
return retult_
|
|
2100
2092
|
}
|
|
@@ -2111,10 +2103,7 @@ const targets_ = ff_compiler_Parser.Parser_parseTargets(self_, ff_core_List.List
|
|
|
2111
2103
|
const bestTarget_ = ff_compiler_Parser.findBestTarget_(self_.targetIsNode_, body_, targets_);
|
|
2112
2104
|
const result_ = ff_compiler_Syntax.DFunction(signature_.at_, signature_, bestTarget_);
|
|
2113
2105
|
if(self_.lspHook_.trackSymbols_) {
|
|
2114
|
-
|
|
2115
|
-
? 6
|
|
2116
|
-
: 12);
|
|
2117
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(signature_.name_, kind_, signature_.at_, (((_c) => {
|
|
2106
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(signature_.name_, ff_compiler_LspHook.SFunction(member_), signature_.at_, (((_c) => {
|
|
2118
2107
|
return ff_compiler_Syntax.Location(_c.file_, _c.line_, (signature_.at_.column_ + ff_core_String.String_size(signature_.name_)))
|
|
2119
2108
|
}))(signature_.at_), signature_.at_, ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
|
|
2120
2109
|
};
|
|
@@ -2140,7 +2129,7 @@ const lambda_ = ff_compiler_Parser.Parser_parseLambda(self_, parameterCount_, fa
|
|
|
2140
2129
|
do {
|
|
2141
2130
|
const _1 = target_;
|
|
2142
2131
|
{
|
|
2143
|
-
if(_1
|
|
2132
|
+
if(_1 === "js") {
|
|
2144
2133
|
if(ff_core_Equal.notEquals_(targets_.jsSync_, ff_core_Option.None(), ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String))) {
|
|
2145
2134
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, "Duplicate target definition"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
2146
2135
|
};
|
|
@@ -2151,7 +2140,7 @@ break
|
|
|
2151
2140
|
}
|
|
2152
2141
|
}
|
|
2153
2142
|
{
|
|
2154
|
-
if(_1
|
|
2143
|
+
if(_1 === "browser") {
|
|
2155
2144
|
if(ff_core_Equal.notEquals_(targets_.browserSync_, ff_core_Option.None(), ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String))) {
|
|
2156
2145
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, "Duplicate target definition"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
2157
2146
|
};
|
|
@@ -2162,7 +2151,7 @@ break
|
|
|
2162
2151
|
}
|
|
2163
2152
|
}
|
|
2164
2153
|
{
|
|
2165
|
-
if(_1
|
|
2154
|
+
if(_1 === "node") {
|
|
2166
2155
|
if(ff_core_Equal.notEquals_(targets_.nodeAsync_, ff_core_Option.None(), ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String))) {
|
|
2167
2156
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, "Duplicate target definition"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
2168
2157
|
};
|
|
@@ -2183,8 +2172,8 @@ const code_ = processCode_(ff_compiler_Token.Token_raw(ff_compiler_Parser.Parser
|
|
|
2183
2172
|
do {
|
|
2184
2173
|
const _1 = ff_core_Pair.Pair(target_, mode_);
|
|
2185
2174
|
{
|
|
2186
|
-
if(_1.first_
|
|
2187
|
-
if(_1.second_
|
|
2175
|
+
if(_1.first_ === "js") {
|
|
2176
|
+
if(_1.second_ === "sync") {
|
|
2188
2177
|
if(ff_core_Equal.notEquals_(targets_.jsSync_, ff_core_Option.None(), ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String))) {
|
|
2189
2178
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, "Duplicate target definition"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
2190
2179
|
};
|
|
@@ -2196,8 +2185,8 @@ break
|
|
|
2196
2185
|
}
|
|
2197
2186
|
}
|
|
2198
2187
|
{
|
|
2199
|
-
if(_1.first_
|
|
2200
|
-
if(_1.second_
|
|
2188
|
+
if(_1.first_ === "js") {
|
|
2189
|
+
if(_1.second_ === "async") {
|
|
2201
2190
|
if(ff_core_Equal.notEquals_(targets_.jsAsync_, ff_core_Option.None(), ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String))) {
|
|
2202
2191
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, "Duplicate target definition"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
2203
2192
|
};
|
|
@@ -2209,8 +2198,8 @@ break
|
|
|
2209
2198
|
}
|
|
2210
2199
|
}
|
|
2211
2200
|
{
|
|
2212
|
-
if(_1.first_
|
|
2213
|
-
if(_1.second_
|
|
2201
|
+
if(_1.first_ === "browser") {
|
|
2202
|
+
if(_1.second_ === "sync") {
|
|
2214
2203
|
if(ff_core_Equal.notEquals_(targets_.browserSync_, ff_core_Option.None(), ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String))) {
|
|
2215
2204
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, "Duplicate target definition"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
2216
2205
|
};
|
|
@@ -2222,8 +2211,8 @@ break
|
|
|
2222
2211
|
}
|
|
2223
2212
|
}
|
|
2224
2213
|
{
|
|
2225
|
-
if(_1.first_
|
|
2226
|
-
if(_1.second_
|
|
2214
|
+
if(_1.first_ === "browser") {
|
|
2215
|
+
if(_1.second_ === "async") {
|
|
2227
2216
|
if(ff_core_Equal.notEquals_(targets_.browserAsync_, ff_core_Option.None(), ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String))) {
|
|
2228
2217
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, "Duplicate target definition"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
2229
2218
|
};
|
|
@@ -2235,8 +2224,8 @@ break
|
|
|
2235
2224
|
}
|
|
2236
2225
|
}
|
|
2237
2226
|
{
|
|
2238
|
-
if(_1.first_
|
|
2239
|
-
if(_1.second_
|
|
2227
|
+
if(_1.first_ === "node") {
|
|
2228
|
+
if(_1.second_ === "sync") {
|
|
2240
2229
|
if(ff_core_Equal.notEquals_(targets_.nodeSync_, ff_core_Option.None(), ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String))) {
|
|
2241
2230
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, "Duplicate target definition"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
2242
2231
|
};
|
|
@@ -2248,8 +2237,8 @@ break
|
|
|
2248
2237
|
}
|
|
2249
2238
|
}
|
|
2250
2239
|
{
|
|
2251
|
-
if(_1.first_
|
|
2252
|
-
if(_1.second_
|
|
2240
|
+
if(_1.first_ === "node") {
|
|
2241
|
+
if(_1.second_ === "async") {
|
|
2253
2242
|
if(ff_core_Equal.notEquals_(targets_.nodeAsync_, ff_core_Option.None(), ff_core_Option.ff_core_Equal_Equal$ff_core_Option_Option(ff_core_Equal.ff_core_Equal_Equal$ff_core_String_String))) {
|
|
2254
2243
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(at_, "Duplicate target definition"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
2255
2244
|
};
|
|
@@ -2274,17 +2263,17 @@ export async function Parser_parseSignature$(self_, member_, $task) {
|
|
|
2274
2263
|
const nameToken_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LLower());
|
|
2275
2264
|
const poly_ = (ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "[")
|
|
2276
2265
|
? ff_compiler_Parser.Parser_parseTypeParameters(self_)
|
|
2277
|
-
: ff_compiler_Parser.Poly(
|
|
2266
|
+
: ff_compiler_Parser.Poly([], []));
|
|
2278
2267
|
const parameters_ = ((ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_) && (!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "(")))
|
|
2279
|
-
?
|
|
2268
|
+
? []
|
|
2280
2269
|
: ff_compiler_Parser.Parser_parseFunctionParameters(self_, false));
|
|
2281
2270
|
const returnType_ = (ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LColon())
|
|
2282
2271
|
? (await (async function() {
|
|
2283
2272
|
ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LColon());
|
|
2284
2273
|
return ff_compiler_Parser.Parser_parseType(self_)
|
|
2285
2274
|
})())
|
|
2286
|
-
: ff_compiler_Syntax.TConstructor(ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), "ff:core/Unit.Unit",
|
|
2287
|
-
const temporaryEffect_ = ff_compiler_Syntax.TConstructor(ff_compiler_Token.Token_at(nameToken_), "TemporaryEffect$",
|
|
2275
|
+
: ff_compiler_Syntax.TConstructor(ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), "ff:core/Unit.Unit", []));
|
|
2276
|
+
const temporaryEffect_ = ff_compiler_Syntax.TConstructor(ff_compiler_Token.Token_at(nameToken_), "TemporaryEffect$", []);
|
|
2288
2277
|
return ff_compiler_Syntax.Signature(ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_raw(nameToken_), member_, poly_.generics_, poly_.constraints_, parameters_, returnType_, temporaryEffect_)
|
|
2289
2278
|
}
|
|
2290
2279
|
|
|
@@ -2296,20 +2285,20 @@ const extendToken_ = ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.
|
|
|
2296
2285
|
const nameToken_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LLower());
|
|
2297
2286
|
const poly_ = (ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "[")
|
|
2298
2287
|
? ff_compiler_Parser.Parser_parseTypeParameters(self_)
|
|
2299
|
-
: ff_compiler_Parser.Poly(
|
|
2288
|
+
: ff_compiler_Parser.Poly([], []));
|
|
2300
2289
|
ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LColon());
|
|
2301
2290
|
const type_ = ff_compiler_Parser.Parser_parseType(self_);
|
|
2302
2291
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketLeft(), "{");
|
|
2303
|
-
const methods_ =
|
|
2292
|
+
const methods_ = ff_core_Array.make_();
|
|
2304
2293
|
while((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
|
|
2305
|
-
|
|
2294
|
+
ff_core_Array.Array_push(methods_, ff_compiler_Parser.Parser_parseFunctionDefinition(self_, true));
|
|
2306
2295
|
if((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
|
|
2307
2296
|
ff_compiler_Parser.Parser_skipSeparator(self_, ff_compiler_Token.LSemicolon())
|
|
2308
2297
|
}
|
|
2309
2298
|
};
|
|
2310
2299
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketRight(), "}");
|
|
2311
2300
|
if(self_.lspHook_.trackSymbols_) {
|
|
2312
|
-
let name_ = ff_compiler_Syntax.Type_show(type_,
|
|
2301
|
+
let name_ = ff_compiler_Syntax.Type_show(type_, []);
|
|
2313
2302
|
ff_core_List.List_each(ff_core_List.List_zip(poly_.generics_, poly_.constraints_), ((_1) => {
|
|
2314
2303
|
{
|
|
2315
2304
|
const generic_ = _1.first_;
|
|
@@ -2321,9 +2310,9 @@ name_ = ff_core_String.String_replace(name_, ((", " + generic_) + "]"), ((((", "
|
|
|
2321
2310
|
return
|
|
2322
2311
|
}
|
|
2323
2312
|
}));
|
|
2324
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(name_,
|
|
2313
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(name_, ff_compiler_LspHook.SExtend(), ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_end(nameToken_), ff_compiler_Token.Token_at(extendToken_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
|
|
2325
2314
|
};
|
|
2326
|
-
return ff_compiler_Syntax.DExtend(ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_raw(nameToken_), poly_.generics_, poly_.constraints_, type_,
|
|
2315
|
+
return ff_compiler_Syntax.DExtend(ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_raw(nameToken_), poly_.generics_, poly_.constraints_, type_, ff_core_Array.Array_toList(methods_, 0, 9007199254740991))
|
|
2327
2316
|
}
|
|
2328
2317
|
|
|
2329
2318
|
export async function Parser_parseTraitDefinition$(self_, $task) {
|
|
@@ -2335,26 +2324,26 @@ const typeParameterToken_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_To
|
|
|
2335
2324
|
ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LColon());
|
|
2336
2325
|
const nameToken_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LUpper());
|
|
2337
2326
|
const poly_ = ((!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "["))
|
|
2338
|
-
? ff_compiler_Parser.Poly(
|
|
2327
|
+
? ff_compiler_Parser.Poly([], [])
|
|
2339
2328
|
: ff_compiler_Parser.Parser_parseTypeParameters(self_));
|
|
2340
|
-
const constraints_ =
|
|
2329
|
+
const constraints_ = ff_core_Array.make_();
|
|
2341
2330
|
while(ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LColon())) {
|
|
2342
2331
|
ff_compiler_Parser.Parser_fail(self_, ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), "Trait constraints is not yet implemented");
|
|
2343
2332
|
ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LColon());
|
|
2344
2333
|
const constraint_ = ff_compiler_Parser.Parser_parseConstraint(self_);
|
|
2345
|
-
|
|
2346
|
-
return ff_compiler_Syntax.Constraint(_c.at_, _c.name_,
|
|
2334
|
+
ff_core_Array.Array_push(constraints_, (((_c) => {
|
|
2335
|
+
return ff_compiler_Syntax.Constraint(_c.at_, _c.name_, [ff_compiler_Syntax.TConstructor(ff_compiler_Token.Token_at(typeParameterToken_), ff_compiler_Token.Token_raw(typeParameterToken_), []), ...constraint_.generics_])
|
|
2347
2336
|
}))(constraint_))
|
|
2348
2337
|
};
|
|
2349
2338
|
const generatorParameters_ = ((!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "("))
|
|
2350
|
-
?
|
|
2339
|
+
? []
|
|
2351
2340
|
: ff_compiler_Parser.Parser_parseFunctionParameters(self_, false));
|
|
2352
|
-
const methodGenerators_ =
|
|
2353
|
-
const methodDefaults_ =
|
|
2341
|
+
const methodGenerators_ = ff_core_Array.make_();
|
|
2342
|
+
const methodDefaults_ = ff_core_Array.make_();
|
|
2354
2343
|
const methodSignatures_ = ((!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "{"))
|
|
2355
|
-
?
|
|
2344
|
+
? []
|
|
2356
2345
|
: (await (async function() {
|
|
2357
|
-
const signatures_ =
|
|
2346
|
+
const signatures_ = ff_core_Array.make_();
|
|
2358
2347
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketLeft(), "{");
|
|
2359
2348
|
while((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
|
|
2360
2349
|
if(self_.lspHook_.trackSymbols_) {
|
|
@@ -2363,16 +2352,16 @@ ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbol
|
|
|
2363
2352
|
const signatureNameToken_ = ff_compiler_Parser.Parser_current(self_);
|
|
2364
2353
|
const signature_ = ff_compiler_Parser.Parser_parseSignature(self_, true);
|
|
2365
2354
|
if(self_.lspHook_.trackSymbols_) {
|
|
2366
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(signatureNameToken_),
|
|
2355
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(signatureNameToken_), ff_compiler_LspHook.STraitFunction(), ff_compiler_Token.Token_at(signatureNameToken_), ff_compiler_Token.Token_end(signatureNameToken_), ff_compiler_Token.Token_at(signatureNameToken_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
|
|
2367
2356
|
};
|
|
2368
|
-
|
|
2357
|
+
ff_core_Array.Array_push(signatures_, signature_);
|
|
2369
2358
|
if(ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "{")) {
|
|
2370
2359
|
const generator_ = (ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_ahead(self_), ff_compiler_Token.LKeyword()) && ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_ahead(self_), "generate"));
|
|
2371
2360
|
const body_ = ff_compiler_Parser.Parser_parseLambda(self_, ff_core_List.List_size(signature_.parameters_), true, false);
|
|
2372
2361
|
if(generator_) {
|
|
2373
|
-
|
|
2362
|
+
ff_core_Array.Array_push(methodGenerators_, ff_core_Pair.Pair(signature_.name_, body_))
|
|
2374
2363
|
} else {
|
|
2375
|
-
|
|
2364
|
+
ff_core_Array.Array_push(methodDefaults_, ff_core_Pair.Pair(signature_.name_, body_))
|
|
2376
2365
|
}
|
|
2377
2366
|
};
|
|
2378
2367
|
if((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
|
|
@@ -2380,12 +2369,12 @@ ff_compiler_Parser.Parser_skipSeparator(self_, ff_compiler_Token.LSemicolon())
|
|
|
2380
2369
|
}
|
|
2381
2370
|
};
|
|
2382
2371
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketRight(), "}");
|
|
2383
|
-
return
|
|
2372
|
+
return ff_core_Array.Array_toList(signatures_, 0, 9007199254740991)
|
|
2384
2373
|
})()));
|
|
2385
2374
|
if(self_.lspHook_.trackSymbols_) {
|
|
2386
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(nameToken_),
|
|
2375
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(nameToken_), ff_compiler_LspHook.STrait(), ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_end(nameToken_), ff_compiler_Token.Token_at(traitToken_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
|
|
2387
2376
|
};
|
|
2388
|
-
return ff_compiler_Syntax.DTrait(ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_raw(nameToken_),
|
|
2377
|
+
return ff_compiler_Syntax.DTrait(ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_raw(nameToken_), [ff_compiler_Token.Token_raw(typeParameterToken_), ...poly_.generics_], [...ff_core_Array.Array_toList(constraints_, 0, 9007199254740991), ...poly_.constraints_], generatorParameters_, methodSignatures_, ff_core_Array.Array_toList(methodDefaults_, 0, 9007199254740991), ff_core_Array.Array_toList(methodGenerators_, 0, 9007199254740991))
|
|
2389
2378
|
}
|
|
2390
2379
|
|
|
2391
2380
|
export async function Parser_parseInstanceDefinition$(self_, $task) {
|
|
@@ -2395,18 +2384,18 @@ ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbol
|
|
|
2395
2384
|
const instanceToken_ = ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LKeyword(), "instance");
|
|
2396
2385
|
const token_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LUpper());
|
|
2397
2386
|
const poly_ = ((!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "["))
|
|
2398
|
-
? ff_compiler_Parser.Poly(
|
|
2387
|
+
? ff_compiler_Parser.Poly([], [])
|
|
2399
2388
|
: ff_compiler_Parser.Parser_parseTypeParameters(self_));
|
|
2400
|
-
const typeArguments_ =
|
|
2401
|
-
|
|
2402
|
-
return ff_compiler_Syntax.TConstructor(ff_compiler_Token.Token_at(token_), _w1,
|
|
2389
|
+
const typeArguments_ = ff_core_Array.make_();
|
|
2390
|
+
ff_core_Array.Array_push(typeArguments_, ff_compiler_Syntax.TConstructor(ff_compiler_Token.Token_at(token_), ff_compiler_Token.Token_raw(token_), ff_core_List.List_map(poly_.generics_, ((_w1) => {
|
|
2391
|
+
return ff_compiler_Syntax.TConstructor(ff_compiler_Token.Token_at(token_), _w1, [])
|
|
2403
2392
|
}))));
|
|
2404
2393
|
ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LColon());
|
|
2405
2394
|
const nameToken_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LUpper());
|
|
2406
2395
|
if(ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "[")) {
|
|
2407
2396
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketLeft(), "[");
|
|
2408
2397
|
while((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
|
|
2409
|
-
|
|
2398
|
+
ff_core_Array.Array_push(typeArguments_, ff_compiler_Parser.Parser_parseType(self_));
|
|
2410
2399
|
if((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
|
|
2411
2400
|
ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LComma())
|
|
2412
2401
|
}
|
|
@@ -2415,24 +2404,24 @@ ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketRight(), "]")
|
|
|
2415
2404
|
};
|
|
2416
2405
|
const generatorArguments_ = ff_compiler_Parser.Parser_parseFunctionArguments(self_, ff_compiler_Token.Token_at(nameToken_), false).first_;
|
|
2417
2406
|
const methods_ = ((!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "{"))
|
|
2418
|
-
?
|
|
2407
|
+
? []
|
|
2419
2408
|
: (await (async function() {
|
|
2420
|
-
const definitions_ =
|
|
2409
|
+
const definitions_ = ff_core_Array.make_();
|
|
2421
2410
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketLeft(), "{");
|
|
2422
2411
|
while((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
|
|
2423
|
-
|
|
2412
|
+
ff_core_Array.Array_push(definitions_, ff_compiler_Parser.Parser_parseFunctionDefinition(self_, false));
|
|
2424
2413
|
if((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
|
|
2425
2414
|
ff_compiler_Parser.Parser_skipSeparator(self_, ff_compiler_Token.LSemicolon())
|
|
2426
2415
|
}
|
|
2427
2416
|
};
|
|
2428
2417
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketRight(), "}");
|
|
2429
|
-
return
|
|
2418
|
+
return ff_core_Array.Array_toList(definitions_, 0, 9007199254740991)
|
|
2430
2419
|
})()));
|
|
2431
2420
|
if(self_.lspHook_.trackSymbols_) {
|
|
2432
2421
|
const name_ = ((ff_compiler_Token.Token_raw(token_) + ": ") + ff_compiler_Token.Token_raw(nameToken_));
|
|
2433
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(name_,
|
|
2422
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(name_, ff_compiler_LspHook.SInstance(), ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_end(nameToken_), ff_compiler_Token.Token_at(instanceToken_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
|
|
2434
2423
|
};
|
|
2435
|
-
return ff_compiler_Syntax.DInstance(ff_compiler_Token.Token_at(nameToken_), poly_.generics_, poly_.constraints_, ff_compiler_Token.Token_raw(nameToken_),
|
|
2424
|
+
return ff_compiler_Syntax.DInstance(ff_compiler_Token.Token_at(nameToken_), poly_.generics_, poly_.constraints_, ff_compiler_Token.Token_raw(nameToken_), ff_core_Array.Array_toList(typeArguments_, 0, 9007199254740991), generatorArguments_, methods_, false)
|
|
2436
2425
|
}
|
|
2437
2426
|
|
|
2438
2427
|
export async function Parser_parseTypeDefinition$(self_, $task) {
|
|
@@ -2441,8 +2430,8 @@ ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbol
|
|
|
2441
2430
|
};
|
|
2442
2431
|
const newtype_ = ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "newtype");
|
|
2443
2432
|
const effectParameter_ = (ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "capability")
|
|
2444
|
-
?
|
|
2445
|
-
:
|
|
2433
|
+
? ["Q$"]
|
|
2434
|
+
: []);
|
|
2446
2435
|
const allowMutable_ = ff_compiler_Token.Token_rawIs2(ff_compiler_Parser.Parser_current(self_), "class", "capability");
|
|
2447
2436
|
const kindToken_ = (ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "newtype")
|
|
2448
2437
|
? ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LKeyword(), "newtype")
|
|
@@ -2453,26 +2442,26 @@ const kindToken_ = (ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_curr
|
|
|
2453
2442
|
: ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LKeyword(), "capability"));
|
|
2454
2443
|
const nameToken_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LUpper());
|
|
2455
2444
|
const poly_ = ((!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "["))
|
|
2456
|
-
? ff_compiler_Parser.Poly(
|
|
2445
|
+
? ff_compiler_Parser.Poly([], [])
|
|
2457
2446
|
: ff_compiler_Parser.Parser_parseTypeParameters(self_));
|
|
2458
2447
|
if(((!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "(")) && (!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "{")))) {
|
|
2459
2448
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketLeft(), "{")
|
|
2460
2449
|
};
|
|
2461
2450
|
const commonFields_ = ((!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "("))
|
|
2462
|
-
?
|
|
2451
|
+
? []
|
|
2463
2452
|
: ff_compiler_Parser.Parser_parseFunctionParameters(self_, true));
|
|
2464
2453
|
const variants_ = ((newtype_ || (!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "{")))
|
|
2465
|
-
?
|
|
2454
|
+
? [ff_compiler_Syntax.Variant(ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_raw(nameToken_), [])]
|
|
2466
2455
|
: (await (async function() {
|
|
2467
2456
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketLeft(), "{");
|
|
2468
|
-
const variantsBuilder_ =
|
|
2457
|
+
const variantsBuilder_ = ff_core_Array.make_();
|
|
2469
2458
|
while((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
|
|
2470
2459
|
if(self_.lspHook_.trackSymbols_) {
|
|
2471
2460
|
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolBegin())
|
|
2472
2461
|
};
|
|
2473
2462
|
const variantNameToken_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LUpper());
|
|
2474
2463
|
const variantFields_ = ((!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "("))
|
|
2475
|
-
?
|
|
2464
|
+
? []
|
|
2476
2465
|
: ff_compiler_Parser.Parser_parseFunctionParameters(self_, true));
|
|
2477
2466
|
if(((!allowMutable_) && ff_core_List.List_any(variantFields_, ((_w1) => {
|
|
2478
2467
|
return _w1.mutable_
|
|
@@ -2481,16 +2470,16 @@ throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Sy
|
|
|
2481
2470
|
return _w1.mutable_
|
|
2482
2471
|
}))).at_, "Only classes can have mutable fields"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
2483
2472
|
};
|
|
2484
|
-
|
|
2473
|
+
ff_core_Array.Array_push(variantsBuilder_, ff_compiler_Syntax.Variant(ff_compiler_Token.Token_at(variantNameToken_), ff_compiler_Token.Token_raw(variantNameToken_), variantFields_));
|
|
2485
2474
|
if((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
|
|
2486
2475
|
ff_compiler_Parser.Parser_skipSeparator(self_, ff_compiler_Token.LSemicolon())
|
|
2487
2476
|
};
|
|
2488
2477
|
if(self_.lspHook_.trackSymbols_) {
|
|
2489
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(variantNameToken_),
|
|
2478
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(variantNameToken_), ff_compiler_LspHook.SVariant(), ff_compiler_Token.Token_at(variantNameToken_), ff_compiler_Token.Token_end(variantNameToken_), ff_compiler_Token.Token_at(variantNameToken_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
|
|
2490
2479
|
}
|
|
2491
2480
|
};
|
|
2492
2481
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketRight(), "}");
|
|
2493
|
-
return
|
|
2482
|
+
return ff_core_Array.Array_toList(variantsBuilder_, 0, 9007199254740991)
|
|
2494
2483
|
})()));
|
|
2495
2484
|
if((newtype_ && (ff_core_List.List_size(commonFields_) !== 1))) {
|
|
2496
2485
|
ff_core_Log.show_(commonFields_, ff_core_Show.ff_core_Show_Show$ff_core_List_List(ff_compiler_Syntax.ff_core_Show_Show$ff_compiler_Syntax_Parameter));
|
|
@@ -2503,19 +2492,19 @@ throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Sy
|
|
|
2503
2492
|
return _w1.mutable_
|
|
2504
2493
|
}))).at_, "Only classes and capabilities can have mutable fields"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
2505
2494
|
};
|
|
2506
|
-
const generics_ =
|
|
2495
|
+
const generics_ = [...effectParameter_, ...poly_.generics_];
|
|
2507
2496
|
const result_ = ff_compiler_Syntax.DType(ff_compiler_Token.Token_at(nameToken_), newtype_, (!allowMutable_), ff_compiler_Token.Token_raw(nameToken_), generics_, poly_.constraints_, commonFields_, variants_);
|
|
2508
2497
|
if(self_.lspHook_.trackSymbols_) {
|
|
2509
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(nameToken_),
|
|
2498
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(nameToken_), ff_compiler_LspHook.SType(), ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_end(nameToken_), ff_compiler_Token.Token_at(kindToken_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
|
|
2510
2499
|
};
|
|
2511
2500
|
return result_
|
|
2512
2501
|
}
|
|
2513
2502
|
|
|
2514
2503
|
export async function Parser_parseImportDefinition$(self_, currentPackagePair_, $task) {
|
|
2515
2504
|
const importToken_ = ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LKeyword(), "import");
|
|
2516
|
-
const path_ =
|
|
2505
|
+
const path_ = ff_core_Array.make_();
|
|
2517
2506
|
while(ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LLower())) {
|
|
2518
|
-
|
|
2507
|
+
ff_core_Array.Array_push(path_, ff_compiler_Parser.Parser_parseDashedName(self_));
|
|
2519
2508
|
ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LDot())
|
|
2520
2509
|
};
|
|
2521
2510
|
const fileToken_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LUpper());
|
|
@@ -2534,7 +2523,7 @@ const packageName_ = ff_compiler_Parser.Parser_parseDashedName(self_);
|
|
|
2534
2523
|
return ff_compiler_Syntax.PackagePair(userName_, packageName_)
|
|
2535
2524
|
})())
|
|
2536
2525
|
: currentPackagePair_);
|
|
2537
|
-
return ff_compiler_Syntax.DImport(ff_compiler_Token.Token_at(fileToken_), alias_, packagePair_,
|
|
2526
|
+
return ff_compiler_Syntax.DImport(ff_compiler_Token.Token_at(fileToken_), alias_, packagePair_, ff_core_Array.Array_toList(path_, 0, 9007199254740991), ff_compiler_Token.Token_raw(fileToken_))
|
|
2538
2527
|
}
|
|
2539
2528
|
|
|
2540
2529
|
export async function Parser_parsePackageDefinition$(self_, $task) {
|
|
@@ -2579,7 +2568,7 @@ const token_ = (ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(sel
|
|
|
2579
2568
|
do {
|
|
2580
2569
|
const _1 = ff_compiler_Token.Token_raw(token_);
|
|
2581
2570
|
{
|
|
2582
|
-
if(_1
|
|
2571
|
+
if(_1 === "node") {
|
|
2583
2572
|
const _guard1 = targets_.node_;
|
|
2584
2573
|
if(_guard1) {
|
|
2585
2574
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(token_), "Duplicate target name"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
@@ -2588,7 +2577,7 @@ break
|
|
|
2588
2577
|
}
|
|
2589
2578
|
}
|
|
2590
2579
|
{
|
|
2591
|
-
if(_1
|
|
2580
|
+
if(_1 === "node") {
|
|
2592
2581
|
targets_ = (((_c) => {
|
|
2593
2582
|
return ff_compiler_Syntax.TargetNames(true, _c.browser_)
|
|
2594
2583
|
}))(targets_)
|
|
@@ -2596,7 +2585,7 @@ break
|
|
|
2596
2585
|
}
|
|
2597
2586
|
}
|
|
2598
2587
|
{
|
|
2599
|
-
if(_1
|
|
2588
|
+
if(_1 === "browser") {
|
|
2600
2589
|
const _guard1 = targets_.browser_;
|
|
2601
2590
|
if(_guard1) {
|
|
2602
2591
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(ff_compiler_Token.Token_at(token_), "Duplicate target name"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
@@ -2605,7 +2594,7 @@ break
|
|
|
2605
2594
|
}
|
|
2606
2595
|
}
|
|
2607
2596
|
{
|
|
2608
|
-
if(_1
|
|
2597
|
+
if(_1 === "browser") {
|
|
2609
2598
|
targets_ = (((_c) => {
|
|
2610
2599
|
return ff_compiler_Syntax.TargetNames(_c.node_, true)
|
|
2611
2600
|
}))(targets_)
|
|
@@ -2636,7 +2625,7 @@ ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LDot());
|
|
|
2636
2625
|
return ff_core_String.String_grabInt(ff_compiler_Token.Token_raw(ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LInt())))
|
|
2637
2626
|
})())
|
|
2638
2627
|
: 0);
|
|
2639
|
-
return ff_compiler_Syntax.Version(ff_compiler_Token.Token_at(majorMinor_), ff_core_String.String_grabInt(
|
|
2628
|
+
return ff_compiler_Syntax.Version(ff_compiler_Token.Token_at(majorMinor_), ff_core_String.String_grabInt(ff_core_List.List_grab(parts_, 0)), ff_core_String.String_grabInt(ff_core_List.List_grab(parts_, 1)), patch_)
|
|
2640
2629
|
} else {
|
|
2641
2630
|
const major_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LInt());
|
|
2642
2631
|
return ff_compiler_Syntax.Version(ff_compiler_Token.Token_at(major_), ff_core_String.String_grabInt(ff_compiler_Token.Token_raw(major_)), 0, 0)
|
|
@@ -2679,19 +2668,19 @@ return part_
|
|
|
2679
2668
|
|
|
2680
2669
|
export async function Parser_parseTypeParameters$(self_, $task) {
|
|
2681
2670
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketLeft(), "[");
|
|
2682
|
-
const parameters_ =
|
|
2683
|
-
const constraints_ =
|
|
2671
|
+
const parameters_ = ff_core_Array.make_();
|
|
2672
|
+
const constraints_ = ff_core_Array.make_();
|
|
2684
2673
|
while(((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight())) && (!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LSemicolon())))) {
|
|
2685
2674
|
if(ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_ahead(self_), ff_compiler_Token.LBracketLeft())) {
|
|
2686
|
-
|
|
2675
|
+
ff_core_Array.Array_push(constraints_, ff_compiler_Parser.Parser_parseConstraint(self_))
|
|
2687
2676
|
} else {
|
|
2688
2677
|
const parameterNameToken_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LUpper());
|
|
2689
|
-
|
|
2678
|
+
ff_core_Array.Array_push(parameters_, ff_compiler_Token.Token_raw(parameterNameToken_));
|
|
2690
2679
|
while(ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LColon())) {
|
|
2691
2680
|
ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LColon());
|
|
2692
2681
|
const constraint_ = ff_compiler_Parser.Parser_parseConstraint(self_);
|
|
2693
|
-
|
|
2694
|
-
return ff_compiler_Syntax.Constraint(_c.at_, _c.name_,
|
|
2682
|
+
ff_core_Array.Array_push(constraints_, (((_c) => {
|
|
2683
|
+
return ff_compiler_Syntax.Constraint(_c.at_, _c.name_, [ff_compiler_Syntax.TConstructor(ff_compiler_Token.Token_at(parameterNameToken_), ff_compiler_Token.Token_raw(parameterNameToken_), []), ...constraint_.generics_])
|
|
2695
2684
|
}))(constraint_))
|
|
2696
2685
|
}
|
|
2697
2686
|
};
|
|
@@ -2700,16 +2689,16 @@ ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LComma())
|
|
|
2700
2689
|
}
|
|
2701
2690
|
};
|
|
2702
2691
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketRight(), "]");
|
|
2703
|
-
return ff_compiler_Parser.Poly(
|
|
2692
|
+
return ff_compiler_Parser.Poly(ff_core_Array.Array_toList(parameters_, 0, 9007199254740991), ff_core_Array.Array_toList(constraints_, 0, 9007199254740991))
|
|
2704
2693
|
}
|
|
2705
2694
|
|
|
2706
2695
|
export async function Parser_parseTypeArguments$(self_, parenthesis_ = false, $task) {
|
|
2707
2696
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketLeft(), (parenthesis_
|
|
2708
2697
|
? "("
|
|
2709
2698
|
: "["));
|
|
2710
|
-
const types_ =
|
|
2699
|
+
const types_ = ff_core_Array.make_();
|
|
2711
2700
|
while((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
|
|
2712
|
-
|
|
2701
|
+
ff_core_Array.Array_push(types_, ff_compiler_Parser.Parser_parseType(self_));
|
|
2713
2702
|
if((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
|
|
2714
2703
|
ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LComma())
|
|
2715
2704
|
}
|
|
@@ -2717,11 +2706,11 @@ ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LComma())
|
|
|
2717
2706
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketRight(), (parenthesis_
|
|
2718
2707
|
? ")"
|
|
2719
2708
|
: "]"));
|
|
2720
|
-
return
|
|
2709
|
+
return ff_core_Array.Array_toList(types_, 0, 9007199254740991)
|
|
2721
2710
|
}
|
|
2722
2711
|
|
|
2723
2712
|
export async function Parser_parseFunctionParameters$(self_, allowMutable_ = false, $task) {
|
|
2724
|
-
const parameters_ =
|
|
2713
|
+
const parameters_ = ff_core_Array.make_();
|
|
2725
2714
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketLeft(), "(");
|
|
2726
2715
|
while((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
|
|
2727
2716
|
const lspTrackSymbols_ = (self_.lspHook_.trackSymbols_ && allowMutable_);
|
|
@@ -2735,8 +2724,8 @@ ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LKeyword())
|
|
|
2735
2724
|
};
|
|
2736
2725
|
const parameterNameToken_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LLower());
|
|
2737
2726
|
if((ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_) && (!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LColon())))) {
|
|
2738
|
-
const t_ = ff_compiler_Syntax.TConstructor(ff_compiler_Token.Token_at(parameterNameToken_), "ff:core/Nothing.Nothing",
|
|
2739
|
-
|
|
2727
|
+
const t_ = ff_compiler_Syntax.TConstructor(ff_compiler_Token.Token_at(parameterNameToken_), "ff:core/Nothing.Nothing", []);
|
|
2728
|
+
ff_core_Array.Array_push(parameters_, ff_compiler_Syntax.Parameter(ff_compiler_Token.Token_at(parameterNameToken_), mutable_, ff_compiler_Token.Token_raw(parameterNameToken_), t_, ff_core_Option.None()));
|
|
2740
2729
|
if((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
|
|
2741
2730
|
ff_compiler_Parser.Parser_skipSeparator(self_, ff_compiler_Token.LComma())
|
|
2742
2731
|
}
|
|
@@ -2749,9 +2738,9 @@ const default_ = ((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current
|
|
|
2749
2738
|
ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LAssign());
|
|
2750
2739
|
return ff_core_Option.Some(ff_compiler_Parser.Parser_parseTerm(self_))
|
|
2751
2740
|
})()));
|
|
2752
|
-
|
|
2741
|
+
ff_core_Array.Array_push(parameters_, ff_compiler_Syntax.Parameter(ff_compiler_Token.Token_at(parameterNameToken_), mutable_, ff_compiler_Token.Token_raw(parameterNameToken_), parameterType_, default_));
|
|
2753
2742
|
if(lspTrackSymbols_) {
|
|
2754
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(parameterNameToken_),
|
|
2743
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(parameterNameToken_), ff_compiler_LspHook.SParameter(), ff_compiler_Token.Token_at(parameterNameToken_), ff_compiler_Token.Token_end(parameterNameToken_), ff_compiler_Token.Token_at(lspFirst_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
|
|
2755
2744
|
};
|
|
2756
2745
|
if((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
|
|
2757
2746
|
ff_compiler_Parser.Parser_skipSeparator(self_, ff_compiler_Token.LComma())
|
|
@@ -2759,11 +2748,11 @@ ff_compiler_Parser.Parser_skipSeparator(self_, ff_compiler_Token.LComma())
|
|
|
2759
2748
|
}
|
|
2760
2749
|
};
|
|
2761
2750
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketRight(), ")");
|
|
2762
|
-
return
|
|
2751
|
+
return ff_core_Array.Array_toList(parameters_, 0, 9007199254740991)
|
|
2763
2752
|
}
|
|
2764
2753
|
|
|
2765
2754
|
export async function Parser_parseFunctionArguments$(self_, callAt_, trailing_, $task) {
|
|
2766
|
-
const arguments_ =
|
|
2755
|
+
const arguments_ = ff_core_Array.make_();
|
|
2767
2756
|
if(ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "(")) {
|
|
2768
2757
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketLeft(), "(");
|
|
2769
2758
|
while((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
|
|
@@ -2778,13 +2767,13 @@ return ff_core_Option.Some(token_)
|
|
|
2778
2767
|
const value_ = ff_compiler_Parser.Parser_parseTerm(self_);
|
|
2779
2768
|
if((ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_) && (!self_.lspEmittedArgumentHook_))) {
|
|
2780
2769
|
if(ff_compiler_LspHook.strictlyBetween_(callAt_, ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), self_.lspHook_.at_, 1)) {
|
|
2781
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseArgumentHook(callAt_,
|
|
2770
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseArgumentHook(callAt_, ff_core_Array.Array_size(arguments_), ff_core_Option.Option_map(nameToken_, ((_w1) => {
|
|
2782
2771
|
return ff_compiler_Token.Token_raw(_w1)
|
|
2783
2772
|
}))));
|
|
2784
2773
|
self_.lspEmittedArgumentHook_ = true
|
|
2785
2774
|
}
|
|
2786
2775
|
};
|
|
2787
|
-
|
|
2776
|
+
ff_core_Array.Array_push(arguments_, ff_compiler_Syntax.Argument(ff_compiler_Token.Token_at(argumentToken_), ff_core_Option.Option_map(nameToken_, ((_w1) => {
|
|
2788
2777
|
return ff_compiler_Token.Token_raw(_w1)
|
|
2789
2778
|
})), value_));
|
|
2790
2779
|
if((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
|
|
@@ -2793,7 +2782,7 @@ ff_compiler_Parser.Parser_skipSeparator(self_, ff_compiler_Token.LComma())
|
|
|
2793
2782
|
};
|
|
2794
2783
|
if((ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_) && (!self_.lspEmittedArgumentHook_))) {
|
|
2795
2784
|
if(ff_compiler_LspHook.strictlyBetween_(callAt_, ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), self_.lspHook_.at_, 1)) {
|
|
2796
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseArgumentHook(callAt_,
|
|
2785
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseArgumentHook(callAt_, ff_core_Array.Array_size(arguments_), ff_core_Option.None()));
|
|
2797
2786
|
self_.lspEmittedArgumentHook_ = true
|
|
2798
2787
|
}
|
|
2799
2788
|
};
|
|
@@ -2804,30 +2793,30 @@ if(trailing_) {
|
|
|
2804
2793
|
if((ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_) && (ff_compiler_Token.Token_is3(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LLower(), ff_compiler_Token.LUpper(), ff_compiler_Token.LString()) || ff_compiler_Token.Token_is3(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LInt(), ff_compiler_Token.LChar(), ff_compiler_Token.LFloat())))) {
|
|
2805
2794
|
lastWasCurly_ = true;
|
|
2806
2795
|
const term_ = ff_compiler_Parser.Parser_parseTerm(self_);
|
|
2807
|
-
const temporaryEffect_ = ff_compiler_Syntax.TConstructor(term_.at_, "TemporaryEffect$",
|
|
2808
|
-
const cases_ =
|
|
2796
|
+
const temporaryEffect_ = ff_compiler_Syntax.TConstructor(term_.at_, "TemporaryEffect$", []);
|
|
2797
|
+
const cases_ = [ff_compiler_Syntax.MatchCase(term_.at_, [], [], term_)];
|
|
2809
2798
|
if((ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_) && (!self_.lspEmittedArgumentHook_))) {
|
|
2810
2799
|
if(ff_compiler_LspHook.strictlyBetween_(callAt_, ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), self_.lspHook_.at_, 1)) {
|
|
2811
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseArgumentHook(callAt_,
|
|
2800
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseArgumentHook(callAt_, ff_core_Array.Array_size(arguments_), ff_core_Option.None()));
|
|
2812
2801
|
self_.lspEmittedArgumentHook_ = true
|
|
2813
2802
|
}
|
|
2814
2803
|
};
|
|
2815
|
-
|
|
2804
|
+
ff_core_Array.Array_push(arguments_, ff_compiler_Syntax.Argument(term_.at_, ff_core_Option.None(), ff_compiler_Syntax.ELambda(term_.at_, ff_compiler_Syntax.Lambda(term_.at_, temporaryEffect_, cases_))))
|
|
2816
2805
|
} else {
|
|
2817
2806
|
while((ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "{") || ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LColon()))) {
|
|
2818
2807
|
lastWasCurly_ = ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "{");
|
|
2819
2808
|
const lambda_ = ff_compiler_Parser.Parser_parseLambda(self_, 0, false, true);
|
|
2820
2809
|
if((ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_) && (!self_.lspEmittedArgumentHook_))) {
|
|
2821
2810
|
if(ff_compiler_LspHook.strictlyBetween_(callAt_, ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), self_.lspHook_.at_, 1)) {
|
|
2822
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseArgumentHook(callAt_,
|
|
2811
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseArgumentHook(callAt_, ff_core_Array.Array_size(arguments_), ff_core_Option.None()));
|
|
2823
2812
|
self_.lspEmittedArgumentHook_ = true
|
|
2824
2813
|
}
|
|
2825
2814
|
};
|
|
2826
|
-
|
|
2815
|
+
ff_core_Array.Array_push(arguments_, ff_compiler_Syntax.Argument(lambda_.at_, ff_core_Option.None(), ff_compiler_Syntax.ELambda(lambda_.at_, lambda_)))
|
|
2827
2816
|
}
|
|
2828
2817
|
}
|
|
2829
2818
|
};
|
|
2830
|
-
return ff_core_Pair.Pair(
|
|
2819
|
+
return ff_core_Pair.Pair(ff_core_Array.Array_toList(arguments_, 0, 9007199254740991), lastWasCurly_)
|
|
2831
2820
|
}
|
|
2832
2821
|
|
|
2833
2822
|
export async function Parser_parseLambda$(self_, defaultParameterCount_ = 0, ignoreGenerateKeyword_ = false, allowColon_ = false, $task) {
|
|
@@ -2840,21 +2829,21 @@ ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LKeyword())
|
|
|
2840
2829
|
};
|
|
2841
2830
|
const result_ = (ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LPipe())
|
|
2842
2831
|
? (await (async function() {
|
|
2843
|
-
const cases_ =
|
|
2832
|
+
const cases_ = ff_core_Array.make_();
|
|
2844
2833
|
while(ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LPipe())) {
|
|
2845
|
-
|
|
2834
|
+
ff_core_Array.Array_push(cases_, ff_compiler_Parser.Parser_parseCase(self_))
|
|
2846
2835
|
};
|
|
2847
|
-
return
|
|
2836
|
+
return ff_core_Array.Array_toList(cases_, 0, 9007199254740991)
|
|
2848
2837
|
})())
|
|
2849
2838
|
: (ff_compiler_Token.Token_is2(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LLower(), ff_compiler_Token.LWildcard()) && ff_compiler_Token.Token_is2(ff_compiler_Parser.Parser_ahead(self_), ff_compiler_Token.LComma(), ff_compiler_Token.LArrowThick()))
|
|
2850
2839
|
? (await (async function() {
|
|
2851
|
-
const parameters_ =
|
|
2840
|
+
const parameters_ = ff_core_Array.make_();
|
|
2852
2841
|
while((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LArrowThick()))) {
|
|
2853
2842
|
const isVariable_ = ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LLower());
|
|
2854
2843
|
const parameterToken_ = (isVariable_
|
|
2855
2844
|
? ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LLower())
|
|
2856
2845
|
: ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LWildcard()));
|
|
2857
|
-
|
|
2846
|
+
ff_core_Array.Array_push(parameters_, ff_compiler_Syntax.PVariable(ff_compiler_Token.Token_at(parameterToken_), (isVariable_
|
|
2858
2847
|
? ff_core_Option.Some(ff_compiler_Token.Token_raw(parameterToken_))
|
|
2859
2848
|
: ff_core_Option.None())));
|
|
2860
2849
|
if((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LArrowThick()))) {
|
|
@@ -2863,7 +2852,7 @@ ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LComma())
|
|
|
2863
2852
|
};
|
|
2864
2853
|
ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LArrowThick());
|
|
2865
2854
|
const term_ = ff_compiler_Parser.Parser_parseStatements(self_);
|
|
2866
|
-
return
|
|
2855
|
+
return [ff_compiler_Syntax.MatchCase(ff_compiler_Token.Token_at(token_), ff_core_Array.Array_toList(parameters_, 0, 9007199254740991), [], term_)]
|
|
2867
2856
|
})())
|
|
2868
2857
|
: (await (async function() {
|
|
2869
2858
|
const term_ = ff_compiler_Parser.Parser_parseStatements(self_);
|
|
@@ -2876,40 +2865,40 @@ return ff_compiler_Syntax.PVariable(ff_compiler_Token.Token_at(token_), ff_core_
|
|
|
2876
2865
|
: ff_core_List.List_map(ff_core_List.range_(defaultParameterCount_), ((i_) => {
|
|
2877
2866
|
return ff_compiler_Syntax.PVariable(ff_compiler_Token.Token_at(token_), ff_core_Option.None())
|
|
2878
2867
|
})));
|
|
2879
|
-
return
|
|
2868
|
+
return [ff_compiler_Syntax.MatchCase(ff_compiler_Token.Token_at(token_), arguments_, [], e_)]
|
|
2880
2869
|
})()));
|
|
2881
2870
|
if((!colon_)) {
|
|
2882
2871
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketRight(), "}")
|
|
2883
2872
|
};
|
|
2884
|
-
const temporaryEffect_ = ff_compiler_Syntax.TConstructor(ff_compiler_Token.Token_at(token_), "TemporaryEffect$",
|
|
2873
|
+
const temporaryEffect_ = ff_compiler_Syntax.TConstructor(ff_compiler_Token.Token_at(token_), "TemporaryEffect$", []);
|
|
2885
2874
|
return ff_compiler_Syntax.Lambda(ff_compiler_Token.Token_at(token_), temporaryEffect_, result_)
|
|
2886
2875
|
}
|
|
2887
2876
|
|
|
2888
2877
|
export async function Parser_parseCase$(self_, $task) {
|
|
2889
2878
|
const token_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LPipe());
|
|
2890
|
-
const patterns_ =
|
|
2879
|
+
const patterns_ = ff_core_Array.make_();
|
|
2891
2880
|
while(((!ff_compiler_Token.Token_is3(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LArrowThick(), ff_compiler_Token.LPipe(), ff_compiler_Token.LBracketRight())) && (!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "{")))) {
|
|
2892
|
-
|
|
2881
|
+
ff_core_Array.Array_push(patterns_, ff_compiler_Parser.Parser_parsePattern(self_));
|
|
2893
2882
|
if(((!ff_compiler_Token.Token_is3(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LArrowThick(), ff_compiler_Token.LPipe(), ff_compiler_Token.LBracketRight())) && (!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "{")))) {
|
|
2894
2883
|
ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LComma())
|
|
2895
2884
|
}
|
|
2896
2885
|
};
|
|
2897
|
-
const guards_ =
|
|
2886
|
+
const guards_ = ff_core_Array.make_();
|
|
2898
2887
|
while(ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "{")) {
|
|
2899
|
-
|
|
2888
|
+
ff_core_Array.Array_push(guards_, ff_compiler_Parser.Parser_parseCaseGuard(self_))
|
|
2900
2889
|
};
|
|
2901
2890
|
if(((!ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_)) || (!ff_compiler_Token.Token_is2(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LPipe(), ff_compiler_Token.LBracketRight())))) {
|
|
2902
2891
|
ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LArrowThick())
|
|
2903
2892
|
};
|
|
2904
2893
|
const body_ = ff_compiler_Parser.Parser_parseStatements(self_);
|
|
2905
|
-
return ff_compiler_Syntax.MatchCase(ff_compiler_Token.Token_at(token_),
|
|
2894
|
+
return ff_compiler_Syntax.MatchCase(ff_compiler_Token.Token_at(token_), ff_core_Array.Array_toList(patterns_, 0, 9007199254740991), ff_core_Array.Array_toList(guards_, 0, 9007199254740991), body_)
|
|
2906
2895
|
}
|
|
2907
2896
|
|
|
2908
2897
|
export async function Parser_parseCaseGuard$(self_, $task) {
|
|
2909
2898
|
const guardToken_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LBracketLeft());
|
|
2910
2899
|
const term_ = ff_compiler_Parser.Parser_parseStatements(self_);
|
|
2911
2900
|
const p_ = ((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LPipe()))
|
|
2912
|
-
? ff_compiler_Syntax.PVariant(ff_compiler_Token.Token_at(guardToken_), "True",
|
|
2901
|
+
? ff_compiler_Syntax.PVariant(ff_compiler_Token.Token_at(guardToken_), "True", [])
|
|
2913
2902
|
: (await (async function() {
|
|
2914
2903
|
ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LPipe());
|
|
2915
2904
|
return ff_compiler_Parser.Parser_parsePattern(self_)
|
|
@@ -2955,29 +2944,29 @@ return ff_compiler_Syntax.PChar(ff_compiler_Token.Token_at(token_), ff_compiler_
|
|
|
2955
2944
|
: (await (async function() {
|
|
2956
2945
|
const token_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LUpper());
|
|
2957
2946
|
if(ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "(")) {
|
|
2958
|
-
const patterns_ =
|
|
2947
|
+
const patterns_ = ff_core_Array.make_();
|
|
2959
2948
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketLeft(), "(");
|
|
2960
2949
|
while((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
|
|
2961
2950
|
const pattern_ = ff_compiler_Parser.Parser_parsePattern(self_);
|
|
2962
2951
|
if((ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_) && (!self_.lspEmittedArgumentHook_))) {
|
|
2963
2952
|
if(ff_compiler_LspHook.strictlyBetween_(ff_compiler_Token.Token_at(token_), ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), self_.lspHook_.at_, 1)) {
|
|
2964
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseArgumentHook(ff_compiler_Token.Token_at(token_),
|
|
2953
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseArgumentHook(ff_compiler_Token.Token_at(token_), ff_core_Array.Array_size(patterns_), ff_core_Option.None()));
|
|
2965
2954
|
self_.lspEmittedArgumentHook_ = true
|
|
2966
2955
|
}
|
|
2967
2956
|
};
|
|
2968
|
-
|
|
2957
|
+
ff_core_Array.Array_push(patterns_, pattern_);
|
|
2969
2958
|
if((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
|
|
2970
2959
|
ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LComma())
|
|
2971
2960
|
}
|
|
2972
2961
|
};
|
|
2973
2962
|
if((ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_) && (!self_.lspEmittedArgumentHook_))) {
|
|
2974
2963
|
if(ff_compiler_LspHook.strictlyBetween_(ff_compiler_Token.Token_at(token_), ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), self_.lspHook_.at_, 1)) {
|
|
2975
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseArgumentHook(ff_compiler_Token.Token_at(token_),
|
|
2964
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseArgumentHook(ff_compiler_Token.Token_at(token_), ff_core_Array.Array_size(patterns_), ff_core_Option.None()));
|
|
2976
2965
|
self_.lspEmittedArgumentHook_ = true
|
|
2977
2966
|
}
|
|
2978
2967
|
};
|
|
2979
2968
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketRight(), ")");
|
|
2980
|
-
return ff_compiler_Syntax.PVariant(ff_compiler_Token.Token_at(token_), ff_compiler_Token.Token_raw(token_),
|
|
2969
|
+
return ff_compiler_Syntax.PVariant(ff_compiler_Token.Token_at(token_), ff_compiler_Token.Token_raw(token_), ff_core_Array.Array_toList(patterns_, 0, 9007199254740991))
|
|
2981
2970
|
} else {
|
|
2982
2971
|
if(ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LLower())) {
|
|
2983
2972
|
const asToken_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LLower());
|
|
@@ -2986,7 +2975,7 @@ return ff_compiler_Syntax.PVariantAs(ff_compiler_Token.Token_at(token_), ff_comp
|
|
|
2986
2975
|
const wildcardToken_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LWildcard());
|
|
2987
2976
|
return ff_compiler_Syntax.PVariantAs(ff_compiler_Token.Token_at(token_), ff_compiler_Token.Token_raw(token_), ff_compiler_Token.Token_at(wildcardToken_), ff_core_Option.None())
|
|
2988
2977
|
} else {
|
|
2989
|
-
return ff_compiler_Syntax.PVariant(ff_compiler_Token.Token_at(token_), ff_compiler_Token.Token_raw(token_),
|
|
2978
|
+
return ff_compiler_Syntax.PVariant(ff_compiler_Token.Token_at(token_), ff_compiler_Token.Token_raw(token_), [])
|
|
2990
2979
|
}
|
|
2991
2980
|
}
|
|
2992
2981
|
})()));
|
|
@@ -3004,7 +2993,7 @@ const leftTypes_ = (((ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_cu
|
|
|
3004
2993
|
? (await (async function() {
|
|
3005
2994
|
const at_ = ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_));
|
|
3006
2995
|
const pair_ = ff_core_List.List_unzip(ff_compiler_Parser.Parser_parseRecordType(self_));
|
|
3007
|
-
return
|
|
2996
|
+
return [ff_compiler_Syntax.TConstructor(at_, ("Record$" + ff_core_List.List_join(pair_.first_, "$")), pair_.second_)]
|
|
3008
2997
|
})())
|
|
3009
2998
|
: ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "(")
|
|
3010
2999
|
? ff_compiler_Parser.Parser_parseTypeArguments(self_, true)
|
|
@@ -3014,16 +3003,16 @@ const namespace_ = (ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current
|
|
|
3014
3003
|
: "");
|
|
3015
3004
|
const token_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LUpper());
|
|
3016
3005
|
const arguments_ = ((!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "["))
|
|
3017
|
-
?
|
|
3006
|
+
? []
|
|
3018
3007
|
: ff_compiler_Parser.Parser_parseTypeArguments(self_, false));
|
|
3019
|
-
return
|
|
3008
|
+
return [ff_compiler_Syntax.TConstructor(ff_compiler_Token.Token_at(token_), (namespace_ + ff_compiler_Token.Token_raw(token_)), arguments_)]
|
|
3020
3009
|
})()));
|
|
3021
3010
|
if(((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LArrowThick())) && (ff_core_List.List_size(leftTypes_) === 1))) {
|
|
3022
3011
|
return ff_core_List.List_grabFirst(leftTypes_)
|
|
3023
3012
|
} else {
|
|
3024
3013
|
const arrowToken_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LArrowThick());
|
|
3025
3014
|
const rightType_ = ff_compiler_Parser.Parser_parseType(self_);
|
|
3026
|
-
return ff_compiler_Syntax.TConstructor(ff_compiler_Token.Token_at(arrowToken_), ("Function$" + ff_core_List.List_size(leftTypes_)),
|
|
3015
|
+
return ff_compiler_Syntax.TConstructor(ff_compiler_Token.Token_at(arrowToken_), ("Function$" + ff_core_List.List_size(leftTypes_)), [...leftTypes_, rightType_])
|
|
3027
3016
|
}
|
|
3028
3017
|
}
|
|
3029
3018
|
|
|
@@ -3033,14 +3022,14 @@ const namespace_ = (ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current
|
|
|
3033
3022
|
: "");
|
|
3034
3023
|
const token_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LUpper());
|
|
3035
3024
|
const arguments_ = ((!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "["))
|
|
3036
|
-
?
|
|
3025
|
+
? []
|
|
3037
3026
|
: ff_compiler_Parser.Parser_parseTypeArguments(self_, false));
|
|
3038
3027
|
return ff_compiler_Syntax.Constraint(ff_compiler_Token.Token_at(token_), (namespace_ + ff_compiler_Token.Token_raw(token_)), arguments_)
|
|
3039
3028
|
}
|
|
3040
3029
|
|
|
3041
3030
|
export async function Parser_parseStatements$(self_, $task) {
|
|
3042
3031
|
if(ff_compiler_Token.Token_is2(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight(), ff_compiler_Token.LPipe())) {
|
|
3043
|
-
return ff_compiler_Syntax.EVariant(ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), "Unit",
|
|
3032
|
+
return ff_compiler_Syntax.EVariant(ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), "Unit", [], ff_core_Option.None())
|
|
3044
3033
|
} else {
|
|
3045
3034
|
let result_ = ff_compiler_Parser.Parser_parseStatement(self_);
|
|
3046
3035
|
while(ff_compiler_Parser.Parser_currentIsSeparator(self_, ff_compiler_Token.LSemicolon())) {
|
|
@@ -3123,30 +3112,27 @@ ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LColon());
|
|
|
3123
3112
|
return ff_compiler_Parser.Parser_parseType(self_)
|
|
3124
3113
|
})()));
|
|
3125
3114
|
if((ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_) && (!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LAssign())))) {
|
|
3126
|
-
const unit_ = ff_compiler_Syntax.EVariant(ff_compiler_Token.Token_at(keywordToken_), "Unit",
|
|
3115
|
+
const unit_ = ff_compiler_Syntax.EVariant(ff_compiler_Token.Token_at(keywordToken_), "Unit", [], ff_core_Option.None());
|
|
3127
3116
|
return ff_compiler_Syntax.ELet(ff_compiler_Token.Token_at(nameToken_), mutable_, ff_compiler_Token.Token_raw(nameToken_), valueType_, unit_, unit_)
|
|
3128
3117
|
} else {
|
|
3129
3118
|
ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LAssign());
|
|
3130
3119
|
const value_ = ff_compiler_Parser.Parser_parseTerm(self_);
|
|
3131
3120
|
if(self_.lspHook_.trackSymbols_) {
|
|
3132
|
-
|
|
3133
|
-
? 13
|
|
3134
|
-
: 14);
|
|
3135
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(nameToken_), kind_, ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_end(nameToken_), ff_compiler_Token.Token_at(mutableToken_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
|
|
3121
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(ff_compiler_Token.Token_raw(nameToken_), ff_compiler_LspHook.SLet(mutable_), ff_compiler_Token.Token_at(nameToken_), ff_compiler_Token.Token_end(nameToken_), ff_compiler_Token.Token_at(mutableToken_), ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
|
|
3136
3122
|
};
|
|
3137
3123
|
const body_ = (ff_compiler_Parser.Parser_currentIsSeparator(self_, ff_compiler_Token.LSemicolon())
|
|
3138
3124
|
? (await (async function() {
|
|
3139
3125
|
ff_compiler_Parser.Parser_skipSeparator(self_, ff_compiler_Token.LSemicolon());
|
|
3140
3126
|
return ff_compiler_Parser.Parser_parseStatements(self_)
|
|
3141
3127
|
})())
|
|
3142
|
-
: ff_compiler_Syntax.EVariant(ff_compiler_Token.Token_at(keywordToken_), "Unit",
|
|
3128
|
+
: ff_compiler_Syntax.EVariant(ff_compiler_Token.Token_at(keywordToken_), "Unit", [], ff_core_Option.None()));
|
|
3143
3129
|
return ff_compiler_Syntax.ELet(ff_compiler_Token.Token_at(nameToken_), mutable_, ff_compiler_Token.Token_raw(nameToken_), valueType_, value_, body_)
|
|
3144
3130
|
}
|
|
3145
3131
|
}
|
|
3146
3132
|
|
|
3147
3133
|
export async function Parser_parseFunctions$(self_, $task) {
|
|
3148
3134
|
const at_ = ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_));
|
|
3149
|
-
const functions_ =
|
|
3135
|
+
const functions_ = ff_core_Array.make_();
|
|
3150
3136
|
while(ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "function")) {
|
|
3151
3137
|
if(self_.lspHook_.trackSymbols_) {
|
|
3152
3138
|
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolBegin())
|
|
@@ -3155,13 +3141,13 @@ const functionAt_ = ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_rawSkip
|
|
|
3155
3141
|
const signature_ = ff_compiler_Parser.Parser_parseSignature(self_, false);
|
|
3156
3142
|
const body_ = ((ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_) && (!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "{")))
|
|
3157
3143
|
? (await (async function() {
|
|
3158
|
-
const temporaryEffect_ = ff_compiler_Syntax.TConstructor(functionAt_, "TemporaryEffect$",
|
|
3159
|
-
return ff_compiler_Syntax.Lambda(functionAt_, temporaryEffect_,
|
|
3144
|
+
const temporaryEffect_ = ff_compiler_Syntax.TConstructor(functionAt_, "TemporaryEffect$", []);
|
|
3145
|
+
return ff_compiler_Syntax.Lambda(functionAt_, temporaryEffect_, [])
|
|
3160
3146
|
})())
|
|
3161
3147
|
: ff_compiler_Parser.Parser_parseLambda(self_, ff_core_List.List_size(signature_.parameters_), false, false));
|
|
3162
|
-
|
|
3148
|
+
ff_core_Array.Array_push(functions_, ff_compiler_Syntax.DFunction(signature_.at_, signature_, ff_compiler_Syntax.FireflyTarget(body_)));
|
|
3163
3149
|
if(self_.lspHook_.trackSymbols_) {
|
|
3164
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(signature_.name_,
|
|
3150
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseSymbolEnd(signature_.name_, ff_compiler_LspHook.SFunction(false), signature_.at_, (((_c) => {
|
|
3165
3151
|
return ff_compiler_Syntax.Location(_c.file_, _c.line_, (signature_.at_.column_ + ff_core_String.String_size(signature_.name_)))
|
|
3166
3152
|
}))(signature_.at_), functionAt_, ff_compiler_Token.Token_end(ff_compiler_Parser.Parser_behind(self_))))
|
|
3167
3153
|
};
|
|
@@ -3172,7 +3158,7 @@ ff_compiler_Parser.Parser_skipSeparator(self_, ff_compiler_Token.LSemicolon())
|
|
|
3172
3158
|
}
|
|
3173
3159
|
};
|
|
3174
3160
|
const body_ = ff_compiler_Parser.Parser_parseStatements(self_);
|
|
3175
|
-
return ff_compiler_Syntax.EFunctions(at_,
|
|
3161
|
+
return ff_compiler_Syntax.EFunctions(at_, ff_core_Array.Array_toList(functions_, 0, 9007199254740991), body_)
|
|
3176
3162
|
}
|
|
3177
3163
|
|
|
3178
3164
|
export async function Parser_parseTerm$(self_, $task) {
|
|
@@ -3180,10 +3166,10 @@ return ff_compiler_Parser.Parser_parseBinary(self_, 0)
|
|
|
3180
3166
|
}
|
|
3181
3167
|
|
|
3182
3168
|
export async function Parser_parseBinary$(self_, level_, $task) {
|
|
3183
|
-
if((level_ >=
|
|
3169
|
+
if((level_ >= ff_core_List.List_size(ff_compiler_Parser.binaryOperators_))) {
|
|
3184
3170
|
return ff_compiler_Parser.Parser_parseUnary(self_)
|
|
3185
3171
|
} else {
|
|
3186
|
-
const operators_ =
|
|
3172
|
+
const operators_ = ff_core_List.List_grab(ff_compiler_Parser.binaryOperators_, level_);
|
|
3187
3173
|
let result_ = ff_compiler_Parser.Parser_parseBinary(self_, (level_ + 1));
|
|
3188
3174
|
if(ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LOperator())) {
|
|
3189
3175
|
while(ff_core_List.List_any(operators_, ((value_) => {
|
|
@@ -3191,41 +3177,41 @@ return ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), v
|
|
|
3191
3177
|
}))) {
|
|
3192
3178
|
const token_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LOperator());
|
|
3193
3179
|
const right_ = ff_compiler_Parser.Parser_parseBinary(self_, (level_ + 1));
|
|
3194
|
-
const arguments_ =
|
|
3180
|
+
const arguments_ = [ff_compiler_Syntax.Argument(result_.at_, ff_core_Option.None(), result_), ff_compiler_Syntax.Argument(right_.at_, ff_core_Option.None(), right_)];
|
|
3195
3181
|
const effect_ = ff_compiler_Parser.Parser_freshUnificationVariable(self_, ff_compiler_Token.Token_at(token_));
|
|
3196
3182
|
const target_ = (((_1) => {
|
|
3197
3183
|
{
|
|
3198
|
-
if(_1
|
|
3184
|
+
if(_1 === "==") {
|
|
3199
3185
|
return ff_compiler_Syntax.DynamicCall(ff_compiler_Syntax.EVariable(ff_compiler_Token.Token_at(token_), "ff:core/Equal.equals"), false)
|
|
3200
3186
|
return
|
|
3201
3187
|
}
|
|
3202
3188
|
}
|
|
3203
3189
|
{
|
|
3204
|
-
if(_1
|
|
3190
|
+
if(_1 === "!=") {
|
|
3205
3191
|
return ff_compiler_Syntax.DynamicCall(ff_compiler_Syntax.EVariable(ff_compiler_Token.Token_at(token_), "ff:core/Equal.notEquals"), false)
|
|
3206
3192
|
return
|
|
3207
3193
|
}
|
|
3208
3194
|
}
|
|
3209
3195
|
{
|
|
3210
|
-
if(_1
|
|
3196
|
+
if(_1 === "<") {
|
|
3211
3197
|
return ff_compiler_Syntax.DynamicCall(ff_compiler_Syntax.EVariable(ff_compiler_Token.Token_at(token_), "ff:core/Ordering.before"), false)
|
|
3212
3198
|
return
|
|
3213
3199
|
}
|
|
3214
3200
|
}
|
|
3215
3201
|
{
|
|
3216
|
-
if(_1
|
|
3202
|
+
if(_1 === "<=") {
|
|
3217
3203
|
return ff_compiler_Syntax.DynamicCall(ff_compiler_Syntax.EVariable(ff_compiler_Token.Token_at(token_), "ff:core/Ordering.notAfter"), false)
|
|
3218
3204
|
return
|
|
3219
3205
|
}
|
|
3220
3206
|
}
|
|
3221
3207
|
{
|
|
3222
|
-
if(_1
|
|
3208
|
+
if(_1 === ">") {
|
|
3223
3209
|
return ff_compiler_Syntax.DynamicCall(ff_compiler_Syntax.EVariable(ff_compiler_Token.Token_at(token_), "ff:core/Ordering.after"), false)
|
|
3224
3210
|
return
|
|
3225
3211
|
}
|
|
3226
3212
|
}
|
|
3227
3213
|
{
|
|
3228
|
-
if(_1
|
|
3214
|
+
if(_1 === ">=") {
|
|
3229
3215
|
return ff_compiler_Syntax.DynamicCall(ff_compiler_Syntax.EVariable(ff_compiler_Token.Token_at(token_), "ff:core/Ordering.notBefore"), false)
|
|
3230
3216
|
return
|
|
3231
3217
|
}
|
|
@@ -3236,7 +3222,7 @@ return ff_compiler_Syntax.DynamicCall(ff_compiler_Syntax.EVariable(ff_compiler_T
|
|
|
3236
3222
|
return
|
|
3237
3223
|
}
|
|
3238
3224
|
}))(ff_compiler_Token.Token_raw(token_));
|
|
3239
|
-
result_ = ff_compiler_Syntax.ECall(ff_compiler_Token.Token_at(token_), target_, effect_,
|
|
3225
|
+
result_ = ff_compiler_Syntax.ECall(ff_compiler_Token.Token_at(token_), target_, effect_, [], arguments_, [])
|
|
3240
3226
|
}
|
|
3241
3227
|
};
|
|
3242
3228
|
return result_
|
|
@@ -3249,7 +3235,7 @@ const token_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LOperator
|
|
|
3249
3235
|
const term_ = ff_compiler_Parser.Parser_parseUnary(self_);
|
|
3250
3236
|
const effect_ = ff_compiler_Parser.Parser_freshUnificationVariable(self_, ff_compiler_Token.Token_at(token_));
|
|
3251
3237
|
const target_ = ff_compiler_Syntax.DynamicCall(ff_compiler_Syntax.EVariable(ff_compiler_Token.Token_at(token_), ff_compiler_Token.Token_raw(token_)), false);
|
|
3252
|
-
return ff_compiler_Syntax.ECall(ff_compiler_Token.Token_at(token_), target_, effect_,
|
|
3238
|
+
return ff_compiler_Syntax.ECall(ff_compiler_Token.Token_at(token_), target_, effect_, [], [ff_compiler_Syntax.Argument(term_.at_, ff_core_Option.None(), term_)], [])
|
|
3253
3239
|
} else {
|
|
3254
3240
|
return ff_compiler_Parser.Parser_parseFieldsAndCalls(self_)
|
|
3255
3241
|
}
|
|
@@ -3279,12 +3265,12 @@ result_ = ff_compiler_Syntax.EField(ff_compiler_Token.Token_at(token_), false, r
|
|
|
3279
3265
|
} else {
|
|
3280
3266
|
const at_ = ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_));
|
|
3281
3267
|
const typeArguments_ = ((!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "["))
|
|
3282
|
-
?
|
|
3268
|
+
? []
|
|
3283
3269
|
: ff_compiler_Parser.Parser_parseTypeArguments(self_, false));
|
|
3284
3270
|
const arguments_ = ff_compiler_Parser.Parser_parseFunctionArguments(self_, result_.at_, true);
|
|
3285
3271
|
const effect_ = ff_compiler_Parser.Parser_freshUnificationVariable(self_, at_);
|
|
3286
3272
|
const target_ = ff_compiler_Syntax.DynamicCall(result_, tailCall_);
|
|
3287
|
-
result_ = ff_compiler_Syntax.ECall(result_.at_, target_, effect_, typeArguments_, arguments_.first_,
|
|
3273
|
+
result_ = ff_compiler_Syntax.ECall(result_.at_, target_, effect_, typeArguments_, arguments_.first_, []);
|
|
3288
3274
|
if((arguments_.second_ && ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LLower()))) {
|
|
3289
3275
|
const token_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LLower());
|
|
3290
3276
|
result_ = ff_compiler_Syntax.EField(ff_compiler_Token.Token_at(token_), false, result_, ff_compiler_Token.Token_raw(token_))
|
|
@@ -3356,7 +3342,7 @@ export async function Parser_parseVariant$(self_, prefix_, $task) {
|
|
|
3356
3342
|
const token_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LUpper());
|
|
3357
3343
|
const name_ = (prefix_ + ff_compiler_Token.Token_raw(token_));
|
|
3358
3344
|
const typeArguments_ = ((!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "["))
|
|
3359
|
-
?
|
|
3345
|
+
? []
|
|
3360
3346
|
: ff_compiler_Parser.Parser_parseTypeArguments(self_, false));
|
|
3361
3347
|
if(ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "?")) {
|
|
3362
3348
|
ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LOperator());
|
|
@@ -3380,13 +3366,13 @@ const prefix_ = (namespace_ + extraNamespace_);
|
|
|
3380
3366
|
const token_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LUpper());
|
|
3381
3367
|
const name_ = (prefix_ + ff_compiler_Token.Token_raw(token_));
|
|
3382
3368
|
const fields_ = ((ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_) && (!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "(")))
|
|
3383
|
-
?
|
|
3369
|
+
? []
|
|
3384
3370
|
: ff_compiler_Parser.Parser_parseRecord(self_, ff_core_Option.Some(ff_compiler_Token.Token_at(token_))));
|
|
3385
3371
|
return ff_compiler_Syntax.ECopy(ff_compiler_Token.Token_at(token_), name_, record_, fields_)
|
|
3386
3372
|
}
|
|
3387
3373
|
|
|
3388
3374
|
export async function Parser_parseRecord$(self_, copyAt_, $task) {
|
|
3389
|
-
const fields_ =
|
|
3375
|
+
const fields_ = ff_core_Array.make_();
|
|
3390
3376
|
const startBracketAt_ = ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketLeft(), "("));
|
|
3391
3377
|
const startAt_ = ff_core_Option.Option_else(copyAt_, (() => {
|
|
3392
3378
|
return startBracketAt_
|
|
@@ -3401,57 +3387,57 @@ return ff_compiler_Syntax.Field(ff_compiler_Token.Token_at(fieldToken_), ff_comp
|
|
|
3401
3387
|
: ff_compiler_Syntax.Field(ff_compiler_Token.Token_at(fieldToken_), ff_compiler_Token.Token_raw(fieldToken_), ff_compiler_Syntax.EVariable(ff_compiler_Token.Token_at(fieldToken_), ff_compiler_Token.Token_raw(fieldToken_))));
|
|
3402
3388
|
if((ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_) && (!self_.lspEmittedArgumentHook_))) {
|
|
3403
3389
|
if(ff_compiler_LspHook.strictlyBetween_(startAt_, ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), self_.lspHook_.at_, 1)) {
|
|
3404
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseArgumentHook(startAt_,
|
|
3390
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseArgumentHook(startAt_, ff_core_Array.Array_size(fields_), ff_core_Option.Option_filter(ff_core_Option.Some(field_.name_), ((_w1) => {
|
|
3405
3391
|
return (_w1 !== "")
|
|
3406
3392
|
}))));
|
|
3407
3393
|
self_.lspEmittedArgumentHook_ = true
|
|
3408
3394
|
}
|
|
3409
3395
|
};
|
|
3410
|
-
|
|
3396
|
+
ff_core_Array.Array_push(fields_, field_);
|
|
3411
3397
|
if((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
|
|
3412
3398
|
ff_compiler_Parser.Parser_skipSeparator(self_, ff_compiler_Token.LComma())
|
|
3413
3399
|
}
|
|
3414
3400
|
};
|
|
3415
3401
|
if((ff_compiler_LspHook.LspHook_isEnabled(self_.lspHook_) && (!self_.lspEmittedArgumentHook_))) {
|
|
3416
3402
|
if(ff_compiler_LspHook.strictlyBetween_(startAt_, ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), self_.lspHook_.at_, 1)) {
|
|
3417
|
-
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseArgumentHook(startAt_,
|
|
3403
|
+
ff_compiler_LspHook.LspHook_emit(self_.lspHook_, ff_compiler_LspHook.ParseArgumentHook(startAt_, ff_core_Array.Array_size(fields_), ff_core_Option.None()));
|
|
3418
3404
|
self_.lspEmittedArgumentHook_ = true
|
|
3419
3405
|
}
|
|
3420
3406
|
};
|
|
3421
3407
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketRight(), ")");
|
|
3422
|
-
return
|
|
3408
|
+
return ff_core_Array.Array_toList(fields_, 0, 9007199254740991)
|
|
3423
3409
|
}
|
|
3424
3410
|
|
|
3425
3411
|
export async function Parser_parseRecordType$(self_, $task) {
|
|
3426
|
-
const fields_ =
|
|
3412
|
+
const fields_ = ff_core_Array.make_();
|
|
3427
3413
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketLeft(), "(");
|
|
3428
3414
|
while((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
|
|
3429
3415
|
const fieldToken_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LLower());
|
|
3430
3416
|
ff_compiler_Parser.Parser_skipSeparator(self_, ff_compiler_Token.LColon());
|
|
3431
|
-
|
|
3417
|
+
ff_core_Array.Array_push(fields_, ff_core_Pair.Pair(ff_compiler_Token.Token_raw(fieldToken_), ff_compiler_Parser.Parser_parseType(self_)));
|
|
3432
3418
|
if((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
|
|
3433
3419
|
ff_compiler_Parser.Parser_skipSeparator(self_, ff_compiler_Token.LComma())
|
|
3434
3420
|
}
|
|
3435
3421
|
};
|
|
3436
3422
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketRight(), ")");
|
|
3437
|
-
return ff_core_List.List_sortBy(
|
|
3423
|
+
return ff_core_List.List_sortBy(ff_core_Array.Array_toList(fields_, 0, 9007199254740991), ((_w1) => {
|
|
3438
3424
|
return _w1.first_
|
|
3439
3425
|
}), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String)
|
|
3440
3426
|
}
|
|
3441
3427
|
|
|
3442
3428
|
export async function Parser_parseRecordPattern$(self_, $task) {
|
|
3443
|
-
const fields_ =
|
|
3429
|
+
const fields_ = ff_core_Array.make_();
|
|
3444
3430
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketLeft(), "(");
|
|
3445
3431
|
while((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
|
|
3446
3432
|
const fieldToken_ = ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LLower());
|
|
3447
3433
|
ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LAssign());
|
|
3448
|
-
|
|
3434
|
+
ff_core_Array.Array_push(fields_, ff_core_Pair.Pair(ff_compiler_Token.Token_raw(fieldToken_), ff_compiler_Parser.Parser_parsePattern(self_)));
|
|
3449
3435
|
if((!ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LBracketRight()))) {
|
|
3450
3436
|
ff_compiler_Parser.Parser_skipSeparator(self_, ff_compiler_Token.LComma())
|
|
3451
3437
|
}
|
|
3452
3438
|
};
|
|
3453
3439
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketRight(), ")");
|
|
3454
|
-
return ff_core_List.List_sortBy(
|
|
3440
|
+
return ff_core_List.List_sortBy(ff_core_Array.Array_toList(fields_, 0, 9007199254740991), ((_w1) => {
|
|
3455
3441
|
return _w1.first_
|
|
3456
3442
|
}), ff_core_Ordering.ff_core_Ordering_Order$ff_core_String_String)
|
|
3457
3443
|
}
|
|
@@ -3462,26 +3448,26 @@ function convertListPattern_(at_, items_) {
|
|
|
3462
3448
|
const at_a = at_;
|
|
3463
3449
|
const items_a = items_;
|
|
3464
3450
|
{
|
|
3465
|
-
if(items_a.
|
|
3466
|
-
return ff_compiler_Syntax.PVariant(at_, "
|
|
3451
|
+
if(items_a.length === 0) {
|
|
3452
|
+
return ff_compiler_Syntax.PVariant(at_, "List$Empty", [])
|
|
3467
3453
|
return
|
|
3468
3454
|
}
|
|
3469
3455
|
}
|
|
3470
3456
|
{
|
|
3471
|
-
if(items_a.
|
|
3472
|
-
const p_ = items_a.
|
|
3473
|
-
if(!items_a.
|
|
3474
|
-
const ps_ = items_a.
|
|
3475
|
-
return ff_compiler_Syntax.PVariant(at_, "
|
|
3457
|
+
if(items_a.length > 0) {
|
|
3458
|
+
const p_ = items_a[0].first_;
|
|
3459
|
+
if(!items_a[0].second_) {
|
|
3460
|
+
const ps_ = items_a.slice(1);
|
|
3461
|
+
return ff_compiler_Syntax.PVariant(at_, "List$Link", [p_, convertListPattern_(at_, ps_)])
|
|
3476
3462
|
return
|
|
3477
3463
|
}
|
|
3478
3464
|
}
|
|
3479
3465
|
}
|
|
3480
3466
|
{
|
|
3481
|
-
if(items_a.
|
|
3482
|
-
const p_ = items_a.
|
|
3483
|
-
if(items_a.
|
|
3484
|
-
if(items_a.
|
|
3467
|
+
if(items_a.length > 0) {
|
|
3468
|
+
const p_ = items_a[0].first_;
|
|
3469
|
+
if(items_a[0].second_) {
|
|
3470
|
+
if(items_a.length === 1) {
|
|
3485
3471
|
return p_
|
|
3486
3472
|
return
|
|
3487
3473
|
}
|
|
@@ -3489,9 +3475,9 @@ return
|
|
|
3489
3475
|
}
|
|
3490
3476
|
}
|
|
3491
3477
|
{
|
|
3492
|
-
if(items_a.
|
|
3493
|
-
const p_ = items_a.
|
|
3494
|
-
if(items_a.
|
|
3478
|
+
if(items_a.length > 0) {
|
|
3479
|
+
const p_ = items_a[0].first_;
|
|
3480
|
+
if(items_a[0].second_) {
|
|
3495
3481
|
throw Object.assign(new Error(), {ffException: ff_core_Any.toAny_(ff_compiler_Syntax.CompileError(p_.at_, "Invalid pattern: ... is only allowed for the last element in a list"), ff_compiler_Syntax.ff_core_Any_HasAnyTag$ff_compiler_Syntax_CompileError)})
|
|
3496
3482
|
return
|
|
3497
3483
|
}
|
|
@@ -3499,7 +3485,7 @@ return
|
|
|
3499
3485
|
}
|
|
3500
3486
|
}
|
|
3501
3487
|
}
|
|
3502
|
-
const items_ =
|
|
3488
|
+
const items_ = ff_core_Array.make_();
|
|
3503
3489
|
const at_ = ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketLeft(), "["));
|
|
3504
3490
|
while((!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "]"))) {
|
|
3505
3491
|
const spread_ = ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LDotDotDot());
|
|
@@ -3509,30 +3495,30 @@ ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LDotDotDot())
|
|
|
3509
3495
|
const pattern_ = ((spread_ && ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "]"))
|
|
3510
3496
|
? ff_compiler_Syntax.PVariable(ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_current(self_)), ff_core_Option.None())
|
|
3511
3497
|
: ff_compiler_Parser.Parser_parsePattern(self_));
|
|
3512
|
-
|
|
3498
|
+
ff_core_Array.Array_push(items_, ff_core_Pair.Pair(pattern_, spread_));
|
|
3513
3499
|
if((!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "]"))) {
|
|
3514
3500
|
ff_compiler_Parser.Parser_skipSeparator(self_, ff_compiler_Token.LComma())
|
|
3515
3501
|
}
|
|
3516
3502
|
};
|
|
3517
3503
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketRight(), "]");
|
|
3518
|
-
return convertListPattern_(at_,
|
|
3504
|
+
return convertListPattern_(at_, ff_core_Array.Array_toList(items_, 0, 9007199254740991))
|
|
3519
3505
|
}
|
|
3520
3506
|
|
|
3521
3507
|
export async function Parser_parseList$(self_, $task) {
|
|
3522
|
-
const items_ =
|
|
3508
|
+
const items_ = ff_core_Array.make_();
|
|
3523
3509
|
const at_ = ff_compiler_Token.Token_at(ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketLeft(), "["));
|
|
3524
3510
|
while((!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "]"))) {
|
|
3525
3511
|
const spread_ = ff_compiler_Token.Token_is(ff_compiler_Parser.Parser_current(self_), ff_compiler_Token.LDotDotDot());
|
|
3526
3512
|
if(spread_) {
|
|
3527
3513
|
ff_compiler_Parser.Parser_skip(self_, ff_compiler_Token.LDotDotDot())
|
|
3528
3514
|
};
|
|
3529
|
-
|
|
3515
|
+
ff_core_Array.Array_push(items_, ff_core_Pair.Pair(ff_compiler_Parser.Parser_parseTerm(self_), spread_));
|
|
3530
3516
|
if((!ff_compiler_Token.Token_rawIs(ff_compiler_Parser.Parser_current(self_), "]"))) {
|
|
3531
3517
|
ff_compiler_Parser.Parser_skipSeparator(self_, ff_compiler_Token.LComma())
|
|
3532
3518
|
}
|
|
3533
3519
|
};
|
|
3534
3520
|
ff_compiler_Parser.Parser_rawSkip(self_, ff_compiler_Token.LBracketRight(), "]");
|
|
3535
|
-
return ff_compiler_Syntax.EList(at_, ff_compiler_Parser.Parser_freshUnificationVariable(self_, at_),
|
|
3521
|
+
return ff_compiler_Syntax.EList(at_, ff_compiler_Parser.Parser_freshUnificationVariable(self_, at_), ff_core_Array.Array_toList(items_, 0, 9007199254740991))
|
|
3536
3522
|
}
|
|
3537
3523
|
|
|
3538
3524
|
export const ff_core_Any_HasAnyTag$ff_compiler_Parser_Poly = {
|
|
@@ -3880,7 +3866,7 @@ serialization_.offset_ += 1;
|
|
|
3880
3866
|
{
|
|
3881
3867
|
const _1 = variantIndex_;
|
|
3882
3868
|
{
|
|
3883
|
-
if(_1
|
|
3869
|
+
if(_1 === 0) {
|
|
3884
3870
|
serialization_.checksum_ = ff_core_Int.Int_bitOr(((31 * serialization_.checksum_) + 23), 0);
|
|
3885
3871
|
return ff_compiler_Parser.Poly(ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_List_List(ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String).deserializeUsing_(serialization_), ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_List_List(ff_compiler_Syntax.ff_core_Serializable_Serializable$ff_compiler_Syntax_Constraint).deserializeUsing_(serialization_))
|
|
3886
3872
|
return
|
|
@@ -3914,7 +3900,7 @@ serialization_.offset_ += 1;
|
|
|
3914
3900
|
{
|
|
3915
3901
|
const _1 = variantIndex_;
|
|
3916
3902
|
{
|
|
3917
|
-
if(_1
|
|
3903
|
+
if(_1 === 0) {
|
|
3918
3904
|
serialization_.checksum_ = ff_core_Int.Int_bitOr(((31 * serialization_.checksum_) + 23), 0);
|
|
3919
3905
|
return ff_compiler_Parser.Poly(ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_List_List(ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String).deserializeUsing_(serialization_), ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_List_List(ff_compiler_Syntax.ff_core_Serializable_Serializable$ff_compiler_Syntax_Constraint).deserializeUsing_(serialization_))
|
|
3920
3906
|
return
|
|
@@ -3958,7 +3944,7 @@ serialization_.offset_ += 1;
|
|
|
3958
3944
|
{
|
|
3959
3945
|
const _1 = variantIndex_;
|
|
3960
3946
|
{
|
|
3961
|
-
if(_1
|
|
3947
|
+
if(_1 === 0) {
|
|
3962
3948
|
serialization_.checksum_ = ff_core_Int.Int_bitOr(((31 * serialization_.checksum_) + 32), 0);
|
|
3963
3949
|
return ff_compiler_Parser.ParsedTargets(ff_core_Option.ff_core_Serializable_Serializable$ff_core_Option_Option(ff_compiler_Syntax.ff_core_Serializable_Serializable$ff_compiler_Syntax_Lambda).deserializeUsing_(serialization_), ff_core_Option.ff_core_Serializable_Serializable$ff_core_Option_Option(ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String).deserializeUsing_(serialization_), ff_core_Option.ff_core_Serializable_Serializable$ff_core_Option_Option(ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String).deserializeUsing_(serialization_), ff_core_Option.ff_core_Serializable_Serializable$ff_core_Option_Option(ff_compiler_Syntax.ff_core_Serializable_Serializable$ff_compiler_Syntax_Lambda).deserializeUsing_(serialization_), ff_core_Option.ff_core_Serializable_Serializable$ff_core_Option_Option(ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String).deserializeUsing_(serialization_), ff_core_Option.ff_core_Serializable_Serializable$ff_core_Option_Option(ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String).deserializeUsing_(serialization_), ff_core_Option.ff_core_Serializable_Serializable$ff_core_Option_Option(ff_compiler_Syntax.ff_core_Serializable_Serializable$ff_compiler_Syntax_Lambda).deserializeUsing_(serialization_), ff_core_Option.ff_core_Serializable_Serializable$ff_core_Option_Option(ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String).deserializeUsing_(serialization_), ff_core_Option.ff_core_Serializable_Serializable$ff_core_Option_Option(ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String).deserializeUsing_(serialization_))
|
|
3964
3950
|
return
|
|
@@ -3999,7 +3985,7 @@ serialization_.offset_ += 1;
|
|
|
3999
3985
|
{
|
|
4000
3986
|
const _1 = variantIndex_;
|
|
4001
3987
|
{
|
|
4002
|
-
if(_1
|
|
3988
|
+
if(_1 === 0) {
|
|
4003
3989
|
serialization_.checksum_ = ff_core_Int.Int_bitOr(((31 * serialization_.checksum_) + 32), 0);
|
|
4004
3990
|
return ff_compiler_Parser.ParsedTargets(ff_core_Option.ff_core_Serializable_Serializable$ff_core_Option_Option(ff_compiler_Syntax.ff_core_Serializable_Serializable$ff_compiler_Syntax_Lambda).deserializeUsing_(serialization_), ff_core_Option.ff_core_Serializable_Serializable$ff_core_Option_Option(ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String).deserializeUsing_(serialization_), ff_core_Option.ff_core_Serializable_Serializable$ff_core_Option_Option(ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String).deserializeUsing_(serialization_), ff_core_Option.ff_core_Serializable_Serializable$ff_core_Option_Option(ff_compiler_Syntax.ff_core_Serializable_Serializable$ff_compiler_Syntax_Lambda).deserializeUsing_(serialization_), ff_core_Option.ff_core_Serializable_Serializable$ff_core_Option_Option(ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String).deserializeUsing_(serialization_), ff_core_Option.ff_core_Serializable_Serializable$ff_core_Option_Option(ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String).deserializeUsing_(serialization_), ff_core_Option.ff_core_Serializable_Serializable$ff_core_Option_Option(ff_compiler_Syntax.ff_core_Serializable_Serializable$ff_compiler_Syntax_Lambda).deserializeUsing_(serialization_), ff_core_Option.ff_core_Serializable_Serializable$ff_core_Option_Option(ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String).deserializeUsing_(serialization_), ff_core_Option.ff_core_Serializable_Serializable$ff_core_Option_Option(ff_core_Serializable.ff_core_Serializable_Serializable$ff_core_String_String).deserializeUsing_(serialization_))
|
|
4005
3991
|
return
|