firefly-compiler 0.4.36 → 0.4.46

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 (116) hide show
  1. package/.hintrc +4 -4
  2. package/.vscode/settings.json +4 -4
  3. package/bin/Release.ff +99 -49
  4. package/bin/firefly.mjs +1 -1
  5. package/compiler/Builder.ff +257 -257
  6. package/compiler/Compiler.ff +227 -227
  7. package/compiler/Dependencies.ff +186 -186
  8. package/compiler/DependencyLock.ff +17 -17
  9. package/compiler/JsEmitter.ff +946 -946
  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-lock.json +394 -394
  14. package/core/.firefly/include/package.json +5 -5
  15. package/core/.firefly/include/prepare.sh +1 -1
  16. package/core/.firefly/package.ff +2 -2
  17. package/core/Array.ff +265 -265
  18. package/core/Atomic.ff +64 -64
  19. package/core/Box.ff +7 -7
  20. package/core/BrowserSystem.ff +40 -37
  21. package/core/Buffer.ff +3 -3
  22. package/core/BuildSystem.ff +148 -145
  23. package/core/Crypto.ff +96 -95
  24. package/core/Equal.ff +36 -36
  25. package/core/HttpClient.ff +87 -87
  26. package/core/Instant.ff +17 -0
  27. package/core/JsSystem.ff +69 -69
  28. package/core/Json.ff +434 -434
  29. package/core/List.ff +415 -415
  30. package/core/Lock.ff +144 -144
  31. package/core/NodeSystem.ff +189 -189
  32. package/core/Ordering.ff +161 -161
  33. package/core/Path.ff +401 -401
  34. package/core/Random.ff +134 -134
  35. package/core/RbMap.ff +216 -216
  36. package/core/Show.ff +43 -43
  37. package/core/SourceLocation.ff +68 -68
  38. package/core/Stream.ff +1 -1
  39. package/core/Task.ff +141 -141
  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/random/Index.ff +53 -53
  46. package/experimental/random/Process.ff +120 -120
  47. package/experimental/random/RunLength.ff +3 -3
  48. package/experimental/random/Scrape.ff +51 -51
  49. package/experimental/random/Symbols.ff +73 -73
  50. package/experimental/random/Tensor.ff +52 -52
  51. package/experimental/random/Units.ff +36 -36
  52. package/experimental/s3/S3TestAuthorizationHeader.ff +38 -38
  53. package/experimental/s3/S3TestPut.ff +15 -15
  54. package/experimental/tests/TestJson.ff +26 -26
  55. package/firefly.sh +0 -0
  56. package/fireflysite/Main.ff +13 -13
  57. package/lsp/.firefly/package.ff +1 -1
  58. package/lsp/CompletionHandler.ff +811 -811
  59. package/lsp/Handler.ff +714 -714
  60. package/lsp/HoverHandler.ff +79 -79
  61. package/lsp/LanguageServer.ff +272 -272
  62. package/lsp/SignatureHelpHandler.ff +55 -55
  63. package/lsp/SymbolHandler.ff +181 -181
  64. package/lsp/TestReferences.ff +16 -16
  65. package/lsp/TestReferencesCase.ff +7 -7
  66. package/lsp/stderr.txt +1 -1
  67. package/lsp/stdout.txt +34 -34
  68. package/lux/.firefly/package.ff +1 -1
  69. package/lux/Css.ff +648 -648
  70. package/lux/CssTest.ff +48 -48
  71. package/lux/Lux.ff +487 -487
  72. package/lux/LuxEvent.ff +116 -116
  73. package/lux/Main.ff +128 -128
  74. package/lux/Main2.ff +144 -144
  75. package/output/js/ff/compiler/Builder.mjs +43 -43
  76. package/output/js/ff/compiler/Dependencies.mjs +3 -3
  77. package/output/js/ff/core/Array.mjs +59 -59
  78. package/output/js/ff/core/Atomic.mjs +36 -36
  79. package/output/js/ff/core/BrowserSystem.mjs +19 -11
  80. package/output/js/ff/core/Buffer.mjs +7 -7
  81. package/output/js/ff/core/BuildSystem.mjs +38 -30
  82. package/output/js/ff/core/Crypto.mjs +67 -68
  83. package/output/js/ff/core/HttpClient.mjs +24 -24
  84. package/output/js/ff/core/Instant.mjs +38 -0
  85. package/output/js/ff/core/Json.mjs +147 -147
  86. package/output/js/ff/core/List.mjs +50 -50
  87. package/output/js/ff/core/Lock.mjs +97 -97
  88. package/output/js/ff/core/NodeSystem.mjs +77 -77
  89. package/output/js/ff/core/Ordering.mjs +8 -8
  90. package/output/js/ff/core/Path.mjs +231 -231
  91. package/output/js/ff/core/Random.mjs +56 -56
  92. package/output/js/ff/core/Stream.mjs +2 -2
  93. package/output/js/ff/core/Task.mjs +31 -31
  94. package/package.json +29 -29
  95. package/rpc/.firefly/package.ff +1 -1
  96. package/rpc/Rpc.ff +69 -69
  97. package/s3/.firefly/package.ff +1 -0
  98. package/{experimental/s3 → s3}/S3.ff +92 -92
  99. package/unsafejs/UnsafeJs.ff +19 -19
  100. package/vscode/LICENSE.txt +21 -21
  101. package/vscode/Prepublish.ff +15 -15
  102. package/vscode/README.md +16 -16
  103. package/vscode/client/package.json +22 -22
  104. package/vscode/client/src/extension.ts +104 -104
  105. package/vscode/icons/firefly-icon.svg +10 -10
  106. package/vscode/language-configuration.json +61 -61
  107. package/vscode/package-lock.json +3623 -3623
  108. package/vscode/package.json +160 -160
  109. package/vscode/snippets.json +241 -241
  110. package/webserver/.firefly/include/package-lock.json +16 -16
  111. package/webserver/.firefly/include/package.json +5 -5
  112. package/webserver/.firefly/package.ff +2 -2
  113. package/webserver/WebServer.ff +685 -685
  114. package/websocket/.firefly/package.ff +1 -1
  115. package/websocket/WebSocket.ff +131 -131
  116. package/crypto/SubtleCrypto.ff +0 -149
@@ -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
  }