mozilla/rust — pull request #5298 by nikomatsakis (2013-03-09 20:14:15+00:00)
Title: Revamp foreign code not to consider the Rust modes.  This requires

Revamp foreign code not to consider the Rust modes. This requires
adjusting a few foreign functions that were declared with by-ref
mode. This also allows us to remove by-val mode in the near future.

With copy mode, though, we have to be careful because Rust will implicitly pass
somethings by pointer but this may not be the C ABI rules. For example, rust
will pass a `struct Foo` as a `Foo*`. So I added some code into the adapters to
fix this (though the C ABI rules may put the pointer back, oh well).

This patch also includes a lint mode for the use of by-ref mode
in foreign functions as the semantics of this have changed.

r? @brson