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 }); } }
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; }
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); }
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; }
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; }
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"))) } } }); }
public override void VisitFieldDeclaration(FieldDeclaration fieldDeclaration) { if (fieldDeclaration.HasModifier(Modifiers.Static)) { CheckDependency(fieldDeclaration.ReturnType); base.VisitFieldDeclaration(fieldDeclaration); } }
public override void VisitFieldDeclaration(FieldDeclaration fieldDeclaration) { if (fieldDeclaration.HasModifier(Modifiers.Static)) { this.CheckDependency(fieldDeclaration.ReturnType); base.VisitFieldDeclaration(fieldDeclaration); } }
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 }); } } }
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); } }
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))); } }
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"))) } } }; }
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)) } } }); }
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 }); } } }