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