Skip to content

Commit 7285704

Browse files
authored
Merge pull request github#12876 from geoffw0/extensiondecl
Swift: Improve ExtensionDecl.toString
2 parents e895cac + 49dccaa commit 7285704

File tree

9 files changed

+57
-18
lines changed

9 files changed

+57
-18
lines changed

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@ private import codeql.swift.generated.decl.ExtensionDecl
22

33
class ExtensionDecl extends Generated::ExtensionDecl {
44
override string toString() {
5-
result = "extension" // TODO: Once we extract the name of this one we can provide a better `toString`.
5+
result = "extension of " + getExtendedTypeDecl().toString()
6+
or
7+
not exists(getExtendedTypeDecl()) and
8+
result = "extension"
69
}
710
}

swift/ql/test/extractor-tests/declarations/all.expected

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@
231231
| declarations.swift:132:5:132:15 | willSet | |
232232
| declarations.swift:134:5:134:5 | self | |
233233
| declarations.swift:134:5:134:14 | didSet | |
234-
| declarations.swift:138:1:142:1 | extension | |
234+
| declarations.swift:138:1:142:1 | extension of Int | |
235235
| declarations.swift:139:3:141:3 | id() | |
236236
| declarations.swift:139:8:139:8 | self | |
237237
| declarations.swift:144:1:144:7 | { ... } | |
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
| extensions.swift:5:1:9:1 | extension | getModule: | file://:0:0:0:0 | extensions | getNumberOfMembers: | 3 | getNumberOfGenericTypeParams: | 0 | getExtendedTypeDecl: | extensions.swift:1:1:1:11 | S | getNumberOfProtocols: | 0 |
2-
| extensions.swift:11:1:15:1 | extension | getModule: | file://:0:0:0:0 | extensions | getNumberOfMembers: | 3 | getNumberOfGenericTypeParams: | 0 | getExtendedTypeDecl: | extensions.swift:3:1:3:10 | C | getNumberOfProtocols: | 0 |
3-
| extensions.swift:21:1:23:1 | extension | getModule: | file://:0:0:0:0 | extensions | getNumberOfMembers: | 1 | getNumberOfGenericTypeParams: | 0 | getExtendedTypeDecl: | extensions.swift:1:1:1:11 | S | getNumberOfProtocols: | 1 |
4-
| extensions.swift:27:1:29:1 | extension | getModule: | file://:0:0:0:0 | extensions | getNumberOfMembers: | 1 | getNumberOfGenericTypeParams: | 0 | getExtendedTypeDecl: | extensions.swift:3:1:3:10 | C | getNumberOfProtocols: | 2 |
1+
| extensions.swift:5:1:9:1 | extension of S | getModule: | file://:0:0:0:0 | extensions | getNumberOfMembers: | 3 | getNumberOfGenericTypeParams: | 0 | getExtendedTypeDecl: | extensions.swift:1:1:1:11 | S | getNumberOfProtocols: | 0 |
2+
| extensions.swift:11:1:15:1 | extension of C | getModule: | file://:0:0:0:0 | extensions | getNumberOfMembers: | 3 | getNumberOfGenericTypeParams: | 0 | getExtendedTypeDecl: | extensions.swift:3:1:3:10 | C | getNumberOfProtocols: | 0 |
3+
| extensions.swift:21:1:23:1 | extension of S | getModule: | file://:0:0:0:0 | extensions | getNumberOfMembers: | 1 | getNumberOfGenericTypeParams: | 0 | getExtendedTypeDecl: | extensions.swift:1:1:1:11 | S | getNumberOfProtocols: | 1 |
4+
| extensions.swift:27:1:29:1 | extension of C | getModule: | file://:0:0:0:0 | extensions | getNumberOfMembers: | 1 | getNumberOfGenericTypeParams: | 0 | getExtendedTypeDecl: | extensions.swift:3:1:3:10 | C | getNumberOfProtocols: | 2 |
Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
| extensions.swift:5:1:9:1 | extension | 0 | extensions.swift:6:5:6:37 | var ... = ... |
2-
| extensions.swift:5:1:9:1 | extension | 1 | extensions.swift:6:9:6:9 | x |
3-
| extensions.swift:5:1:9:1 | extension | 2 | extensions.swift:8:5:8:17 | foo() |
4-
| extensions.swift:11:1:15:1 | extension | 0 | extensions.swift:12:5:12:38 | var ... = ... |
5-
| extensions.swift:11:1:15:1 | extension | 1 | extensions.swift:12:9:12:9 | y |
6-
| extensions.swift:11:1:15:1 | extension | 2 | extensions.swift:14:5:14:17 | bar() |
7-
| extensions.swift:21:1:23:1 | extension | 0 | extensions.swift:22:5:22:17 | baz() |
8-
| extensions.swift:27:1:29:1 | extension | 0 | extensions.swift:28:5:28:17 | baz() |
1+
| extensions.swift:5:1:9:1 | extension of S | 0 | extensions.swift:6:5:6:37 | var ... = ... |
2+
| extensions.swift:5:1:9:1 | extension of S | 1 | extensions.swift:6:9:6:9 | x |
3+
| extensions.swift:5:1:9:1 | extension of S | 2 | extensions.swift:8:5:8:17 | foo() |
4+
| extensions.swift:11:1:15:1 | extension of C | 0 | extensions.swift:12:5:12:38 | var ... = ... |
5+
| extensions.swift:11:1:15:1 | extension of C | 1 | extensions.swift:12:9:12:9 | y |
6+
| extensions.swift:11:1:15:1 | extension of C | 2 | extensions.swift:14:5:14:17 | bar() |
7+
| extensions.swift:21:1:23:1 | extension of S | 0 | extensions.swift:22:5:22:17 | baz() |
8+
| extensions.swift:27:1:29:1 | extension of C | 0 | extensions.swift:28:5:28:17 | baz() |
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
| extensions.swift:21:1:23:1 | extension | 0 | extensions.swift:17:1:19:1 | P1 |
2-
| extensions.swift:27:1:29:1 | extension | 0 | extensions.swift:17:1:19:1 | P1 |
3-
| extensions.swift:27:1:29:1 | extension | 1 | extensions.swift:25:1:25:14 | P2 |
1+
| extensions.swift:21:1:23:1 | extension of S | 0 | extensions.swift:17:1:19:1 | P1 |
2+
| extensions.swift:27:1:29:1 | extension of C | 0 | extensions.swift:17:1:19:1 | P1 |
3+
| extensions.swift:27:1:29:1 | extension of C | 1 | extensions.swift:25:1:25:14 | P2 |

