Esempio n. 1
0
        public void Accept(TraitNode node)
        {
            // Traits are PascalCase
            HassiumWarning.EnforceCasing(module, node.SourceLocation, node.Name, HassiumCasingType.Pascal);

            HassiumTrait trait = new HassiumTrait(node.Name);

            trait.IsPrivate = node.IsPrivate;

            foreach (var pair in node.Attributes)
            {
                methodStack.Push(new HassiumMethod(module));
                pair.Value.Visit(this);
                emit(pair.Value.SourceLocation, InstructionType.Return);
                var type = methodStack.Pop();

                HassiumDictionary.DictTypeDef.add(null, trait.Traits, pair.Value.SourceLocation, new HassiumString(pair.Key), type);
            }

            classStack.Peek().AddAttribute(node.Name, trait);
        }