private MemberActionAttribute GetMemberActionAttribute(IMemberDefinition provider, TypeActionAttribute typeAttr) { var attr = provider.GetCustomAttribute <MemberActionAttribute>(); if (attr != null) { if (attr is ModifiesMemberAttribute && !(typeAttr is ModifiesTypeAttribute)) { throw Errors.Invalid_decleration("ModifiesMember is only legal inside ModifiesType."); } return(attr); } if (typeAttr is NewTypeAttribute || typeAttr is ReplaceTypeAttribute) { return(new NewMemberAttribute()); } switch (ImplicitImports) { case ImplicitImportSetting.OnlyCompilerGenerated: if (provider.IsCompilerGenerated()) { goto case ImplicitImportSetting.ImplicitByDefault; } goto case ImplicitImportSetting.NoImplicit; case ImplicitImportSetting.ImplicitByDefault: return(new NewMemberAttribute(true)); default: case ImplicitImportSetting.NoImplicit: return(null); } }
private MemberActionAttribute GetMemberActionAttribute(IMemberDefinition provider, TypeActionAttribute typeAttr) { var attrs = provider.GetCustomAttributes <MemberActionAttribute>().ToList(); if (attrs.Count > 1) { throw Errors.Multiple_action_attributes((MemberReference)provider, attrs.ToArray <object>()); } var attr = attrs.FirstOrDefault(); if (attr != null) { if (attr is ModifiesMemberAttribute && !(typeAttr is ModifiesTypeAttribute)) { throw Errors.Invalid_decleration("ModifiesMember is only legal inside ModifiesType."); } return(attr); } if (typeAttr is NewTypeAttribute || typeAttr is ReplaceTypeAttribute) { return(new NewMemberAttribute()); } switch (ImplicitImports) { case ImplicitImportSetting.OnlyCompilerGenerated: if (provider.IsCompilerGenerated()) { goto case ImplicitImportSetting.ImplicitByDefault; } goto case ImplicitImportSetting.NoImplicit; case ImplicitImportSetting.ImplicitByDefault: return(new NewMemberAttribute(true)); default: case ImplicitImportSetting.NoImplicit: return(null); } }
private MemberActionAttribute GetMemberActionAttribute(IMemberDefinition provider, TypeActionAttribute typeAttr) { var attr = provider.GetCustomAttribute<MemberActionAttribute>(); if (attr != null) { if (attr is ModifiesMemberAttribute && !(typeAttr is ModifiesTypeAttribute)) { throw Errors.Invalid_decleration("ModifiesMember is only legal inside ModifiesType."); } return attr; } if (typeAttr is NewTypeAttribute || typeAttr is ReplaceTypeAttribute) { return new NewMemberAttribute(); } switch (ImplicitImports) { case ImplicitImportSetting.OnlyCompilerGenerated: if (provider.IsCompilerGenerated()) { goto case ImplicitImportSetting.ImplicitByDefault; } goto case ImplicitImportSetting.NoImplicit; case ImplicitImportSetting.ImplicitByDefault: return new NewMemberAttribute(true); default: case ImplicitImportSetting.NoImplicit: return null; } }