Skip to content

Commit fb5b6ea

Browse files
committed
Swift: extract RegexLiteralExpr
1 parent a80e920 commit fb5b6ea

File tree

14 files changed

+66
-12
lines changed

14 files changed

+66
-12
lines changed

misc/bazel/workspace.bzl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe")
33

44
_swift_prebuilt_version = "swift-5.7.1-RELEASE.44582.104"
55
_swift_sha_map = {
6-
"Linux-X64": "8d94f2d75f2aa9ee8e5421318d2f07b27e095127c9be0156794a88d8e9a0f19a",
7-
"macOS-X64": "5f0550d2924e7071d006a0c9802acbd9a11f0017073e4a1eb27b7ddc4764f3f2",
6+
"Linux-X64": "8d94f2d75f2aa9ee8e5421318d2f07b27e095127c9be0156794a88d8e9a0f19a",
7+
"macOS-X64": "5f0550d2924e7071d006a0c9802acbd9a11f0017073e4a1eb27b7ddc4764f3f2",
88
}
99

1010
_swift_arch_map = {

swift/extractor/translators/ExprTranslator.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -598,4 +598,11 @@ codeql::AppliedPropertyWrapperExpr ExprTranslator::translateAppliedPropertyWrapp
598598
return entry;
599599
}
600600

601+
codeql::RegexLiteralExpr ExprTranslator::translateRegexLiteralExpr(const swift::RegexLiteralExpr& expr) {
602+
auto entry = createExprEntry(expr);
603+
entry.pattern = expr.getRegexText().str();
604+
entry.version = expr.getVersion();
605+
return entry;
606+
}
607+
601608
} // namespace codeql

swift/extractor/translators/ExprTranslator.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ class ExprTranslator : public AstTranslatorBase<ExprTranslator> {
115115
const swift::PropertyWrapperValuePlaceholderExpr& expr);
116116
codeql::AppliedPropertyWrapperExpr translateAppliedPropertyWrapperExpr(
117117
const swift::AppliedPropertyWrapperExpr& expr);
118+
codeql::RegexLiteralExpr translateRegexLiteralExpr(const swift::RegexLiteralExpr& expr);
118119

