Merge pull request #19162 from hvitved/rust/to-string-non-rec

Rust: Make `Element.toString` non-recursive
This commit is contained in:
Tom Hvitved
2025-04-01 15:31:18 +02:00
committed by GitHub
12 changed files with 40 additions and 13 deletions

View File

@@ -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

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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() + ") ..." }
}
}

View File

@@ -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.