Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions swift/ql/.generated.list

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
---
category: breaking
---
* The `BraceStmt` AST node's `AstNode getElement(index)` member predicate no longer returns `VarDecl`s after the `PatternBindingDecl` that declares them. Instead, a new `VarDecl getVariable(index)` predicate has been introduced for accessing the variables declared in a `BraceStmt`. This change only affects query writers.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

4 changes: 2 additions & 2 deletions swift/ql/lib/codeql/swift/elements/pattern/NamedPattern.qll
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ class NamedPattern extends Generated::NamedPattern {
* This will be the case as long as the variable is subsequently used.
*/
VarDecl getVarDecl() {
this.getImmediateEnclosingPattern*() = result.getParentPattern().getFullyUnresolved() and
result.getName() = this.getName()
this.getImmediateEnclosingPattern*() = result.getImmediateParentPattern() and
pragma[only_bind_out](result.getName()) = pragma[only_bind_out](this.getName())
}

override string toString() { result = this.getName() }
Expand Down
19 changes: 19 additions & 0 deletions swift/ql/lib/codeql/swift/elements/stmt/BraceStmt.qll
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,23 @@ class BraceStmt extends Generated::BraceStmt {
}

override string toString() { result = "{ ... }" }

override AstNode getImmediateElement(int index) {
result =
rank[index + 1](AstNode element, int i |
element = super.getImmediateElement(i) and
not element instanceof VarDecl
|
element order by i
)
}

override VarDecl getVariable(int index) {
result =
rank[index + 1](VarDecl variable, int i |
variable = super.getImmediateElement(i)
|
variable order by i
)
}
}
12 changes: 8 additions & 4 deletions swift/ql/lib/codeql/swift/generated/ParentChild.qll

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

16 changes: 16 additions & 0 deletions swift/ql/lib/codeql/swift/generated/stmt/BraceStmt.qll

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading