From 113bdaa119d856bdca0a87b20ab41d62a76f1723 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABtan=20Cassiers?= Date: Mon, 25 May 2015 13:21:29 +0200 Subject: [PATCH 1/2] Fix #79 --- src/items.rs | 7 +++++++ src/visitor.rs | 9 ++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/items.rs b/src/items.rs index 55613ab1bb8..3b174190643 100644 --- a/src/items.rs +++ b/src/items.rs @@ -27,6 +27,7 @@ impl<'a> FmtVisitor<'a> { explicit_self: Option<&ast::ExplicitSelf>, generics: &ast::Generics, unsafety: &ast::Unsafety, + constness: &ast::Constness, abi: &abi::Abi, vis: ast::Visibility, span_end: BytePos) @@ -40,6 +41,7 @@ impl<'a> FmtVisitor<'a> { explicit_self, generics, unsafety, + constness, abi, vis, span_end, @@ -74,6 +76,7 @@ impl<'a> FmtVisitor<'a> { Some(&sig.explicit_self), &sig.generics, &sig.unsafety, + &sig.constness, &sig.abi, ast::Visibility::Inherited, span_end, @@ -92,6 +95,7 @@ impl<'a> FmtVisitor<'a> { explicit_self: Option<&ast::ExplicitSelf>, generics: &ast::Generics, unsafety: &ast::Unsafety, + constness: &ast::Constness, abi: &abi::Abi, vis: ast::Visibility, span_end: BytePos, @@ -111,6 +115,9 @@ impl<'a> FmtVisitor<'a> { if let &ast::Unsafety::Unsafe = unsafety { result.push_str("unsafe "); } + if let &ast::Constness::Const = constness { + result.push_str("const "); + } if *abi != abi::Rust { result.push_str("extern "); result.push_str(&abi.to_string()); diff --git a/src/visitor.rs b/src/visitor.rs index 256c1e6e132..c15b3c34af0 100644 --- a/src/visitor.rs +++ b/src/visitor.rs @@ -98,13 +98,19 @@ impl<'a, 'v> visit::Visitor<'v> for FmtVisitor<'a> { let indent = self.block_indent; match fk { - visit::FkItemFn(ident, ref generics, ref unsafety, ref abi, vis) => { + visit::FkItemFn(ident, + ref generics, + ref unsafety, + ref constness, + ref abi, + vis) => { let new_fn = self.rewrite_fn(indent, ident, fd, None, generics, unsafety, + constness, abi, vis, b.span.lo); @@ -117,6 +123,7 @@ impl<'a, 'v> visit::Visitor<'v> for FmtVisitor<'a> { Some(&sig.explicit_self), &sig.generics, &sig.unsafety, + &sig.constness, &sig.abi, vis.unwrap_or(ast::Visibility::Inherited), b.span.lo); From 673b8d5f22f762b4e014dc754eb624fc04876207 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABtan=20Cassiers?= Date: Mon, 25 May 2015 13:25:06 +0200 Subject: [PATCH 2/2] add test for const fn --- tests/idem/fn.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tests/idem/fn.rs b/tests/idem/fn.rs index bbb9fa173d2..b78f6d9ffc3 100644 --- a/tests/idem/fn.rs +++ b/tests/idem/fn.rs @@ -58,6 +58,20 @@ pub fn render<'a, render_opts(g, w, &[]) } +const fn foo() { + x; +} + +pub const fn foo() { + x; +} + +impl Foo { + const fn foo() { + x; + } +} + fn main() { let _ = function(move || 5); let _ = move || 42;