From 09073430f2116540885f6c3cac445c0cf547d2b4 Mon Sep 17 00:00:00 2001 From: AraHaan Date: Thu, 8 Dec 2022 11:52:19 -0500 Subject: [PATCH] Fixed bug in generating KeepOpen. --- src/IDisposableGenerator/DisposableCodeWriter.cs | 6 +++--- tests/IDisposableGeneratorTests.CSharp10.cs | 2 +- tests/IDisposableGeneratorTests.CSharp9.cs | 2 +- tests/IDisposableGeneratorTests.VisualBasic.cs | 2 +- tests/IDisposableGeneratorTests.cs | 13 +++++-------- 5 files changed, 11 insertions(+), 14 deletions(-) diff --git a/src/IDisposableGenerator/DisposableCodeWriter.cs b/src/IDisposableGenerator/DisposableCodeWriter.cs index 9ba90e7..0eba3b3 100644 --- a/src/IDisposableGenerator/DisposableCodeWriter.cs +++ b/src/IDisposableGenerator/DisposableCodeWriter.cs @@ -60,7 +60,7 @@ If Not Me.isDisposed AndAlso disposing Then if (classItem.Owns.Any()) { - _ = sourceBuilder.Append($@" If Me.{(classItem.Stream ? "KeepOpen" : "IsOwned")} Then + _ = sourceBuilder.Append($@" If {(classItem.Stream ? "Not Me.KeepOpen" : "Me.IsOwned")} Then "); foreach (var ownedItem in classItem.Owns) { @@ -171,7 +171,7 @@ namespace {workItem.Namespace}; if (classItem.Owns.Any()) { - _ = sourceBuilder.Append($@" if (this.{(classItem.Stream ? "KeepOpen" : "IsOwned")}) + _ = sourceBuilder.Append($@" if ({(classItem.Stream ? "!this.KeepOpen" : "this.IsOwned")}) {{ "); foreach (var ownedItem in classItem.Owns) @@ -285,7 +285,7 @@ namespace {workItem.Namespace} if (classItem.Owns.Any()) { - _ = sourceBuilder.Append($@" if (this.{(classItem.Stream ? "KeepOpen" : "IsOwned")}) + _ = sourceBuilder.Append($@" if ({(classItem.Stream ? "!this.KeepOpen" : "this.IsOwned")}) {{ "); foreach (var ownedItem in classItem.Owns) diff --git a/tests/IDisposableGeneratorTests.CSharp10.cs b/tests/IDisposableGeneratorTests.CSharp10.cs index 9862862..feee154 100644 --- a/tests/IDisposableGeneratorTests.CSharp10.cs +++ b/tests/IDisposableGeneratorTests.CSharp10.cs @@ -198,7 +198,7 @@ protected override void Dispose(bool disposing) { if (!this.isDisposed && disposing) { - if (this.KeepOpen) + if (!this.KeepOpen) { this.testDispose?.Dispose(); this.testDispose = null; diff --git a/tests/IDisposableGeneratorTests.CSharp9.cs b/tests/IDisposableGeneratorTests.CSharp9.cs index 67350ba..2cf649f 100644 --- a/tests/IDisposableGeneratorTests.CSharp9.cs +++ b/tests/IDisposableGeneratorTests.CSharp9.cs @@ -216,7 +216,7 @@ protected override void Dispose(bool disposing) { if (!this.isDisposed && disposing) { - if (this.KeepOpen) + if (!this.KeepOpen) { this.testDispose?.Dispose(); this.testDispose = null; diff --git a/tests/IDisposableGeneratorTests.VisualBasic.cs b/tests/IDisposableGeneratorTests.VisualBasic.cs index 289c188..88a9741 100644 --- a/tests/IDisposableGeneratorTests.VisualBasic.cs +++ b/tests/IDisposableGeneratorTests.VisualBasic.cs @@ -243,7 +243,7 @@ Friend ReadOnly Property KeepOpen As Boolean ''' Protected Overrides Sub Dispose(ByVal disposing As Boolean) If Not Me.isDisposed AndAlso disposing Then - If Me.KeepOpen Then + If Not Me.KeepOpen Then Me.testDispose?.Dispose() Me.testDispose = Nothing End If diff --git a/tests/IDisposableGeneratorTests.cs b/tests/IDisposableGeneratorTests.cs index b7f7f25..cce8ab3 100644 --- a/tests/IDisposableGeneratorTests.cs +++ b/tests/IDisposableGeneratorTests.cs @@ -4,10 +4,7 @@ public partial class IDisposableGeneratorTests { [Fact] public async Task TestGeneratingNoInput() - => _ = await Assert.ThrowsAsync([ExcludeFromCodeCoverage] async () => - { - await RunTest(string.Empty, string.Empty).ConfigureAwait(false); - }).ConfigureAwait(false); + => await RunTest(string.Empty, string.Empty).ConfigureAwait(false); private static async Task RunTest( string generatedSource, @@ -34,9 +31,8 @@ private static async Task RunTest( case false when test is CSGeneratorTest tst: { tst.LanguageVersion = languageVersion!.Value; - var generatedAttributeSource = Properties.Resources.AttributeCodeCSharp!; test.TestState.GeneratedSources.Add( - (typeof(IDisposableGenerator), "GeneratedAttributes.g.cs", generatedAttributeSource)); + (typeof(IDisposableGenerator), "GeneratedAttributes.g.cs", Properties.Resources.AttributeCodeCSharp!)); if (generatedSources is not null && languageVersion == LanguageVersion.CSharp10) { @@ -61,14 +57,15 @@ private static async Task RunTest( } case false when test is VBGeneratorTest: { - var generatedAttributeSource = Properties.Resources.AttributeCodeVisualBasic!; test.TestState.GeneratedSources.Add( - (typeof(IDisposableGeneratorVB), "GeneratedAttributes.g.vb", generatedAttributeSource)); + (typeof(IDisposableGeneratorVB), "GeneratedAttributes.g.vb", Properties.Resources.AttributeCodeVisualBasic!)); test.TestState.GeneratedSources.Add( (typeof(IDisposableGeneratorVB), "Disposables.g.vb", generatedSource)); break; } default: + test.TestState.GeneratedSources.Add( + (typeof(IDisposableGenerator), "GeneratedAttributes.g.cs", Properties.Resources.AttributeCodeCSharp!)); test.TestState.Sources.Clear(); break; }