qtil
advanced-security/qtil-swift 0.0.3
Search

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

Direct supertypes

Indirect supertypes

Inherited predicates

convertsFromfrom Expr
getAPrimaryQlClass

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

from OpenExistentialExpr
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
getExistential

Gets the protocol-typed expression opened by this expression.

from OpenExistentialExpr
getFile

Gets the primary file where this element occurs.

from Locatable
getFullyConvertedfrom Expr
getFullyUnresolvedfrom Element
getImmediateExistential

Gets the protocol-typed expression opened by this expression.

from OpenExistentialExpr
getImmediateOpaqueExpr

Gets the opaque value expression embedded within getSubExpr().

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 getSubExpr().

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