Symbols\Source\ModifierUtils.cs (169)
15internal static DeclarationModifiers MakeAndCheckNonTypeMemberModifiers(
19DeclarationModifiers defaultAccess,
20DeclarationModifiers allowedModifiers,
26var result = modifiers.ToDeclarationModifiers(isForTypeDeclaration: false, diagnostics.DiagnosticBag ?? new DiagnosticBag(), isOrdinaryMethod: isOrdinaryMethod);
33hasExplicitAccessModifier = (result & DeclarationModifiers.AccessibilityMask) != 0;
40internal static DeclarationModifiers CheckModifiers(
43DeclarationModifiers modifiers,
44DeclarationModifiers allowedModifiers,
53DeclarationModifiers reportStaticNotVirtualForModifiers = DeclarationModifiers.None;
57Debug.Assert((allowedModifiers & (DeclarationModifiers.Override | DeclarationModifiers.Virtual)) == 0);
59else if ((modifiers & allowedModifiers & DeclarationModifiers.Static) != 0)
63reportStaticNotVirtualForModifiers = allowedModifiers & DeclarationModifiers.Override;
67reportStaticNotVirtualForModifiers = allowedModifiers & (DeclarationModifiers.Abstract | DeclarationModifiers.Override | DeclarationModifiers.Virtual);
73DeclarationModifiers errorModifiers = modifiers & ~allowedModifiers;
74DeclarationModifiers result = modifiers & allowedModifiers;
76while (errorModifiers != DeclarationModifiers.None)
78DeclarationModifiers oneError = errorModifiers & ~(errorModifiers - 1);
79Debug.Assert(oneError != DeclarationModifiers.None);
84case DeclarationModifiers.Partial:
89case DeclarationModifiers.Abstract:
90case DeclarationModifiers.Override:
91case DeclarationModifiers.Virtual:
109checkFeature(DeclarationModifiers.PrivateProtected, MessageID.IDS_FeaturePrivateProtected) |
110checkFeature(DeclarationModifiers.Required, MessageID.IDS_FeatureRequiredMembers) |
111checkFeature(DeclarationModifiers.File, MessageID.IDS_FeatureFileTypes) |
112checkFeature(DeclarationModifiers.Async, MessageID.IDS_FeatureAsync);
116bool checkFeature(DeclarationModifiers modifier, MessageID featureID)
148DeclarationModifiers modifiers,
149DeclarationModifiers defaultInterfaceImplementationModifiers,
158if ((modifiers & defaultInterfaceImplementationModifiers & DeclarationModifiers.Static) != 0 &&
159(modifiers & defaultInterfaceImplementationModifiers & (DeclarationModifiers.Sealed | DeclarationModifiers.Abstract | DeclarationModifiers.Virtual)) != 0)
161var reportModifiers = DeclarationModifiers.Sealed | DeclarationModifiers.Abstract | DeclarationModifiers.Virtual;
162if ((modifiers & defaultInterfaceImplementationModifiers & DeclarationModifiers.Sealed) != 0 &&
163(modifiers & defaultInterfaceImplementationModifiers & (DeclarationModifiers.Abstract | DeclarationModifiers.Virtual)) != 0)
165diagnostics.Add(ErrorCode.ERR_BadMemberFlag, errorLocation, ConvertSingleModifierToSyntaxText(DeclarationModifiers.Sealed));
166reportModifiers &= ~DeclarationModifiers.Sealed;
180if ((modifiers & defaultInterfaceImplementationModifiers & DeclarationModifiers.Static) != 0)
196internal static void ReportUnsupportedModifiersForLanguageVersion(DeclarationModifiers modifiers, DeclarationModifiers unsupportedModifiers, Location errorLocation, BindingDiagnosticBag diagnostics, LanguageVersion availableVersion, LanguageVersion requiredVersion)
198DeclarationModifiers errorModifiers = modifiers & unsupportedModifiers;
201while (errorModifiers != DeclarationModifiers.None)
203DeclarationModifiers oneError = errorModifiers & ~(errorModifiers - 1);
204Debug.Assert(oneError != DeclarationModifiers.None);
213internal static void CheckFeatureAvailabilityForStaticAbstractMembersInInterfacesIfNeeded(DeclarationModifiers mods, bool isExplicitInterfaceImplementation, Location location, BindingDiagnosticBag diagnostics)
215if (isExplicitInterfaceImplementation && (mods & DeclarationModifiers.Static) != 0)
223ModifierUtils.ReportUnsupportedModifiersForLanguageVersion(mods, DeclarationModifiers.Static, location, diagnostics, availableVersion, requiredVersion);
238DeclarationModifiers.Partial,
239DeclarationModifiers.Partial,
248internal static DeclarationModifiers AdjustModifiersForAnInterfaceMember(DeclarationModifiers mods, bool hasBody, bool isExplicitInterfaceImplementation, bool forMethod)
252bool notPartialOrNewPartialBehavior = (mods & DeclarationModifiers.Partial) == 0 || !forMethod;
254if ((mods & DeclarationModifiers.AccessibilityMask) == 0)
258mods |= DeclarationModifiers.Public;
262mods |= DeclarationModifiers.Private;
268if ((mods & DeclarationModifiers.Abstract) != 0)
270mods |= DeclarationModifiers.Sealed;
273else if ((mods & DeclarationModifiers.Static) != 0)
275mods &= ~DeclarationModifiers.Sealed;
277else if ((mods & (DeclarationModifiers.Private | DeclarationModifiers.Virtual | DeclarationModifiers.Abstract)) == 0 && notPartialOrNewPartialBehavior)
281if (hasBody || (mods & (DeclarationModifiers.Extern | DeclarationModifiers.Partial | DeclarationModifiers.Sealed)) != 0)
283if ((mods & DeclarationModifiers.Sealed) == 0)
285mods |= DeclarationModifiers.Virtual;
289mods &= ~DeclarationModifiers.Sealed;
294mods |= DeclarationModifiers.Abstract;
301internal static string ConvertSingleModifierToSyntaxText(DeclarationModifiers modifier)
305case DeclarationModifiers.Abstract:
307case DeclarationModifiers.Sealed:
309case DeclarationModifiers.Static:
311case DeclarationModifiers.New:
313case DeclarationModifiers.Public:
315case DeclarationModifiers.Protected:
317case DeclarationModifiers.Internal:
319case DeclarationModifiers.ProtectedInternal:
321case DeclarationModifiers.Private:
323case DeclarationModifiers.PrivateProtected:
325case DeclarationModifiers.ReadOnly:
327case DeclarationModifiers.Const:
329case DeclarationModifiers.Volatile:
331case DeclarationModifiers.Extern:
333case DeclarationModifiers.Partial:
335case DeclarationModifiers.Unsafe:
337case DeclarationModifiers.Fixed:
339case DeclarationModifiers.Virtual:
341case DeclarationModifiers.Override:
343case DeclarationModifiers.Async:
345case DeclarationModifiers.Ref:
347case DeclarationModifiers.Required:
349case DeclarationModifiers.Scoped:
351case DeclarationModifiers.File:
358private static DeclarationModifiers ToDeclarationModifier(SyntaxKind kind)
363return DeclarationModifiers.Abstract;
365return DeclarationModifiers.Async;
367return DeclarationModifiers.Sealed;
369return DeclarationModifiers.Static;
371return DeclarationModifiers.New;
373return DeclarationModifiers.Public;
375return DeclarationModifiers.Protected;
377return DeclarationModifiers.Internal;
379return DeclarationModifiers.Private;
381return DeclarationModifiers.Extern;
383return DeclarationModifiers.ReadOnly;
385return DeclarationModifiers.Partial;
387return DeclarationModifiers.Unsafe;
389return DeclarationModifiers.Virtual;
391return DeclarationModifiers.Override;
393return DeclarationModifiers.Const;
395return DeclarationModifiers.Fixed;
397return DeclarationModifiers.Volatile;
399return DeclarationModifiers.Ref;
401return DeclarationModifiers.Required;
403return DeclarationModifiers.Scoped;
405return DeclarationModifiers.File;
411public static DeclarationModifiers ToDeclarationModifiers(
414var result = DeclarationModifiers.None;
420DeclarationModifiers one = ToDeclarationModifier(modifier.ContextualKind());
427if (one == DeclarationModifiers.Partial)
448switch (result & DeclarationModifiers.AccessibilityMask)
450case DeclarationModifiers.Protected | DeclarationModifiers.Internal:
452result &= ~DeclarationModifiers.AccessibilityMask;
453result |= DeclarationModifiers.ProtectedInternal;
456case DeclarationModifiers.Private | DeclarationModifiers.Protected:
458result &= ~DeclarationModifiers.AccessibilityMask;
459result |= DeclarationModifiers.PrivateProtected;
468DeclarationModifiers modifierKind,
469DeclarationModifiers allModifiers,
486internal static bool CheckAccessibility(DeclarationModifiers modifiers, Symbol symbol, bool isExplicitInterfaceImplementation, BindingDiagnosticBag diagnostics, Location errorLocation)
496(symbol.Kind != SymbolKind.Method || (modifiers & DeclarationModifiers.Partial) == 0) &&
497(modifiers & DeclarationModifiers.Static) == 0)
499switch (modifiers & DeclarationModifiers.AccessibilityMask)
501case DeclarationModifiers.Protected:
502case DeclarationModifiers.ProtectedInternal:
503case DeclarationModifiers.PrivateProtected:
514if ((modifiers & DeclarationModifiers.Required) != 0)
528case FieldSymbol when (modifiers & DeclarationModifiers.ReadOnly) != 0:
544internal static Accessibility EffectiveAccessibility(DeclarationModifiers modifiers)
546switch (modifiers & DeclarationModifiers.AccessibilityMask)
548case DeclarationModifiers.None:
550case DeclarationModifiers.Private:
552case DeclarationModifiers.Protected:
554case DeclarationModifiers.Internal:
556case DeclarationModifiers.Public:
558case DeclarationModifiers.ProtectedInternal:
560case DeclarationModifiers.PrivateProtected:
570internal static bool IsValidAccessibility(DeclarationModifiers modifiers)
572switch (modifiers & DeclarationModifiers.AccessibilityMask)
574case DeclarationModifiers.None:
575case DeclarationModifiers.Private:
576case DeclarationModifiers.Protected:
577case DeclarationModifiers.Internal:
578case DeclarationModifiers.Public:
579case DeclarationModifiers.ProtectedInternal:
580case DeclarationModifiers.PrivateProtected:
Symbols\Source\SourceConstructorSymbol.cs (17)
90private static (DeclarationModifiers, Flags) MakeModifiersAndFlags(
102DeclarationModifiers declarationModifiers = MakeModifiers(containingType, syntax, methodKind, hasAnyBody, location, diagnostics, out modifierErrors, out bool hasExplicitAccessModifier, out report_ERR_StaticConstructorWithAccessModifiers);
133private static DeclarationModifiers MakeModifiers(
137var defaultAccess = (methodKind == MethodKind.StaticConstructor) ? DeclarationModifiers.None : DeclarationModifiers.Private;
140DeclarationModifiers allowedModifiers =
141DeclarationModifiers.AccessibilityMask |
142DeclarationModifiers.Static |
143DeclarationModifiers.Extern |
144DeclarationModifiers.Unsafe;
148allowedModifiers |= DeclarationModifiers.Partial;
152var mods = ModifierUtils.MakeAndCheckNonTypeMemberModifiers(isOrdinaryMethod: false, isForInterfaceMember: isInterface, syntax.Modifiers, defaultAccess, allowedModifiers, location, diagnostics, out modifierErrors, out hasExplicitAccessModifier);
160if ((mods & DeclarationModifiers.AccessibilityMask) != 0 &&
163mods = mods & ~DeclarationModifiers.AccessibilityMask;
168mods |= DeclarationModifiers.Private; // we mark static constructors private in the symbol table
173DeclarationModifiers.Extern,
Symbols\Source\SourceDelegateMethodSymbol.cs (8)
29DeclarationModifiers declarationModifiers)
218: base(delegateType, voidType, syntax, MethodKind.Constructor, RefKind.None, DeclarationModifiers.Public)
263: base(delegateType, returnType, syntax, MethodKind.DelegateInvoke, refKind, DeclarationModifiers.Virtual | DeclarationModifiers.Public)
356: base((SourceNamedTypeSymbol)invoke.ContainingType, iAsyncResultType, syntax, MethodKind.Ordinary, RefKind.None, DeclarationModifiers.Virtual | DeclarationModifiers.Public)
394: base((SourceNamedTypeSymbol)invoke.ContainingType, invoke.ReturnTypeWithAnnotations, syntax, MethodKind.Ordinary, invoke.RefKind, DeclarationModifiers.Virtual | DeclarationModifiers.Public)
Symbols\Source\SourceDestructorSymbol.cs (10)
65private static (DeclarationModifiers, Flags) MakeModifiersAndFlags(NamedTypeSymbol containingType, DestructorDeclarationSyntax syntax, bool isNullableAnalysisEnabled, Location location, BindingDiagnosticBag diagnostics, out bool modifierErrors)
67DeclarationModifiers declarationModifiers = MakeModifiers(containingType, syntax.Modifiers, location, diagnostics, out modifierErrors);
130private static DeclarationModifiers MakeModifiers(NamedTypeSymbol containingType, SyntaxTokenList modifiers, Location location, BindingDiagnosticBag diagnostics, out bool modifierErrors)
133const DeclarationModifiers allowedModifiers = DeclarationModifiers.Extern | DeclarationModifiers.Unsafe;
134var mods = ModifierUtils.MakeAndCheckNonTypeMemberModifiers(isOrdinaryMethod: false, isForInterfaceMember: containingType.IsInterface, modifiers, DeclarationModifiers.None, allowedModifiers, location, diagnostics, out modifierErrors, out _);
136mods = (mods & ~DeclarationModifiers.AccessibilityMask) | DeclarationModifiers.Protected; // we mark destructors protected in the symbol table
Symbols\Source\SourceMemberContainerSymbol.cs (74)
191private readonly DeclarationModifiers _declModifiers;
239var modifiers = MakeModifiers(typeKind, diagnostics);
246int access = (int)(modifiers & DeclarationModifiers.AccessibilityMask);
249if ((modifiers & DeclarationModifiers.Partial) != 0)
252modifiers &= ~DeclarationModifiers.AccessibilityMask; // remove them all
253modifiers |= (DeclarationModifiers)access; // except the one
257var specialType = access == (int)DeclarationModifiers.Public
291private DeclarationModifiers MakeModifiers(TypeKind typeKind, BindingDiagnosticBag diagnostics)
294DeclarationModifiers defaultAccess;
297DeclarationModifiers allowedModifiers;
300allowedModifiers = DeclarationModifiers.None;
301defaultAccess = DeclarationModifiers.Public;
305allowedModifiers = DeclarationModifiers.AccessibilityMask | DeclarationModifiers.File;
309defaultAccess = DeclarationModifiers.Internal;
313allowedModifiers |= DeclarationModifiers.New;
317defaultAccess = DeclarationModifiers.Public;
321defaultAccess = DeclarationModifiers.Private;
329allowedModifiers |= DeclarationModifiers.Partial | DeclarationModifiers.Sealed | DeclarationModifiers.Abstract
330| DeclarationModifiers.Unsafe;
334allowedModifiers |= DeclarationModifiers.Static;
339allowedModifiers |= DeclarationModifiers.Partial | DeclarationModifiers.ReadOnly | DeclarationModifiers.Unsafe;
343allowedModifiers |= DeclarationModifiers.Ref;
348allowedModifiers |= DeclarationModifiers.Partial | DeclarationModifiers.Unsafe;
351allowedModifiers |= DeclarationModifiers.Unsafe;
357var mods = MakeAndCheckTypeModifiers(
366(mods & DeclarationModifiers.Abstract) != 0 &&
367(mods & (DeclarationModifiers.Sealed | DeclarationModifiers.Static)) != 0)
373(mods & (DeclarationModifiers.Sealed | DeclarationModifiers.Static)) == (DeclarationModifiers.Sealed | DeclarationModifiers.Static))
381mods |= DeclarationModifiers.Abstract;
387mods |= DeclarationModifiers.Sealed;
394private DeclarationModifiers MakeAndCheckTypeModifiers(
395DeclarationModifiers defaultAccess,
396DeclarationModifiers allowedModifiers,
402var result = DeclarationModifiers.Unset;
409var mods = decl.Modifiers;
411if (partCount > 1 && (mods & DeclarationModifiers.Partial) == 0)
430if (result == DeclarationModifiers.Unset)
441if ((result & DeclarationModifiers.AccessibilityMask) == 0)
445else if ((result & DeclarationModifiers.File) != 0)
452if ((result & DeclarationModifiers.Partial) == 0)
461diagnostics.Add((result & DeclarationModifiers.File) != 0
483var mods = singleDeclaration.Modifiers;
484if ((mods & DeclarationModifiers.Partial) == 0)
862public override bool IsStatic => HasFlag(DeclarationModifiers.Static);
864public sealed override bool IsRefLikeType => HasFlag(DeclarationModifiers.Ref);
866public override bool IsReadOnly => HasFlag(DeclarationModifiers.ReadOnly);
868public override bool IsSealed => HasFlag(DeclarationModifiers.Sealed);
870public override bool IsAbstract => HasFlag(DeclarationModifiers.Abstract);
872internal bool IsPartial => HasFlag(DeclarationModifiers.Partial);
874internal bool IsNew => HasFlag(DeclarationModifiers.New);
876internal sealed override bool IsFileLocal => HasFlag(DeclarationModifiers.File);
878internal bool IsUnsafe => HasFlag(DeclarationModifiers.Unsafe);
899private bool HasFlag(DeclarationModifiers flag) => (_declModifiers & flag) != 0;
5520var modifiers = SourceMemberFieldSymbol.MakeModifiers(this, fieldSyntax.Declaration.Variables[0].Identifier, fieldSyntax.Modifiers, isRefField: refKind != RefKind.None, diagnostics, out modifierErrors);
5523var fieldSymbol = (modifiers & DeclarationModifiers.Fixed) == 0
5535DeclarationModifiers.Private | (modifiers & DeclarationModifiers.Static),
5639DeclarationModifiers.Private | (property.IsStatic ? DeclarationModifiers.Static : 0),
5677DeclarationModifiers.Private | (@event.IsStatic ? DeclarationModifiers.Static : 0),
5800ExpressionFieldFinder.FindExpressionVariables(builder.NonTypeMembersWithPartialImplementations, vdecl, this, DeclarationModifiers.Private,
5815DeclarationModifiers.Private,
Symbols\Source\SourceMemberFieldSymbol.cs (53)
23private readonly DeclarationModifiers _modifiers;
27DeclarationModifiers modifiers,
36protected sealed override DeclarationModifiers Modifiers
176internal static DeclarationModifiers MakeModifiers(NamedTypeSymbol containingType, SyntaxToken firstIdentifier, SyntaxTokenList modifiers, bool isRefField, BindingDiagnosticBag diagnostics, out bool modifierErrors)
179DeclarationModifiers defaultAccess =
180isInterface ? DeclarationModifiers.Public : DeclarationModifiers.Private;
182DeclarationModifiers allowedModifiers =
183DeclarationModifiers.AccessibilityMask |
184DeclarationModifiers.Const |
185DeclarationModifiers.New |
186DeclarationModifiers.ReadOnly |
187DeclarationModifiers.Static |
188DeclarationModifiers.Volatile |
189DeclarationModifiers.Fixed |
190DeclarationModifiers.Unsafe |
191DeclarationModifiers.Abstract |
192DeclarationModifiers.Required; // Some of these are filtered out later, when illegal, for better error messages.
195DeclarationModifiers result = ModifierUtils.MakeAndCheckNonTypeMemberModifiers(
199if ((result & DeclarationModifiers.Abstract) != 0)
202result &= ~DeclarationModifiers.Abstract;
205if ((result & DeclarationModifiers.Fixed) != 0)
213reportBadMemberFlagIfAny(result, DeclarationModifiers.Static, diagnostics, errorLocation);
214reportBadMemberFlagIfAny(result, DeclarationModifiers.ReadOnly, diagnostics, errorLocation);
215reportBadMemberFlagIfAny(result, DeclarationModifiers.Const, diagnostics, errorLocation);
216reportBadMemberFlagIfAny(result, DeclarationModifiers.Volatile, diagnostics, errorLocation);
217reportBadMemberFlagIfAny(result, DeclarationModifiers.Required, diagnostics, errorLocation);
219result &= ~(DeclarationModifiers.Static | DeclarationModifiers.ReadOnly | DeclarationModifiers.Const | DeclarationModifiers.Volatile | DeclarationModifiers.Required);
220Debug.Assert((result & ~(DeclarationModifiers.AccessibilityMask | DeclarationModifiers.Fixed | DeclarationModifiers.Unsafe | DeclarationModifiers.New)) == 0);
223if ((result & DeclarationModifiers.Const) != 0)
225if ((result & DeclarationModifiers.Static) != 0)
231reportBadMemberFlagIfAny(result, DeclarationModifiers.ReadOnly, diagnostics, errorLocation);
232reportBadMemberFlagIfAny(result, DeclarationModifiers.Volatile, diagnostics, errorLocation);
233reportBadMemberFlagIfAny(result, DeclarationModifiers.Unsafe, diagnostics, errorLocation);
235if (reportBadMemberFlagIfAny(result, DeclarationModifiers.Required, diagnostics, errorLocation))
237result &= ~DeclarationModifiers.Required;
240result |= DeclarationModifiers.Static; // "constants are considered static members"
244if ((result & DeclarationModifiers.Static) != 0 && (result & DeclarationModifiers.Required) != 0)
248result &= ~DeclarationModifiers.Required;
261reportBadMemberFlagIfAny(result, DeclarationModifiers.Static, diagnostics, errorLocation);
262reportBadMemberFlagIfAny(result, DeclarationModifiers.Const, diagnostics, errorLocation);
263reportBadMemberFlagIfAny(result, DeclarationModifiers.Volatile, diagnostics, errorLocation);
268static bool reportBadMemberFlagIfAny(DeclarationModifiers result, DeclarationModifiers modifier, BindingDiagnosticBag diagnostics, SourceLocation errorLocation)
356DeclarationModifiers modifiers,
Symbols\Source\SourceOrdinaryMethodSymbol.cs (46)
89private static (DeclarationModifiers, Flags) MakeModifiersAndFlags(
93(DeclarationModifiers declarationModifiers, bool hasExplicitAccessMod) = MakeModifiers(syntax, containingType, methodKind, hasBody: syntax.HasAnyBody(), location, diagnostics);
434private static DeclarationModifiers MakeDeclarationModifiers(MethodDeclarationSyntax syntax, NamedTypeSymbol containingType, Location location, DeclarationModifiers allowedModifiers, BindingDiagnosticBag diagnostics)
437syntax.Modifiers, defaultAccess: DeclarationModifiers.None, allowedModifiers, location, diagnostics, out _, out _);
708private static (DeclarationModifiers mods, bool hasExplicitAccessMod) MakeModifiers(MethodDeclarationSyntax syntax, NamedTypeSymbol containingType, MethodKind methodKind, bool hasBody, Location location, BindingDiagnosticBag diagnostics)
716var defaultAccess = isInterface && !isExplicitInterfaceImplementation ? DeclarationModifiers.None : DeclarationModifiers.Private;
719var allowedModifiers = DeclarationModifiers.Partial | DeclarationModifiers.Unsafe;
720var defaultInterfaceImplementationModifiers = DeclarationModifiers.None;
724allowedModifiers |= DeclarationModifiers.Static |
725DeclarationModifiers.AccessibilityMask;
729allowedModifiers |= DeclarationModifiers.New |
730DeclarationModifiers.Sealed |
731DeclarationModifiers.Abstract |
732DeclarationModifiers.Virtual;
736allowedModifiers |= DeclarationModifiers.Override;
740defaultInterfaceImplementationModifiers |= DeclarationModifiers.Sealed |
741DeclarationModifiers.Abstract |
742DeclarationModifiers.Static |
743DeclarationModifiers.Virtual |
744DeclarationModifiers.Extern |
745DeclarationModifiers.Async |
746DeclarationModifiers.Partial |
747DeclarationModifiers.AccessibilityMask;
757allowedModifiers |= DeclarationModifiers.Abstract;
760allowedModifiers |= DeclarationModifiers.Static;
763allowedModifiers |= DeclarationModifiers.Async | DeclarationModifiers.Extern;
767allowedModifiers |= DeclarationModifiers.ReadOnly;
773DeclarationModifiers mods = MakeDeclarationModifiers(syntax, containingType, location, allowedModifiers, diagnostics);
774if ((mods & DeclarationModifiers.AccessibilityMask) == 0)
794private static DeclarationModifiers AddImpliedModifiers(DeclarationModifiers mods, bool containingTypeIsInterface, MethodKind methodKind, bool hasBody)
806mods = (mods & ~DeclarationModifiers.AccessibilityMask) | DeclarationModifiers.Private;
811private const DeclarationModifiers PartialMethodExtendedModifierMask =
812DeclarationModifiers.Virtual |
813DeclarationModifiers.Override |
814DeclarationModifiers.New |
815DeclarationModifiers.Sealed |
816DeclarationModifiers.Extern;
Symbols\Source\SourcePropertyAccessorSymbol.cs (28)
32DeclarationModifiers propertyModifiers,
69DeclarationModifiers propertyModifiers,
90DeclarationModifiers propertyModifiers,
116DeclarationModifiers propertyModifiers,
143DeclarationModifiers propertyModifiers,
177DeclarationModifiers propertyModifiers,
223private static (DeclarationModifiers, Flags) MakeModifiersAndFlags(
224NamedTypeSymbol containingType, SourcePropertySymbolBase property, DeclarationModifiers propertyModifiers, Location location,
232var declarationModifiers = MakeModifiers(containingType, modifiers, isExplicitInterfaceImplementation, hasAnyBody, location, diagnostics, out modifierErrors);
235declarationModifiers |= GetAccessorModifiers(propertyModifiers) & ~DeclarationModifiers.AccessibilityMask;
236if ((declarationModifiers & DeclarationModifiers.Private) != 0)
239declarationModifiers &= ~DeclarationModifiers.Virtual;
252private static DeclarationModifiers GetAccessorModifiers(DeclarationModifiers propertyModifiers) =>
253propertyModifiers & ~(DeclarationModifiers.Indexer | DeclarationModifiers.ReadOnly);
433internal bool LocalDeclaredReadOnly => (DeclarationModifiers & DeclarationModifiers.ReadOnly) != 0;
493private static DeclarationModifiers MakeModifiers(NamedTypeSymbol containingType, SyntaxTokenList modifiers, bool isExplicitInterfaceImplementation,
498const DeclarationModifiers defaultAccess = DeclarationModifiers.None;
501var allowedModifiers = isExplicitInterfaceImplementation ? DeclarationModifiers.None : DeclarationModifiers.AccessibilityMask;
504allowedModifiers |= DeclarationModifiers.ReadOnly;
507var defaultInterfaceImplementationModifiers = DeclarationModifiers.None;
512defaultInterfaceImplementationModifiers = DeclarationModifiers.AccessibilityMask;
515var mods = ModifierUtils.MakeAndCheckNonTypeMemberModifiers(isOrdinaryMethod: false, isForInterfaceMember: isInterface,
Symbols\Source\SourceUserDefinedOperatorSymbolBase.cs (42)
33DeclarationModifiers declarationModifiers,
175protected static DeclarationModifiers MakeDeclarationModifiers(bool isCompoundAssignmentOrIncrementAssignment, MethodKind methodKind, SourceMemberContainerTypeSymbol containingType, BaseMethodDeclarationSyntax syntax, Location location, BindingDiagnosticBag diagnostics)
180var defaultAccess = inInterface && !isExplicitInterfaceImplementation ? DeclarationModifiers.Public : DeclarationModifiers.Private;
181var allowedModifiers =
182DeclarationModifiers.Unsafe | DeclarationModifiers.Extern;
186allowedModifiers |= DeclarationModifiers.Static;
191allowedModifiers |= DeclarationModifiers.AccessibilityMask;
195allowedModifiers |= DeclarationModifiers.Abstract | DeclarationModifiers.Virtual;
199allowedModifiers |= DeclarationModifiers.Sealed;
207allowedModifiers |= DeclarationModifiers.New;
213allowedModifiers |= DeclarationModifiers.Abstract | DeclarationModifiers.Virtual | DeclarationModifiers.Sealed;
216allowedModifiers |= DeclarationModifiers.Override | DeclarationModifiers.New;
223allowedModifiers |= DeclarationModifiers.Abstract;
228allowedModifiers |= DeclarationModifiers.ReadOnly;
231var result = ModifierUtils.MakeAndCheckNonTypeMemberModifiers(
237if ((result & (DeclarationModifiers.Abstract | DeclarationModifiers.Virtual | DeclarationModifiers.Sealed)) != 0)
239if ((result & DeclarationModifiers.Sealed) != 0 &&
240(result & (DeclarationModifiers.Abstract | DeclarationModifiers.Virtual)) != 0)
242diagnostics.Add(ErrorCode.ERR_BadMemberFlag, location, ModifierUtils.ConvertSingleModifierToSyntaxText(DeclarationModifiers.Sealed));
243result &= ~DeclarationModifiers.Sealed;
254if ((result & DeclarationModifiers.Abstract) != 0)
256reportModifierIfPresent(result, DeclarationModifiers.Abstract, location, diagnostics, requiredVersionArgument, availableVersionArgument);
260reportModifierIfPresent(result, DeclarationModifiers.Virtual, location, diagnostics, requiredVersionArgument, availableVersionArgument);
263reportModifierIfPresent(result, DeclarationModifiers.Sealed, location, diagnostics, requiredVersionArgument, availableVersionArgument);
266result &= ~DeclarationModifiers.Sealed;
268else if ((result & DeclarationModifiers.Static) != 0)
279result |= DeclarationModifiers.Virtual;
283result |= DeclarationModifiers.Abstract;
290if ((result & DeclarationModifiers.Abstract) != 0)
292result |= DeclarationModifiers.Sealed;
298static void reportModifierIfPresent(DeclarationModifiers result, DeclarationModifiers errorModifier, Location location, BindingDiagnosticBag diagnostics, CSharpRequiredLanguageVersion requiredVersionArgument, string availableVersionArgument)