From 754704ea9442ce92602f8022f6c979824b016842 Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Thu, 18 Oct 2012 13:29:34 -0700 Subject: rustc: Implement intra-crate static methods on anonymous trait implementations. r=nmatsakis --- src/libsyntax/ast.rs | 30 +----------------------------- src/libsyntax/codemap.rs | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 29 deletions(-) (limited to 'src/libsyntax') diff --git a/src/libsyntax/ast.rs b/src/libsyntax/ast.rs index 454a3166898..f494d564816 100644 --- a/src/libsyntax/ast.rs +++ b/src/libsyntax/ast.rs @@ -7,34 +7,6 @@ use std::serialization::{Serializable, use codemap::{span, filename}; use parse::token; -#[cfg(stage0)] -impl span: Serializable { - /* Note #1972 -- spans are serialized but not deserialized */ - fn serialize(&self, _s: &S) { } -} - -#[cfg(stage0)] -impl span: Deserializable { - static fn deserialize(_d: &D) -> span { - ast_util::dummy_sp() - } -} - -#[cfg(stage1)] -#[cfg(stage2)] -impl span: Serializable { - /* Note #1972 -- spans are serialized but not deserialized */ - fn serialize(&self, _s: &S) { } -} - -#[cfg(stage1)] -#[cfg(stage2)] -impl span: Deserializable { - static fn deserialize(_d: &D) -> span { - ast_util::dummy_sp() - } -} - #[auto_serialize] #[auto_deserialize] type spanned = {node: T, span: span}; @@ -168,7 +140,7 @@ type ty_param = {ident: ident, id: node_id, bounds: @~[ty_param_bound]}; enum def { def_fn(def_id, purity), def_static_method(/* method */ def_id, - /* trait */ def_id, + /* trait */ Option, purity), def_self(node_id), def_mod(def_id), diff --git a/src/libsyntax/codemap.rs b/src/libsyntax/codemap.rs index 0cb8b425c94..69a80d0bac1 100644 --- a/src/libsyntax/codemap.rs +++ b/src/libsyntax/codemap.rs @@ -1,4 +1,8 @@ use dvec::DVec; +use std::serialization::{Serializable, + Deserializable, + Serializer, + Deserializer}; export filename; export filemap; @@ -178,6 +182,34 @@ impl span : cmp::Eq { pure fn ne(other: &span) -> bool { !self.eq(other) } } +#[cfg(stage0)] +impl span: Serializable { + /* Note #1972 -- spans are serialized but not deserialized */ + fn serialize(&self, _s: &S) { } +} + +#[cfg(stage0)] +impl span: Deserializable { + static fn deserialize(_d: &D) -> span { + ast_util::dummy_sp() + } +} + +#[cfg(stage1)] +#[cfg(stage2)] +impl span: Serializable { + /* Note #1972 -- spans are serialized but not deserialized */ + fn serialize(&self, _s: &S) { } +} + +#[cfg(stage1)] +#[cfg(stage2)] +impl span: Deserializable { + static fn deserialize(_d: &D) -> span { + ast_util::dummy_sp() + } +} + fn span_to_str_no_adj(sp: span, cm: CodeMap) -> ~str { let lo = lookup_char_pos(cm, sp.lo); let hi = lookup_char_pos(cm, sp.hi); -- cgit 1.4.1-3-g733a5