예제 #1
0
        /// <returns>True if a diagnostic was reported</returns>
        internal bool ReportUnsafeIfNotAllowed(Location location, DiagnosticBag diagnostics, TypeSymbol sizeOfTypeOpt = null)
        {
#if XSHARP
            var diagnosticInfo = Compilation.Options.HasRuntime && Compilation.Options.AllowUnsafe  ? null : GetUnsafeDiagnosticInfo(sizeOfTypeOpt);
#else
            var diagnosticInfo = GetUnsafeDiagnosticInfo(sizeOfTypeOpt);
#endif
            if (diagnosticInfo == null)
            {
                return(false);
            }

            diagnostics.Add(new CSDiagnostic(diagnosticInfo, location));
#if XSHARP
            if ((object)sizeOfTypeOpt != null)
            {
                return(false);
            }
            if (ErrorFacts.IsWarning(diagnosticInfo.Code))
            {
                return(false);
            }
#endif
            return(true);
        }