-
Key: CORBA3-1
-
Legacy Issue Number: 1139
-
Status: closed
-
Source: Progress Software ( Steve Vinoski)
-
Summary:
Summary: When the extended IDL types were added to CORBA, the semantics of IDL
constant declarations seems to have been broken. In CORBA 2.0 (July
1995) the third paragraph of section 3.7.2 page 3-18 states:"An integer constant expression is evaluated as unsigned long unless
it contains a negated integer literal or the name of an integer
constant with a negative value. In the latter case, the constant
expression is evaluated as signed long. The computed value is coerced
back to the target type in constant initializers. It is an error if
the computed value exceeds the precision of the target type. It is an
error if any intermediate value exceeds the range of the evaluated-as
type (long or unsigned long)."The paragraph following the one quoted above explains the same for
floating-point constants.Unfortunately, CORBA 2.2 has broken this. Section 3.7.2, page 3-20,
of formal/98-02-01 tells us what to do if types are long, unsigned
long, long long, unsigned long long, double, and long double, but the
old text stating how general integer constants and floating point
constants were evaluated has been completely removed! How should the
following be evaluated?const short S = 1 + 2;
-
Reported: CORBA 2.2 — Wed, 15 Apr 1998 04:00 GMT
-
Disposition: Resolved — CORBA 3.0.2
-
Disposition Summary:
see above
-
Updated: Fri, 6 Mar 2015 20:58 GMT