javalang icon indicating copy to clipboard operation
javalang copied to clipboard

Unexpected behavior for generic method invocation with explicit typing

Open cedricrupb opened this issue 3 years ago • 0 comments

Issue

For a method invocation dummyObject.<Type>test(), it is expected that AST representation includes dummyObject as the qualifier and test as the member (method call). However, Javalang would parse dummyObject as the member and ignores the method call at all.

Version

javalang 0.13.0 Python 3.8

Minimal example

import javalang

code = """
public class MinimalExample {

    public static void testMinimal(Object dummyObject){
        TestResult result = dummyObject.<TestResult>dummyFunction();
    }

}
"""

tree = javalang.parse.parse(code)
print(tree.types[0].body[0].body[0])

Output:

LocalVariableDeclaration(
annotations=[],
declarators=[
   VariableDeclarator(dimensions=[], 
        initializer=
                 MethodInvocation(arguments=[], 
                                       member=dummyObject, 
                                       postfix_operators=[], 
                                       prefix_operators=[], 
                                       qualifier=, selectors=[],
                                       type_arguments=[TypeArgument(pattern_type=None, type=ReferenceType(arguments=None,   dimensions=[], name=TestResult, sub_type=None))]), name=result)
          ], 
          modifiers=set(), 
          type=ReferenceType(arguments=None, dimensions=[], name=TestResult, sub_type=None)
)

cedricrupb avatar Aug 10 '21 07:08 cedricrupb