Richard Kenner wrote:
Let me try again and take a simpler example. If we havesubtype T is Integer range 20..50; Y: T; ... Y + 1 ... What the tree looks like is a PLUS_EXPR of type "Integer" (the base type of T), not T, whose first operand is a NOP_EXPR converting Y to Integer and whose second operand is the constant 1 also of type Integer, not T.
Note that this *exactly* reflects the formal Ada semantics ...