Skip to content

Commit cf0a2b6

Browse files
committed
fix umultibyte character counting in processed
1 parent d23d6e6 commit cf0a2b6

File tree

2 files changed

+25
-34
lines changed

2 files changed

+25
-34
lines changed

libs/sqf/tests/snapshots/lints__simple_s08_format_args.snap

+20-30
Original file line numberDiff line numberDiff line change
@@ -3,45 +3,35 @@ source: libs/sqf/tests/lints.rs
33
expression: lint(stringify! (s08_format_args))
44
---
55
error[L-S08]: format string: empty array
6-
┌─ s08_format_args.sqf:4:21
7-
│
8-
4 │ format [" • %1", 1];
9-
│ ╭─────────────────────^
10-
5 │ │ format []; // empty array
11-
│ ╰───────^ format string: empty array
6+
┌─ s08_format_args.sqf:5:1
7+
│
8+
5 │ format []; // empty array
9+
│ ^^^^^^^^^ format string: empty array
1210

1311

1412
error[L-S08]: format string: unused args [used "%1", passed 3]
15-
┌─ s08_format_args.sqf:5:11
16-
│
17-
5 │ format []; // empty array
18-
│ ╭───────────^
19-
6 │ │ format ["%1", 1, 2, 3]; // unused args
20-
│ ╰───────────────────^ format string: unused args [used "%1", passed 3]
13+
┌─ s08_format_args.sqf:6:1
14+
│
15+
6 │ format ["%1", 1, 2, 3]; // unused args
16+
│ ^^^^^^^^^^^^^^^^^^^^^ format string: unused args [used "%1", passed 3]
2117

2218

2319
error[L-S08]: format string: undefined tokens [used "%2", passed 1]
24-
┌─ s08_format_args.sqf:6:24
25-
│
26-
6 │ format ["%1", 1, 2, 3]; // unused args
27-
│ ╭────────────────────────^
28-
7 │ │ format ["%1%2", 1]; // undefined tokens
29-
│ ╰───────────────^ format string: undefined tokens [used "%2", passed 1]
20+
┌─ s08_format_args.sqf:7:1
21+
│
22+
7 │ format ["%1%2", 1]; // undefined tokens
23+
│ ^^^^^^^^^^^^^^^^^ format string: undefined tokens [used "%2", passed 1]
3024

3125

3226
error[L-S08]: format string: skipped tokens [used "%5", but only 1 tokens]
33-
┌─ s08_format_args.sqf:7:20
34-
│
35-
7 │ format ["%1%2", 1]; // undefined tokens
36-
│ ╭────────────────────^
37-
8 │ │ format ["%5", 1, 2 ,3 ,4, 5]; // skipped tokens
38-
│ ╰─────────────────────────^ format string: skipped tokens [used "%5", but only 1 tokens]
27+
┌─ s08_format_args.sqf:8:1
28+
│
29+
8 │ format ["%5", 1, 2 ,3 ,4, 5]; // skipped tokens
30+
│ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ format string: skipped tokens [used "%5", but only 1 tokens]
3931

4032

4133
error[L-S08]: format string: undefined tokens [used "%1", passed 0]
42-
┌─ s08_format_args.sqf:8:30
43-
│
44-
8 │ format ["%5", 1, 2 ,3 ,4, 5]; // skipped tokens
45-
│ ╭──────────────────────────────^
46-
9 │ │ formatText ["me too %1"];
47-
│ ╰─────────────────────^ format string: undefined tokens [used "%1", passed 0]
34+
┌─ s08_format_args.sqf:9:1
35+
│
36+
9 │ formatText ["me too %1"];
37+
│ ^^^^^^^^^^^^^^^^^^^^^^^ format string: undefined tokens [used "%1", passed 0]

libs/workspace/src/reporting/processed.rs

+5-4
Original file line numberDiff line numberDiff line change
@@ -106,12 +106,13 @@ fn append_token(
106106
}
107107
processed.mappings.push(Mapping {
108108
processed: (LineCol(processed.total, (processed.line, processed.col)), {
109-
processed.col += str.len();
110-
processed.total += str.len();
109+
let chars = str.chars().count();
110+
processed.col += chars;
111+
processed.total += chars;
111112
processed.output.push_str(&str);
112113
LineCol(
113-
processed.total + str.len(),
114-
(processed.line, processed.col + str.len()),
114+
processed.total + chars,
115+
(processed.line, processed.col + chars),
115116
)
116117
}),
117118
source,

0 commit comments

Comments
 (0)