nitc :: AFullPropExternCall :: _n_methid
The name of the called-back methodnitc :: AFullPropExternCall :: _n_type
The type of the receiver of the called-back methodnitc :: AFullPropExternCall :: n_methid=
The name of the called-back methodnitc :: AFullPropExternCall :: n_type
The type of the receiver of the called-back methodnitc :: AFullPropExternCall :: n_type=
The type of the receiver of the called-back methodnitc $ AFullPropExternCall :: SELF
Type of this instance, automatically specialized in every classnitc :: pretty $ AFullPropExternCall :: accept_pretty_printer
Start visit ofself
using a PrettyPrinterVisitor
nitc :: parser_prod $ AFullPropExternCall :: n_methid=
The name of the called-back methodnitc :: parser_prod $ AFullPropExternCall :: n_type=
The type of the receiver of the called-back methodnitc :: parser_prod $ AFullPropExternCall :: replace_child
Replace a child with an other node in the ASTnitc :: nitni_callbacks $ AFullPropExternCall :: verify_and_collect
Verify this explicit declaration of call from C and collect all relevant callbacksnitc :: parser_prod $ AFullPropExternCall :: visit_all
Visit all nodes in order.nitc :: 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 :: AFullPropExternCall :: _n_methid
The name of the called-back methodnitc :: AFullPropExternCall :: _n_type
The type of the receiver of the called-back methodnitc :: 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
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 itnitc :: ANode :: defaultinit
nitc :: AExternCall :: defaultinit
nitc :: Prod :: defaultinit
core :: Object :: defaultinit
core :: Cloneable :: defaultinit
nitc :: APropExternCall :: 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 :: AExternCall :: init_aexterncall
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 :: AFullPropExternCall :: n_methid=
The name of the called-back methodnitc :: AFullPropExternCall :: n_type
The type of the receiver of the called-back methodnitc :: AFullPropExternCall :: n_type=
The type of the receiver of the called-back methodcore :: 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 :: AExternCall :: verify_and_collect
Verify this explicit declaration of call from C and collect all relevant callbacksnitc :: ANode :: was_inline
Doesself
was written in one line before transformation?
# A single callback declaration on a method on an explicit receiver type.
class AFullPropExternCall
super APropExternCall
# The type of the receiver of the called-back method
var n_type: AType is writable, noinit
# The dot `.`
var n_dot: nullable TDot = null is writable
# The name of the called-back method
var n_methid: AMethid is writable, noinit
end
src/parser/parser_nodes.nit:1506,1--1518,3
redef class AFullPropExternCall
init init_afullpropexterncall (
n_type: nullable AType,
n_dot: nullable TDot,
n_methid: nullable AMethid
)
do
_n_type = n_type.as(not null)
n_type.parent = self
_n_dot = n_dot
if n_dot != null then n_dot.parent = self
_n_methid = n_methid.as(not null)
n_methid.parent = self
end
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
do
if _n_type == old_child then
n_type = new_child.as(AType)
return
end
if _n_dot == old_child then
n_dot = new_child.as(nullable TDot)
return
end
if _n_methid == old_child then
n_methid = new_child.as(AMethid)
return
end
end
redef fun n_type=(node)
do
_n_type = node
node.parent = self
end
redef fun n_dot=(node)
do
_n_dot = node
if node != null then node.parent = self
end
redef fun n_methid=(node)
do
_n_methid = node
node.parent = self
end
redef fun visit_all(v: Visitor)
do
v.enter_visit(_n_type)
v.enter_visit(_n_dot)
v.enter_visit(_n_methid)
end
end
src/parser/parser_prod.nit:8201,1--8255,3
redef class AFullPropExternCall
redef fun verify_and_collect(npropdef, callback_set, toolcontext)
do
var mmodule = npropdef.mpropdef.mclassdef.mmodule
var mclassdef = npropdef.mpropdef.mclassdef
var mclass_type = mclassdef.bound_mtype
var mtype = toolcontext.modelbuilder.resolve_mtype(mclassdef, n_type)
if mtype == null then return
if mtype isa MFormalType then
mtype = mtype.anchor_to(mmodule, mclass_type)
end
if mtype isa MNullableType then
toolcontext.error(location, "Error: type `{n_type.collect_text}` is nullable and thus cannot be the receiver." )
return
end
var m_name = n_methid.collect_text
var method = toolcontext.modelbuilder.try_get_mproperty_by_name2( self,
mmodule, mtype, m_name )
if method == null then
toolcontext.error(location, "Error: method `{m_name}` not found in `{n_type.collect_text}`." )
return
end
var explicit_call = new MExplicitCall(mtype.as(MClassType), method, mmodule)
callback_set.callbacks.add(explicit_call)
explicit_call.fill_type_for(callback_set, mmodule)
end
end
src/nitni/nitni_callbacks.nit:301,1--333,3