Esempio n. 1
0
        public virtual JetBrains.ReSharper.Plugins.Yaml.Psi.Tree.IDocumentBody SetBody(JetBrains.ReSharper.Plugins.Yaml.Psi.Tree.IDocumentBody param)
        {
            using (JetBrains.ReSharper.Resources.Shell.WriteLockCookie.Create(this.IsPhysical()))
            {
                JetBrains.ReSharper.Psi.Tree.ITreeNode current = null, next = GetNextFilteredChild(current);
                JetBrains.ReSharper.Plugins.Yaml.Psi.Tree.IDocumentBody result = null;

                next = GetNextFilteredChild(current);
                if (next != null && next.NodeType == JetBrains.ReSharper.Plugins.Yaml.Psi.Tree.Impl.ElementType.DIRECTIVES)
                {
                    next = GetNextFilteredChild(current);
                    if (next != null && next.NodeType == JetBrains.ReSharper.Plugins.Yaml.Psi.Tree.Impl.ElementType.DIRECTIVES)
                    {
                        current = next;
                    }
                    else
                    {
                        return(result);
                    }
                }

                next = GetNextFilteredChild(current);
                if (next == null)
                {
                    if (param == null)
                    {
                        return(null);
                    }
                    current = result = JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.ModificationUtil.AddChildAfter(this, current, param);
                }
                else if (next.NodeType == JetBrains.ReSharper.Plugins.Yaml.Psi.Tree.Impl.ElementType.DOCUMENT_BODY)
                {
                    if (param != null)
                    {
                        current = result = JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.ModificationUtil.ReplaceChild(next, param);
                    }
                    else
                    {
                        JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.ModificationUtil.DeleteChild(next);
                    }
                }
                else
                {
                    if (param == null)
                    {
                        return(null);
                    }
                    result  = JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.ModificationUtil.AddChildBefore(next, param);
                    current = next;
                }

                return(result);
            }
        }
Esempio n. 2
0
 public virtual void VisitNode([JetBrains.Annotations.NotNull] JetBrains.ReSharper.Psi.Tree.ITreeNode node, TContext context)
 {
 }
        public void ProcessAfterInterior([NotNull] JetBrains.ReSharper.Psi.Tree.ITreeNode element)
        {
            var callbackInvocationExpression = element as IInvocationExpression;

            if (callbackInvocationExpression == null || !callbackInvocationExpression.IsMoqCallbackMethod())
            {
                return;
            }
            var invokedExpression = callbackInvocationExpression.InvokedExpression as IReferenceExpression;

            if (invokedExpression == null)
            {
                return;
            }
            var setupOrReturnInvocationExpression = invokedExpression.QualifierExpression as IInvocationExpression;
            IInvocationExpression setupInvocationExpression;

            if (setupOrReturnInvocationExpression.IsMoqSetupMethod())
            {
                setupInvocationExpression = setupOrReturnInvocationExpression;
            }
            else if (setupOrReturnInvocationExpression.IsMoqReturnsMethod())
            {
                var invokedExpression2 = setupOrReturnInvocationExpression.InvokedExpression as IReferenceExpression;
                if (invokedExpression2 == null)
                {
                    return;
                }
                setupInvocationExpression = invokedExpression2.QualifierExpression as IInvocationExpression;
            }
            else
            {
                return;
            }
            var targetMethod = setupInvocationExpression.GetMockedMethodFromSetupMethod();

            if (targetMethod == null)
            {
                return;
            }
            var callbackArguments = callbackInvocationExpression.ArgumentList.Arguments;

            if (callbackArguments.Count != 1)
            {
                return;
            }
            var callbackLambdaExpression = callbackArguments[0].Value as ILambdaExpression;

            if (callbackLambdaExpression == null)
            {
                return;
            }
            var callbackLambdaParameterDeclarations = callbackLambdaExpression.ParameterDeclarations;

            if (targetMethod.Item1.Parameters.Count != callbackLambdaParameterDeclarations.Count)
            {
                _highlights.Add(new HighlightingInfo(callbackInvocationExpression.ArgumentList.GetHighlightingRange(), new AgentZorgeHighlighting(callbackInvocationExpression, string.Format("Invalid number of parameters in Callback method. Expected: {0}. Found: {1}.", targetMethod.Item1.Parameters.Count, callbackLambdaParameterDeclarations.Count))));
            }
            else
            {
                var targetTypeNames    = new List <string>();
                var usedTypeNames      = new List <string>();
                var typesAreCompatible = true;
                for (int i = 0; i < targetMethod.Item1.Parameters.Count; i++)
                {
                    var targetParameter         = targetMethod.Item1.Parameters[i];
                    var targetParameterTypeName = targetMethod.Item2 == null?targetParameter.Type.GetLongPresentableName(CSharpLanguage.Instance) : targetMethod.Item2.Apply(targetParameter.Type).GetLongPresentableName(CSharpLanguage.Instance);

                    var callbackLambdaParameterTypeName = callbackLambdaParameterDeclarations[i].DeclaredElement.Type.GetLongPresentableName(CSharpLanguage.Instance);
                    targetTypeNames.Add(targetParameterTypeName);
                    usedTypeNames.Add(callbackLambdaParameterTypeName);
                    if (targetParameterTypeName != callbackLambdaParameterTypeName)
                    {
                        typesAreCompatible = false;
                    }
                }
                if (!typesAreCompatible)
                {
                    var tooltip = string.Format("Incompatible parameter types in Callback method: Expected: ({0}). Found: ({1}).", string.Join(", ", targetTypeNames), string.Join(", ", usedTypeNames));
                    _highlights.Add(new HighlightingInfo(callbackInvocationExpression.ArgumentList.GetHighlightingRange(), new AgentZorgeHighlighting(callbackInvocationExpression, tooltip)));
                }
            }
        }
 public bool InteriorShouldBeProcessed([NotNull] JetBrains.ReSharper.Psi.Tree.ITreeNode element)
 {
     return(true);
 }
 public void ProcessBeforeInterior([NotNull] JetBrains.ReSharper.Psi.Tree.ITreeNode element)
 {
 }
Esempio n. 6
0
 public void OnPsiChange(JetBrains.ReSharper.Psi.Tree.ITreeNode elementContainingChanges, PsiChangedElementType type)
 {
     if (elementContainingChanges != null)
     {
     }
 }
 public virtual TReturn VisitNode([JetBrains.Annotations.NotNull] JetBrains.ReSharper.Psi.Tree.ITreeNode node, TContext context)
 {
     return(default(TReturn));
 }