mirror of
https://github.com/github/codeql.git
synced 2025-12-16 16:53:25 +01:00
Merge pull request #19162 from hvitved/rust/to-string-non-rec
Rust: Make `Element.toString` non-recursive
This commit is contained in:
@@ -30,7 +30,11 @@ module Generated {
|
||||
* Gets the string representation of this element.
|
||||
*/
|
||||
cached
|
||||
final string toString() { result = this.toStringImpl() }
|
||||
final string toString() {
|
||||
result = this.toStringImpl() and
|
||||
// recursion guard to prevent `toString` from being defined recursively
|
||||
(exists(any(Element e).toStringImpl()) implies any())
|
||||
}
|
||||
|
||||
/**
|
||||
* INTERNAL: Do not use.
|
||||
|
||||
2
rust/ql/.generated.list
generated
2
rust/ql/.generated.list
generated
@@ -506,7 +506,7 @@ lib/codeql/rust/elements/internal/generated/ConstParam.qll 310342603959a4d521418
|
||||
lib/codeql/rust/elements/internal/generated/ContinueExpr.qll e2010feb14fb6edeb83a991d9357e50edb770172ddfde2e8670b0d3e68169f28 48d09d661e1443002f6d22b8710e22c9c36d9daa9cde09c6366a61e960d717cb
|
||||
lib/codeql/rust/elements/internal/generated/Crate.qll d245f24e9da4f180c526a6d092f554a9577bae7225c81c36a391947c0865eeb3 c95dbb32b2ce4d9664be56c95b19fcd01c2d3244385e55151f9b06b07f04ce9b
|
||||
lib/codeql/rust/elements/internal/generated/DynTraitTypeRepr.qll a9d540717af1f00dbea1c683fd6b846cddfb2968c7f3e021863276f123337787 1972efb9bca7aae9a9708ca6dcf398e5e8c6d2416a07d525dba1649b80fbe4d1
|
||||
lib/codeql/rust/elements/internal/generated/Element.qll 69ce882811f2bef7e0a93c0a24494dd16120a108ba4180d455344e29144a98c4 7781bc5c69b5b08775902fcb97cb23f85359ef2303545afe9d44301b19024b3a
|
||||
lib/codeql/rust/elements/internal/generated/Element.qll d56d22c060fa929464f837b1e16475a4a2a2e42d68235a014f7369bcb48431db 0e48426ca72179f675ac29aa49bbaadb8b1d27b08ad5cbc72ec5a005c291848e
|
||||
lib/codeql/rust/elements/internal/generated/Enum.qll 4f4cbc9cd758c20d476bc767b916c62ba434d1750067d0ffb63e0821bb95ec86 3da735d54022add50cec0217bbf8ec4cf29b47f4851ee327628bcdd6454989d0
|
||||
lib/codeql/rust/elements/internal/generated/Expr.qll 5fa34f2ed21829a1509417440dae42d416234ff43433002974328e7aabb8f30f 46f3972c7413b7db28a3ea8acb5a50a74b6dd9b658e8725f6953a8829ac912f8
|
||||
lib/codeql/rust/elements/internal/generated/ExprStmt.qll d1112230015fbeb216b43407a268dc2ccd0f9e0836ab2dca4800c51b38fa1d7d 4a80562dcc55efa5e72c6c3b1d6747ab44fe494e76faff2b8f6e9f10a4b08b5b
|
||||
|
||||
@@ -20,6 +20,7 @@ module Impl {
|
||||
* Returns a string suitable to be inserted into the name of the parent. Typically `"..."`,
|
||||
* but may be overridden by subclasses.
|
||||
*/
|
||||
pragma[nomagic]
|
||||
string toAbbreviatedString() { result = "..." }
|
||||
|
||||
predicate isUnknown() { none() } // compatibility with test generation, to be fixed
|
||||
|
||||
@@ -24,6 +24,6 @@ module Impl {
|
||||
* ```
|
||||
*/
|
||||
class Module extends Generated::Module {
|
||||
override string toStringImpl() { result = "mod " + this.getName() }
|
||||
override string toStringImpl() { result = "mod " + this.getName().getText() }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,6 +19,6 @@ module Impl {
|
||||
* ```
|
||||
*/
|
||||
class Use extends Generated::Use {
|
||||
override string toStringImpl() { result = "use " + this.getUseTree() }
|
||||
override string toStringImpl() { result = "use " + this.getUseTree().toAbbreviatedString() }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,14 +26,28 @@ module Impl {
|
||||
result = strictconcat(int i | | this.toStringPart(i) order by i)
|
||||
}
|
||||
|
||||
private string toStringPart(int index) {
|
||||
result = this.getPath().toStringImpl() and index = 0
|
||||
or
|
||||
private string toStringPartCommon(int index) {
|
||||
result = "::{...}" and this.hasUseTreeList() and index = 1
|
||||
or
|
||||
result = "::*" and this.isGlob() and index = 2
|
||||
or
|
||||
result = " as " + this.getRename().getName().getText() and index = 3
|
||||
}
|
||||
|
||||
private string toStringPart(int index) {
|
||||
result = this.getPath().toStringImpl() and index = 0
|
||||
or
|
||||
result = this.toStringPartCommon(index)
|
||||
}
|
||||
|
||||
override string toAbbreviatedString() {
|
||||
result = strictconcat(int i | | this.toAbbreviatedStringPart(i) order by i)
|
||||
}
|
||||
|
||||
private string toAbbreviatedStringPart(int index) {
|
||||
result = this.getPath().toAbbreviatedString() and index = 0
|
||||
or
|
||||
result = this.toStringPartCommon(index)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,7 +24,11 @@ module Generated {
|
||||
* Gets the string representation of this element.
|
||||
*/
|
||||
cached
|
||||
final string toString() { result = this.toStringImpl() }
|
||||
final string toString() {
|
||||
result = this.toStringImpl() and
|
||||
// recursion guard to prevent `toString` from being defined recursively
|
||||
(exists(any(Element e).toStringImpl()) implies any())
|
||||
}
|
||||
|
||||
/**
|
||||
* INTERNAL: Do not use.
|
||||
|
||||
2
swift/ql/.generated.list
generated
2
swift/ql/.generated.list
generated
@@ -701,7 +701,7 @@ lib/codeql/swift/generated/Comment.qll 64625f47ebddb1ec7e1c81790dd8120087a76958c
|
||||
lib/codeql/swift/generated/DbFile.qll cc0d2b9efbee36080bde2e26e424a40efb763eaee55874fb6c4a5db36938f3df 33e215d838cfa36e3dd0e62879e896d988430d1470a87ce1bb45aad70886212b
|
||||
lib/codeql/swift/generated/DbLocation.qll e2c7cc975b53cfb0061e055da082fbe57c0aef388e5ee874f0ff22c388a81ce1 1939414bc5d574796e83ab916408c3183210ead04957b50493610529700e0427
|
||||
lib/codeql/swift/generated/Diagnostics.qll 03ea201db80d33b18f7f6c71267044c695c2572e5783ab754fa7c7ac27e16ee3 8aa78be37a8f23e4b899b910508fd5966ebc98fade6c284d59d59e246de18288
|
||||
lib/codeql/swift/generated/Element.qll ee383d0b3be3ae1f58142980011476ce6f317550f96548403f9ecd352ee72cd9 ef4a8e175d327b44b147814ad9630ca54c53f21fc2bab7d8a88d1e220060c0a7
|
||||
lib/codeql/swift/generated/Element.qll bf8f688e05f44f18384067c3cab7f05796764e2b4cce7ff24da419c3dae26194 820390ffbb1012f73267668626f7d0ccd368500331c91bbc276fcb1c25037e41
|
||||
lib/codeql/swift/generated/ErrorElement.qll b39bd7c8b4e2011f4a6889e073ebf5b628db32f36f50b067250ae730d9f26561 fd859ec969ba434049e7ba4e78271cc8cebc8b058d2e96e4d47a22064cbb5a21
|
||||
lib/codeql/swift/generated/File.qll 476ac95566ef0080e0ad8c3da144b1be1d945d2f33a24f0864d85ff7c56a09b1 3134018bb50166cbf2690f64bba551cace350e4a7e6e25bcded18f997ad1835b
|
||||
lib/codeql/swift/generated/KeyPathComponent.qll 5276acdc9a4ff0ec0cc8af615c04043391fb99613731ddcc86db4e47b37c8c5a ccc0931bbd6cc2cfae5037c2ee17bbdcbd87536f5fed90d07e73065c016c4382
|
||||
|
||||
@@ -5,7 +5,7 @@ private import codeql.swift.elements.decl.Initializer
|
||||
final private class InitializerLookupExprImpl extends Impl::MethodLookupExpr {
|
||||
InitializerLookupExprImpl() { super.getMethod() instanceof Initializer }
|
||||
|
||||
override string toStringImpl() { result = this.getMember().toString() }
|
||||
override string toStringImpl() { result = this.getMember().toStringImpl() }
|
||||
}
|
||||
|
||||
final class InitializerLookupExpr extends MethodLookupExpr, InitializerLookupExprImpl {
|
||||
|
||||
@@ -48,7 +48,7 @@ module Impl {
|
||||
|
||||
override Expr getQualifier() { result = expr.getQualifier() }
|
||||
|
||||
override string toStringImpl() { result = "call to " + expr }
|
||||
override string toStringImpl() { result = "call to " + expr.toStringImpl() }
|
||||
}
|
||||
|
||||
private class FullDotSyntaxBaseIgnoredApplyExpr extends ApplyExpr {
|
||||
|
||||
@@ -4,6 +4,6 @@ module Impl {
|
||||
class ExplicitCastExpr extends Generated::ExplicitCastExpr {
|
||||
override predicate convertsFrom(Expr e) { e = this.getImmediateSubExpr() }
|
||||
|
||||
override string toStringImpl() { result = "(" + this.getType() + ") ..." }
|
||||
override string toStringImpl() { result = "(" + this.getType().toStringImpl() + ") ..." }
|
||||
}
|
||||
}
|
||||
|
||||
6
swift/ql/lib/codeql/swift/generated/Element.qll
generated
6
swift/ql/lib/codeql/swift/generated/Element.qll
generated
@@ -24,7 +24,11 @@ module Generated {
|
||||
* Gets the string representation of this element.
|
||||
*/
|
||||
cached
|
||||
final string toString() { result = this.toStringImpl() }
|
||||
final string toString() {
|
||||
result = this.toStringImpl() and
|
||||
// recursion guard to prevent `toString` from being defined recursively
|
||||
(exists(any(Element e).toStringImpl()) implies any())
|
||||
}
|
||||
|
||||
/**
|
||||
* INTERNAL: Do not use.
|
||||
|
||||
Reference in New Issue
Block a user