Regarding the onClicked handler in both contexts being invoked, I'm really not sure. The id.handler syntax is a strange one, and to be honest I didn't know that it was supported.
Regarding the future syntax possibilities, well, I don't think that will change in 5.0. Certainly, I don't think that assignment like:
@
property var someprop: { a + b }
@
will ever be a function assignment - it'll always be either a syntax error, an object assignment, or a binding assignment (simply because we want to maintain semantics between var properties and other properties).
For example:
@
function someFunc() { return 5 }
property int p1: someFunc()
property var p2: someFunc()
@
It would be "strange" if the value of p1 was 5, but the value of p2 was [Object function]
As for changing it to just
@
someprop: [console.log("blah")]
@
the problem is that it will always simply evaluate the inner bit, and assign it to the zeroth index of the array.
Finally,
@
someprop: [{console.log("blah")}]
@
could be made to work, I guess, assuming that the ecma262r5 spec defines such a block as always being a function, and not possibly an object with an uninitialised property, but I think requiring the function to be specified explicitly is clearer.
But anyway, I don't really think that we can (or should) change the syntax dramatically within the 5.x series.
Cheers,
Chris.