private import codeql_ruby.AST private import codeql.Locations private import internal.Pattern private import internal.TreeSitter private import internal.Variable /** A pattern. */ class Pattern extends AstNode { override Pattern::Range range; Pattern() { range = this } /** Gets a variable used in (or introduced by) this pattern. */ Variable getAVariable() { result = range.getAVariable() } } /** A simple variable pattern. */ class VariablePattern extends Pattern { override VariablePattern::Range range; /** Gets the variable used in (or introduced by) this pattern. */ Variable getVariable() { access(this, result) } } /** * A tuple pattern. * * This includes both tuple patterns in parameters and assignments. */ class TuplePattern extends Pattern { override TuplePattern::Range range; /** Gets the `i`th pattern in this tuple pattern. */ final Pattern getElement(int i) { result = range.getElement(i) } /** Gets a sub pattern in this tuple pattern. */ final Pattern getAnElement() { result = this.getElement(_) } }