Skip to content

Commit 11d0c8d

Browse files
committed
test: enables GenericTypeInstantiation test for System.Reflection.Metadata (#363)
some of the scenarios were already working. Wrapped remaining failing ones with #if not API_DRIVER_SYSTEM_REFLECTION_METADATA
1 parent a061bef commit 11d0c8d

3 files changed

Lines changed: 11 additions & 5 deletions

File tree

Cecilifier.ApiDriver.SystemReflectionMetadata/TypeSystem/SystemReflectionMetadataTypeResolver.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,10 +137,10 @@ public override ResolvedType MakeGenericInstanceType(ResolvedType typeReference,
137137
if (typeArguments.Length == 0)
138138
return typeReference;
139139

140-
if (resolutionContext.TargetKind is ResolveTargetKind.Field or ResolveTargetKind.Parameter or ResolveTargetKind.ReturnType)
140+
if (resolutionContext.TargetKind is ResolveTargetKind.Field or ResolveTargetKind.Parameter or ResolveTargetKind.ReturnType or ResolveTargetKind.LocalVariable)
141141
{
142142
var resolved = MakeGenericInstanceTypeForFieldDeclaration(typeReference, genericTypeSymbol, typeArguments);
143-
if (resolved && resolutionContext.TargetKind is ResolveTargetKind.ReturnType or ResolveTargetKind.Field)
143+
if (resolved && resolutionContext.TargetKind is ResolveTargetKind.ReturnType or ResolveTargetKind.Field or ResolveTargetKind.LocalVariable)
144144
{
145145
return ResolvedType.FromDetails(
146146
new ResolvedTypeDetails()

Cecilifier.Core.Tests/TestResources/Integration/Generics/GenericTypeInstantiation.cs.txt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,9 @@ public struct GenericStruct<T>
1212
class GenericTypeInstantiation
1313
{
1414
object ParameterlessClassCtor() => new GenericClass<int>();
15+
#if! API_DRIVER_SYSTEM_REFLECTION_METADATA
1516
object ClassCtorWithParameters() => new GenericClass<int>(42);
16-
1717
object StructCtorWithParameters() => new GenericStruct<int>(42);
18-
//object ParameterlessStructCtor() => new GenericStruct<int>();
18+
object ParameterlessStructCtor() => new GenericStruct<int>();
19+
#endif
1920
}

Cecilifier.Core.Tests/Tests/Integration/GenericsTestCase.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,12 @@ namespace Cecilifier.Core.Tests.Integration
99
{
1010
[TestFixture(typeof(MonoCecilContext))]
1111
[TestFixture(typeof(SystemReflectionMetadataContext))]
12-
[EnableForContext<SystemReflectionMetadataContext>(nameof(TestGenericOuterAndInnerPermutations), nameof(TestSimplestGenericTypeDefinition), nameof(TestGenericTypesInheritance), nameof(TestGenericTypesAsMembers), IgnoreReason = "Not implemented")]
12+
[EnableForContext<SystemReflectionMetadataContext>(
13+
nameof(TestGenericOuterAndInnerPermutations),
14+
nameof(TestSimplestGenericTypeDefinition),
15+
nameof(TestGenericTypesInheritance),
16+
nameof(TestGenericTypesAsMembers),
17+
nameof(TestGenericTypeInstantiation), IgnoreReason = "Not implemented")]
1318
public class GenericsTestCase<TResource> : ResourceTestBase<TResource> where TResource : IVisitorContext
1419
{
1520
[TestCase("GenericOuterNonGenericInner")]

0 commit comments

Comments
 (0)