Symbols\Source\ModifierUtils.cs (180)
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.Closed, MessageID.IDS_FeatureClosedClasses) |
113checkFeature(DeclarationModifiers.Async, MessageID.IDS_FeatureAsync);
115if ((result & DeclarationModifiers.Safe) != 0)
122if ((result & DeclarationModifiers.Unsafe) != 0)
125result &= ~DeclarationModifiers.Safe;
132bool checkFeature(DeclarationModifiers modifier, MessageID featureID)
164DeclarationModifiers modifiers,
165DeclarationModifiers defaultInterfaceImplementationModifiers,
174if ((modifiers & defaultInterfaceImplementationModifiers & DeclarationModifiers.Static) != 0 &&
175(modifiers & defaultInterfaceImplementationModifiers & (DeclarationModifiers.Sealed | DeclarationModifiers.Abstract | DeclarationModifiers.Virtual)) != 0)
177var reportModifiers = DeclarationModifiers.Sealed | DeclarationModifiers.Abstract | DeclarationModifiers.Virtual;
178if ((modifiers & defaultInterfaceImplementationModifiers & DeclarationModifiers.Sealed) != 0 &&
179(modifiers & defaultInterfaceImplementationModifiers & (DeclarationModifiers.Abstract | DeclarationModifiers.Virtual)) != 0)
181diagnostics.Add(ErrorCode.ERR_BadMemberFlag, errorLocation, ConvertSingleModifierToSyntaxText(DeclarationModifiers.Sealed));
182reportModifiers &= ~DeclarationModifiers.Sealed;
196if ((modifiers & defaultInterfaceImplementationModifiers & DeclarationModifiers.Static) != 0)
212internal static void ReportUnsupportedModifiersForLanguageVersion(DeclarationModifiers modifiers, DeclarationModifiers unsupportedModifiers, Location errorLocation, BindingDiagnosticBag diagnostics, LanguageVersion availableVersion, LanguageVersion requiredVersion)
214DeclarationModifiers errorModifiers = modifiers & unsupportedModifiers;
217while (errorModifiers != DeclarationModifiers.None)
219DeclarationModifiers oneError = errorModifiers & ~(errorModifiers - 1);
220Debug.Assert(oneError != DeclarationModifiers.None);
229internal static void CheckFeatureAvailabilityForStaticAbstractMembersInInterfacesIfNeeded(DeclarationModifiers mods, bool isExplicitInterfaceImplementation, Location location, BindingDiagnosticBag diagnostics)
231if (isExplicitInterfaceImplementation && (mods & DeclarationModifiers.Static) != 0)
239ModifierUtils.ReportUnsupportedModifiersForLanguageVersion(mods, DeclarationModifiers.Static, location, diagnostics, availableVersion, requiredVersion);
254DeclarationModifiers.Partial,
255DeclarationModifiers.Partial,
264internal static DeclarationModifiers AdjustModifiersForAnInterfaceMember(DeclarationModifiers mods, bool hasBody, bool isExplicitInterfaceImplementation, bool forMethod)
268bool notPartialOrNewPartialBehavior = (mods & DeclarationModifiers.Partial) == 0 || !forMethod;
270if ((mods & DeclarationModifiers.AccessibilityMask) == 0)
274mods |= DeclarationModifiers.Public;
278mods |= DeclarationModifiers.Private;
284if ((mods & DeclarationModifiers.Abstract) != 0)
286mods |= DeclarationModifiers.Sealed;
289else if ((mods & DeclarationModifiers.Static) != 0)
291mods &= ~DeclarationModifiers.Sealed;
293else if ((mods & (DeclarationModifiers.Private | DeclarationModifiers.Virtual | DeclarationModifiers.Abstract)) == 0 && notPartialOrNewPartialBehavior)
297if (hasBody || (mods & (DeclarationModifiers.Extern | DeclarationModifiers.Partial | DeclarationModifiers.Sealed)) != 0)
299if ((mods & DeclarationModifiers.Sealed) == 0)
301mods |= DeclarationModifiers.Virtual;
305mods &= ~DeclarationModifiers.Sealed;
310mods |= DeclarationModifiers.Abstract;
317internal static string ConvertSingleModifierToSyntaxText(DeclarationModifiers modifier)
321case DeclarationModifiers.Abstract:
323case DeclarationModifiers.Sealed:
325case DeclarationModifiers.Static:
327case DeclarationModifiers.New:
329case DeclarationModifiers.Public:
331case DeclarationModifiers.Protected:
333case DeclarationModifiers.Internal:
335case DeclarationModifiers.ProtectedInternal:
337case DeclarationModifiers.Private:
339case DeclarationModifiers.PrivateProtected:
341case DeclarationModifiers.ReadOnly:
343case DeclarationModifiers.Const:
345case DeclarationModifiers.Volatile:
347case DeclarationModifiers.Extern:
349case DeclarationModifiers.Partial:
351case DeclarationModifiers.Unsafe:
353case DeclarationModifiers.Safe:
355case DeclarationModifiers.Fixed:
357case DeclarationModifiers.Virtual:
359case DeclarationModifiers.Override:
361case DeclarationModifiers.Async:
363case DeclarationModifiers.Ref:
365case DeclarationModifiers.Required:
367case DeclarationModifiers.Scoped:
369case DeclarationModifiers.File:
371case DeclarationModifiers.Closed:
378private static DeclarationModifiers ToDeclarationModifier(SyntaxKind kind)
383return DeclarationModifiers.Abstract;
385return DeclarationModifiers.Async;
387return DeclarationModifiers.Sealed;
389return DeclarationModifiers.Static;
391return DeclarationModifiers.New;
393return DeclarationModifiers.Public;
395return DeclarationModifiers.Protected;
397return DeclarationModifiers.Internal;
399return DeclarationModifiers.Private;
401return DeclarationModifiers.Extern;
403return DeclarationModifiers.ReadOnly;
405return DeclarationModifiers.Partial;
407return DeclarationModifiers.Unsafe;
409return DeclarationModifiers.Safe;
411return DeclarationModifiers.Virtual;
413return DeclarationModifiers.Override;
415return DeclarationModifiers.Const;
417return DeclarationModifiers.Fixed;
419return DeclarationModifiers.Volatile;
421return DeclarationModifiers.Ref;
423return DeclarationModifiers.Required;
425return DeclarationModifiers.Scoped;
427return DeclarationModifiers.File;
429return DeclarationModifiers.Closed;
442private static DeclarationModifiers GetDeclarationModifiersAndCheckForDuplicateModifiers(
446var allModifiers = DeclarationModifiers.None;
451var thisModifier = ToDeclarationModifier(modifierToken.ContextualKind());
465public static DeclarationModifiers ToDeclarationModifiers(
468var result = GetDeclarationModifiersAndCheckForDuplicateModifiers(modifiers, diagnostics);
469if ((result & DeclarationModifiers.Partial) == DeclarationModifiers.Partial)
490switch (result & DeclarationModifiers.AccessibilityMask)
492case DeclarationModifiers.Protected | DeclarationModifiers.Internal:
494result &= ~DeclarationModifiers.AccessibilityMask;
495result |= DeclarationModifiers.ProtectedInternal;
498case DeclarationModifiers.Private | DeclarationModifiers.Protected:
500result &= ~DeclarationModifiers.AccessibilityMask;
501result |= DeclarationModifiers.PrivateProtected;
510DeclarationModifiers modifierKind,
511DeclarationModifiers allModifiers,
528internal static bool CheckAccessibility(DeclarationModifiers modifiers, Symbol symbol, bool isExplicitInterfaceImplementation, BindingDiagnosticBag diagnostics, Location errorLocation)
538(symbol.Kind != SymbolKind.Method || (modifiers & DeclarationModifiers.Partial) == 0) &&
539(modifiers & DeclarationModifiers.Static) == 0)
541switch (modifiers & DeclarationModifiers.AccessibilityMask)
543case DeclarationModifiers.Protected:
544case DeclarationModifiers.ProtectedInternal:
545case DeclarationModifiers.PrivateProtected:
556if ((modifiers & DeclarationModifiers.Required) != 0)
570case FieldSymbol when (modifiers & DeclarationModifiers.ReadOnly) != 0:
586internal static Accessibility EffectiveAccessibility(DeclarationModifiers modifiers)
588switch (modifiers & DeclarationModifiers.AccessibilityMask)
590case DeclarationModifiers.None:
592case DeclarationModifiers.Private:
594case DeclarationModifiers.Protected:
596case DeclarationModifiers.Internal:
598case DeclarationModifiers.Public:
600case DeclarationModifiers.ProtectedInternal:
602case DeclarationModifiers.PrivateProtected:
612internal static bool IsValidAccessibility(DeclarationModifiers modifiers)
614switch (modifiers & DeclarationModifiers.AccessibilityMask)
616case DeclarationModifiers.None:
617case DeclarationModifiers.Private:
618case DeclarationModifiers.Protected:
619case DeclarationModifiers.Internal:
620case DeclarationModifiers.Public:
621case DeclarationModifiers.ProtectedInternal:
622case DeclarationModifiers.PrivateProtected:
Symbols\Source\SourceConstructorSymbol.cs (22)
98private static (DeclarationModifiers, Flags) MakeModifiersAndFlags(
110DeclarationModifiers declarationModifiers = MakeModifiers(containingType, syntax, methodKind, hasAnyBody, location, diagnostics, out modifierErrors, out bool hasExplicitAccessModifier, out report_ERR_StaticConstructorWithAccessModifiers);
141private static DeclarationModifiers MakeModifiers(
145var defaultAccess = (methodKind == MethodKind.StaticConstructor) ? DeclarationModifiers.None : DeclarationModifiers.Private;
148DeclarationModifiers allowedModifiers =
149DeclarationModifiers.AccessibilityMask |
150DeclarationModifiers.Static |
151DeclarationModifiers.Extern |
152DeclarationModifiers.Unsafe |
153DeclarationModifiers.Safe;
157allowedModifiers |= DeclarationModifiers.Partial;
161var mods = ModifierUtils.MakeAndCheckNonTypeMemberModifiers(isOrdinaryMethod: false, isForInterfaceMember: isInterface, syntax.Modifiers, defaultAccess, allowedModifiers, location, diagnostics, out modifierErrors, out hasExplicitAccessModifier);
169if ((mods & DeclarationModifiers.AccessibilityMask) != 0 &&
172mods = mods & ~DeclarationModifiers.AccessibilityMask;
177mods |= DeclarationModifiers.Private; // we mark static constructors private in the symbol table
182DeclarationModifiers.Extern,
186if ((mods & DeclarationModifiers.Unsafe) == DeclarationModifiers.Unsafe &&
255internal sealed override bool HasUnsafeModifier => (DeclarationModifiers & DeclarationModifiers.Unsafe) != 0;
256internal sealed override bool HasSafeModifier => (DeclarationModifiers & DeclarationModifiers.Safe) != 0;
Symbols\Source\SourceDelegateMethodSymbol.cs (10)
30DeclarationModifiers declarationModifiers)
146internal sealed override bool HasUnsafeModifier => (DeclarationModifiers & DeclarationModifiers.Unsafe) != 0;
147internal sealed override bool HasSafeModifier => (DeclarationModifiers & DeclarationModifiers.Safe) != 0;
223: base(delegateType, voidType, syntax, MethodKind.Constructor, RefKind.None, DeclarationModifiers.Public)
270: base(delegateType, returnType, syntax, MethodKind.DelegateInvoke, refKind, DeclarationModifiers.Virtual | DeclarationModifiers.Public)
363: base((SourceNamedTypeSymbol)invoke.ContainingType, iAsyncResultType, syntax, MethodKind.Ordinary, RefKind.None, DeclarationModifiers.Virtual | DeclarationModifiers.Public)
403: base((SourceNamedTypeSymbol)invoke.ContainingType, invoke.ReturnTypeWithAnnotations, syntax, MethodKind.Ordinary, invoke.RefKind, DeclarationModifiers.Virtual | DeclarationModifiers.Public)
Symbols\Source\SourceDestructorSymbol.cs (15)
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);
105internal sealed override bool HasUnsafeModifier => (DeclarationModifiers & DeclarationModifiers.Unsafe) != 0;
106internal sealed override bool HasSafeModifier => (DeclarationModifiers & DeclarationModifiers.Safe) != 0;
136private static DeclarationModifiers MakeModifiers(NamedTypeSymbol containingType, SyntaxTokenList modifiers, Location location, BindingDiagnosticBag diagnostics, out bool modifierErrors)
139const DeclarationModifiers allowedModifiers = DeclarationModifiers.Extern | DeclarationModifiers.Unsafe | DeclarationModifiers.Safe;
140var mods = ModifierUtils.MakeAndCheckNonTypeMemberModifiers(isOrdinaryMethod: false, isForInterfaceMember: containingType.IsInterface, modifiers, DeclarationModifiers.None, allowedModifiers, location, diagnostics, out modifierErrors, out _);
142mods = (mods & ~DeclarationModifiers.AccessibilityMask) | DeclarationModifiers.Protected; // we mark destructors protected in the symbol table
144if ((mods & DeclarationModifiers.Unsafe) == DeclarationModifiers.Unsafe &&
Symbols\Source\SourceMemberContainerSymbol.cs (88)
191private readonly DeclarationModifiers _declModifiers;
241var modifiers = MakeModifiers(typeKind, diagnostics);
248int access = (int)(modifiers & DeclarationModifiers.AccessibilityMask);
251if ((modifiers & DeclarationModifiers.Partial) != 0)
254modifiers &= ~DeclarationModifiers.AccessibilityMask; // remove them all
255modifiers |= (DeclarationModifiers)access; // except the one
259var specialType = access == (int)DeclarationModifiers.Public
293private DeclarationModifiers MakeModifiers(TypeKind typeKind, BindingDiagnosticBag diagnostics)
296DeclarationModifiers defaultAccess;
299DeclarationModifiers allowedModifiers;
302allowedModifiers = DeclarationModifiers.None;
303defaultAccess = DeclarationModifiers.Public;
307allowedModifiers = DeclarationModifiers.AccessibilityMask | DeclarationModifiers.File;
311defaultAccess = DeclarationModifiers.Internal;
315allowedModifiers |= DeclarationModifiers.New;
319defaultAccess = DeclarationModifiers.Public;
323defaultAccess = DeclarationModifiers.Private;
331allowedModifiers |= DeclarationModifiers.Partial | DeclarationModifiers.Sealed | DeclarationModifiers.Abstract
332| DeclarationModifiers.Unsafe | DeclarationModifiers.Safe | DeclarationModifiers.Closed;
336allowedModifiers |= DeclarationModifiers.Static;
341allowedModifiers |= DeclarationModifiers.Partial | DeclarationModifiers.ReadOnly | DeclarationModifiers.Unsafe | DeclarationModifiers.Safe;
345allowedModifiers |= DeclarationModifiers.Ref;
350allowedModifiers |= DeclarationModifiers.Partial | DeclarationModifiers.Unsafe | DeclarationModifiers.Safe;
353allowedModifiers |= DeclarationModifiers.Unsafe | DeclarationModifiers.Safe;
359var mods = MakeAndCheckTypeModifiers(
368(mods & DeclarationModifiers.Abstract) != 0 &&
369(mods & (DeclarationModifiers.Sealed | DeclarationModifiers.Static)) != 0)
375(mods & DeclarationModifiers.Closed) != 0)
377if ((mods & (DeclarationModifiers.Sealed | DeclarationModifiers.Static)) != 0)
380if ((mods & DeclarationModifiers.Abstract) != 0)
385(mods & (DeclarationModifiers.Sealed | DeclarationModifiers.Static)) == (DeclarationModifiers.Sealed | DeclarationModifiers.Static))
390if ((mods & DeclarationModifiers.Unsafe) == DeclarationModifiers.Unsafe &&
399mods |= DeclarationModifiers.Abstract;
402if ((mods & DeclarationModifiers.Closed) != 0)
403mods |= DeclarationModifiers.Abstract;
410mods |= DeclarationModifiers.Sealed;
417private DeclarationModifiers MakeAndCheckTypeModifiers(
418DeclarationModifiers defaultAccess,
419DeclarationModifiers allowedModifiers,
425var result = DeclarationModifiers.Unset;
432var mods = decl.Modifiers;
434if (partCount > 1 && (mods & DeclarationModifiers.Partial) == 0)
453if (result == DeclarationModifiers.Unset)
464if ((result & DeclarationModifiers.AccessibilityMask) == 0)
468else if ((result & DeclarationModifiers.File) != 0)
475if ((result & DeclarationModifiers.Partial) == 0)
484diagnostics.Add((result & DeclarationModifiers.File) != 0
506var mods = singleDeclaration.Modifiers;
507if ((mods & DeclarationModifiers.Partial) == 0)
886public override bool IsStatic => HasFlag(DeclarationModifiers.Static);
888public sealed override bool IsRefLikeType => HasFlag(DeclarationModifiers.Ref);
890public override bool IsReadOnly => HasFlag(DeclarationModifiers.ReadOnly);
892public override bool IsSealed => HasFlag(DeclarationModifiers.Sealed);
894public override bool IsAbstract => HasFlag(DeclarationModifiers.Abstract);
896internal bool IsPartial => HasFlag(DeclarationModifiers.Partial);
898internal bool IsNew => HasFlag(DeclarationModifiers.New);
900internal sealed override bool IsFileLocal => HasFlag(DeclarationModifiers.File);
902internal sealed override bool IsClosed => HasFlag(DeclarationModifiers.Closed);
962internal bool HasUnsafeModifier => HasFlag(DeclarationModifiers.Unsafe);
985private bool HasFlag(DeclarationModifiers flag) => (_declModifiers & flag) != 0;
5820var modifiers = SourceMemberFieldSymbol.MakeModifiers(this, fieldSyntax.Declaration.Variables[0].Identifier, fieldSyntax.Modifiers, isRefField: refKind != RefKind.None, diagnostics, out modifierErrors);
5823var fieldSymbol = (modifiers & DeclarationModifiers.Fixed) == 0
5835DeclarationModifiers.Private | (modifiers & DeclarationModifiers.Static),
5935DeclarationModifiers.Private | (property.IsStatic ? DeclarationModifiers.Static : 0),
5971DeclarationModifiers.Private | (@event.IsStatic ? DeclarationModifiers.Static : 0),
6090ExpressionFieldFinder.FindExpressionVariables(builder.NonTypeMembersWithPartialImplementations, vdecl, this, DeclarationModifiers.Private,
6105DeclarationModifiers.Private,
Symbols\Source\SourceMemberFieldSymbol.cs (56)
23private readonly DeclarationModifiers _modifiers;
27DeclarationModifiers modifiers,
36protected sealed override DeclarationModifiers Modifiers
208internal static DeclarationModifiers MakeModifiers(NamedTypeSymbol containingType, SyntaxToken firstIdentifier, SyntaxTokenList modifiers, bool isRefField, BindingDiagnosticBag diagnostics, out bool modifierErrors)
211DeclarationModifiers defaultAccess =
212isInterface ? DeclarationModifiers.Public : DeclarationModifiers.Private;
214DeclarationModifiers allowedModifiers =
215DeclarationModifiers.AccessibilityMask |
216DeclarationModifiers.Const |
217DeclarationModifiers.New |
218DeclarationModifiers.ReadOnly |
219DeclarationModifiers.Static |
220DeclarationModifiers.Volatile |
221DeclarationModifiers.Fixed |
222DeclarationModifiers.Unsafe |
223DeclarationModifiers.Safe |
224DeclarationModifiers.Abstract |
225DeclarationModifiers.Required; // Some of these are filtered out later, when illegal, for better error messages.
228DeclarationModifiers result = ModifierUtils.MakeAndCheckNonTypeMemberModifiers(
232if ((result & DeclarationModifiers.Abstract) != 0)
235result &= ~DeclarationModifiers.Abstract;
238if ((result & DeclarationModifiers.Fixed) != 0)
246reportBadMemberFlagIfAny(result, DeclarationModifiers.Static, diagnostics, errorLocation);
247reportBadMemberFlagIfAny(result, DeclarationModifiers.ReadOnly, diagnostics, errorLocation);
248reportBadMemberFlagIfAny(result, DeclarationModifiers.Const, diagnostics, errorLocation);
249reportBadMemberFlagIfAny(result, DeclarationModifiers.Volatile, diagnostics, errorLocation);
250reportBadMemberFlagIfAny(result, DeclarationModifiers.Required, diagnostics, errorLocation);
252result &= ~(DeclarationModifiers.Static | DeclarationModifiers.ReadOnly | DeclarationModifiers.Const | DeclarationModifiers.Volatile | DeclarationModifiers.Required);
253Debug.Assert((result & ~(DeclarationModifiers.AccessibilityMask | DeclarationModifiers.Fixed | DeclarationModifiers.Unsafe | DeclarationModifiers.Safe | DeclarationModifiers.New)) == 0);
256if ((result & DeclarationModifiers.Const) != 0)
258if ((result & DeclarationModifiers.Static) != 0)
264reportBadMemberFlagIfAny(result, DeclarationModifiers.ReadOnly, diagnostics, errorLocation);
265reportBadMemberFlagIfAny(result, DeclarationModifiers.Volatile, diagnostics, errorLocation);
266reportBadMemberFlagIfAny(result, DeclarationModifiers.Unsafe, diagnostics, errorLocation);
267reportBadMemberFlagIfAny(result, DeclarationModifiers.Safe, diagnostics, errorLocation);
269if (reportBadMemberFlagIfAny(result, DeclarationModifiers.Required, diagnostics, errorLocation))
271result &= ~DeclarationModifiers.Required;
274result |= DeclarationModifiers.Static; // "constants are considered static members"
278if ((result & DeclarationModifiers.Static) != 0 && (result & DeclarationModifiers.Required) != 0)
282result &= ~DeclarationModifiers.Required;
295reportBadMemberFlagIfAny(result, DeclarationModifiers.Static, diagnostics, errorLocation);
296reportBadMemberFlagIfAny(result, DeclarationModifiers.Const, diagnostics, errorLocation);
297reportBadMemberFlagIfAny(result, DeclarationModifiers.Volatile, diagnostics, errorLocation);
302static bool reportBadMemberFlagIfAny(DeclarationModifiers result, DeclarationModifiers modifier, BindingDiagnosticBag diagnostics, SourceLocation errorLocation)
390DeclarationModifiers modifiers,
Symbols\Source\SourceOrdinaryMethodSymbol.cs (47)
89private static (DeclarationModifiers, Flags) MakeModifiersAndFlags(
93(DeclarationModifiers declarationModifiers, bool hasExplicitAccessMod) = MakeModifiers(syntax, containingType, methodKind, hasBody: syntax.HasAnyBody(), location, diagnostics);
456private static DeclarationModifiers MakeDeclarationModifiers(MethodDeclarationSyntax syntax, NamedTypeSymbol containingType, Location location, DeclarationModifiers allowedModifiers, BindingDiagnosticBag diagnostics)
459syntax.Modifiers, defaultAccess: DeclarationModifiers.None, allowedModifiers, location, diagnostics, out _, out _);
752private static (DeclarationModifiers mods, bool hasExplicitAccessMod) MakeModifiers(MethodDeclarationSyntax syntax, NamedTypeSymbol containingType, MethodKind methodKind, bool hasBody, Location location, BindingDiagnosticBag diagnostics)
760var defaultAccess = isInterface && !isExplicitInterfaceImplementation ? DeclarationModifiers.None : DeclarationModifiers.Private;
763var allowedModifiers = DeclarationModifiers.Partial | DeclarationModifiers.Unsafe;
764var defaultInterfaceImplementationModifiers = DeclarationModifiers.None;
768allowedModifiers |= DeclarationModifiers.Static |
769DeclarationModifiers.AccessibilityMask;
773allowedModifiers |= DeclarationModifiers.New |
774DeclarationModifiers.Sealed |
775DeclarationModifiers.Abstract |
776DeclarationModifiers.Virtual;
780allowedModifiers |= DeclarationModifiers.Override;
784defaultInterfaceImplementationModifiers |= DeclarationModifiers.Sealed |
785DeclarationModifiers.Abstract |
786DeclarationModifiers.Static |
787DeclarationModifiers.Virtual |
788DeclarationModifiers.Extern |
789DeclarationModifiers.Async |
790DeclarationModifiers.Partial |
791DeclarationModifiers.AccessibilityMask;
801allowedModifiers |= DeclarationModifiers.Abstract;
804allowedModifiers |= DeclarationModifiers.Static;
807allowedModifiers |= DeclarationModifiers.Async | DeclarationModifiers.Extern | DeclarationModifiers.Safe;
811allowedModifiers |= DeclarationModifiers.ReadOnly;
817DeclarationModifiers mods = MakeDeclarationModifiers(syntax, containingType, location, allowedModifiers, diagnostics);
818if ((mods & DeclarationModifiers.AccessibilityMask) == 0)
838private static DeclarationModifiers AddImpliedModifiers(DeclarationModifiers mods, bool containingTypeIsInterface, MethodKind methodKind, bool hasBody)
850mods = (mods & ~DeclarationModifiers.AccessibilityMask) | DeclarationModifiers.Private;
855private const DeclarationModifiers PartialMethodExtendedModifierMask =
856DeclarationModifiers.Virtual |
857DeclarationModifiers.Override |
858DeclarationModifiers.New |
859DeclarationModifiers.Sealed |
860DeclarationModifiers.Extern;
Symbols\Source\SourcePropertyAccessorSymbol.cs (34)
32DeclarationModifiers propertyModifiers,
69DeclarationModifiers propertyModifiers,
90DeclarationModifiers propertyModifiers,
116DeclarationModifiers propertyModifiers,
133DeclarationModifiers propertyModifiers,
168DeclarationModifiers propertyModifiers,
202DeclarationModifiers propertyModifiers,
248private static (DeclarationModifiers, Flags) MakeModifiersAndFlags(
249NamedTypeSymbol containingType, SourcePropertySymbolBase property, DeclarationModifiers propertyModifiers, Location location,
257var declarationModifiers = MakeModifiers(containingType, modifiers, isExplicitInterfaceImplementation, hasAnyBody, location, diagnostics, out modifierErrors);
260declarationModifiers |= propertyModifiers & ~(DeclarationModifiers.AccessibilityMask | DeclarationModifiers.Indexer | DeclarationModifiers.ReadOnly | DeclarationModifiers.Unsafe | DeclarationModifiers.Safe);
261if ((declarationModifiers & DeclarationModifiers.Private) != 0)
264declarationModifiers &= ~DeclarationModifiers.Virtual;
460internal bool LocalDeclaredReadOnly => (DeclarationModifiers & DeclarationModifiers.ReadOnly) != 0;
462internal sealed override bool HasUnsafeModifier => (DeclarationModifiers & DeclarationModifiers.Unsafe) != 0;
463internal sealed override bool HasSafeModifier => (DeclarationModifiers & DeclarationModifiers.Safe) != 0;
524private static DeclarationModifiers MakeModifiers(NamedTypeSymbol containingType, SyntaxTokenList modifiers, bool isExplicitInterfaceImplementation,
529const DeclarationModifiers defaultAccess = DeclarationModifiers.None;
532var allowedModifiers = isExplicitInterfaceImplementation ? DeclarationModifiers.None : DeclarationModifiers.AccessibilityMask;
533allowedModifiers |= DeclarationModifiers.Unsafe | DeclarationModifiers.Safe;
537allowedModifiers |= DeclarationModifiers.ReadOnly;
540var defaultInterfaceImplementationModifiers = DeclarationModifiers.None;
545defaultInterfaceImplementationModifiers = DeclarationModifiers.AccessibilityMask;
548var mods = ModifierUtils.MakeAndCheckNonTypeMemberModifiers(isOrdinaryMethod: false, isForInterfaceMember: isInterface,
551if ((mods & DeclarationModifiers.Unsafe) != 0)
Symbols\Source\SourceUserDefinedOperatorSymbolBase.cs (43)
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 | DeclarationModifiers.Safe;
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)
Symbols\Synthesized\SynthesizedHotReloadExceptionSymbol.cs (2)
50new SynthesizedFieldSymbol(this, intType, CodeFieldName, DeclarationModifiers.Public, isReadOnly: true, isStatic: false),
51new SynthesizedFieldSymbol(this, actionOfTType.Construct(exceptionType), CreatedActionFieldName, DeclarationModifiers.Private, isReadOnly: false, isStatic: true)