ASR Expression Nodes

An expression has a type and produces a value. Almost every expression node carries a type member and an optional value member holding the compile time value when the frontend could fold it.

ASR expressions are explicit about conversion: there is no implicit promotion, and every conversion is a Cast inserted by the frontend.