static bool TryCompile( string input, out Type type, out IEnumerable <Message> messages, string programName = DefaultProgramName, string outputPath = null) { var isSuccess = TryAnalyze( input, out string _, out ProgramNode program, out IEnumerable <Message> analysisMessages); messages = new List <Message>(analysisMessages); if (!isSuccess) { type = null; return(false); } // TODO split into different methods? if (outputPath == null) { type = ILEmitter.CreateType(program, programName); } else { type = null; ILEmitter.CreateAssembly(program, programName, outputPath); } return(true); }