private static async Task<Tuple<Compilation, SemanticModel, SyntaxTree, NamespaceDeclarationSyntaxInfo>> VerifyCompilation(Compilation compilation, NamespaceDeclarationSyntaxInfo namespaceNode)
{
SemanticModel semanticModel;
var tree = namespaceNode.Syntax.SyntaxTree;
if (tree == null)
{
var compilationUnit = SyntaxFactory.CompilationUnit()
.WithMembers(SyntaxFactory.List(new[] { (MemberDeclarationSyntax)namespaceNode.Syntax }));
var cu = CSharpSyntaxTree.Create(compilationUnit);
var root = await cu.GetRootAsync().ConfigureAwait(false);
namespaceNode.Syntax = root.ChildNodes().First();
var newCompilation = compilation.AddSyntaxTrees(cu);
semanticModel = newCompilation.GetSemanticModel(cu);
return new Tuple<Compilation, SemanticModel, SyntaxTree, NamespaceDeclarationSyntaxInfo>(newCompilation, semanticModel, cu, namespaceNode);
}
var result = AddToCompilation(compilation, tree);
compilation = result.Item1;
tree = result.Item2;
semanticModel = compilation.GetSemanticModel(tree);
return new Tuple<Compilation, SemanticModel, SyntaxTree, NamespaceDeclarationSyntaxInfo>(compilation, semanticModel, tree, namespaceNode);
}