Root of the AST class-hierarchy

Introduced properties

private var _force_block: Bool

nitc :: ANode :: _force_block

Force self to be rendered as a block.
private var _force_inline: Bool

nitc :: ANode :: _force_inline

Force self to be rendered as a line.
private var _is_broken: Bool

nitc :: ANode :: _is_broken

The indication that the node did not pass some semantic verifications.
private var _location: Location

nitc :: ANode :: _location

Location is set during AST building. Once built, location can not be null.
private var _parent: nullable ANode

nitc :: ANode :: _parent

Parent of the node in the AST
fun accept_forward_analysis(v: ForwardAnalysis)

nitc :: ANode :: accept_forward_analysis

Apply the forward analysis v to self.
private abstract fun accept_pretty_printer(v: PrettyPrinterVisitor)

nitc :: ANode :: accept_pretty_printer

Start visit of self using a PrettyPrinterVisitor
fun accept_reaching_defs(v: ReachingDefsAnalysis)

nitc :: ANode :: accept_reaching_defs

Apply a ReachingDefsAnalysis to self.
private fun bad_expr_message(child: AExpr): nullable String

nitc :: ANode :: bad_expr_message

An additional information message to explain the role of a child expression.
fun collect_annotations_by_name(name: String): Array[AAnnotation]

nitc :: ANode :: collect_annotations_by_name

Do a deep search and return an array of node that are annotated
private abstract fun collect_length: Int

nitc :: ANode :: collect_length

Collect the length (in Char) of the node.
fun collect_tokens_by_text(text: String): Array[Token]

nitc :: ANode :: collect_tokens_by_text

Do a deep search and return an array of tokens that match a given text
fun common_parent(other: ANode): nullable ANode

nitc :: ANode :: common_parent

The most specific common parent between self and other
fun debug(message: String)

nitc :: ANode :: debug

Display a message for the colored location of the node
protected fun decorate_tag(v: HtmlightVisitor, res: HTMLTag, token: Token): nullable HInfoBox

nitc :: ANode :: decorate_tag

Add aditionnal information on a child-token and return an additionnal HInfoBox on it
fun depth: Int

nitc :: ANode :: depth

Number of nodes between self and the root of the AST
fun detach

nitc :: ANode :: detach

Detach a node from its parent
private fun do_cloneable(v: CloneVisitor)

nitc :: ANode :: do_cloneable

fun dump_info(v: ASTDump): String

nitc :: ANode :: dump_info

Information to display on a node
fun dump_tree(display_structural: nullable Bool, display_line: nullable Bool)

nitc :: ANode :: dump_tree

Write the subtree on stdout.
fun fatal(v: NaiveInterpreter, message: String)

nitc :: ANode :: fatal

Aborts the program with a message
private fun force_block: Bool

nitc :: ANode :: force_block

Force self to be rendered as a block.
private fun force_block=(force_block: Bool)

nitc :: ANode :: force_block=

Force self to be rendered as a block.
private fun force_inline: Bool

nitc :: ANode :: force_inline

Force self to be rendered as a line.
private fun force_inline=(force_inline: Bool)

nitc :: ANode :: force_inline=

Force self to be rendered as a line.
fun hot_location: Location

nitc :: ANode :: hot_location

The location of the important part of the node (identifier or whatever)
fun infobox(v: HtmlightVisitor): nullable HInfoBox

nitc :: ANode :: infobox

Return a optional infobox
fun is_broken: Bool

nitc :: ANode :: is_broken

The indication that the node did not pass some semantic verifications.
fun is_broken=(is_broken: Bool)

nitc :: ANode :: is_broken=

The indication that the node did not pass some semantic verifications.
private fun is_inlinable: Bool

nitc :: ANode :: is_inlinable

Is self printable in one line?
private fun is_noserialize: Bool

nitc :: ANode :: is_noserialize

Is this node annotated to not be made serializable?
private fun is_serialize: Bool

nitc :: ANode :: is_serialize

Is this node annotated to be made serializable?
fun is_structural: Bool

nitc :: ANode :: is_structural

Is self a token or a pure-structural production like AQId?
fun location: Location

nitc :: ANode :: location

Location is set during AST building. Once built, location can not be null.
fun location=(location: Location)

nitc :: ANode :: location=

Location is set during AST building. Once built, location can not be null.
protected fun make_tag(v: HtmlightVisitor): nullable HTMLTag

nitc :: ANode :: make_tag

Optionally creates a tag that encapsulate the AST element on HTML rendering
private fun must_be_block: Bool

nitc :: ANode :: must_be_block

Does self have to be rendered as a block?
private fun must_be_inline: Bool

nitc :: ANode :: must_be_inline

Does self have be rendered as a line?
fun parent: nullable ANode

nitc :: ANode :: parent

Parent of the node in the AST
protected fun parent=(parent: nullable ANode)

nitc :: ANode :: parent=

Parent of the node in the AST
fun parentize_tokens

nitc :: ANode :: parentize_tokens

Visit the AST and computes advanced AST attributes on Tokens and Prod
private abstract fun replace_child(old_child: ANode, new_child: nullable ANode)

nitc :: ANode :: replace_child

Replace a child with an other node in the AST
fun replace_clone

nitc :: ANode :: replace_clone

Create a new clone of self
fun replace_with(node: ANode)

nitc :: ANode :: replace_with

Replace itself with an other node in the AST
fun root: ANode

nitc :: ANode :: root

The topmost ancestor of the element
fun validate

nitc :: ANode :: validate

Recursively validate a AST node.
abstract fun visit_all(v: Visitor)

nitc :: ANode :: visit_all

Visit all nodes in order.
private abstract fun was_inline: Bool

nitc :: ANode :: was_inline

Does self was written in one line before transformation?

Redefined properties

redef type SELF: ANode

nitc $ ANode :: SELF

Type of this instance, automatically specialized in every class
redef fun clone: SELF

nitc :: astbuilder $ ANode :: clone

Duplicate self
redef fun dump_info(v: ASTDump): String

nitc :: modelbuilder_base $ ANode :: dump_info

Information to display on a node

All properties

fun !=(other: nullable Object): Bool

core :: Object :: !=

Have self and other different values?
fun ==(other: nullable Object): Bool

core :: Object :: ==

Have self and other the same value?
type CLASS: Class[SELF]

core :: Object :: CLASS

The type of the class of self.
type SELF: Object

core :: Object :: SELF

Type of this instance, automatically specialized in every class
private var _force_block: Bool

nitc :: ANode :: _force_block

Force self to be rendered as a block.
private var _force_inline: Bool

nitc :: ANode :: _force_inline

Force self to be rendered as a line.
private var _is_broken: Bool

