Babel.Compiler.TypeElementCreatingVisitor.VisitSharedAttr C# (CSharp) Method

VisitSharedAttr() public method

public VisitSharedAttr ( SharedAttrDefinition attr ) : void
attr SharedAttrDefinition
return void
        public override void VisitSharedAttr(SharedAttrDefinition attr)
        {
            attr.TypeSpecifier.Accept(this);
            Type attrType = attr.TypeSpecifier.RawType;
            TypeBuilder typeBuilder = currentClass.TypeBuilder;
            MethodAttributes readerAttributes =
                MethodAttributes.Virtual | MethodAttributes.HideBySig;
            MethodAttributes writerAttributes =
                MethodAttributes.Virtual | MethodAttributes.HideBySig;
            switch (attr.Modifier) {
            case AttrModifier.None:
                readerAttributes |= MethodAttributes.Public;
                writerAttributes |= MethodAttributes.Public;
                break;
            case AttrModifier.Private:
                readerAttributes |= MethodAttributes.Private;
                writerAttributes |= MethodAttributes.Private;
                break;
            case AttrModifier.Readonly:
                readerAttributes |= MethodAttributes.Public;
                writerAttributes |= MethodAttributes.Private;
                break;
            }
            attr.FieldBuilder =
                typeBuilder.DefineField("_" + attr.Name,
                                        attrType,
                                        FieldAttributes.Private |
                                        FieldAttributes.Static);
            try {
                attr.Reader = DefineReader(typeBuilder, attr.Name,
                                           readerAttributes,
                                           attr.TypeSpecifier);
                attr.Writer = DefineWriter(typeBuilder, attr.Name,
                                           readerAttributes,
                                           attr.TypeSpecifier);
            }
            catch (MethodConflictionException e) {
                report.Error(attr.Location, e.Message);
            }
        }