Skip to content

Commit 47b7145

Browse files
authored
Merge pull request #616 from mono/develop
bump mdoc to 5.8.7
2 parents 1a34ff5 + 637f821 commit 47b7145

19 files changed

Lines changed: 229 additions & 63 deletions

azure-pipelines.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,13 @@ stages:
101101
targetType: 'inline'
102102
script: 'make prepare all check CONFIGURATION=$(buildConfiguration)'
103103

104+
- task: UseDotNet@2
105+
displayName: 'Use .NET Core sdk'
106+
inputs:
107+
packageType: sdk
108+
version: 2.1.x
109+
installationPath: $(Agent.ToolsDirectory)/dotnet
110+
104111
- task: EsrpCodeSigning@1
105112
displayName: Sign executable and dll files
106113
condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest'))

mdoc/Consts.cs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ namespace Mono.Documentation
33
{
44
public static class Consts
55
{
6-
public static string MonoVersion = "5.8.6.1";
6+
public static string MonoVersion = "5.8.7";
77
public const string DocId = "DocId";
88
public const string CppCli = "C++ CLI";
99
public const string CppCx = "C++ CX";
@@ -38,12 +38,16 @@ public static class Consts
3838
public const string VoidFullName = "System.Void";
3939
public const string RefTypeObsoleteString = "Types with embedded references are not supported in this version of your compiler.";
4040
public const string FrameworksIndexFolderName = "FrameworksIndex";
41-
public const string CompilerGeneratedAttribute = "System.Runtime.CompilerServices.CompilerGeneratedAttribute";
42-
public const string CompilationMappingAttribute = "Microsoft.FSharp.Core.CompilationMappingAttribute";
4341
public const string FrameworksIndex = "FrameworksIndex";
4442
public const string FrameworkAlternate = "FrameworkAlternate";
4543
public const string Index = "Index";
4644

4745
public static bool CollapseInheritedInterfaces = true;
46+
47+
public const string CompilationMappingAttribute = "Microsoft.FSharp.Core.CompilationMappingAttribute";
48+
public const string CompilerGeneratedAttribute = "System.Runtime.CompilerServices.CompilerGeneratedAttribute";
49+
public const string IsByRefLikeAttribute = "System.Runtime.CompilerServices.IsByRefLikeAttribute";
50+
public const string IsReadOnlyAttribute = "System.Runtime.CompilerServices.IsReadOnlyAttribute";
51+
public const string InAttribute = "System.Runtime.InteropServices.InAttribute";
4852
}
4953
}

mdoc/Mono.Documentation/Updater/DocUtils.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -945,5 +945,18 @@ public static TypeDefinition FixUnnamedParameters(TypeDefinition type)
945945

946946
return type;
947947
}
948+
949+
public static bool HasCustomAttribute(ICustomAttributeProvider customAttrProvider, string attributeName)
950+
{
951+
if (customAttrProvider == null)
952+
{
953+
return false;
954+
}
955+
else
956+
{
957+
return customAttrProvider.HasCustomAttributes
958+
&& customAttrProvider.CustomAttributes.Any(attr => attr.AttributeType.FullName == attributeName);
959+
}
960+
}
948961
}
949962
}

mdoc/Mono.Documentation/Updater/Formatters/CSharpFullMemberFormatter.cs

