diff --git a/src/librustc/metadata/encoder.rs b/src/librustc/metadata/encoder.rs index b844717e6138..b677e7b85703 100644 --- a/src/librustc/metadata/encoder.rs +++ b/src/librustc/metadata/encoder.rs @@ -1451,6 +1451,10 @@ fn encode_info_for_item(ecx: &EncodeContext, encode_item_sort(rbml_w, 't'); encode_family(rbml_w, 'y'); + if let Some(ty) = associated_type.ty { + encode_type(ecx, rbml_w, ty); + } + is_nonstatic_method = false; } } diff --git a/src/librustc/middle/traits/project.rs b/src/librustc/middle/traits/project.rs index 184de682c67d..e5f7542aa84c 100644 --- a/src/librustc/middle/traits/project.rs +++ b/src/librustc/middle/traits/project.rs @@ -904,6 +904,9 @@ fn confirm_impl_candidate<'cx,'tcx>( // ought to be reported by the type checker method // `check_impl_items_against_trait`, so here we // just return TyError. + debug!("confirm_impl_candidate: no associated type {:?} for {:?}", + assoc_ty.name, + trait_ref); return (selcx.tcx().types.err, vec!()); } } diff --git a/src/test/auxiliary/xcrate_associated_type_defaults.rs b/src/test/auxiliary/xcrate_associated_type_defaults.rs new file mode 100644 index 000000000000..a6b70bf974f9 --- /dev/null +++ b/src/test/auxiliary/xcrate_associated_type_defaults.rs @@ -0,0 +1,16 @@ +// Copyright 2015 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +pub trait Foo { + type Input = usize; + fn bar(&self, _: Self::Input) {} +} + +impl Foo for () {} diff --git a/src/test/run-pass/xcrate-associated-type-defaults.rs b/src/test/run-pass/xcrate-associated-type-defaults.rs new file mode 100644 index 000000000000..1b6de3b2f7bc --- /dev/null +++ b/src/test/run-pass/xcrate-associated-type-defaults.rs @@ -0,0 +1,18 @@ +// Copyright 2015 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +// aux-build:xcrate_associated_type_defaults.rs + +extern crate xcrate_associated_type_defaults; +use xcrate_associated_type_defaults::Foo; + +fn main() { + ().bar(5); +}