Require that non-terminal yield steps (i.e. those that are not the last step in their from expression) is a record expression ({field = expr, field = expr, ...}).
For example,
from d in scott.dept yield d where deptno > 10
should give the error
'yield' step that is not last in 'from' must be a record expression
Note that d has record type but is not a record expression. We may allow that in future, but it's tricky for the type deduction algorithm to see that deptno is a valid field.
The following should give the same error, because yield expression has type int and tuple:
from d in scott.dept yield d.deptno yield 1;
from d in scott.dept yield (d.deptno, d.loc) yield 1;
As before, if yield is the last step it can have any kind of expression.
Require that non-terminal
yield
steps (i.e. those that are not the last step in theirfrom
expression) is a record expression ({field = expr, field = expr, ...}
).For example,
should give the error
Note that
d
has record type but is not a record expression. We may allow that in future, but it's tricky for the type deduction algorithm to see thatdeptno
is a valid field.The following should give the same error, because
yield
expression has typeint
and tuple:As before, if
yield
is the last step it can have any kind of expression.