mirror of
https://github.com/github/codeql.git
synced 2026-04-23 07:45:17 +02:00
Merge pull request #15700 from geoffw0/extensions
Swift: Workaround for TypeDecl.getFullName issue.
This commit is contained in:
4
swift/ql/lib/change-notes/2024-02-22-extension-patch.md
Normal file
4
swift/ql/lib/change-notes/2024-02-22-extension-patch.md
Normal file
@@ -0,0 +1,4 @@
|
||||
---
|
||||
category: fix
|
||||
---
|
||||
* Fixed an issue where `TypeDecl.getFullName` would get stuck in an loop and fail when minor database inconsistencies are present.
|
||||
@@ -2,9 +2,10 @@ private import codeql.swift.generated.decl.ExtensionDecl
|
||||
|
||||
class ExtensionDecl extends Generated::ExtensionDecl {
|
||||
override string toString() {
|
||||
result = "extension of " + this.getExtendedTypeDecl().toString()
|
||||
result =
|
||||
"extension of " + unique(NominalTypeDecl td | td = this.getExtendedTypeDecl()).toString()
|
||||
or
|
||||
not exists(this.getExtendedTypeDecl()) and
|
||||
count(this.getExtendedTypeDecl()) != 1 and
|
||||
result = "extension"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,13 +109,13 @@ class TypeDecl extends Generated::TypeDecl {
|
||||
cached
|
||||
string getFullName() {
|
||||
not this.getEnclosingDecl() instanceof TypeDecl and
|
||||
not this.getEnclosingDecl() instanceof ExtensionDecl and
|
||||
not count(this.getEnclosingDecl().(ExtensionDecl).getExtendedTypeDecl()) = 1 and
|
||||
result = this.getName()
|
||||
or
|
||||
result = this.getEnclosingDecl().(TypeDecl).getFullName() + "." + this.getName()
|
||||
or
|
||||
result =
|
||||
this.getEnclosingDecl().(ExtensionDecl).getExtendedTypeDecl().getFullName() + "." +
|
||||
this.getName()
|
||||
unique(NominalTypeDecl td | td = this.getEnclosingDecl().(ExtensionDecl).getExtendedTypeDecl())
|
||||
.getFullName() + "." + this.getName()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user