nitc :: ANode :: _is_broken

The indication that the node did not pass some semantic verifications.
private var _location: Location

nitc :: ANode :: _location

Location is set during AST building. Once built, location can not be null.
private var _parent: nullable ANode

nitc :: ANode :: _parent

Parent of the node in the AST
fun accept_forward_analysis(v: ForwardAnalysis)

nitc :: ANode :: accept_forward_analysis

Apply the forward analysis v to self.
private abstract fun accept_pretty_printer(v: PrettyPrinterVisitor)

nitc :: ANode :: accept_pretty_printer

Start visit of self using a PrettyPrinterVisitor
fun accept_reaching_defs(v: ReachingDefsAnalysis)

nitc :: ANode :: accept_reaching_defs

Apply a ReachingDefsAnalysis to self.
private fun bad_expr_message(child: AExpr): nullable String

nitc :: ANode :: bad_expr_message

An additional information message to explain the role of a child expression.
protected fun class_factory(name: String): CLASS

core :: Object :: class_factory

Implementation used by get_class to create the specific class.
fun class_name: String

core :: Object :: class_name

The class name of the object.
abstract fun clone: SELF

core :: Cloneable :: clone

Duplicate self
fun collect_annotations_by_name(name: String): Array[AAnnotation]

nitc :: ANode :: collect_annotations_by_name

Do a deep search and return an array of node that are annotated
private abstract fun collect_length: Int

nitc :: ANode :: collect_length

Collect the length (in Char) of the node.
fun collect_tokens_by_text(text: String): Array[Token]

nitc :: ANode :: collect_tokens_by_text

Do a deep search and return an array of tokens that match a given text
fun common_parent(other: ANode): nullable ANode

nitc :: ANode :: common_parent

The most specific common parent between self and other
fun debug(message: String)

nitc :: ANode :: debug

Display a message for the colored location of the node
protected fun decorate_tag(v: HtmlightVisitor, res: HTMLTag, token: Token): nullable HInfoBox

nitc :: ANode :: decorate_tag

Add aditionnal information on a child-token and return an additionnal HInfoBox on it
fun depth: Int

nitc :: ANode :: depth

Number of nodes between self and the root of the AST
fun detach

nitc :: ANode :: detach

Detach a node from its parent
private fun do_cloneable(v: CloneVisitor)

nitc :: ANode :: do_cloneable

fun dump_info(v: ASTDump): String

nitc :: ANode :: dump_info

Information to display on a node
fun dump_tree(display_structural: nullable Bool, display_line: nullable Bool)

nitc :: ANode :: dump_tree

Write the subtree on stdout.
fun fatal(v: NaiveInterpreter, message: String)

nitc :: ANode :: fatal

Aborts the program with a message
private fun force_block: Bool

nitc :: ANode :: force_block

Force self to be rendered as a block.
private fun force_block=(force_block: Bool)

nitc :: ANode :: force_block=

Force self to be rendered as a block.
private fun force_inline: Bool

nitc :: ANode :: force_inline

Force self to be rendered as a line.
private fun force_inline=(force_inline: Bool)

nitc :: ANode :: force_inline=

Force self to be rendered as a line.
fun get_class: CLASS

core :: Object :: get_class

The meta-object representing the dynamic type of self.
fun hash: Int

core :: Object :: hash

The hash code of the object.
fun hot_location: Location

nitc :: ANode :: hot_location

The location of the important part of the node (identifier or whatever)
fun infobox(v: HtmlightVisitor): nullable HInfoBox

nitc :: ANode :: infobox

Return a optional infobox
init init

core :: Object :: init

fun inspect: String

core :: Object :: inspect

Developer readable representation of self.
protected fun inspect_head: String

core :: Object :: inspect_head

Return "CLASSNAME:#OBJECTID".
fun is_broken: Bool

nitc :: ANode :: is_broken

The indication that the node did not pass some semantic verifications.
fun is_broken=(is_broken: Bool)

nitc :: ANode :: is_broken=

The indication that the node did not pass some semantic verifications.
private fun is_inlinable: Bool

nitc :: ANode :: is_inlinable

Is self printable in one line?
private fun is_noserialize: Bool

nitc :: ANode :: is_noserialize

Is this node annotated to not be made serializable?
intern fun is_same_instance(other: nullable Object): Bool

core :: Object :: is_same_instance

Return true if self and other are the same instance (i.e. same identity).
fun is_same_serialized(other: nullable Object): Bool

core :: Object :: is_same_serialized

Is self the same as other in a serialization context?
intern fun is_same_type(other: Object): Bool

core :: Object :: is_same_type

Return true if self and other have the same dynamic type.
private fun is_serialize: Bool

nitc :: ANode :: is_serialize

Is this node annotated to be made serializable?
fun is_structural: Bool

nitc :: ANode :: is_structural

Is self a token or a pure-structural production like AQId?
fun location: Location

nitc :: ANode :: location

Location is set during AST building. Once built, location can not be null.
fun location=(location: Location)

nitc :: ANode :: location=

Location is set during AST building. Once built, location can not be null.
protected fun make_tag(v: HtmlightVisitor): nullable HTMLTag

nitc :: ANode :: make_tag

Optionally creates a tag that encapsulate the AST element on HTML rendering
private fun must_be_block: Bool

nitc :: ANode :: must_be_block

Does self have to be rendered as a block?
private fun must_be_inline: Bool

nitc :: ANode :: must_be_inline

Does self have be rendered as a line?
private intern fun native_class_name: CString

core :: Object :: native_class_name

The class name of the object in CString format.
intern fun object_id: Int

core :: Object :: object_id

An internal hash code for the object based on its identity.
fun output

core :: Object :: output

Display self on stdout (debug only).
intern fun output_class_name

core :: Object :: output_class_name

Display class name on stdout (debug only).
fun parent: nullable ANode

nitc :: ANode :: parent

Parent of the node in the AST
protected fun parent=(parent: nullable ANode)

nitc :: ANode :: parent=

Parent of the node in the AST
fun parentize_tokens

nitc :: ANode :: parentize_tokens

Visit the AST and computes advanced AST attributes on Tokens and Prod
private abstract fun replace_child(old_child: ANode, new_child: nullable ANode)

nitc :: ANode :: replace_child

Replace a child with an other node in the AST
fun replace_clone

nitc :: ANode :: replace_clone

Create a new clone of self
fun replace_with(node: ANode)

nitc :: ANode :: replace_with

Replace itself with an other node in the AST
fun root: ANode

nitc :: ANode :: root

The topmost ancestor of the element
fun serialization_hash: Int

core :: Object :: serialization_hash

Hash value use for serialization
intern fun sys: Sys

