|
|
|
@ -525,14 +525,13 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
@@ -525,14 +525,13 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
|
|
|
|
|
// Handle top-level types
|
|
|
|
|
if (string.IsNullOrEmpty(genericType.Namespace)) |
|
|
|
|
{ |
|
|
|
|
result.Target = new SimpleType("global"); |
|
|
|
|
if (AddResolveResultAnnotations && resolver != null) |
|
|
|
|
result.Target.AddAnnotation(new NamespaceResolveResult(resolver.Compilation.RootNamespace)); |
|
|
|
|
result.Target = MakeGlobal(); |
|
|
|
|
result.IsDoubleColon = true; |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
result.Target = ConvertNamespace(genericType.Namespace, out _); |
|
|
|
|
result.Target = ConvertNamespace(genericType.Namespace, |
|
|
|
|
out _, genericType.Namespace == genericType.Name); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
result.MemberName = genericType.Name; |
|
|
|
@ -605,6 +604,11 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
@@ -605,6 +604,11 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public AstType ConvertNamespace(string namespaceName, out NamespaceResolveResult nrr) |
|
|
|
|
{ |
|
|
|
|
return ConvertNamespace(namespaceName, out nrr, requiresGlobalPrefix: false); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
AstType ConvertNamespace(string namespaceName, out NamespaceResolveResult nrr, bool requiresGlobalPrefix) |
|
|
|
|
{ |
|
|
|
|
if (resolver != null) |
|
|
|
|
{ |
|
|
|
@ -633,18 +637,27 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
@@ -633,18 +637,27 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
|
|
|
|
|
{ |
|
|
|
|
if (IsValidNamespace(namespaceName, out nrr)) |
|
|
|
|
{ |
|
|
|
|
var ns = MakeSimpleType(namespaceName); |
|
|
|
|
AstType ns; |
|
|
|
|
if (requiresGlobalPrefix) |
|
|
|
|
{ |
|
|
|
|
ns = new MemberType { |
|
|
|
|
Target = MakeGlobal(), |
|
|
|
|
IsDoubleColon = true, |
|
|
|
|
MemberName = namespaceName |
|
|
|
|
}; |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
ns = MakeSimpleType(namespaceName); |
|
|
|
|
} |
|
|
|
|
if (AddResolveResultAnnotations && nrr != null) |
|
|
|
|
ns.AddAnnotation(nrr); |
|
|
|
|
return ns; |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
var target = new SimpleType("global"); |
|
|
|
|
if (AddResolveResultAnnotations) |
|
|
|
|
target.AddAnnotation(new NamespaceResolveResult(resolver.Compilation.RootNamespace)); |
|
|
|
|
var ns = new MemberType { |
|
|
|
|
Target = target, |
|
|
|
|
Target = MakeGlobal(), |
|
|
|
|
IsDoubleColon = true, |
|
|
|
|
MemberName = namespaceName |
|
|
|
|
}; |
|
|
|
@ -661,7 +674,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
@@ -661,7 +674,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
|
|
|
|
|
{ |
|
|
|
|
string parentNamespace = namespaceName.Substring(0, pos); |
|
|
|
|
string localNamespace = namespaceName.Substring(pos + 1); |
|
|
|
|
var parentNS = ConvertNamespace(parentNamespace, out var parentNRR); |
|
|
|
|
var parentNS = ConvertNamespace(parentNamespace, out var parentNRR, requiresGlobalPrefix); |
|
|
|
|
var ns = new MemberType { |
|
|
|
|
Target = parentNS, |
|
|
|
|
MemberName = localNamespace |
|
|
|
@ -695,6 +708,14 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
@@ -695,6 +708,14 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
|
|
|
|
|
return new SimpleType(name); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
SimpleType MakeGlobal() |
|
|
|
|
{ |
|
|
|
|
var global = new SimpleType("global"); |
|
|
|
|
if (AddResolveResultAnnotations && resolver != null) |
|
|
|
|
global.AddAnnotation(new NamespaceResolveResult(resolver.Compilation.RootNamespace)); |
|
|
|
|
return global; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static MemberType MakeMemberType(AstType target, string name) |
|
|
|
|
{ |
|
|
|
|
if (name == "_") |
|
|
|
|