bindgen icon indicating copy to clipboard operation
bindgen copied to clipboard

Issues with container spec

Open kalinon opened this issue 3 years ago • 1 comments

Seems aliasing is broken, unsure when it broke, but it should be reproducible with the container spec.

$ crystal spec spec/integration/containers_spec.cr
+ rm -f '*.o' containers.cpp containers_test.cr
Invalid alias name "std::vector<int>" at Test::Binding::std::vector<int>
Invalid alias name "std::vector<std::vector<int>>" at Test::Binding::std::vector<std::vector<int>>
Invalid alias name "std::vector<std::string>" at Test::Binding::std::vector<std::string>
Invalid alias name "std::vector<rgb>" at Test::Binding::std::vector<rgb>
Invalid alias name "std::vector<double>" at Test::Binding::std::vector<double>
Result type std::vector<int> is unreachable at Test::Binding#integers()
Result type std::vector<std::vector<int>> is unreachable at Test::Binding#grid()
Result type std::vector<std::string> is unreachable at Test::Binding#strings()
Result type std::vector<rgb> is unreachable at Test::Binding#palette()
Argument 2 has unreachable type std::vector<double> at Test::Binding#sum(list)
Result type Binding::std::vector<int> is unreachable at Test::Containers#integers()
Result type Binding::std::vector<std::vector<int>> is unreachable at Test::Containers#grid()
Result type Binding::std::vector<std::string> is unreachable at Test::Containers#strings()
Result type Binding::std::vector<rgb> is unreachable at Test::Containers#palette()
Argument 1 has unreachable type Binding::std::vector<double> at Test::Containers#sum(list)
Found 15 errors.  Aborting.
F

Failures:

  1) container instantiation feature works
     Failure/Error: tool.run!.should eq(0)

       Expected: 0
            got: 1

     # spec/integration/spec_helper.cr:80

Finished in 611.09 milliseconds
1 examples, 1 failures, 0 errors, 0 pending

Failed examples:

crystal spec spec/integration/containers_spec.cr:4 # container instantiation feature works

kalinon avatar Jan 08 '21 23:01 kalinon

Still get these errors on other llvm versions, so i believe it may have something to do with the changes @HertzDevil may have introduced. @HertzDevil any ideas? Looks like types like std::vector<int> are making through as crystal code. Disabling sanity checks gets output like:

  @[Link(ldflags: "#{__DIR__}/../tmp/containers.o -lstdc++ -lgccpp")]
  lib Binding
    alias Containers = Void
    alias std::vector<int> = Void
    alias std::vector<std::vector<int> > = Void
    alias std::vector<std::string> = Void
    alias ContainerStdVectorUnsignedChar = Void
    alias std::vector<rgb> = Void
    alias std::vector<double> = Void

kalinon avatar Jan 09 '21 12:01 kalinon