core :: Object :: sys

Return the global sys object, the only instance of the Sys class.
abstract fun to_jvalue(env: JniEnv): JValue

core :: Object :: to_jvalue

fun to_s: String

core :: Object :: to_s

User readable representation of self.
fun validate

nitc :: ANode :: validate

Recursively validate a AST node.
abstract fun visit_all(v: Visitor)

nitc :: ANode :: visit_all

Visit all nodes in order.
private abstract fun was_inline: Bool

nitc :: ANode :: was_inline

Does self was written in one line before transformation?
package_diagram nitc::ANode ANode core::Cloneable Cloneable nitc::ANode->core::Cloneable core::Object Object core::Cloneable->core::Object ...core::Object ... ...core::Object->core::Object nitc::Token Token nitc::Token->nitc::ANode nitc::Prod Prod nitc::Prod->nitc::ANode nitc::Token... ... nitc::Token...->nitc::Token nitc::Prod... ... nitc::Prod...->nitc::Prod

Ancestors

interface Object

core :: Object

The root of the class hierarchy.

Parents

interface Cloneable

core :: Cloneable

Something that can be cloned

Children

abstract class Prod

nitc :: Prod

Ancestor of all productions
abstract class Token

nitc :: Token

Ancestor of all tokens

Descendants

class AAbortExpr

nitc :: AAbortExpr

An abort statement
class AAbstractClasskind

nitc :: AAbstractClasskind

An abstract class modifier (abstract class)
class AAmpAssignOp

nitc :: AAmpAssignOp

A &= assignment operation
class AAmpExpr

nitc :: AAmpExpr

A & expression
class AAmpMethid

nitc :: AAmpMethid

A method name &
class AAndExpr

nitc :: AAndExpr

A and expression
class AAnnotation

nitc :: AAnnotation

A single annotation
class AAnnotations

nitc :: AAnnotations

A group of annotation on a node
class AArrayExpr

nitc :: AArrayExpr

A literal array. eg. [x,y,z]
class AAsCastExpr

nitc :: AAsCastExpr

A type cast. eg x.as(T)
class AAsCastForm

nitc :: AAsCastForm

A cast, against a type or not null
class AAsNotNullableExternCall

nitc :: AAsNotNullableExternCall

A single callback declaration on a cast to a non-nullable type
class AAsNotnullExpr

nitc :: AAsNotnullExpr

A as-not-null cast. eg x.as(not null)
class AAsNullableExternCall

nitc :: AAsNullableExternCall

A single callback declaration on a cast to a nullable type
class AAssertExpr

nitc :: AAssertExpr

An assert statement
abstract class AAssignFormExpr

nitc :: AAssignFormExpr

Whatever is a simple assignment. eg = something
class AAssignMethid

nitc :: AAssignMethid

A setter method name with a simple identifier (with a =)
abstract class AAssignOp

nitc :: AAssignOp

A complex assignment operator. (+= and -=)
class AAtExpr

nitc :: AAtExpr

A special expression that encapsulate an annotation
abstract class AAtid

nitc :: AAtid

An annotation name
class AAttrAssignExpr

nitc :: AAttrAssignExpr

The assignment of an attribute. eg x._a=y
class AAttrExpr

nitc :: AAttrExpr

The read of an attribute. eg x._a
abstract class AAttrFormExpr

nitc :: AAttrFormExpr

Whatever is a old-style attribute access
class AAttrPropdef

nitc :: AAttrPropdef

A definition of an attribute
class AAttrReassignExpr

nitc :: AAttrReassignExpr

A complex attribute assignment. eg x._a+=y
abstract class ABinBoolExpr

nitc :: ABinBoolExpr

Something that is binary boolean expression
private class ABinOpHelper

nitc :: ABinOpHelper

Used to factorize work on Or, And, Implies and Binop expressions.
abstract class ABinopExpr

nitc :: ABinopExpr

A binary operation on a method
class ABlockExpr

nitc :: ABlockExpr

A sequence of AExpr (usually statements)
abstract class ABoolExpr

nitc :: ABoolExpr

Something that is boolean expression
class ABraAssignExpr

nitc :: ABraAssignExpr

A setter call of the bracket operator. eg x[y,z]=t
class ABraExpr

nitc :: ABraExpr

A call of the brackets operator. eg x[y,z]
class ABraExprs

nitc :: ABraExprs

A list of expressions enclosed in brackets
abstract class ABraFormExpr

nitc :: ABraFormExpr

Whatever looks-like a call of the brackets [] operator.
class ABraMethid

nitc :: ABraMethid

A method name []
class ABraReassignExpr

nitc :: ABraReassignExpr

A complex setter call of the bracket operator. eg x[y,z]+=t
class ABraassignMethid

nitc :: ABraassignMethid

A method name []=
class ABreakExpr

nitc :: ABreakExpr

A break statement.
class ACallAssignExpr

nitc :: ACallAssignExpr

A setter call with a standard method-name and any number of arguments. eg x.m(y)=z. OR just a simple assignment.
class ACallExpr

nitc :: ACallExpr

A call with a standard method-name and any number of arguments. eg x.m(y). OR just a simple id
abstract class ACallFormExpr

nitc :: ACallFormExpr

Whatever looks-like a call with a standard method and any number of arguments.
class ACallReassignExpr

nitc :: ACallReassignExpr

A complex setter call with a standard method-name and any number of arguments. eg x.m(y)+=z. OR just a simple complex assignment.
class ACallrefExpr

nitc :: ACallrefExpr

A reference to a method with a captured receiver. eg. &x.foo or just &foo is self is captured.
class ACaretAssignOp

nitc :: ACaretAssignOp

A ^= assignment operation
class ACaretExpr

nitc :: ACaretExpr

A ^ expression
class ACaretMethid

nitc :: ACaretMethid

A method name ^
class ACastAsExternCall

nitc :: ACastAsExternCall

A single callback declaration on a cast to a given type
abstract class ACastExternCall

nitc :: ACastExternCall

A single callback declaration on a cast
class ACharExpr

nitc :: ACharExpr

A character literal
abstract class AClassdef

nitc :: AClassdef

A class definition
abstract class AClasskind

nitc :: AClasskind

The modifier for the kind of class (abstract, interface, etc.)
class AConcreteClasskind

nitc :: AConcreteClasskind

A default, or concrete class modifier (just class)
class AContinueExpr

nitc :: AContinueExpr

A continue statement
class ACrangeExpr

nitc :: ACrangeExpr

A closed literal range. eg [x..y]
class ADebugTypeExpr

nitc :: ADebugTypeExpr

A special expression to debug types
abstract class ADefinition

nitc :: ADefinition

Abstract class for definition of entities
class ADoExpr

