firefly-compiler 0.5.39 → 0.5.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/.hintrc +4 -4
  2. package/.vscode/settings.json +4 -4
  3. package/bin/Release.ff +158 -157
  4. package/bin/firefly.mjs +1 -1
  5. package/compiler/Builder.ff +275 -275
  6. package/compiler/Compiler.ff +234 -234
  7. package/compiler/Dependencies.ff +186 -186
  8. package/compiler/DependencyLock.ff +17 -17
  9. package/compiler/JsEmitter.ff +1437 -1437
  10. package/compiler/LspHook.ff +202 -202
  11. package/compiler/ModuleCache.ff +178 -178
  12. package/compiler/Workspace.ff +88 -88
  13. package/core/.firefly/include/package.json +5 -5
  14. package/core/.firefly/package.ff +2 -2
  15. package/core/Any.ff +25 -25
  16. package/core/Array.ff +298 -298
  17. package/core/Atomic.ff +63 -63
  18. package/core/Box.ff +7 -7
  19. package/core/BrowserSystem.ff +40 -40
  20. package/core/BuildSystem.ff +156 -156
  21. package/core/Crypto.ff +94 -94
  22. package/core/Equal.ff +41 -41
  23. package/core/Error.ff +25 -25
  24. package/core/HttpClient.ff +142 -142
  25. package/core/Instant.ff +24 -24
  26. package/core/Js.ff +305 -305
  27. package/core/JsSystem.ff +135 -135
  28. package/core/Json.ff +423 -423
  29. package/core/List.ff +482 -482
  30. package/core/Lock.ff +108 -108
  31. package/core/NodeSystem.ff +198 -198
  32. package/core/Ordering.ff +160 -160
  33. package/core/Path.ff +377 -378
  34. package/core/Queue.ff +90 -90
  35. package/core/Random.ff +140 -140
  36. package/core/RbMap.ff +216 -216
  37. package/core/Show.ff +44 -44
  38. package/core/SourceLocation.ff +68 -68
  39. package/core/Task.ff +165 -165
  40. package/experimental/benchmarks/ListGrab.ff +23 -23
  41. package/experimental/benchmarks/ListGrab.java +55 -55
  42. package/experimental/benchmarks/Pyrotek45.ff +30 -30
  43. package/experimental/benchmarks/Pyrotek45.java +64 -64
  44. package/experimental/bidirectional/Bidi.ff +88 -88
  45. package/experimental/lines/Main.ff +40 -40
  46. package/experimental/random/Index.ff +53 -53
  47. package/experimental/random/Process.ff +120 -120
  48. package/experimental/random/RunLength.ff +65 -65
  49. package/experimental/random/Scrape.ff +51 -51
  50. package/experimental/random/Symbols.ff +73 -73
  51. package/experimental/random/Tensor.ff +52 -52
  52. package/experimental/random/Units.ff +36 -36
  53. package/experimental/s3/S3TestAuthorizationHeader.ff +39 -39
  54. package/experimental/s3/S3TestPut.ff +16 -16
  55. package/experimental/tests/TestJson.ff +26 -26
  56. package/firefly.sh +0 -0
  57. package/fireflysite/.firefly/package.ff +4 -4
  58. package/fireflysite/CommunityOverview.ff +20 -20
  59. package/fireflysite/CountingButtonDemo.ff +58 -58
  60. package/fireflysite/DocumentParser.ff +325 -325
  61. package/fireflysite/ExamplesOverview.ff +40 -40
  62. package/fireflysite/FrontPage.ff +344 -344
  63. package/fireflysite/GettingStarted.ff +45 -45
  64. package/fireflysite/Guide.ff +456 -456
  65. package/fireflysite/Main.ff +163 -163
  66. package/fireflysite/MatchingPasswordsDemo.ff +82 -82
  67. package/fireflysite/PackagesOverview.ff +49 -49
  68. package/fireflysite/PostgresqlDemo.ff +34 -34
  69. package/fireflysite/ReferenceAll.ff +18 -18
  70. package/fireflysite/ReferenceIntroduction.ff +11 -11
  71. package/fireflysite/Styles.ff +567 -567
  72. package/fireflysite/Test.ff +121 -121
  73. package/fireflysite/assets/markdown/reference/BaseTypes.md +209 -209
  74. package/fireflysite/assets/markdown/reference/EmittedJavascript.md +65 -65
  75. package/fireflysite/assets/markdown/reference/Exceptions.md +101 -101
  76. package/fireflysite/assets/markdown/reference/FunctionsAndMethods.md +364 -364
  77. package/fireflysite/assets/markdown/reference/JavascriptInterop.md +235 -235
  78. package/fireflysite/assets/markdown/reference/ModulesAndPackages.md +162 -162
  79. package/fireflysite/assets/markdown/reference/OldStructuredConcurrency.md +48 -48
  80. package/fireflysite/assets/markdown/reference/PatternMatching.md +224 -224
  81. package/fireflysite/assets/markdown/reference/StatementsAndExpressions.md +86 -86
  82. package/fireflysite/assets/markdown/reference/StructuredConcurrency.md +99 -99
  83. package/fireflysite/assets/markdown/reference/TraitsAndInstances.md +100 -100
  84. package/fireflysite/assets/markdown/reference/UserDefinedTypes.md +184 -184
  85. package/fireflysite/assets/markdown/scratch/ControlFlow.md +136 -136
  86. package/fireflysite/assets/markdown/scratch/Toc.md +40 -40
  87. package/lsp/.firefly/package.ff +1 -1
  88. package/lsp/CompletionHandler.ff +827 -827
  89. package/lsp/Handler.ff +714 -714
  90. package/lsp/HoverHandler.ff +79 -79
  91. package/lsp/LanguageServer.ff +272 -272
  92. package/lsp/SignatureHelpHandler.ff +55 -55
  93. package/lsp/SymbolHandler.ff +181 -181
  94. package/lsp/TestReferences.ff +17 -17
  95. package/lsp/TestReferencesCase.ff +7 -7
  96. package/lsp/stderr.txt +1 -1
  97. package/lsp/stdout.txt +34 -34
  98. package/lux/.firefly/package.ff +1 -1
  99. package/lux/Css.ff +648 -648
  100. package/lux/CssTest.ff +48 -48
  101. package/lux/Lux.ff +608 -608
  102. package/lux/LuxEvent.ff +79 -79
  103. package/lux/Main.ff +123 -123
  104. package/lux/Main2.ff +143 -143
  105. package/lux/TestDry.ff +28 -28
  106. package/output/js/ff/compiler/Builder.mjs +36 -36
  107. package/output/js/ff/core/Path.mjs +0 -2
  108. package/package.json +1 -1
  109. package/rpc/.firefly/package.ff +1 -1
  110. package/rpc/Rpc.ff +70 -70
  111. package/s3/.firefly/package.ff +1 -1
  112. package/s3/S3.ff +92 -92
  113. package/vscode/LICENSE.txt +21 -21
  114. package/vscode/Prepublish.ff +15 -15
  115. package/vscode/README.md +16 -16
  116. package/vscode/client/package-lock.json +544 -544
  117. package/vscode/client/package.json +22 -22
  118. package/vscode/client/src/extension.ts +104 -104
  119. package/vscode/icons/firefly-icon.svg +10 -10
  120. package/vscode/language-configuration.json +61 -61
  121. package/vscode/package-lock.json +3623 -3623
  122. package/vscode/package.json +1 -1
  123. package/vscode/snippets.json +241 -241
  124. package/vscode/syntaxes/firefly-markdown-injection.json +45 -45
  125. package/webserver/.firefly/include/package.json +5 -5
  126. package/webserver/.firefly/package.ff +2 -2
  127. package/webserver/WebServer.ff +647 -647
  128. package/websocket/.firefly/package.ff +1 -1
  129. package/websocket/WebSocket.ff +100 -100
@@ -1,203 +1,203 @@
1
- import Syntax
2
- import Unification
3
- import Environment
4
-
5
- class LspHook(
6
- at: Location
7
- definedAt: Location
8
- insertIdentifier: Bool
9
- trackSymbols: Bool
10
- arrayOfResults: Array[ResultHook]
11
- )
12
-
13
- disabled(): LspHook {
14
- new(None, None, False, False)
15
- }
16
-
17
- new(at: Option[Location], definedAt: Option[Location], insertIdentifier: Bool, trackSymbols: Bool): LspHook {
18
- LspHook( // Default dummy values instead of Option[Location] to speed up location hit check
19
- at = at.else {Location("^lsp", -7, -7)}
20
- definedAt = definedAt.else {Location("^lsp", -7, -7)}
21
- insertIdentifier = insertIdentifier
22
- trackSymbols = trackSymbols
23
- arrayOfResults = [].toArray()
24
- )
25
- }
26
-
27
- extend self: LspHook {
28
- isEnabled(): Bool {
29
- self.at.line != -7 ||
30
- self.definedAt.line != -7 ||
31
- self.trackSymbols
32
- }
33
- isAt(at: Location): Bool {
34
- self.at.line == at.line &&
35
- self.at.column == at.column &&
36
- self.at.file == at.file
37
- }
38
- isDefinedAt(at: Location): Bool {
39
- self.definedAt.line == at.line &&
40
- self.definedAt.column == at.column &&
41
- self.definedAt.file == at.file
42
- }
43
- emit(result: ResultHook) {
44
- self.arrayOfResults.push(result)
45
- }
46
- results(): List[ResultHook] {
47
- self.arrayOfResults.toList()
48
- }
49
- }
50
-
51
- strictlyBetween(afterAt: Location, beforeAt: Location, at: Location, extraColumns: Int): Bool {
52
- at.file == afterAt.file && (
53
- (at.line == afterAt.line && at.column > afterAt.column) ||
54
- at.line > afterAt.line
55
- ) && (
56
- (at.line == beforeAt.line && at.column < beforeAt.column + extraColumns) ||
57
- at.line < beforeAt.line
58
- )
59
- }
60
-
61
- data SymbolHook(
62
- qualifiedName: String
63
- usageAt: Location
64
- definedAt: Location
65
- )
66
-
67
- class Box[T](mutable value: T)
68
-
69
- data DocumentSymbolKind {
70
- SLet(mutable: Bool)
71
- SFunction(member: Bool)
72
- SExtend
73
- STraitFunction
74
- STrait
75
- SInstance
76
- SVariant
77
- SType
78
- SParameter
79
- }
80
-
81
- class ResultHook {
82
- ParseSymbolBegin
83
- ParseSymbolEnd(
84
- name: String
85
- kind: DocumentSymbolKind
86
- selectionStart: Location
87
- selectionEnd: Location
88
- start: Location
89
- end: Location
90
- )
91
- ParseArgumentHook(
92
- callAt: Location
93
- argumentIndex: Int
94
- parameterName: Option[String]
95
- )
96
- ResolveSymbolHook(
97
- symbol: SymbolHook
98
- annotation: Option[Type]
99
- topLevel: Bool
100
- )
101
- ResolveTypeHook(
102
- types: Map[String, String]
103
- typeGenerics: Map[String, List[String]]
104
- symbol: SymbolHook
105
- explicitType: Type
106
- )
107
- ResolveConstraintHook(
108
- symbol: SymbolHook
109
- constrant: Constraint
110
- )
111
- ResolveSignatureHook(
112
- signature: Signature
113
- isInstanceMethod: Bool
114
- topLevel: Bool
115
- )
116
- ResolveVariantFieldHook(
117
- symbol: SymbolHook
118
- type: Type
119
- commonField: Bool
120
- )
121
- InferTermHook(
122
- unification: Unification
123
- environment: Environment
124
- expected: Type
125
- term: Term
126
- recordType: Box[Option[Type]]
127
- missing: StringMap[Pair[Instantiated, Option[List[Argument]]]]
128
- )
129
- InferLambdaStartHook(
130
- unification: Unification
131
- environment: Environment
132
- lambdaType: Type
133
- )
134
- InferSequentialStartHook(
135
- unification: Unification
136
- term: Term
137
- missing: StringMap[Pair[Instantiated, Option[List[Argument]]]]
138
- )
139
- InferFunctionDefinitionHook(
140
- unification: Unification
141
- environment: Environment
142
- definition: DFunction
143
- missing: StringMap[Pair[Instantiated, Option[List[Argument]]]]
144
- )
145
- InferPatternHook(
146
- unification: Unification
147
- environment: Environment
148
- expected: Type
149
- pattern: MatchPattern
150
- )
151
- InferParameterHook(
152
- unification: Unification
153
- environment: Environment
154
- parameter: Parameter
155
- missing: StringMap[Pair[Instantiated, Option[List[Argument]]]]
156
- )
157
- InferArgumentHook(
158
- unification: Unification
159
- environment: Environment
160
- isCopy: Bool
161
- callAt: Location
162
- callName: String
163
- parameters: List[Parameter]
164
- arguments: List[Argument]
165
- argumentIndex: Int
166
- )
167
- InferLookupHook(
168
- unification: Unification
169
- environment: Environment
170
- expected: Type
171
- selfVariable: Option[String]
172
- symbol: Box[SymbolHook]
173
- instantiated: Box[Option[Instantiated]]
174
- )
175
- InferRecordFieldHook(
176
- usageAt: Location
177
- unification: Unification
178
- environment: Environment
179
- expected: Type
180
- recordType: Type
181
- fieldName: String
182
- )
183
- }
184
-
185
- showHook(hook: ResultHook): String {
186
- | InferArgumentHook(unification, environment, isCopy, callAt, callName, parameters, arguments, argumentIndex) => "InferArgumentHook(...)"
187
- | InferFunctionDefinitionHook(unification, environment, definition, missing) => "InferFunctionDefinitionHook(...)"
188
- | InferLambdaStartHook(unification, environment, lambdaType) => "InferLambdaStartHook(...)"
189
- | InferLookupHook(unification, environment, expected, selfVariable, symbol, instantiated) => "InferLookupHook(...)"
190
- | InferParameterHook(unification, environment, parameter, missing) => "InferParameterHook(...)"
191
- | InferPatternHook(unification, environment, expected, pattern) => "InferPatternHook(...)"
192
- | InferRecordFieldHook(usageAt, unification, environment, expected, recordType, fieldName) => "InferRecordFieldHook(...)"
193
- | InferSequentialStartHook(unification, term, missing) => "InferSequentialStartHook(...)"
194
- | InferTermHook(unification, environment, expected, term, recordType, missing) => "InferTermHook(...)"
195
- | ParseArgumentHook(callAt, argumentIndex, parameterName) => "ParseArgumentHook(...)"
196
- | ParseSymbolBegin => "ParseSymbolBegin(...)"
197
- | ParseSymbolEnd(name, kind, selectionStart, selectionEnd, start, end) => "ParseSymbolEnd(...)"
198
- | ResolveConstraintHook(symbol, constrant) => "ResolveConstraintHook(...)"
199
- | ResolveSignatureHook(signature, _, _) => "ResolveSignatureHook(...)"
200
- | ResolveSymbolHook(symbol, annotation, _) => "ResolveSymbolHook(...)"
201
- | ResolveTypeHook(types, typeGenerics, symbol, explicitType) => "ResolveTypeHook(...)"
202
- | ResolveVariantFieldHook(symbol, type, commonField) => "ResolveVariantFieldHook(...)"
1
+ import Syntax
2
+ import Unification
3
+ import Environment
4
+
5
+ class LspHook(
6
+ at: Location
7
+ definedAt: Location
8
+ insertIdentifier: Bool
9
+ trackSymbols: Bool
10
+ arrayOfResults: Array[ResultHook]
11
+ )
12
+
13
+ disabled(): LspHook {
14
+ new(None, None, False, False)
15
+ }
16
+
17
+ new(at: Option[Location], definedAt: Option[Location], insertIdentifier: Bool, trackSymbols: Bool): LspHook {
18
+ LspHook( // Default dummy values instead of Option[Location] to speed up location hit check
19
+ at = at.else {Location("^lsp", -7, -7)}
20
+ definedAt = definedAt.else {Location("^lsp", -7, -7)}
21
+ insertIdentifier = insertIdentifier
22
+ trackSymbols = trackSymbols
23
+ arrayOfResults = [].toArray()
24
+ )
25
+ }
26
+
27
+ extend self: LspHook {
28
+ isEnabled(): Bool {
29
+ self.at.line != -7 ||
30
+ self.definedAt.line != -7 ||
31
+ self.trackSymbols
32
+ }
33
+ isAt(at: Location): Bool {
34
+ self.at.line == at.line &&
35
+ self.at.column == at.column &&
36
+ self.at.file == at.file
37
+ }
38
+ isDefinedAt(at: Location): Bool {
39
+ self.definedAt.line == at.line &&
40
+ self.definedAt.column == at.column &&
41
+ self.definedAt.file == at.file
42
+ }
43
+ emit(result: ResultHook) {
44
+ self.arrayOfResults.push(result)
45
+ }
46
+ results(): List[ResultHook] {
47
+ self.arrayOfResults.toList()
48
+ }
49
+ }
50
+
51
+ strictlyBetween(afterAt: Location, beforeAt: Location, at: Location, extraColumns: Int): Bool {
52
+ at.file == afterAt.file && (
53
+ (at.line == afterAt.line && at.column > afterAt.column) ||
54
+ at.line > afterAt.line
55
+ ) && (
56
+ (at.line == beforeAt.line && at.column < beforeAt.column + extraColumns) ||
57
+ at.line < beforeAt.line
58
+ )
59
+ }
60
+
61
+ data SymbolHook(
62
+ qualifiedName: String
63
+ usageAt: Location
64
+ definedAt: Location
65
+ )
66
+
67
+ class Box[T](mutable value: T)
68
+
69
+ data DocumentSymbolKind {
70
+ SLet(mutable: Bool)
71
+ SFunction(member: Bool)
72
+ SExtend
73
+ STraitFunction
74
+ STrait
75
+ SInstance
76
+ SVariant
77
+ SType
78
+ SParameter
79
+ }
80
+
81
+ class ResultHook {
82
+ ParseSymbolBegin
83
+ ParseSymbolEnd(
84
+ name: String
85
+ kind: DocumentSymbolKind
86
+ selectionStart: Location
87
+ selectionEnd: Location
88
+ start: Location
89
+ end: Location
90
+ )
91
+ ParseArgumentHook(
92
+ callAt: Location
93
+ argumentIndex: Int
94
+ parameterName: Option[String]
95
+ )
96
+ ResolveSymbolHook(
97
+ symbol: SymbolHook
98
+ annotation: Option[Type]
99
+ topLevel: Bool
100
+ )
101
+ ResolveTypeHook(
102
+ types: Map[String, String]
103
+ typeGenerics: Map[String, List[String]]
104
+ symbol: SymbolHook
105
+ explicitType: Type
106
+ )
107
+ ResolveConstraintHook(
108
+ symbol: SymbolHook
109
+ constrant: Constraint
110
+ )
111
+ ResolveSignatureHook(
112
+ signature: Signature
113
+ isInstanceMethod: Bool
114
+ topLevel: Bool
115
+ )
116
+ ResolveVariantFieldHook(
117
+ symbol: SymbolHook
118
+ type: Type
119
+ commonField: Bool
120
+ )
121
+ InferTermHook(
122
+ unification: Unification
123
+ environment: Environment
124
+ expected: Type
125
+ term: Term
126
+ recordType: Box[Option[Type]]
127
+ missing: StringMap[Pair[Instantiated, Option[List[Argument]]]]
128
+ )
129
+ InferLambdaStartHook(
130
+ unification: Unification
131
+ environment: Environment
132
+ lambdaType: Type
133
+ )
134
+ InferSequentialStartHook(
135
+ unification: Unification
136
+ term: Term
137
+ missing: StringMap[Pair[Instantiated, Option[List[Argument]]]]
138
+ )
139
+ InferFunctionDefinitionHook(
140
+ unification: Unification
141
+ environment: Environment
142
+ definition: DFunction
143
+ missing: StringMap[Pair[Instantiated, Option[List[Argument]]]]
144
+ )
145
+ InferPatternHook(
146
+ unification: Unification
147
+ environment: Environment
148
+ expected: Type
149
+ pattern: MatchPattern
150
+ )
151
+ InferParameterHook(
152
+ unification: Unification
153
+ environment: Environment
154
+ parameter: Parameter
155
+ missing: StringMap[Pair[Instantiated, Option[List[Argument]]]]
156
+ )
157
+ InferArgumentHook(
158
+ unification: Unification
159
+ environment: Environment
160
+ isCopy: Bool
161
+ callAt: Location
162
+ callName: String
163
+ parameters: List[Parameter]
164
+ arguments: List[Argument]
165
+ argumentIndex: Int
166
+ )
167
+ InferLookupHook(
168
+ unification: Unification
169
+ environment: Environment
170
+ expected: Type
171
+ selfVariable: Option[String]
172
+ symbol: Box[SymbolHook]
173
+ instantiated: Box[Option[Instantiated]]
174
+ )
175
+ InferRecordFieldHook(
176
+ usageAt: Location
177
+ unification: Unification
178
+ environment: Environment
179
+ expected: Type
180
+ recordType: Type
181
+ fieldName: String
182
+ )
183
+ }
184
+
185
+ showHook(hook: ResultHook): String {
186
+ | InferArgumentHook(unification, environment, isCopy, callAt, callName, parameters, arguments, argumentIndex) => "InferArgumentHook(...)"
187
+ | InferFunctionDefinitionHook(unification, environment, definition, missing) => "InferFunctionDefinitionHook(...)"
188
+ | InferLambdaStartHook(unification, environment, lambdaType) => "InferLambdaStartHook(...)"
189
+ | InferLookupHook(unification, environment, expected, selfVariable, symbol, instantiated) => "InferLookupHook(...)"
190
+ | InferParameterHook(unification, environment, parameter, missing) => "InferParameterHook(...)"
191
+ | InferPatternHook(unification, environment, expected, pattern) => "InferPatternHook(...)"
192
+ | InferRecordFieldHook(usageAt, unification, environment, expected, recordType, fieldName) => "InferRecordFieldHook(...)"
193
+ | InferSequentialStartHook(unification, term, missing) => "InferSequentialStartHook(...)"
194
+ | InferTermHook(unification, environment, expected, term, recordType, missing) => "InferTermHook(...)"
195
+ | ParseArgumentHook(callAt, argumentIndex, parameterName) => "ParseArgumentHook(...)"
196
+ | ParseSymbolBegin => "ParseSymbolBegin(...)"
197
+ | ParseSymbolEnd(name, kind, selectionStart, selectionEnd, start, end) => "ParseSymbolEnd(...)"
198
+ | ResolveConstraintHook(symbol, constrant) => "ResolveConstraintHook(...)"
199
+ | ResolveSignatureHook(signature, _, _) => "ResolveSignatureHook(...)"
200
+ | ResolveSymbolHook(symbol, annotation, _) => "ResolveSymbolHook(...)"
201
+ | ResolveTypeHook(types, typeGenerics, symbol, explicitType) => "ResolveTypeHook(...)"
202
+ | ResolveVariantFieldHook(symbol, type, commonField) => "ResolveVariantFieldHook(...)"
203
203
  }