Rangi
0150eb4bf3
Exclude more lines from test coverage ( #1663 )
...
These fall into a few categories:
- `_unreachable()`
- Verbose print messages
- Errors that should never practically occur (alloc/read/write failure,
more than UINT32_MAX anonymous labels, etc)
2025-02-17 04:56:10 -05:00
Rangi
632342b254
Use LCOV_EXCL comments to exclude some lines from test coverage ( #1662 )
2025-02-16 13:56:55 -05:00
Rangi
c9060c7f2d
Increase test coverage ( #1661 )
2025-02-16 09:29:16 -05:00
Rangi
993879a2ed
Derive operator!= from operator== ( #1660 )
2025-02-15 12:37:42 +01:00
Rangi
62309d5c87
Define operator!= in terms of operator== ( #1659 )
2025-02-15 11:34:06 +01:00
Rangi
b2e865ee2a
Disable EQUS expansion for raw symbols (by parsing them as strings) ( #1648 )
2025-02-15 10:44:51 +01:00
Rangi
3feb75f84f
Implement new string functions ( #1655 )
...
`STRFIND`, `STRRFIND`, `STRCHAR`, `STRSLICE`, `CHARCMP`, `CHARSIZE`, and `REVCHAR`
2025-02-14 23:09:45 +01:00
Rangi
2aef09c8d9
Allow the bit/res/set bit index to be determined at link time ( #1654 )
...
This increments the object file revision number from 11 to 12
since it adds a new `RPN_BIT_INDEX` command.
2025-02-12 17:14:10 +01:00
Rangi
177a3abfac
Fix bug where macro names can be treated as numeric symbols ( #1653 )
2025-02-08 23:03:21 +01:00
Rangi
4c916b8da8
Parser refers to "symbol"s, "label"s, and "local label"s, not "identifier"s ( #1652 )
...
This better matches how the lexed tokens are discussed in rgbasm(5)
2025-02-06 18:01:33 +01:00
Rangi
fbde24ee17
Add contrib/checkformat.bash to check for clang-formatting ( #1646 )
2025-02-04 10:40:38 +01:00
Rangi
91310c9eb6
Update the post-release checklist to mention rgbds-live ( #1647 )
2025-02-04 09:59:03 +01:00
Rangi
29ece2940d
Mention ASMotor's continued development ( #1643 )
2025-02-01 21:39:19 +01:00
Rangi
03452c6d4f
Allow git describe to get the version for FreeBSD and Cygwin in CI ( #1640 )
...
* Specify `safe.directory`
* Fetch tags
* Fetch all commits
2025-01-29 19:57:15 -05:00
Rangi
b35e9d86fb
Remove redundant @-style doc comment tags ( #1641 )
2025-01-29 19:56:28 -05:00
Rangi
e20347e38c
Add more RGBLINK tests ( #1639 )
2025-01-29 12:53:44 -05:00
Rangi
f61019dd68
Add more RGBLINK test coverage ( #1637 )
2025-01-29 11:41:08 -05:00
Rangi
c19ddc80f0
Fix failing assertion with backslash at EOF in macro arguments ( #1634 )
...
`Expansion::advance()` can increase its offset beyond the size,
so I don't think this assumption was valid in the first place;
`BufferedContent::advance()` should be able to as well.
2025-01-28 21:51:11 -05:00
Rangi
a59867cd78
Consistently use LF line endings in expected .out and .err output ( #1635 )
...
Test scripts compare files as text
2025-01-28 21:24:40 -05:00
Rangi
375adc6804
Fix STRLEN and STRSUB on incomplete UTF-8 ( #1633 )
2025-01-28 13:13:35 -05:00
Rangi
44caffe04a
Fix CHARLEN and CHARSUB on invalid UTF-8 ( #1630 )
2025-01-28 02:01:18 -05:00
Rangi
20c18256ed
Avoid errors after missing INCLUDE with -MG ( #1627 )
2025-01-25 12:38:17 -05:00
Rangi
d9654b752f
Support -h/--help for all programs ( #1620 )
2025-01-21 21:24:17 -05:00
Rangi
c2db23aef0
Run internal tests in FreeBSD ( #1616 )
2025-01-20 14:08:48 -05:00
Rangi
2426068409
Undeprecate ld [$ff00+c] ( #1619 )
2025-01-20 14:05:15 -05:00
Rangi
147a5c9bf3
Document more obsolete syntax ( #1618 )
2025-01-18 23:50:20 -05:00
Rangi
6ae3f040b8
Correct the DAA documentation ( #1617 )
2025-01-17 23:04:03 -05:00
Rangi
e561f63db3
Run internal tests in Cygwin ( #1592 )
2025-01-17 18:31:37 -05:00
Rangi
af9de812ec
Update libpng to 1.6.45 ( #1615 )
2025-01-17 14:41:38 -05:00
Rangi
382ad17969
Don't output sections in reverse order ( #1613 )
2025-01-17 01:28:17 -05:00
Rangi
727c1f5b50
Update Dockerfile to use Debian 12 slim ( #1599 )
2025-01-04 14:54:30 -05:00
Rangi
d829fd2ffe
Remove the 99999 macro arg limit ( #1597 )
2025-01-04 04:04:12 -05:00
Rangi
b13c0f2f8e
Use a constant for 0x8001 ( #1596 )
2025-01-04 04:03:40 -05:00
Rangi
73ad431b8d
Fix the node type for "file" nodes in object files ( #1593 )
2025-01-03 17:20:06 +01:00
Rangi
8363f25d47
Enable more sanitizers in make develop ( #1588 )
...
- `-fsanitize=undefined` encompasses multiple checks we were specifying
- "detect_leaks=1" for `__asan_default_options` checks for memory leaks
(except for with macOS clang++, which does not support LSan)
- `-fsanitize=float-divide-by-zero` is an extra UBSan check
(and reveals a UB bug to fix with fixed-point `DIV` and `LOG`)
2024-12-31 10:02:20 +01:00
Rangi
72b2a4d7c0
Use if constexpr to guarantee compile-time simplification ( #1590 )
2024-12-30 23:44:12 -05:00
Rangi
06daf2a9b5
Include <signal.h> in rgbgfx_test.cpp ( #1589 )
2024-12-30 23:22:14 +01:00
Rangi
ad95d2e06f
Allow deduplicating tiles with neither an input nor output tileset ( #1585 )
2024-12-30 18:58:07 +01:00
Rangi
5197e6b79f
Run gcc static analysis in CI ( #1587 )
2024-12-30 09:57:41 -05:00
Sylvie
c1c5b10082
Deprecate LDH with $00-$FF ( #1575 )
2024-12-10 21:27:37 -05:00
Sylvie
f44de0c7ae
Deprecate LD with [C] ( #1574 )
2024-12-10 21:13:09 -05:00
Sylvie
c1b85554a8
Document obsolete syntax in rgbasm-old(5) ( #1571 )
2024-12-10 12:34:37 -05:00
Sylvie
b877c81c32
Use C++-style casts ( #1576 )
2024-12-09 21:56:54 -05:00
Sylvie
573e044b30
Deprecate LDIO ( #1567 )
...
* Deprecate `LDIO`
* `ld [$ff00+n8], a` is not treated as `ldh [n8], a`
2024-12-05 12:49:13 -05:00
Sylvie
0b147c9386
Fix ** right-associativity, and clarify docs ( #1566 )
2024-12-03 20:40:50 -05:00
Sylvie
6982c8a116
Improve the instruction documentation ( #1561 )
2024-12-02 15:41:57 -05:00
Sylvie
a5d18d62df
Explain the DAA instruction algorithm ( #1564 )
2024-11-29 10:42:34 -05:00
Sylvie
e0ee9dc3ad
Add reverse_1bit RGBGFX test ( #1555 )
...
Fixes a bug to always use 2bpp `_data` in `TileData`
2024-11-24 19:30:49 -05:00
Sylvie
a7fdb2c3d3
Add more RGBGFX test coverage ( #1553 )
2024-10-27 11:32:21 -04:00
Sylvie
5efd303b7f
Allow LOAD FRAGMENT ( #1552 )
...
This was implemented in #736 but removed after discussion in #869 .
Fixes #1537
2024-10-24 19:45:44 -04:00
Sylvie
7fcf4ba60f
Correctly recover from syntax errors at the first token of a line ( #1549 )
2024-10-22 21:01:44 +02:00
Sylvie
f048cbbb11
Clean up some man pages ( #1547 )
2024-10-22 13:07:09 -04:00
Sylvie
90286ccbbc
Fix detection of tiles with too many colors ( #1546 )
2024-10-20 13:51:39 -04:00
Sylvie
b33aa31944
LOAD FRAGMENT is not allowed (#1536 )
2024-10-17 14:42:19 -04:00
Sylvie
3b3263273c
Make ENDL optional like ENDSECTION ( #1538 )
...
Add warning for `LOAD` without `ENDL`
2024-10-15 21:13:50 -04:00
Sylvie
bc5a71ff88
Update some RGBLINK error messages ( #1544 )
2024-10-16 01:42:49 +02:00
Sylvie
a2ff653a83
Fix nested undefined interpolation segfault ( #1542 )
2024-10-16 00:09:47 +02:00
Sylvie
a13723c523
Implement 0x/0o/0b number prefixes ( #1533 )
2024-10-08 15:56:00 -04:00
Sylvie
cf85146353
Refactoring and enhancements to RGBASM warnings ( #1526 )
...
* Allow a `no-` prefix to negate "meta" warnings
(`-Wno-all`, `-Wno-extra`, `-Wno-everything`)
* Allow `-Wno-error=...` to override `-Werror`
(including for "meta" warnings)
2024-10-04 21:52:40 +02:00
Sylvie
d5159f66be
-Wall enables -Wcharmap-redef, and document -Wnested-comment (#1528 )
2024-09-30 14:34:58 -04:00
Sylvie
d5ded84501
Move definition of _POSIX_C_SOURCE to include/platform.hpp ( #1524 )
2024-09-29 23:53:15 +02:00
Sylvie
4cd0dd5314
Use setmode instead of fdopen ( #1520 )
2024-09-29 14:06:59 -04:00
Sylvie
9783671399
Simplify some C++ abstractions ( #1518 )
...
* Remove namespaces
* Prefer `bool operator==`, not `friend auto operator==`
* Prefer not to use `using`
* Use a `constexpr` function instead of a template for `flipTable`
2024-09-26 00:07:27 -04:00
Sylvie
22767e36e2
Refer to "end of line", not "newline" ( #1517 )
2024-09-23 02:15:02 +02:00
Sylvie
6b89938da7
Avoid treating labels and macros differently in column 1 ( #1515 )
...
Fixes #1512
2024-09-23 01:26:25 +02:00
Sylvie
15919e550f
Add test to demonstrate lack of expansions in skipIfBlock ( #1516 )
2024-09-22 15:31:12 -04:00
Sylvie
84c01f064f
Refactor some workflows for consistency ( #1510 )
2024-09-21 11:12:09 -04:00
Sylvie
9ef2e43bf7
Track local label scope, string equated as .. ( #1504 )
2024-09-18 09:52:30 -04:00
Sylvie
197f6cb0ba
No need for .c_str() with keywordDict lookups ( #1505 )
2024-09-18 12:23:05 +02:00
Sylvie
122ef95d9c
Implement . string constant for the current label scope ( #1499 )
2024-09-13 21:20:01 +02:00
Sylvie
bfb96b038d
Make error messages for "undefined" built-ins more accurate ( #1501 )
2024-09-11 17:54:23 +02:00
Sylvie
1dcc000572
Report locations for RGBLINK errors with conflicting objects ( #1494 )
...
This requires updating the object file format to record the
fstack context for sections themselves, not just for patches.
2024-09-10 19:23:48 +02:00
Sylvie
323028d9f2
RGBLINK lists local symbols when encountering an unknown symbol reference ( #1496 )
2024-09-06 21:31:13 -04:00
Sylvie
1283b0b6a6
Allow dollar signs in identifiers ( #1493 )
2024-09-03 23:09:06 +02:00
Sylvie
6b8d33529e
Improve string/interpolation formatting ( #1491 )
...
- The '#' component for type 's' now escapes the string characters
- The '#' component for type 'f' now prints a precision suffix
- The new 'q' component specifies a precision value
2024-09-01 12:54:26 -04:00
Sylvie
2fb76ce584
Traverse the charmap trie to reconstruct mappings instead of saving them ( #1487 )
2024-09-01 15:22:56 +02:00
Sylvie
7330c2c606
Replace unmangle with cygpath ( #1490 )
...
Use `-m` not `-w` so paths use forward slashes
2024-08-31 00:10:44 -04:00
Sylvie
44332ff4be
Charmaps cannot map an empty string ( #1486 )
2024-08-22 13:21:16 -04:00
Sylvie
81ab133566
Enable more testing of RGBGFX output ( #1473 )
2024-08-22 19:19:39 +02:00
Sylvie
0e8a17ce82
Report any section overflows at the end of assembly ( #1482 )
...
* Report any section overflows at the end of assembly
* Immediately handle overflow of the 32-bit size counter
2024-08-22 18:51:52 +02:00
Sylvie
b438c83bda
Implement a '#' prefix for raw identifiers that may alias keywords ( #1480 )
...
* Implement a '#' prefix for raw identifiers that may alias keywords
* Review comments
* Disallow hashless raw identifiers in interpolations
* Run clang-format
2024-08-21 19:31:44 +02:00
Sylvie
82e81ab1da
Test RGBLINK on SDCC object files ( #1479 )
2024-08-20 17:51:01 -04:00
Sylvie
57c3d74b9e
Use a custom generic tagged union Either instead of std::variant for efficiency ( #1476 )
...
* Implement custom generic tagged union `Either`
This should be more efficient than `std::variant`, while still
keeping runtime safety as it `assert`s when `get`ting values.
* Use `Either` for RPN expressions
* Use `Either` for file stack node data
* Use `Either` for `File` buffer
* Use `Either` for `STRFMT` args
* Use `Either` for RGBLINK symbol values
* Support an equivalent of `std::monostate` for `Either`
* Use `Either` for lexer tokens
* Use `Either` for symbol values
* Use `Either` for lexer mmap/buffer state
2024-08-20 21:19:11 +02:00
Sylvie
7d98b9a900
Add RGBFIX tests for MBC names ( #1477 )
...
RGBFIX tests are now based on .flags files
The .bin and .err files are optional
2024-08-20 21:15:37 +02:00
Sylvie
8c96293b11
Test the RGBASM state file output ( #1472 )
2024-08-19 20:13:27 +02:00
Sylvie
57f122a04e
Document !cc support alongside HIGH(r16) and LOW(r16) support ( #1475 )
2024-08-19 18:56:16 +02:00
Sylvie
356367bfd3
Allow mirroring only the X or Y axes ( #1468 )
2024-08-18 21:47:39 -04:00
Sylvie
b987e5669f
Comment the parsers better ( #1463 )
2024-08-09 21:36:52 -04:00
Sylvie
2d530dbcd6
Fix constant expression detection functions ( #1462 )
2024-08-09 09:40:53 +02:00
Sylvie
a3f9952b9e
Advise on how to use -x to make -r work ( #1459 )
2024-08-08 19:50:51 +02:00
Sylvie and ISSOtm
0cd79c33ef
Fix RGBGFX reversal ( #1425 )
...
* Print all OoB tilemap IDs before aborting
* Rename `nbTileInstances` to `mapSize`
* Check that reversing doesn't overflow the tile array
---------
Co-authored-by: ISSOtm <[email protected] >
2024-08-08 19:40:41 +02:00
Sylvie
5b486e1d87
Document the behavior of FMOD, and other man page cleanup ( #1458 )
2024-08-07 19:51:35 +02:00
Sylvie
e93190d491
Implement BITWIDTH and TZCOUNT functions ( #1450 )
2024-08-07 10:39:30 -04:00
Sylvie
7435630d6a
Error messages note when a symbol has been purged ( #1453 )
2024-08-06 15:35:06 -04:00
Sylvie
fc8707886c
Output exported numeric constants to sym file ( #1439 )
2024-08-06 10:58:35 -04:00
Sylvie
bb480b761c
Rephrase numeric-string warning to not be identical to another one ( #1449 )
2024-08-06 13:56:09 +02:00
Sylvie
2706f94788
Multiple fixes and enhancements to RPN behavior: ( #1448 )
...
- FIX: `Label & const` was not actually doing the `& const` masking
(fixes #1446 )
- ADD: `LOW(Label)` can be constant if `Label` is aligned to 8 or more bits
(resolves #1444 )
- ADD: `!expr` can be constant 0 if `expr` has any non-zero bits
(resolves #1447 )
- `LOW()` and `HIGH()` have their own RPN operator values
(resolves #1445 )
The change to RPN values means that the object file version was incremented.
This also refactors unary operators and functions, combining their
evaluation similarly to binary ones.
2024-08-06 13:54:55 +02:00
Sylvie
2f8f99bd94
Implement -Wpurge= ( #1443 )
2024-08-05 12:50:48 -04:00
Sylvie
f304e1dd7f
Implement state file output for RGBASM ( #1435 )
2024-08-05 12:41:40 -04:00
Sylvie
c5e6a815fa
Deprecate treating multi-unit strings as numbers ( #1438 )
2024-08-05 16:05:50 +02:00