From dac4916cec14751f27898d09ab9dcf3db9f30ad5 Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Thu, 12 Jul 2012 18:04:40 -0700 Subject: [PATCH] rustc: Resolve bounds of trait type parameters --- src/rustc/middle/resolve3.rs | 2 ++ src/test/run-pass/trait-bounds.rs | 25 +++++++++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 src/test/run-pass/trait-bounds.rs diff --git a/src/rustc/middle/resolve3.rs b/src/rustc/middle/resolve3.rs index 640d2b3cb7e3..ae1b4eebef40 100644 --- a/src/rustc/middle/resolve3.rs +++ b/src/rustc/middle/resolve3.rs @@ -2920,6 +2920,8 @@ class Resolver { NormalRibKind)) || { + self.resolve_type_parameters(type_parameters, visitor); + for methods.each |method| { // Create a new rib for the method-specific type // parameters. diff --git a/src/test/run-pass/trait-bounds.rs b/src/test/run-pass/trait-bounds.rs new file mode 100644 index 000000000000..9a2b9114309e --- /dev/null +++ b/src/test/run-pass/trait-bounds.rs @@ -0,0 +1,25 @@ +trait connection { + fn read() -> int; +} + +trait connection_factory { + fn create() -> C; +} + +type my_connection = (); +type my_connection_factory = (); + +impl of connection for () { + fn read() -> int { 43 } +} + +impl of connection_factory for my_connection_factory { + fn create() -> my_connection { () } +} + +fn main() { + let factory = (); + let connection = factory.create(); + let result = connection.read(); + assert result == 43; +}