diff options
| author | Patrick Walton <pcwalton@mimiga.net> | 2013-08-02 14:30:00 -0700 |
|---|---|---|
| committer | Patrick Walton <pcwalton@mimiga.net> | 2013-08-02 21:57:59 -0700 |
| commit | 9457ebee550d8f77ffc9b895acddae8946ee631e (patch) | |
| tree | b7612d4ec3135ab61b5a02f68259943e88b87936 /src/libsyntax/parse/parser.rs | |
| parent | 887c65697056b23be69b9b11f41637d07327626e (diff) | |
| download | rust-9457ebee550d8f77ffc9b895acddae8946ee631e.tar.gz rust-9457ebee550d8f77ffc9b895acddae8946ee631e.zip | |
librustc: Disallow "unsafe" for external functions
Diffstat (limited to 'src/libsyntax/parse/parser.rs')
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 1d61c5be83d..386f027d6e1 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -84,7 +84,8 @@ use parse::obsolete::{ObsoletePurity, ObsoleteStaticMethod}; use parse::obsolete::{ObsoleteConstItem, ObsoleteFixedLengthVectorType}; use parse::obsolete::{ObsoleteNamedExternModule, ObsoleteMultipleLocalDecl}; use parse::obsolete::{ObsoleteMutWithMultipleBindings}; -use parse::obsolete::{ObsoleteExternVisibility, ParserObsoleteMethods}; +use parse::obsolete::{ObsoleteExternVisibility, ObsoleteUnsafeExternFn}; +use parse::obsolete::{ParserObsoleteMethods}; use parse::token::{can_begin_expr, get_ident_interner, ident_to_str, is_ident}; use parse::token::{is_ident_or_path}; use parse::token::{is_plain_ident, INTERPOLATED, keywords, special_idents}; @@ -4066,14 +4067,20 @@ impl Parser { fn parse_item_foreign_fn(&self, attrs: ~[Attribute]) -> @foreign_item { let lo = self.span.lo; let vis = self.parse_visibility(); + + // Parse obsolete purity. let purity = self.parse_fn_purity(); + if purity != impure_fn { + self.obsolete(*self.last_span, ObsoleteUnsafeExternFn); + } + let (ident, generics) = self.parse_fn_header(); let decl = self.parse_fn_decl(); let hi = self.span.hi; self.expect(&token::SEMI); @ast::foreign_item { ident: ident, attrs: attrs, - node: foreign_item_fn(decl, purity, generics), + node: foreign_item_fn(decl, generics), id: self.get_id(), span: mk_sp(lo, hi), vis: vis } |
