It's intended as a shell semantic where anything bare on the command line just gets run, no matter your scope.
However when we introduced classes, we thought it was a more "dev-oriented" semantic, so we changed return there.
This will only return 'this will return':
class foo { [string] ReturnTest() { 'this will not return' return 'this will return' } } ([foo]::new()).ReturnTest()
It's intended as a shell semantic where anything bare on the command line just gets run, no matter your scope.
However when we introduced classes, we thought it was a more "dev-oriented" semantic, so we changed return there.
This will only return 'this will return':