internal SoalScriptCompilationInfo(SoalCompilation previousCompilationOpt, Type returnType, Type globalsType) : base(returnType, globalsType) { Debug.Assert(previousCompilationOpt == null || previousCompilationOpt.HostObjectType == globalsType); PreviousScriptCompilation = previousCompilationOpt; }
/// <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)); }
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); }
public SoalScriptCompilationInfo WithPreviousScriptCompilation(SoalCompilation compilation) => (compilation == PreviousScriptCompilation) ? this : new SoalScriptCompilationInfo(compilation, ReturnType, GlobalsType);