Esempio n. 1
0
        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);
     }
 }
Esempio n. 3
0
 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);
 }
Esempio n. 4
0
 public FindMemberAstVisitor(Mono.TextEditor.Document document, NRefactoryResolver resolver, MonoDevelop.Projects.Dom.INode searchedMember)
 {
     fileName  = document.FileName;
     this.text = document;
     Init(resolver, searchedMember);
 }
Esempio n. 5
0
        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));
            }
        }