rust-lang / rust-bindgen

Automatically generates Rust FFI bindings to C (and some C++) libraries.
https://rust-lang.github.io/rust-bindgen/
BSD 3-Clause "New" or "Revised" License
4.38k stars 688 forks source link

prepend_enum_name(false) doesn't work on constified enum variants #755

Closed retrry closed 7 years ago

retrry commented 7 years ago

Input C/C++ Header

enum AVCodecID {
    AV_CODEC_ID_FIRST_UNKNOWN = 0x18000,
    AV_CODEC_ID_TTF = 0x18000,
};

Bindgen Invocation

bindgen::Builder::default()
    .header("input.h")
    .prepend_enum_name(false)
    .generate()
    .unwrap()

Actual Results

/* automatically generated by rust-bindgen */

pub const AVCodecID_AV_CODEC_ID_TTF: AVCodecID =
    AVCodecID::AV_CODEC_ID_FIRST_UNKNOWN;
#[repr(u32)]
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
pub enum AVCodecID { AV_CODEC_ID_FIRST_UNKNOWN = 98304, }

Expected Results

/* automatically generated by rust-bindgen */

pub const AV_CODEC_ID_TTF: AVCodecID =
    AVCodecID::AV_CODEC_ID_FIRST_UNKNOWN;
#[repr(u32)]
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
pub enum AVCodecID { AV_CODEC_ID_FIRST_UNKNOWN = 98304, }

pub const AV_CODEC_ID_TTF always has prependend enum name (AVCodecID), even when prepend_enum_name is set to false.

fitzgen commented 7 years ago

Thanks for the bug report!