nitc :: ADoExpr

A do statement
class ADoc

nitc :: ADoc

A documentation of a definition
class AEndStringExpr

nitc :: AEndStringExpr

The end of a superstrng. eg }abc"
class AEnumClasskind

nitc :: AEnumClasskind

An enum/universal class modifier (enum class)
class AEqExpr

nitc :: AEqExpr

A == expression
class AEqFormExpr

nitc :: AEqFormExpr

A == or a != expression
class AEqMethid

nitc :: AEqMethid

A method name ==
class AError

nitc :: AError

A mark of an error
abstract class AEscapeExpr

nitc :: AEscapeExpr

A break or a continue
abstract class AExpr

nitc :: AExpr

Expression and statements
abstract class AExprs

nitc :: AExprs

A list of expression separated with commas (arguments for instance)
abstract class AExternCall

nitc :: AExternCall

A single callback declaration
class AExternCalls

nitc :: AExternCalls

Declaration of callbacks for extern methods
class AExternClasskind

nitc :: AExternClasskind

An extern class modifier (extern class)
class AExternCodeBlock

nitc :: AExternCodeBlock

An full extern block
class AFalseExpr

nitc :: AFalseExpr

A false boolean literal constant
class AFloatExpr

nitc :: AFloatExpr

A float literal
class AForExpr

nitc :: AForExpr

A for statement
class AForGroup

nitc :: AForGroup

A collection iterated by a for, its automatic variables and its implicit iterator.
class AFormaldef

nitc :: AFormaldef

The definition of a formal generic parameter type. eg X: Y
class AFullPropExternCall

nitc :: AFullPropExternCall

A single callback declaration on a method on an explicit receiver type.
class AGeExpr

nitc :: AGeExpr

A >= expression
class AGeMethid

nitc :: AGeMethid

A method name >=
class AGgAssignOp

nitc :: AGgAssignOp

A >>= assignment operation
class AGgExpr

nitc :: AGgExpr

A >> expression
class AGgMethid

nitc :: AGgMethid

A method name >>
class AGtExpr

nitc :: AGtExpr

A > expression
class AGtMethid

nitc :: AGtMethid

A method name >
class AIdAtid

nitc :: AIdAtid

An annotation name based on an identifier
class AIdMethid

nitc :: AIdMethid

A method name with a simple identifier
class AIfExpr

nitc :: AIfExpr

A if statement
class AIfexprExpr

nitc :: AIfexprExpr

A if expression (ternary conditional). eg. if true then 1 else 0
class AImplicitSelfExpr

nitc :: AImplicitSelfExpr

When there is no explicit receiver, self is implicit
class AImpliesExpr

nitc :: AImpliesExpr

A implies expression
abstract class AImport

nitc :: AImport

A import clause of a module
class AInLanguage

nitc :: AInLanguage

A language declaration for an extern block
class AInitExpr

nitc :: AInitExpr

A call to the init constructor.
class AInitPropExternCall

nitc :: AInitPropExternCall

A single callback declaration on a method on a constructor
class AIntegerExpr

nitc :: AIntegerExpr

An integer literal
class AInterfaceClasskind

nitc :: AInterfaceClasskind

An interface class modifier (interface)
class AIntrudeVisibility

nitc :: AIntrudeVisibility

An explicit intrude visibility modifier
class AIsaExpr

nitc :: AIsaExpr

A type-ckeck expression. eg x isa T
class AIssetAttrExpr

nitc :: AIssetAttrExpr

A is-set check of old-style attributes. eg isset x._a
class AKwabstractAtid

nitc :: AKwabstractAtid

An annotation name based on the keyword abstract
class AKwexternAtid

nitc :: AKwexternAtid

An annotation name based on the keyword extern
class AKwimportAtid

nitc :: AKwimportAtid

An annotation name based on the keyword import
class ALabel

nitc :: ALabel

A label at the end of a block or in a break/continue statement. eg label x
abstract class ALabelable

nitc :: ALabelable

Something that has a label.
class ALeExpr

nitc :: ALeExpr

A <= expression
class ALeMethid

nitc :: ALeMethid

A method name <=
class ALexerError

nitc :: ALexerError

A lexical error (unexpected character)
class AListExprs

nitc :: AListExprs

A simple list of expressions
class ALlAssignOp

nitc :: ALlAssignOp

A <<= assignment operation
class ALlExpr

nitc :: ALlExpr

A << expression
class ALlMethid

nitc :: ALlMethid

A method name <<
class ALocalPropExternCall

nitc :: ALocalPropExternCall

A single callback declaration on a method on the current receiver
class ALoopExpr

nitc :: ALoopExpr

A loop statement
private class ALoopHelper

nitc :: ALoopHelper

Used to factorize work on loops.
class ALtExpr

nitc :: ALtExpr

A < expression
class ALtMethid

nitc :: ALtMethid

A method name <
class AMainClassdef

nitc :: AMainClassdef

The implicit class definition of the top-level methods
class AMainMethPropdef

nitc :: AMainMethPropdef

The implicit main method
class AManyExpr

nitc :: AManyExpr

A list of expression separated with commas (arguments for instance)
class AMethPropdef

nitc :: AMethPropdef

A definition of all kind of method (including constructors)
abstract class AMethid

nitc :: AMethid

The identifier of a method in a method declaration.
class AMethidExpr

nitc :: AMethidExpr

A special expression that encapsulates a method identifier
class AMidStringExpr

nitc :: AMidStringExpr

