Skip to content

C Generator Panics on Case-Variant Function Names #1411

@kavoc-brown

Description

@kavoc-brown

Summary

The C code generator in wit-bindgen panics with "duplicate symbols" error when processing valid WIT files that contain function names differing only in case.

Environment

  • wit-bindgen version: 0.47.0
  • Affected generator: C
  • OS: Ubuntu 22.04, x86-64

Steps to Reproduce

  1. Create a minimal WIT file

    Save the following as test.wit:

    package poc:demo;
    
    world example {
      export get-user: func() -> string;
      export GET-USER: func() -> string;
    }
  2. Run wit-bindgen C generator

    wit-bindgen c --out-dir /tmp/test test.wit
  3. Observe the panic

    thread 'main' panicked at crates/c/src/lib.rs:1899:38:
    duplicate symbols: "name `exports_example_get_user` already defined"
    note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
    
  4. Verify Rust generator works correctly

    wit-bindgen rust --out-dir /tmp/test_rust test.wit

    Result: Successfully generates code without errors.

Metadata

Metadata

Assignees

No one assigned

    Labels

    gen-cRelated to the C code generator

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions