See the WP:
let o = new Point(1, 2) // Point has x and y fixtures
let x = 10, y = 20
with (o): {x: int}
print(x + y)
Ouch -- I was party to this change from putting the annotation inside the parenthesized head of the switch type or with. The rationale IIRC was that otherwise, you could see, e.g.
with ({p:42, q:true} : {p:int, q:boolean} : {p:int}) ...
But really, who cares? Corner cases such as this don't justify the odd-looking annotation that comes after the head closes with a right parenthesis.
What's more, we could forbid anything like the above as written (you could still overparenthesize the annotated object initialiser), as the final annotation trumps the one on the initialiser for the purposes of the with or switch type (I think).
Comments welcome, this is a small syntax fix at most, so fits in a trac ticket.
/be