about summary refs log tree commit diff
path: root/src/libsyntax/ext
diff options
context:
space:
mode:
authorNiko Matsakis <niko@alum.mit.edu>2013-03-13 22:25:28 -0400
committerBrian Anderson <banderson@mozilla.com>2013-03-29 18:36:20 -0700
commit6965fe4bceea836586bd8e7aa01a92a35b467f78 (patch)
treed95089f050cd67db2a5171a799763faa09f5b0a8 /src/libsyntax/ext
parentf864934f548be9f03d2c0512de8d7e908469e2ae (diff)
downloadrust-6965fe4bceea836586bd8e7aa01a92a35b467f78.tar.gz
rust-6965fe4bceea836586bd8e7aa01a92a35b467f78.zip
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.
Diffstat (limited to 'src/libsyntax/ext')
-rw-r--r--src/libsyntax/ext/pipes/ast_builder.rs4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/libsyntax/ext/pipes/ast_builder.rs b/src/libsyntax/ext/pipes/ast_builder.rs
index 075474a2a0d..72e6c22dbc8 100644
--- a/src/libsyntax/ext/pipes/ast_builder.rs
+++ b/src/libsyntax/ext/pipes/ast_builder.rs
@@ -15,7 +15,8 @@
 
 use core::prelude::*;
 
-use ast::ident;
+use abi::AbiSet;
+use ast::{ident, node_id};
 use ast;
 use ast_util;
 use codemap::{span, respan, dummy_sp, spanned};
@@ -272,6 +273,7 @@ impl ext_ctxt_ast_builder for @ext_ctxt {
                   dummy_sp(),
                   ast::item_fn(self.fn_decl(inputs, output),
                                ast::impure_fn,
+                               AbiSet::Rust(),
                                generics,
                                body))
     }