示例#1
0
        public PostfixTemplateBehavior CreateBehavior(PostfixTemplateInfo info)
        {
            if (info.Target == PostfixTemplateTarget.TypeUsage)
            {
                return(new CSharpPostfixObjectCreationTypeUsageBehavior(info));
            }

            return(new CSharpPostfixObjectCreationExpressionBehavior(info));
        }
示例#2
0
        public PostfixTemplateBehavior CreateBehavior(PostfixTemplateInfo info)
        {
            if (info.Target == PostfixTemplateTarget.TypeUsage)
            {
                return(new CSharpPostfixThrowStatementByTypeUsageBehavior(info));
            }

            return(new CSharpPostfixThrowStatementBehavior(info));
        }
        public PostfixTemplateBehavior CreateBehavior(PostfixTemplateInfo info)
        {
            if (info.Target == PostfixTemplateTarget.Statement)
            {
                return(new CSharpPostfixForEachStatementBehavior(info));
            }

            return(new CSharpPostfixForEachExpressionBehavior(info));
        }
        public PostfixTemplateBehavior CreateBehavior(PostfixTemplateInfo info)
        {
            var checkForNullInfo = (CheckForNullPostfixTemplateInfo)info;

            if (checkForNullInfo.Target == PostfixTemplateTarget.Statement)
            {
                return(new CSharpPostfixCheckForNullStatementBehavior(checkForNullInfo));
            }

            return(new CSharpPostfixCheckForNullExpressionBehavior(checkForNullInfo));
        }
示例#5
0
        public PostfixTemplateBehavior CreateBehavior(PostfixTemplateInfo info)
        {
            switch (info.Target)
            {
            case PostfixTemplateTarget.TypeUsage:
                return(new CSharpPostfixIntroduceVariableFromTypeUsageBehavior(info));

            case PostfixTemplateTarget.Statement:
                return(new CSharpPostfixIntroduceVariableIsStatementBehavior(info));

            case PostfixTemplateTarget.Expression:
                return(new CSharpPostfixIntroduceVariableInExpressionBehavior(info));

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
示例#6
0
        public PostfixTemplateInfo TryCreateInfo(CSharpPostfixTemplateContext context)
        {
            var expressionContext = context.TypeExpression ?? context.OuterExpression;

            if (expressionContext == null || !expressionContext.CanBeStatement)
            {
                return(null);
            }

            var expression = expressionContext.Expression;

            var referencedType = expressionContext.ReferencedType;

            if (referencedType != null) // 'Exception.throw' case
            {
                if (context.IsPreciseMode && !IsInstantiableExceptionType(referencedType, expression))
                {
                    return(null);
                }

                return(new PostfixTemplateInfo("throw", expressionContext, target: PostfixTemplateTarget.TypeUsage));
            }

            bool needFixWithNew;

            if (CheckExpressionType(expressionContext, out needFixWithNew) || !context.IsPreciseMode)
            {
                var reference = expressionContext.Expression as IReferenceExpression;
                if (reference != null && CSharpPostfixUtis.IsReferenceExpressionsChain(reference))
                {
                    return(new PostfixTemplateInfo("throw", expressionContext, target: PostfixTemplateTarget.TypeUsage));
                }

                var info = new PostfixTemplateInfo("throw", expressionContext);
                if (needFixWithNew)
                {
                    info.PutData(NeedFixWithNewKey, info);
                }
                return(info);
            }

            return(null);
        }
示例#7
0
 public override PostfixTemplateBehavior CreateBehavior(PostfixTemplateInfo info)
 {
     return(new CSharpPostfixWhileStatementBehavior(info));
 }
 public SamplePostfixBehavior([NotNull] PostfixTemplateInfo info)
     : base(info)
 {
 }
 public override PostfixTemplateBehavior CreateBehavior(PostfixTemplateInfo info)
 {
     return(new SamplePostfixBehavior(info));
 }
示例#10
0
 public CSharpPostfixIntroduceVariableFromTypeUsageBehavior([NotNull] PostfixTemplateInfo info) : base(info)
 {
 }
示例#11
0
 public CSharpPostfixInvertedIfStatementBehavior([NotNull] PostfixTemplateInfo info) : base(info)
 {
 }
示例#12
0
 public CSharpPostfixThrowStatementByTypeUsageBehavior([NotNull] PostfixTemplateInfo info) : base(info)
 {
 }
 public CSharpPostfixNegationBehavior([NotNull] PostfixTemplateInfo info) : base(info)
 {
 }
 public CSharpPostfixParseExpressionBehavior([NotNull] PostfixTemplateInfo info, bool isTryParse) : base(info)
 {
   myIsTryParse = isTryParse;
 }
 public PostfixTemplateBehavior CreateBehavior(PostfixTemplateInfo info)
 {
   return new CSharpPostfixParseExpressionBehavior(info, IsTryParse);
 }
 PostfixTemplateBehavior IPostfixTemplate <CSharpPostfixTemplateContext> .CreateBehavior(PostfixTemplateInfo info)
 {
     return(CreateBehavior((IntroduceMemberPostfixTemplateInfo)info));
 }
示例#17
0
 public abstract PostfixTemplateBehavior CreateBehavior(PostfixTemplateInfo info);
示例#18
0
 public CSharpPostfixObjectCreationExpressionBehavior([NotNull] PostfixTemplateInfo info) : base(info)
 {
 }
示例#19
0
 public CSharpPostfixObjectCreationTypeUsageBehavior([NotNull] PostfixTemplateInfo info) : base(info)
 {
 }
示例#20
0
 public PostfixTemplateBehavior CreateBehavior(PostfixTemplateInfo info)
 {
     return(new CSharpPostfixUsingStatementBehavior((PostfixUsingTemplateInfo)info));
 }
 public override PostfixTemplateBehavior CreateBehavior(PostfixTemplateInfo info)
 {
     return(new CSharpPostfixNegationBehavior(info));
 }
示例#22
0
 public PostfixTemplateBehavior CreateBehavior(PostfixTemplateInfo info)
 {
     return(new CSharpPostfixAwaitExpressionBehavior(info));
 }
 public ResultPostfixBehavior([NotNull] PostfixTemplateInfo info)
     : base(info)
 {
 }
 public PostfixTemplateBehavior CreateBehavior(PostfixTemplateInfo info)
 {
     return(new CSharpPostfixLockStatementBehavior(info));
 }
示例#25
0
 public CSharpPostfixParenthsizedExpressionBehavior([NotNull] PostfixTemplateInfo info) : base(info)
 {
 }
示例#26
0
 public PostfixTemplatePresentation([NotNull] PostfixTemplateInfo info)
 {
     myDisplayName = info.Text.ToLowerInvariant();
 }
示例#27
0
 public CSharpPostfixAwaitExpressionBehavior([NotNull] PostfixTemplateInfo info) : base(info)
 {
 }
示例#28
0
 public CSharpPostfixIntroduceVariableInExpressionBehavior([NotNull] PostfixTemplateInfo info) : base(info)
 {
 }
 public CSharpPostfixLockStatementBehavior([NotNull] PostfixTemplateInfo info) : base(info)
 {
 }
示例#30
0
 public CSharpPostfixIntroduceVariableIsStatementBehavior([NotNull] PostfixTemplateInfo info) : base(info)
 {
 }