-
Key: KERML_-75
-
Status: open
-
Source: Model Driven Solutions ( Mr. Ed Seidewitz)
-
Summary:
The functionality of recursive importing is specified in the Namespace::visibleMemberships operation. If the isRecursive parameter of this operation is true, then the operation calls itself recursively on each Namespace that is a visible member (or any member, if isIncludeAll also is true) of the Namespace the operation was called on originally. This includes not only owned namespaces, but also those that are imported.
Further, the visibleMemberships operation is redefined in Type to also include the visible inheritedMemberships of the Type. This nominally includes memberships inherited via implied Specializations as well as explicitly Specializations. This means that a recursive import will also potentially include a large number of names of standard library elements from Types in the recursive import graph, which is likely not what is intended by the modeler.
So, as currently specified, recursive import unavoidably degrades the performance of any name resolution implementation, while including unintended functionality. To improve this, the following restrictions are recommended on the functionality of recursive import:
- Require recursive imports to be private.
- Only recurse on owned Namespaces.
- Do not included Memberships that are inherited via implied Specializations.
-
Reported: KerML 1.0b2 — Mon, 6 May 2024 04:20 GMT
-
Updated: Sat, 6 Jul 2024 15:43 GMT
KERML_ — Restrict the functionality of recursive import
- Key: KERML_-75
- OMG Task Force: Kernel Modeling Language (KerML) 1.0 FTF 2