Skip to content

Commit 2013a59

Browse files
committed
Test TypeDefinition.GetDeclaringType().
1 parent f421e9c commit 2013a59

File tree

1 file changed

+20
-7
lines changed

1 file changed

+20
-7
lines changed

src/libraries/System.Reflection.Metadata/tests/Metadata/TypeSystem/TypeDefinitionTests.cs

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public void ValidateTypeDefinitionIsNestedWindowsProjection()
3535
}
3636

3737
[Fact]
38-
public void ValidateDeclaringType()
38+
public void ValidateMemberDeclaringType()
3939
{
4040
var reader = MetadataReaderTests.GetMetadataReader(Misc.Members);
4141

@@ -45,12 +45,6 @@ public void ValidateDeclaringType()
4545
foreach (var typeDefHandle in reader.TypeDefinitions)
4646
{
4747
var typeDef = reader.GetTypeDefinition(typeDefHandle);
48-
// The assembly does not declare any nested types yet.
49-
// foreach (var nestedTypeHandle in typeDef.GetNestedTypes())
50-
// {
51-
// var nestedType = reader.GetTypeDefinition(nestedTypeHandle);
52-
// Assert.Equal(typeDefHandle, nestedType.GetDeclaringType());
53-
// }
5448
foreach (var fieldHandle in typeDef.GetFields())
5549
{
5650
var field = reader.GetFieldDefinition(fieldHandle);
@@ -73,5 +67,24 @@ public void ValidateDeclaringType()
7367
}
7468
}
7569
}
70+
71+
#if NET
72+
[ActiveIssue("https://github.com/dotnet/runtime/pull/111642", TestRuntimes.Mono)]
73+
[ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotNativeAot))]
74+
public unsafe void ValidateTypeDeclaringType()
75+
{
76+
var asm = typeof(TypeDefinitionTests).Assembly;
77+
Assert.True(asm.TryGetRawMetadata(out byte* metadataBlob, out int length));
78+
var reader = new MetadataReader(metadataBlob, length);
79+
80+
int nestedClassToken = typeof(TestNestedClass).MetadataToken;
81+
int parentClassToken = typeof(TypeDefinitionTests).MetadataToken;
82+
83+
TypeDefinition nestedClassDef = reader.GetTypeDefinition((TypeDefinitionHandle)MetadataTokens.EntityHandle(nestedClassToken));
84+
Assert.Equal(MetadataTokens.EntityHandle(parentClassToken), nestedClassDef.GetDeclaringType());
85+
}
86+
87+
private class TestNestedClass;
88+
#endif
7689
}
7790
}

0 commit comments

Comments
 (0)