|
1 | 1 | using System; |
2 | 2 | using System.Collections.Generic; |
3 | 3 | using System.Linq; |
| 4 | +using Semmle.Util; |
4 | 5 |
|
5 | 6 | namespace Semmle.Extraction.CIL.Entities |
6 | 7 | { |
@@ -33,7 +34,7 @@ public FullyQualifiedNameParser(string name) |
33 | 34 | { |
34 | 35 | ExtractAssemblyName(ref name, out var lastBracketIndex); |
35 | 36 | ExtractTypeArguments(ref name, lastBracketIndex, out var containerTypeArguments); |
36 | | - ExtractContainer(ref name, containerTypeArguments); |
| 37 | + ContainerName = ExtractContainer(ref name, containerTypeArguments); |
37 | 38 |
|
38 | 39 | ShortName = name; |
39 | 40 | } |
@@ -70,51 +71,43 @@ private void ExtractTypeArguments(ref string name, int lastBracketIndex, out str |
70 | 71 |
|
71 | 72 | TypeArguments = thisTypeArgs; |
72 | 73 |
|
73 | | - if (string.IsNullOrWhiteSpace(containerTypeArgs)) |
74 | | - { |
75 | | - // containing type is not constructed generics |
76 | | - containerTypeArguments = ""; |
77 | | - } |
78 | | - else |
79 | | - { |
80 | | - // "T3,[T4, Assembly1, Version=...],,]" |
81 | | - containerTypeArguments = $"[{containerTypeArgs}]"; |
82 | | - } |
| 74 | + containerTypeArguments = string.IsNullOrWhiteSpace(containerTypeArgs) |
| 75 | + ? "" // containing type is not constructed generics |
| 76 | + : $"[{containerTypeArgs}]"; // "T3,[T4, Assembly1, Version=...],,]" |
83 | 77 |
|
84 | 78 | UnboundGenericTypeName = $"{name}{AssemblySuffix}"; |
85 | 79 | } |
86 | 80 |
|
87 | | - private void ExtractContainer(ref string name, string containerTypeArguments) |
| 81 | + private string ExtractContainer(ref string name, string containerTypeArguments) |
88 | 82 | { |
89 | 83 | var lastPlusIndex = name.LastIndexOf('+'); |
90 | 84 | IsContainerNamespace = lastPlusIndex < 0; |
91 | 85 | if (IsContainerNamespace) |
92 | 86 | { |
93 | | - ExtractContainerNamespace(ref name); |
94 | | - } |
95 | | - else |
96 | | - { |
97 | | - ExtractContainerType(ref name, containerTypeArguments, lastPlusIndex); |
| 87 | + return ExtractContainerNamespace(ref name); |
98 | 88 | } |
| 89 | + |
| 90 | + return ExtractContainerType(ref name, containerTypeArguments, lastPlusIndex); |
99 | 91 | } |
100 | 92 |
|
101 | | - private void ExtractContainerNamespace(ref string name) |
| 93 | + private static string ExtractContainerNamespace(ref string name) |
102 | 94 | { |
103 | 95 | var lastDotIndex = name.LastIndexOf('.'); |
104 | 96 | if (lastDotIndex >= 0) |
105 | 97 | { |
106 | | - (ContainerName, _, name) = name.Split(lastDotIndex, lastDotIndex + 1); |
107 | | - } |
108 | | - else |
109 | | - { |
110 | | - ContainerName = ""; // global namespace name |
| 98 | + string containerName; |
| 99 | + (containerName, _, name) = name.Split(lastDotIndex, lastDotIndex + 1); |
| 100 | + return containerName; |
111 | 101 | } |
| 102 | + |
| 103 | + return ""; // global namespace name |
112 | 104 | } |
113 | 105 |
|
114 | | - private void ExtractContainerType(ref string name, string containerTypeArguments, int lastPlusIndex) |
| 106 | + private string ExtractContainerType(ref string name, string containerTypeArguments, int lastPlusIndex) |
115 | 107 | { |
116 | | - (ContainerName, _, name) = name.Split(lastPlusIndex, lastPlusIndex + 1); |
117 | | - ContainerName = $"{ContainerName}{containerTypeArguments}{AssemblySuffix}"; |
| 108 | + string containerName; |
| 109 | + (containerName, _, name) = name.Split(lastPlusIndex, lastPlusIndex + 1); |
| 110 | + return $"{containerName}{containerTypeArguments}{AssemblySuffix}"; |
118 | 111 | } |
119 | 112 |
|
120 | 113 | private void ExtractAssemblyName(ref string name, out int lastBracketIndex) |
@@ -157,14 +150,10 @@ private static (string, IEnumerable<string>) ParseTypeArgumentStrings(string typ |
157 | 150 | thisTypeArgs.Push(typeArgs[(startCurrentType + 1)..^1]); |
158 | 151 | } |
159 | 152 |
|
160 | | - if (startCurrentType != 0) |
161 | | - { |
162 | | - typeArgs = typeArgs.Substring(0, startCurrentType - 1); |
163 | | - } |
164 | | - else |
165 | | - { |
166 | | - typeArgs = ""; |
167 | | - } |
| 153 | + typeArgs = startCurrentType != 0 |
| 154 | + ? typeArgs.Substring(0, startCurrentType - 1) |
| 155 | + : ""; |
| 156 | + |
168 | 157 | thisTypeArgCount--; |
169 | 158 | } |
170 | 159 | return (typeArgs, thisTypeArgs.ToList()); |
|
0 commit comments