J3/00-148 Date: 29th February 2000 To: J3 From: Malcolm Cohen Subject: Issues 17-19 and 211 1. Introduction Issue 17 says "... I'm bothered by having a component name that isn't the name of a component. Perhaps we should use different terminology such as subobject name ..." I concur. Issue 18 says "Should the above not be a constraint? Fix up grandparents." The answer to the question is No, but it ought to be part of our scoping rules (which do have similar status as constraints in requiring violation to be diagnosed). I concur with the second commandment. Issue 19 says "but the name ... is not a component ...." ok, ok already! Issue 211 says "\"flattened form\" is used ... but ... nowhere defined" I concur. 2. Edits to 00-007 [53:20-22] Replace with "An extended type has a <> with the type and type parameters of the parent type, consisting of all of the components inherited from the parent type. The name of the parent subobject is the parent type name." {Define a term for the parent subobject.} [53:23-32] Delete J3 note 17. {We no longer call the name of the parent subobject a "component name".} [53:33] Replace "subobject denoted by the parent type name" with "parent subobject name". {Improve readability by using our new term.} [53:35+] Insert new paragraph "The <> of a nonextensible type or of a base type are the names of its components. The subobject names of an extended type are the name of its parent subobject, the subobject names of its parent type, and the names of its additional components." {Define new term "subobject name" we can use instead of component name when we want to include the parent subobject designator(s). Note that it is defined recursively so that "grandparent" names are included.} [53:36-38] Replace "have neither" with "not have", Replace "accessible component" with "accessible subobject name", Delete "nor ... type", Make the whole thing a note. {Use our new terminology; make it a note because it will be covered by the scoping rules in ch14.} [53:39-41] Delete J3 note 18. [56:7] Replace "component that has the same name as the parent type" with "parent subobject". {Use our new term to improve readability and correctness.} [56:8] Add to end of paragraph "In the <>, a value is provided for each component of the extended type." {Add a definition of "flattened form".} [56:9-12] Delete J3 note 19. {We don't call the parent subobject a component any more.} [56:13-17] Delete J3 note 211. {We now have a definition of "flattened form".} [96:37] Replace "name of a component" with "subobject name". {Make parent subobjects usable.} [342:18] Replace "components, and binding names" with "bindings, and named subobjects". {Move scoping requirement from ch4 to ch14.} === END