newClassT (#id, #parent, #encl, #constructor, [#arg_1,...], #type, #anonClDef, #encltype)

Represents the class instance creation expression.

Arguments

#id: id
the unique ID assigned to this fact.

#parent: id
ID of the parent node.

#encl: methodT, constructorT, classInitializerT, fieldT
ID of the fact that represents the enclosing element.

#constructor: constructorT, null
ID of the constructor invoked by this expression. If the referenced constructor is a anonymous class constructor #constructor is 'null'.

[#arg_1,…]: expression
list of argument expressions in this class instance creation expression.

#type: parameterizedTypeT, typeRefT
ID of the fact referencing the class instantiated by this constructor call. ← Changed in JTransformer 2.6.0

#anonClDef: classT, null
the anonymous class declaration introduced by this class instance creation expression, if it has one.

#encltype: expression, null
ID of the inner or member class constructor or ID of the anonymous class.

Sample Java Code

void myFunction(){
	String mySting = new String();
}

Its PEF Representation

methodT(#encl, ..., 'myFunction', [], #returntype, [], ...).
localT(#parent, ..., #encl, #localtype, 'mySting', #id).
newClassT(#id, #parent, #encl, #constructor, [], #typeref, 'null', 'null').
typeRefT(#typeref, ..., ..., #classid).
classT(#classid, ..., 'String', ...).

AST Specification

ast_node_def('Java',newClassT,[
     ast_arg(id,        mult(1,1,no ), id, [newClassT]), % <-- convention!!!
     ast_arg(parent,    mult(1,1,no ), id, [id]), % <-- convention!!!
     ast_arg(encl,      mult(1,1,no ), id, [methodT, constructorT, classInitializerT, fieldT]),
     ast_arg(constr,    mult(0,1,no),  id, [constructorT, nullType]),
     ast_arg(args,      mult(0,*,ord), id, [expressionType]),
     ast_arg(ref,       mult(0,1,no),  id, [parameterizedTypeT,typeRefT]),
     ast_arg(anonClDef, mult(0,1,no),  id, [classT, nullType]),
     ast_arg(encltype,  mult(0,1,no),  id, [expressionType, nullType])
]).
research/jtransformer/api/java/pefs/3.0/newclasst.txt · Last modified: 2018/05/09 01:59 (external edit)

SEWiki, © 2024