void Init(NRefactoryResolver resolver, MonoDevelop.Projects.Dom.INode searchedMember) { this.resolver = resolver; if (searchedMember is IMember) { searchedMember = GetUnderlyingMember((IMember)searchedMember); } this.searchedMember = searchedMember; this.IncludeXmlDocumentation = false; if (searchedMember is IMethod) { IMethod method = (IMethod)searchedMember; this.searchedMemberName = method.IsConstructor ? method.DeclaringType.Name : method.Name; this.searchedMemberLocation = method.Location; if (method.DeclaringType != null && method.DeclaringType.CompilationUnit != null) { this.searchedMemberFile = method.DeclaringType.CompilationUnit.FileName; } } else if (searchedMember is IMember) { this.searchedMemberName = ((IMember)searchedMember).Name; this.searchedMemberLocation = ((IMember)searchedMember).Location; if (searchedMember is IType) { this.searchedMemberFile = ((IType)searchedMember).CompilationUnit.FileName; } else { if (((IMember)searchedMember).DeclaringType != null && ((IMember)searchedMember).DeclaringType.CompilationUnit != null) { this.searchedMemberFile = ((IMember)searchedMember).DeclaringType.CompilationUnit.FileName; } } } else if (searchedMember is IParameter) { this.searchedMemberName = ((IParameter)searchedMember).Name; this.searchedMemberLocation = ((IParameter)searchedMember).Location; if (((IParameter)searchedMember).DeclaringMember.DeclaringType.CompilationUnit != null) { this.searchedMemberFile = ((IParameter)searchedMember).DeclaringMember.DeclaringType.CompilationUnit.FileName; } } else if (searchedMember != null) { this.searchedMemberName = ((LocalVariable)searchedMember).Name; this.searchedMemberLocation = ((LocalVariable)searchedMember).Region.Start; if (((LocalVariable)searchedMember).CompilationUnit != null) { this.searchedMemberFile = ((LocalVariable)searchedMember).CompilationUnit.FileName; } } }
public FindMemberAstVisitor(Mono.TextEditor.Document document, MonoDevelop.Projects.Dom.INode searchedMember = null) { fileName = document.FileName; this.text = document; if (searchedMember != null) { Init(searchedMember); } }
public FindMemberAstVisitor(NRefactoryResolver resolver, IEditableTextFile file, MonoDevelop.Projects.Dom.INode searchedMember) { fileName = file.Name; text = new Mono.TextEditor.Document(); text.Text = file.Text; Init(resolver, searchedMember); }
public FindMemberAstVisitor(Mono.TextEditor.Document document, NRefactoryResolver resolver, MonoDevelop.Projects.Dom.INode searchedMember) { fileName = document.FileName; this.text = document; Init(resolver, searchedMember); }
public override ValidationResult ValidateName(MonoDevelop.Projects.Dom.INode visitable, string name) { if (string.IsNullOrEmpty(name)) { return(ValidationResult.CreateError(GettextCatalog.GetString("Name must not be empty."))); } int token = ICSharpCode.OldNRefactory.Parser.CSharp.Keywords.GetToken(name); if (token >= ICSharpCode.OldNRefactory.Parser.CSharp.Tokens.Abstract) { return(ValidationResult.CreateError(GettextCatalog.GetString("Name can't be a keyword."))); } char startChar = name[0]; if (!Char.IsLetter(startChar) && startChar != '_') { return(ValidationResult.CreateError(GettextCatalog.GetString("Name must start with a letter or '_'"))); } for (int i = 1; i < name.Length; i++) { char ch = name[i]; if (!Char.IsLetterOrDigit(ch) && ch != '_') { return(ValidationResult.CreateError(GettextCatalog.GetString("Name can only contain letters, digits and '_'"))); } } if (visitable is LocalVariable) { if (Char.IsUpper(startChar)) { return(ValidationResult.CreateWarning(GettextCatalog.GetString("Local variables shouldn't start with upper case"))); } return(ValidationResult.Valid); } if (visitable is IParameter) { if (Char.IsUpper(startChar)) { return(ValidationResult.CreateWarning(GettextCatalog.GetString("Parameters shouldn't start with upper case"))); } return(ValidationResult.Valid); } if (visitable is IField) { IField field = (IField)visitable; if (!field.IsConst && !field.IsStatic && !field.IsReadonly && Char.IsUpper(startChar)) { return(ValidationResult.CreateWarning(GettextCatalog.GetString("Fields shouldn't start with upper case"))); } return(ValidationResult.Valid); } if (visitable is IType) { IType type = (IType)visitable; if (type.ClassType == ClassType.Interface && startChar != 'I') { return(ValidationResult.CreateWarning(GettextCatalog.GetString("Interfaces should always start with 'I'"))); } if (!Char.IsUpper(startChar)) { return(ValidationResult.CreateWarning(GettextCatalog.GetString("Types should always start with upper case"))); } return(ValidationResult.Valid); } if (visitable is IMethod) { if (!Char.IsUpper(startChar)) { return(ValidationResult.CreateWarning(GettextCatalog.GetString("Methods should always start with upper case"))); } return(ValidationResult.Valid); } if (visitable is IProperty) { IProperty prop = (IProperty)visitable; if (!prop.IsIndexer && !Char.IsUpper(startChar)) { return(ValidationResult.CreateWarning(GettextCatalog.GetString("Properties should always start with upper case"))); } return(ValidationResult.Valid); } if (visitable is IEvent) { if (!Char.IsUpper(startChar)) { return(ValidationResult.CreateWarning(GettextCatalog.GetString("Events should always start with upper case"))); } return(ValidationResult.Valid); } return(ValidationResult.Valid); }
public void Init(IEnumerable <MonoDevelop.Projects.Dom.INode> members) { if (members == null) { return; } foreach (var member in members) { MonoDevelop.Projects.Dom.INode searchedMember = null; string SearchedMemberName = null; string searchedMemberFile = null; DomLocation searchedMemberLocation = DomLocation.Empty; if (member is IMember) { searchedMember = GetUnderlyingMember((IMember)member); } else { searchedMember = member; } this.IncludeXmlDocumentation = false; if (searchedMember is IMethod) { IMethod method = (IMethod)searchedMember; SearchedMemberName = method.IsConstructor ? method.DeclaringType.Name : method.Name; searchedMemberLocation = method.Location; if (method.DeclaringType != null && method.DeclaringType.CompilationUnit != null) { searchedMemberFile = method.DeclaringType.CompilationUnit.FileName; } } else if (searchedMember is IMember) { SearchedMemberName = ((IMember)searchedMember).Name; searchedMemberLocation = ((IMember)searchedMember).Location; if (searchedMember is IType) { var unit = ((IType)searchedMember).CompilationUnit; if (unit != null) { searchedMemberFile = unit.FileName; } else { LoggingService.LogWarning(members + " has no compilation unit."); } } else { if (((IMember)searchedMember).DeclaringType != null && ((IMember)searchedMember).DeclaringType.CompilationUnit != null) { searchedMemberFile = ((IMember)searchedMember).DeclaringType.CompilationUnit.FileName; } } } else if (searchedMember is IParameter) { SearchedMemberName = ((IParameter)searchedMember).Name; searchedMemberLocation = ((IParameter)searchedMember).Location; if (((IParameter)searchedMember).DeclaringMember.DeclaringType.CompilationUnit != null) { searchedMemberFile = ((IParameter)searchedMember).DeclaringMember.DeclaringType.CompilationUnit.FileName; } } else if (members != null) { SearchedMemberName = ((LocalVariable)searchedMember).Name; searchedMemberLocation = ((LocalVariable)searchedMember).Region.Start; if (((LocalVariable)searchedMember).CompilationUnit != null) { searchedMemberFile = ((LocalVariable)searchedMember).CompilationUnit.FileName; } } searchedMembers.Add(Tuple.Create(searchedMember, SearchedMemberName, searchedMemberFile, searchedMemberLocation)); } }