コード例 #1
0
 public override void GenerateBytecode(ClassesContainer container, ByteBlock context)
 {
     foreach (var parameter in Parameters)
     {
         parameter.GenerateBytecode(container, context);
     }
     AccessorTree.GenerateBytecode(container, context);
 }
コード例 #2
0
        public override void ValidateSemantics(SemanticsValidator validator) // methode accessible, nombre de parametres corrects.
        {
            foreach (var parameter in Parameters)
            {
                parameter.ValidateSemantics(validator);
            }

            AccessorTree = new AccessorTree(this, false);
            AccessorTree.ValidateSemantics(validator);

            Method target = AccessorTree.Last().GetTarget <Method>();

            int requiredParameters = target.Parameters.Count;

            if (target.ParentClass.Type == ContainerType.primitive)
            {
                requiredParameters = requiredParameters - 1;
            }

            if (requiredParameters != Parameters.Count)
            {
                validator.AddError(Name + "() require " + requiredParameters + " parameters, but " + Parameters.Count + " was given", base.ParsingContext);
            }
        }