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.
Do an explicit cast. Assume that the expression e does not have any indirections. (Parameter 'att' is used to stop 'alias this' recursion)
This provides a transition from the non-promoting behavior of unary + - ~ to the C-like integral promotion behavior.
Attempt to implicitly cast the expression into type t.
Checks whether or not an expression can be implicitly converted to type t.
Set type inference target t Target type flag 1: don't put an error when inference fails
Do integral promotions (convertchk). Don't convert <array of> to <pointer to>
Scale addition/subtraction to/from pointer.
Bring leaves to common type.
Merge types of e1 and e2 into a common subset
Semantic analysis for cast-expressions.