pub struct GroovyCode { /* private fields */ }Expand description
Per-language code type tag for Groovy; carries no data.
Trait Implementations§
Source§impl Alterator for GroovyCode
impl Alterator for GroovyCode
Source§fn alterate(
node: &Node<'_>,
code: &[u8],
span: bool,
field_name: Option<&'static str>,
children: Vec<AstNode>,
) -> AstNode
fn alterate( node: &Node<'_>, code: &[u8], span: bool, field_name: Option<&'static str>, children: Vec<AstNode>, ) -> AstNode
AST node containing the code associated to the node,
its span, the grammar field name through which the parent reaches
it (if any), and its children. Read moreSource§fn get_text_span(
node: &Node<'_>,
code: &[u8],
span: bool,
text: bool,
) -> (String, Option<Span>)
fn get_text_span( node: &Node<'_>, code: &[u8], span: bool, text: bool, ) -> (String, Option<Span>)
Source§fn get_default(
node: &Node<'_>,
code: &[u8],
span: bool,
field_name: Option<&'static str>,
children: Vec<AstNode>,
) -> AstNode
fn get_default( node: &Node<'_>, code: &[u8], span: bool, field_name: Option<&'static str>, children: Vec<AstNode>, ) -> AstNode
AST node containing the code associated to the
node, its span, its grammar field name (if any), and its
children.Source§fn keeps_children<'a>(
_node: &Node<'a>,
_code: &[u8],
_ancestors: Ancestors<'a, '_>,
) -> bool
fn keeps_children<'a>( _node: &Node<'a>, _code: &[u8], _ancestors: Ancestors<'a, '_>, ) -> bool
node must keep its children even though
Self::alterate would flatten it into a verbatim leaf. Read moreSource§impl Getter for GroovyCode
impl Getter for GroovyCode
Source§fn get_func_space_name<'a, 'tree>(
node: &Node<'tree>,
code: &'a [u8],
ancestors: Ancestors<'tree, '_>,
) -> Option<&'a str>
fn get_func_space_name<'a, 'tree>( node: &Node<'tree>, code: &'a [u8], ancestors: Ancestors<'tree, '_>, ) -> Option<&'a str>
Names the space, synthesising one for constructs that carry no name token (#1184).
get_func_space_name returns Option<&'a str> borrowed from
code, so the only name available for a nameless construct is a
&'static str — a per-property spelling like <get-foo> would
need a signature change. Angle brackets follow the existing
<anonymous> convention and cannot collide with a real
identifier in any of these grammars.
Sibling collisions are accepted, exactly as multiple
<anonymous> siblings already are: two properties each with a
getter, or two static { } blocks in one class, produce two
spaces with the same name. Nothing enforces name uniqueness
among siblings, and inventing an index would make the name
unstable under an unrelated edit.
<static-init> rather than the JVM’s <clinit>: the same
construct exists in JavaScript, where <clinit> would mean
nothing, and one spelling across languages is worth more here
than JVM precision.
Source§fn get_space_kind(node: &Node<'_>) -> SpaceKind
fn get_space_kind(node: &Node<'_>) -> SpaceKind
node opens, or SpaceKind::Unknown when it
opens none.Source§fn get_op_type<'a>(node: &Node<'a>, ancestors: Ancestors<'a, '_>) -> TokenRole
fn get_op_type<'a>(node: &Node<'a>, ancestors: Ancestors<'a, '_>) -> TokenRole
node as a Halstead operator, operand, or neither. Read moreSource§fn get_operator_id_as_str(id: u16) -> &'static str
fn get_operator_id_as_str(id: u16) -> &'static str
id, used to render a
Halstead operator; empty for languages that do not report them.Source§fn get_func_name<'a, 'tree>(
node: &Node<'tree>,
code: &'a [u8],
ancestors: Ancestors<'tree, '_>,
) -> Option<&'a str>
fn get_func_name<'a, 'tree>( node: &Node<'tree>, code: &'a [u8], ancestors: Ancestors<'tree, '_>, ) -> Option<&'a str>
node declares. Defaults to
get_func_space_name.Source§fn get_space_kind_with_code<'a>(
node: &Node<'a>,
_code: &[u8],
_ancestors: Ancestors<'a, '_>,
) -> SpaceKind
fn get_space_kind_with_code<'a>( node: &Node<'a>, _code: &[u8], _ancestors: Ancestors<'a, '_>, ) -> SpaceKind
get_space_kind. The default
forwards to the byte-less classifier; languages whose space
kinds are encoded in macro identifier text (Elixir’s
defmodule / def / defp / defmacro / defmacrop Calls)
override this so the walker can attribute the correct
SpaceKind to each promoted func space (#275). Read moreSource§fn get_op_type_with_code<'a>(
node: &Node<'a>,
_code: &[u8],
ancestors: Ancestors<'a, '_>,
) -> TokenRole
fn get_op_type_with_code<'a>( node: &Node<'a>, _code: &[u8], ancestors: Ancestors<'a, '_>, ) -> TokenRole
get_op_type. The default forwards
to the byte-less classifier; languages whose Halstead operand
classification depends on token text override this. Kotlin uses
it to recover the variable in a short-form string template
("Hi $name"), which the grammar emits as bare string_content
tokens with no structured interpolation node — the distinction
between an interpolated $name and a literal $5 is only
visible in the source bytes (#454).Source§fn get_operand_id<'a>(
node: &Node<'a>,
code: &'a [u8],
_ancestors: Ancestors<'a, '_>,
) -> &'a [u8] ⓘ
fn get_operand_id<'a>( node: &Node<'a>, code: &'a [u8], _ancestors: Ancestors<'a, '_>, ) -> &'a [u8] ⓘ
$name) to its leading identifier prefix, because the grammar
glues trailing inter-segment text onto the name token
("$a $b" → "a "); keying the raw bytes would record a
distinct "a " operand and break parity with the long ${a}
form (#454).Source§fn string_operand_type(node: &Node<'_>, interp_kinds: &[u16]) -> TokenRole
fn string_operand_type(node: &Node<'_>, interp_kinds: &[u16]) -> TokenRole
node as a single Halstead
operand, unless it wraps an interpolation child drawn from
interp_kinds — in which case the wrapper yields
TokenRole::Unknown because the inner expressions are
walked and counted separately. Counting the wrapper too would
double-count their contribution to N2. Read moreSource§fn is_subsumed_braced_word<'a>(
node: &Node<'a>,
ancestors: Ancestors<'a, '_>,
kinds: &BracedWordKinds,
) -> bool
fn is_subsumed_braced_word<'a>( node: &Node<'a>, ancestors: Ancestors<'a, '_>, kinds: &BracedWordKinds, ) -> bool
node is a fragment of a Tcl-family braced word rather
than a token of its own, and so contributes no operand (#1354). Read moreSource§fn generic_argument_command<'tree, 'chain>(
word: &Node<'tree>,
ancestors: Ancestors<'tree, 'chain>,
kinds: &BracedWordKinds,
) -> Option<(Node<'tree>, Ancestors<'tree, 'chain>)>
fn generic_argument_command<'tree, 'chain>( word: &Node<'tree>, ancestors: Ancestors<'tree, 'chain>, kinds: &BracedWordKinds, ) -> Option<(Node<'tree>, Ancestors<'tree, 'chain>)>
command node word is an argument of, paired with
that command’s own ancestry — or None when word instead
fills a slot of a construct the grammar models, and so is a
script by construction. Read moreSource§fn is_value_braced_word<'a>(
word: &Node<'a>,
code: &[u8],
ancestors: Ancestors<'a, '_>,
kinds: &BracedWordKinds,
) -> bool
fn is_value_braced_word<'a>( word: &Node<'a>, code: &[u8], ancestors: Ancestors<'a, '_>, kinds: &BracedWordKinds, ) -> bool
{a b} of lappend x {a b} rather than the block
of eval {…} (#1318). Read moreSource§fn is_braced_script_word<'a>(
node: &Node<'a>,
code: &[u8],
ancestors: Ancestors<'a, '_>,
kinds: &BracedWordKinds,
) -> bool
fn is_braced_script_word<'a>( node: &Node<'a>, code: &[u8], ancestors: Ancestors<'a, '_>, kinds: &BracedWordKinds, ) -> bool
node is a Tcl-family braced script — a proc or if
body, an iRules when handler — rather than a braced literal
(#1381). Read moreSource§fn is_braced_literal_slot<'a>(
word: &Node<'a>,
code: &[u8],
ancestors: Ancestors<'a, '_>,
kinds: &BracedWordKinds,
) -> bool
fn is_braced_literal_slot<'a>( word: &Node<'a>, code: &[u8], ancestors: Ancestors<'a, '_>, kinds: &BracedWordKinds, ) -> bool
word, a braced word is_value_braced_word calls a
script, fills a slot whose documented syntax takes a value. Read moreSource§fn is_switch_arm_body(word: &Node<'_>, command: &Node<'_>) -> bool
fn is_switch_arm_body(word: &Node<'_>, command: &Node<'_>) -> bool
word, an argument of a switch arm command
(is_switch_arm), sits in a body position rather than a
pattern position. Read moreSource§fn command_leading_word<'c>(
command: &Node<'_>,
code: &'c [u8],
kinds: &BracedWordKinds,
) -> Option<&'c str>
fn command_leading_word<'c>( command: &Node<'_>, code: &'c [u8], kinds: &BracedWordKinds, ) -> Option<&'c str>
simple_word. Read more