Vala to_string () method

/* bug.vala 

I find the behavior given in the example very strange... 

It is logical to expect a call of to_string () in each of cases.

Isn't it?

*/

/// 
public class Tst : Object {

	/// 
	public string to_string () {
		return "Tst";
	}

} // class


/// 
public class App : Object {
	/// 
	public static int main (string [] args) {

		var t = new Tst ();

		// 1
		stderr.puts (@"1: \"$( t )\"\n"); // OK


		// 2
		//stderr.printf ("%s\n", t); // ERR

		// Compiler error:
		// Argument 2: Cannot convert from `Tst' to `string'
		
		// Why not to call t.to_string () automatically,
		// like it done in (1) ?


		// 3
		stderr.printf ("3: \"%s\"\n", t.to_string ()); // OK

		
		// 4
		stderr.printf ("4: \"%s\"\n\n", (string) t); // (?!)

		/* Output for
		two different versions of valac, a few runs.
		Note to "random" value at line 4.

		Vala 0.48.17
		 
		$ /usr/bin/valac-0.48 bug.vala; ./bug; ./bug; ./bug
		1: "Tst"
		3: "Tst"
		4: "+"

		1: "Tst"
		3: "Tst"
		4: "j"

		1: "Tst"
		3: "Tst"
		4: "{k"
		
		
		Vala 0.57.0.307-d7d33-dirty

		$ /usr/bin/bin/valac-0.58 bug.vala; ./bug; ./bug; ./bug
		1: "Tst"
		3: "Tst"
		4: "+"

		1: "Tst"
		3: "Tst"
		4: "+B"

		1: "Tst"
		3: "Tst"
		4: "kR"

		*/


		return 0;
	}

}