protected override Expression DoResolve (ResolveContext ec)
{
bool ok = true;
source = source.Resolve (ec);
if (source == null) {
ok = false;
source = EmptyExpression.Null;
}
target = target.ResolveLValue (ec, source);
if (target == null || !ok)
return null;
TypeSpec target_type = target.Type;
TypeSpec source_type = source.Type;
eclass = ExprClass.Value;
type = target_type;
if (!(target is IAssignMethod)) {
Error_ValueAssignment (ec, loc);
return null;
}
if (target_type != source_type) {
Expression resolved = ResolveConversions (ec);
if (resolved != this)
return resolved;
}
return this;
}