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 'this' expression does not have any indirections.
This provides a transition from the non-promoting behavior of unary + - ~ to the C-like integral promotion behavior.
Do an implicit cast. Issue error if it can't be done.
Return MATCH level of implicitly converting e to type t. Don't do the actual cast; don't change e.
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.
Combine types. Output: *pt merged type, if *pt is not NULL *pe1 rewritten e1 *pe2 rewritten e2
Semantic analysis for cast-expressions.