undeclared symbol in 18.5.2?
Dan Smith
daniel.smith at oracle.com
Thu Nov 21 16:22:47 PST 2013
Even worse, I seem to have garbled the prefix vs. postfix use of substitutions again in this section. :-) Apparently my brain is incapable of adapting to postfix.
On Nov 19, 2013, at 2:01 PM, Stephan Herrmann <stephan.herrmann at berlin.de> wrote:
> Pondering more about this I no longer think this is only
> a trivial question of notation:
>
> On 11/14/2013 09:07 PM, Stephan Herrmann wrote:
>> This should be an easy one:
>>
>> in 18.5.2 we have these fragments in order:
>>
>> "... and let S be the invocation's target type."
>
> This is guarded by "If the invocation is a poly expression"
> so we know that a context exists that defines a target type.
> OK.
Yep. I think I chose S because it comes after R, by T does seem like a nicer alternative, so I'll change it.
>
>> "* For all i (1 ≤ i ≤ k), the set contains ⟨ei ⊆throws T⟩."
>
> This one is not guarded, so we expect to have a T even in
> standalone situations. Something seems to be missing here.
> This spec throws NPE :). Please clarify.
Right, copy-paste error. Should be
ei inthrows Fi theta
That is, the RHS is the same as in the previous bullet -- the ith formal parameter type (after substitution).
>
>> "... the target type, T, ..."
>
> Although using the same term "target type" as above, this
> seems to actually refer to the T introduced in this sentence:
>
> "Invocation type inference may require carefully sequencing
> the reduction of constraint formulas of the form ⟨Expression → T⟩
> and ⟨Expression ⊆throws T⟩. To facilitate this sequencing, the
> input variables of these constraints are defined as follows:"
>
> Is this guess correct?
Yep. Let's try this:
"The ''output variables'' of these constraints are all inference variables mentioned by the type on the right-hand side of the constraint, T, that are not input variables."
—Dan
More information about the lambda-spec-experts
mailing list