Skip to content

Commit afa750a

Browse files
committed
Add filepath to errors on Erlang
1 parent e36bf44 commit afa750a

File tree

69 files changed

+300
-227
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

69 files changed

+300
-227
lines changed

compiler-core/src/erlang.rs

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2021,9 +2021,22 @@ fn erlang_error<'a>(
20212021
",",
20222022
line(),
20232023
"message => ",
2024-
message.clone()
2024+
message.clone(),
2025+
",",
2026+
line(),
2027+
"file => ?FILEPATH,",
2028+
line(),
2029+
"module => ",
2030+
env.module.to_doc().surround("<<\"", "\"/utf8>>"),
2031+
",",
2032+
line(),
2033+
"function => ",
2034+
string(env.function),
2035+
",",
2036+
line(),
2037+
"line => ",
2038+
env.line_numbers.line_number(location.start),
20252039
];
2026-
20272040
for (key, value) in fields {
20282041
fields_doc = fields_doc
20292042
.append(",")
@@ -2032,23 +2045,7 @@ fn erlang_error<'a>(
20322045
.append(" => ")
20332046
.append(value);
20342047
}
2035-
let fields_doc = fields_doc
2036-
.append(",")
2037-
.append(line())
2038-
.append("module => ")
2039-
.append(env.module.to_doc().surround("<<\"", "\"/utf8>>"))
2040-
.append(",")
2041-
.append(line())
2042-
.append("function => ")
2043-
.append(string(env.function))
2044-
.append(",")
2045-
.append(line())
2046-
.append("line => ")
2047-
.append(env.line_numbers.line_number(location.start));
2048-
let error = "#{"
2049-
.to_doc()
2050-
.append(fields_doc.group().nest(INDENT))
2051-
.append("}");
2048+
let error = docvec!["#{", fields_doc.group().nest(INDENT), "}"];
20522049
docvec!["erlang:error", wrap_args([error.group()])]
20532050
}
20542051

compiler-core/src/erlang/snapshots/gleam_core__erlang__tests__bit_pattern_shadowing.snap

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ main() ->
3333
_ ->
3434
erlang:error(#{gleam_error => panic,
3535
message => <<"`panic` expression evaluated."/utf8>>,
36+
file => ?FILEPATH,
3637
module => <<"my/mod"/utf8>>,
3738
function => <<"main"/utf8>>,
3839
line => 7})

compiler-core/src/erlang/snapshots/gleam_core__erlang__tests__discard_in_assert.snap

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,13 @@ x(Y) ->
2424
_assert_fail ->
2525
erlang:error(#{gleam_error => let_assert,
2626
message => <<"Pattern match failed, no pattern matched the value."/utf8>>,
27+
file => ?FILEPATH,
28+
module => <<"my/mod"/utf8>>,
29+
function => <<"x"/utf8>>,
30+
line => 2,
2731
value => _assert_fail,
2832
start => 16,
2933
pattern_start => 27,
30-
pattern_end => 32,
31-
module => <<"my/mod"/utf8>>,
32-
function => <<"x"/utf8>>,
33-
line => 2})
34+
pattern_end => 32})
3435
end,
3536
1.

compiler-core/src/erlang/tests/snapshots/gleam_core__erlang__tests__assert__assert_binary_operation.snap

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@ main() ->
2626
true -> nil;
2727
false -> erlang:error(#{gleam_error => assert,
2828
message => <<"Assertion failed."/utf8>>,
29+
file => ?FILEPATH,
30+
module => <<"my/mod"/utf8>>,
31+
function => <<"main"/utf8>>,
32+
line => 4,
2933
kind => binary_operator,
3034
operator => '||',
3135
left => #{kind => expression,
@@ -40,8 +44,5 @@ main() ->
4044
},
4145
start => 34,
4246
expression_start => 41,
43-
expression_end => 51,
44-
module => <<"my/mod"/utf8>>,
45-
function => <<"main"/utf8>>,
46-
line => 4})
47+
expression_end => 51})
4748
end.

compiler-core/src/erlang/tests/snapshots/gleam_core__erlang__tests__assert__assert_binary_operation2.snap

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@ eq(A, B) ->
2424
true -> nil;
2525
false -> erlang:error(#{gleam_error => assert,
2626
message => <<"Assertion failed."/utf8>>,
27+
file => ?FILEPATH,
28+
module => <<"my/mod"/utf8>>,
29+
function => <<"eq"/utf8>>,
30+
line => 3,
2731
kind => binary_operator,
2832
operator => '==',
2933
left => #{kind => expression,
@@ -38,8 +42,5 @@ eq(A, B) ->
3842
},
3943
start => 21,
4044
expression_start => 28,
41-
expression_end => 34,
42-
module => <<"my/mod"/utf8>>,
43-
function => <<"eq"/utf8>>,
44-
line => 3})
45+
expression_end => 34})
4546
end.

