70b11ee120
make narrowing conversions in braced initialisers explicit
...
A braced initialiser does not allow a narrowing conversion unless the value
is a constant expression the compiler can prove fits. Every site here holds a
runtime value: WORLD_COLS is the global guiWorldCols, the laptop screen
coordinates are built from iScreenWidthOffset, the sector limits come from the
externalised options. MSVC accepts all of it silently; clang rejects it, and
it is ill-formed.
Nothing about the generated code changes. MSVC was already performing these
conversions; the casts only say so out loud, at the 73 places where it was
happening implicitly.
The invariant: each site is wrapped in a static_cast to the element type the
initialiser already had, and nothing else is touched. No type is widened, no
expression is reassociated, no value is clamped or checked. static_cast rather
than a C-style cast so that a later reader can grep for the narrowings, and so
that none of these can quietly become a reinterpret_cast if a type changes.
Verification:
# every changed line differs only by inserted casts and their parentheses
git show HEAD -U0 | grep '^[+-][^+-]' |
sed -E 's/static_cast<[A-Za-z0-9_]+>//g; s/[()]//g; s/^[+-]//' |
sort | uniq -c | awk '$1 % 2' # no output
git show HEAD -U0 | grep -c '^+[^+]' # 38 lines, 73 casts
ninja -C build parse # narrowing class gone: 129 -> 91 sites
ninja -C build -k 0 # Release, four applications, green
ninja -C build-debug -k 0 # Debug, four applications, green
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-07-23 19:29:55 -03:00
..
2025-12-03 23:52:05 +02:00
2013-10-19 12:47:53 +00:00
2023-01-03 15:51:48 +02:00
2012-03-23 18:46:54 +00:00
2025-08-16 22:01:12 -03:00
2011-01-18 09:11:09 +00:00
2023-01-03 15:51:48 +02:00
2006-04-19 11:32:51 +00:00
2023-01-03 15:51:48 +02:00
2006-04-19 11:32:51 +00:00
2026-07-21 09:46:41 -03:00
2025-09-26 02:31:02 -03:00
2023-01-03 15:51:48 +02:00
2006-04-19 11:32:51 +00:00
2026-07-23 19:29:55 -03:00
2012-10-21 16:10:49 +00:00
2024-12-30 21:21:30 +02:00
2020-05-17 14:13:57 +00:00
2026-07-23 19:29:55 -03:00
2025-01-03 21:03:09 -03:00
2025-08-16 22:01:12 -03:00
2006-04-19 11:32:51 +00:00
2023-01-03 15:51:48 +02:00
2006-04-19 11:32:51 +00:00
2025-10-08 05:36:37 -03:00
2012-05-18 04:36:52 +00:00
2025-10-08 05:36:37 -03:00
2012-03-23 18:46:54 +00:00
2023-01-03 15:51:48 +02:00
2006-04-19 11:32:51 +00:00
2025-08-16 22:01:12 -03:00
2006-04-19 11:32:51 +00:00
2023-01-03 15:51:48 +02:00
2006-04-19 11:32:51 +00:00
2023-01-03 15:51:48 +02:00
2024-12-14 19:05:48 -03:00
2025-08-16 22:01:12 -03:00
2024-12-14 19:05:48 -03:00
2025-08-16 22:01:12 -03:00
2024-12-14 19:05:48 -03:00
2025-08-16 22:01:12 -03:00
2006-04-19 11:32:51 +00:00
2023-01-03 15:51:48 +02:00
2024-12-14 19:05:48 -03:00
2024-12-14 19:05:48 -03:00
2025-08-16 22:01:12 -03:00
2014-08-10 13:45:11 +00:00
2025-08-16 22:01:12 -03:00
2024-12-14 19:05:48 -03:00
2025-08-16 22:01:12 -03:00
2026-07-21 05:33:03 -03:00
2023-01-14 02:08:39 -03:00
2020-05-30 14:26:16 +00:00
2021-08-22 19:00:09 +00:00
2020-05-30 14:26:16 +00:00
2016-05-01 19:04:50 +00:00
2026-01-04 14:57:55 +02:00
2026-01-04 14:57:55 +02:00
2025-08-16 22:01:12 -03:00
2016-07-16 12:21:22 +00:00
2025-08-16 22:01:12 -03:00
2016-07-16 12:21:22 +00:00
2025-08-16 22:01:12 -03:00
2020-05-17 20:52:27 +00:00
2025-08-16 22:01:12 -03:00
2022-04-13 10:43:49 +00:00
2025-10-08 05:36:37 -03:00
2025-10-08 05:36:37 -03:00
2023-01-03 15:51:48 +02:00
2024-12-14 19:05:48 -03:00
2023-01-03 15:51:48 +02:00
2024-12-14 19:05:48 -03:00
2025-08-16 22:01:12 -03:00
2024-12-14 19:05:48 -03:00
2023-01-03 15:51:48 +02:00
2006-04-19 11:32:51 +00:00
2023-01-03 15:51:48 +02:00
2006-04-19 11:32:51 +00:00
2006-04-19 11:32:51 +00:00
2006-04-19 11:32:51 +00:00
2025-08-16 22:01:12 -03:00
2023-07-04 20:58:56 -07:00
2025-08-16 22:01:12 -03:00
2024-12-14 19:05:48 -03:00
2025-08-16 22:01:12 -03:00
2024-12-14 19:05:48 -03:00
2025-08-16 22:01:12 -03:00
2024-12-14 19:05:48 -03:00
2025-08-16 22:01:12 -03:00
2024-12-14 19:05:48 -03:00
2025-08-16 22:01:12 -03:00
2025-08-16 22:01:12 -03:00
2025-08-16 22:01:12 -03:00
2024-12-14 19:05:48 -03:00
2025-08-16 22:01:12 -03:00
2024-12-14 19:05:48 -03:00
2025-08-16 22:01:12 -03:00
2025-08-16 22:01:12 -03:00
2025-08-16 22:01:12 -03:00
2025-08-16 22:01:12 -03:00
2025-08-16 22:01:12 -03:00
2024-12-14 19:05:48 -03:00
2025-08-16 22:01:12 -03:00
2020-06-30 20:23:25 +00:00
2025-08-16 22:01:12 -03:00
2025-08-16 22:01:12 -03:00
2025-08-16 22:01:12 -03:00
2024-12-14 19:05:48 -03:00
2025-08-16 22:01:12 -03:00
2025-08-16 22:01:12 -03:00
2025-09-24 16:14:10 +03:00
2025-08-16 22:01:12 -03:00
2025-08-16 22:01:12 -03:00
2024-12-14 19:05:48 -03:00
2025-08-16 22:01:12 -03:00
2024-12-14 19:05:48 -03:00
2025-08-16 22:01:12 -03:00
2025-08-16 22:01:12 -03:00
2025-08-16 22:01:12 -03:00
2026-07-21 05:33:03 -03:00
2025-08-16 22:01:12 -03:00
2024-12-14 19:05:48 -03:00
2025-08-16 22:01:12 -03:00
2024-12-14 19:05:48 -03:00
2025-08-16 22:01:12 -03:00
2024-12-14 19:05:48 -03:00
2025-08-16 22:01:12 -03:00
2025-08-16 22:01:12 -03:00
2025-08-16 22:01:12 -03:00
2025-08-16 22:01:12 -03:00
2025-08-16 22:01:12 -03:00
2026-07-21 05:33:03 -03:00
2025-08-16 22:01:12 -03:00
2024-12-14 19:05:48 -03:00
2025-08-16 22:01:12 -03:00
2022-08-01 21:15:34 +00:00
2023-01-03 15:51:48 +02:00
2024-12-14 19:05:48 -03:00
2026-01-03 17:27:43 +02:00
2024-12-14 19:05:48 -03:00
2023-01-03 15:51:48 +02:00
2024-12-14 19:05:48 -03:00
2006-04-19 11:32:51 +00:00
2025-08-16 22:01:12 -03:00
2014-05-28 22:10:42 +00:00
2025-08-16 22:01:12 -03:00
2018-02-27 00:49:42 +00:00
2026-01-03 17:27:43 +02:00
2025-08-16 22:01:12 -03:00
2024-11-16 11:55:57 +02:00
2025-09-24 16:14:10 +03:00
2014-08-10 13:45:11 +00:00
2025-10-08 05:36:37 -03:00
2024-12-14 19:05:48 -03:00
2025-10-08 05:36:37 -03:00
2024-12-14 19:05:48 -03:00
2025-08-16 22:01:12 -03:00
2024-12-14 19:05:48 -03:00
2026-01-03 17:27:43 +02:00
2013-08-15 20:20:06 +00:00
2020-07-04 14:47:40 +00:00
2016-05-06 14:51:24 +00:00
2025-08-16 22:01:12 -03:00
2016-05-06 14:51:24 +00:00
2025-10-08 05:36:37 -03:00
2025-10-08 03:07:23 -03:00
2025-08-16 22:01:12 -03:00
2014-08-30 17:34:25 +00:00
2026-01-03 17:27:43 +02:00
2025-08-16 22:01:12 -03:00
2025-08-16 22:01:12 -03:00
2006-04-19 11:32:51 +00:00
2024-12-14 19:05:48 -03:00
2025-08-16 22:01:12 -03:00
2006-04-19 11:32:51 +00:00
2025-08-16 22:01:12 -03:00
2014-08-10 13:45:11 +00:00
2024-12-14 19:05:48 -03:00
2023-01-03 15:51:48 +02:00
2023-01-03 15:51:48 +02:00
2024-12-14 19:05:48 -03:00
2025-08-16 22:01:12 -03:00
2026-01-03 17:27:43 +02:00
2023-01-03 15:51:48 +02:00
2023-01-03 15:51:48 +02:00
2023-01-03 15:51:48 +02:00
2023-01-03 15:51:48 +02:00
2023-01-03 15:51:48 +02:00
2023-01-03 15:51:48 +02:00
2025-08-16 22:01:12 -03:00