Model: Allow null namespace list in Scope for getScopedFullName()
This commit is contained in:
@@ -459,7 +459,7 @@ namespace Il2CppInspector.Reflection
|
|||||||
|
|
||||||
// Check to see if there is a namespace in our using directives which brings this type into scope
|
// Check to see if there is a namespace in our using directives which brings this type into scope
|
||||||
// Sort by descending order of length to search the deepest namespaces first
|
// Sort by descending order of length to search the deepest namespaces first
|
||||||
: scope.Namespaces.OrderByDescending(n => n.Length).FirstOrDefault(n => declaringScope == n || declaringScope.StartsWith(n + "."));
|
: scope.Namespaces?.OrderByDescending(n => n.Length).FirstOrDefault(n => declaringScope == n || declaringScope.StartsWith(n + "."));
|
||||||
|
|
||||||
// minimallyScopedName will eventually contain the least qualified name needed to access the type
|
// minimallyScopedName will eventually contain the least qualified name needed to access the type
|
||||||
// Initially we set it as follows:
|
// Initially we set it as follows:
|
||||||
@@ -522,7 +522,8 @@ namespace Il2CppInspector.Reflection
|
|||||||
outerTypeName = minimallyScopedName.Split('.')[0];
|
outerTypeName = minimallyScopedName.Split('.')[0];
|
||||||
|
|
||||||
// Take matching type names from all namespaces in scope
|
// Take matching type names from all namespaces in scope
|
||||||
var matchingNamespaces = scope.Namespaces.Where(n => Assembly.Model.TypesByFullName.ContainsKey(n + "." + outerTypeName)).ToList();
|
var matchingNamespaces = scope.Namespaces?
|
||||||
|
.Where(n => Assembly.Model.TypesByFullName.ContainsKey(n + "." + outerTypeName)).ToList() ?? new List<string>();
|
||||||
|
|
||||||
// The global namespace is in scope so take every matching type from that too
|
// The global namespace is in scope so take every matching type from that too
|
||||||
if (Assembly.Model.TypesByFullName.ContainsKey(outerTypeName))
|
if (Assembly.Model.TypesByFullName.ContainsKey(outerTypeName))
|
||||||
@@ -542,7 +543,8 @@ namespace Il2CppInspector.Reflection
|
|||||||
|
|
||||||
// Finally, check if the selected name has ambiguity with any available namespaces in the current scope
|
// Finally, check if the selected name has ambiguity with any available namespaces in the current scope
|
||||||
// If so, use the full name with the mutual root scope cut off from the start
|
// If so, use the full name with the mutual root scope cut off from the start
|
||||||
var checkNamespaces = scope.Namespaces.Select(ns => (!string.IsNullOrEmpty(ns)? ns + "." : "") + minimallyScopedName).ToList();
|
var checkNamespaces = scope.Namespaces?
|
||||||
|
.Select(ns => (!string.IsNullOrEmpty(ns)? ns + "." : "") + minimallyScopedName).ToList() ?? new List<string>();
|
||||||
|
|
||||||
if (Assembly.Model.Namespaces.Intersect(checkNamespaces).Any())
|
if (Assembly.Model.Namespaces.Intersect(checkNamespaces).Any())
|
||||||
minimallyScopedName = mutualRootScope.Length > 0 ? usedType.Substring(mutualRootScope.Length + 1) : usedType;
|
minimallyScopedName = mutualRootScope.Length > 0 ? usedType.Substring(mutualRootScope.Length + 1) : usedType;
|
||||||
|
|||||||
Reference in New Issue
Block a user