15.12.2 Compile-Time Step 2: Determine Method Signature
Locate methods that are accessible and applicableDescriptor: signature plus return type
Strategy summary
|
determine-actual-formal-parameter-types(ATerm type, ATerm invocation)
|
Determines S1
|
StepSignature.str
|
determine-actual-type-arguments(ATerm type, ATerm invocation)
|
Determines U1
|
StepSignature.str
|
determine-ASU(ATerm type, ATerm invocation)
|
n/a
|
StepSignature.str
|
determine-method-signature(ATerm type, ATerm class, ATerm fromclass)
|
n/a
|
StepSignature.str
|
determine-result-type(ATerm invtype, ATerm attrs)
|
n/a
|
StepSignature.str
|
get-arguments-of-invocation
|
Returns the list of arguments of a method invocation
|
StepSignature.str
|
identify-potentially-applicable-methods(ATerm class, ATerm fromclass)
|
n/a
|
StepSignature.str
|
is-applicable-method-by-method-invocation-conversion(ATerm type, ATerm invocation)
|
n/a
|
StepSignature.str
|
is-applicable-method-by-method-invocation-conversion(ATerm A, ATerm S, ATerm U)
|
n/a
|
StepSignature.str
|
is-applicable-method-by-subtyping(ATerm type, ATerm invocation)
|
Succeeds if this method is applicable by subtyping
|
StepSignature.str
|
is-applicable-method-by-subtyping(ATerm A, ATerm S, ATerm U)
|
n/a
|
StepSignature.str
|
is-applicable-variable-arity-method
|
n/a
|
StepSignature.str
|
is-more-specific(ATerm m2)
|
Succeeds if m1 is more specific than m2
|
StepSignature.str
|
is-strictly-more-specific(ATerm m2)
|
Succeeds if m1 is strictly more specific than m2
|
StepSignature.str
|
opt-attr-U(Strategy cont)
|
Adds an attribute ActualTypeArgs if there are any
|
StepSignature.str
|
select-applicable-methods(ATerm type, ATerm invocation)
|
Might return an empty list
|
StepSignature.str
|
select-maximally-specific-methods
|
n/a
|
StepSignature.str
|
was-unchecked-conversion-necessary
|
n/a
|
StepSignature.str
|
Strategy details
|
ATerm
|
determine-actual-formal-parameter-types(ATerm type, ATerm invocation)
|
File
|
StepSignature.str
|
Author
|
unknown
|
Since
|
unknown
|
|
Parameters
ATerm
type
|
Actual method invocation.
|
|
Determines S1 ... Sn and U1 ... Up as specified in 15.12.2.2
returns
|
Tuple (S, U)
|
type
|
Method Object -> (List(Type), List(Type))
|
|
|
ATerm
|
determine-actual-type-arguments(ATerm type, ATerm invocation)
|
File
|
StepSignature.str
|
Author
|
unknown
|
Since
|
unknown
|
|
Parameters
ATerm
type
|
Actual method invocation.
|
ATerm
invocation
|
Invoke inference of type arguments.
|
|
Determines U1 ... Up as specified in 15.12.2.2
type
|
Method Object -> List(Type)
|
|
|
ATerm
|
determine-ASU(ATerm type, ATerm invocation)
|
File
|
StepSignature.str
|
Author
|
unknown
|
Since
|
unknown
|
|
Parameters
ATerm
type
|
Type: the type on which the invocation occurs.
|
ATerm
invocation
|
Expr: the method invocation
|
|
No information available.
|
|
ATerm
|
determine-method-signature(ATerm type, ATerm class, ATerm fromclass)
|
No information available.
type
|
Expr -> (Method Object, List(Attribute))
|
|
|
ATerm
|
get-arguments-of-invocation
|
Returns the list of arguments of a method invocation.
|
|
ATerm
|
is-applicable-method-by-subtyping(ATerm type, ATerm invocation)
|
File
|
StepSignature.str
|
Author
|
unknown
|
Since
|
unknown
|
|
Parameters
ATerm
type
|
Type: the type on which the invocation occurs.
|
ATerm
invocation
|
Expr: the method invocation
|
|
Succeeds if this method is applicable by subtyping.
type
|
Method Object -> (Method Object, List(Attribute))
|
|
|
ATerm
|
is-applicable-variable-arity-method
|
No information available.
|
|
ATerm
|
is-more-specific(ATerm m2)
|
Succeeds if m1 is more specific than m2
todo
|
Parameterized types
|
todo
|
Variable arity methods
|
type
|
Method Object -> Method Object
|
|
|
ATerm
|
is-strictly-more-specific(ATerm m2)
|
Succeeds if m1 is strictly more specific than m2
|
|
ATerm
|
opt-attr-U(Strategy cont)
|
Adds an attribute ActualTypeArgs if there are any.
|
|
ATerm
|
select-applicable-methods(ATerm type, ATerm invocation)
|
Might return an empty list
|
|
ATerm
|
select-maximally-specific-methods
|
No information available.
todo
|
DRY-71
|
type
|
List((Method Object, List(Attribute))) -> List((Method Object, List(Attribute)))
|
|
|
ATerm
|
was-unchecked-conversion-necessary
|
No information available.
type
|
List(Attribute) -> List(Attribute)
|
|
|