Lines changed: 48 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,19 @@ static string GetTypeKind (TypeDefinition t)
238238
if (t.IsEnum)
239239
return "enum";
240240
if (t.IsValueType)
241-
return "struct";
241+
{
242+
StringBuilder buf = new StringBuilder();
243+
if (DocUtils.HasCustomAttribute(t, Consts.IsReadOnlyAttribute))
244+
{
245+
buf.Append("readonly ");
246+
}
247+
if (DocUtils.HasCustomAttribute(t, Consts.IsByRefLikeAttribute))
248+
{
249+
buf.Append("ref ");
250+
}
251+
buf.Append("struct");
252+
return buf.ToString();
253+
}
242254
if (t.IsClass || t.FullName == "System.Enum")
243255
return "class";
244256
if (t.IsInterface)
@@ -500,18 +512,9 @@ protected override StringBuilder AppendModifiers (StringBuilder buf, MethodDefin
500512
if (method.IsAbstract && !declType.IsInterface) modifiers += " abstract";
501513
if (method.IsFinal) modifiers += " sealed";
502514
if (modifiers == " virtual sealed") modifiers = "";
503-
504-
if ((method.ReturnType.IsRequiredModifier
505-
&& ((RequiredModifierType)method.ReturnType).ElementType.IsByReference)
506-
|| method.ReturnType.IsByReference)
515+
if (declType.IsValueType && DocUtils.HasCustomAttribute(method, Consts.IsReadOnlyAttribute))
507516
{
508-
modifiers += " ref";
509-
}
510-
511-
if (method.ReturnType.IsRequiredModifier
512-
&& method.MethodReturnType.CustomAttributes.Any(attr => attr.AttributeType.FullName == "System.Runtime.CompilerServices.IsReadOnlyAttribute"))
513-
{
514-
modifiers += " readonly";
517+
modifiers += buf.Length == 0 ? "readonly" : " readonly";
515518
}
516519

517520
switch (method.Name)
@@ -527,6 +530,24 @@ protected override StringBuilder AppendModifiers (StringBuilder buf, MethodDefin
527530
return buf.Append (modifiers);
528531
}
529532

533+
protected override StringBuilder AppendRefTypeName(StringBuilder buf, ByReferenceType type, IAttributeParserContext context)
534+
{
535+
buf.Append("ref ");
536+
return base.AppendRefTypeName(buf, type, context);
537+
}
538+
539+
protected override StringBuilder AppendRequiredModifierTypeName(
540+
StringBuilder buf, RequiredModifierType type, IAttributeParserContext context)
541+
{
542+
if (type.ModifierType.FullName == Consts.InAttribute && type.ElementType is ByReferenceType refType)
543+
{
544+
buf.Append("ref readonly ");
545+
return _AppendTypeName(buf, refType.ElementType, context);
546+
}
547+
548+
return base.AppendRequiredModifierTypeName(buf, type, context);
549+
}
550+
530551
protected override StringBuilder AppendGenericMethod (StringBuilder buf, MethodDefinition method)
531552
{
532553
if (method.IsGenericMethod ())
@@ -570,19 +591,28 @@ private StringBuilder AppendParameters (StringBuilder buf, MethodDefinition meth
570591

571592
private StringBuilder AppendParameter (StringBuilder buf, ParameterDefinition parameter)
572593
{
573-
if (parameter.ParameterType is ByReferenceType)
594+
TypeReference parameterType = parameter.ParameterType;
595+
596+
if (parameterType is RequiredModifierType requiredModifierType)
597+
{
598+
parameterType = requiredModifierType.ElementType;
599+
}
600+
601+
if (parameterType is ByReferenceType byReferenceType)
574602
{
575603
if (parameter.IsOut)
576604
{
577605
buf.Append ("out ");
578606
}
607+
else if(parameter.IsIn && DocUtils.HasCustomAttribute(parameter, Consts.IsReadOnlyAttribute))
608+
{
609+
buf.Append("in ");
610+
}
579611
else
580612
{
581-
if (parameter.HasCustomAttributes && parameter.CustomAttributes.Any (ca => ca.AttributeType.Name == "IsReadOnlyAttribute"))
582-
buf.Append ("in ");
583-
else
584-
buf.Append ("ref ");
613+
buf.Append("ref ");
585614
}
615+
parameterType = byReferenceType.ElementType;
586616
}
587617

588618
if (parameter.HasCustomAttributes)
@@ -594,7 +624,7 @@ private StringBuilder AppendParameter (StringBuilder buf, ParameterDefinition pa
594624

595625
var context = AttributeParserContext.Create (parameter);
596626
var isNullableType = context.IsNullable ();
597-
buf.Append (GetTypeName (parameter.ParameterType, context));
627+
buf.Append (GetTypeName (parameterType, context));
598628
buf.Append (GetTypeNullableSymbol (parameter.ParameterType, isNullableType));
599629
buf.Append (" ");
600630
buf.Append (parameter.Name);
@@ -658,9 +688,6 @@ protected override string GetPropertyDeclaration (PropertyDefinition property)
658688
modifiers = "";
659689
buf.Append (modifiers).Append (' ');
660690

661-
if (property.PropertyType.IsByReference)
662-
buf.Append("ref ");
663-
664691
var context = AttributeParserContext.Create (property);
665692
var isNullableType = context.IsNullable ();
666693
var propertyReturnTypeName = GetTypeName (property.PropertyType, context);

mdoc/Mono.Documentation/Updater/Formatters/CppFormatters/CppFullMemberFormatter.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -776,10 +776,9 @@ protected override StringBuilder AppendArrayTypeName(StringBuilder buf, TypeRefe
776776
return buf;
777777
}
778778

779-
protected override StringBuilder AppendRefTypeName(StringBuilder buf, TypeReference type, IAttributeParserContext context)
779+
protected override StringBuilder AppendRefTypeName(StringBuilder buf, ByReferenceType type, IAttributeParserContext context)
780780
{
781-
TypeSpecification spec = type as TypeSpecification;
782-
_AppendTypeName(buf, spec != null ? spec.ElementType : type.GetElementType(), context);
781+
_AppendTypeName(buf, type.ElementType, context);
783782
AppendHat(buf, type);
784783
buf.Append(RefTypeModifier);
785784

mdoc/Mono.Documentation/Updater/Formatters/FSharpFormatter.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -613,10 +613,9 @@ protected override StringBuilder AppendGenericMethodConstraints(StringBuilder bu
613613
return buf;
614614
}
615615

616-
protected override StringBuilder AppendRefTypeName(StringBuilder buf, TypeReference type, IAttributeParserContext context)
616+
protected override StringBuilder AppendRefTypeName(StringBuilder buf, ByReferenceType type, IAttributeParserContext context)
617617
{
618-
ByReferenceType reftype = type as ByReferenceType;
619-
return AppendTypeName(buf, reftype?.ElementType, context);
618+
return AppendTypeName(buf, type.ElementType, context);
620619
}
621620

622621
protected override StringBuilder AppendModifiers(StringBuilder buf, MethodDefinition method)

mdoc/Mono.Documentation/Updater/Formatters/MemberFormatter.cs

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -143,24 +143,24 @@ protected StringBuilder _AppendTypeName (StringBuilder buf, TypeReference type,
143143

144144
StringBuilder interimBuilder = new StringBuilder();
145145

146-
if (ShouldStripModFromTypeName && type is RequiredModifierType)
146+
if (ShouldStripModFromTypeName && type is RequiredModifierType requiredModifierType)
147147
{
148-
AppendRequiredModifierTypeName(interimBuilder, type as RequiredModifierType, context);
148+
AppendRequiredModifierTypeName(interimBuilder, requiredModifierType, context);
149149
return SetBuffer(buf, interimBuilder, useTypeProjection: useTypeProjection);
150150
}
151-
if (ShouldStripModFromTypeName && type is OptionalModifierType)
151+
if (ShouldStripModFromTypeName && type is OptionalModifierType optionalModifierType)
152152
{
153-
AppendOptionalModifierTypeName(interimBuilder, type as OptionalModifierType, context);
153+
AppendOptionalModifierTypeName(interimBuilder, optionalModifierType, context);
154154
return SetBuffer(buf, interimBuilder, useTypeProjection: useTypeProjection);
155155
}
156156
if (type is ArrayType)
157157
{
158158
AppendArrayTypeName(interimBuilder, type, context);
159159
return SetBuffer(buf, interimBuilder, useTypeProjection: useTypeProjection);
160160
}
161-
if (type is ByReferenceType)
161+
if (type is ByReferenceType byReferenceType)
162162
{
163-
AppendRefTypeName (interimBuilder, type, context);
163+
AppendRefTypeName (interimBuilder, byReferenceType, context);
164164
return SetBuffer(buf, interimBuilder, useTypeProjection: useTypeProjection);
165165
}
166166
if (type is PointerType)
@@ -290,10 +290,9 @@ protected virtual string RefTypeModifier
290290
get { return "@"; }
291291
}
292292

293-
protected virtual StringBuilder AppendRefTypeName (StringBuilder buf, TypeReference type, IAttributeParserContext context)
293+
protected virtual StringBuilder AppendRefTypeName (StringBuilder buf, ByReferenceType type, IAttributeParserContext context)
294294
{
295-
TypeSpecification spec = type as TypeSpecification;
296-
return _AppendTypeName(buf, spec != null ? spec.ElementType : type.GetElementType(), context);
295+
return _AppendTypeName(buf, type.ElementType, context);
297296
}
298297

299298
protected virtual string PointerModifier

mdoc/Mono.Documentation/Updater/Formatters/MsxdocSlashDocMemberFormatter.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,9 @@ class MsxdocSlashDocMemberFormatter : SlashDocMemberFormatter
77
{
88
public MsxdocSlashDocMemberFormatter(TypeMap map) : base(map) { }
99

10-
protected override StringBuilder AppendRefTypeName(StringBuilder buf, TypeReference type, IAttributeParserContext context)
10+
protected override StringBuilder AppendRefTypeName(StringBuilder buf, ByReferenceType type, IAttributeParserContext context)
1111
{
12-
TypeSpecification spec = type as TypeSpecification;
13-
return _AppendTypeName(buf, spec != null ? spec.ElementType : type.GetElementType(), context).Append(RefTypeModifier);
12+
return _AppendTypeName(buf, type.ElementType, context).Append(RefTypeModifier);
1413
}
1514
}
1615
}

mdoc/Mono.Documentation/Updater/Formatters/SlashDocMemberFormatter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ protected override StringBuilder AppendTypeName (StringBuilder buf, TypeReferenc
8282
return buf;
8383
}
8484

85-
protected override StringBuilder AppendRefTypeName (StringBuilder buf, TypeReference type, IAttributeParserContext context)
85+
protected override StringBuilder AppendRefTypeName (StringBuilder buf, ByReferenceType type, IAttributeParserContext context)
8686
{
8787
return base.AppendRefTypeName (buf, type, context).Append (RefTypeModifier);
8888
}

mdoc/Mono.Documentation/frameworksbootstrapper.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,11 @@ public override void Run (IEnumerable<string> args)
4848
string dllPath = Path.Combine(sourcePath, fileNameWithoutExtension + ".dll");
4949
if (File.Exists(dllPath))
5050
{
51-
var version = FileVersionInfo.GetVersionInfo(dllPath).FileVersion;
52-
if (!string.IsNullOrEmpty(version))
51+
var fileVersionInfo = FileVersionInfo.GetVersionInfo(dllPath);
52+
53+
if (fileVersionInfo != null)
5354
{
55+
var version = $"{fileVersionInfo.FileMajorPart}.{fileVersionInfo.FileMinorPart}.{fileVersionInfo.FileBuildPart}.{fileVersionInfo.FilePrivatePart}";
5456
assemblyVersionMapping.Add(Path.GetFileName(xmlPath), new Version(version));
5557
}
5658
}

0 commit comments

Comments
 (0)