Skip to content

Commit 9944e17

Browse files
committed
handle target typed new
1 parent d35e871 commit 9944e17

6 files changed

Lines changed: 12 additions & 5 deletions

File tree

IDisposableAnalyzers.Test/Helpers/DisposableTests.IsCreation.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -756,6 +756,7 @@ public void Update()
756756
}
757757

758758
[TestCase("new S()")]
759+
[TestCase("new()")]
759760
public static void RefStruct(string expression)
760761
{
761762
var syntaxTree = CSharpSyntaxTree.ParseText("""

IDisposableAnalyzers.Test/IDISP001DisposeCreatedTests/CodeFix.AddUsing.AddUsingDeclaration.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -702,6 +702,7 @@ private static Kernel Create()
702702
}
703703

704704
[TestCase("new S()")]
705+
[TestCase("new()")]
705706
public static void LocalRefStructToUsingDeclaration(string expression)
706707
{
707708
var refStruct = """

IDisposableAnalyzers.Test/IDISP005ReturnTypeShouldBeIDisposableTests/Valid.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -168,8 +168,9 @@ private static void M1()
168168
RoslynAssert.Valid(Analyzer, code);
169169
}
170170

171-
[Test]
172-
public static void MethodReturningObject()
171+
[TestCase("new object()")]
172+
[TestCase("new()")]
173+
public static void MethodReturningObject(string expression)
173174
{
174175
var code = @"
175176
namespace N
@@ -186,7 +187,7 @@ private static object M1()
186187
return new object();
187188
}
188189
}
189-
}";
190+
}".AssertReplace("new object()", expression);
190191
RoslynAssert.Valid(Analyzer, code);
191192
}
192193

IDisposableAnalyzers/Helpers/Disposable.IsCreation.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ internal static bool IsCreation(ExpressionSyntax candidate, SemanticModel semant
153153
return false;
154154
}
155155

156-
if (candidate is ObjectCreationExpressionSyntax)
156+
if (candidate is BaseObjectCreationExpressionSyntax)
157157
{
158158
return true;
159159
}

IDisposableAnalyzers/Helpers/Disposable.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ internal static partial class Disposable
1313
{
1414
{ IsMissing: true } => false,
1515
LiteralExpressionSyntax _ => false,
16-
ObjectCreationExpressionSyntax objectCreation
16+
BaseObjectCreationExpressionSyntax objectCreation
1717
=> semanticModel.TryGetType(objectCreation, cancellationToken, out var type) &&
1818
IsAssignableFrom(type, semanticModel.Compilation),
1919
_ => semanticModel.TryGetType(candidate, cancellationToken, out var type) &&

ValidCode/Returned.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@ void Consume()
2121

2222
IDisposable FileOpenRead() => File.OpenRead(string.Empty);
2323

24+
object NewImplicitObject() => new();
25+
26+
object NewObject() => new object();
27+
2428
IEnumerable<IDisposable> YieldReturnFileOpenRead()
2529
{
2630
yield return File.OpenRead(string.Empty);

0 commit comments

Comments
 (0)