public void ResolveDefaultValue (ResolveContext rc)
{
//
// Default value was specified using an expression
//
if (default_expr != null) {
default_expr = ResolveDefaultExpression (rc);
return;
}
if (attributes == null)
return;
var pa = attributes.Search (rc.Module.PredefinedAttributes.OptionalParameter);
if (pa == null)
return;
//
// Default value was specified using an attribute
//
attributes.Attrs.Remove (pa);
TypeSpec expr_type = null;
pa = attributes.Search (rc.Module.PredefinedAttributes.DefaultParameterValue);
if (pa != null) {
attributes.Attrs.Remove (pa);
default_expr = pa.GetParameterDefaultValue (out expr_type);
} else {
default_expr = EmptyExpression.MissingValue;
}
if (default_expr == null) {
if (expr_type == null)
expr_type = parameter_type;
default_expr = new DefaultValueExpression (new TypeExpression (expr_type, Location), Location);
}
default_expr = default_expr.Resolve (rc);
}