Beispiel #1
0
 internal static void ReportDefaultInterfaceImplementationModifiers(
     bool hasBody,
     DeclarationModifiers modifiers,
     DeclarationModifiers defaultInterfaceImplementationModifiers,
     Location errorLocation,
     BindingDiagnosticBag diagnostics)
 {
     if (!hasBody && (modifiers & defaultInterfaceImplementationModifiers) != 0)
     {
         LanguageVersion availableVersion = ((CSharpParseOptions)errorLocation.SourceTree.Options).LanguageVersion;
         LanguageVersion requiredVersion  = MessageID.IDS_DefaultInterfaceImplementation.RequiredVersion();
         if (availableVersion < requiredVersion)
         {
             DeclarationModifiers errorModifiers = modifiers & defaultInterfaceImplementationModifiers;
             var requiredVersionArgument         = new CSharpRequiredLanguageVersion(requiredVersion);
             var availableVersionArgument        = availableVersion.ToDisplayString();
             while (errorModifiers != DeclarationModifiers.None)
             {
                 DeclarationModifiers oneError = errorModifiers & ~(errorModifiers - 1);
                 Debug.Assert(oneError != DeclarationModifiers.None);
                 errorModifiers = errorModifiers & ~oneError;
                 diagnostics.Add(ErrorCode.ERR_InvalidModifierForLanguageVersion, errorLocation,
                                 ConvertSingleModifierToSyntaxText(oneError),
                                 availableVersionArgument,
                                 requiredVersionArgument);
             }
         }
     }
 }
Beispiel #2
0
        internal static void ReportUnsupportedModifiersForLanguageVersion(DeclarationModifiers modifiers, DeclarationModifiers unsupportedModifiers, Location errorLocation, BindingDiagnosticBag diagnostics, LanguageVersion availableVersion, LanguageVersion requiredVersion)
        {
            DeclarationModifiers errorModifiers = modifiers & unsupportedModifiers;
            var requiredVersionArgument         = new CSharpRequiredLanguageVersion(requiredVersion);
            var availableVersionArgument        = availableVersion.ToDisplayString();

            while (errorModifiers != DeclarationModifiers.None)
            {
                DeclarationModifiers oneError = errorModifiers & ~(errorModifiers - 1);
                Debug.Assert(oneError != DeclarationModifiers.None);
                errorModifiers = errorModifiers & ~oneError;
                diagnostics.Add(ErrorCode.ERR_InvalidModifierForLanguageVersion, errorLocation,
                                ConvertSingleModifierToSyntaxText(oneError),
                                availableVersionArgument,
                                requiredVersionArgument);
            }
        }