Skip to content

Generated files whose names differ only in case overwrite each other #70

Open

Description

@dimensionscape

Classes such as TExpr and Texpr generate include/Texpr.h and src/Texpr.cpp on case-insensitive file systems (Windows, macOS), so one overwrites the other and the build fails with unrelated-looking errors. Build.xml still lists both, and their object names collide too. The compiler should mangle the names; the build tool can at least detect the collision and say so.

Activity

  1. added
    needs haxeCan't be finished without a change in the Haxe compiler or std (HaxeFoundation/haxe)
    on Oct 19, 2026
  2. dimensionscape commented on Oct 19, 2026

    @dimensionscape
    MemberAuthor

    Status: the rest needs a change in the Haxe compiler (label needs haxe). Nothing more to do in libhxcpp until that lands.

    • Done here: fdb8d95 (on main) stops the build with an error that names the colliding files and says they differ only in case. Test: test/case_collision, also run in CI.
    • Remaining, in HaxeFoundation/haxe's C++ generator (the compiler, not the std): when two types would get file names that differ only in case, give one of them a different file name and update the #include lines and Build.xml entries to match. libhxcpp can't do this: the generator writes include/ and src/ before the build tool runs, so on a case-insensitive file system one file is already overwritten.
    • Workaround until then: rename one of the classes, or move one into a different package (packages become directories, so the files no longer collide).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    needs haxeCan't be finished without a change in the Haxe compiler or std (HaxeFoundation/haxe)

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions