qtil
advanced-security/qtil-swift 0.0.3
Search

Class Generated::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`.

INTERNAL: Do not reference the Generated::OpenExistentialExpr class directly. Use the subclass OpenExistentialExpr, where the following predicates are available.

Import path

import codeql.swift.generated.expr.OpenExistentialExpr

Direct supertypes

Indirect supertypes

Known direct subtypes

Predicates

getAPrimaryQlClass

Gets the name of a primary CodeQL class to which this element belongs.

getExistential

Gets the protocol-typed expression opened by this expression.

getImmediateExistential

Gets the protocol-typed expression opened by this expression.

getImmediateOpaqueExpr

Gets the opaque value expression embedded within getSubExpr().

getImmediateSubExpr

Gets the sub expression of this open existential expression.

getOpaqueExpr

Gets the opaque value expression embedded within getSubExpr().

getSubExpr

Gets the sub expression of this open existential expression.

Inherited predicates

convertsFromfrom Expr
getConversionfrom Expr
getConversionfrom Expr
getEnclosingCallable

Gets the nearest Callable that contains this AST node, if any. This includes (auto)closures, functions, methods, (de)initializers, and accessors.

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
getFile

Gets the primary file where this element occurs.

from Locatable
getFullyConvertedfrom Expr
getFullyUnresolvedfrom Element
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
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
getType

Gets the type of this expression, if it exists.

from Expr
getUnconvertedfrom Expr
hasConversionsfrom Expr
hasLocation

Holds if getLocation() exists.

from Locatable
hasType

Holds if getType() exists.

from Expr
isConversionfrom Expr
isUnknown

Holds if this element is unknown.

from Element
resolve

Gets the element that should substitute this element in the explicit AST, applying getResolveStep transitively.

from Element
toString

Gets the string representation of this element.

from Element