Boo.Lang.Compiler.Steps.ProcessMethodBodies.OnConstructor C# (CSharp) Метод

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

public OnConstructor ( Constructor node ) : void
node Boo.Lang.Compiler.Ast.Constructor
Результат void
        public override void OnConstructor(Constructor node)
        {
            if (WasVisited(node))
            {
                return;
            }
            MarkVisited(node);

            Visit(node.Attributes);
            Visit(node.Parameters);

            InternalConstructor entity = (InternalConstructor)node.Entity;
            ProcessMethodBody(entity);

            if (node.IsRuntime)
            {
                CheckRuntimeMethod(node);
            }
            else
            {
                if (entity.DeclaringType.IsValueType)
                {
                    if (0 == node.Parameters.Count
                        && !node.IsStatic
                        && !node.IsSynthetic)
                    {
                        Error(CompilerErrorFactory.ValueTypesCannotDeclareParameterlessConstructors(node));
                    }
                }
                else if (
                    !entity.HasSelfCall &&
                    !entity.HasSuperCall &&
                    !entity.IsStatic)
                {
                    IType baseType = entity.DeclaringType.BaseType;
                    IConstructor super = GetCorrectConstructor(node, baseType, EmptyExpressionCollection);
                    if (null != super)
                    {
                        node.Body.Statements.Insert(0,
                                                    CodeBuilder.CreateSuperConstructorInvocation(super));
                    }
                }
                if (!entity.IsStatic)
                    CheckInstanceMethodInvocationsWithinConstructor(node);
            }
        }
ProcessMethodBodies