Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve error message when type is unknown #3723

Closed
bstrie opened this issue Oct 11, 2012 · 9 comments
Closed

Improve error message when type is unknown #3723

bstrie opened this issue Oct 11, 2012 · 9 comments
Labels
A-diagnostics Area: Messages for errors, warnings, and lints A-type-system Area: Type system

Comments

@bstrie
Copy link
Contributor

bstrie commented Oct 11, 2012

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);
                   ^
@pnkfelix
Copy link
Member

Not critical for 0.6; de-milestoning

@catamorphism
Copy link
Contributor

Nominating for milestone 5, production-ready

@pnkfelix
Copy link
Member

accepted for production ready

@bstrie
Copy link
Contributor Author

bstrie commented Jul 2, 2013

Updated with the test case for #5124.

@pcwalton
Copy link
Contributor

Triage bump

@mo
Copy link
Contributor

mo commented Dec 25, 2013

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
Copy link
Member

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

@pnkfelix
Copy link
Member

closing as believed to be fixed.

@alexcrichton
Copy link
Member

This appears fixed by #11513

bors pushed a commit to rust-lang-ci/rust that referenced this issue May 15, 2021
RalfJung pushed a commit to RalfJung/rust that referenced this issue Jun 29, 2024
iter_exported_symbols: also walk used statics in local crate

Since rust-lang#126938 got reverted, we need a different approach.

Fixes rust-lang/miri#3722
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-diagnostics Area: Messages for errors, warnings, and lints A-type-system Area: Type system
Projects
None yet
Development

No branches or pull requests

6 participants