diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustc/metadata/encoder.rs | 4 | ||||
| -rw-r--r-- | src/librustc/middle/traits/project.rs | 3 | ||||
| -rw-r--r-- | src/test/auxiliary/xcrate_associated_type_defaults.rs | 16 | ||||
| -rw-r--r-- | src/test/run-pass/xcrate-associated-type-defaults.rs | 18 |
4 files changed, 41 insertions, 0 deletions
diff --git a/src/librustc/metadata/encoder.rs b/src/librustc/metadata/encoder.rs index b844717e613..b677e7b8570 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 184de682c67..e5f7542aa84 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 00000000000..a6b70bf974f --- /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 <LICENSE-APACHE or +// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +// <LICENSE-MIT or http://opensource.org/licenses/MIT>, 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 00000000000..1b6de3b2f7b --- /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 <LICENSE-APACHE or +// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +// <LICENSE-MIT or http://opensource.org/licenses/MIT>, 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); +} |
