methodReferenceT(#id, #parent, #encl, #expr, #type, [#type_param_1,...], #ref)

Represents a method reference. See the Java Language Specification.

Arguments

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

#parent: id
the ID of the fact that represents the parent of this fact in the prolog AST.

#encl: method declaration type, fieldT
the ID of the fact that represents the enclosing element.

#expr: expression, staticTypeRefT, null
the ID of the fact representing the receiver expression or type. If the receiver is an array type, a parameterized type or a type parameter, this argument's value is null and the argument “type” is used instead.

#type: type reference, null
the ID of the fact representing the receiver, if the receiver is an array type, a parameterized type or a type parameter. In all the other cases this argument's value is null and the argument “expr” is used instead.

[#type_param_1,…]: Type reference, wildcardT
list of IDs of the type parameters of this method reference.

#ref: methodT
ID of the methodT fact that represents the declaration of the referenced method.

Sample Java Source

Arrays.sort(someArray, String::compareToIgnoreCase);

Its PEF Representation

callT(#CallToSort, ..., [#someArrayParam, #MethodReference], ...).
methodReferenceT(#MethodReference, #CallToSort, #Enclosing, #StaticTypeRef, null, [], #ReferenceToCompareMethod).
staticTypeRefT(#StaticTypeRef, #MethodReference, #Enclosing, #RefToString).

AST Specification

ast_node_type_spec(methodReferenceT,[
     ast_arg(id,         mult(1,1,no ), id,  [methodReferenceT]),
     ast_arg(parent,     mult(1,1,no ), id,  [id]),
     ast_arg(encl,       mult(1,1,no ), id,  [method_declaration_type, fieldT]),
     ast_arg(expr,       mult(1,1,no ), id,  [expressionType, staticTypeRefT, null_type]),
     ast_arg(type,       mult(1,1,no ), id,  [type_inst, null_type]),
     ast_arg(typeParams, mult(0,*,ord), id,  [type_inst, wildcardT]),
     ast_arg(ref,        mult(1,1,no ), id,  [methodT])
]).
research/jtransformer/api/java/pefs/4.2/methodreferencet.txt · Last modified: 2018/05/09 01:59 (external edit)

SEWiki, © 2023