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

#BugFileStatusStage
1Alternative operator tokens(moved to tests/)FIXEDCompile
2Binary literals (0b prefix)(moved to tests/)FIXEDCompile
3Namespace symbol lookup(moved to tests/)FIXEDLink
4CTAD (deduction guides)(moved to tests/)FIXEDLink
5if constexpr + sizeof...(moved to tests/)FIXEDLink
6Template specialization(moved to tests/)FIXEDRuntime
7Variadic template recursion(moved to tests/)FIXEDRuntime
8Digit separators(moved to tests/)FIXEDRuntime
9new/delete in large files(moved to tests/)FIXEDRuntime

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:

  1. Create a minimal reproduction case (smallest possible file that triggers it)
  2. Verify it compiles and runs correctly with clang++ -std=c++20
  3. Add it to this directory following the naming pattern: bug_description.cpp
  4. Include comments documenting expected vs actual behavior and suggested fix
  5. Update this README with the new bug entry