···
204
204
"#
205
205
);
206
206
}
207
207
+
208
208
+
#[test]
209
209
+
fn inline_anonymous_function_call() {
210
210
+
assert_erl!(
211
211
+
"
212
212
+
pub fn main() {
213
213
+
fn(a, b) { #(a, b) }(42, False)
214
214
+
}
215
215
+
"
216
216
+
);
217
217
+
}
218
218
+
219
219
+
#[test]
220
220
+
fn inline_anonymous_function_in_pipe() {
221
221
+
assert_erl!(
222
222
+
"
223
223
+
pub fn main() {
224
224
+
1 |> fn(x) { x + 1 } |> fn(y) { y * y }
225
225
+
}
226
226
+
"
227
227
+
);
228
228
+
}
229
229
+
230
230
+
#[test]
231
231
+
fn inline_function_capture_in_pipe() {
232
232
+
// The function capture is desugared to an anonymous function, so it should
233
233
+
// be turned into a direct call to `add`
234
234
+
assert_erl!(
235
235
+
"
236
236
+
pub fn main() {
237
237
+
1 |> add(4, _)
238
238
+
}
239
239
+
240
240
+
fn add(a, b) { a + b }
241
241
+
"
242
242
+
);
243
243
+
}
···
1
1
+
---
2
2
+
source: compiler-core/src/erlang/tests/inlining.rs
3
3
+
expression: "\npub fn main() {\n fn(a, b) { #(a, b) }(42, False)\n}\n"
4
4
+
---
5
5
+
----- SOURCE CODE
6
6
+
7
7
+
pub fn main() {
8
8
+
fn(a, b) { #(a, b) }(42, False)
9
9
+
}
10
10
+
11
11
+
12
12
+
----- COMPILED ERLANG
13
13
+
-module(my@mod).
14
14
+
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
15
15
+
-define(FILEPATH, "project/test/my/mod.gleam").
16
16
+
-export([main/0]).
17
17
+
18
18
+
-file("project/test/my/mod.gleam", 2).
19
19
+
-spec main() -> {integer(), boolean()}.
20
20
+
main() ->
21
21
+
begin
22
22
+
A = 42,
23
23
+
B = false,
24
24
+
{A, B}
25
25
+
end.
···
1
1
+
---
2
2
+
source: compiler-core/src/erlang/tests/inlining.rs
3
3
+
expression: "\npub fn main() {\n 1 |> fn(x) { x + 1 } |> fn(y) { y * y }\n}\n"
4
4
+
---
5
5
+
----- SOURCE CODE
6
6
+
7
7
+
pub fn main() {
8
8
+
1 |> fn(x) { x + 1 } |> fn(y) { y * y }
9
9
+
}
10
10
+
11
11
+
12
12
+
----- COMPILED ERLANG
13
13
+
-module(my@mod).
14
14
+
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
15
15
+
-define(FILEPATH, "project/test/my/mod.gleam").
16
16
+
-export([main/0]).
17
17
+
18
18
+
-file("project/test/my/mod.gleam", 2).
19
19
+
-spec main() -> integer().
20
20
+
main() ->
21
21
+
_pipe = 1,
22
22
+
_pipe@1 = begin
23
23
+
X = _pipe,
24
24
+
X + 1
25
25
+
end,
26
26
+
begin
27
27
+
Y = _pipe@1,
28
28
+
Y * Y
29
29
+
end.
···
1
1
+
---
2
2
+
source: compiler-core/src/erlang/tests/inlining.rs
3
3
+
expression: "\npub fn main() {\n 1 |> add(4, _)\n}\n\nfn add(a, b) { a + b }\n"
4
4
+
---
5
5
+
----- SOURCE CODE
6
6
+
7
7
+
pub fn main() {
8
8
+
1 |> add(4, _)
9
9
+
}
10
10
+
11
11
+
fn add(a, b) { a + b }
12
12
+
13
13
+
14
14
+
----- COMPILED ERLANG
15
15
+
-module(my@mod).
16
16
+
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
17
17
+
-define(FILEPATH, "project/test/my/mod.gleam").
18
18
+
-export([main/0]).
19
19
+
20
20
+
-file("project/test/my/mod.gleam", 6).
21
21
+
-spec add(integer(), integer()) -> integer().
22
22
+
add(A, B) ->
23
23
+
A + B.
24
24
+
25
25
+
-file("project/test/my/mod.gleam", 2).
26
26
+
-spec main() -> integer().
27
27
+
main() ->
28
28
+
_pipe = 1,
29
29
+
begin
30
30
+
_capture = _pipe,
31
31
+
add(4, _capture)
32
32
+
end.
···
204
204
"#
205
205
);
206
206
}
207
207
+
208
208
+
#[test]
209
209
+
fn inline_anonymous_function_call() {
210
210
+
assert_js!(
211
211
+
"
212
212
+
pub fn main() {
213
213
+
fn(a, b) { #(a, b) }(42, False)
214
214
+
}
215
215
+
"
216
216
+
);
217
217
+
}
218
218
+
219
219
+
#[test]
220
220
+
fn inline_anonymous_function_in_pipe() {
221
221
+
assert_js!(
222
222
+
"
223
223
+
pub fn main() {
224
224
+
1 |> fn(x) { x + 1 } |> fn(y) { y * y }
225
225
+
}
226
226
+
"
227
227
+
);
228
228
+
}
229
229
+
230
230
+
#[test]
231
231
+
fn inline_function_capture_in_pipe() {
232
232
+
// The function capture is desugared to an anonymous function, so it should
233
233
+
// be turned into a direct call to `add`
234
234
+
assert_js!(
235
235
+
"
236
236
+
pub fn main() {
237
237
+
1 |> add(4, _)
238
238
+
}
239
239
+
240
240
+
fn add(a, b) { a + b }
241
241
+
"
242
242
+
);
243
243
+
}
···
1
1
+
---
2
2
+
source: compiler-core/src/javascript/tests/inlining.rs
3
3
+
expression: "\npub fn main() {\n fn(a, b) { #(a, b) }(42, False)\n}\n"
4
4
+
---
5
5
+
----- SOURCE CODE
6
6
+
7
7
+
pub fn main() {
8
8
+
fn(a, b) { #(a, b) }(42, False)
9
9
+
}
10
10
+
11
11
+
12
12
+
----- COMPILED JAVASCRIPT
13
13
+
export function main() {
14
14
+
{
15
15
+
let a = 42;
16
16
+
let b = false;
17
17
+
return [a, b];
18
18
+
}
19
19
+
}
···
1
1
+
---
2
2
+
source: compiler-core/src/javascript/tests/inlining.rs
3
3
+
expression: "\npub fn main() {\n 1 |> fn(x) { x + 1 } |> fn(y) { y * y }\n}\n"
4
4
+
---
5
5
+
----- SOURCE CODE
6
6
+
7
7
+
pub fn main() {
8
8
+
1 |> fn(x) { x + 1 } |> fn(y) { y * y }
9
9
+
}
10
10
+
11
11
+
12
12
+
----- COMPILED JAVASCRIPT
13
13
+
export function main() {
14
14
+
let _pipe = 1;
15
15
+
let _block;
16
16
+
{
17
17
+
let x = _pipe;
18
18
+
_block = x + 1;
19
19
+
}
20
20
+
let _pipe$1 = _block;
21
21
+
{
22
22
+
let y = _pipe$1;
23
23
+
return y * y;
24
24
+
}
25
25
+
}
···
1
1
+
---
2
2
+
source: compiler-core/src/javascript/tests/inlining.rs
3
3
+
expression: "\npub fn main() {\n 1 |> add(4, _)\n}\n\nfn add(a, b) { a + b }\n"
4
4
+
---
5
5
+
----- SOURCE CODE
6
6
+
7
7
+
pub fn main() {
8
8
+
1 |> add(4, _)
9
9
+
}
10
10
+
11
11
+
fn add(a, b) { a + b }
12
12
+
13
13
+
14
14
+
----- COMPILED JAVASCRIPT
15
15
+
function add(a, b) {
16
16
+
return a + b;
17
17
+
}
18
18
+
19
19
+
export function main() {
20
20
+
let _pipe = 1;
21
21
+
{
22
22
+
let _capture = _pipe;
23
23
+
return add(4, _capture);
24
24
+
}
25
25
+
}