Symbols\Source\ModifierUtils.cs (175)
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);
117bool checkFeature(DeclarationModifiers modifier, MessageID featureID)
149DeclarationModifiers modifiers,
150DeclarationModifiers defaultInterfaceImplementationModifiers,
159if ((modifiers & defaultInterfaceImplementationModifiers & DeclarationModifiers.Static) != 0 &&
160(modifiers & defaultInterfaceImplementationModifiers & (DeclarationModifiers.Sealed | DeclarationModifiers.Abstract | DeclarationModifiers.Virtual)) != 0)
162var reportModifiers = DeclarationModifiers.Sealed | DeclarationModifiers.Abstract | DeclarationModifiers.Virtual;
163if ((modifiers & defaultInterfaceImplementationModifiers & DeclarationModifiers.Sealed) != 0 &&
164(modifiers & defaultInterfaceImplementationModifiers & (DeclarationModifiers.Abstract | DeclarationModifiers.Virtual)) != 0)
166diagnostics.Add(ErrorCode.ERR_BadMemberFlag, errorLocation, ConvertSingleModifierToSyntaxText(DeclarationModifiers.Sealed));
167reportModifiers &= ~DeclarationModifiers.Sealed;
181if ((modifiers & defaultInterfaceImplementationModifiers & DeclarationModifiers.Static) != 0)
197internal static void ReportUnsupportedModifiersForLanguageVersion(DeclarationModifiers modifiers, DeclarationModifiers unsupportedModifiers, Location errorLocation, BindingDiagnosticBag diagnostics, LanguageVersion availableVersion, LanguageVersion requiredVersion)
199DeclarationModifiers errorModifiers = modifiers & unsupportedModifiers;
202while (errorModifiers != DeclarationModifiers.None)
204DeclarationModifiers oneError = errorModifiers & ~(errorModifiers - 1);
205Debug.Assert(oneError != DeclarationModifiers.None);
214internal static void CheckFeatureAvailabilityForStaticAbstractMembersInInterfacesIfNeeded(DeclarationModifiers mods, bool isExplicitInterfaceImplementation, Location location, BindingDiagnosticBag diagnostics)
216if (isExplicitInterfaceImplementation && (mods & DeclarationModifiers.Static) != 0)
224ModifierUtils.ReportUnsupportedModifiersForLanguageVersion(mods, DeclarationModifiers.Static, location, diagnostics, availableVersion, requiredVersion);
239DeclarationModifiers.Partial,
240DeclarationModifiers.Partial,
249internal static DeclarationModifiers AdjustModifiersForAnInterfaceMember(DeclarationModifiers mods, bool hasBody, bool isExplicitInterfaceImplementation, bool forMethod)
253bool notPartialOrNewPartialBehavior = (mods & DeclarationModifiers.Partial) == 0 || !forMethod;
255if ((mods & DeclarationModifiers.AccessibilityMask) == 0)
259mods |= DeclarationModifiers.Public;
263mods |= DeclarationModifiers.Private;
269if ((mods & DeclarationModifiers.Abstract) != 0)
271mods |= DeclarationModifiers.Sealed;
274else if ((mods & DeclarationModifiers.Static) != 0)
276mods &= ~DeclarationModifiers.Sealed;
278else if ((mods & (DeclarationModifiers.Private | DeclarationModifiers.Virtual | DeclarationModifiers.Abstract)) == 0 && notPartialOrNewPartialBehavior)
282if (hasBody || (mods & (DeclarationModifiers.Extern | DeclarationModifiers.Partial | DeclarationModifiers.Sealed)) != 0)
284if ((mods & DeclarationModifiers.Sealed) == 0)
286mods |= DeclarationModifiers.Virtual;
290mods &= ~DeclarationModifiers.Sealed;
295mods |= DeclarationModifiers.Abstract;
302internal static string ConvertSingleModifierToSyntaxText(DeclarationModifiers modifier)
306case DeclarationModifiers.Abstract:
308case DeclarationModifiers.Sealed:
310case DeclarationModifiers.Static:
312case DeclarationModifiers.New:
314case DeclarationModifiers.Public:
316case DeclarationModifiers.Protected:
318case DeclarationModifiers.Internal:
320case DeclarationModifiers.ProtectedInternal:
322case DeclarationModifiers.Private:
324case DeclarationModifiers.PrivateProtected:
326case DeclarationModifiers.ReadOnly:
328case DeclarationModifiers.Const:
330case DeclarationModifiers.Volatile:
332case DeclarationModifiers.Extern:
334case DeclarationModifiers.Partial:
336case DeclarationModifiers.Unsafe:
338case DeclarationModifiers.Fixed:
340case DeclarationModifiers.Virtual:
342case DeclarationModifiers.Override:
344case DeclarationModifiers.Async:
346case DeclarationModifiers.Ref:
348case DeclarationModifiers.Required:
350case DeclarationModifiers.Scoped:
352case DeclarationModifiers.File:
354case DeclarationModifiers.Closed:
361private static DeclarationModifiers ToDeclarationModifier(SyntaxKind kind)
366return DeclarationModifiers.Abstract;
368return DeclarationModifiers.Async;
370return DeclarationModifiers.Sealed;
372return DeclarationModifiers.Static;
374return DeclarationModifiers.New;
376return DeclarationModifiers.Public;
378return DeclarationModifiers.Protected;
380return DeclarationModifiers.Internal;
382return DeclarationModifiers.Private;
384return DeclarationModifiers.Extern;
386return DeclarationModifiers.ReadOnly;
388return DeclarationModifiers.Partial;
390return DeclarationModifiers.Unsafe;
392return DeclarationModifiers.Virtual;
394return DeclarationModifiers.Override;
396return DeclarationModifiers.Const;
398return DeclarationModifiers.Fixed;
400return DeclarationModifiers.Volatile;
402return DeclarationModifiers.Ref;
404return DeclarationModifiers.Required;
406return DeclarationModifiers.Scoped;
408return DeclarationModifiers.File;
410return DeclarationModifiers.Closed;
423private static DeclarationModifiers GetDeclarationModifiersAndCheckForDuplicateModifiers(
427var allModifiers = DeclarationModifiers.None;
432var thisModifier = ToDeclarationModifier(modifierToken.ContextualKind());
446public static DeclarationModifiers ToDeclarationModifiers(
449var result = GetDeclarationModifiersAndCheckForDuplicateModifiers(modifiers, diagnostics);
450if ((result & DeclarationModifiers.Partial) == DeclarationModifiers.Partial)
471switch (result & DeclarationModifiers.AccessibilityMask)
473case DeclarationModifiers.Protected | DeclarationModifiers.Internal:
475result &= ~DeclarationModifiers.AccessibilityMask;
476result |= DeclarationModifiers.ProtectedInternal;
479case DeclarationModifiers.Private | DeclarationModifiers.Protected:
481result &= ~DeclarationModifiers.AccessibilityMask;
482result |= DeclarationModifiers.PrivateProtected;
491DeclarationModifiers modifierKind,
492DeclarationModifiers allModifiers,
509internal static bool CheckAccessibility(DeclarationModifiers modifiers, Symbol symbol, bool isExplicitInterfaceImplementation, BindingDiagnosticBag diagnostics, Location errorLocation)
519(symbol.Kind != SymbolKind.Method || (modifiers & DeclarationModifiers.Partial) == 0) &&
520(modifiers & DeclarationModifiers.Static) == 0)
522switch (modifiers & DeclarationModifiers.AccessibilityMask)
524case DeclarationModifiers.Protected:
525case DeclarationModifiers.ProtectedInternal:
526case DeclarationModifiers.PrivateProtected:
537if ((modifiers & DeclarationModifiers.Required) != 0)
551case FieldSymbol when (modifiers & DeclarationModifiers.ReadOnly) != 0:
567internal static Accessibility EffectiveAccessibility(DeclarationModifiers modifiers)
569switch (modifiers & DeclarationModifiers.AccessibilityMask)
571case DeclarationModifiers.None:
573case DeclarationModifiers.Private:
575case DeclarationModifiers.Protected:
577case DeclarationModifiers.Internal:
579case DeclarationModifiers.Public:
581case DeclarationModifiers.ProtectedInternal:
583case DeclarationModifiers.PrivateProtected:
593internal static bool IsValidAccessibility(DeclarationModifiers modifiers)
595switch (modifiers & DeclarationModifiers.AccessibilityMask)
597case DeclarationModifiers.None:
598case DeclarationModifiers.Private:
599case DeclarationModifiers.Protected:
600case DeclarationModifiers.Internal:
601case DeclarationModifiers.Public:
602case DeclarationModifiers.ProtectedInternal:
603case DeclarationModifiers.PrivateProtected:
Symbols\Source\SourceConstructorSymbol.cs (18)
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;
156allowedModifiers |= DeclarationModifiers.Partial;
160var mods = ModifierUtils.MakeAndCheckNonTypeMemberModifiers(isOrdinaryMethod: false, isForInterfaceMember: isInterface, syntax.Modifiers, defaultAccess, allowedModifiers, location, diagnostics, out modifierErrors, out hasExplicitAccessModifier);
168if ((mods & DeclarationModifiers.AccessibilityMask) != 0 &&
171mods = mods & ~DeclarationModifiers.AccessibilityMask;
176mods |= DeclarationModifiers.Private; // we mark static constructors private in the symbol table
181DeclarationModifiers.Extern,
247internal sealed override bool HasUnsafeModifier => (DeclarationModifiers & DeclarationModifiers.Unsafe) != 0;
Symbols\Source\SourceDelegateMethodSymbol.cs (9)
29DeclarationModifiers declarationModifiers)
145internal sealed override bool HasUnsafeModifier => (DeclarationModifiers & DeclarationModifiers.Unsafe) != 0;
221: base(delegateType, voidType, syntax, MethodKind.Constructor, RefKind.None, DeclarationModifiers.Public)
268: base(delegateType, returnType, syntax, MethodKind.DelegateInvoke, refKind, DeclarationModifiers.Virtual | DeclarationModifiers.Public)
361: base((SourceNamedTypeSymbol)invoke.ContainingType, iAsyncResultType, syntax, MethodKind.Ordinary, RefKind.None, DeclarationModifiers.Virtual | DeclarationModifiers.Public)
401: base((SourceNamedTypeSymbol)invoke.ContainingType, invoke.ReturnTypeWithAnnotations, syntax, MethodKind.Ordinary, invoke.RefKind, DeclarationModifiers.Virtual | DeclarationModifiers.Public)
Symbols\Source\SourceDestructorSymbol.cs (11)
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;
135private static DeclarationModifiers MakeModifiers(NamedTypeSymbol containingType, SyntaxTokenList modifiers, Location location, BindingDiagnosticBag diagnostics, out bool modifierErrors)
138const DeclarationModifiers allowedModifiers = DeclarationModifiers.Extern | DeclarationModifiers.Unsafe;
139var mods = ModifierUtils.MakeAndCheckNonTypeMemberModifiers(isOrdinaryMethod: false, isForInterfaceMember: containingType.IsInterface, modifiers, DeclarationModifiers.None, allowedModifiers, location, diagnostics, out modifierErrors, out _);
141mods = (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
197return (Modifiers & DeclarationModifiers.Unsafe) != 0 &&
209internal static DeclarationModifiers MakeModifiers(NamedTypeSymbol containingType, SyntaxToken firstIdentifier, SyntaxTokenList modifiers, bool isRefField, BindingDiagnosticBag diagnostics, out bool modifierErrors)
212DeclarationModifiers defaultAccess =
213isInterface ? DeclarationModifiers.Public : DeclarationModifiers.Private;
215DeclarationModifiers allowedModifiers =
216DeclarationModifiers.AccessibilityMask |
217DeclarationModifiers.Const |
218DeclarationModifiers.New |
219DeclarationModifiers.ReadOnly |
220DeclarationModifiers.Static |
221DeclarationModifiers.Volatile |
222DeclarationModifiers.Fixed |
223DeclarationModifiers.Unsafe |
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.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);
268if (reportBadMemberFlagIfAny(result, DeclarationModifiers.Required, diagnostics, errorLocation))
270result &= ~DeclarationModifiers.Required;
273result |= DeclarationModifiers.Static; // "constants are considered static members"
277if ((result & DeclarationModifiers.Static) != 0 && (result & DeclarationModifiers.Required) != 0)
281result &= ~DeclarationModifiers.Required;
294reportBadMemberFlagIfAny(result, DeclarationModifiers.Static, diagnostics, errorLocation);
295reportBadMemberFlagIfAny(result, DeclarationModifiers.Const, diagnostics, errorLocation);
296reportBadMemberFlagIfAny(result, DeclarationModifiers.Volatile, diagnostics, errorLocation);
301static bool reportBadMemberFlagIfAny(DeclarationModifiers result, DeclarationModifiers modifier, BindingDiagnosticBag diagnostics, SourceLocation errorLocation)
389DeclarationModifiers 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);
436private static DeclarationModifiers MakeDeclarationModifiers(MethodDeclarationSyntax syntax, NamedTypeSymbol containingType, Location location, DeclarationModifiers allowedModifiers, BindingDiagnosticBag diagnostics)
439syntax.Modifiers, defaultAccess: DeclarationModifiers.None, allowedModifiers, location, diagnostics, out _, out _);
727private static (DeclarationModifiers mods, bool hasExplicitAccessMod) MakeModifiers(MethodDeclarationSyntax syntax, NamedTypeSymbol containingType, MethodKind methodKind, bool hasBody, Location location, BindingDiagnosticBag diagnostics)
735var defaultAccess = isInterface && !isExplicitInterfaceImplementation ? DeclarationModifiers.None : DeclarationModifiers.Private;
738var allowedModifiers = DeclarationModifiers.Partial | DeclarationModifiers.Unsafe;
739var defaultInterfaceImplementationModifiers = DeclarationModifiers.None;
743allowedModifiers |= DeclarationModifiers.Static |
744DeclarationModifiers.AccessibilityMask;
748allowedModifiers |= DeclarationModifiers.New |
749DeclarationModifiers.Sealed |
750DeclarationModifiers.Abstract |
751DeclarationModifiers.Virtual;
755allowedModifiers |= DeclarationModifiers.Override;
759defaultInterfaceImplementationModifiers |= DeclarationModifiers.Sealed |
760DeclarationModifiers.Abstract |
761DeclarationModifiers.Static |
762DeclarationModifiers.Virtual |
763DeclarationModifiers.Extern |
764DeclarationModifiers.Async |
765DeclarationModifiers.Partial |
766DeclarationModifiers.AccessibilityMask;
776allowedModifiers |= DeclarationModifiers.Abstract;
779allowedModifiers |= DeclarationModifiers.Static;
782allowedModifiers |= DeclarationModifiers.Async | DeclarationModifiers.Extern;
786allowedModifiers |= DeclarationModifiers.ReadOnly;
792DeclarationModifiers mods = MakeDeclarationModifiers(syntax, containingType, location, allowedModifiers, diagnostics);
793if ((mods & DeclarationModifiers.AccessibilityMask) == 0)
813private static DeclarationModifiers AddImpliedModifiers(DeclarationModifiers mods, bool containingTypeIsInterface, MethodKind methodKind, bool hasBody)
825mods = (mods & ~DeclarationModifiers.AccessibilityMask) | DeclarationModifiers.Private;
830private const DeclarationModifiers PartialMethodExtendedModifierMask =
831DeclarationModifiers.Virtual |
832DeclarationModifiers.Override |
833DeclarationModifiers.New |
834DeclarationModifiers.Sealed |
835DeclarationModifiers.Extern;
Symbols\Source\SourcePropertyAccessorSymbol.cs (33)
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 |= GetAccessorModifiers(propertyModifiers) & ~DeclarationModifiers.AccessibilityMask;
261if ((declarationModifiers & DeclarationModifiers.Private) != 0)
264declarationModifiers &= ~DeclarationModifiers.Virtual;
277private static DeclarationModifiers GetAccessorModifiers(DeclarationModifiers propertyModifiers) =>
278propertyModifiers & ~(DeclarationModifiers.Indexer | DeclarationModifiers.ReadOnly | DeclarationModifiers.Unsafe);
463internal bool LocalDeclaredReadOnly => (DeclarationModifiers & DeclarationModifiers.ReadOnly) != 0;
468internal bool LocalDeclaredUnsafe => (DeclarationModifiers & DeclarationModifiers.Unsafe) != 0;
534private static DeclarationModifiers MakeModifiers(NamedTypeSymbol containingType, SyntaxTokenList modifiers, bool isExplicitInterfaceImplementation,
539const DeclarationModifiers defaultAccess = DeclarationModifiers.None;
542var allowedModifiers = isExplicitInterfaceImplementation ? DeclarationModifiers.None : DeclarationModifiers.AccessibilityMask;
543allowedModifiers |= DeclarationModifiers.Unsafe;
547allowedModifiers |= DeclarationModifiers.ReadOnly;
550var defaultInterfaceImplementationModifiers = DeclarationModifiers.None;
555defaultInterfaceImplementationModifiers = DeclarationModifiers.AccessibilityMask;
558var mods = ModifierUtils.MakeAndCheckNonTypeMemberModifiers(isOrdinaryMethod: false, isForInterfaceMember: isInterface,
561if ((mods & DeclarationModifiers.Unsafe) != 0)
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)
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)