internal static MethodSymbol GetEntryPoint(CSharpCompilation compilation, PEModuleBuilder moduleBeingBuilt, bool hasDeclarationErrors, DiagnosticBag diagnostics, CancellationToken cancellationToken) { CSharpCompilationOptions options = compilation.Options; if (!options.OutputKind.IsApplication()) { Debug.Assert(compilation.GetEntryPointAndDiagnostics(cancellationToken) == null); return(compilation.IsSubmission ? DefineScriptEntryPoint(compilation, moduleBeingBuilt, compilation.GetSubmissionReturnType(), hasDeclarationErrors, diagnostics) : null); } Debug.Assert(!compilation.IsSubmission); Debug.Assert(options.OutputKind.IsApplication()); CSharpCompilation.EntryPoint entryPoint = compilation.GetEntryPointAndDiagnostics(cancellationToken); Debug.Assert(entryPoint != null); Debug.Assert(!entryPoint.Diagnostics.IsDefault); diagnostics.AddRange(entryPoint.Diagnostics); if ((object)compilation.ScriptClass != null) { Debug.Assert((object)entryPoint.MethodSymbol == null); return(DefineScriptEntryPoint(compilation, moduleBeingBuilt, compilation.GetSpecialType(SpecialType.System_Void), hasDeclarationErrors, diagnostics)); } Debug.Assert((object)entryPoint.MethodSymbol != null || entryPoint.Diagnostics.HasAnyErrors() || !compilation.Options.Errors.IsDefaultOrEmpty); return(entryPoint.MethodSymbol); }
internal static MethodSymbol GetEntryPoint(CSharpCompilation compilation, PEModuleBuilder moduleBeingBuilt, bool hasDeclarationErrors, DiagnosticBag diagnostics, CancellationToken cancellationToken) { CSharpCompilationOptions options = compilation.Options; if (!options.OutputKind.IsApplication()) { Debug.Assert(compilation.GetEntryPointAndDiagnostics(cancellationToken) == null); return compilation.IsSubmission ? DefineScriptEntryPoint(compilation, moduleBeingBuilt, compilation.GetSubmissionReturnType(), hasDeclarationErrors, diagnostics) : null; } Debug.Assert(!compilation.IsSubmission); Debug.Assert(options.OutputKind.IsApplication()); CSharpCompilation.EntryPoint entryPoint = compilation.GetEntryPointAndDiagnostics(cancellationToken); Debug.Assert(entryPoint != null); Debug.Assert(!entryPoint.Diagnostics.IsDefault); diagnostics.AddRange(entryPoint.Diagnostics); if ((object)compilation.ScriptClass != null) { Debug.Assert((object)entryPoint.MethodSymbol == null); return DefineScriptEntryPoint(compilation, moduleBeingBuilt, compilation.GetSpecialType(SpecialType.System_Void), hasDeclarationErrors, diagnostics); } Debug.Assert((object)entryPoint.MethodSymbol != null || entryPoint.Diagnostics.HasAnyErrors() || !compilation.Options.Errors.IsDefaultOrEmpty); return entryPoint.MethodSymbol; }