dmd.dcast
Semantic analysis for cast-expressions.
License
Source: dcast.d
Documentation: https://dlang.org/phobos/dmd_dcast.html
-
Declaration
Expression
implicitCastTo
(Expressione
, Scope*sc
, Typet
);Do an implicit cast. Issue error if it can'
t
be done. -
Declaration
MATCH
implicitConvTo
(Expressione
, Typet
);Return MATCH level of implicitly converting
e
to typet
. Don't
do the actual cast; don't
changee
. -
Declaration
Expression
castTo
(Expressione
, Scope*sc
, Typet
);Do an explicit cast. Assume that the 'this' expression does not have any indirections.
-
Declaration
Expression
inferType
(Expressione
, Typet
, intflag
= 0);Set type inference target
t
Target typeflag
1: don't
put an error when inference fails -
Declaration
Expression
scaleFactor
(BinExpbe
, Scope*sc
);Scale addition/subtraction to/from pointer.
-
Declaration
bool
typeMerge
(Scope*sc
, TOKop
, Type*pt
, Expression*pe1
, Expression*pe2
);Combine types.
Output: *
pt
merged type, if *pt
is not NULL *pe1
rewritten e1 *pe2
rewritten e2Return Value
true
successfalse
failed -
Declaration
Expression
typeCombine
(BinExpbe
, Scope*sc
);Bring leaves to common type.
Return Value
null
on success, ErrorExp if error occurs -
Declaration
Expression
integralPromotions
(Expressione
, Scope*sc
);Do integral promotions (convertchk). Don't convert
to -
Declaration
void
fix16997
(Scope*sc
, UnaExpue
);This provides a transition from the non-promoting behavior of unary + - ~ to the C-like integral promotion behavior.
Parameters
Scope*
sc
context
UnaExp
ue
NegExp, UAddExp, or ComExp which is revised per rules
References: https://issues.dlang.org/show_bug.cgi?id=16997
-
Declaration
bool
arrayTypeCompatibleWithoutCasting
(Typet1
, Typet2
);See if both types are arrays that can be compared for equality without any casting. Return
true
if so. This is to enable comparing things like an immutable array with a mutable one. -
Declaration
IntRange
getIntRange
(Expressione
);