Class Impl::OpenExistentialExpr
An implicit expression created by the compiler when a method is called on a protocol. For example in
protocol P {
func foo() -> Int
}
func bar(x: P) -> Int {
return x.foo()
}
`x.foo()` is actually wrapped in an `OpenExistentialExpr` that "opens" `x` replacing it in its subexpression with
an `OpaqueValueExpr`.
Import path
import codeql.swift.elements.expr.internal.OpenExistentialExprImplDirect supertypes
Indirect supertypes
Inherited predicates
| convertsFrom | from Expr | |
| getAPrimaryQlClass | Gets the name of a primary CodeQL class to which this element belongs. | from OpenExistentialExpr |
| getConversion | from Expr | |
| getConversion | from Expr | |
| getEnclosingCallable | Gets the nearest | from AstNode |
| getEnclosingDecl | Gets the nearest declaration that contains this AST node, if any. | from AstNode |
| getEnclosingFunction | Gets the nearest function definition that contains this AST node, if any. This includes functions, methods, (de)initializers, and accessors, but not closures. | from AstNode |
| getExistential | Gets the protocol-typed expression opened by this expression. | from OpenExistentialExpr |
| getFile | Gets the primary file where this element occurs. | from Locatable |
| getFullyConverted | from Expr | |
| getFullyUnresolved | from Element | |
| getImmediateExistential | Gets the protocol-typed expression opened by this expression. | from OpenExistentialExpr |
| getImmediateOpaqueExpr | Gets the opaque value expression embedded within | from OpenExistentialExpr |
| getImmediateSubExpr | Gets the sub expression of this open existential expression. | from OpenExistentialExpr |
| getImmediateType | Gets the type of this expression, if it exists. | from Expr |
| getLocation | Gets the location associated with this element in the code, if it exists. | from Locatable |
| getOpaqueExpr | Gets the opaque value expression embedded within | from OpenExistentialExpr |
| getPrimaryQlClasses | Gets a comma-separated list of the names of the primary CodeQL classes to which this element belongs. | from Element |
| getResolveStep | Gets the most immediate element that should substitute this element in the explicit AST, if any. Classes can override this to indicate this node should be in the “hidden” AST, mostly reserved for conversions and syntactic sugar nodes like parentheses. | from Expr |
| getSubExpr | Gets the sub expression of this open existential expression. | from OpenExistentialExpr |
| getType | Gets the type of this expression, if it exists. | from Expr |
| getUnconverted | from Expr | |
| hasConversions | from Expr | |
| hasLocation | Holds if | from Locatable |
| hasType | Holds if | from Expr |
| isConversion | from Expr | |
| isUnknown | Holds if this element is unknown. | from Element |
| resolve | Gets the element that should substitute this element in the explicit AST, applying | from Element |
| toString | Gets the string representation of this element. | from Element |