Every expression written in the XL programming language has a
compile-time type that can be deduced from the expression.
By a conversion from type S
to type T
, an expression of type
S
can be treated as having the
compile-time type T
.
The Java programming language defines several categories of conversions: Identity conversions, widening primitive conversions, narrowing primitive conversions, widening reference conversions, narrowing reference conversions, string conversions, and value set conversions. These conversions occur in several conversion contexts: Assignment conversion, method invocation conversion, casting conversion, string conversion, and unary and binary numeric promotion.
The XL programming language modifies the definition of widening primitive
conversions in order to allow for an implicit conversion from
double
to float
and adds the conversion context
of binary floating-point promotion
(Section 8.2, “Binary Floating-Point Promotion”),
which is exclusively used for the exponentiation operator.
The widening primitive conversions of the XL programming language are the following conversions:
byte
to
short
, int
,
long
, float
, or
double
short
to
int
,
long
, float
, or
double
char
to
int
,
long
, float
, or
double
int
to
long
, float
, or
double
long
to
float
or double
float
to
double
double
to
float
, but only if this is enabled by a
corresponding compiler option.