Skip to content

Associated Types Regression #19058

Closed
Closed
@dylanmckay

Description

@dylanmckay

When compiling this snippet of code, the compiler churns out the most nonsensical error:

error: the trait `Device` is not implemented for the type `TestDevice`
...
note: the trait `Device` must be implemented because it is required by `Device`

This problem is fairly recent; the code used to compile several weeks ago on Rust master.

The problem does not occur when the trait Device has only one associated type. Note that the error occurs on the same line as the trait implementation.

Also on the Playpen
Note: Changing the Rust version to 0.12.0 on the Playpen causes a successful compilation.

#![feature(associated_types)]

// using one associated type compiles fine
// using two causes an error

// a trait using associated types
pub trait Device
{
    type Program;

    // error: ###comment this next line out ###
    type Viewport;
}

// a struct which implemented the trait
pub struct TestDevice(u32);

impl Device for TestDevice
{
    type Program = u32;

    // error: ###comment this next line out ###
    type Viewport = i64;
}

fn main() { }

This issue is linked with #19059 , which is caused by the same snippet of code.

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-associated-itemsArea: Associated items (types, constants & functions)A-trait-systemArea: Trait system

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions