public override void VisitFieldDeclaration(FieldDeclaration fieldDeclaration)
            {
                base.VisitFieldDeclaration(fieldDeclaration);
                if (fieldDeclaration.HasModifier(Modifiers.Const) || fieldDeclaration.HasModifier(Modifiers.Readonly))
                {
                    return;
                }
                var defaultValueExpr = GetDefaultValueExpression(fieldDeclaration.ReturnType);

                if (defaultValueExpr == null)
                {
                    return;
                }

                foreach (var variable1 in fieldDeclaration.Variables)
                {
                    var variable = variable1;
                    if (!defaultValueExpr.Match(variable.Initializer).Success)
                    {
                        continue;
                    }

                    AddIssue(new CodeIssue(variable.Initializer, ctx.TranslateString("Initializing field by default value is redundant"),
                                           new CodeAction(ctx.TranslateString("Remove field initializer"),
                                                          script => script.Replace(variable, new VariableInitializer(variable.Name)),
                                                          variable.Initializer))
                    {
                        IssueMarker = IssueMarker.GrayOut
                    });
                }
            }
Ejemplo n.º 2
0
 private OverloadsCollection(IEmitter emitter, FieldDeclaration fieldDeclaration)
 {
     this.Emitter        = emitter;
     this.Name           = emitter.GetFieldName(fieldDeclaration);
     this.JsName         = this.Emitter.GetEntityName(fieldDeclaration, false, true);
     this.Inherit        = !fieldDeclaration.HasModifier(Modifiers.Static);
     this.Static         = fieldDeclaration.HasModifier(Modifiers.Static);
     this.Member         = this.FindMember(fieldDeclaration);
     this.TypeDefinition = this.Member.DeclaringTypeDefinition;
     this.Type           = this.Member.DeclaringType;
     this.InitMembers();
     this.Emitter.OverloadsCacheNodes[new Tuple <AstNode, bool>(fieldDeclaration, false)] = this;
 }
Ejemplo n.º 3
0
 private OverloadsCollection(IEmitter emitter, FieldDeclaration fieldDeclaration)
 {
     this.Emitter        = emitter;
     this.Name           = emitter.GetFieldName(fieldDeclaration);
     this.JsName         = this.Emitter.GetEntityName(fieldDeclaration);
     this.Inherit        = !fieldDeclaration.HasModifier(Modifiers.Static);
     this.Static         = fieldDeclaration.HasModifier(Modifiers.Static);
     this.Member         = this.FindMember(fieldDeclaration);
     this.TypeDefinition = this.Member.DeclaringTypeDefinition;
     this.Type           = this.Member.DeclaringType;
     this.InitMembers();
     this.Emitter.Cache.AddNode(fieldDeclaration, false, this);
 }
Ejemplo n.º 4
0
 private OverloadsCollection(IEmitter emitter, FieldDeclaration fieldDeclaration)
 {
     this.Emitter = emitter;
     this.Name = emitter.GetFieldName(fieldDeclaration);
     this.JsName = this.Emitter.GetEntityName(fieldDeclaration, false, true);
     this.Inherit = !fieldDeclaration.HasModifier(Modifiers.Static);
     this.Static = fieldDeclaration.HasModifier(Modifiers.Static);
     this.Member = this.FindMember(fieldDeclaration);
     this.TypeDefinition = this.Member.DeclaringTypeDefinition;
     this.Type = this.Member.DeclaringType;
     this.InitMembers();
     this.Emitter.OverloadsCache[fieldDeclaration.GetHashCode().ToString()] = this;
 }
Ejemplo n.º 5
0
 private OverloadsCollection(IEmitter emitter, FieldDeclaration fieldDeclaration)
 {
     this.Emitter        = emitter;
     this.Name           = emitter.GetFieldName(fieldDeclaration);
     this.JsName         = this.Emitter.GetEntityName(fieldDeclaration, false, true);
     this.Inherit        = !fieldDeclaration.HasModifier(Modifiers.Static);
     this.Static         = fieldDeclaration.HasModifier(Modifiers.Static);
     this.Member         = this.FindMember(fieldDeclaration);
     this.TypeDefinition = this.Member.DeclaringTypeDefinition;
     this.Type           = this.Member.DeclaringType;
     this.InitMembers();
     //this.Emitter.OverloadsCache[fieldDeclaration.GetHashCode().ToString()] = this;
 }
Ejemplo n.º 6
0
        public override void VisitFieldDeclaration(FieldDeclaration fieldDeclaration)
        {
            bool isStatic = this.CurrentType.ClassType == ClassType.Enum ||
                            fieldDeclaration.HasModifier(Modifiers.Static) ||
                            fieldDeclaration.HasModifier(Modifiers.Const);

            foreach (var item in fieldDeclaration.Variables)
            {
                var rr = this.Resolver.ResolveNode(item, null) as MemberResolveResult;
                if (fieldDeclaration.HasModifier(Modifiers.Const) && rr != null && rr.Member.Attributes.Any(a => a.AttributeType.FullName == Bridge.Translator.Translator.Bridge_ASSEMBLY + ".InlineConstAttribute"))
                {
                    continue;
                }

                Expression initializer = item.Initializer;

                if (initializer.IsNull)
                {
                    if (this.CurrentType.ClassType == ClassType.Enum)
                    {
                        throw (EmitterException)this.CreateException(fieldDeclaration, "Enum items must be explicitly numbered");
                    }

                    initializer = this.GetDefaultFieldInitializer(fieldDeclaration.ReturnType);
                }

                this.CurrentType.FieldsDeclarations.Add(item.Name, fieldDeclaration);

                if (isStatic)
                {
                    this.CurrentType.StaticConfig.Fields.Add(new TypeConfigItem
                    {
                        Name           = item.Name,
                        Entity         = fieldDeclaration,
                        IsConst        = fieldDeclaration.HasModifier(Modifiers.Const),
                        VarInitializer = item,
                        Initializer    = initializer
                    });
                }
                else
                {
                    this.CurrentType.InstanceConfig.Fields.Add(new TypeConfigItem
                    {
                        Name           = item.Name,
                        Entity         = fieldDeclaration,
                        VarInitializer = item,
                        Initializer    = initializer
                    });
                }
            }
        }
            public override void VisitFieldDeclaration(FieldDeclaration fieldDeclaration)
            {
                base.VisitFieldDeclaration(fieldDeclaration);
                if (fieldDeclaration.HasModifier(Modifiers.Const))
                {
                    return;
                }
                var defaultValueExpr = GetDefaultValueExpression(fieldDeclaration.ReturnType);

                if (defaultValueExpr == null)
                {
                    return;
                }

                foreach (var variable1 in fieldDeclaration.Variables)
                {
                    var variable = variable1;
                    if (!defaultValueExpr.Match(variable.Initializer).Success)
                    {
                        continue;
                    }

                    AddIssue(variable.Initializer, ctx.TranslateString("Remove redundant field initializer"),
                             script => script.Replace(variable, new VariableInitializer(variable.Name)));
                }
            }
            public override void VisitFieldDeclaration(FieldDeclaration fieldDeclaration)
            {
                if (fieldDeclaration.HasModifier(Modifiers.Static))
                {
                    return;
                }

                foreach (var attributeSection in fieldDeclaration.Attributes)
                {
                    int attributeCount = attributeSection.Attributes.Count;
                    foreach (var attribute in attributeSection.Attributes)
                    {
                        var resolvedAttribute = ctx.Resolve(attribute.Type) as TypeResolveResult;
                        if (resolvedAttribute == null)
                        {
                            continue;
                        }
                        if (threadStaticAttribute.Equals(resolvedAttribute.Type))
                        {
                            string title = ctx.TranslateString("ThreadStatic does nothing on instance fields");
                            if (attributeCount == 1)
                            {
                                AddIssue(new CodeIssue(attributeSection, title, GetActions(attribute, attributeSection, fieldDeclaration)));
                            }
                            else
                            {
                                AddIssue(new CodeIssue(attribute, title, GetActions(attribute, attributeSection, fieldDeclaration)));
                            }
                        }
                    }
                }
            }
        static PropertyDeclaration GeneratePropertyDeclaration(RefactoringContext context, FieldDeclaration field, string fieldName)
        {
            var mod = ICSharpCode.NRefactory.CSharp.Modifiers.Public;

            if (field.HasModifier(ICSharpCode.NRefactory.CSharp.Modifiers.Static))
            {
                mod |= ICSharpCode.NRefactory.CSharp.Modifiers.Static;
            }

            return(new PropertyDeclaration()
            {
                Modifiers = mod,
                Name = context.GetNameProposal(fieldName, false),
                ReturnType = field.ReturnType.Clone(),
                Getter = new Accessor()
                {
                    Body = new BlockStatement()
                    {
                        new ReturnStatement(new IdentifierExpression(fieldName))
                    }
                },
                Setter = new Accessor()
                {
                    Body = new BlockStatement()
                    {
                        new ExpressionStatement(new AssignmentExpression(new IdentifierExpression(fieldName), new IdentifierExpression("value")))
                    }
                }
            });
        }
Ejemplo n.º 10
0
 public override void VisitFieldDeclaration(FieldDeclaration fieldDeclaration)
 {
     if (fieldDeclaration.HasModifier(Modifiers.Static))
     {
         CheckDependency(fieldDeclaration.ReturnType);
         base.VisitFieldDeclaration(fieldDeclaration);
     }
 }
Ejemplo n.º 11
0
 public override void VisitFieldDeclaration(FieldDeclaration fieldDeclaration)
 {
     if (fieldDeclaration.HasModifier(Modifiers.Static))
     {
         this.CheckDependency(fieldDeclaration.ReturnType);
         base.VisitFieldDeclaration(fieldDeclaration);
     }
 }
Ejemplo n.º 12
0
        public override void VisitFieldDeclaration(FieldDeclaration fieldDeclaration)
        {
            bool isStatic = this.CurrentType.ClassType == ClassType.Enum ||
                            fieldDeclaration.HasModifier(Modifiers.Static) ||
                            fieldDeclaration.HasModifier(Modifiers.Const);

            foreach (var item in fieldDeclaration.Variables)
            {
                Expression initializer = item.Initializer;

                if (initializer.IsNull)
                {
                    if (this.CurrentType.ClassType == ClassType.Enum)
                    {
                        throw (Exception)this.CreateException(fieldDeclaration, "Enum items must be explicitly numbered");
                    }

                    initializer = this.GetDefaultFieldInitializer(fieldDeclaration.ReturnType);
                }

                this.CurrentType.FieldsDeclarations.Add(item.Name, fieldDeclaration);

                if (isStatic)
                {
                    this.CurrentType.StaticConfig.Fields.Add(new TypeConfigItem
                    {
                        Name           = item.Name,
                        Entity         = fieldDeclaration,
                        IsConst        = fieldDeclaration.HasModifier(Modifiers.Const),
                        VarInitializer = item,
                        Initializer    = initializer
                    });
                }
                else
                {
                    this.CurrentType.InstanceConfig.Fields.Add(new TypeConfigItem
                    {
                        Name           = item.Name,
                        Entity         = fieldDeclaration,
                        VarInitializer = item,
                        Initializer    = initializer
                    });
                }
            }
        }
Ejemplo n.º 13
0
        protected virtual IEnumerable <Syntax> TranslateFieldDeclaration(FieldDeclaration fieldDeclaration, ILTranslationContext data)
        {
            foreach (var v in fieldDeclaration.Variables)
            {
                var fd = new D.FieldDeclaration();
                fd.Accessibility = GetAccessibility(fieldDeclaration.Modifiers);
                fd.IsStatic      = fieldDeclaration.HasModifier(Modifiers.Static);
                fd.FieldName     = v.Name;
                fd.FieldType     = ResolveType(fieldDeclaration, fieldDeclaration.ReturnType);

                // TODO: initializer

                yield return(fd);
            }
        }
Ejemplo n.º 14
0
		static PropertyDeclaration GeneratePropertyDeclaration (RefactoringContext context, FieldDeclaration field, VariableInitializer initializer)
		{
			var mod = ICSharpCode.NRefactory.CSharp.Modifiers.Public;
			if (field.HasModifier (ICSharpCode.NRefactory.CSharp.Modifiers.Static))
				mod |= ICSharpCode.NRefactory.CSharp.Modifiers.Static;
			
			return new PropertyDeclaration () {
				Modifiers = mod,
				Name = context.GetNameProposal (initializer.Name, false),
				ReturnType = field.ReturnType.Clone (),
				Getter = new Accessor () {
					Body = new BlockStatement () {
						new ReturnStatement (new IdentifierExpression (initializer.Name))
					}
				}
			};
		}
            public override void VisitFieldDeclaration(FieldDeclaration fieldDeclaration)
            {
                base.VisitFieldDeclaration (fieldDeclaration);
                if (fieldDeclaration.HasModifier (Modifiers.Const))
                    return;
                var defaultValueExpr = GetDefaultValueExpression (fieldDeclaration.ReturnType);
                if (defaultValueExpr == null)
                    return;

                foreach (var variable1 in fieldDeclaration.Variables) {
                    var variable = variable1;
                    if (!defaultValueExpr.Match (variable.Initializer).Success)
                        continue;

                    AddIssue (variable.Initializer, ctx.TranslateString ("Remove redundant field initializer"),
                        script => script.Replace (variable, new VariableInitializer (variable.Name)));
                }
            }
Ejemplo n.º 16
0
		static PropertyDeclaration GeneratePropertyDeclaration (RefactoringContext context, FieldDeclaration field, string fieldName)
		{
			var mod = ICSharpCode.NRefactory.CSharp.Modifiers.Public;
			if (field.HasModifier (ICSharpCode.NRefactory.CSharp.Modifiers.Static))
				mod |= ICSharpCode.NRefactory.CSharp.Modifiers.Static;
			
			return new PropertyDeclaration () {
				Modifiers = mod,
				Name = context.GetNameProposal (fieldName, false),
				ReturnType = field.ReturnType.Clone (),
				Getter = new Accessor () {
					Body = new BlockStatement () {
						new ReturnStatement (new IdentifierExpression (fieldName))
					}
				},
				Setter = new Accessor () {
					Body = new BlockStatement () {
						new ExpressionStatement (new AssignmentExpression (new IdentifierExpression (fieldName), new IdentifierExpression ("value")))
					}
				}
			};
		}
Ejemplo n.º 17
0
        static PropertyDeclaration GeneratePropertyDeclaration(RefactoringContext context, FieldDeclaration field, VariableInitializer initializer)
        {
            var mod = ICSharpCode.NRefactory.Cpp.Modifiers.Public;

            if (field.HasModifier(ICSharpCode.NRefactory.Cpp.Modifiers.Static))
            {
                mod |= ICSharpCode.NRefactory.Cpp.Modifiers.Static;
            }

            return(new PropertyDeclaration()
            {
                Modifiers = mod,
                Name = context.GetNameProposal(initializer.Name, false),
                ReturnType = field.ReturnType.Clone(),
                Getter = new Accessor()
                {
                    Body = new BlockStatement()
                    {
                        new ReturnStatement(new IdentifierExpression(initializer.Name))
                    }
                }
            });
        }
Ejemplo n.º 18
0
        public override void VisitFieldDeclaration(FieldDeclaration fieldDeclaration)
        {
            bool isStatic = this.CurrentType.ClassType == ClassType.Enum
                || fieldDeclaration.HasModifier(Modifiers.Static)
                || fieldDeclaration.HasModifier(Modifiers.Const);

            foreach (var item in fieldDeclaration.Variables)
            {
                var rr = this.Resolver.ResolveNode(item, null) as MemberResolveResult;
                if (fieldDeclaration.HasModifier(Modifiers.Const) && rr != null && rr.Member.Attributes.Any(a => a.AttributeType.FullName == Bridge.Translator.Translator.Bridge_ASSEMBLY + ".InlineConstAttribute"))
                {
                    continue;
                }

                Expression initializer = item.Initializer;

                if (initializer.IsNull)
                {
                    if (this.CurrentType.ClassType == ClassType.Enum)
                    {
                        throw (EmitterException)this.CreateException(fieldDeclaration, "Enum items must be explicitly numbered");
                    }

                    initializer = this.GetDefaultFieldInitializer(fieldDeclaration.ReturnType);
                }

                this.CurrentType.FieldsDeclarations.Add(item.Name, fieldDeclaration);

                if (isStatic)
                {
                    this.CurrentType.StaticConfig.Fields.Add(new TypeConfigItem
                    {
                        Name = item.Name,
                        Entity = fieldDeclaration,
                        IsConst = fieldDeclaration.HasModifier(Modifiers.Const),
                        VarInitializer = item,
                        Initializer = initializer
                    });
                }
                else
                {
                    this.CurrentType.InstanceConfig.Fields.Add(new TypeConfigItem
                    {
                        Name = item.Name,
                        Entity = fieldDeclaration,
                        VarInitializer = item,
                        Initializer = initializer
                    });
                }
            }
        }
