Example #1
0
 public static void CreateAssembly(this ICompilationResult result)
 {
     if (result.Success)
     {
         TheGeneratedAssembly = Assembly.Load(result.TheResult);
     }
 }
Example #2
0
        public static void AddModuleCompilation(this ICompilationResult moduleResult)
        {
            if (!moduleResult.Success)
            {
                return;
            }

            TheGeneratedAssembly.LoadModule
            (
                moduleResult.TheOutputName,
                moduleResult.TheResult
            );
        }
Example #3
0
        public void ProcessAfterInterior(ITreeNode element)
        {
            ICompilationResult result = null;

            try
            {
                if (myCurrentNodeCompiler == null)
                {
                    return;
                }
                result = myCurrentNodeCompiler.GetResult();

                if (result is ClassFieldCompilationResult compiledClassField)
                {
                    @params.CheckAndAddIfTainted(compiledClassField);
                }
            }
            catch (Exception e)
            {
                //throw;
                System.IO.File.AppendAllText("C:\\work\\exceptions.txt", $"\n\n{e}\n\n");
            }
            finally
            {
                myCurrentNodeCompiler = myCurrentNodeCompiler.Parent;
                var res = result ?? new ExpressionCompilationResult();
                myCurrentNodeCompiler?.AddChildResult(element, res);

//                //todo:rework
//                if (element.Parent is IClassDeclaration classDeclaration &&
//                    classDeclaration.ExtendsList != null &&
//                    classDeclaration.ExtendsList == element &&
//                    res is ExpressionCompilationResult parent)
//                {
//                    var parentReference = parent.GetReference();
//                    if (parentReference is ClassReference classReference)
//                    {
//                        @params.GetCurrentClass().BaseClass = classReference.ClassId;
//                    }
//
//                }
            }
        }
Example #4
0
 public virtual void AddChildResult(ITreeNode element, ICompilationResult result)
 {
     MyChildToResult.Add(element, result);
     MyResults.Add(result);
 }