In B.3.3 "Block-Level Function Declarations Web Legacy Compatibility Semantics",
the preamble to the algorithm says:
These extensions are applied to each non-strict mode function g for each
FunctionDeclaration f that is directly contained in the StatementList of a
Block, CaseClause, or DefaultClause that is part of the function code of g
Every time I return to this sentence, it trips me up, and I have to work out what it means again. It would be clearer if you incorporated it into the algorithm, e.g.:
1. For each non-strict mode function g, do:
a. For each FunctionDeclaration f that is directly contained in the
StatementList of a Block, CaseClause, or DefaultClause that is
part of the function code of g, do:
i. [current algorithm]
If you don't want to do that, then I think you could at least make the sentence clearer, e.g.
These extensions are applied to every FunctionDeclaration f that is directly
contained in the StatementList of a Block, CaseClause, or DefaultClause
that is part of the function code of some non-strict mode function g.
or
These extensions are applied for each non-strict mode function g, and
more specifically, to each FunctionDeclaration f that is directly
contained in the StatementList of a Block, CaseClause, or DefaultClause
that is part of the function code of g.
fixed in rev34 editor's draft
incorporated the precondition test into the algorithm
fixed in rev34