compiler-core/src/erlang/tests/snapshots/gleam_core__erlang__tests__assert__assert_binary_operation3.snap

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@ assert_answer(X) ->
2525
true -> nil;
2626
false -> erlang:error(#{gleam_error => assert,
2727
message => <<"Assertion failed."/utf8>>,
28+
file => ?FILEPATH,
29+
module => <<"my/mod"/utf8>>,
30+
function => <<"assert_answer"/utf8>>,
31+
line => 3,
2832
kind => binary_operator,
2933
operator => '==',
3034
left => #{kind => expression,
@@ -39,8 +43,5 @@ assert_answer(X) ->
3943
},
4044
start => 29,
4145
expression_start => 36,
42-
expression_end => 43,
43-
module => <<"my/mod"/utf8>>,
44-
function => <<"assert_answer"/utf8>>,
45-
line => 3})
46+
expression_end => 43})
4647
end.

compiler-core/src/erlang/tests/snapshots/gleam_core__erlang__tests__assert__assert_binary_operator_with_side_effects.snap

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,10 @@ go(X) ->
3636
true -> nil;
3737
false -> erlang:error(#{gleam_error => assert,
3838
message => <<"Assertion failed."/utf8>>,
39+
file => ?FILEPATH,
40+
module => <<"my/mod"/utf8>>,
41+
function => <<"go"/utf8>>,
42+
line => 8,
3943
kind => binary_operator,
4044
operator => '&&',
4145
left => #{kind => literal,
@@ -50,13 +54,14 @@ go(X) ->
5054
},
5155
start => 75,
5256
expression_start => 82,
53-
expression_end => 102,
54-
module => <<"my/mod"/utf8>>,
55-
function => <<"go"/utf8>>,
56-
line => 8})
57+
expression_end => 102})
5758
end;
5859
false -> erlang:error(#{gleam_error => assert,
5960
message => <<"Assertion failed."/utf8>>,
61+
file => ?FILEPATH,
62+
module => <<"my/mod"/utf8>>,
63+
function => <<"go"/utf8>>,
64+
line => 8,
6065
kind => binary_operator,
6166
operator => '&&',
6267
left => #{kind => literal,
@@ -70,8 +75,5 @@ go(X) ->
7075
},
7176
start => 75,
7277
expression_start => 82,
73-
expression_end => 102,
74-
module => <<"my/mod"/utf8>>,
75-
function => <<"go"/utf8>>,
76-
line => 8})
78+
expression_end => 102})
7779
end.

compiler-core/src/erlang/tests/snapshots/gleam_core__erlang__tests__assert__assert_binary_operator_with_side_effects2.snap

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,10 @@ go(X) ->
3636
true -> nil;
3737
false -> erlang:error(#{gleam_error => assert,
3838
message => <<"Assertion failed."/utf8>>,
39+
file => ?FILEPATH,
40+
module => <<"my/mod"/utf8>>,
41+
function => <<"go"/utf8>>,
42+
line => 8,
3943
kind => binary_operator,
4044
operator => '&&',
4145
left => #{kind => expression,
@@ -50,13 +54,14 @@ go(X) ->
5054
},
5155
start => 75,
5256
expression_start => 82,
53-
expression_end => 110,
54-
module => <<"my/mod"/utf8>>,
55-
function => <<"go"/utf8>>,
56-
line => 8})
57+
expression_end => 110})
5758
end;
5859
false -> erlang:error(#{gleam_error => assert,
5960
message => <<"Assertion failed."/utf8>>,
61+
file => ?FILEPATH,
62+
module => <<"my/mod"/utf8>>,
63+
function => <<"go"/utf8>>,
64+
line => 8,
6065
kind => binary_operator,
6166
operator => '&&',
6267
left => #{kind => expression,
@@ -70,8 +75,5 @@ go(X) ->
7075
},
7176
start => 75,
7277
expression_start => 82,
73-
expression_end => 110,
74-
module => <<"my/mod"/utf8>>,
75-
function => <<"go"/utf8>>,
76-
line => 8})
78+
expression_end => 110})
7779
end.

compiler-core/src/erlang/tests/snapshots/gleam_core__erlang__tests__assert__assert_function_call.snap

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,13 @@ main() ->
3333
true -> nil;
3434
false -> erlang:error(#{gleam_error => assert,
3535
message => <<"Assertion failed."/utf8>>,
36+
file => ?FILEPATH,
37+
module => <<"my/mod"/utf8>>,
38+
function => <<"main"/utf8>>,
39+
line => 7,
3640
kind => function_call,
3741
arguments => [],
3842
start => 41,
3943
expression_start => 48,
40-
expression_end => 54,
41-
module => <<"my/mod"/utf8>>,
42-
function => <<"main"/utf8>>,
43-
line => 7})
44+
expression_end => 54})
4445
end.

compiler-core/src/erlang/tests/snapshots/gleam_core__erlang__tests__assert__assert_function_call2.snap

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ go(X) ->
3333
true -> nil;
3434
false -> erlang:error(#{gleam_error => assert,
3535
message => <<"Assertion failed."/utf8>>,
36+
file => ?FILEPATH,
37+
module => <<"my/mod"/utf8>>,
38+
function => <<"go"/utf8>>,
39+
line => 7,
3640
kind => function_call,
3741
arguments => [#{kind => literal,
3842
value => true,
@@ -45,8 +49,5 @@ go(X) ->
4549
}],
4650
start => 45,
4751
expression_start => 52,
48-
expression_end => 64,
49-
module => <<"my/mod"/utf8>>,
50-
function => <<"go"/utf8>>,
51-
line => 7})
52+
expression_end => 64})
5253
end.

0 commit comments

Comments
 (0)