Symbols\Source\ModifierUtils.cs (178)
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)
123bool checkFeature(DeclarationModifiers modifier, MessageID featureID)
155DeclarationModifiers modifiers,
156DeclarationModifiers defaultInterfaceImplementationModifiers,
165if ((modifiers & defaultInterfaceImplementationModifiers & DeclarationModifiers.Static) != 0 &&
166(modifiers & defaultInterfaceImplementationModifiers & (DeclarationModifiers.Sealed | DeclarationModifiers.Abstract | DeclarationModifiers.Virtual)) != 0)
168var reportModifiers = DeclarationModifiers.Sealed | DeclarationModifiers.Abstract | DeclarationModifiers.Virtual;
169if ((modifiers & defaultInterfaceImplementationModifiers & DeclarationModifiers.Sealed) != 0 &&
170(modifiers & defaultInterfaceImplementationModifiers & (DeclarationModifiers.Abstract | DeclarationModifiers.Virtual)) != 0)
172diagnostics.Add(ErrorCode.ERR_BadMemberFlag, errorLocation, ConvertSingleModifierToSyntaxText(DeclarationModifiers.Sealed));
173reportModifiers &= ~DeclarationModifiers.Sealed;
187if ((modifiers & defaultInterfaceImplementationModifiers & DeclarationModifiers.Static) != 0)
203internal static void ReportUnsupportedModifiersForLanguageVersion(DeclarationModifiers modifiers, DeclarationModifiers unsupportedModifiers, Location errorLocation, BindingDiagnosticBag diagnostics, LanguageVersion availableVersion, LanguageVersion requiredVersion)
205DeclarationModifiers errorModifiers = modifiers & unsupportedModifiers;
208while (errorModifiers != DeclarationModifiers.None)
210DeclarationModifiers oneError = errorModifiers & ~(errorModifiers - 1);
211Debug.Assert(oneError != DeclarationModifiers.None);
220internal static void CheckFeatureAvailabilityForStaticAbstractMembersInInterfacesIfNeeded(DeclarationModifiers mods, bool isExplicitInterfaceImplementation, Location location, BindingDiagnosticBag diagnostics)
222if (isExplicitInterfaceImplementation && (mods & DeclarationModifiers.Static) != 0)
230ModifierUtils.ReportUnsupportedModifiersForLanguageVersion(mods, DeclarationModifiers.Static, location, diagnostics, availableVersion, requiredVersion);
245DeclarationModifiers.Partial,
246DeclarationModifiers.Partial,
255internal static DeclarationModifiers AdjustModifiersForAnInterfaceMember(DeclarationModifiers mods, bool hasBody, bool isExplicitInterfaceImplementation, bool forMethod)
259bool notPartialOrNewPartialBehavior = (mods & DeclarationModifiers.Partial) == 0 || !forMethod;
261if ((mods & DeclarationModifiers.AccessibilityMask) == 0)
265mods |= DeclarationModifiers.Public;
269mods |= DeclarationModifiers.Private;
275if ((mods & DeclarationModifiers.Abstract) != 0)
277mods |= DeclarationModifiers.Sealed;
280else if ((mods & DeclarationModifiers.Static) != 0)
282mods &= ~DeclarationModifiers.Sealed;
284else if ((mods & (DeclarationModifiers.Private | DeclarationModifiers.Virtual | DeclarationModifiers.Abstract)) == 0 && notPartialOrNewPartialBehavior)
288if (hasBody || (mods & (DeclarationModifiers.Extern | DeclarationModifiers.Partial | DeclarationModifiers.Sealed)) != 0)
290if ((mods & DeclarationModifiers.Sealed) == 0)
292mods |= DeclarationModifiers.Virtual;
296mods &= ~DeclarationModifiers.Sealed;
301mods |= DeclarationModifiers.Abstract;
308internal static string ConvertSingleModifierToSyntaxText(DeclarationModifiers modifier)
312case DeclarationModifiers.Abstract:
314case DeclarationModifiers.Sealed:
316case DeclarationModifiers.Static:
318case DeclarationModifiers.New:
320case DeclarationModifiers.Public:
322case DeclarationModifiers.Protected:
324case DeclarationModifiers.Internal:
326case DeclarationModifiers.ProtectedInternal:
328case DeclarationModifiers.Private:
330case DeclarationModifiers.PrivateProtected:
332case DeclarationModifiers.ReadOnly:
334case DeclarationModifiers.Const:
336case DeclarationModifiers.Volatile:
338case DeclarationModifiers.Extern:
340case DeclarationModifiers.Partial:
342case DeclarationModifiers.Unsafe:
344case DeclarationModifiers.Safe:
346case DeclarationModifiers.Fixed:
348case DeclarationModifiers.Virtual:
350case DeclarationModifiers.Override:
352case DeclarationModifiers.Async:
354case DeclarationModifiers.Ref:
356case DeclarationModifiers.Required:
358case DeclarationModifiers.Scoped:
360case DeclarationModifiers.File:
362case DeclarationModifiers.Closed:
369private static DeclarationModifiers ToDeclarationModifier(SyntaxKind kind)
374return DeclarationModifiers.Abstract;
376return DeclarationModifiers.Async;
378return DeclarationModifiers.Sealed;
380return DeclarationModifiers.Static;
382return DeclarationModifiers.New;
384return DeclarationModifiers.Public;
386return DeclarationModifiers.Protected;
388return DeclarationModifiers.Internal;
390return DeclarationModifiers.Private;
392return DeclarationModifiers.Extern;
394return DeclarationModifiers.ReadOnly;
396return DeclarationModifiers.Partial;
398return DeclarationModifiers.Unsafe;
400return DeclarationModifiers.Safe;
402return DeclarationModifiers.Virtual;
404return DeclarationModifiers.Override;
406return DeclarationModifiers.Const;
408return DeclarationModifiers.Fixed;
410return DeclarationModifiers.Volatile;
412return DeclarationModifiers.Ref;
414return DeclarationModifiers.Required;
416return DeclarationModifiers.Scoped;
418return DeclarationModifiers.File;
420return DeclarationModifiers.Closed;
433private static DeclarationModifiers GetDeclarationModifiersAndCheckForDuplicateModifiers(
437var allModifiers = DeclarationModifiers.None;
442var thisModifier = ToDeclarationModifier(modifierToken.ContextualKind());
456public static DeclarationModifiers ToDeclarationModifiers(
459var result = GetDeclarationModifiersAndCheckForDuplicateModifiers(modifiers, diagnostics);
460if ((result & DeclarationModifiers.Partial) == DeclarationModifiers.Partial)
481switch (result & DeclarationModifiers.AccessibilityMask)
483case DeclarationModifiers.Protected | DeclarationModifiers.Internal:
485result &= ~DeclarationModifiers.AccessibilityMask;
486result |= DeclarationModifiers.ProtectedInternal;
489case DeclarationModifiers.Private | DeclarationModifiers.Protected:
491result &= ~DeclarationModifiers.AccessibilityMask;
492result |= DeclarationModifiers.PrivateProtected;
501DeclarationModifiers modifierKind,
502DeclarationModifiers allModifiers,
519internal static bool CheckAccessibility(DeclarationModifiers modifiers, Symbol symbol, bool isExplicitInterfaceImplementation, BindingDiagnosticBag diagnostics, Location errorLocation)
529(symbol.Kind != SymbolKind.Method || (modifiers & DeclarationModifiers.Partial) == 0) &&
530(modifiers & DeclarationModifiers.Static) == 0)
532switch (modifiers & DeclarationModifiers.AccessibilityMask)
534case DeclarationModifiers.Protected:
535case DeclarationModifiers.ProtectedInternal:
536case DeclarationModifiers.PrivateProtected:
547if ((modifiers & DeclarationModifiers.Required) != 0)
561case FieldSymbol when (modifiers & DeclarationModifiers.ReadOnly) != 0:
577internal static Accessibility EffectiveAccessibility(DeclarationModifiers modifiers)
579switch (modifiers & DeclarationModifiers.AccessibilityMask)
581case DeclarationModifiers.None:
583case DeclarationModifiers.Private:
585case DeclarationModifiers.Protected:
587case DeclarationModifiers.Internal:
589case DeclarationModifiers.Public:
591case DeclarationModifiers.ProtectedInternal:
593case DeclarationModifiers.PrivateProtected:
603internal static bool IsValidAccessibility(DeclarationModifiers modifiers)
605switch (modifiers & DeclarationModifiers.AccessibilityMask)
607case DeclarationModifiers.None:
608case DeclarationModifiers.Private:
609case DeclarationModifiers.Protected:
610case DeclarationModifiers.Internal:
611case DeclarationModifiers.Public:
612case DeclarationModifiers.ProtectedInternal:
613case DeclarationModifiers.PrivateProtected:
Symbols\Source\SourceConstructorSymbol.cs (20)
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,
248internal sealed override bool HasUnsafeModifier => (DeclarationModifiers & DeclarationModifiers.Unsafe) != 0;
249protected sealed override bool HasSafeModifier => (DeclarationModifiers & DeclarationModifiers.Safe) != 0;
Symbols\Source\SourceDelegateMethodSymbol.cs (10)
29DeclarationModifiers declarationModifiers)
145internal sealed override bool HasUnsafeModifier => (DeclarationModifiers & DeclarationModifiers.Unsafe) != 0;
146protected sealed override bool HasSafeModifier => (DeclarationModifiers & DeclarationModifiers.Safe) != 0;
222: base(delegateType, voidType, syntax, MethodKind.Constructor, RefKind.None, DeclarationModifiers.Public)
269: base(delegateType, returnType, syntax, MethodKind.DelegateInvoke, refKind, DeclarationModifiers.Virtual | DeclarationModifiers.Public)
362: base((SourceNamedTypeSymbol)invoke.ContainingType, iAsyncResultType, syntax, MethodKind.Ordinary, RefKind.None, DeclarationModifiers.Virtual | DeclarationModifiers.Public)
402: base((SourceNamedTypeSymbol)invoke.ContainingType, invoke.ReturnTypeWithAnnotations, syntax, MethodKind.Ordinary, invoke.RefKind, DeclarationModifiers.Virtual | DeclarationModifiers.Public)
Symbols\Source\SourceDestructorSymbol.cs (13)
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;
106protected 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
Symbols\Source\SourceMemberContainerSymbol.cs (84)
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.Closed;
336allowedModifiers |= DeclarationModifiers.Static;
341allowedModifiers |= DeclarationModifiers.Partial | DeclarationModifiers.ReadOnly | DeclarationModifiers.Unsafe;
345allowedModifiers |= DeclarationModifiers.Ref;
350allowedModifiers |= DeclarationModifiers.Partial | DeclarationModifiers.Unsafe;
353allowedModifiers |= DeclarationModifiers.Unsafe;
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))
391(mods & DeclarationModifiers.Unsafe) == DeclarationModifiers.Unsafe &&
400mods |= DeclarationModifiers.Abstract;
403if ((mods & DeclarationModifiers.Closed) != 0)
404mods |= DeclarationModifiers.Abstract;
411mods |= DeclarationModifiers.Sealed;
418private DeclarationModifiers MakeAndCheckTypeModifiers(
419DeclarationModifiers defaultAccess,
420DeclarationModifiers allowedModifiers,
426var result = DeclarationModifiers.Unset;
433var mods = decl.Modifiers;
435if (partCount > 1 && (mods & DeclarationModifiers.Partial) == 0)
454if (result == DeclarationModifiers.Unset)
465if ((result & DeclarationModifiers.AccessibilityMask) == 0)
469else if ((result & DeclarationModifiers.File) != 0)
476if ((result & DeclarationModifiers.Partial) == 0)
485diagnostics.Add((result & DeclarationModifiers.File) != 0
507var mods = singleDeclaration.Modifiers;
508if ((mods & DeclarationModifiers.Partial) == 0)
887public override bool IsStatic => HasFlag(DeclarationModifiers.Static);
889public sealed override bool IsRefLikeType => HasFlag(DeclarationModifiers.Ref);
891public override bool IsReadOnly => HasFlag(DeclarationModifiers.ReadOnly);
893public override bool IsSealed => HasFlag(DeclarationModifiers.Sealed);
895public override bool IsAbstract => HasFlag(DeclarationModifiers.Abstract);
897internal bool IsPartial => HasFlag(DeclarationModifiers.Partial);
899internal bool IsNew => HasFlag(DeclarationModifiers.New);
901internal sealed override bool IsFileLocal => HasFlag(DeclarationModifiers.File);
903internal sealed override bool IsClosed => HasFlag(DeclarationModifiers.Closed);
963internal bool HasUnsafeModifier => HasFlag(DeclarationModifiers.Unsafe);
986private bool HasFlag(DeclarationModifiers flag) => (_declModifiers & flag) != 0;
5785var modifiers = SourceMemberFieldSymbol.MakeModifiers(this, fieldSyntax.Declaration.Variables[0].Identifier, fieldSyntax.Modifiers, isRefField: refKind != RefKind.None, diagnostics, out modifierErrors);
5788var fieldSymbol = (modifiers & DeclarationModifiers.Fixed) == 0
5800DeclarationModifiers.Private | (modifiers & DeclarationModifiers.Static),
5900DeclarationModifiers.Private | (property.IsStatic ? DeclarationModifiers.Static : 0),
5936DeclarationModifiers.Private | (@event.IsStatic ? DeclarationModifiers.Static : 0),
6055ExpressionFieldFinder.FindExpressionVariables(builder.NonTypeMembersWithPartialImplementations, vdecl, this, DeclarationModifiers.Private,
6070DeclarationModifiers.Private,
Symbols\Source\SourceMemberFieldSymbol.cs (54)
23private readonly DeclarationModifiers _modifiers;
27DeclarationModifiers modifiers,
36protected sealed override DeclarationModifiers Modifiers
199return (Modifiers & DeclarationModifiers.Unsafe) != 0 &&
211internal static DeclarationModifiers MakeModifiers(NamedTypeSymbol containingType, SyntaxToken firstIdentifier, SyntaxTokenList modifiers, bool isRefField, BindingDiagnosticBag diagnostics, out bool modifierErrors)
214DeclarationModifiers defaultAccess =
215isInterface ? DeclarationModifiers.Public : DeclarationModifiers.Private;
217DeclarationModifiers allowedModifiers =
218DeclarationModifiers.AccessibilityMask |
219DeclarationModifiers.Const |
220DeclarationModifiers.New |
221DeclarationModifiers.ReadOnly |
222DeclarationModifiers.Static |
223DeclarationModifiers.Volatile |
224DeclarationModifiers.Fixed |
225DeclarationModifiers.Unsafe |
226DeclarationModifiers.Abstract |
227DeclarationModifiers.Required; // Some of these are filtered out later, when illegal, for better error messages.
230DeclarationModifiers result = ModifierUtils.MakeAndCheckNonTypeMemberModifiers(
234if ((result & DeclarationModifiers.Abstract) != 0)
237result &= ~DeclarationModifiers.Abstract;
240if ((result & DeclarationModifiers.Fixed) != 0)
248reportBadMemberFlagIfAny(result, DeclarationModifiers.Static, diagnostics, errorLocation);
249reportBadMemberFlagIfAny(result, DeclarationModifiers.ReadOnly, diagnostics, errorLocation);
250reportBadMemberFlagIfAny(result, DeclarationModifiers.Const, diagnostics, errorLocation);
251reportBadMemberFlagIfAny(result, DeclarationModifiers.Volatile, diagnostics, errorLocation);
252reportBadMemberFlagIfAny(result, DeclarationModifiers.Required, diagnostics, errorLocation);
254result &= ~(DeclarationModifiers.Static | DeclarationModifiers.ReadOnly | DeclarationModifiers.Const | DeclarationModifiers.Volatile | DeclarationModifiers.Required);
255Debug.Assert((result & ~(DeclarationModifiers.AccessibilityMask | DeclarationModifiers.Fixed | DeclarationModifiers.Unsafe | DeclarationModifiers.New)) == 0);
258if ((result & DeclarationModifiers.Const) != 0)
260if ((result & DeclarationModifiers.Static) != 0)
266reportBadMemberFlagIfAny(result, DeclarationModifiers.ReadOnly, diagnostics, errorLocation);
267reportBadMemberFlagIfAny(result, DeclarationModifiers.Volatile, diagnostics, errorLocation);
268reportBadMemberFlagIfAny(result, DeclarationModifiers.Unsafe, diagnostics, errorLocation);
270if (reportBadMemberFlagIfAny(result, DeclarationModifiers.Required, diagnostics, errorLocation))
272result &= ~DeclarationModifiers.Required;
275result |= DeclarationModifiers.Static; // "constants are considered static members"
279if ((result & DeclarationModifiers.Static) != 0 && (result & DeclarationModifiers.Required) != 0)
283result &= ~DeclarationModifiers.Required;
296reportBadMemberFlagIfAny(result, DeclarationModifiers.Static, diagnostics, errorLocation);
297reportBadMemberFlagIfAny(result, DeclarationModifiers.Const, diagnostics, errorLocation);
298reportBadMemberFlagIfAny(result, DeclarationModifiers.Volatile, diagnostics, errorLocation);
303static bool reportBadMemberFlagIfAny(DeclarationModifiers result, DeclarationModifiers modifier, BindingDiagnosticBag diagnostics, SourceLocation errorLocation)
391DeclarationModifiers 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;
463protected 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)