1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
|
From bf5c5a72978a0f9d32c9934e216bfaaf2d1717be Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Robert-Andr=C3=A9=20Mauchin?= <zebob.m@gmail.com>
Date: Mon, 3 Feb 2020 18:38:58 +0100
Subject: [PATCH] Replace new Csharp features with old ones
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Replace new Csharp features like switch statements and
"is null" to allow mdoc.exe to build with mcs.
Signed-off-by: Robert-André Mauchin <zebob.m@gmail.com>
---
mdoc/Mono.Documentation/Updater/DocUtils.cs | 91 ++++++++++---------
.../CppFormatters/CppFullMemberFormatter.cs | 26 +++---
.../Updater/Formatters/FSharpFormatter.cs | 16 ++--
.../Updater/Formatters/JsFormatter.cs | 27 +++---
.../Updater/Formatters/JsMemberFormatter.cs | 9 +-
5 files changed, 85 insertions(+), 84 deletions(-)
diff --git a/mdoc/Mono.Documentation/Updater/DocUtils.cs b/mdoc/Mono.Documentation/Updater/DocUtils.cs
index 331ef90..fe2da59 100644
--- a/mdoc/Mono.Documentation/Updater/DocUtils.cs
+++ b/mdoc/Mono.Documentation/Updater/DocUtils.cs
@@ -287,24 +287,24 @@ namespace Mono.Documentation.Updater
return inst != null
? inst.GenericArguments.Count
: type.GenericParameters.Count;
- }
+ }
class TypeEquality : IEqualityComparer<TypeReference>
- {
- bool IEqualityComparer<TypeReference>.Equals (TypeReference x, TypeReference y)
+ {
+ bool IEqualityComparer<TypeReference>.Equals (TypeReference x, TypeReference y)
+ {
+ if (x == null && y == null) return true;
+ if (x == null || y == null) return false;
+ return x.FullName == y.FullName;
+ }
+
+ int IEqualityComparer<TypeReference>.GetHashCode (TypeReference obj)
{
- if (x is null && y is null) return true;
- if (x is null || y is null) return false;
- return x.FullName == y.FullName;
- }
-
- int IEqualityComparer<TypeReference>.GetHashCode (TypeReference obj)
- {
- return obj.GetHashCode ();
+ return obj.GetHashCode ();
}
}
static TypeEquality typeEqualityComparer = new TypeEquality ();
-
+
public static IEnumerable<TypeReference> GetAllPublicInterfaces (TypeDefinition type)
{
return GetAllInterfacesFromType (type)
@@ -314,7 +314,7 @@ namespace Mono.Documentation.Updater
private static IEnumerable<TypeReference> GetAllInterfacesFromType(TypeDefinition type)
{
- if (type is null)
+ if (type == null)
yield break;
foreach(var i in type.Interfaces)
@@ -525,26 +525,29 @@ namespace Mono.Documentation.Updater
FillUnifiedMemberTypeNames(unifiedTypeNames, memberReference as IGenericParameterProvider);// Fill the member generic parameters unified names as M0, M1....
FillUnifiedTypeNames(unifiedTypeNames, memberReference.DeclaringType, genericInterface);// Fill the type generic parameters unified names as T0, T1....
- switch (memberReference)
- {
- case IMethodSignature methodSignature:
- buf.Append(GetUnifiedTypeName(methodSignature.ReturnType, unifiedTypeNames)).Append(" ");
- buf.Append(SimplifyName(memberReference.Name)).Append(" ");
- AppendParameters(buf, methodSignature.Parameters, unifiedTypeNames);
- break;
- case PropertyDefinition propertyReference:
- buf.Append(GetUnifiedTypeName(propertyReference.PropertyType, unifiedTypeNames)).Append(" ");
- if (propertyReference.GetMethod != null)
- buf.Append("get").Append(" ");
- if (propertyReference.SetMethod != null)
- buf.Append("set").Append(" ");
- buf.Append(SimplifyName(memberReference.Name)).Append(" ");
- AppendParameters(buf, propertyReference.Parameters, unifiedTypeNames);
- break;
- case EventDefinition eventReference:
- buf.Append(GetUnifiedTypeName(eventReference.EventType, unifiedTypeNames)).Append(" ");
- buf.Append(SimplifyName(memberReference.Name)).Append(" ");
- break;
+ if (memberReference is IMethodSignature)
+ {
+ IMethodSignature methodSignature = (IMethodSignature)memberReference;
+ buf.Append(GetUnifiedTypeName(methodSignature.ReturnType, unifiedTypeNames)).Append(" ");
+ buf.Append(SimplifyName(memberReference.Name)).Append(" ");
+ AppendParameters(buf, methodSignature.Parameters, unifiedTypeNames);
+ }
+ if (memberReference is PropertyDefinition)
+ {
+ PropertyDefinition propertyReference = (PropertyDefinition)memberReference;
+ buf.Append(GetUnifiedTypeName(propertyReference.PropertyType, unifiedTypeNames)).Append(" ");
+ if (propertyReference.GetMethod != null)
+ buf.Append("get").Append(" ");
+ if (propertyReference.SetMethod != null)
+ buf.Append("set").Append(" ");
+ buf.Append(SimplifyName(memberReference.Name)).Append(" ");
+ AppendParameters(buf, propertyReference.Parameters, unifiedTypeNames);
+ }
+ if (memberReference is EventDefinition)
+ {
+ EventDefinition eventReference = (EventDefinition)memberReference;
+ buf.Append(GetUnifiedTypeName(eventReference.EventType, unifiedTypeNames)).Append(" ");
+ buf.Append(SimplifyName(memberReference.Name)).Append(" ");
}
var memberUnifiedTypeNames = new Dictionary<string, string>();
@@ -666,14 +669,20 @@ namespace Mono.Documentation.Updater
/// </summary>
private static Collection<MethodReference> GetOverrides(MemberReference memberReference)
{
- switch (memberReference)
+ if (memberReference is MethodDefinition)
+ {
+ MethodDefinition methodDefinition = (MethodDefinition)memberReference;
+ return methodDefinition.Overrides;
+ }
+ if (memberReference is PropertyDefinition)
+ {
+ PropertyDefinition propertyDefinition = (PropertyDefinition)memberReference;
+ return (propertyDefinition.GetMethod ?? propertyDefinition.SetMethod)?.Overrides;
+ }
+ if (memberReference is EventDefinition)
{
- case MethodDefinition methodDefinition:
- return methodDefinition.Overrides;
- case PropertyDefinition propertyDefinition:
- return (propertyDefinition.GetMethod ?? propertyDefinition.SetMethod)?.Overrides;
- case EventDefinition evendDefinition:
- return evendDefinition.AddMethod.Overrides;
+ EventDefinition evendDefinition = (EventDefinition)memberReference;
+ return evendDefinition.AddMethod.Overrides;
}
return null;
@@ -692,4 +701,4 @@ namespace Mono.Documentation.Updater
return method.Name.StartsWith("op_", StringComparison.Ordinal);
}
}
-}
\ No newline at end of file
+}
diff --git a/mdoc/Mono.Documentation/Updater/Formatters/CppFormatters/CppFullMemberFormatter.cs b/mdoc/Mono.Documentation/Updater/Formatters/CppFormatters/CppFullMemberFormatter.cs
index 7d68c38..6b9bcf6 100644
--- a/mdoc/Mono.Documentation/Updater/Formatters/CppFormatters/CppFullMemberFormatter.cs
+++ b/mdoc/Mono.Documentation/Updater/Formatters/CppFormatters/CppFullMemberFormatter.cs
@@ -1029,20 +1029,16 @@ namespace Mono.Documentation.Updater.Formatters.CppFormatters
if (mref.IsDefinition == false)
mref = mref.Resolve() as MemberReference;
- switch (mref)
- {
- case FieldDefinition field:
- return IsSupportedField(field);
- case MethodDefinition method:
- return IsSupportedMethod(method);
- case PropertyDefinition property:
- return IsSupportedProperty(property);
- case EventDefinition @event:
- return IsSupportedEvent(@event);
- case AttachedPropertyDefinition _:
- case AttachedEventDefinition _:
- return false;
- }
+ if (mref is FieldDefinition)
+ return IsSupportedField((FieldDefinition)mref);
+ else if (mref is MethodDefinition)
+ return IsSupportedMethod((MethodDefinition)mref);
+ else if (mref is PropertyDefinition)
+ return IsSupportedProperty((PropertyDefinition)mref);
+ else if (mref is EventDefinition)
+ return IsSupportedEvent((EventDefinition)mref);
+ else if (mref is AttachedPropertyDefinition || mref is AttachedEventDefinition)
+ return false;
throw new NotSupportedException("Unsupported member type: " + mref?.GetType().FullName);
}
@@ -1119,4 +1115,4 @@ namespace Mono.Documentation.Updater.Formatters.CppFormatters
return true;
}
}
-}
\ No newline at end of file
+}
diff --git a/mdoc/Mono.Documentation/Updater/Formatters/FSharpFormatter.cs b/mdoc/Mono.Documentation/Updater/Formatters/FSharpFormatter.cs
index 236d56f..f91bf9a 100644
--- a/mdoc/Mono.Documentation/Updater/Formatters/FSharpFormatter.cs
+++ b/mdoc/Mono.Documentation/Updater/Formatters/FSharpFormatter.cs
@@ -1029,15 +1029,15 @@ namespace Mono.Documentation.Updater
}
return false;
}
- switch (mref)
+ if (mref is MethodDefinition)
{
- case MethodDefinition method:
- return !(method.HasCustomAttributes && method.CustomAttributes.Any(
- ca => ca.GetDeclaringType() ==
- "System.Diagnostics.Contracts.ContractInvariantMethodAttribute"
- || ca.GetDeclaringType() ==
- Consts.CompilerGeneratedAttribute))
- && AppendVisibility(new StringBuilder(), method) != null;
+ MethodDefinition method = (MethodDefinition)mref;
+ return !(method.HasCustomAttributes && method.CustomAttributes.Any(
+ ca => ca.GetDeclaringType() ==
+ "System.Diagnostics.Contracts.ContractInvariantMethodAttribute"
+ || ca.GetDeclaringType() ==
+ Consts.CompilerGeneratedAttribute))
+ && AppendVisibility(new StringBuilder(), method) != null;
}
return true;
diff --git a/mdoc/Mono.Documentation/Updater/Formatters/JsFormatter.cs b/mdoc/Mono.Documentation/Updater/Formatters/JsFormatter.cs
index f8b2f04..92b8f3c 100644
--- a/mdoc/Mono.Documentation/Updater/Formatters/JsFormatter.cs
+++ b/mdoc/Mono.Documentation/Updater/Formatters/JsFormatter.cs
@@ -68,23 +68,22 @@ namespace mdoc.Mono.Documentation.Updater.Formatters
public override bool IsSupported(MemberReference mref)
{
- switch (mref)
+ if (mref is PropertyDefinition)
{
- case PropertyDefinition propertyDefinition:
- if (!IsPropertySupported(propertyDefinition))
- return false;
- break;
- case MethodDefinition methodDefinition:
- if (!IsMethodSupported(methodDefinition))
- return false;
- break;
- case FieldDefinition _:
- return false;// In WinRT fields can be exposed only by structures.
- case AttachedEventDefinition _:
+ PropertyDefinition propertyDefinition = (PropertyDefinition)mref;
+ if (!IsPropertySupported(propertyDefinition))
return false;
- case AttachedPropertyDefinition _:
+ }
+ else if (mref is MethodDefinition)
+ {
+ MethodDefinition methodDefinition = (MethodDefinition)mref;
+ if (!IsMethodSupported(methodDefinition))
return false;
}
+ else if (mref is FieldDefinition // In WinRT fields can be exposed only by structures.
+ || mref is AttachedEventDefinition
+ || mref is AttachedPropertyDefinition)
+ return false;
var member = mref.Resolve();
return member != null
@@ -169,4 +168,4 @@ namespace mdoc.Mono.Documentation.Updater.Formatters
return fullName;
}
}
-}
\ No newline at end of file
+}
diff --git a/mdoc/Mono.Documentation/Updater/Formatters/JsMemberFormatter.cs b/mdoc/Mono.Documentation/Updater/Formatters/JsMemberFormatter.cs
index 6bc6995..f6c8af6 100644
--- a/mdoc/Mono.Documentation/Updater/Formatters/JsMemberFormatter.cs
+++ b/mdoc/Mono.Documentation/Updater/Formatters/JsMemberFormatter.cs
@@ -58,12 +58,9 @@ namespace mdoc.Mono.Documentation.Updater.Formatters
public override bool IsSupported(MemberReference mref)
{
- switch (mref)
+ if (mref is PropertyDefinition || mref is EventDefinition)
{
- case PropertyDefinition _:
- return false;
- case EventDefinition _:
- return false;
+ return false;
}
return base.IsSupported(mref);
}
@@ -82,4 +79,4 @@ namespace mdoc.Mono.Documentation.Updater.Formatters
return base.IsSupported(tref);
}
}
-}
\ No newline at end of file
+}
--
2.24.1
|