Example #1
0
        /// <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)));
        }
Example #2
0
 /// <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));
 }
Example #3
0
 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)
 {
 }
Example #4
0
 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));
 }
Example #5
0
        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);
        }
Example #6
0
 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)
 {
 }