protected override IEnumerable <IHighlighting> DoRun(IInvocationExpression invocationExpression,
                                                             ContractRequires contractAssertion,
                                                             MemberWithAccess preconditionContainer)
        {
            var preconditionException =
                contractAssertion.GenericArgumentDeclaredType
                .With(x => x.Resolve())
                .With(x => x.DeclaredElement as IClass);

            if (preconditionException != null)
            {
                if (ExceptionIsLessVisible(preconditionContainer, preconditionException))
                {
                    yield return
                        (new RequiresExceptionInconsistentVisibiityHighlighting(invocationExpression, preconditionException,
                                                                                preconditionContainer));
                }

                if (DoesntHaveAppropriateConstructor(preconditionException))
                {
                    yield return(new RequiresExceptionValidityHighlighting(invocationExpression, preconditionException, preconditionContainer));
                }
            }

            if (!MessageIsAppropriateForContractRequires(contractAssertion.Message))
            {
                yield return(new InvalidRequiresMessageHighlighting(invocationExpression, contractAssertion.Message));
            }
        }
예제 #2
0
 protected override IEnumerable <IHighlighting> DoRun(IInvocationExpression invocationExpression,
                                                      ContractRequires contractAssertion, MemberWithAccess preconditionContainer)
 {
     Contract.Requires(invocationExpression != null);
     Contract.Requires(contractAssertion != null);
     Contract.Requires(preconditionContainer != null);
     Contract.Ensures(Contract.Result <IEnumerable <IHighlighting> >() != null);
     throw new System.NotImplementedException();
 }
예제 #3
0
 protected abstract IEnumerable <IHighlighting> DoRun(IInvocationExpression invocationExpression,
                                                      ContractRequires contractAssertion,
                                                      MemberWithAccess preconditionContainer);