public void Main_O2_Gui_h2() { //CompileEngine.clearLocalScriptFileMappings(); var scriptName = "Main O2 Gui.h2"; // this is the script used in ascx_Execute_Scripts.NEW_GUI_SCRIPT var file = scriptName.local(); var h2Code = file.h2_SourceCode(); //compile using internal methods var csharpCode = new CSharp_FastCompiler().createCSharpCodeWith_Class_Method_WithMethodText(h2Code); assert_Not_Null(scriptName); assert_Not_Null(file); assert_Not_Null(h2Code); assert_Not_Null(csharpCode); csharpCode.assert_Contains("public class", "DynamicType", "{", "}") .assert_Contains("using System;","System.Linq;") .assert_Contains("FluentSharp.REPL.Utils"); var compileEngine = new CompileEngine(); var assembly = compileEngine.compileSourceCode(csharpCode); assert_Is_Null(compileEngine.sbErrorMessage); assert_Not_Null(assembly); //check that we can also compile using the main wrapper methods assert_Not_Null(file.compile_H2Script()); }
public static Assembly compile(this string pathToFileToCompile, bool generateDebugSymbols) { PublicDI.CurrentScript = pathToFileToCompile; var csharpCompiler = new CSharp_FastCompiler().generateDebugSymbols(generateDebugSymbols); var compileProcess = new AutoResetEvent(false); csharpCompiler.set_OnCompileFail(() => compileProcess.Set()); csharpCompiler.set_OnCompileOK (() => compileProcess.Set()); O2Thread.mtaThread(()=> csharpCompiler.compileSourceCode(pathToFileToCompile.contents())); compileProcess.WaitOne(); return csharpCompiler.assembly(); }
public static Assembly compile_CodeSnippet(this string codeSnipptet, bool generateDebugSymbols) { //Note we can't use the precompiled engines here since there is an issue of the resolution of this code dependencies var csharpCompiler = new CSharp_FastCompiler().debugMode(true) .generateDebugSymbols(generateDebugSymbols); var compileProcess = new AutoResetEvent(false); csharpCompiler.set_OnAstFail (() => compileProcess.Set()); csharpCompiler.set_OnCompileFail(() => compileProcess.Set()); csharpCompiler.set_OnCompileOK (() => compileProcess.Set()); csharpCompiler.compileSnippet(codeSnipptet); compileProcess.WaitOne(); var assembly = csharpCompiler.assembly(); return assembly; }
public void loadH2Script(string scriptToLoad) { O2Thread.mtaThread(() => { if (scriptToLoad.fileName().starts(this.typeName())) { PublicDI.log.error("We can execute the current type of we will get a recursive load :)"); return; } currentScript = scriptToLoad; statusLabel.set_Text("loading script: {0}".format(scriptToLoad.fileName())); csharpCompiler = new CSharp_FastCompiler(); csharpCompiler.set_OnAstFail(() => { showError("Ast creation failed", csharpCompiler.astErrors()); csharpCompiler_OnAstFail.invoke(); }); csharpCompiler.set_OnAstOK (() => { showInfo("Ast creation Ok"); csharpCompiler_OnAstOk.invoke(); }); csharpCompiler.set_OnCompileFail(() => { showError("Compilation failed", csharpCompiler.compilationErrors()); csharpCompiler_OnCompileFail.invoke(); }); csharpCompiler.set_OnCompileOK(() => { showInfo("Compilation Ok: Executing 1st method"); csharpCompiler_OnCompileOk.invoke(); executeCompiledCode(); }); var sourceCode = ""; PublicDI.CurrentScript = scriptToLoad; csharpCompiler.CompilerOptions.SourceCodeFile = scriptToLoad; if (scriptToLoad.extension(".h2")) sourceCode = H2.load(scriptToLoad).SourceCode; if (scriptToLoad.extension(".o2") || scriptToLoad.extension(".cs")) sourceCode = scriptToLoad.contents(); if (sourceCode.valid()) csharpCompiler.compileSnippet(sourceCode); else statusLabel.set_Text("Non supported file").textColor(this, Color.Red); }); }
public static O2CodeCompletion updateCodeComplete(this SourceCodeEditor sourceCodeEditor, CSharp_FastCompiler csharpFastCompiler) { if (sourceCodeEditor.o2CodeCompletion != null) { foreach (var extraReference in csharpFastCompiler.ExtraSourceCodeFilesToCompile) sourceCodeEditor.o2CodeCompletion.parseFile(extraReference); //var currentCode = csharpFastCompiler.processedCode(); var currentCode = csharpFastCompiler.SourceCode; sourceCodeEditor.o2CodeCompletion.parseSourceCode(currentCode); sourceCodeEditor.o2CodeCompletion.CodeCompleteCaretLocationOffset = csharpFastCompiler.getGeneratedSourceCodeMethodLineOffset(); sourceCodeEditor.o2CodeCompletion.CodeCompleteTargetText = currentCode; // i might not need these sourceCodeEditor.textArea().CodeCompleteCaretLocationOffset = csharpFastCompiler.getGeneratedSourceCodeMethodLineOffset(); } return sourceCodeEditor.o2CodeCompletion; }
public static O2CodeCompletion updateCodeComplete(this ascx_SourceCodeViewer sourceCodeViewer, CSharp_FastCompiler csharpFastCompiler) { return sourceCodeViewer.editor().updateCodeComplete(csharpFastCompiler); }
public void SetUp() { csharpFastCompiler = new CSharp_FastCompiler(); }
public Assembly compileH2File() { var sourceCode = getSourceCode(); if (sourceCode != "") { saveSourceCode(); // always save before compiling var csharpCompiler = new CSharp_FastCompiler(); csharpCompiler.onAstFail += ()=> "AST Creation for provided source code failed".error(); //csharpCompiler.generateDebugSymbols = true; csharpCompiler.compileSnippet(sourceCode); csharpCompiler.waitForCompilationComplete(); if (csharpCompiler.CompilerResults != null && csharpCompiler.CompilerResults.Errors.Count ==0) return csharpCompiler.CompilerResults.CompiledAssembly; if (csharpCompiler.CompiledAssembly.notNull()) return csharpCompiler.CompiledAssembly; } return null; }