Commit 3b53feb
committed
Beautify enum declarations by referencing previously declared members
Enum members whose value duplicates an earlier member now reference it
(Item2B = Item2A), [Flags] members combine earlier single-bit members
(All = Item1 | Item2 | Item3) or their complement (NotItem1 = ~Item1)
instead of showing a bare number.
Several guardrails keep the output faithful to how such enums are
written by hand: only previously declared members are referenced (field
row order); a multi-bit value lying entirely within a larger, earlier
member is a field encoding inside that mask, not a flag union, and
stays numeric, as do zero-valued members of [Flags] enums, which
routinely have several unrelated zero members. The ~X form is
suppressed in byte/ushort enum declarations, where the initializer
constant folds in int and would not compile. Enums with unusual
underlying types (bool, native int) keep the plain constant conversion.
With these rules, decompiling System.Private.CoreLib reproduces the
hand-written declarations of TypeAttributes, MethodAttributes,
AttributeTargets and FileAttributes almost verbatim.
Assisted-by: Claude:claude-fable-5:Claude Code1 parent 9898add commit 3b53feb
4 files changed
Lines changed: 213 additions & 24 deletions
File tree
- ICSharpCode.Decompiler.Tests/TestCases/Pretty
- ICSharpCode.Decompiler
- CSharp
- Syntax
- Util
Lines changed: 98 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
51 | 51 | | |
52 | 52 | | |
53 | 53 | | |
54 | | - | |
| 54 | + | |
55 | 55 | | |
56 | 56 | | |
57 | 57 | | |
| |||
88 | 88 | | |
89 | 89 | | |
90 | 90 | | |
91 | | - | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
92 | 101 | | |
93 | 102 | | |
94 | 103 | | |
| |||
102 | 111 | | |
103 | 112 | | |
104 | 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 | + | |
105 | 186 | | |
106 | 187 | | |
107 | 188 | | |
| |||
142 | 223 | | |
143 | 224 | | |
144 | 225 | | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
145 | 241 | | |
146 | 242 | | |
147 | 243 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2369 | 2369 | | |
2370 | 2370 | | |
2371 | 2371 | | |
2372 | | - | |
| 2372 | + | |
| 2373 | + | |
| 2374 | + | |
| 2375 | + | |
| 2376 | + | |
| 2377 | + | |
| 2378 | + | |
| 2379 | + | |
| 2380 | + | |
| 2381 | + | |
| 2382 | + | |
| 2383 | + | |
2373 | 2384 | | |
2374 | 2385 | | |
2375 | 2386 | | |
| |||
Lines changed: 79 additions & 21 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
23 | 23 | | |
24 | 24 | | |
25 | 25 | | |
| 26 | + | |
26 | 27 | | |
27 | 28 | | |
28 | 29 | | |
| |||
1293 | 1294 | | |
1294 | 1295 | | |
1295 | 1296 | | |
1296 | | - | |
| 1297 | + | |
| 1298 | + | |
| 1299 | + | |
| 1300 | + | |
| 1301 | + | |
| 1302 | + | |
| 1303 | + | |
| 1304 | + | |
| 1305 | + | |
| 1306 | + | |
1297 | 1307 | | |
1298 | 1308 | | |
1299 | 1309 | | |
| 1310 | + | |
1300 | 1311 | | |
1301 | 1312 | | |
1302 | | - | |
| 1313 | + | |
1303 | 1314 | | |
1304 | | - | |
| 1315 | + | |
| 1316 | + | |
1305 | 1317 | | |
1306 | | - | |
| 1318 | + | |
| 1319 | + | |
| 1320 | + | |
| 1321 | + | |
| 1322 | + | |
| 1323 | + | |
1307 | 1324 | | |
1308 | | - | |
1309 | | - | |
1310 | | - | |
1311 | | - | |
| 1325 | + | |
| 1326 | + | |
| 1327 | + | |
| 1328 | + | |
| 1329 | + | |
1312 | 1330 | | |
1313 | 1331 | | |
1314 | | - | |
| 1332 | + | |
1315 | 1333 | | |
| 1334 | + | |
| 1335 | + | |
| 1336 | + | |
| 1337 | + | |
1316 | 1338 | | |
1317 | 1339 | | |
1318 | 1340 | | |
| |||
1333 | 1355 | | |
1334 | 1356 | | |
1335 | 1357 | | |
1336 | | - | |
| 1358 | + | |
1337 | 1359 | | |
1338 | | - | |
| 1360 | + | |
1339 | 1361 | | |
1340 | 1362 | | |
| 1363 | + | |
| 1364 | + | |
| 1365 | + | |
1341 | 1366 | | |
1342 | 1367 | | |
1343 | | - | |
| 1368 | + | |
1344 | 1369 | | |
1345 | 1370 | | |
1346 | 1371 | | |
1347 | 1372 | | |
1348 | 1373 | | |
1349 | 1374 | | |
1350 | 1375 | | |
1351 | | - | |
| 1376 | + | |
1352 | 1377 | | |
1353 | | - | |
| 1378 | + | |
1354 | 1379 | | |
1355 | 1380 | | |
1356 | 1381 | | |
| |||
1359 | 1384 | | |
1360 | 1385 | | |
1361 | 1386 | | |
1362 | | - | |
| 1387 | + | |
| 1388 | + | |
| 1389 | + | |
| 1390 | + | |
| 1391 | + | |
| 1392 | + | |
| 1393 | + | |
| 1394 | + | |
1363 | 1395 | | |
1364 | 1396 | | |
1365 | 1397 | | |
1366 | 1398 | | |
1367 | 1399 | | |
1368 | 1400 | | |
1369 | | - | |
| 1401 | + | |
1370 | 1402 | | |
1371 | 1403 | | |
1372 | 1404 | | |
1373 | 1405 | | |
1374 | | - | |
1375 | 1406 | | |
1376 | | - | |
| 1407 | + | |
| 1408 | + | |
| 1409 | + | |
| 1410 | + | |
| 1411 | + | |
| 1412 | + | |
| 1413 | + | |
| 1414 | + | |
1377 | 1415 | | |
1378 | 1416 | | |
1379 | | - | |
| 1417 | + | |
1380 | 1418 | | |
1381 | 1419 | | |
1382 | | - | |
1383 | | - | |
| 1420 | + | |
| 1421 | + | |
| 1422 | + | |
| 1423 | + | |
1384 | 1424 | | |
1385 | 1425 | | |
1386 | 1426 | | |
| |||
1395 | 1435 | | |
1396 | 1436 | | |
1397 | 1437 | | |
| 1438 | + | |
| 1439 | + | |
| 1440 | + | |
| 1441 | + | |
| 1442 | + | |
| 1443 | + | |
| 1444 | + | |
| 1445 | + | |
| 1446 | + | |
| 1447 | + | |
| 1448 | + | |
| 1449 | + | |
| 1450 | + | |
| 1451 | + | |
| 1452 | + | |
| 1453 | + | |
| 1454 | + | |
| 1455 | + | |
1398 | 1456 | | |
1399 | 1457 | | |
1400 | 1458 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
253 | 253 | | |
254 | 254 | | |
255 | 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 | + | |
256 | 280 | | |
257 | 281 | | |
258 | 282 | | |
| |||
0 commit comments