Skip to content

Commit 74f33a1

Browse files
committed
update
1 parent fc115aa commit 74f33a1

8 files changed

Lines changed: 15 additions & 59 deletions

File tree

mdoc/mdoc.Test/SampleClasses/TestUpdate/net-9.0/AllowsRefStructDemo.dll renamed to external/Test/AllowsRefStructDemo.dll

File renamed without changes.

mdoc/Mono.Documentation/MDocUpdater.Member.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,12 @@ internal static void MakeTypeParameterConstraints(XmlElement root, XmlElement e,
2222
#endif
2323
GenericParameterAttributes attrs = typeParameter.Attributes;
2424

25-
XmlElement ce = (XmlElement)e.SelectSingleNode("Constraints");
25+
XmlElement ce = null;
26+
var typeParameterNode = (XmlElement)e.SelectSingleNode($"TypeParameter[@Name='{typeParameter.Name}']");
27+
if (typeParameterNode != null)
28+
{
29+
ce = (XmlElement)typeParameterNode.SelectSingleNode("Constraints");
30+
}
2631
if (attrs == GenericParameterAttributes.NonVariant && constraints.Count == 0)
2732
{
2833
if (ce != null)

mdoc/Mono.Documentation/MDocUpdater.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4166,7 +4166,7 @@ private void MakeTypeParameters (FrameworkTypeEntry entry, XmlElement root, ILis
41664166
xElement.RemoveAttribute(Consts.FrameworkAlternate);
41674167
xElement.SetAttribute(Consts.FrameworkAlternate, fxaValue);
41684168
MakeParamsAttributes(existing.Element, AttributeFormatter.PreProcessCustomAttributes(t.CustomAttributes), entry, member);
4169-
MakeTypeParameterConstraints(root, xElement, xElement, t);
4169+
MakeTypeParameterConstraints(root, e, xElement, t);
41704170
}
41714171
else
41724172
{

mdoc/mdoc.Test/FormatterTests.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -601,6 +601,14 @@ public void CSharpStaticEventImplementation(string typeFullName, string eventNam
601601
TestEventSignature(staticVirtualMemberDllPath, typeFullName, eventName, expectedSignature);
602602
}
603603

604+
[TestCase("AllowsRefStructDemo.Immutable", "Update",
605+
"public bool Update<TArg> (TArg transformerArgument) where TArg : new(), allows ref struct;")]
606+
public void CSharpAllowsRefStructTest(string typeFullName, string methodName, string expectedSignature)
607+
{
608+
var allowsRefStructDllPath = "../../../../external/Test/AllowsRefStructDemo.dll";
609+
TestMethodSignature(allowsRefStructDllPath, typeFullName, methodName, expectedSignature);
610+
}
611+
604612
#region Helper Methods
605613
string RealTypeName(string name){
606614
switch (name) {

mdoc/mdoc.Test/MDocUpdaterTests.cs

Lines changed: 0 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -253,51 +253,5 @@ public void Run_WithOptionsOAndFx_ShouldProcessFrameworks()
253253
Assert.IsTrue(File.Exists(Path.Combine(outputDir, "index.xml")));
254254
Assert.IsTrue(File.Exists(Path.Combine(outputDir, "ns-TestLibrary.xml")));
255255
}
256-
257-
[Test]
258-
public void Test_RunWithRefStructValidation()
259-
{
260-
// Arrange
261-
var baseDir = Path.Combine(Path.GetDirectoryName(this.GetType().Module.Assembly.Location), "SampleClasses/TestUpdate");
262-
var outputDir = Path.Combine(baseDir, "outputDir");
263-
Directory.CreateDirectory(outputDir);
264-
265-
var args = new List<string> { "update", "-o", outputDir, "-fx", Path.Combine(baseDir) };
266-
var updater = new MDocUpdater();
267-
268-
// Act
269-
updater.Run(args);
270-
271-
// Assert
272-
var IRefStructProcessorPath = Path.Combine(outputDir, "AllowsRefStructDemo", "IRefStructProcessor`1.xml");
273-
var refStructHandlerPath = Path.Combine(outputDir, "AllowsRefStructDemo", "RefStructHandler.xml");
274-
var ImmutablePath = Path.Combine(outputDir, "AllowsRefStructDemo", "Immutable.xml");
275-
276-
Assert.IsTrue(File.Exists(IRefStructProcessorPath));
277-
Assert.IsTrue(File.Exists(refStructHandlerPath));
278-
279-
var IRefStructProcessorDoc = new XmlDocument();
280-
IRefStructProcessorDoc.Load(IRefStructProcessorPath);
281-
var IRefStructProcessorNode = IRefStructProcessorDoc.SelectSingleNode("//TypeParameters/TypeParameter/Constraints/ParameterAttribute[text()='AllowByRefLike']");
282-
Assert.IsNotNull(IRefStructProcessorNode, "Missing <ParameterAttribute>AllowByRefLike</ParameterAttribute> in IRefStructProcessor`1.xml");
283-
var IRefStructProcessorTypeSignatureNode = IRefStructProcessorDoc.SelectSingleNode("//TypeSignature[@Language='C#' and contains(@Value, 'where T : allows ref struct')]");
284-
Assert.IsNotNull(IRefStructProcessorTypeSignatureNode, "Missing TypeSignature with 'where T : allows ref struct' in IRefStructProcessor`1.xml");
285-
286-
var refStructHandlerDoc = new XmlDocument();
287-
refStructHandlerDoc.Load(refStructHandlerPath);
288-
var refStructHandlerNode = refStructHandlerDoc.SelectSingleNode("//Members/Member/TypeParameters/TypeParameter/Constraints/ParameterAttribute[text()='AllowByRefLike']");
289-
Assert.IsNotNull(refStructHandlerNode, "Missing <ParameterAttribute>AllowByRefLike</ParameterAttribute> in RefStructHandler.xml");
290-
var refStructHandlerMemberSignatureNode = refStructHandlerDoc.SelectSingleNode("//Members/Member/MemberSignature[@Language='C#' and contains(@Value, 'where T : new(), allows ref struct')]");
291-
Assert.IsNotNull(refStructHandlerMemberSignatureNode, "Missing MemberSignature with 'where T : allows ref struct' in RefStructHandler.xml");
292-
293-
var ImmutableDoc = new XmlDocument();
294-
ImmutableDoc.Load(ImmutablePath);
295-
var constraintsNodes = ImmutableDoc.SelectNodes("//Members/Member/TypeParameters/TypeParameter/Constraints");
296-
Assert.IsTrue(constraintsNodes.Count == 1, "Multiple <Constraints> in Immutable.xml");
297-
var allowByRefLikeNode = ImmutableDoc.SelectSingleNode("//Members/Member/TypeParameters/TypeParameter/Constraints/ParameterAttribute[text()='AllowByRefLike']");
298-
var defaultConstructorNode = ImmutableDoc.SelectSingleNode("//Members/Member/TypeParameters/TypeParameter/Constraints/ParameterAttribute[text()='DefaultConstructorConstraint']");
299-
Assert.IsNotNull(allowByRefLikeNode, "Missing <ParameterAttribute>AllowByRefLike</ParameterAttribute> in Immutable.xml");
300-
Assert.IsNotNull(defaultConstructorNode, "Missing <ParameterAttribute>DefaultConstructorConstraint</ParameterAttribute> in Immutable.xml");
301-
}
302256
}
303257
}

mdoc/mdoc.Test/SampleClasses/TestUpdate/frameworks.xml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,4 @@
33
<Framework Name="net-8.0" Source="net-8.0">
44
<assemblySearchPath>dependencies\net-8.0</assemblySearchPath>
55
</Framework>
6-
<Framework Name="net-9.0" Source="net-9.0">
7-
<assemblySearchPath>dependencies\net-9.0</assemblySearchPath>
8-
</Framework>
96
</Frameworks>
Binary file not shown.

mdoc/mdoc.Test/mdoc.Test.csproj

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -72,14 +72,6 @@
7272
<Link>SampleClasses\TestUpdate\net-8.0\TestLibrary.dll</Link>
7373
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
7474
</Content>
75-
<Content Include="SampleClasses\TestUpdate\net-8.0\AllowsRefStructDemo.dll">
76-
<Link>SampleClasses\TestUpdate\net-8.0\AllowsRefStructDemo.dll</Link>
77-
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
78-
</Content>
79-
<Content Include="SampleClasses\TestUpdate\net-9.0\AllowsRefStructDemo.dll">
80-
<Link>SampleClasses\TestUpdate\net-9.0\AllowsRefStructDemo.dll</Link>
81-
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
82-
</Content>
8375
<Content Include="SampleClasses\TestUpdate\frameworks.xml">
8476
<Link>SampleClasses\TestUpdate\frameworks.xml</Link>
8577
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>

0 commit comments

Comments
 (0)