Beispiel #1
0
 public CilCompilationContext(MethodDefinition method, AstMethodDefinitionBase methodAst, Action <IAstElement, CilCompilationContext> compile, IReferenceContext referenceContext)
 {
     this.referenceContext = referenceContext;
     this.Method           = method;
     this.MethodAst        = methodAst;
     this.compile          = compile;
 }
 protected virtual void BuildParameters(MethodDefinition method, AstMethodDefinitionBase ast, DefinitionBuildingContext context)
 {
     foreach (var parameter in ast.Parameters)
     {
         method.Parameters.Add(new ParameterDefinition(parameter.Name, ParameterAttributes.None, context.ConvertReference(parameter.Type)));
     }
 }
Beispiel #3
0
        private void CompileMethod(MethodDefinition method, AstMethodDefinitionBase methodAst, DefinitionBuildingContext parentContext)
        {
            var body    = method.Body.GetILProcessor();
            var context = new CilCompilationContext(method, methodAst, (e, c) => CompileCil(body, e, c), parentContext);

            foreach (var element in methodAst.Body)
            {
                CompileCil(body, element, context);
            }
        }
Beispiel #4
0
 public void MapDefinition(AstMethodDefinitionBase methodAst, MethodDefinition method)
 {
     references.Add(methodAst, method);
 }
 public virtual void FinalizeBuild(MethodDefinition method, AstMethodDefinitionBase ast, TypeDefinition type, DefinitionBuildingContext context)
 {
     BuildParameters(method, ast, context);
     type.Methods.Add(method);
     context.MapDefinition(ast, method);
 }