Boo.Lang.Compiler.Steps.EmitAssembly.OnReferenceExpression C# (CSharp) Метод

OnReferenceExpression() публичный Метод

public OnReferenceExpression ( ReferenceExpression node ) : void
node Boo.Lang.Compiler.Ast.ReferenceExpression
Результат void
        public override void OnReferenceExpression(ReferenceExpression node)
        {
            var entity = TypeSystemServices.GetEntity(node);
            switch (entity.EntityType)
            {
                case EntityType.Local:
                    {
                        if (!AstUtil.IsIndirection(node.ParentNode))
                            LoadLocal((InternalLocal)entity);
                        else
                            LoadIndirectLocal((InternalLocal)entity);
                        break;
                    }

                case EntityType.Parameter:
                    {
                        var param = (InternalParameter)entity;
                        LoadParam(param);

                        if (param.Parameter.IsByRef)
                        {
                            var code = GetLoadRefParamCode(param.Type);
                            if (code.Value == OpCodes.Ldobj.Value)
                                _il.Emit(code, GetSystemType(param.Type));
                            else
                                _il.Emit(code);
                        }
                        PushType(param.Type);
                        break;
                    }

                case EntityType.Array:
                case EntityType.Type:
                    {
                        EmitGetTypeFromHandle(GetSystemType(node));
                        break;
                    }

                default:
                    {
                        NotImplemented(node, entity.ToString());
                        break;
                    }

            }
        }
EmitAssembly