Skip to content

"error: multiple applicable methods in scope" for unadorned numeric literals #4820

@brendanzab

Description

@brendanzab
trait A { fn a(); }

trait B { fn b(); }

impl f32:   A { fn a() {} }
impl float: A { fn a() {} }

impl i16:   A { fn a() {} }
impl int:   A { fn a() {} }

impl u16:   B { fn b() {} }
impl u64:   B { fn b() {} }

fn main() {
    0.0.a();    // default to `float::a`?
    0.a();      // default to `int::a`?
    0.b();      // error? (no impl on `int`)
}
 % rustc numeric-literal-methods.rs
numeric-literal-methods.rs:15:4: 15:12 error: multiple applicable methods in scope
numeric-literal-methods.rs:15     0.0.a();    // default to `float::a`?
                                  ^~~~~~~~
numeric-literal-methods.rs:5:16: 5:25 note: candidate #1 is `__extensions__::a`
numeric-literal-methods.rs:5 impl f32:   A { fn a() {} }
                                             ^~~~~~~~~
numeric-literal-methods.rs:6:16: 6:25 note: candidate #2 is `__extensions__::a`
numeric-literal-methods.rs:6 impl float: A { fn a() {} }
                                             ^~~~~~~~~
numeric-literal-methods.rs:16:4: 16:10 error: multiple applicable methods in scope
numeric-literal-methods.rs:16     0.a();      // default to `int::a`?
                                  ^~~~~~
numeric-literal-methods.rs:8:16: 8:25 note: candidate #1 is `__extensions__::a`
numeric-literal-methods.rs:8 impl i16:   A { fn a() {} }
                                             ^~~~~~~~~
numeric-literal-methods.rs:9:16: 9:25 note: candidate #2 is `__extensions__::a`
numeric-literal-methods.rs:9 impl int:   A { fn a() {} }
                                             ^~~~~~~~~
numeric-literal-methods.rs:17:4: 17:10 error: multiple applicable methods in scope
numeric-literal-methods.rs:17     0.b();      // error?
                                  ^~~~~~
numeric-literal-methods.rs:11:16: 11:25 note: candidate #1 is `__extensions__::b`
numeric-literal-methods.rs:11 impl u16:   B { fn b() {} }
                                              ^~~~~~~~~
numeric-literal-methods.rs:12:16: 12:25 note: candidate #2 is `__extensions__::b`
numeric-literal-methods.rs:12 impl u64:   B { fn b() {} }
                                              ^~~~~~~~~
error: aborting due to 3 previous errors

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions