CodeQL library for Swift
codeql/swift-all 3.0.1-dev (changelog, source)
Search

Class Impl::KeyPathComponent

A component of a KeyPathExpr.

Import path

import codeql.swift.elements.internal.KeyPathComponentImpl

Direct supertypes

Indirect supertypes

Predicates

getKeyPathExpr

Gets the underlying key-path expression which this is a component of.

getNextComponent

Gets the next component of the underlying key-path expression.

hasIndex

Holds if this component is the i’th component of the underling key-path expression.

isOptionalChaining

Optional chaining ?.

isOptionalForcing

Optional forcing !.

isOptionalWrapping

Implicit optional wrapping component inserted by the compiler when an optional chain ends in a non-optional value.

isProperty

Property access like .bar in \Foo.bar.

isSelf

Reference to the entire object; the self in \Foo.self.

isSubscript

Array or dictionary subscript like [1] or ["a", "b"].

isTupleIndexing

Tuple indexing like .1.

Inherited predicates

getAPrimaryQlClass

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

from KeyPathComponent
getASubscriptArgument

Gets any of the arguments to an array or dictionary subscript expression.

from KeyPathComponent
getComponentType

Gets the return type of this component application.

from KeyPathComponent
getDeclRef

Gets the property or subscript operator, if it exists.

from KeyPathComponent
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
getFullyUnresolvedfrom Element
getImmediateComponentType

Gets the return type of this component application.

from KeyPathComponent
getKind

Gets the kind of key path component.

from KeyPathComponent
getLocation

Gets the location associated with this element in the code, if it exists.

from Locatable
getNumberOfSubscriptArguments

Gets the number of arguments to an array or dictionary subscript expression.

from KeyPathComponent
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 Element
getSubscriptArgument

Gets the indexth argument to an array or dictionary subscript expression (0-based).

from KeyPathComponent
getTupleIndex

Gets the tuple index of this key path component, if it exists.

from KeyPathComponent
hasDeclRef

Holds if getDeclRef() exists.

from KeyPathComponent
hasLocation

Holds if getLocation() exists.

from Locatable
hasTupleIndex

Holds if getTupleIndex() exists.

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