private ScriptCompiler(LogFactory logFactory, RuntimeDependencyResolver runtimeDependencyResolver) { _logger = logFactory(typeof(ScriptCompiler)); _scriptEnvironment = ScriptEnvironment.Default; RuntimeDependencyResolver = runtimeDependencyResolver; // nullable diagnostic options should be set to errors for (var i = 8600; i <= 8655; i++) { SpecificDiagnosticOptions.Add($"CS{i}", ReportDiagnostic.Error); } }
private void SetCompilationOptions <TReturn>(ScriptContext context, Script <TReturn> script) { var compilationOptionsField = typeof(CSharpCompilation).GetTypeInfo().GetDeclaredField("_options"); var compilation = script.GetCompilation(); var compilationOptions = (CSharpCompilationOptions)compilationOptionsField.GetValue(compilation); compilationOptions = compilationOptions.WithSpecificDiagnosticOptions(SpecificDiagnosticOptions.ToImmutableDictionary()); compilationOptionsField.SetValue(compilation, compilationOptions); if (context.OptimizationLevel == OptimizationLevel.Release) { _logger.Debug("Configuration/Optimization mode: Release"); SetReleaseOptimizationLevel(compilation); } else { _logger.Debug("Configuration/Optimization mode: Debug"); } }
internal override Diagnostic FilterDiagnostic(Diagnostic diagnostic) { // return PhpDiagnosticFilter.Filter(diagnostic, WarningLevel, GeneralDiagnosticOption, SpecificDiagnosticOptions); if (diagnostic == null) { return null; } ReportDiagnostic reportAction; if (SpecificDiagnosticOptions != null && SpecificDiagnosticOptions.TryGetValue(diagnostic.Id, out ReportDiagnostic d)) { reportAction = d; } else { reportAction = ReportDiagnostic.Default; } return diagnostic.WithReportDiagnostic(reportAction); }