Model such calls as call operations, and compute the resulting type in constant evaluation rather than in type-checking. This means we no longer form non-constant ClassType or InterfaceType values, and that we produce an <error> type in the case of bad argument lists rather than a broken / meaningless ClassType / InterfaceType that doesn't actually represent a type. This in turn suppresses some follow-on diagnostics.
Model such calls as call operations, and compute the resulting type in constant evaluation rather than in type-checking. This means we no longer form non-constant
ClassType
orInterfaceType
values, and that we produce an<error>
type in the case of bad argument lists rather than a broken / meaninglessClassType
/InterfaceType
that doesn't actually represent a type. This in turn suppresses some follow-on diagnostics.