示例#1
0
        protected override void AddCodeMarkers(FileModel fileModel)
        {
            Dictionary <IMemberDeclaration, List <IVariableDeclaration> > variableDeclarations = new Dictionary <IMemberDeclaration, List <IVariableDeclaration> >();

            foreach (IVariableDeclaration variable in fileModel.All <IVariableDeclaration>().Where(v => v.ExistsTextuallyInFile))
            {
                IMemberDeclaration member = variable.EnclosingMember();
                if (member.ExistsTextuallyInFile)
                {
                    if (!variableDeclarations.ContainsKey(member))
                    {
                        variableDeclarations[member] = new List <IVariableDeclaration>();
                    }
                    variableDeclarations[member].Add(variable);
                }
            }

            foreach (KeyValuePair <IMemberDeclaration, List <IVariableDeclaration> > pair in variableDeclarations)
            {
                if (pair.Value.Count > 64)
                {
                    pair.Key.AddCodeMarker(CodeMarkerId, this);
                }
            }
        }
        public override void Execute(SolutionModel solutionModel, SelectionContext context)
        {
            FileModel fileModel;
            CodeSpan  selection;

            if (!solutionModel.IsEditorSelection(context, out fileModel, out selection))
            {
                return;
            }

            IMemberDeclaration memberDeclaration = fileModel.InnerMost <IMemberDeclaration>(selection);

            if (memberDeclaration.ExistsTextuallyInFile && !memberDeclaration.Identifier.CodeSpan.Intersects(selection))
            {
                memberDeclaration.Identifier.Select();
            }
            else
            {
                ITypeDeclaration typeDeclaration = fileModel.InnerMost <ITypeDeclaration>(selection);

                if (typeDeclaration.ExistsTextuallyInFile)
                {
                    NavigateToTypeDeclaration(typeDeclaration, selection);
                }
            }
        }
示例#3
0
        protected string GetContextString()
        {
            IMemberDeclaration imd = FindAncestor <IMemberDeclaration>();

            if (imd == null)
            {
                return("");
            }
            return(imd.ToString());
        }
 private bool AreAllEnclosingClassesPublic(IMemberDeclaration memberDeclaration)
 {
     IClassDeclaration enclosingTypeDeclaration = memberDeclaration.EnclosingClass;
     bool isEnclosingClassPublic = enclosingTypeDeclaration.IsPublic();
     while (isEnclosingClassPublic && enclosingTypeDeclaration.EnclosingClass.Exists)
     {
         enclosingTypeDeclaration = enclosingTypeDeclaration.EnclosingClass;
         isEnclosingClassPublic = enclosingTypeDeclaration.IsPublic();
     }
     return isEnclosingClassPublic;
 }
示例#5
0
        private bool AreAllEnclosingClassesPublic(IMemberDeclaration memberDeclaration)
        {
            IClassDeclaration enclosingTypeDeclaration = memberDeclaration.EnclosingClass;
            bool isEnclosingClassPublic = enclosingTypeDeclaration.IsPublic();

            while (isEnclosingClassPublic && enclosingTypeDeclaration.EnclosingClass.Exists)
            {
                enclosingTypeDeclaration = enclosingTypeDeclaration.EnclosingClass;
                isEnclosingClassPublic   = enclosingTypeDeclaration.IsPublic();
            }
            return(isEnclosingClassPublic);
        }
示例#6
0
        public override bool CanExecute(SolutionModel solutionModel, SelectionContext context)
        {
            FileModel fileModel;
            CodeSpan  selection;

            if (!solutionModel.IsEditorSelection(context, out fileModel, out selection))
            {
                return(false);
            }

            IMemberDeclaration member = fileModel.InnerMost <IMemberDeclaration>(selection);

            return(member.ExistsTextuallyInFile && member.Identifier.CodeSpan.Intersects(selection));
        }
            private IAssembly GetCurrentAssembly()
            {
                IAssembly assembly = this.assemblyBrowser.ActiveItem as IAssembly;

                if (assembly != null)
                {
                    return(assembly);
                }

                IModule module = this.assemblyBrowser.ActiveItem as IModule;

                if (module != null)
                {
                    return(module.Assembly);
                }

                ITypeReference typeReference = this.assemblyBrowser.ActiveItem as ITypeReference;

                if (typeReference != null)
                {
                    IModule declaringModule = GetModule(typeReference);
                    if (declaringModule != null)
                    {
                        return(declaringModule.Assembly);
                    }
                }

                IMemberDeclaration memberDeclaration = this.assemblyBrowser.ActiveItem as IMemberDeclaration;

                if (memberDeclaration != null)
                {
                    ITypeReference declaringType = memberDeclaration.DeclaringType as ITypeReference;
                    if (declaringType != null)
                    {
                        IModule declaringModule = GetModule(declaringType);
                        if (declaringModule != null)
                        {
                            return(declaringModule.Assembly);
                        }
                    }
                }

                return(null);
            }
