Open jskeet opened 8 years ago
A term should not be defined in multiple places, such as in Clause 4 and then later.
It is possible that when new features (such as generics) were added in the 2006 edition, we defined them in the narrative without considering whether those definitions should be moved to Clause 4.
The idea is to point the "big picture" definitions in Clause 4, but it can be subjective as to which you put there or in detailed sections later.
As we've previously Fast Tracked to ISO/IEC JTC 1, we use their document style rather than Ecma's. I'll post that style guide to the TG2 email list.
The set in our current clause 4 still feels pretty arbitrary - I think I'd personally prefer to remove it entirely if we could get away with that - but assuming we have to have it, let's have a quick discussion on anything we think is missing or extraneous.
Assuming everything is defined either here in Clause 4 or later in the Standard when introduced I'm going to say we punt this, cleanup like this can be done as phase 1 of C# 6 - and this issue already has the C# 6 tag on it.
Ah yes - had missed that this was C# 6 for some reason. Removing the upcoming meeting tag...
(I'm not sure what we removed that renumbered 4 => 3, but never mind.)
I think this is worth thinking about again, in terms of:
Premise: section 3 should define terms needed to read the standard, not terms defined in the standard, as much.
(Assigned to myself to come up with a proposal for a list of terms that really should be in.)
I know we've discussed this before, but clause 4 does feel like a bit of a grab-bag of some terms but not others. For example, "diagnostic message" and "application domain" are defined, but "type", "generics", "lambda", "class", "struct", "value type".
Clause 4 does say that other terms are defined within the standard, but at least some are in two places - for example, application domain is in clause 4 but also as bold-italic in clause 9.
It would be useful if we could have a good set of criteria to define which terms should be present.