Ejemplo n.º 19
0
        public override void VisitFieldDeclaration(FieldDeclaration fieldDeclaration)
        {
            bool isStatic = this.CurrentType.ClassType == ClassType.Enum ||
                            fieldDeclaration.HasModifier(Modifiers.Static) ||
                            fieldDeclaration.HasModifier(Modifiers.Const);

            foreach (var item in fieldDeclaration.Variables)
            {
                var rr = this.Resolver.ResolveNode(item, null) as MemberResolveResult;
                if (fieldDeclaration.HasModifier(Modifiers.Const) && rr != null && rr.Member.Attributes.Any(a => a.AttributeType.FullName == Bridge.Translator.Translator.Bridge_ASSEMBLY + ".InlineConstAttribute"))
                {
                    continue;
                }

                Expression initializer = item.Initializer;

                if (initializer.IsNull)
                {
                    if (this.CurrentType.ClassType == ClassType.Enum)
                    {
                        throw (EmitterException)this.CreateException(fieldDeclaration, "Enum items must be explicitly numbered");
                    }

                    initializer = this.GetDefaultFieldInitializer(fieldDeclaration.ReturnType);
                }

                this.CurrentType.FieldsDeclarations.Add(item.Name, fieldDeclaration);

                string prefix          = SharpSixRewriter.AutoInitFieldPrefix;
                bool   autoInitializer = item.Name.StartsWith(prefix);
                string name            = autoInitializer ? item.Name.Substring(prefix.Length) : item.Name;

                if (isStatic)
                {
                    var collection = this.CurrentType.StaticConfig.Fields;
                    if (autoInitializer)
                    {
                        collection = this.CurrentType.StaticConfig.AutoPropertyInitializers;
                        var prop = this.CurrentType.StaticConfig.Properties.FirstOrDefault(p => p.Name == name);

                        if (prop == null)
                        {
                            prop = this.CurrentType.StaticConfig.Fields.FirstOrDefault(p => p.Name == name);
                        }

                        if (prop != null)
                        {
                            prop.Initializer = initializer;
                        }
                    }

                    collection.Add(new TypeConfigItem
                    {
                        Name           = name,
                        Entity         = fieldDeclaration,
                        IsConst        = fieldDeclaration.HasModifier(Modifiers.Const),
                        VarInitializer = item,
                        Initializer    = initializer
                    });
                }
                else
                {
                    var collection = this.CurrentType.InstanceConfig.Fields;
                    if (autoInitializer)
                    {
                        collection = this.CurrentType.InstanceConfig.AutoPropertyInitializers;
                        var prop = this.CurrentType.InstanceConfig.Properties.FirstOrDefault(p => p.Name == name);

                        if (prop == null)
                        {
                            prop = this.CurrentType.InstanceConfig.Fields.FirstOrDefault(p => p.Name == name);
                        }

                        if (prop != null)
                        {
                            prop.Initializer = initializer;
                        }
                    }

                    collection.Add(new TypeConfigItem
                    {
                        Name           = name,
                        Entity         = fieldDeclaration,
                        VarInitializer = item,
                        Initializer    = initializer
                    });
                }

                if (OverloadsCollection.NeedCreateAlias(rr))
                {
                    var config = isStatic
                    ? CurrentType.StaticConfig
                    : CurrentType.InstanceConfig;
                    config.Alias.Add(new TypeConfigItem {
                        Entity = fieldDeclaration, VarInitializer = item
                    });
                }
            }
        }
Ejemplo n.º 20
0
        public override void VisitFieldDeclaration(FieldDeclaration fieldDeclaration)
        {
            bool isStatic = this.CurrentType.ClassType == ClassType.Enum
                || fieldDeclaration.HasModifier(Modifiers.Static)
                || fieldDeclaration.HasModifier(Modifiers.Const);

            foreach (var item in fieldDeclaration.Variables)
            {
                Expression initializer = item.Initializer;

                if (initializer.IsNull)
                {
                    if (this.CurrentType.ClassType == ClassType.Enum)
                    {
                        throw (Exception)this.CreateException(fieldDeclaration, "Enum items must be explicitly numbered");
                    }

                    initializer = this.GetDefaultFieldInitializer(fieldDeclaration.ReturnType);
                }

                this.CurrentType.FieldsDeclarations.Add(item.Name, fieldDeclaration);

                if (isStatic)
                {
                    this.CurrentType.StaticConfig.Fields.Add(new TypeConfigItem
                    {
                        Name = item.Name,
                        Entity = fieldDeclaration,
                        IsConst = fieldDeclaration.HasModifier(Modifiers.Const),
                        VarInitializer = item,
                        Initializer = initializer
                    });
                    }
                    else
                    {
                    this.CurrentType.InstanceConfig.Fields.Add(new TypeConfigItem
                {
                        Name = item.Name,
                        Entity = fieldDeclaration,
                        VarInitializer = item,
                        Initializer = initializer
                    });
                }
            }
        }