InferringTypeArguments

File InferringTypeArguments.str
Author Martin Bravenboer
Since unknown

15.12.2.7: Inferring Type Arguments Based on Actual Arguments




Statistics


General
Lines of code 131
Stratego
Module number 1 (100% documented)
Constructor number 0
Overlay number 0
Strategy number 10 (90% documented)
Rule number 1 (0% documented)
DynamicRule number 0



Strategy summary


infer-type-arguments(ATerm initial-constraints) Given a list of initial constraints, infers the type arguments for all formal type parameters of the method InferringTypeArguments.str
infer-type-arguments-from-constraints(ATerm tvs) n/a InferringTypeArguments.str
infer-unresolved-type-arguments n/a InferringTypeArguments.str
resolve-constraints(ATerm typevars) Result list can contain duplicates, even with different values for illegal invocations InferringTypeArguments.str
resolve-implied-equality-constraint(ATerm constraints, ATerm results) From Tj = U, where U is not a type variable InferringTypeArguments.str
resolve-implied-equality-constraint(ATerm constraints, ATerm results) Form Tj = Tj InferringTypeArguments.str
resolve-implied-equality-constraint(ATerm constraints, ATerm results) Form Tj = Tk, where k != j InferringTypeArguments.str
resolve-implied-equality-constraints(ATerm results) n/a InferringTypeArguments.str
resolve-supertype-constaints(ATerm typevars, ATerm results) n/a InferringTypeArguments.str
resolve-supertype-constaints(ATerm typevar) n/a InferringTypeArguments.str

Rule summary


type-param-to-type-variable(ATerm method) n/a InferringTypeArguments.str



Strategy details


ATerm infer-type-arguments(ATerm initial-constraints)
File InferringTypeArguments.str
Author unknown
Since unknown
 

Given a list of initial constraints, infers the type arguments forall formal type parameters of the method.


type Method Object -> Hashtable(TypeVar, List(Type))

 
ATerm infer-type-arguments-from-constraints(ATerm tvs)
File InferringTypeArguments.str
Author unknown
Since unknown
 
Parameters
ATerm tvs List(TypeVar)

No information available.


type List(Constraint) -> Hashtable(TypeVar, List(Type))

 
ATerm resolve-constraints(ATerm typevars)
File InferringTypeArguments.str
Author unknown
Since unknown
 
Parameters
ATerm typevars List(TypeVar)

Result list can contain duplicates, even with different values forillegal invocations. These should usually be reported as errors by theinvoker of this strategy.


type List(Constraint) -> Hashtable(TypeVar, List(Type))

 
ATerm resolve-implied-equality-constraint(ATerm constraints, ATerm results)
File InferringTypeArguments.str
Author unknown
Since unknown
 

From Tj = U, where U is not a type variable.


todo Should the lhs be rewritten?
todo Should equality constrains be rewritten?

 
ATerm resolve-implied-equality-constraint(ATerm constraints, ATerm results)
File InferringTypeArguments.str
Author unknown
Since unknown
 

Form Tj = Tj



 
ATerm resolve-implied-equality-constraint(ATerm constraints, ATerm results)
File InferringTypeArguments.str
Author unknown
Since unknown
 

Form Tj = Tk, where k != j.


todo I think this equality should be recorded?
todo Should equality constrains be rewritten?
todo Should the lhs of the constraints be rewritten?

 
ATerm resolve-implied-equality-constraints(ATerm results)
File InferringTypeArguments.str
Author unknown
Since unknown
 
Parameters
ATerm results Hashtable(TypeVar, List(Type))

No information available.


type List(Constraint) -> List(Constraint)

 
ATerm resolve-supertype-constaints(ATerm typevars, ATerm results)
File InferringTypeArguments.str
Author unknown
Since unknown
 

No information available.


todo Limit inference to remaining type variables?
type List(Constraints) -> _

 
ATerm resolve-supertype-constaints(ATerm typevar)
File InferringTypeArguments.str
Author unknown
Since unknown
 

No information available.


type List(Constraint) ->