コード例 #1
0
        public override DocumentResults? ExecuteQuery(String input, String text)
        {
            try
            {
                context = new CompilationContext(workspace, document.WithText(SourceText.From(text)));

                var csharpBootStrapper = BootstrapperBuilder.Create(bootstrapper)
                    .WithExecutor(new StandardExecutorWithContext(bootstrapper.RunnableManager, context))
                    .Build();

                // var root = this.compiler.Parse(text);
                var response = input; // + " | convert-to-string";
                var controlFlowDescriptor = csharpBootStrapper.Compiler.Parse(response);
                var controlFlow = csharpBootStrapper.ControlFlowFactory.Create(controlFlowDescriptor);
                var result = controlFlow.Execute(new[] { context.CurrentDocument.GetSyntaxRootAsync().Result }) as IEnumerable<Object>;

                var source = context.DocumentEditor.GetChangedDocument().GetSyntaxRootAsync().Result;

                var documentResults = new DocumentResults() {
                    Source = source.ToFullString(),
                    Results = String.Join(Environment.NewLine, result.OfType<SyntaxNode>().Select(node => node.ToFullString()))
                };

                return documentResults;
            }
            catch (Exception exception)
            {
                Console.WriteLine($"Error message: {exception.Message}");
                Console.WriteLine("Stacktrace: ");
                Console.WriteLine(exception.StackTrace);

                return null;
            }

        }
コード例 #2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="CsvCompilerModule"/> class.
 /// </summary>
 public CSharpCompilerModule(Bootstrapper bootstrapper)
     : base(bootstrapper)
 {
     compiler = new CSharpCompiler();
     workspace = new AdhocWorkspace();
     project = workspace.AddProject("CSharpProject", LanguageNames.CSharp);
     document = project.AddDocument("current", "");
     context = new CompilationContext(workspace, document);
 }
コード例 #3
0
        public void ChangeMemberVisibility_ShouldChangeVisibilityOfNode_WhenSpecificNodeIsPassed()
        {
            // Given
            var source = @"
                public void foo() {
                    var a = 10;
                }
            ";

            var underTest = new ChangeMemberVisibilityRunnable
            {
                Visibility = "private"
            };

            var workspace = new AdhocWorkspace();
            var project = workspace.AddProject(ProjectInfo.Create(ProjectId.CreateNewId(), VersionStamp.Default, "test", "test-asm", LanguageNames.CSharp));
            var document = workspace.AddDocument(project.Id, "test-document", SourceText.From(source));
            var documentContext = new CompilationContext(workspace, document);
            var compilationUnit = document.GetSyntaxRootAsync().Result as CompilationUnitSyntax;
            var memberDeclaration = compilationUnit.DescendantNodes()
                                                   .OfType<MethodDeclarationSyntax>()
                                                   .Single(m => m.Identifier.ValueText == "foo");

            // When
            var result = underTest.Run(memberDeclaration, documentContext).ToFullString();

            // Then
            Assert.That(result, Is.Not.Null);
        }