Skip to content

Invalid rust syntax in generated constants #582

@Michael-F-Bryan

Description

@Michael-F-Bryan

Input C/C++ Header

#include <r_lib.h>

Bindgen Invokation

extern crate bindgen;

use std::env;
use std::path::Path;

fn main() {
    let out_dir = env::var("OUT_DIR").unwrap();
    let _ = bindgen::builder()
        .header("bindings.h")
        .clang_arg("-I/usr/include/libr/")
        .generate()
        .unwrap()
        .write_to_file(Path::new(&out_dir).join("ffi.rs"));
}

Actual Results

$ cargo build
   Compiling radare2-sys v0.1.0 (file:///home/michael/Documents/radare2-sys)
error: unexpected token: `;`
   --> /home/michael/Documents/radare2-sys/target/debug/build/radare2-sys-53f778355b791841/out/ffi.rs:126:31
    |
126 | pub const INFINITY: f32 = inf.;
    |                               ^

error: unexpected token: `;`
   --> /home/michael/Documents/radare2-sys/target/debug/build/radare2-sys-53f778355b791841/out/ffi.rs:127:26
    |
127 | pub const NAN: f32 = NaN.;
    |                          ^

error: aborting due to 2 previous errors

error: Could not compile `radare2-sys`.

Expected Results

Bindgen shouldn't generate invalid syntax when declaring the two 32-bit float constants. That exact same C header file compiles fine when using Clang:

$ clang -I/usr/include/libr bindings.h

I am trying to generate bindings for radare2. radare2 was installed from source and its include files are put in /usr/include/libr.

RUST_LOG=bindgen Output

(output is identical to Actual Results section)

Miscellaneous Other Details

rustc: rustc 1.17.0-nightly (6f10e2f63 2017-03-14)
cargo: cargo 0.18.0-nightly (4a3c0a63b 2017-03-12)
bindgen: 0.22.1
llvm: 3.9.1
target triple: x86_64-unknown-linux-gnu
OS: Arch Linux

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions