0

I am creating a workspace in memory for unit testing purposes, but I cannot access the symbol info of a certain InvocationExpression (which is required for the CodeIssue I am testing). Here is a simplified example of a test that fails. Please help?

        var solution =
            Solution.Create(SolutionId.CreateNewId())
                    .AddCSharpProject(Title, Title, out projectId)
                    .AddMetadataReference(projectId, MetadataReference.CreateAssemblyReference("mscorlib"))
                    .AddMetadataReference(projectId, MetadataReference.CreateAssemblyReference("Microsoft.CSharp"))
                    .AddMetadataReference(projectId, MetadataReference.CreateAssemblyReference("System"))
                    .AddMetadataReference(projectId, MetadataReference.CreateAssemblyReference("System.Core"))
                    .AddMetadataReference(projectId, MetadataReference.CreateAssemblyReference("System.Web"))
                    .AddDocument(projectId, "MyFile.cs",
                        @"using System.Web;
                        public partial class _Default : Page
                        {
                            protected void Page_Load(object sender, EventArgs e, string s)
                            {
                                Response.Write(""hello"");
                            }
                        }"
                    , out documentId);



        var mydocument = solution.GetDocument(documentId);
        var tree = mydocument.GetSyntaxTree();
        var model = mydocument.GetSemanticModel();
        var responseWriteLine = tree.GetRoot().DescendantNodesAndSelf().First(x => x.GetLocation().GetLineSpan(false).StartLinePosition.Line == 5 && x is InvocationExpressionSyntax);

        Assert.IsNotNull(model.GetSymbolInfo(responseWriteLine.Expression).Symbol);
1
  • Which ctp are you using? Commented Dec 12, 2012 at 6:28

1 Answer 1

3

I added some usings to the code snippet which were missing.

 var solution =
            Solution.Create(SolutionId.CreateNewId())
                    .AddCSharpProject(Title, Title, out projectId)
                    .AddMetadataReference(projectId, MetadataReference.CreateAssemblyReference("mscorlib"))
                    .AddMetadataReference(projectId, MetadataReference.CreateAssemblyReference("Microsoft.CSharp"))
                    .AddMetadataReference(projectId, MetadataReference.CreateAssemblyReference("System"))
                    .AddMetadataReference(projectId, MetadataReference.CreateAssemblyReference("System.Core"))
                    .AddMetadataReference(projectId, MetadataReference.CreateAssemblyReference("System.Web"))
                    .AddDocument(projectId, "MyFile.cs",
                        @"using System;
                        using System.Web;
                        using System.Web.UI;

                        public partial class _Default : Page
                        {
                            protected void Page_Load(object sender, EventArgs e, string s)
                            {
                                Response.Write(""hello"");
                            }
                        }"
                    , out documentId);



            var mydocument = solution.GetDocument(documentId);
            var tree = mydocument.GetSyntaxTree();
            SemanticModel model = (SemanticModel)mydocument.GetSemanticModel();

            var responseWriteLine = tree.GetRoot().DescendantNodes().OfType<InvocationExpressionSyntax>().First();
            Assert.IsNotNull(model.GetSymbolInfo(responseWriteLine.Expression).Symbol);
Sign up to request clarification or add additional context in comments.

1 Comment

Thank you for cleaning up my dodgy code! It looks to be working now. :) FWIW, I am using the September 2012 CTP.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.