public static void ReplaceOptional(this CompilerPipeline pipeline, Type optionalPipelineStepType, ICompilerStep step) { int index = pipeline.Find(optionalPipelineStepType); if (index >= 0) { pipeline.RemoveAt(index); pipeline.Insert(index - 1, step); } }
public CompileUnit SetUpTypeInferenceSource() { CompilerPipeline compilerPipeline = UnityScriptCompiler.Pipelines.AdjustBooPipeline(new ResolveExpressions()); compilerPipeline.RemoveAt(compilerPipeline.Find(typeof(ApplySemantics))); compilerPipeline.BreakOnErrors = false; var unityScriptCompiler = new UnityScriptCompiler(new UnityScriptCompilerParameters(My <IReflectionTypeSystemProvider> .Instance, false)); CopyUnityScriptCompilerParametersTo(unityScriptCompiler); unityScriptCompiler.Parameters.Pipeline = compilerPipeline; unityScriptCompiler.Parameters.AddToEnvironment( typeof(TypeInferenceRuleProvider), GetCustomTypeInferenceRuleProvider); var compilerContext = unityScriptCompiler.Run(CompileUnit.CloneNode()); if (((ICollection)compilerContext.Errors).Count != 0) { throw new CompilationErrorsException(compilerContext.Errors); } return(compilerContext.CompileUnit); }