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