Skip to content

Commit 540c20e

Browse files
authored
Merge pull request github#15700 from geoffw0/extensions
Swift: Workaround for TypeDecl.getFullName issue.
2 parents 699dddc + 797fee9 commit 540c20e

File tree

3 files changed

+10
-5
lines changed

3 files changed

+10
-5
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
category: fix
3+
---
4+
* Fixed an issue where `TypeDecl.getFullName` would get stuck in an loop and fail when minor database inconsistencies are present.

swift/ql/lib/codeql/swift/elements/decl/ExtensionDecl.qll

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@ private import codeql.swift.generated.decl.ExtensionDecl
22

33
class ExtensionDecl extends Generated::ExtensionDecl {
44
override string toString() {
5-
result = "extension of " + this.getExtendedTypeDecl().toString()
5+
result =
6+
"extension of " + unique(NominalTypeDecl td | td = this.getExtendedTypeDecl()).toString()
67
or
7-
not exists(this.getExtendedTypeDecl()) and
8+
count(this.getExtendedTypeDecl()) != 1 and
89
result = "extension"
910
}
1011
}

swift/ql/lib/codeql/swift/elements/decl/TypeDecl.qll

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -109,13 +109,13 @@ class TypeDecl extends Generated::TypeDecl {
109109
cached
110110
string getFullName() {
111111
not this.getEnclosingDecl() instanceof TypeDecl and
112-
not this.getEnclosingDecl() instanceof ExtensionDecl and
112+
not count(this.getEnclosingDecl().(ExtensionDecl).getExtendedTypeDecl()) = 1 and
113113
result = this.getName()
114114
or
115115
result = this.getEnclosingDecl().(TypeDecl).getFullName() + "." + this.getName()
116116
or
117117
result =
118-
this.getEnclosingDecl().(ExtensionDecl).getExtendedTypeDecl().getFullName() + "." +
119-
this.getName()
118+
unique(NominalTypeDecl td | td = this.getEnclosingDecl().(ExtensionDecl).getExtendedTypeDecl())
119+
.getFullName() + "." + this.getName()
120120
}
121121
}

0 commit comments

Comments
 (0)