Class InferredJavaType


  • public class InferredJavaType
    extends java.lang.Object
    Multiple expressions / lvalues will have pointers to a single instance of this - at type changing boundaries, we will explicitly create a new one.

    Thus if we have

    a = 94 b = a c = b charfunction((no cast)c)

    we know that c is appropriate to be passed directly to a char function (i.e. a char). So we can update the type which is held by c=b=a=94.

    however, if we have

    a = 94 b = a c = (i2c)b charfunction((no cast)c), c will have a forced char type, we won't need to update it.

    Note that this works only for narrowing functions, as a char will be passed by the JVM to an int function without extension.