swift/ql/test/library-tests/ast/PrintAst.expected

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4134,7 +4134,7 @@ declarations.swift:
41344134
# 90|
41354135
# 95| [Comment] // Or by adding an access declaration
41364136
# 95|
4137-
# 138| [ExtensionDecl] extension
4137+
# 138| [ExtensionDecl] extension of Int
41384138
# 139| getMember(0): [ConcreteFuncDecl] id()
41394139
# 139| InterfaceType = (Int) -> () -> Int
41404140
# 139| getSelfParam(): [ParamDecl] self
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
| extensiondecl.swift:11:1:12:1 | extension of MyClass | getExtendedTypeDecl:MyClass |
2+
| extensiondecl.swift:14:1:15:1 | extension of MyClass | getExtendedTypeDecl:MyClass, getProtocol(0):MyProtocol1, getProtocol(1):MyProtocol2 |
3+
| extensiondecl.swift:17:1:18:1 | extension of Int | getExtendedTypeDecl:Int |
4+
| extensiondecl.swift:20:1:21:1 | extension of String | getExtendedTypeDecl:String |
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import swift
2+
3+
string describe(ExtensionDecl e) {
4+
result = "getExtendedTypeDecl:" + e.getExtendedTypeDecl().toString()
5+
or
6+
exists(int ix | result = "getProtocol(" + ix.toString() + "):" + e.getProtocol(ix).toString())
7+
}
8+
9+
from ExtensionDecl e
10+
where not e.getFile() instanceof UnknownFile
11+
select e, concat(describe(e), ", ")
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
2+
protocol MyProtocol1 {
3+
}
4+
5+
protocol MyProtocol2 {
6+
}
7+
8+
class MyClass {
9+
}
10+
11+
extension MyClass {
12+
}
13+
14+
extension MyClass : MyProtocol1, MyProtocol2 {
15+
}
16+
17+
extension Int {
18+
}
19+
20+
extension String {
21+
}

0 commit comments

Comments
 (0)