Skip to content

Commit a16d5f7

Browse files
committed
Swift: cache equivalent of asDbInstance
Which is now a predicate in the `IpaTypes.qll` file (where `Cached` was also renamed to `Ipa`).
1 parent ef09031 commit a16d5f7

File tree

290 files changed

+564
-1169
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

290 files changed

+564
-1169
lines changed

swift/codegen/templates/ql_class.mustache

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ private import codeql.swift.generated.Db
55
import {{.}}
66
{{/imports}}
77

8-
class {{name}}Base extends Cached::T{{name}}{{#bases}}, {{.}}{{/bases}} {
8+
class {{name}}Base extends Ipa::T{{name}}{{#bases}}, {{.}}{{/bases}} {
99
{{#root}}
1010
string toString() { none() } // overridden by subclasses
1111

@@ -20,22 +20,16 @@ class {{name}}Base extends Cached::T{{name}}{{#bases}}, {{.}}{{/bases}} {
2020
or
2121
result = getResolveStep().resolve()
2222
}
23-
24-
Db::Element asDbInstance() { none() }
2523
{{/root}}
2624
{{#final}}
27-
{{#has_db_id}}
28-
final override Db::{{name}} asDbInstance() { this = Cached::T{{name}}(result) }
29-
{{/has_db_id}}
30-
3125
override string getAPrimaryQlClass() { result = "{{name}}" }
3226
{{/final}}
3327
{{#properties}}
3428

3529
{{#type_is_class}}
3630
{{type}} getImmediate{{singular}}({{#is_repeated}}int index{{/is_repeated}}) {
3731
{{#has_db_id}}
38-
result = Cached::fromDbInstance(asDbInstance().(Db::{{name}}).{{getter}}({{#is_repeated}}index{{/is_repeated}}))
32+
result = Ipa::fromDbInstance(Ipa::toDbInstance(this).(Db::{{name}}).{{getter}}({{#is_repeated}}index{{/is_repeated}}))
3933
{{/has_db_id}}
4034
{{^has_db_id}}
4135
none()
@@ -50,7 +44,7 @@ class {{name}}Base extends Cached::T{{name}}{{#bases}}, {{.}}{{/bases}} {
5044
{{^type_is_class}}
5145
{{type}} {{getter}}({{#is_repeated}}int index{{/is_repeated}}) {
5246
{{#has_db_id}}
53-
{{^is_predicate}}result = {{/is_predicate}}asDbInstance().(Db::{{name}}).{{getter}}({{#is_repeated}}index{{/is_repeated}})
47+
{{^is_predicate}}result = {{/is_predicate}}Ipa::toDbInstance(this).(Db::{{name}}).{{getter}}({{#is_repeated}}index{{/is_repeated}})
5448
{{/has_db_id}}
5549
{{^has_db_id}}
5650
none()

swift/codegen/templates/ql_ipa_types.mustache

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
private import codeql.swift.generated.IpaConstructors
22
private import codeql.swift.generated.Db
33

4-
cached module Cached {
4+
cached module Ipa {
55
cached newtype T{{root}} =
66
{{#final_classes}}
77
{{^first}}
@@ -31,4 +31,8 @@ cached module Cached {
3131
{{/is_ipa_on}}
3232
{{/final_classes}}
3333
}
34+
35+
cached Db::Element toDbInstance(TElement e) {
36+
e = fromDbInstance(result)
37+
}
3438
}

swift/ql/lib/codeql/swift/elements/UnknownLocation.qll

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,13 @@ private import codeql.swift.elements.UnknownFile
33
private import codeql.swift.elements.File
44

55
class UnknownLocation extends UnknownLocationBase {
6-
override File getImmediateFile() {
7-
result instanceof UnknownFile
8-
}
6+
override File getImmediateFile() { result instanceof UnknownFile }
97

108
override int getStartLine() { result = 0 }
9+
1110
override int getStartColumn() { result = 0 }
11+
1212
override int getEndLine() { result = 0 }
13+
1314
override int getEndColumn() { result = 0 }
1415
}

swift/ql/lib/codeql/swift/generated/AstNode.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ private import codeql.swift.generated.IpaTypes
33
private import codeql.swift.generated.Db
44
import codeql.swift.elements.Locatable
55

6-
class AstNodeBase extends Cached::TAstNode, Locatable { }
6+
class AstNodeBase extends Ipa::TAstNode, Locatable { }

swift/ql/lib/codeql/swift/generated/Callable.qll

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ import codeql.swift.elements.stmt.BraceStmt
55
import codeql.swift.elements.Element
66
import codeql.swift.elements.decl.ParamDecl
77

8-
class CallableBase extends Cached::TCallable, Element {
8+
class CallableBase extends Ipa::TCallable, Element {
99
ParamDecl getImmediateParam(int index) {
10-
result = Cached::fromDbInstance(asDbInstance().(Db::Callable).getParam(index))
10+
result = Ipa::fromDbInstance(Ipa::toDbInstance(this).(Db::Callable).getParam(index))
1111
}
1212

1313
final ParamDecl getParam(int index) { result = getImmediateParam(index).resolve() }
@@ -17,7 +17,7 @@ class CallableBase extends Cached::TCallable, Element {
1717
final int getNumberOfParams() { result = count(getAParam()) }
1818

1919
BraceStmt getImmediateBody() {
20-
result = Cached::fromDbInstance(asDbInstance().(Db::Callable).getBody())
20+
result = Ipa::fromDbInstance(Ipa::toDbInstance(this).(Db::Callable).getBody())
2121
}
2222

2323
final BraceStmt getBody() { result = getImmediateBody().resolve() }

swift/ql/lib/codeql/swift/generated/DbFile.qll

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@ private import codeql.swift.generated.IpaTypes
33
private import codeql.swift.generated.Db
44
import codeql.swift.elements.File
55

6-
class DbFileBase extends Cached::TDbFile, File {
7-
final override Db::DbFile asDbInstance() { this = Cached::TDbFile(result) }
8-
6+
class DbFileBase extends Ipa::TDbFile, File {
97
override string getAPrimaryQlClass() { result = "DbFile" }
108
}

swift/ql/lib/codeql/swift/generated/DbLocation.qll

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@ private import codeql.swift.generated.IpaTypes
33
private import codeql.swift.generated.Db
44
import codeql.swift.elements.Location
55

6-
class DbLocationBase extends Cached::TDbLocation, Location {
7-
final override Db::DbLocation asDbInstance() { this = Cached::TDbLocation(result) }
8-
6+
class DbLocationBase extends Ipa::TDbLocation, Location {
97
override string getAPrimaryQlClass() { result = "DbLocation" }
108
}

swift/ql/lib/codeql/swift/generated/Element.qll

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
private import codeql.swift.generated.IpaTypes
33
private import codeql.swift.generated.Db
44

5-
class ElementBase extends Cached::TElement {
5+
class ElementBase extends Ipa::TElement {
66
string toString() { none() } // overridden by subclasses
77

88
string getAPrimaryQlClass() { none() } // overridden by subclasses
@@ -17,7 +17,5 @@ class ElementBase extends Cached::TElement {
1717
result = getResolveStep().resolve()
1818
}
1919

20-
Db::Element asDbInstance() { none() }
21-
22-
predicate isUnknown() { asDbInstance().(Db::Element).isUnknown() }
20+
predicate isUnknown() { Ipa::toDbInstance(this).(Db::Element).isUnknown() }
2321
}

swift/ql/lib/codeql/swift/generated/File.qll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@ private import codeql.swift.generated.IpaTypes
33
private import codeql.swift.generated.Db
44
import codeql.swift.elements.Element
55

6-
class FileBase extends Cached::TFile, Element {
7-
string getName() { result = asDbInstance().(Db::File).getName() }
6+
class FileBase extends Ipa::TFile, Element {
7+
string getName() { result = Ipa::toDbInstance(this).(Db::File).getName() }
88
}

swift/ql/lib/codeql/swift/generated/IpaTypes.qll

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ private import codeql.swift.generated.IpaConstructors
22
private import codeql.swift.generated.Db
33

44
cached
5-
module Cached {
5+
module Ipa {
66
cached
77
newtype TElement =
88
TDbFile(Db::DbFile id) or
@@ -865,4 +865,7 @@ module Cached {
865865
or
866866
result = TWeakStorageType(e)
867867
}
868+
869+
cached
870+
Db::Element toDbInstance(TElement e) { e = fromDbInstance(result) }
868871
}

0 commit comments

Comments
 (0)