/// <summary> /// Creates a new compilation with the specified compilation options. /// </summary> public SoalCompilation WithOptions(SoalCompilationOptions options) { var oldOptions = this.Options; bool reuseReferenceManager = oldOptions.CanReuseCompilationReferenceManager(options); bool reuseSyntaxAndDeclarationManager = oldOptions.ScriptClassName == options.ScriptClassName && oldOptions.SourceReferenceResolver == options.SourceReferenceResolver; return(new SoalCompilation( this.CompilationName, options, this.ExternalReferences, this.PreviousSubmission, this.SubmissionReturnType, this.HostObjectType, this.IsSubmission, this.GetUnboundReferenceManager(), reuseReferenceManager, reuseSyntaxAndDeclarationManager ? this.SyntaxAndDeclarations : SyntaxAndDeclarationManager.Create( this.SyntaxAndDeclarations.ExternalSyntaxTrees, options.ScriptClassName, options.SourceReferenceResolver, this.SyntaxAndDeclarations.IsSubmission))); }
/// <summary> /// Create a duplicate of this compilation with different symbol instances. /// </summary> protected override LanguageCompilation CreateNew( string assemblyName, LanguageCompilationOptions options, IEnumerable <MetadataReference> references, LanguageCompilation previousSubmission, Type submissionReturnType, Type hostObjectType, bool isSubmission, ReferenceManager referenceManager, bool reuseReferenceManager, SyntaxAndDeclarationManager syntaxAndDeclarations, AsyncQueue <CompilationEvent> eventQueue = null) { return(new MetaCompilation( assemblyName, (MetaCompilationOptions)options, references, (MetaCompilation)previousSubmission, submissionReturnType, hostObjectType, isSubmission, referenceManager, reuseReferenceManager, syntaxAndDeclarations, eventQueue)); }
protected SoalCompilation( string name, CompilationOptions options, ImmutableArray <MetadataReference> references, Compilation previousSubmission, Type submissionReturnType, Type hostObjectType, bool isSubmission, ReferenceManager referenceManager, bool reuseReferenceManager, SyntaxAndDeclarationManager syntaxAndDeclarations, AsyncQueue <CompilationEvent> eventQueue = null) : base(name, options, references, previousSubmission, submissionReturnType, hostObjectType, isSubmission, referenceManager, reuseReferenceManager, syntaxAndDeclarations, eventQueue) { }
protected override CompilationBase Update( ReferenceManager referenceManager, bool reuseReferenceManager, SyntaxAndDeclarationManager syntaxAndDeclarations) { return(new SoalCompilation( this.CompilationName, this.Options, this.ExternalReferences, this.PreviousSubmission, this.SubmissionReturnType, this.HostObjectType, this.IsSubmission, referenceManager, reuseReferenceManager, syntaxAndDeclarations)); }
private static SoalCompilation Create( string name, SoalCompilationOptions options, IEnumerable <SoalSyntaxTree> syntaxTrees, IEnumerable <MetadataReference> references, SoalCompilation previousSubmission, Type returnType, Type hostObjectType, bool isSubmission) { Debug.Assert(options != null); Debug.Assert(!isSubmission || options.ReferencesSupersedeLowerVersions); var validatedReferences = ValidateReferences <CompilationReference>(references); var compilation = new SoalCompilation( name, options, validatedReferences, previousSubmission, returnType, hostObjectType, isSubmission, referenceManager: null, reuseReferenceManager: false, syntaxAndDeclarations: SyntaxAndDeclarationManager.Create( ImmutableArray <SyntaxTree> .Empty, options.ScriptClassName, options.SourceReferenceResolver, isSubmission)); if (syntaxTrees != null) { compilation = compilation.AddSyntaxTrees(syntaxTrees); } return(compilation); }
protected MetaCompilation(string assemblyName, MetaCompilationOptions options, IEnumerable <MetadataReference> references, MetaCompilation previousSubmission, Type submissionReturnType, Type hostObjectType, bool isSubmission, ReferenceManager referenceManager, bool reuseReferenceManager, SyntaxAndDeclarationManager syntaxAndDeclarations, AsyncQueue <CompilationEvent> eventQueue = null) : base(assemblyName, options, references, previousSubmission, submissionReturnType, hostObjectType, isSubmission, referenceManager, reuseReferenceManager, syntaxAndDeclarations, eventQueue) { }