Go to file
Peterino2 0c5383f518 Fix SDL3 parser critical issues and add comprehensive test plans
## Critical Fixes Implemented

### 1. Memory Leak Resolution
- Fixed doc comment allocation in peekDocComment() to properly allocate memory
- Added cleanup for pending_doc_comment when skipping lines
- All tests now run with zero memory leaks (GPA verified)

### 2. Flag Definition Parsing (CRITICAL)
- Added skipWhitespace() helper to handle newlines before #define statements
- Flag structures now properly populated with all fields
- Before: empty structs with only padding
- After: all 7 flags present in GPUTextureUsageFlags

### 3. Invalid Identifier Generation (CRITICAL)
- Implemented "first underscore" naming rule
- Prevents enum values starting with numbers (e.g., 16bit, 2d)
- detectCommonPrefix() now only strips SDL_GPU_/SDL_ prefix
- enumValueToZig() splits on first underscore to preserve type prefix

### 4. Naming Convention Alignment
- Changed from "last underscore" to "first underscore" rule
- Type part: all lowercase (e.g., primitivetype)
- Value part: TitleCamelCase (e.g., Trianglelist)
- Result: primitivetypeTrianglelist (matches existing codebase)
- Added screaminToTitleCamel() helper for proper camelCase conversion

## Test Coverage

### New Tests Added
- patterns.zig: 3 new tests for flag scanning with whitespace
- naming.zig: 10 new comprehensive tests for naming conventions
- All 18 unit tests passing
- Integration test with SDL_gpu.h successful (169 declarations)

### Files Modified
1. **patterns.zig**
   - Added skipWhitespace() helper (lines 609-618)
   - Updated scanFlagTypedef() to skip whitespace before #define
   - Added 3 new flag scanning tests

2. **naming.zig**
   - Rewrote detectCommonPrefix() to only strip SDL prefix
   - Rewrote enumValueToZig() with first underscore rule
   - Added screaminToTitleCamel() helper
   - Added 10 comprehensive naming tests

3. **parser.zig**
   - Previous memory leak fixes intact
   - No changes needed for this iteration

## Documentation Added

1. **PARSER_FIX_PLAN.md** - Detailed implementation plan
2. **IMPLEMENTATION_COMPLETE.md** - Summary of fixes and results
3. **TEST_HARNESS_PLAN.md** - Original test harness design
4. **TEST_HARNESS_PLAN_V2.md** - Enhanced plan with mock generation

## Verification

 Parser generates valid Zig code (no compilation errors)
 All flag fields populated correctly
 No invalid identifiers (no numeric prefixes)
 Naming matches existing codebase conventions
 All 18 unit tests passing
 No memory leaks (GPA verified)
 Successfully parsed SDL_gpu.h (169 declarations)

## Next Steps (Planned)

- Implement mock_codegen.zig for C stub generation
- Create test_project/ with complete build system
- Add function call coverage tests
- Implement golden file regression testing

🤖 Generated with Claude Code (https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-21 19:37:26 -08:00
.github/workflows big rework on automation.py and staging game builds now 2025-10-12 15:24:57 -07:00
archive archiving a lot of things then moving to yet another redo of the build system 2025-11-28 20:22:51 -08:00
build saving 2026-01-19 21:40:05 -08:00
buildgen enabling shader gen 2026-01-08 17:19:52 -08:00
depot updates to engine time and seemingly bugs are fixed 2026-01-03 16:35:31 -08:00
docs adding claude helper files and documentation, also testing parallel-job 2025-10-25 15:08:40 -07:00
engine saving 2026-01-19 21:40:05 -08:00
extras samplegame is now compiling on windows in both debug and static build modes on 0.15 2025-10-19 23:35:28 -07:00
lib Fix SDL3 parser critical issues and add comprehensive test plans 2026-01-21 19:37:26 -08:00
projects updates to engine time and seemingly bugs are fixed 2026-01-03 16:35:31 -08:00
testing replaced all references of std.time.sleep with std.Thread.sleep 2025-10-13 17:56:07 -07:00
tools finished enet 2025-10-13 17:53:42 -07:00
.gitattributes Backlog initial-comit SDL gpu examples cooking shaders properly 2025-04-07 19:51:46 -07:00
.gitignore big rework on automation.py and staging game builds now 2025-10-12 15:24:57 -07:00
.gitmodules Backlog initial-comit SDL gpu examples cooking shaders properly 2025-04-07 19:51:46 -07:00
CLAUDE.md crated zuck game content and creating hello-window 2025-10-26 20:02:36 -07:00
LICENSE Backlog initial-comit SDL gpu examples cooking shaders properly 2025-04-07 19:51:46 -07:00
README.md saving 2025-12-19 02:18:45 -08:00
build.archive.zig new build system who dis 2025-12-07 14:35:58 -08:00
build.zig saving 2025-12-30 13:55:35 -08:00
build.zig.zon new build system who dis 2025-12-07 14:35:58 -08:00
content.txt content and shader cooking stuff 2025-04-13 14:12:48 -07:00
todo.txt spec generation complete 2025-12-27 22:51:40 -08:00

README.md

Backlog

zig version: 0.15.1

Backlog Labs Game Engine.

Getting Started

run tools/scripts/first-time-setup.py

ffmpeg -i INPUT.mp4 -c:v libtheora -q:v 7 -c:a libvorbis -q:a 4 OUTPUT.ogv

git-bug Cheat Sheet

This project uses git-bug for distributed issue tracking. Issues are stored directly in the repository.

Common Commands

Listing Issues

git bug bug                    # List all issues
git bug bug status:open        # List only open issues
git bug bug status:closed      # List only closed issues

Creating Issues

git bug bug new -t "title" -m "message"              # Create new issue
git bug bug new -t "Add feature X" -m "Description"  # Example

Viewing & Managing Issues

git bug bug show <id>          # Show issue details
git bug bug comment <id>       # Add a comment to an issue
git bug bug close <id>         # Close an issue
git bug bug open <id>          # Reopen an issue
git bug bug status <id>        # Show issue status

Labels

git bug bug label <id>              # Show labels for an issue
git bug bug label new <id> <label>  # Add a label
git bug bug label rm <id> <label>   # Remove a label

Syncing

git bug pull                   # Pull issue updates from remote
git bug push                   # Push issue updates to remote

Standard Labels

Component Labels: core, rendering, physics, build-system, platform, assets, audio, ui, documentation

Type Labels:

  • bug - Defects or incorrect behavior
  • feature - New functionality
  • enhancement - Improvements to existing features
  • task - General development work
  • documentation - Documentation improvements
  • question - Design decisions or discussions
  • refactoring - Code cleanup

Problem Type Labels (for bugs):

  • memory - Memory issues
  • threading - Concurrency issues
  • crash - Application crashes
  • build - Build system issues

Quick Examples

# Create a bug report
git bug bug new -t "Memory leak in asset loader" -m "Assets not freed when unloading scenes"
git bug bug label new <id> bug assets memory

# Create a feature request
git bug bug new -t "Add terrain generation" -m "Implement heightmap-based terrain"
git bug bug label new <id> feature rendering

# Create a task
git bug bug new -t "Update to Zig 0.15" -m "Migrate to latest Zig version"
git bug bug label new <id> task build-system

# View and comment on an issue
git bug bug show abc123
git bug bug comment abc123

Tips

  • Issue IDs can be abbreviated (first few characters)
  • Use --non-interactive flag for scripting
  • Issues sync with git bug pull/push
  • Keep descriptions factual and clear