示例#8
0
        public override void Execute(SolutionModel solutionModel, SelectionContext context)
        {
            FileModel fileModel;
            CodeSpan  selection;

            if (!solutionModel.IsEditorSelection(context, out fileModel, out selection))
            {
                return;
            }

            IMemberDeclaration memberDeclaration = fileModel.InnerMost <IMemberDeclaration>(selection);

            if (memberDeclaration.ExistsTextuallyInFile)
            {
                IMemberDeclaration nextMember = memberDeclaration.NextMember();
                if (nextMember.ExistsTextuallyInFile)
                {
                    nextMember.Identifier.NavigateTo();
                }
            }
        }
        private IExpression ConvertExternalVariableExpr(IMemberDeclaration externalDecl, string name, IType type)
        {
            foreach (var paramDecl in parameters)
            {
                if (paramDecl.Name == name && paramDecl.ParameterType.Equals(type))
                {
                    return(Builder.ParamRef(paramDecl));
                }
            }

            IVariableDeclaration varDecl;

            if (conversions.TryGetValue(externalDecl, out varDecl))
            {
                return(Builder.VarRefExpr(Builder.VarRef(varDecl)));
            }

            varDecl = Builder.VarDecl(name, type);
            conversions[externalDecl] = varDecl;
            context.AddStatementBeforeCurrent(Builder.ExprStatement(Builder.VarDeclExpr(varDecl)));
            return(Builder.VarRefExpr(Builder.VarRef(varDecl)));
        }
        public override bool CanExecute(SolutionModel solutionModel, SelectionContext context)
        {
            FileModel fileModel;
            CodeSpan  selection;

            if (!solutionModel.IsEditorSelection(context, out fileModel, out selection))
            {
                return(false);
            }

            IMemberDeclaration memberDeclaration = fileModel.InnerMost <IMemberDeclaration>(selection);

            if (memberDeclaration.ExistsTextuallyInFile && !memberDeclaration.Identifier.CodeSpan.Intersects(selection))
            {
                return(memberDeclaration.Is <IMethodDeclaration>() || memberDeclaration.Is <IPropertyDeclaration>() ||
                       memberDeclaration.Is <IConstructorDeclaration>() || memberDeclaration.Is <IStaticConstructorDeclaration>());
            }
            else
            {
                return(fileModel.InnerMost <ITypeDeclaration>(selection).ExistsTextuallyInFile);
            }
        }
 public static IMemberDeclaration PreviousMember(this IMemberDeclaration declaration)
 {
     return(declaration.EnclosingClass.ContainedMembers().Where(x => x.CodeSpan.StartLocation < declaration.CodeSpan.StartLocation).Last());
 }
示例#12
0
        private void GenerateDocumentation(IMemberDeclaration memberDeclaration)
        {
            DocCommentInfo documentation = DocCommentFactory.GenerateDocCommentInfo(memberDeclaration);

            memberDeclaration.DocComment = memberDeclaration.Language.DocComment(documentation.ToString());
        }
 private void GenerateDocumentation(IMemberDeclaration memberDeclaration)
 {
     DocCommentInfo documentation = DocCommentFactory.GenerateDocCommentInfo(memberDeclaration);
     memberDeclaration.DocComment = memberDeclaration.Language.DocComment(documentation.ToString());
 }
 public static IObjExpr GetByMember(IMemberDeclaration param) =>
 GetByMemberDeclaration(param) ?? GetByInterfaceMember(param);
 public static IMemberDeclaration NextMember(this IMemberDeclaration declaration)
 {
     return(declaration.EnclosingClass.ContainedMembers().Where(x => x.IdentifierCodeSpan().StartLocation > declaration.IdentifierCodeSpan().StartLocation).First());
 }
示例#16
0
 public virtual void CloseMember(IMemberDeclaration imd)
 {
     Close(imd);
     CloseOutput(imd);
 }
示例#17
0
 public virtual void AddMember(IMemberDeclaration imd)
 {
     AddOutput(imd);
 }
示例#18
0
 public virtual void OpenMember(IMemberDeclaration imd)
 {
     Open(imd);
     OpenOutput();
 }
示例#19
0
 public override void VisitMemberDeclaration(IMemberDeclaration decl)
 {
     Builder.AddDeclaredMemberName(decl.CompiledName);
 }
示例#20
0
 protected override void InitializeForCodeGeneration()
 {
     base.InitializeForCodeGeneration();
     NodeType = NodeType.None;
     Instance = default(Formula);
     Member = default(IMemberDeclaration);
 }