nullable X[Y]
nitc :: AType :: checked_mtype=
Is the mtype a valid one?nitc :: AType :: defaultinit
nitc :: AType :: init_atype
nitc :: AType :: n_kwnullable=
Thenullable
keyword
nitc :: pretty $ AType :: accept_pretty_printer
Start visit ofself
using a PrettyPrinterVisitor
nitc :: htmlight $ AType :: decorate_tag
Add aditionnal information on a child-token and return an additionnal HInfoBox on itnitc :: parser_prod $ AType :: n_annotations=
All the annotations attached directly to the nodenitc :: parser_prod $ AType :: n_kwnullable=
Thenullable
keyword
nitc :: parser_prod $ AType :: replace_child
Replace a child with an other node in the ASTnitc :: Prod :: _first_location
Location on the first token after the start of a productionnitc :: Prod :: _first_token
The first token of the production in the ASTnitc :: ANode :: _is_broken
The indication that the node did not pass some semantic verifications.nitc :: Prod :: _last_token
The last token of the production in the ASTnitc :: Prod :: _n_annotations
All the annotations attached directly to the nodenitc :: ANode :: accept_ast_validation
nitc :: ANode :: accept_auto_super_init
nitc :: ANode :: accept_flow_visitor
nitc :: ANode :: accept_forward_analysis
Apply the forward analysisv
to self
.
nitc :: ANode :: accept_literal
nitc :: ANode :: accept_post_typing
nitc :: ANode :: accept_pretty_printer
Start visit ofself
using a PrettyPrinterVisitor
nitc :: ANode :: accept_reaching_defs
Apply a ReachingDefsAnalysis toself
.
nitc :: ANode :: accept_regex_visitor
nitc :: ANode :: accept_scope_visitor
nitc :: ANode :: accept_simple_misc
nitc :: ANode :: accept_string_finder
nitc :: ANode :: after_simple_misc
nitc :: ANode :: bad_expr_message
An additional information message to explain the role of a child expression.nitc :: ANode :: check_callsite
nitc :: AType :: checked_mtype=
Is the mtype a valid one?core :: Object :: class_factory
Implementation used byget_class
to create the specific class.
nitc :: ANode :: collect_annotations_by_name
Do a deep search and return an array of node that are annotatednitc :: Prod :: collect_comments
Collect allTComment
contained in the production
nitc :: ANode :: collect_length
Collect the length (inChar
) of the node.
nitc :: ANode :: collect_tokens_by_text
Do a deep search and return an array of tokens that match a given textnitc :: ANode :: common_parent
The most specific common parent betweenself
and other
nitc :: ANode :: create_contracts
nitc :: ANode :: decorate_tag
Add aditionnal information on a child-token and return an additionnal HInfoBox on itcore :: Cloneable :: defaultinit
core :: Object :: defaultinit
nitc :: AType :: defaultinit
nitc :: ANode :: defaultinit
nitc :: Prod :: defaultinit
nitc :: ANode :: do_cloneable
nitc :: Prod :: first_location
Location on the first token after the start of a productionnitc :: Prod :: first_location=
Location on the first token after the start of a productionnitc :: Prod :: first_token
The first token of the production in the ASTnitc :: Prod :: first_token=
The first token of the production in the ASTnitc :: ANode :: force_block=
Forceself
to be rendered as a block.
nitc :: ANode :: force_inline=
Forceself
to be rendered as a line.
nitc :: ANode :: full_transform_visitor
nitc :: Prod :: get_annotations
Return all its annotations of a given name in the order of their declarationnitc :: Prod :: get_single_annotation
Try to get its single annotation with a given namenitc :: ANode :: hot_location
The location of the important part of the node (identifier or whatever)nitc :: AType :: init_atype
nitc :: ANode :: is_broken=
The indication that the node did not pass some semantic verifications.nitc :: ANode :: is_noserialize
Is this node annotated to not be made serializable?core :: Object :: is_same_instance
Return true ifself
and other
are the same instance (i.e. same identity).
core :: Object :: is_same_serialized
Isself
the same as other
in a serialization context?
core :: Object :: is_same_type
Return true ifself
and other
have the same dynamic type.
nitc :: ANode :: is_serialize
Is this node annotated to be made serializable?nitc :: ANode :: is_structural
Isself
a token or a pure-structural production like AQId
?
nitc :: Prod :: last_token
The last token of the production in the ASTnitc :: Prod :: last_token=
The last token of the production in the ASTnitc :: ANode :: must_be_block
Doesself
have to be rendered as a block?
nitc :: ANode :: must_be_inline
Doesself
have be rendered as a line?
nitc :: Prod :: n_annotations
All the annotations attached directly to the nodenitc :: Prod :: n_annotations=
All the annotations attached directly to the nodenitc :: AType :: n_kwnullable=
Thenullable
keyword
core :: Object :: native_class_name
The class name of the object in CString format.core :: Object :: output_class_name
Display class name on stdout (debug only).nitc :: ANode :: parentize_tokens
Visit the AST and computes advanced AST attributes on Tokens and Prodnitc :: ANode :: replace_child
Replace a child with an other node in the ASTnitc :: ANode :: replace_with
Replace itself with an other node in the ASTnitc :: Prod :: start_token
The token where the production really start (skipping ADoc).nitc :: ANode :: was_inline
Doesself
was written in one line before transformation?
# A static type. eg `nullable X[Y]`
class AType
super Prod
# The `nullable` keyword
var n_kwnullable: nullable TKwnullable = null is writable
# The name of the class or of the formal type
var n_qid: AQclassid is writable, noinit
# The opening bracket
var n_obra: nullable TObra = null is writable
# Type arguments for a generic type
var n_types = new ANodes[AType](self)
# The closing bracket
var n_cbra: nullable TCbra = null is writable
end
src/parser/parser_nodes.nit:1810,1--1827,3
redef class AType
init init_atype (
n_kwnullable: nullable TKwnullable,
n_qid: nullable AQclassid,
n_obra: nullable TObra,
n_types: Collection[Object], # Should be Collection[AType]
n_cbra: nullable TCbra,
n_annotations: nullable AAnnotations
)
do
_n_kwnullable = n_kwnullable
if n_kwnullable != null then n_kwnullable.parent = self
_n_qid = n_qid.as(not null)
n_qid.parent = self
_n_obra = n_obra
if n_obra != null then n_obra.parent = self
self.n_types.unsafe_add_all(n_types)
_n_cbra = n_cbra
if n_cbra != null then n_cbra.parent = self
_n_annotations = n_annotations
if n_annotations != null then n_annotations.parent = self
end
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
do
if _n_kwnullable == old_child then
n_kwnullable = new_child.as(nullable TKwnullable)
return
end
if _n_qid == old_child then
n_qid = new_child.as(AQclassid)
return
end
if _n_obra == old_child then
n_obra = new_child.as(nullable TObra)
return
end
if n_types.replace_child(old_child, new_child) then return
if _n_cbra == old_child then
n_cbra = new_child.as(nullable TCbra)
return
end
if _n_annotations == old_child then
n_annotations = new_child.as(nullable AAnnotations)
return
end
end
redef fun n_kwnullable=(node)
do
_n_kwnullable = node
if node != null then node.parent = self
end
redef fun n_qid=(node)
do
_n_qid = node
node.parent = self
end
redef fun n_obra=(node)
do
_n_obra = node
if node != null then node.parent = self
end
redef fun n_cbra=(node)
do
_n_cbra = node
if node != null then node.parent = self
end
redef fun n_annotations=(node)
do
_n_annotations = node
if node != null then node.parent = self
end
redef fun visit_all(v: Visitor)
do
v.enter_visit(_n_kwnullable)
v.enter_visit(_n_qid)
v.enter_visit(_n_obra)
n_types.visit_all(v)
v.enter_visit(_n_cbra)
v.enter_visit(_n_annotations)
end
end
src/parser/parser_prod.nit:2486,1--2570,3
redef class AType
# The mtype associated to the node
var mtype: nullable MType = null
# Is the mtype a valid one?
var checked_mtype: Bool = false
redef fun dump_info(v) do
var res = super
var mtype = self.mtype
if mtype != null then
res += v.yellow(":{mtype}")
end
return res
end
end
src/modelbuilder_base.nit:555,1--570,3
redef class AType
private fun type_name: String
do
var name = n_qid.n_id.text
if n_kwnullable != null then name = "nullable {name}"
var types = n_types
if not types.is_empty then
var params = new Array[String]
for t in types do params.add(t.type_name)
return "{name}[{params.join(", ")}]"
else return name
end
end
src/frontend/serialization_model_phase.nit:274,1--288,3