/* Test various permutations of the => operator */
class converter {
var v;
public proc create(x) { v = x; }
operator => (rhs) {
var str = "cvt " ## (rhs => String);
return new converter(str);
}
operator \=> (lhs) {
var str = "cvt " ## (lhs => String);
return new converter(str);
}
operator () (a) {
return a => self;
}
public proc print() {
say("v = ", v, "\n");
}
}
proc main()
{
var a = 1.5;
var b;
b = Int(a);
say("b = ", b, "\n");
a = converter(5); a.print();
a = Float(a); a.print();
a = converter(10); a.print();
a = a(3); a.print();
a = {1.2, 2.3, 3.4, 4.5};
a = Int(a);
say("a = ", a[0], " ", a[1], " ", a[2], " ", a[3], "\n");
a = converter(15); a.print();
a = a => {1,2,3}; // This is a case that call syntax can't handle
a.print();
}