From 638491712e265c8d5bc9bd9852ece17b5ec78f5b Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Fri, 27 Jul 2012 14:51:46 -0700 Subject: [PATCH] change region inference to not consider & that appears in a fn type as indicating region parameterization --- src/rustc/middle/region.rs | 11 ++++++++++- .../regions-infer-region-in-fn-but-not-type.rs | 9 +++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 src/test/compile-fail/regions-infer-region-in-fn-but-not-type.rs diff --git a/src/rustc/middle/region.rs b/src/rustc/middle/region.rs index cc6874bc967..4ee3b6adc31 100644 --- a/src/rustc/middle/region.rs +++ b/src/rustc/middle/region.rs @@ -485,7 +485,16 @@ fn determine_rp_in_ty(ty: @ast::ty, _ {} } - visit::visit_ty(ty, cx, visitor); + alt ty.node { + ast::ty_fn(*) => { + do cx.with(cx.item_id, false) { + visit::visit_ty(ty, cx, visitor); + } + } + _ => { + visit::visit_ty(ty, cx, visitor); + } + } } fn determine_rp_in_crate(sess: session, diff --git a/src/test/compile-fail/regions-infer-region-in-fn-but-not-type.rs b/src/test/compile-fail/regions-infer-region-in-fn-but-not-type.rs new file mode 100644 index 00000000000..c3a8c3e0155 --- /dev/null +++ b/src/test/compile-fail/regions-infer-region-in-fn-but-not-type.rs @@ -0,0 +1,9 @@ + +// check that the &int here does not cause us to think that `foo` +// contains region pointers +enum foo = fn~(x: &int); + +fn take_foo(x: foo/&) {} //~ ERROR no region bound is allowed on `foo` + +fn main() { +} \ No newline at end of file