diff --git a/src/librustc_typeck/check/mod.rs b/src/librustc_typeck/check/mod.rs index 3a93c7ed9161..d93848f408ca 100644 --- a/src/librustc_typeck/check/mod.rs +++ b/src/librustc_typeck/check/mod.rs @@ -1141,7 +1141,11 @@ impl<'a, 'tcx> AstConv<'tcx> for FnCtxt<'a, 'tcx> { fn ty_infer(&self, ty_param_def: Option>, span: Span) -> Ty<'tcx> { let default = ty_param_def.and_then(|t| - t.default.map(|ty| type_variable::Default { ty: ty, origin_span: span, definition_span: span })); + t.default.map(|ty| type_variable::Default { + ty: ty, + origin_span: span, + definition_span: span + })); self.infcx().next_ty_var_with_default(default) } diff --git a/src/test/run-pass/default_ty_param_default_dependent_associated_type.rs b/src/test/run-pass/default_ty_param_default_dependent_associated_type.rs new file mode 100644 index 000000000000..fe8c1063c96d --- /dev/null +++ b/src/test/run-pass/default_ty_param_default_dependent_associated_type.rs @@ -0,0 +1,33 @@ +// 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. +// +use std::marker::PhantomData; + +trait Id { + type This; +} + +impl Id for A { + type This = A; +} + +struct Foo::This> { + data: PhantomData<(X, Y)> +} + +impl Foo { + fn new() -> Foo { + Foo { data: PhantomData } + } +} + +fn main() { + let foo = Foo::new(); +} diff --git a/src/test/run-pass/default_ty_param_dependent_defaults.rs b/src/test/run-pass/default_ty_param_dependent_defaults.rs new file mode 100644 index 000000000000..9322c9ad165a --- /dev/null +++ b/src/test/run-pass/default_ty_param_dependent_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. +// + +use std::marker::PhantomData; + +struct Foo { data: PhantomData<(T, U)> } + +fn main() { + let foo = Foo { data: PhantomData }; +} diff --git a/src/test/run-pass/default_type_parameter_struct_and_type_alias.rs b/src/test/run-pass/default_ty_param_struct_and_type_alias.rs similarity index 53% rename from src/test/run-pass/default_type_parameter_struct_and_type_alias.rs rename to src/test/run-pass/default_ty_param_struct_and_type_alias.rs index d42e65d90fee..0a8543c03b13 100644 --- a/src/test/run-pass/default_type_parameter_struct_and_type_alias.rs +++ b/src/test/run-pass/default_ty_param_struct_and_type_alias.rs @@ -1,7 +1,15 @@ -use std::marker::PhantomData; +// 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. +// -trait TypeEq {} -impl TypeEq for A {} +use std::marker::PhantomData; struct DeterministicHasher; struct RandomHasher; diff --git a/src/test/run-pass/default_type_parameter_default_dependent_associated_type.rs b/src/test/run-pass/default_type_parameter_default_dependent_associated_type.rs deleted file mode 100644 index 402399f14b93..000000000000 --- a/src/test/run-pass/default_type_parameter_default_dependent_associated_type.rs +++ /dev/null @@ -1,23 +0,0 @@ -use std::marker::PhantomData; - -trait Id { - type This; -} - -impl Id for A { - type This = A; -} - -struct Foo::This> { - data: PhantomData<(X, Y)> -} - -impl Foo { - fn new() -> Foo { - Foo { data: PhantomData } - } -} - -fn main() { - let foo = Foo::new(); -} diff --git a/src/test/run-pass/default_type_parameter_dependent_defaults.rs b/src/test/run-pass/default_type_parameter_dependent_defaults.rs deleted file mode 100644 index 4f492bed9d4f..000000000000 --- a/src/test/run-pass/default_type_parameter_dependent_defaults.rs +++ /dev/null @@ -1,7 +0,0 @@ -use std::marker::PhantomData; - -struct Foo { data: PhantomData<(T, U)> } - -fn main() { - let foo = Foo { data: PhantomData }; -}