C#: Move qualified name computation into QualifiedName.qll

This commit is contained in:
Tom Hvitved
2023-11-01 14:39:37 +01:00
parent e75562e508
commit c717e346fb
11 changed files with 224 additions and 136 deletions

View File

@@ -8,14 +8,6 @@ private import semmle.code.csharp.commons.QualifiedName
/** A declaration. */
class Declaration extends NamedElement, @dotnet_declaration {
override predicate hasQualifiedName(string qualifier, string name) {
exists(string dqualifier, string dname |
this.getDeclaringType().hasQualifiedName(dqualifier, dname) and
qualifier = getQualifiedName(dqualifier, dname)
) and
name = this.getName()
}
/** Gets the name of this declaration, without additional decoration such as `<...>`. */
string getUndecoratedName() { none() }

View File

@@ -26,11 +26,7 @@ class Namespace extends Declaration, @namespace {
* `qualifier`=`System.Collections` and `name`=`Generic`.
*/
override predicate hasQualifiedName(string qualifier, string name) {
exists(string pqualifier, string pname |
this.getParentNamespace().hasQualifiedName(pqualifier, pname) and
qualifier = getQualifiedName(pqualifier, pname)
) and
name = this.getName()
namespaceHasQualifiedName(this, qualifier, name)
}
/** Gets a textual representation of this namespace. */
@@ -51,7 +47,7 @@ class Namespace extends Declaration, @namespace {
*/
string getFullName() {
exists(string namespace, string name |
this.hasQualifiedName(namespace, name) and
namespaceHasQualifiedName(this, namespace, name) and
result = getQualifiedName(namespace, name)
)
}
@@ -60,8 +56,4 @@ class Namespace extends Declaration, @namespace {
/** The global namespace. */
class GlobalNamespace extends Namespace {
GlobalNamespace() { this.getName() = "" }
override predicate hasQualifiedName(string qualifier, string name) {
qualifier = "" and name = ""
}
}