VASG Issue Number: 0189 Comment Author: Clive Charlwood for Sivaram Nayudu Comment Number: 01 Comment Date: 1991/03/23 LRM section 3.1.2 paragraph 4 specifies that integer literals are the literals of an anonymous predefined type that is called UNIVERSAL INTEGER. LRM section 7.2.4 specifies that the types of left and right operands should be the same. Given that they have to be same type, we can either convert integer literals to the subtype of V1 or convert V1 to UNIVERSAL INTEGER and perform arithmetic as though they both belong to UNIVERSAL INTEGER. We think the latter approach is more general and allows variety of expressions to be formed involving integer and floating point literals. The expression (V1 * 2/4) without any typemark is treated as belonging to INTEGER/UNIVERSAL INTEGER. Note that if the user wanted this expression to be treated as belonging to the subtype of V1, it could be achieved by either qualifying the expression (as I1'(V1* 2/4)) or using an explicit type conversion to the subtype V1 (as I1(V1 * 2/4)). Conclusion: LRM should clearly state the result type of expression involving integer and/or floating point literals where the result type of the expression is not explicitly specified. We recommend that the result type of expressions involving (sub)expressions of integer type should be treated as UNIVERSAL INTEGER and the result type of expressions involving (sub)expressions of floating point type should be treated as UNIVERSAL REAL and the result type of expressions involving (sub)expressions that have both integer and floating point type should be treated as UNIVERSAL REAL.