mirror of
https://github.com/github/codeql.git
synced 2026-05-05 21:55:19 +02:00
Revert "Swift: Hide OpenExistentialExpr from the AST instead."
This reverts commit 9ad1749957.
This commit is contained in:
@@ -1729,10 +1729,22 @@ module Exprs {
|
||||
}
|
||||
}
|
||||
|
||||
private class OpenExistentialTree extends AstStandardPostOrderTree {
|
||||
override OpenExistentialExpr ast;
|
||||
|
||||
override ControlFlowElement getChildElement(int i) {
|
||||
i = 0 and
|
||||
result.asAstNode() = ast.getExistential().getFullyConverted()
|
||||
or
|
||||
i = 1 and
|
||||
result.asAstNode() = ast.getSubExpr().getFullyConverted()
|
||||
}
|
||||
}
|
||||
|
||||
module Conversions {
|
||||
class ConversionOrIdentity =
|
||||
Synth::TIdentityExpr or Synth::TExplicitCastExpr or Synth::TImplicitConversionExpr or
|
||||
Synth::TInOutExpr or Synth::TOpenExistentialExpr;
|
||||
Synth::TInOutExpr;
|
||||
|
||||
abstract class ConversionOrIdentityTree extends AstStandardPostOrderTree {
|
||||
ConversionOrIdentityTree() { ast instanceof ConversionOrIdentity }
|
||||
@@ -1769,12 +1781,6 @@ module Exprs {
|
||||
|
||||
override predicate convertsFrom(Expr e) { ast.convertsFrom(e) }
|
||||
}
|
||||
|
||||
private class OpenExistentialTree extends ConversionOrIdentityTree {
|
||||
override OpenExistentialExpr ast;
|
||||
|
||||
override predicate convertsFrom(Expr e) { ast.convertsFrom(e) }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -247,6 +247,9 @@ private module Cached {
|
||||
nodeFrom.asExpr() = ie.getBranch(_)
|
||||
)
|
||||
or
|
||||
// flow through OpenExistentialExpr (compiler generated expression wrapper)
|
||||
nodeFrom.asExpr() = nodeTo.asExpr().(OpenExistentialExpr).getSubExpr()
|
||||
or
|
||||
// flow from Expr to Pattern
|
||||
exists(Expr e, Pattern p |
|
||||
nodeFrom.asExpr() = e and
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
// generated by codegen/codegen.py, remove this comment if you wish to edit this file
|
||||
private import codeql.swift.generated.expr.OpenExistentialExpr
|
||||
|
||||
class OpenExistentialExpr extends Generated::OpenExistentialExpr {
|
||||
override predicate convertsFrom(Expr e) { e = this.getImmediateSubExpr() }
|
||||
}
|
||||
class OpenExistentialExpr extends Generated::OpenExistentialExpr { }
|
||||
|
||||
@@ -7208,12 +7208,13 @@ statements.swift:
|
||||
# 110| getBody(): [BraceStmt] { ... }
|
||||
# 111| getElement(0): [CallExpr] call to sink(arg:)
|
||||
# 111| getFunction(): [DeclRefExpr] sink(arg:)
|
||||
# 111| getArgument(0): [Argument] arg: call to source()
|
||||
# 111| getExpr(): [CallExpr] call to source()
|
||||
# 111| getFunction(): [MethodLookupExpr] .source()
|
||||
# 111| getBase(): [OpaqueValueExpr] OpaqueValueExpr
|
||||
# 111| getMethodRef(): [DeclRefExpr] source()
|
||||
# 111| getExpr().getFullyConverted(): [OpenExistentialExpr] OpenExistentialExpr
|
||||
# 111| getArgument(0): [Argument] arg: OpenExistentialExpr
|
||||
# 111| getExpr(): [OpenExistentialExpr] OpenExistentialExpr
|
||||
# 111| getSubExpr(): [CallExpr] call to source()
|
||||
# 111| getFunction(): [MethodLookupExpr] .source()
|
||||
# 111| getBase(): [OpaqueValueExpr] OpaqueValueExpr
|
||||
# 111| getMethodRef(): [DeclRefExpr] source()
|
||||
# 111| getExistential(): [DeclRefExpr] x
|
||||
# 112| getElement(1): [CallExpr] call to sink(arg:)
|
||||
# 112| getFunction(): [DeclRefExpr] sink(arg:)
|
||||
# 112| getArgument(0): [Argument] arg: call to source()
|
||||
@@ -7223,12 +7224,14 @@ statements.swift:
|
||||
# 112| getMethodRef(): [DeclRefExpr] source()
|
||||
# 113| getElement(2): [CallExpr] call to sink(arg:)
|
||||
# 113| getFunction(): [DeclRefExpr] sink(arg:)
|
||||
# 113| getArgument(0): [Argument] arg: call to source()
|
||||
# 113| getExpr(): [CallExpr] call to source()
|
||||
# 113| getFunction(): [MethodLookupExpr] .source()
|
||||
# 113| getBase(): [OpaqueValueExpr] OpaqueValueExpr
|
||||
# 113| getMethodRef(): [DeclRefExpr] source()
|
||||
# 113| getExpr().getFullyConverted(): [OpenExistentialExpr] OpenExistentialExpr
|
||||
# 113| getArgument(0): [Argument] arg: OpenExistentialExpr
|
||||
# 113| getExpr(): [OpenExistentialExpr] OpenExistentialExpr
|
||||
# 113| getSubExpr(): [CallExpr] call to source()
|
||||
# 113| getFunction(): [MethodLookupExpr] .source()
|
||||
# 113| getBase(): [OpaqueValueExpr] OpaqueValueExpr
|
||||
# 113| getMethodRef(): [DeclRefExpr] source()
|
||||
# 113| getExistential(): [CallExpr] call to getMyProtocol()
|
||||
# 113| getFunction(): [DeclRefExpr] getMyProtocol()
|
||||
# 114| getElement(3): [CallExpr] call to sink(arg:)
|
||||
# 114| getFunction(): [DeclRefExpr] sink(arg:)
|
||||
# 114| getArgument(0): [Argument] arg: call to source()
|
||||
@@ -7237,6 +7240,3 @@ statements.swift:
|
||||
# 114| getBase(): [CallExpr] call to getMyProtocolImpl()
|
||||
# 114| getFunction(): [DeclRefExpr] getMyProtocolImpl()
|
||||
# 114| getMethodRef(): [DeclRefExpr] source()
|
||||
# 111| [DeclRefExpr] x
|
||||
# 113| [CallExpr] call to getMyProtocol()
|
||||
# 113| getFunction(): [DeclRefExpr] getMyProtocol()
|
||||
|
||||
@@ -6319,7 +6319,7 @@ cfg.swift:
|
||||
#-----| -> sink(arg:)
|
||||
|
||||
# 554| sink(arg:)
|
||||
#-----| -> .source()
|
||||
#-----| -> x
|
||||
|
||||
# 554| call to sink(arg:)
|
||||
#-----| -> sink(arg:)
|
||||
@@ -6327,6 +6327,9 @@ cfg.swift:
|
||||
# 554| OpaqueValueExpr
|
||||
#-----| -> call to source()
|
||||
|
||||
# 554| x
|
||||
#-----| -> .source()
|
||||
|
||||
# 554| .source()
|
||||
#-----| -> OpaqueValueExpr
|
||||
|
||||
@@ -6352,14 +6355,20 @@ cfg.swift:
|
||||
#-----| -> call to sink(arg:)
|
||||
|
||||
# 556| sink(arg:)
|
||||
#-----| -> .source()
|
||||
#-----| -> getMyProtocol()
|
||||
|
||||
# 556| call to sink(arg:)
|
||||
#-----| -> sink(arg:)
|
||||
|
||||
# 556| getMyProtocol()
|
||||
#-----| -> call to getMyProtocol()
|
||||
|
||||
# 556| OpaqueValueExpr
|
||||
#-----| -> call to source()
|
||||
|
||||
# 556| call to getMyProtocol()
|
||||
#-----| -> .source()
|
||||
|
||||
# 556| .source()
|
||||
#-----| -> OpaqueValueExpr
|
||||
|
||||
|
||||
@@ -558,6 +558,8 @@ edges
|
||||
| test.swift:873:21:873:31 | [...] [Collection element] | test.swift:856:29:856:40 | args [Collection element] |
|
||||
| test.swift:873:21:873:31 | [...] [Collection element] | test.swift:873:21:873:31 | [...] [Collection element] |
|
||||
| test.swift:873:24:873:31 | call to source() | test.swift:873:21:873:31 | [...] [Collection element] |
|
||||
| test.swift:888:12:888:21 | call to source() | test.swift:888:12:888:21 | OpenExistentialExpr |
|
||||
| test.swift:890:12:890:35 | call to source() | test.swift:890:12:890:35 | OpenExistentialExpr |
|
||||
nodes
|
||||
| file://:0:0:0:0 | .a [x] | semmle.label | .a [x] |
|
||||
| file://:0:0:0:0 | .s [x] | semmle.label | .s [x] |
|
||||
@@ -1159,8 +1161,10 @@ nodes
|
||||
| test.swift:873:21:873:31 | [...] [Collection element] | semmle.label | [...] [Collection element] |
|
||||
| test.swift:873:21:873:31 | [...] [Collection element] | semmle.label | [...] [Collection element] |
|
||||
| test.swift:873:24:873:31 | call to source() | semmle.label | call to source() |
|
||||
| test.swift:888:12:888:21 | OpenExistentialExpr | semmle.label | OpenExistentialExpr |
|
||||
| test.swift:888:12:888:21 | call to source() | semmle.label | call to source() |
|
||||
| test.swift:889:12:889:21 | call to source() | semmle.label | call to source() |
|
||||
| test.swift:890:12:890:35 | OpenExistentialExpr | semmle.label | OpenExistentialExpr |
|
||||
| test.swift:890:12:890:35 | call to source() | semmle.label | call to source() |
|
||||
| test.swift:891:12:891:39 | call to source() | semmle.label | call to source() |
|
||||
subpaths
|
||||
@@ -1352,7 +1356,7 @@ subpaths
|
||||
| test.swift:859:15:859:21 | ...[...] | test.swift:873:24:873:31 | call to source() | test.swift:859:15:859:21 | ...[...] | result |
|
||||
| test.swift:860:15:860:21 | ...[...] | test.swift:873:24:873:31 | call to source() | test.swift:860:15:860:21 | ...[...] | result |
|
||||
| test.swift:867:15:867:38 | \\...[...] | test.swift:873:24:873:31 | call to source() | test.swift:867:15:867:38 | \\...[...] | result |
|
||||
| test.swift:888:12:888:21 | call to source() | test.swift:888:12:888:21 | call to source() | test.swift:888:12:888:21 | call to source() | result |
|
||||
| test.swift:888:12:888:21 | OpenExistentialExpr | test.swift:888:12:888:21 | call to source() | test.swift:888:12:888:21 | OpenExistentialExpr | result |
|
||||
| test.swift:889:12:889:21 | call to source() | test.swift:889:12:889:21 | call to source() | test.swift:889:12:889:21 | call to source() | result |
|
||||
| test.swift:890:12:890:35 | call to source() | test.swift:890:12:890:35 | call to source() | test.swift:890:12:890:35 | call to source() | result |
|
||||
| test.swift:890:12:890:35 | OpenExistentialExpr | test.swift:890:12:890:35 | call to source() | test.swift:890:12:890:35 | OpenExistentialExpr | result |
|
||||
| test.swift:891:12:891:39 | call to source() | test.swift:891:12:891:39 | call to source() | test.swift:891:12:891:39 | call to source() | result |
|
||||
|
||||
@@ -1093,5 +1093,9 @@
|
||||
| test.swift:880:7:880:7 | self | test.swift:880:7:880:7 | SSA def(self) |
|
||||
| test.swift:881:7:881:7 | SSA def(self) | test.swift:881:2:881:34 | self[return] |
|
||||
| test.swift:881:7:881:7 | self | test.swift:881:7:881:7 | SSA def(self) |
|
||||
| test.swift:887:30:887:33 | SSA def(x) | test.swift:888:12:888:12 | x |
|
||||
| test.swift:887:30:887:33 | x | test.swift:887:30:887:33 | SSA def(x) |
|
||||
| test.swift:887:45:887:48 | SSA def(y) | test.swift:889:12:889:12 | y |
|
||||
| test.swift:887:45:887:48 | y | test.swift:887:45:887:48 | SSA def(y) |
|
||||
| test.swift:888:12:888:21 | call to source() | test.swift:888:12:888:21 | OpenExistentialExpr |
|
||||
| test.swift:890:12:890:35 | call to source() | test.swift:890:12:890:35 | OpenExistentialExpr |
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
testFailures
|
||||
failures
|
||||
testFailures
|
||||
|
||||
Reference in New Issue
Block a user