FlashCpp Known Bugs - Minimal Reproductions
February 8, 2026 ยท View on GitHub
This directory contains minimal reproduction cases for bugs discovered during C++20 integration testing. Last verified: 2026-02-07 with FlashCpp release build.
Bug Summary
| # | Bug | File | Status | Stage |
|---|---|---|---|---|
| 1 | Alternative operator tokens | (moved to tests/) | FIXED | |
| 2 | Binary literals (0b prefix) | (moved to tests/) | FIXED | |
| 3 | Namespace symbol lookup | (moved to tests/) | FIXED | |
| 4 | CTAD (deduction guides) | (moved to tests/) | FIXED | |
| 5 | if constexpr + sizeof... | (moved to tests/) | FIXED | |
| 6 | Template specialization | (moved to tests/) | FIXED | |
| 7 | Variadic template recursion | (moved to tests/) | FIXED | |
| 8 | Digit separators | (moved to tests/) | FIXED | |
| 9 | new/delete in large files | (moved to tests/) | FIXED |
Previously reported, now fixed:
Boolean intermediate variables crash-- FIXED (was crashing with assertion in IRTypes.h, now works correctly)Alternative operator tokens-- FIXED (lexer now maps alternative tokens to standard operator spellings)Binary literals-- FIXED (lexer now handles 0b/0B prefix at same level as 0x)Namespace symbol lookup-- FIXED (codegen now uses fully qualified names for namespace-scoped global variables)Template specialization-- FIXED (deduction-based instantiation now checks for explicit specializations)Digit separators-- FIXED (digit separators are stripped before numeric value conversion)CTAD-- FIXED (implicit CTAD now deduces template arguments from constructor parameter types)new/delete in large files-- FIXED (heap alloc/free now uses platform-correct calling convention register)Variadic template recursion-- FIXED (pack parameter names added to scope during body re-parse, pack expansion in function call arguments)if constexpr + sizeof...-- FIXED (compile-time evaluation of sizeof... from pack_param_info_ during template body re-parse, if constexpr branch elimination)
All Bugs Fixed!
All 9 originally reported bugs have been fixed.
Testing
All bug fix regression tests have been moved to the tests/ directory with the naming convention test_*_ret*.cpp.
Contributing
When you find a new FlashCpp bug:
- Create a minimal reproduction case (smallest possible file that triggers it)
- Verify it compiles and runs correctly with
clang++ -std=c++20 - Add it to this directory following the naming pattern:
bug_description.cpp - Include comments documenting expected vs actual behavior and suggested fix
- Update this README with the new bug entry