Example #1
0
        internal SoalScriptCompilationInfo(SoalCompilation previousCompilationOpt, Type returnType, Type globalsType)
            : base(returnType, globalsType)
        {
            Debug.Assert(previousCompilationOpt == null || previousCompilationOpt.HostObjectType == globalsType);

            PreviousScriptCompilation = previousCompilationOpt;
        }
Example #2
0
        /// <summary>
        /// Creates a new compilation that can be used in scripting.
        /// </summary>
        public static SoalCompilation CreateScriptCompilation(
            string name,
            SoalSyntaxTree syntaxTree = null,
            IEnumerable <MetadataReference> references = null,
            SoalCompilationOptions options             = null,
            SoalCompilation previousScriptCompilation  = null,
            Type returnType  = null,
            Type globalsType = null)
        {
            ValidateScriptCompilationParameters(previousScriptCompilation, returnType, ref globalsType);

            return(Create(
                       name,
                       options?.WithReferencesSupersedeLowerVersions(true) ?? s_defaultSubmissionOptions,
                       (syntaxTree != null) ? new[] { syntaxTree } : EmptyCollections.Enumerable <SoalSyntaxTree>(),
                       references,
                       previousScriptCompilation,
                       returnType,
                       globalsType,
                       isSubmission: true));
        }
Example #3
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 #4
0
 public SoalScriptCompilationInfo WithPreviousScriptCompilation(SoalCompilation compilation) =>
 (compilation == PreviousScriptCompilation) ? this : new SoalScriptCompilationInfo(compilation, ReturnType, GlobalsType);