public void WriterConstructedWithoutContentLengthAndSourceFile_AddsLinePragmas_OnDispose() { // Arrange var location = new SourceLocation(10, 1, 20); var expected = string.Join(Environment.NewLine, @"#line 2 ""myfile""", "Hello world", "", "#line default", "#line hidden", ""); var expectedMappings = new LineMapping( new MappingLocation(location, 30), new MappingLocation(new SourceLocation(18, 1, 0), 11)); var writer = new CSharpCodeWriter(); // Act using (var mappingWriter = new CSharpLineMappingWriter(writer, location, "myfile")) { writer.Write("Hello world"); } // Assert Assert.Equal(expected, writer.GenerateCode()); Assert.Empty(writer.LineMappingManager.Mappings); }
public void WriterConstructedWithoutContentLengthAndSourceFile_AddsLinePragmas_OnDispose() { // Arrange var location = new SourceLocation(10, 1, 20); var expected = string.Join(Environment.NewLine, @"#line 2 ""myfile""", "Hello world", "", "#line default", "#line hidden", ""); var expectedMappings = new LineMapping( new MappingLocation(location, 30), new MappingLocation(new SourceLocation(18, 1, 0), 11)); var writer = new CSharpCodeWriter(); // Act using (var mappingWriter = new CSharpLineMappingWriter(writer, location, "myfile")) { writer.Write("Hello world"); } // Assert Assert.Equal(expected, writer.GenerateCode()); Assert.Empty(writer.LineMappingManager.Mappings); }
public override CodeBuilderResult Build() { var writer = new CSharpCodeWriter(); if (!Host.DesignTimeMode && !string.IsNullOrEmpty(Context.Checksum)) { writer.Write("#pragma checksum \"") .Write(Context.SourceFile) .Write("\" \"") .Write(Sha1AlgorithmId) .Write("\" \"") .Write(Context.Checksum) .WriteLine("\""); } using (writer.BuildNamespace(Context.RootNamespace)) { // Write out using directives AddImports(Tree, writer, Host.NamespaceImports); // Separate the usings and the class writer.WriteLine(); new CSharpClassAttributeVisitor(writer, Context).Accept(Tree.Chunks); using (BuildClassDeclaration(writer)) { if (Host.DesignTimeMode) { writer.WriteLine("private static object @__o;"); } var csharpCodeVisitor = CreateCSharpCodeVisitor(writer, Context); new CSharpHelperVisitor(csharpCodeVisitor, writer, Context).Accept(Tree.Chunks); new CSharpTypeMemberVisitor(csharpCodeVisitor, writer, Context).Accept(Tree.Chunks); new CSharpDesignTimeHelpersVisitor(csharpCodeVisitor, writer, Context).AcceptTree(Tree); new CSharpTagHelperFieldDeclarationVisitor(writer, Context).Accept(Tree.Chunks); BuildConstructor(writer); // Add space inbetween constructor and method body writer.WriteLine(); using (writer.BuildDisableWarningScope(DisableAsyncWarning)) { using (writer.BuildMethodDeclaration("public override async", "Task", Host.GeneratedClassContext.ExecuteMethodName)) { csharpCodeVisitor.Accept(Tree.Chunks); } } } } return(new CodeBuilderResult(writer.GenerateCode(), writer.LineMappingManager.Mappings)); }
public void WriteLineNumberDirective_UsesFilePath_WhenFileInSourceLocationIsNull() { // Arrange var filePath = "some-path"; var writer = new CSharpCodeWriter(); var expected = $"#line 5 \"{filePath}\"" + writer.NewLine; var sourceLocation = new SourceLocation(10, 4, 3); // Act writer.WriteLineNumberDirective(sourceLocation, filePath); var code = writer.GenerateCode(); // Assert Assert.Equal(expected, code); }
public void WriterConstructedWithContentLength_AddsLineMappings_OnDispose() { // Arrange var location = new SourceLocation(10, 15, 20); var expected = new LineMapping( new MappingLocation(location, 30), new MappingLocation(new SourceLocation(0, 0, 0), 11)); var writer = new CSharpCodeWriter(); // Act using (var mappingWriter = new CSharpLineMappingWriter(writer, location, 30)) { writer.Write("Hello world"); } // Assert Assert.Equal("Hello world", writer.GenerateCode()); var mapping = Assert.Single(writer.LineMappingManager.Mappings); Assert.Equal(expected, mapping); }
public override CodeBuilderResult Build() { var writer = new CSharpCodeWriter(); using (writer.BuildNamespace(Context.RootNamespace)) { // Write out using directives AddImports(Tree, writer, Host.NamespaceImports); // Separate the usings and the class writer.WriteLine(); new CSharpClassAttributeVisitor(writer, Context).Accept(Tree.Chunks); using (BuildClassDeclaration(writer)) { if (Host.DesignTimeMode) { writer.WriteLine("private static object @__o;"); } new CSharpHelperVisitor(writer, Context).Accept(Tree.Chunks); new CSharpTypeMemberVisitor(writer, Context).Accept(Tree.Chunks); new CSharpDesignTimeHelpersVisitor(writer, Context).AcceptTree(Tree); BuildConstructor(writer); // Add space inbetween constructor and method body writer.WriteLine(); using (writer.BuildDisableWarningScope(DisableAsyncWarning)) { using (writer.BuildMethodDeclaration("public override async", "Task", Host.GeneratedClassContext.ExecuteMethodName)) { new CSharpCodeVisitor(writer, Context).Accept(Tree.Chunks); } } } } return(new CodeBuilderResult(writer.GenerateCode(), writer.LineMappingManager.Mappings)); }
public override CodeBuilderResult Build() { var writer = new CSharpCodeWriter(); using (writer.BuildNamespace(Context.RootNamespace)) { // Write out using directives AddImports(Tree, writer, Host.NamespaceImports); // Separate the usings and the class writer.WriteLine(); new CSharpClassAttributeVisitor(writer, Context).Accept(Tree.Chunks); using (BuildClassDeclaration(writer)) { if (Host.DesignTimeMode) { writer.WriteLine("private static object @__o;"); } new CSharpHelperVisitor(writer, Context).Accept(Tree.Chunks); new CSharpTypeMemberVisitor(writer, Context).Accept(Tree.Chunks); new CSharpDesignTimeHelpersVisitor(writer, Context).AcceptTree(Tree); BuildConstructor(writer); // Add space inbetween constructor and method body writer.WriteLine(); using (writer.BuildDisableWarningScope(DisableAsyncWarning)) { using (writer.BuildMethodDeclaration("public override async", "Task", Host.GeneratedClassContext.ExecuteMethodName)) { new CSharpCodeVisitor(writer, Context).Accept(Tree.Chunks); } } } } return new CodeBuilderResult(writer.GenerateCode(), writer.LineMappingManager.Mappings); }
public void WriterConstructedWithContentLength_AddsLineMappings_OnDispose() { // Arrange var location = new SourceLocation(10, 15, 20); var expected = new LineMapping( new MappingLocation(location, 30), new MappingLocation(new SourceLocation(0, 0, 0), 11)); var writer = new CSharpCodeWriter(); // Act using (var mappingWriter = new CSharpLineMappingWriter(writer, location, 30)) { writer.Write("Hello world"); } // Assert Assert.Equal("Hello world", writer.GenerateCode()); var mapping = Assert.Single(writer.LineMappingManager.Mappings); Assert.Equal(expected, mapping); }
public void MarkLineMappingEnd() { _generatedContentLength = _writer.GenerateCode().Length - _generatedLocation.AbsoluteIndex; }