Skip to content

Enum variants can't be imported via type alias #123131

Open
@pitdicker

Description

@pitdicker

In chrono 0.4.36 we renamed a LocalResult enum to MappedLocalTime, and added a type alias with the name LocalResult.
This turned out to be a breaking change because enum variants can't be imported through a type alias.

enum MappedLocalTime {
    Single,
    Ambiguous,
    None,
}

type LocalResult = MappedLocalTime;

use LocalResult::*;

Gives the error:

    Checking alias v0.1.0 (C:\Users\dicke\Documents\alias)
error[E0432]: unresolved import `LocalResult`
 --> src\main.rs:9:5
  |
9 | use LocalResult::*; // fails
  |     ^^^^^^^^^^^ `LocalResult` is a type alias, not a module

For more information about this error, try `rustc --explain E0432`.
error: could not compile `alias` (bin "alias") due to previous error

I expected the type alias to behave identical to the enum.

Maybe related to RFC 2338 Type alias enum variants.

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-type-systemArea: Type systemC-bugCategory: This is a bug.S-has-mcveStatus: A Minimal Complete and Verifiable Example has been found for this issueT-langRelevant to the language team, which will review and decide on the PR/issue.T-typesRelevant to the types team, which will review and decide on the PR/issue.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions