SMAT-Lab/Scalpel

Duplicate entry (parameter and variable) for function parameter during type inferencing

Closed this issue · 2 comments

Consider the following modified type_infer_example.py (`:

from os import getcwd

def my_function(x):
    x = "Current working directory: "
    return x + getcwd()

Running type_infer_tutorial.py on this file, I get the following output (slightly modified for clarify):

python type_infer_tutorial.py
{'file': 'type_infer_example.py', 'line_number': 4, 'function': 'my_function', 'type': {'str'}}
{'file': 'type_infer_example.py', 'line_number': 4, 'parameter': 'x', 'function': 'my_function', 'type': {'any'}}
{'file': 'type_infer_example.py', 'line_number': 5, 'variable': 'x', 'function': 'my_function', 'type': {'str'}}

Above, there are two entries for x but, actually, there is only one x, i.e., the parameter x. In other words, there is no variable x.

Hi,
In this example code, I believe that x is reassigned to the string "Current working directory:". As such, there is a local variable x which is a str and we could not infer the parameter type from the given information so parameter 'x' would be any. Hope that helps.

Ah, I see, the type inferencing is per line, i.e., there is a variable x at some line and at this line it has some type. Thanks.