The middle of a superstring. eg }abc{
class AMinusAssignOp

nitc :: AMinusAssignOp

A -= assignment operation
class AMinusExpr

nitc :: AMinusExpr

A - expression
class AMinusMethid

nitc :: AMinusMethid

A method name -
class AModule

nitc :: AModule

The main node of a Nit source-file
class AModuleName

nitc :: AModuleName

A possibly fully-qualified module identifier
class AModuledecl

nitc :: AModuledecl

The declaration of the module with the documentation, name, and annotations
class ANamedargExpr

nitc :: ANamedargExpr

An named notation used to pass an expression by name in a parameter
class ANeExpr

nitc :: ANeExpr

A != expression
class ANeMethid

nitc :: ANeMethid

A method name !=
class ANewExpr

nitc :: ANewExpr

An explicit instantiation. eg new T
class ANoImport

nitc :: ANoImport

The special import clause of the kernel module. eg import end
class ANotExpr

nitc :: ANotExpr

A not expression
class ANullExpr

nitc :: ANullExpr

A null literal constant
class AOnceExpr

nitc :: AOnceExpr

A once expression. eg once x
class AOperatorMethid

nitc :: AOperatorMethid

A method name for an operator
class AOrElseExpr

nitc :: AOrElseExpr

A or else expression
class AOrExpr

nitc :: AOrExpr

A or expression
class AOrangeExpr

nitc :: AOrangeExpr

An open literal range. eg [x..y[
class AParExpr

nitc :: AParExpr

A simple parenthesis. eg (x)
class AParExprs

nitc :: AParExprs

A list of expressions enclosed in parentheses
class AParam

nitc :: AParam

A parameter definition in a signature. eg x:X
class AParserError

nitc :: AParserError

A syntactic error (unexpected token)
class APercentAssignOp

nitc :: APercentAssignOp

A %= assignment operation
class APercentExpr

nitc :: APercentExpr

A % expression
class APercentMethid

nitc :: APercentMethid

A method name %
class APipeAssignOp

nitc :: APipeAssignOp

A |= assignment operation
class APipeExpr

nitc :: APipeExpr

A | expression
class APipeMethid

nitc :: APipeMethid

A method name |
class APlaceholderExpr

nitc :: APlaceholderExpr

A placeholder for a AExpr node
class APlusAssignOp

nitc :: APlusAssignOp

A += assignment operation
class APlusExpr

nitc :: APlusExpr

A + expression
class APlusMethid

nitc :: APlusMethid

A method name +
class APrivateVisibility

nitc :: APrivateVisibility

An explicit private visibility modifier
abstract class APropExternCall

nitc :: APropExternCall

A single callback declaration on a method
abstract class APropdef

nitc :: APropdef

The definition of a property
class AProtectedVisibility

nitc :: AProtectedVisibility

An explicit protected visibility modifier
class APublicVisibility

nitc :: APublicVisibility

An implicit or explicit public visibility modifier
class AQclassid

nitc :: AQclassid

A potentially qualified class identifier foo::bar::Baz
class AQid

nitc :: AQid

A potentially qualified simple identifier foo::bar::baz
class AQualified

nitc :: AQualified

A possible full method qualifier.
abstract class ARangeExpr

nitc :: ARangeExpr

A literal range, open or closed
abstract class AReassignFormExpr

nitc :: AReassignFormExpr

Whatever is a combined assignment. eg += something
class AReturnExpr

nitc :: AReturnExpr

A return statement. eg return x
class ASafeExpr

nitc :: ASafeExpr

A receiver with a ? suffix used in safe call operator.
class ASelfExpr

nitc :: ASelfExpr

A read of self
abstract class ASendExpr

nitc :: ASendExpr

A polymorphic invocation of a method
abstract class ASendReassignFormExpr

nitc :: ASendReassignFormExpr

A complex setter call (standard or brackets)
class ASignature

nitc :: ASignature

A signature in a method definition. eg (x,y:X,z:Z):T
class ASlashAssignOp

nitc :: ASlashAssignOp

A /= assignment operation
class ASlashExpr

nitc :: ASlashExpr

A / expression
class ASlashMethid

nitc :: ASlashMethid

A method name /
class AStarAssignOp

nitc :: AStarAssignOp

A *= assignment operation
class AStarExpr

nitc :: AStarExpr

A * expression
class AStarMethid

nitc :: AStarMethid

A method name *
class AStarshipExpr

nitc :: AStarshipExpr

A <=> expression
class AStarshipMethid

nitc :: AStarshipMethid

A method name <=>
class AStarstarAssignOp

nitc :: AStarstarAssignOp

A **= assignment operation
class AStarstarExpr

nitc :: AStarstarExpr

A ** expression
class AStarstarMethid

nitc :: AStarstarMethid

A method name **
class AStartStringExpr

nitc :: AStartStringExpr

The start of a superstring. eg "abc{
class AStdClassdef

nitc :: AStdClassdef

A standard class definition with a name, superclasses and properties
class AStdImport

nitc :: AStdImport

A standard import clause. eg import x
class AStringExpr

nitc :: AStringExpr

A simple string. eg. "abc"
abstract class AStringFormExpr

nitc :: AStringFormExpr

A string literal
class ASuperExpr

nitc :: ASuperExpr

A call to super. OR a call of a super-constructor
class ASuperExternCall

nitc :: ASuperExternCall

A single callback declaration on a super call
class ASuperPropdef

nitc :: ASuperPropdef

A super-class. eg super X
class ASuperstringExpr

nitc :: ASuperstringExpr

A superstring literal. eg "a{x}b{y}c"
class ATildeMethid

nitc :: ATildeMethid

A method name ~
class ATopClassdef

nitc :: ATopClassdef

The implicit class definition of the implicit main method
class ATrueExpr

nitc :: ATrueExpr

A true boolean literal constant
class AType

nitc :: AType

A static type. eg nullable X[Y]
class ATypeExpr

nitc :: ATypeExpr

A special expression that encapsulates a static type
class ATypePropdef

nitc :: ATypePropdef

A definition of a virtual type
class AUminusExpr

nitc :: AUminusExpr

A unary minus expression. eg -x
abstract class AUnaryopExpr

nitc :: AUnaryopExpr

A unary operation on a method
class AUplusExpr

nitc :: AUplusExpr

A unary plus expression. eg +x
class AUtildeExpr

nitc :: AUtildeExpr

A unary ~ expression
class AVarAssignExpr

nitc :: AVarAssignExpr

A local variable simple assignment access
class AVarExpr

nitc :: AVarExpr

A local variable read access.
abstract class AVarFormExpr

nitc :: AVarFormExpr

Whatever is an access to a local variable
class AVarReassignExpr

nitc :: AVarReassignExpr

A local variable complex assignment access
class AVarargExpr

nitc :: AVarargExpr

An ellipsis notation used to pass an expression as it, in a vararg parameter
class AVardeclExpr

nitc :: AVardeclExpr

A declaration of a local variable. eg var x: X = y
abstract class AVisibility

nitc :: AVisibility

A visibility modifier
class AWhileExpr

nitc :: AWhileExpr

A while statement
class AWithExpr

nitc :: AWithExpr

A with statement
class AYieldExpr

nitc :: AYieldExpr

A yield statement. eg yield x
class AugmentedStringFormExpr

nitc :: AugmentedStringFormExpr

Any kind of string form with augmentations from prefixes or suffixes
class EOF

nitc :: EOF

A end of file
class Start

nitc :: Start

The root of the AST
class TAmp

nitc :: TAmp

The operator &
class TAmpeq

nitc :: TAmpeq

The operator &=
class TAssign

nitc :: TAssign

The symbol =
class TAt

nitc :: TAt

The symbol @
class TAttrid

nitc :: TAttrid

An attribute identifier. They start with an underscore.
class TBadChar

nitc :: TBadChar

A malformed char
class TBadExtern

nitc :: TBadExtern

A malformed extern code block
class TBadString

nitc :: TBadString

A malformed string
class TBadTString

nitc :: TBadTString

A malformed triple quoted string
class TBang

nitc :: TBang

The operator !
class TCaret

nitc :: TCaret

The operator ^
class TCareteq

nitc :: TCareteq

The operator ^=
class TCbra

nitc :: TCbra

The symbol ]
class TChar

nitc :: TChar

A literal character
class TClassid

nitc :: TClassid

A class (or formal type) identifier. They start with an uppercase.
class TColumn

nitc :: TColumn

The symbol :
class TComma

nitc :: TComma

The symbol ,
class TComment

nitc :: TComment

Token of a line of comments
class TCpar

nitc :: TCpar

The symbol )
class TDot

nitc :: TDot

The symbol .
class TDotdot

nitc :: TDotdot

The symbol ..
class TDotdotdot

nitc :: TDotdotdot

The symbol ...
class TEndString

nitc :: TEndString

The final part of a super string (between } and ")
class TEol

nitc :: TEol

Token of end of line (basically \n)
class TEq

nitc :: TEq

The operator ==
class TExternCodeSegment

nitc :: TExternCodeSegment

A extern code block
class TFloat

nitc :: TFloat

A literal floating point number
class TGe

nitc :: TGe

The operator >=
class TGg

nitc :: TGg

The operator >>
class TGgeq

nitc :: TGgeq

The operator >>=
class TGt

nitc :: TGt

The operator >
class TId

nitc :: TId

A standard identifier (variable, method...). They start with a lowercase.
class TInteger

nitc :: TInteger

A literal integer
class TKwabort

nitc :: TKwabort

The keyword abort
class TKwabstract

nitc :: TKwabstract

The keyword abstract
class TKwand

nitc :: TKwand

The keyword and
class TKwas

nitc :: TKwas

The keyword as
class TKwassert

nitc :: TKwassert

The keyword assert
class TKwbreak

nitc :: TKwbreak

The keyword break
class TKwcatch

nitc :: TKwcatch

The keyword catch
class TKwclass

nitc :: TKwclass

The keyword class
class TKwcontinue

nitc :: TKwcontinue

The keyword continue
class TKwdebug

nitc :: TKwdebug

The special keyword __DEBUG__
class TKwdo

nitc :: TKwdo

The keyword do
class TKwelse

nitc :: TKwelse

The keyword else
class TKwend

nitc :: TKwend

The keyword end
class TKwenum

nitc :: TKwenum

The keywords enum and universal
class TKwextern

nitc :: TKwextern

The keyword extern
class TKwfalse

nitc :: TKwfalse

The keyword false
class TKwfor

nitc :: TKwfor

The keyword for
class TKwif

nitc :: TKwif

The keyword if
class TKwimplies

nitc :: TKwimplies

The keyword implies
class TKwimport

nitc :: TKwimport

The keyword import
class TKwin

nitc :: TKwin

The keyword in
class TKwinit

nitc :: TKwinit

The keyword init
class TKwinterface

nitc :: TKwinterface

The keyword interface
class TKwintrude

nitc :: TKwintrude

The keyword intrude
class TKwis

nitc :: TKwis

The keyword is
class TKwisa

nitc :: TKwisa

The keyword isa
class TKwisset

nitc :: TKwisset

The keyword isset
class TKwlabel

nitc :: TKwlabel

The keyword label
class TKwloop

nitc :: TKwloop

The keyword loop
class TKwmeth

nitc :: TKwmeth

The keyword fun
class TKwmodule

nitc :: TKwmodule

The keyword module
class TKwnew

nitc :: TKwnew

The keyword new
class TKwnot

nitc :: TKwnot

The keyword not
class TKwnull

nitc :: TKwnull

The keyword null
class TKwnullable

nitc :: TKwnullable

The keyword nullable
class TKwonce

nitc :: TKwonce

The keyword once
class TKwor

nitc :: TKwor

The keyword or
class TKwpackage

nitc :: TKwpackage

The deprecated keyword package.
class TKwprivate

nitc :: TKwprivate

The keyword private
class TKwprotected

nitc :: TKwprotected

The keyword protected
class TKwpublic

nitc :: TKwpublic

The keyword public
class TKwredef

nitc :: TKwredef

The keyword redef
class TKwreturn

nitc :: TKwreturn

The keyword return
class TKwself

nitc :: TKwself

The keyword self
class TKwsubset

nitc :: TKwsubset

The keyword subset
class TKwsuper

nitc :: TKwsuper

The keyword super
class TKwthen

nitc :: TKwthen

The keyword then
class TKwtrue

nitc :: TKwtrue

The keyword true
class TKwtype

nitc :: TKwtype

The keyword type
class TKwvar

nitc :: TKwvar

The keyword var
class TKwwhile

nitc :: TKwwhile

The keyword while
class TKwwith

nitc :: TKwwith

The keyword with
class TKwyield

nitc :: TKwyield

The keyword yield
class TLe

nitc :: TLe

The operator <=
class TLl

nitc :: TLl

The operator <<
class TLleq

nitc :: TLleq

The operator <<=
class TLt

nitc :: TLt

The operator <
class TMidString

nitc :: TMidString

The middle part of a super string (between } and {)
class TMinus

nitc :: TMinus

The operator -
class TMinuseq

nitc :: TMinuseq

The operator -=
class TNe

nitc :: TNe

The operator !=
class TObra

nitc :: TObra

The symbol [
class TOpar

nitc :: TOpar

The symbol (
class TPercent

nitc :: TPercent

The operator %
class TPercenteq

nitc :: TPercenteq

The operator %=
class TPipe

nitc :: TPipe

The operator |
class TPipeeq

nitc :: TPipeeq

The operator |=
class TPlus

nitc :: TPlus

The operator +
class TPluseq

nitc :: TPluseq

The operator +=
class TQuad

nitc :: TQuad

The symbol ::
class TQuest

nitc :: TQuest

The operator ?
class TSemi

nitc :: TSemi

The symbol ;
class TSlash

nitc :: TSlash

The operator /
class TSlasheq

nitc :: TSlasheq

The operator /=
class TStar

nitc :: TStar

The operator *
class TStareq

nitc :: TStareq

The operator *=
class TStarship

nitc :: TStarship

The operator <=>
class TStarstar

nitc :: TStarstar

The operator **
class TStarstareq

nitc :: TStarstareq

The operator **=
class TStartString

nitc :: TStartString

The starting part of a super string (between " and {)
class TString

nitc :: TString

A literal string
class TTilde

nitc :: TTilde

The operator ~
abstract class TokenKeyword

nitc :: TokenKeyword

A token associated with a keyword
abstract class TokenLiteral

nitc :: TokenLiteral

A token of a literal value (string, integer, etc).
abstract class TokenOperator

nitc :: TokenOperator

A token associated with an operator (and other lookalike symbols)

Class definitions

nitc $ ANode
# Root of the AST class-hierarchy
abstract class ANode
	# Location is set during AST building. Once built, location can not be null.
	# However, manual instantiated nodes may need more care.
	var location: Location is writable, noinit

	# The location of the important part of the node (identifier or whatever)
	fun hot_location: Location do return location

	# Display a message for the colored location of the node
	fun debug(message: String)
	do
		sys.stderr.write "{hot_location} {self.class_name}: {message}\n{hot_location.colored_line("0;32")}\n"
	end

	# Is `self` a token or a pure-structural production like `AQId`?
	fun is_structural: Bool do return false

	# Write the subtree on stdout.
	#
	# Visit the subtree and display it with additional and useful information.
	#
	# By default, this displays all kind of nodes and the corresponding lines of codes.
	#
	# See `ASTDump` for details.
	fun dump_tree(display_structural, display_line: nullable Bool)
	do
		var d = new ASTDump(display_structural or else true, display_line or else true)
		d.enter_visit(self)
		d.write_to(sys.stdout)
	end

	# Information to display on a node
	#
	# Refine this method to add additional information on each node type.
	fun dump_info(v: ASTDump): String do return ""

	# Parent of the node in the AST
	var parent: nullable ANode = null

	# The topmost ancestor of the element
	# This just apply `parent` until the first one
	fun root: ANode
	do
		var res = self
		loop
			var p = res.parent
			if p == null then return res
			res = p
		end
	end

	# The most specific common parent between `self` and `other`
	# Return null if the two node are unrelated (distinct root)
	fun common_parent(other: ANode): nullable ANode
	do
		# First, get the same depth
		var s: nullable ANode = self
		var o: nullable ANode = other
		var d = s.depth - o.depth
		while d > 0 do
			s = s.parent
			d -= 1
		end
		while d < 0 do
			o = o.parent
			d += 1
		end
		assert o.depth == s.depth
		# Second, go up until same in found
		while s != o do
			s = s.parent
			o = o.parent
		end
		return s
	end

	# Number of nodes between `self` and the `root` of the AST
	# ENSURE `self == self.root implies result == 0 `
	# ENSURE `self != self.root implies result == self.parent.depth + 1`
	fun depth: Int
	do
		var n = self
		var res = 0
		loop
			var p = n.parent
			if p == null then return res
			n = p
			res += 1
		end
	end

	# Replace a child with an other node in the AST
	private fun replace_child(old_child: ANode, new_child: nullable ANode) is abstract

	# Detach a node from its parent
	# Aborts if the node is not detachable. use `replace_with` instead
	# REQUIRE: parent != null
	# REQUIRE: is_detachable
	# ENDURE: parent == null
	fun detach
	do
		assert parent != null
		parent.replace_child(self, null)
		parent = null
	end

	# Replace itself with an other node in the AST
	# REQUIRE: parent != null
	# ENSURE: node.parent == old(parent)
	# ENSURE: parent == null
	fun replace_with(node: ANode)
	do
		assert parent != null
		parent.replace_child(self, node)
		parent = null
	end

	# Visit all nodes in order.
	# Thus, call `v.enter_visit(e)` for each child `e`
	fun visit_all(v: Visitor) is abstract

	# Do a deep search and return an array of tokens that match a given text
	fun collect_tokens_by_text(text: String): Array[Token]
	do
		var v = new CollectTokensByTextVisitor(text)
		v.enter_visit(self)
		return v.result
	end

	# Do a deep search and return an array of node that are annotated
	# The attached node can be retrieved by two invocations of parent
	fun collect_annotations_by_name(name: String): Array[AAnnotation]
	do
		var v = new CollectAnnotationsByNameVisitor(name)
		v.enter_visit(self)
		return v.result
	end
end
src/parser/parser_nodes.nit:23,1--161,3

nitc :: astutil $ ANode
redef class ANode
	# Visit the AST and computes advanced AST attributes on Tokens and Prod
	# This also force a parent on the detashed tokens
	fun parentize_tokens
	do
		var v = new PTokenVisitor
		v.work(self)
	end
end
src/astutil.nit:27,1--35,3

nitc :: simple_misc_analysis $ ANode
redef class ANode
	private fun accept_simple_misc(v: SimpleMiscVisitor)
	do
		visit_all(v)
		after_simple_misc(v)
	end
	private fun after_simple_misc(v: SimpleMiscVisitor) do end
end
src/frontend/simple_misc_analysis.nit:81,1--88,3

nitc :: literal $ ANode
redef class ANode
	private fun accept_literal(v: LiteralVisitor) do end
end
src/literal.nit:55,1--57,3

nitc :: modelbuilder_base $ ANode
redef class ANode
	# The indication that the node did not pass some semantic verifications.
	#
	# This simple flag is set by a given analysis to say that the node is broken and unusable in
	# an execution.
	# When a node status is set to broken, it is usually associated with a error message.
	#
	# If it is safe to do so, clients of the AST SHOULD just skip broken nodes in their processing.
	# Clients that do not care about the executability (e.g. metrics) MAY still process the node or
	# perform specific checks to determinate the validity of the node.
	#
	# Note that the broken status is not propagated to parent or children nodes.
	# e.g. a broken expression used as argument does not make the whole call broken.
	var is_broken = false is writable

	redef fun dump_info(v) do
		var res = super
		if is_broken then
			res += v.red("*broken*")
		end
		return res
	end
end
src/modelbuilder_base.nit:531,1--553,3

nitc :: saf_base $ ANode
redef class ANode

	# Apply the forward analysis `v` to `self`.
	fun accept_forward_analysis(v: ForwardAnalysis) do
		v.current_inset = v.current_outset.clone
		v.current_outset = v.current_inset.clone
		v.insets[self] = v.current_inset
		visit_all(v)
		v.outsets[self] = v.current_outset
	end
end
src/saf/saf_base.nit:130,1--140,3

nitc :: scope $ ANode
redef class ANode
	private fun accept_scope_visitor(v: ScopeVisitor)
	do
		visit_all(v)
	end
end
src/semantize/scope.nit:246,1--251,3

nitc :: flow $ ANode
redef class ANode
	private fun accept_flow_visitor(v: FlowVisitor)
	do
		self.visit_all(v)
	end
end
src/semantize/flow.nit:249,1--254,3

nitc :: pretty $ ANode
redef class ANode
	# Start visit of `self` using a `PrettyPrinterVisitor`
	private fun accept_pretty_printer(v: PrettyPrinterVisitor) is abstract

	# Collect the length (in `Char`) of the node.
	private fun collect_length: Int is abstract

	# Is `self` printable in one line?
	private fun is_inlinable: Bool do return true

	# Force `self` to be rendered as a block.
	private var force_block = false

	# Does `self` have to be rendered as a block?
	private fun must_be_block: Bool do return force_block

	# Force `self` to be rendered as a line.
	private var force_inline = false

	# Does `self` have be rendered as a line?
	private fun must_be_inline: Bool do
		if parent != null and parent.must_be_inline then return true
		return force_inline
	end

	# Does `self` was written in one line before transformation?
	private fun was_inline: Bool is abstract
end
src/pretty.nit:319,1--346,3

nitc :: regex_phase $ ANode
redef class ANode
	private fun accept_regex_visitor(v: RegexVisitor) do visit_all v
end
src/frontend/regex_phase.nit:46,1--48,3

nitc :: serialization_model_phase $ ANode
redef class ANode
	# Is this node annotated to be made serializable?
	private fun is_serialize: Bool do return false

	# Is this node annotated to not be made serializable?
	private fun is_noserialize: Bool do return false
end
src/frontend/serialization_model_phase.nit:37,1--43,3

nitc :: reaching_defs $ ANode
redef class ANode

	# Apply a ReachingDefsAnalysis to `self`.
	fun accept_reaching_defs(v: ReachingDefsAnalysis) do accept_forward_analysis(v)
end
src/saf/reaching_defs.nit:69,1--73,3

nitc :: local_var_init $ ANode
redef class ANode
	private fun accept_local_var_visitor(v: LocalVarInitVisitor) do self.visit_all(v)
end
src/semantize/local_var_init.nit:105,1--107,3

nitc :: typing $ ANode
redef class ANode
	private fun accept_post_typing(v: TypeVisitor) do end

	# An additional information message to explain the role of a child expression.
	#
	# The point of the method is to allow some kind of double dispatch so the parent
	# choose how to describe its children.
	private fun bad_expr_message(child: AExpr): nullable String do return null
end
src/semantize/typing.nit:951,1--959,3

nitc :: auto_super_init $ ANode
redef class ANode
	private fun accept_auto_super_init(v: AutoSuperInitVisitor) do end
end
src/semantize/auto_super_init.nit:186,1--188,3

nitc :: astbuilder $ ANode
redef class ANode
	super Cloneable

	redef fun clone: SELF
	do
		# By default the clone abort to avoid surprises
		print "The clone method is not implemented for the `{self.class_name}` class"
		abort
	end
	# Recursively validate a AST node.
	# This ensure that location and parenting are defined and coherent.
	#
	# After complex low-level AST manipulation and construction,
	# it is recommended to call it.
	#
	# Note: this just instantiate and run an `ASTValidationVisitor`.
	fun validate
	do
		(new ASTValidationVisitor).enter_visit(self)
	end

	private fun accept_ast_validation(v: ASTValidationVisitor)
	do
		var parent = self.parent
		var path = v.path

		if path.length > 0 then
			var path_parent = v.path.first
			if parent == null then
				self.parent = path_parent
				#debug "PARENT: expected parent: {path_parent}"
				v.seen.add(self)
			else if parent != path_parent then
				self.parent = path_parent
				if v.seen.has(self) then
					debug "DUPLICATE (NOTATREE): already seen node with parent {parent} now with {path_parent}."
				else
					v.seen.add(self)
					debug "PARENT: expected parent: {path_parent}, got {parent}"
				end
			end
		end

		if not isset _location then
			#debug "LOCATION: unlocated node {v.path.join(", ")}"
			_location = self.parent.location
		end

		path.unshift(self)
		visit_all(v)
		path.shift
	end
end
src/astbuilder.nit:881,1--933,3

nitc :: rapid_type_analysis $ ANode
redef class ANode
	private fun accept_rapid_type_visitor(v: RapidTypeVisitor)
	do
	end
end
src/rapid_type_analysis.nit:538,1--542,3

nitc :: naive_interpreter $ ANode
redef class ANode
	# Aborts the program with a message
	# `v` is used to know if a colored message is displayed or not
	fun fatal(v: NaiveInterpreter, message: String)
	do
		# Abort if there is a `catch` block
		if v.catch_count > 0 then
			v.last_error = new FatalError(message, self)
			abort
		end

		if v.modelbuilder.toolcontext.opt_no_color.value then
			sys.stderr.write("Runtime error: {message} ({location.file.filename}:{location.line_start})\n")
		else
			sys.stderr.write("{location}: Runtime error: {message}\n{location.colored_line("0;31")}\n")
			sys.stderr.write(v.stack_trace)
			sys.stderr.write("\n")
		end
		exit(1)
	end
end
src/interpreter/naive_interpreter.nit:867,1--887,3

nitc :: i18n_phase $ ANode
redef class ANode
	private fun accept_string_finder(v: StringFinder) do end
end
src/frontend/i18n_phase.nit:126,1--128,3

nitc :: transform $ ANode
redef class ANode
	private fun full_transform_visitor(v: TransformVisitor)
	do
		visit_all(v)
		accept_transform_visitor(v)
	end
	private fun accept_transform_visitor(v: TransformVisitor)
	do
	end
end
src/transform.nit:83,1--92,3

nitc :: contracts $ ANode
redef class ANode
	private fun create_contracts(v: ContractsVisitor) do end
	private fun check_callsite(v: CallSiteVisitor) do end
end
src/contracts.nit:284,1--287,3

nitc :: htmlight $ ANode
redef class ANode
	# Optionally creates a tag that encapsulate the AST element on HTML rendering
	protected fun make_tag(v: HtmlightVisitor): nullable HTMLTag do return null

	# Add aditionnal information on a child-token and return an additionnal HInfoBox on it
	protected fun decorate_tag(v: HtmlightVisitor, res: HTMLTag, token: Token): nullable HInfoBox
	do
		#debug("no decoration for {token.inspect}")
		#res.add_class("nc_error")
		return null
	end

	# Return a optional infobox
	fun infobox(v: HtmlightVisitor): nullable HInfoBox do return null
end
src/htmlight.nit:724,1--738,3

nitc :: test_astbuilder $ ANode
redef class ANode
	private fun do_cloneable(v: CloneVisitor)do end

	# Create a new clone of `self`
	fun replace_clone
	do
		var self_clone = self.clone
		replace_with(self.clone)
		self_clone.location = location
		#Call the `validate` method to set correctly the parents and the location
		self_clone.validate
	end
end
src/test_astbuilder.nit:48,1--60,3