v icon indicating copy to clipboard operation
v copied to clipboard

referenced operator overloading do not work

Open Delta456 opened this issue 3 years ago • 1 comments

V version: Latest commit OS: WSL 2

What did you do?

struct Foo {
    f int
}

fn (f &Foo) + (f1 &Foo) &Foo {
    return &Foo{f:f.f+f1.f}
}
f := &Foo{2}
g := &Foo{3}
println(f + g)

What did you expect to see?

&Foo2{
   f: 5
}

What did you see instead?

main.v:10:9: error: invalid operator `+` to `&Foo` and `&Foo`
    8 | f := &Foo{2}
    9 | g := &Foo{3}
   10 | println(f + g)
      |         ~~~~~
   11 | 
   12 |

Delta456 avatar Aug 26 '22 15:08 Delta456

Same for referenced generic operator overloading

struct Foo<T> {
    f T
}

fn (f &Foo<T>) + (f1 &Foo<T>) &Foo<T> {
    return &Foo<T>{f:f.f+f1.f}
}
f := &Foo<int>{2}
g := &Foo<int>{3}
println(f + g)

Delta456 avatar Aug 26 '22 15:08 Delta456