Skip to content

Improve error message when type is unknown #3723

Closed
@bstrie

Description

@bstrie
Contributor
fn main() {
    1.bar();
}

Compiling this gives:

error: attempted access of field `bar` on type `<VI0>`, but no field or method with that name was found.

I'm guessing that the compiler hasn't inferred a type for <VI0>, but it should probably be more explicit about this fact rather than spitting out something that looks like a compiler error. Nothing fancy, it could just look like:

error: attempted access of field `bar` on type `<unknown integral type>`, but no field or method with that name was found.

(Here I'm presuming that a type like <VI0> is known to be integral, where this error occurs more generally it might say <V0>, which should simply become <unknown type>.)

If this can happen in other error messages it should be improved there as well.


Here's a test case with another error message that would likely be improved by the fixing this bug:

trait T {
    fn foo();
}

fn bar<V: T>(v: @V) {
    v.foo();
}

fn main() {
    bar(5);
}

Current output:

5124.rs:10:8: 10:9 error: mismatched types: expected `@<V0>` but found `<VI0>` (expected @-ptr but found integral variable)
5124.rs:10     bar(5);
                   ^

Suggested fixed output:

5124.rs:10:8: 10:9 error: mismatched types: expected `@<unknown type>` but found `<unknown integral type>` (expected @-ptr but found integral variable)
5124.rs:10     bar(5);
                   ^

Activity

pnkfelix

pnkfelix commented on Mar 25, 2013

@pnkfelix
Member

Not critical for 0.6; de-milestoning

catamorphism

catamorphism commented on May 23, 2013

@catamorphism
Contributor

Nominating for milestone 5, production-ready

pnkfelix

pnkfelix commented on Jun 27, 2013

@pnkfelix
Member

accepted for production ready

bstrie

bstrie commented on Jul 2, 2013

@bstrie
ContributorAuthor

Updated with the test case for #5124.

pcwalton

pcwalton commented on Aug 26, 2013

@pcwalton
Contributor

Triage bump

mo

mo commented on Dec 25, 2013

@mo
Contributor

Another example is this snippet:

fn main() {
    let i = 1;
    if (i % 3 || i % 5)
    {
        println("hello");
    }
}

repro.rs:3:8: 3:22 error: binary operation || cannot be applied to type <VI0>

Ideal error imo would be:
repro.rs:3:8: 3:22 error: binary operation || cannot be applied to integral types

pnkfelix

pnkfelix commented on Jan 22, 2014

@pnkfelix
Member

we believe this is fixed, or at least the message quality has been improved.

pnkfelix

pnkfelix commented on Jan 22, 2014

@pnkfelix
Member

closing as believed to be fixed.

alexcrichton

alexcrichton commented on Jan 22, 2014

@alexcrichton
Member

This appears fixed by #11513

added a commit that references this issue on Jun 29, 2024

Auto merge of rust-lang#3723 - RalfJung:win-tls-callback, r=RalfJung

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-diagnosticsArea: Messages for errors, warnings, and lintsA-type-systemArea: Type system

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @mo@alexcrichton@pcwalton@pnkfelix@catamorphism

        Issue actions

          Improve error message when type is unknown · Issue #3723 · rust-lang/rust