Skip to content

Commit

Permalink
CppSharp.AST.Declaration - fix return QualifiedOriginalName, Qualifie…
Browse files Browse the repository at this point in the history
…dLogicalOriginalName (#1740)

Fixed properties getters of QualifiedOriginalName, QualifiedLogicalOriginalName and methods GetQualifiedName(),  GatherNamespaces.
  • Loading branch information
stachu99 authored Jul 4, 2023
1 parent 0272532 commit 9923d79
Showing 1 changed file with 11 additions and 10 deletions.
21 changes: 11 additions & 10 deletions src/AST/Declaration.cs
Original file line number Diff line number Diff line change
Expand Up @@ -189,15 +189,16 @@ public virtual string Name
public static string QualifiedNameSeparator = "::";

public string GetQualifiedName(Func<Declaration, string> getName,
Func<Declaration, DeclarationContext> getNamespace)
Func<Declaration, DeclarationContext> getNamespace, bool getOriginal)
{
if (Namespace == null)
DeclarationContext @namespace = getNamespace(this);
if (@namespace == null)
return getName(this);

if (Namespace.IsRoot)
if (@namespace.IsRoot)
return getName(this);

var namespaces = GatherNamespaces(getNamespace(this));
var namespaces = GatherNamespaces(@namespace, getOriginal);

var names = namespaces.Select(getName).ToList();
names.Add(getName(this));
Expand All @@ -206,7 +207,7 @@ public string GetQualifiedName(Func<Declaration, string> getName,
return string.Join(QualifiedNameSeparator, names);
}

public static IEnumerable<Declaration> GatherNamespaces(DeclarationContext @namespace)
public static IEnumerable<Declaration> GatherNamespaces(DeclarationContext @namespace, bool getOriginal)
{
var namespaces = new Stack<Declaration>();

Expand All @@ -216,7 +217,7 @@ public static IEnumerable<Declaration> GatherNamespaces(DeclarationContext @name
var isInlineNamespace = currentNamespace is Namespace { IsInline: true };
if (!isInlineNamespace)
namespaces.Push(currentNamespace);
currentNamespace = currentNamespace.Namespace;
currentNamespace = getOriginal ? currentNamespace.OriginalNamespace : currentNamespace.Namespace;
}

return namespaces;
Expand All @@ -226,7 +227,7 @@ public string QualifiedName
{
get
{
return GetQualifiedName(decl => GetDeclName(decl, decl.Name), decl => decl.Namespace);
return GetQualifiedName(decl => GetDeclName(decl, decl.Name), decl => decl.Namespace, false);
}
}

Expand All @@ -235,7 +236,7 @@ public string QualifiedOriginalName
get
{
return GetQualifiedName(
decl => GetDeclName(decl, decl.OriginalName), decl => decl.OriginalNamespace);
decl => GetDeclName(decl, decl.OriginalName), decl => decl.OriginalNamespace, true);
}
}

Expand All @@ -244,7 +245,7 @@ public string QualifiedLogicalName
get
{
return GetQualifiedName(
decl => GetDeclName(decl, decl.LogicalName), decl => decl.Namespace);
decl => GetDeclName(decl, decl.LogicalName), decl => decl.Namespace, false);
}
}

Expand All @@ -253,7 +254,7 @@ public string QualifiedLogicalOriginalName
get
{
return GetQualifiedName(
decl => GetDeclName(decl, decl.LogicalOriginalName), decl => decl.OriginalNamespace);
decl => GetDeclName(decl, decl.LogicalOriginalName), decl => decl.OriginalNamespace, true);
}
}

Expand Down

0 comments on commit 9923d79

Please sign in to comment.