Add AbiSet and integrate it into the AST.

I believe this patch incorporates all expected syntax changes from extern
function reform (#3678). You can now write things like:

    extern "<abi>" fn foo(s: S) -> T { ... }
    extern "<abi>" mod { ... }
    extern "<abi>" fn(S) -> T

The ABI for foreign functions is taken from this syntax (rather than from an
annotation).  We support the full ABI specification I described on the mailing
list.  The correct ABI is chosen based on the target architecture.

Calls by pointer to C functions are not yet supported, and the Rust type of
crust fns is still *u8.
This commit is contained in:
Niko Matsakis
2013-03-13 22:25:28 -04:00
committed by Brian Anderson
parent f864934f54
commit 6965fe4bce
72 changed files with 879 additions and 352 deletions

View File

@@ -94,7 +94,7 @@ pub mod rustrt {
pub mod rusti {
#[abi = "rust-intrinsic"]
pub extern {
pub extern "rust-intrinsic" {
pub fn frame_address(f: &once fn(x: *u8));
}
}