Symbols\Source\ModifierUtils.cs (179)
15internal static DeclarationModifiers MakeAndCheckNonTypeMemberModifiers(
18DeclarationModifiers defaultAccess,
19DeclarationModifiers allowedModifiers,
26var result = modifiers.ToDeclarationModifiers(
27allowsPartialModifier: (allowedModifiers & DeclarationModifiers.Partial) != 0,
35hasExplicitAccessModifier = (result & DeclarationModifiers.AccessibilityMask) != 0;
42internal static DeclarationModifiers CheckModifiers(
45DeclarationModifiers modifiers,
46DeclarationModifiers allowedModifiers,
55DeclarationModifiers reportStaticNotVirtualForModifiers = DeclarationModifiers.None;
59Debug.Assert((allowedModifiers & (DeclarationModifiers.Override | DeclarationModifiers.Virtual)) == 0);
61else if ((modifiers & allowedModifiers & DeclarationModifiers.Static) != 0)
65reportStaticNotVirtualForModifiers = allowedModifiers & DeclarationModifiers.Override;
69reportStaticNotVirtualForModifiers = allowedModifiers & (DeclarationModifiers.Abstract | DeclarationModifiers.Override | DeclarationModifiers.Virtual);
75DeclarationModifiers errorModifiers = modifiers & ~allowedModifiers;
76DeclarationModifiers result = modifiers & allowedModifiers;
78while (errorModifiers != DeclarationModifiers.None)
80DeclarationModifiers oneError = errorModifiers & ~(errorModifiers - 1);
81Debug.Assert(oneError != DeclarationModifiers.None);
86case DeclarationModifiers.Partial:
92case DeclarationModifiers.Abstract:
93case DeclarationModifiers.Override:
94case DeclarationModifiers.Virtual:
112checkFeature(DeclarationModifiers.PrivateProtected, MessageID.IDS_FeaturePrivateProtected) |
113checkFeature(DeclarationModifiers.Required, MessageID.IDS_FeatureRequiredMembers) |
114checkFeature(DeclarationModifiers.File, MessageID.IDS_FeatureFileTypes) |
115checkFeature(DeclarationModifiers.Closed, MessageID.IDS_FeatureClosedClasses) |
116checkFeature(DeclarationModifiers.Async, MessageID.IDS_FeatureAsync);
118if ((result & DeclarationModifiers.Safe) != 0)
125if ((result & DeclarationModifiers.Unsafe) != 0)
128result &= ~DeclarationModifiers.Safe;
135bool checkFeature(DeclarationModifiers modifier, MessageID featureID)
151DeclarationModifiers modifiers,
152DeclarationModifiers defaultInterfaceImplementationModifiers,
161if ((modifiers & defaultInterfaceImplementationModifiers & DeclarationModifiers.Static) != 0 &&
162(modifiers & defaultInterfaceImplementationModifiers & (DeclarationModifiers.Sealed | DeclarationModifiers.Abstract | DeclarationModifiers.Virtual)) != 0)
164var reportModifiers = DeclarationModifiers.Sealed | DeclarationModifiers.Abstract | DeclarationModifiers.Virtual;
165if ((modifiers & defaultInterfaceImplementationModifiers & DeclarationModifiers.Sealed) != 0 &&
166(modifiers & defaultInterfaceImplementationModifiers & (DeclarationModifiers.Abstract | DeclarationModifiers.Virtual)) != 0)
168diagnostics.Add(ErrorCode.ERR_BadMemberFlag, errorLocation, ConvertSingleModifierToSyntaxText(DeclarationModifiers.Sealed));
169reportModifiers &= ~DeclarationModifiers.Sealed;
183if ((modifiers & defaultInterfaceImplementationModifiers & DeclarationModifiers.Static) != 0)
199internal static void ReportUnsupportedModifiersForLanguageVersion(DeclarationModifiers modifiers, DeclarationModifiers unsupportedModifiers, Location errorLocation, BindingDiagnosticBag diagnostics, LanguageVersion availableVersion, LanguageVersion requiredVersion)
201DeclarationModifiers errorModifiers = modifiers & unsupportedModifiers;
204while (errorModifiers != DeclarationModifiers.None)
206DeclarationModifiers oneError = errorModifiers & ~(errorModifiers - 1);
207Debug.Assert(oneError != DeclarationModifiers.None);
216internal static void CheckFeatureAvailabilityForStaticAbstractMembersInInterfacesIfNeeded(DeclarationModifiers mods, bool isExplicitInterfaceImplementation, Location location, BindingDiagnosticBag diagnostics)
218if (isExplicitInterfaceImplementation && (mods & DeclarationModifiers.Static) != 0)
226ModifierUtils.ReportUnsupportedModifiersForLanguageVersion(mods, DeclarationModifiers.Static, location, diagnostics, availableVersion, requiredVersion);
241DeclarationModifiers.Partial,
242DeclarationModifiers.Partial,
251internal static DeclarationModifiers AdjustModifiersForAnInterfaceMember(DeclarationModifiers mods, bool hasBody, bool isExplicitInterfaceImplementation, bool forMethod)
255bool notPartialOrNewPartialBehavior = (mods & DeclarationModifiers.Partial) == 0 || !forMethod;
257if ((mods & DeclarationModifiers.AccessibilityMask) == 0)
261mods |= DeclarationModifiers.Public;
265mods |= DeclarationModifiers.Private;
271if ((mods & DeclarationModifiers.Abstract) != 0)
273mods |= DeclarationModifiers.Sealed;
276else if ((mods & DeclarationModifiers.Static) != 0)
278mods &= ~DeclarationModifiers.Sealed;
280else if ((mods & (DeclarationModifiers.Private | DeclarationModifiers.Virtual | DeclarationModifiers.Abstract)) == 0 && notPartialOrNewPartialBehavior)
284if (hasBody || (mods & (DeclarationModifiers.Extern | DeclarationModifiers.Partial | DeclarationModifiers.Sealed)) != 0)
286if ((mods & DeclarationModifiers.Sealed) == 0)
288mods |= DeclarationModifiers.Virtual;
292mods &= ~DeclarationModifiers.Sealed;
297mods |= DeclarationModifiers.Abstract;
304internal static string ConvertSingleModifierToSyntaxText(DeclarationModifiers modifier)
308case DeclarationModifiers.Abstract:
310case DeclarationModifiers.Sealed:
312case DeclarationModifiers.Static:
314case DeclarationModifiers.New:
316case DeclarationModifiers.Public:
318case DeclarationModifiers.Protected:
320case DeclarationModifiers.Internal:
322case DeclarationModifiers.ProtectedInternal:
324case DeclarationModifiers.Private:
326case DeclarationModifiers.PrivateProtected:
328case DeclarationModifiers.ReadOnly:
330case DeclarationModifiers.Const:
332case DeclarationModifiers.Volatile:
334case DeclarationModifiers.Extern:
336case DeclarationModifiers.Partial:
338case DeclarationModifiers.Unsafe:
340case DeclarationModifiers.Safe:
342case DeclarationModifiers.Fixed:
344case DeclarationModifiers.Virtual:
346case DeclarationModifiers.Override:
348case DeclarationModifiers.Async:
350case DeclarationModifiers.Ref:
352case DeclarationModifiers.Required:
354case DeclarationModifiers.Scoped:
356case DeclarationModifiers.File:
358case DeclarationModifiers.Closed:
365private static DeclarationModifiers ToDeclarationModifier(SyntaxKind kind)
370return DeclarationModifiers.Abstract;
372return DeclarationModifiers.Async;
374return DeclarationModifiers.Sealed;
376return DeclarationModifiers.Static;
378return DeclarationModifiers.New;
380return DeclarationModifiers.Public;
382return DeclarationModifiers.Protected;
384return DeclarationModifiers.Internal;
386return DeclarationModifiers.Private;
388return DeclarationModifiers.Extern;
390return DeclarationModifiers.ReadOnly;
392return DeclarationModifiers.Partial;
394return DeclarationModifiers.Unsafe;
396return DeclarationModifiers.Safe;
398return DeclarationModifiers.Virtual;
400return DeclarationModifiers.Override;
402return DeclarationModifiers.Const;
404return DeclarationModifiers.Fixed;
406return DeclarationModifiers.Volatile;
408return DeclarationModifiers.Ref;
410return DeclarationModifiers.Required;
412return DeclarationModifiers.Scoped;
414return DeclarationModifiers.File;
416return DeclarationModifiers.Closed;
429private static DeclarationModifiers GetDeclarationModifiersAndCheckForDuplicateModifiers(
434var allModifiers = DeclarationModifiers.None;
439var thisModifier = ToDeclarationModifier(modifierToken.ContextualKind());
454public static DeclarationModifiers ToDeclarationModifiers(
457var result = GetDeclarationModifiersAndCheckForDuplicateModifiers(modifiers, diagnostics, out var reportedDiagnostic);
462switch (result & DeclarationModifiers.AccessibilityMask)
464case DeclarationModifiers.Protected | DeclarationModifiers.Internal:
466result &= ~DeclarationModifiers.AccessibilityMask;
467result |= DeclarationModifiers.ProtectedInternal;
470case DeclarationModifiers.Private | DeclarationModifiers.Protected:
472result &= ~DeclarationModifiers.AccessibilityMask;
473result |= DeclarationModifiers.PrivateProtected;
528DeclarationModifiers modifierKind,
529DeclarationModifiers allModifiers,
546internal static bool CheckAccessibility(DeclarationModifiers modifiers, Symbol symbol, bool isExplicitInterfaceImplementation, BindingDiagnosticBag diagnostics, Location errorLocation)
556(symbol.Kind != SymbolKind.Method || (modifiers & DeclarationModifiers.Partial) == 0) &&
557(modifiers & DeclarationModifiers.Static) == 0)
559switch (modifiers & DeclarationModifiers.AccessibilityMask)
561case DeclarationModifiers.Protected:
562case DeclarationModifiers.ProtectedInternal:
563case DeclarationModifiers.PrivateProtected:
574if ((modifiers & DeclarationModifiers.Required) != 0)
588case FieldSymbol when (modifiers & DeclarationModifiers.ReadOnly) != 0:
604internal static Accessibility EffectiveAccessibility(DeclarationModifiers modifiers)
606switch (modifiers & DeclarationModifiers.AccessibilityMask)
608case DeclarationModifiers.None:
610case DeclarationModifiers.Private:
612case DeclarationModifiers.Protected:
614case DeclarationModifiers.Internal:
616case DeclarationModifiers.Public:
618case DeclarationModifiers.ProtectedInternal:
620case DeclarationModifiers.PrivateProtected:
630internal static bool IsValidAccessibility(DeclarationModifiers modifiers)
632switch (modifiers & DeclarationModifiers.AccessibilityMask)
634case DeclarationModifiers.None:
635case DeclarationModifiers.Private:
636case DeclarationModifiers.Protected:
637case DeclarationModifiers.Internal:
638case DeclarationModifiers.Public:
639case DeclarationModifiers.ProtectedInternal:
640case 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(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(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(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)