public bool ResolveAndReduce (ResolveContext ec, TypeSpec required_type, bool allow_nullable)
{
Expression e = label.Resolve (ec);
if (e == null)
return false;
Constant c = e as Constant;
if (c == null){
ec.Report.Error (150, loc, "A constant value is expected");
return false;
}
if (required_type == TypeManager.string_type && c.GetValue () == null) {
converted = NullStringCase;
return true;
}
if (allow_nullable && c.GetValue () == null) {
converted = NullStringCase;
return true;
}
c = c.ImplicitConversionRequired (ec, required_type, loc);
if (c == null)
return false;
converted = c.GetValue ();
return true;
}