From 3142217bec2839cde01d533079299b7e2b312601 Mon Sep 17 00:00:00 2001 From: Ryan Nowak Date: Tue, 8 May 2018 13:36:49 -0700 Subject: [PATCH] Fix #745 - allow multiple implements directives The pass for this was 'break'ing after the first directive for no real reason. Oops. --- .../ImplementsDirectivePass.cs | 1 - .../DirectiveRazorIntegrationTest.cs | 21 +++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/Microsoft.AspNetCore.Blazor.Razor.Extensions/ImplementsDirectivePass.cs b/src/Microsoft.AspNetCore.Blazor.Razor.Extensions/ImplementsDirectivePass.cs index f503af50da..23ca598ee1 100644 --- a/src/Microsoft.AspNetCore.Blazor.Razor.Extensions/ImplementsDirectivePass.cs +++ b/src/Microsoft.AspNetCore.Blazor.Razor.Extensions/ImplementsDirectivePass.cs @@ -30,7 +30,6 @@ namespace Microsoft.AspNetCore.Blazor.Razor if (token != null) { @class.Interfaces.Add(token.Content); - break; } } } diff --git a/test/Microsoft.AspNetCore.Blazor.Build.Test/DirectiveRazorIntegrationTest.cs b/test/Microsoft.AspNetCore.Blazor.Build.Test/DirectiveRazorIntegrationTest.cs index e314d07a90..531f18b16f 100644 --- a/test/Microsoft.AspNetCore.Blazor.Build.Test/DirectiveRazorIntegrationTest.cs +++ b/test/Microsoft.AspNetCore.Blazor.Build.Test/DirectiveRazorIntegrationTest.cs @@ -58,6 +58,25 @@ namespace Microsoft.AspNetCore.Blazor.Build.Test frame => AssertFrame.Text(frame, "Hello")); } + [Fact] + public void SupportsMultipleImplementsDeclarations() + { + // Arrange/Act + var testInterfaceTypeName = FullTypeName(); + var testInterfaceTypeName2 = FullTypeName(); + var component = CompileToComponent( + $"@implements {testInterfaceTypeName}\n" + + $"@implements {testInterfaceTypeName2}\n" + + $"Hello"); + var frames = GetRenderTree(component); + + // Assert + Assert.IsAssignableFrom(component); + Assert.IsAssignableFrom(component); + Assert.Collection(frames, + frame => AssertFrame.Text(frame, "Hello")); + } + [Fact] public void SupportsInheritsDirective() { @@ -135,6 +154,8 @@ namespace Microsoft.AspNetCore.Blazor.Build.Test public interface ITestInterface { } + public interface ITestInterface2 { } + public class TestBaseClass : BlazorComponent { } public interface IMyService1 { }