119120
private:
120121
void fillAbstractClosureExpr(const swift::AbstractClosureExpr& expr,

swift/ql/.generated.list

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -377,9 +377,9 @@ ql/lib/codeql/swift/generated/ErrorElement.qll 4b032abe8ffb71376a29c63e470a52943
377377
ql/lib/codeql/swift/generated/File.qll 61454459f5f1ae378bd4970ad1da4f39f3e696bac8a5eebdd162f131995c5316 3e6805f8858cd55dd0e0d0e5aeab923d6a55292dbf98b0029db1ae0208efe684
378378
ql/lib/codeql/swift/generated/Locatable.qll bdc98b9fb7788f44a4bf7e487ee5bd329473409950a8e9f116d61995615ad849 0b36b4fe45e2aa195e4bb70c50ea95f32f141b8e01e5f23466c6427dd9ab88fb
379379
ql/lib/codeql/swift/generated/Location.qll 851766e474cdfdfa67da42e0031fc42dd60196ff5edd39d82f08d3e32deb84c1 b29b2c37672f5acff15f1d3c5727d902f193e51122327b31bd27ec5f877bca3b
380-
ql/lib/codeql/swift/generated/ParentChild.qll 0667eb3c260b97beefd4934c80f7ffd2350488807effb3fd79bf187d179cd9bb dc0d237357baa46fae3e453d0446646c6a444155f08a9811aa29167c8cd34c73
380+
ql/lib/codeql/swift/generated/ParentChild.qll 94e233ca80d995dac532196019aa33b5664bd1df5def5b1898cc86db9ebb3674 dc0d237357baa46fae3e453d0446646c6a444155f08a9811aa29167c8cd34c73
381381
ql/lib/codeql/swift/generated/PureSynthConstructors.qll 1cd47d61fec37e019ce2e476603eb2273775bea81062d6bf3d6bbc49796f7b77 1cd47d61fec37e019ce2e476603eb2273775bea81062d6bf3d6bbc49796f7b77
382-
ql/lib/codeql/swift/generated/Raw.qll 6b8e3e3d86254d5689b17a08c41d23cda0d913b5d3b22b18b55aa00363ace6df 3736f05fc2c2eb6a9d9dd0d244061abe72161714cd435233106804472213e2b1
382+
ql/lib/codeql/swift/generated/Raw.qll b95b714482324a6c1714f65debfcec853da872ce8bf7ceb817756bef60c14892 dd07bc7286020e2e34266cbd99c0816b7fc02f5446b5794e3a0aeeb265fe0d43
383383
ql/lib/codeql/swift/generated/Synth.qll cc7285c43e6c9f47ab67047916d232ad2078443b342ba1bb036c147127c40167 522a3ba4fc7f9fbb0b7d12fc5177fa0a0d2f8239bd6b4c36fc7d7a918fcdcccf
384384
ql/lib/codeql/swift/generated/SynthConstructors.qll 0ff9cfcd64e7701003091f366ec903ec1bf82ec8385ee683b6e7b4e189033b11 0ff9cfcd64e7701003091f366ec903ec1bf82ec8385ee683b6e7b4e189033b11
385385
ql/lib/codeql/swift/generated/UnknownFile.qll 0fcf9beb8de79440bcdfff4bb6ab3dd139bd273e6c32754e05e6a632651e85f6 0fcf9beb8de79440bcdfff4bb6ab3dd139bd273e6c32754e05e6a632651e85f6
@@ -528,7 +528,7 @@ ql/lib/codeql/swift/generated/expr/PrefixUnaryExpr.qll f66dee3c70ed257914de4dd4e
528528
ql/lib/codeql/swift/generated/expr/PropertyWrapperValuePlaceholderExpr.qll 011897278a75050f1c55bd3f2378b73b447d5882404fd410c9707cd06d226a0e e04b210ab15ffcada94a70d4a1333c348d6d9111697129938c7591364ac88c9f
529529
ql/lib/codeql/swift/generated/expr/ProtocolMetatypeToObjectExpr.qll b692be6e5b249c095b77f4adcad5760f48bc07f6f53767ee3d236025ee4a2a51 cc69abe3cde83a4cd398ce666509326b21e7ee0b4b766c8dc0e0fea0c7d1ca91
530530
ql/lib/codeql/swift/generated/expr/RebindSelfInConstructorExpr.qll 7796a88c1635b3bd2492563880c995f1a7a0c68f69bad33b8bd77086eb1ce404 aee11e030ba21115931cbc1e34ac001eaafe4460fb3724a078aa4cbda84e4642
531-
ql/lib/codeql/swift/generated/expr/RegexLiteralExpr.qll ed7eccdf051b18a6388c47986b68e755edfae5d81d83e58772effb72c0e9d75e ed7eccdf051b18a6388c47986b68e755edfae5d81d83e58772effb72c0e9d75e
531+
ql/lib/codeql/swift/generated/expr/RegexLiteralExpr.qll 2bd95d7a900e9d2e21756d54188699e6beedba1e4386300b26eb2fa322be1c6e 33e7070445685ab54704a404ac09548979f244db8f0bac3bea6f8faf22b04a9b
532532
ql/lib/codeql/swift/generated/expr/SelfApplyExpr.qll c676c551bcb528512dad6422cce39be8391d03f517df2d5dc4d6ac7ab4f23897 64b3ddb7e2b093acca289d5e81d4662560d8aef20d4dd07fcd41771d54fb3f5c
533533
ql/lib/codeql/swift/generated/expr/SequenceExpr.qll 45f976cbc3ce6b3278955a76a55cd0769e69f9bd16e84b40888cd8ebda6be917 ebb090897e4cc4371383aa6771163f73fa2c28f91e6b5f4eed42d7ad018267f3
534534
ql/lib/codeql/swift/generated/expr/StringLiteralExpr.qll f420c5cd51a223b6f98177147967266e0094a5718ba2d57ae2d3acbb64bbb4b6 30d6dab2a93fd95e652a700902c4d106fecfce13880c2ece565de29f2504bedf
@@ -796,7 +796,8 @@ ql/test/extractor-tests/generated/expr/PropertyWrapperValuePlaceholderExpr/Prope
796796
ql/test/extractor-tests/generated/expr/PropertyWrapperValuePlaceholderExpr/PropertyWrapperValuePlaceholderExpr_getType.ql 0972415a8ac29f460d480990f85c3976ad947e26510da447bbf74ee61d9b3f4e 463b8ce871911b99c495ea84669b4e6f8eafc645df483f6a99413e930bc0275e
797797
ql/test/extractor-tests/generated/expr/PropertyWrapperValuePlaceholderExpr/PropertyWrapperValuePlaceholderExpr_getWrappedValue.ql 208153f062b04bec13a860b64ea51c1d531597140d81a6d4598294dc9f8649a2 dfaea19e1075c02dfc0366fac8fd2edfae8dde06308730eb462c54be5b571129
798798
ql/test/extractor-tests/generated/expr/RebindSelfInConstructorExpr/MISSING_SOURCE.txt 7e714762ffb48c436102027d560fb5addc1f7dc6dd6936b06e0d3cca031d67fd 7e714762ffb48c436102027d560fb5addc1f7dc6dd6936b06e0d3cca031d67fd
799-
ql/test/extractor-tests/generated/expr/RegexLiteralExpr/MISSING_SOURCE.txt 7e714762ffb48c436102027d560fb5addc1f7dc6dd6936b06e0d3cca031d67fd 7e714762ffb48c436102027d560fb5addc1f7dc6dd6936b06e0d3cca031d67fd
799+
ql/test/extractor-tests/generated/expr/RegexLiteralExpr/RegexLiteralExpr.ql 28c679ec360c060fa59137fcdd92d1a70c7c827fd4e0f53aea8460dab54957bc e0a3c9ae9208c852ff61e899d39019994c1bba00b00259e8c99b47905fe28111
800+
ql/test/extractor-tests/generated/expr/RegexLiteralExpr/RegexLiteralExpr_getType.ql 0df5435c0bb088170400825eb82d934592be2dea19d3d56796a93ed3d2385fc4 653d665751be03d3d083e57121250423b4de50148f8408cc3485dfed8c688083
800801
ql/test/extractor-tests/generated/expr/StringLiteralExpr/MISSING_SOURCE.txt 7e714762ffb48c436102027d560fb5addc1f7dc6dd6936b06e0d3cca031d67fd 7e714762ffb48c436102027d560fb5addc1f7dc6dd6936b06e0d3cca031d67fd
801802
ql/test/extractor-tests/generated/expr/SubscriptExpr/MISSING_SOURCE.txt 7e714762ffb48c436102027d560fb5addc1f7dc6dd6936b06e0d3cca031d67fd 7e714762ffb48c436102027d560fb5addc1f7dc6dd6936b06e0d3cca031d67fd
802803
ql/test/extractor-tests/generated/expr/SuperRefExpr/MISSING_SOURCE.txt 7e714762ffb48c436102027d560fb5addc1f7dc6dd6936b06e0d3cca031d67fd 7e714762ffb48c436102027d560fb5addc1f7dc6dd6936b06e0d3cca031d67fd

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -914,6 +914,10 @@ module Raw {
914914

915915
class RegexLiteralExpr extends @regex_literal_expr, LiteralExpr {
916916
override string toString() { result = "RegexLiteralExpr" }
917+
918+
string getPattern() { regex_literal_exprs(this, result, _) }
919+
920+
int getVersion() { regex_literal_exprs(this, _, result) }
917921
}
918922

919923
class SelfApplyExpr extends @self_apply_expr, ApplyExpr {

swift/ql/lib/codeql/swift/generated/expr/RegexLiteralExpr.qll

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,19 @@ import codeql.swift.elements.expr.LiteralExpr
66
module Generated {
77
class RegexLiteralExpr extends Synth::TRegexLiteralExpr, LiteralExpr {
88
override string getAPrimaryQlClass() { result = "RegexLiteralExpr" }
9+
10+
/**
11+
* Gets the pattern of this regex literal expression.
12+
*/
13+
string getPattern() {
14+
result = Synth::convertRegexLiteralExprToRaw(this).(Raw::RegexLiteralExpr).getPattern()
15+
}
16+
17+
/**
18+
* Gets the version of this regex literal expression.
19+
*/
20+
int getVersion() {
21+
result = Synth::convertRegexLiteralExprToRaw(this).(Raw::RegexLiteralExpr).getVersion()
22+
}
923
}
1024
}

swift/ql/lib/swift.dbscheme

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1399,7 +1399,9 @@ protocol_metatype_to_object_exprs( //dir=expr
13991399
);
14001400

14011401
regex_literal_exprs( //dir=expr
1402-
unique int id: @regex_literal_expr
1402+
unique int id: @regex_literal_expr,
1403+
string pattern: string ref,
1404+
int version: int ref
14031405
);
14041406

14051407
@self_apply_expr =

swift/ql/test/extractor-tests/generated/expr/RegexLiteralExpr/MISSING_SOURCE.txt

Lines changed: 0 additions & 4 deletions
This file was deleted.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
| regex.swift:3:5:3:5 | ... | hasType: | yes | getPattern: | /a.*a/ | getVersion: | 1 |
2+
| regex.swift:4:5:4:5 | ... | hasType: | yes | getPattern: | /the number (\\d+)/ | getVersion: | 1 |
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
// generated by codegen/codegen.py
2+
import codeql.swift.elements
3+
import TestUtils
4+
5+
from RegexLiteralExpr x, string hasType, string getPattern, int getVersion
6+
where
7+
toBeTested(x) and
8+
not x.isUnknown() and
9+
(if x.hasType() then hasType = "yes" else hasType = "no") and
10+
getPattern = x.getPattern() and
11+
getVersion = x.getVersion()
12+
select x, "hasType:", hasType, "getPattern:", getPattern, "getVersion:", getVersion

0 commit comments

Comments
 (0)