public ExpressionCodeGenerator(
     InsertionPoint insertionPoint,
     SelectionResult selectionResult,
     AnalyzerResult analyzerResult) :
     base(insertionPoint, selectionResult, analyzerResult)
 {
 }
 public ExpressionCodeGenerator(
     InsertionPoint insertionPoint,
     SelectionResult selectionResult,
     AnalyzerResult analyzerResult) :
     base(insertionPoint, selectionResult, analyzerResult)
 {
 }
 public SingleStatementCodeGenerator(
     InsertionPoint insertionPoint,
     SelectionResult selectionResult,
     AnalyzerResult analyzerResult) :
     base(insertionPoint, selectionResult, analyzerResult)
 {
 }
コード例 #4
0
 public MultipleStatementsCodeGenerator(
     InsertionPoint insertionPoint,
     SelectionResult selectionResult,
     AnalyzerResult analyzerResult) :
     base(insertionPoint, selectionResult, analyzerResult)
 {
 }
コード例 #5
0
        protected override async Task <InsertionPoint> GetInsertionPointAsync(SemanticDocument document, int position, CancellationToken cancellationToken)
        {
            //Contract.ThrowIfFalse(position >= 0);

            var root = await document.Document.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false);

            var basePosition = root.FindToken(position);

            var memberNode = basePosition.GetAncestor <MemberDeclarationSyntax>();
//            Contract.ThrowIfNull(memberNode);
//            Contract.ThrowIfTrue(memberNode.Kind() == SyntaxKind.NamespaceDeclaration);

            var globalStatement = memberNode as GlobalStatementSyntax;

            if (globalStatement != null)
            {
                // check whether we are extracting whole global statement out
                if (this.OriginalSelectionResult.FinalSpan.Contains(memberNode.Span))
                {
                    return(await InsertionPoint.CreateAsync(document, globalStatement.Parent, cancellationToken).ConfigureAwait(false));
                }

                return(await InsertionPoint.CreateAsync(document, globalStatement.Statement, cancellationToken).ConfigureAwait(false));
            }

            return(await InsertionPoint.CreateAsync(document, memberNode, cancellationToken).ConfigureAwait(false));
        }
            public static async Task <GeneratedCode> GenerateAsync(
                InsertionPoint insertionPoint,
                SelectionResult selectionResult,
                AnalyzerResult analyzerResult,
                CancellationToken cancellationToken)
            {
                var codeGenerator = Create(insertionPoint, selectionResult, analyzerResult);

                return(await codeGenerator.GenerateAsync(cancellationToken).ConfigureAwait(false));
            }
            protected CSharpCodeGenerator(
                InsertionPoint insertionPoint,
                SelectionResult selectionResult,
                AnalyzerResult analyzerResult) :
                base(insertionPoint, selectionResult, analyzerResult)
            {
                //Contract.ThrowIfFalse(this.SemanticDocument == selectionResult.SemanticDocument);

                var nameToken = (SyntaxToken)CreateMethodName();

                _methodName = nameToken.WithAdditionalAnnotations(this.MethodNameAnnotation);
            }
コード例 #8
0
            protected CodeGenerator(InsertionPoint insertionPoint, SelectionResult selectionResult, AnalyzerResult analyzerResult)
            {
                //Contract.ThrowIfFalse(insertionPoint.SemanticDocument == analyzerResult.SemanticDocument);

                this.InsertionPoint   = insertionPoint;
                this.SemanticDocument = insertionPoint.SemanticDocument;

                this.SelectionResult = selectionResult;
                this.AnalyzerResult  = analyzerResult;

                this.MethodNameAnnotation       = new SyntaxAnnotation();
                this.CallSiteAnnotation         = new SyntaxAnnotation();
                this.MethodDefinitionAnnotation = new SyntaxAnnotation();
            }
            private static CSharpCodeGenerator Create(
                InsertionPoint insertionPoint,
                SelectionResult selectionResult,
                AnalyzerResult analyzerResult)
            {
                if (ExpressionCodeGenerator.IsExtractMethodOnExpression(selectionResult))
                {
                    return(new ExpressionCodeGenerator(insertionPoint, selectionResult, analyzerResult));
                }

                if (SingleStatementCodeGenerator.IsExtractMethodOnSingleStatement(selectionResult))
                {
                    return(new SingleStatementCodeGenerator(insertionPoint, selectionResult, analyzerResult));
                }

                if (MultipleStatementsCodeGenerator.IsExtractMethodOnMultipleStatements(selectionResult))
                {
                    return(new MultipleStatementsCodeGenerator(insertionPoint, selectionResult, analyzerResult));
                }

                return(null);               //Contract.FailWithReturn<CSharpCodeGenerator>("Unknown selection");
            }
コード例 #10
0
 protected override Task<MethodExtractor.GeneratedCode> GenerateCodeAsync(InsertionPoint insertionPoint, SelectionResult selectionResult, AnalyzerResult analyzeResult, CancellationToken cancellationToken)
 {
     return CSharpCodeGenerator.GenerateAsync(insertionPoint, selectionResult, analyzeResult, cancellationToken);
 }
コード例 #11
0
 protected override Task <MethodExtractor.GeneratedCode> GenerateCodeAsync(InsertionPoint insertionPoint, SelectionResult selectionResult, AnalyzerResult analyzeResult, CancellationToken cancellationToken)
 {
     return(CSharpCodeGenerator.GenerateAsync(insertionPoint, selectionResult, analyzeResult, cancellationToken));
 }
コード例 #12
0
 protected abstract Task<GeneratedCode> GenerateCodeAsync(InsertionPoint insertionPoint, SelectionResult selectionResult, AnalyzerResult analyzeResult, CancellationToken cancellationToken);
コード例 #13
0
 protected abstract Task <GeneratedCode> GenerateCodeAsync(InsertionPoint insertionPoint, SelectionResult selectionResult, AnalyzerResult analyzeResult, CancellationToken cancellationToken);