public override object VisitPropertyDeclaration(PropertyDeclaration propertyDeclaration, object data)
        {
            if (!IsClassType(ClassType.Interface) && (propertyDeclaration.Modifier & Modifiers.Visibility) == 0)
            {
                propertyDeclaration.Modifier |= Modifiers.Private;
            }
            base.VisitPropertyDeclaration(propertyDeclaration, data);

            ToVBNetRenameConflictingVariablesVisitor.RenameConflicting(propertyDeclaration);

            if (!IsClassType(ClassType.Interface) && (propertyDeclaration.Modifier & Modifiers.Abstract) == 0)
            {
                if (propertyDeclaration.HasGetRegion && propertyDeclaration.HasSetRegion)
                {
                    if (propertyDeclaration.GetRegion.Block.IsNull && propertyDeclaration.SetRegion.Block.IsNull)
                    {
                        // automatically implemented property
                        string           fieldName     = "m_" + propertyDeclaration.Name;
                        Modifiers        fieldModifier = propertyDeclaration.Modifier & ~(Modifiers.Visibility) | Modifiers.Private;
                        FieldDeclaration newField      = new FieldDeclaration(null, propertyDeclaration.TypeReference, fieldModifier);
                        newField.Fields.Add(new VariableDeclaration(fieldName));
                        InsertAfterSibling(propertyDeclaration, newField);

                        propertyDeclaration.GetRegion.Block = new BlockStatement();
                        propertyDeclaration.GetRegion.Block.Return(ExpressionBuilder.Identifier(fieldName));
                        propertyDeclaration.SetRegion.Block = new BlockStatement();
                        propertyDeclaration.SetRegion.Block.Assign(ExpressionBuilder.Identifier(fieldName), ExpressionBuilder.Identifier("Value"));
                    }
                }
            }

            return(null);
        }
Example #2
0
        public override object VisitPropertyDeclaration(PropertyDeclaration propertyDeclaration, object data)
        {
            if (!IsClassType(ClassType.Interface) && (propertyDeclaration.Modifier & Modifiers.Visibility) == 0)
            {
                propertyDeclaration.Modifier |= Modifiers.Private;
            }
            base.VisitPropertyDeclaration(propertyDeclaration, data);

            ToVBNetRenameConflictingVariablesVisitor.RenameConflicting(propertyDeclaration);

            return(null);
        }
        public override object VisitConstructorDeclaration(ConstructorDeclaration constructorDeclaration, object data)
        {
            // make constructor private if visiblity is not set (unless constructor is static)
            if ((constructorDeclaration.Modifier & (Modifiers.Visibility | Modifiers.Static)) == 0)
            {
                constructorDeclaration.Modifier |= Modifiers.Private;
            }
            base.VisitConstructorDeclaration(constructorDeclaration, data);

            ToVBNetRenameConflictingVariablesVisitor.RenameConflicting(constructorDeclaration);

            return(null);
        }
        public override object VisitMethodDeclaration(MethodDeclaration methodDeclaration, object data)
        {
            if (!IsClassType(ClassType.Interface) && (methodDeclaration.Modifier & Modifiers.Visibility) == 0)
            {
                methodDeclaration.Modifier |= Modifiers.Private;
            }

            base.VisitMethodDeclaration(methodDeclaration, data);

            const Modifiers externStatic = Modifiers.Static | Modifiers.Extern;

            if ((methodDeclaration.Modifier & externStatic) == externStatic &&
                methodDeclaration.Body.IsNull)
            {
                foreach (AttributeSection sec in methodDeclaration.Attributes)
                {
                    foreach (Attribute att in sec.Attributes)
                    {
                        if ("DllImport".Equals(att.Name, StringComparison.InvariantCultureIgnoreCase))
                        {
                            if (ConvertPInvoke(methodDeclaration, att))
                            {
                                sec.Attributes.Remove(att);
                                break;
                            }
                        }
                    }
                    if (sec.Attributes.Count == 0)
                    {
                        methodDeclaration.Attributes.Remove(sec);
                        break;
                    }
                }
            }

            ToVBNetRenameConflictingVariablesVisitor.RenameConflicting(methodDeclaration);

            return(null);
        }