Index: generic/nsf.c =================================================================== diff -u -re014a6a18a4801102162659f5156600ebd0f7c85 -r15a93252f0d9d8961ded6fd8f9b610a535ddbdb5 --- generic/nsf.c (.../nsf.c) (revision e014a6a18a4801102162659f5156600ebd0f7c85) +++ generic/nsf.c (.../nsf.c) (revision 15a93252f0d9d8961ded6fd8f9b610a535ddbdb5) @@ -29685,21 +29685,27 @@ /* classInfoMethod subclass NsfClassInfoSubclassMethod { - {-argName "-closure" -nrargs 0} + {-argName "-closure" -nrargs 0 -type switch} + {-argName "-dependent" -nrargs 0 -type switch} {-argName "pattern" -type objpattern} } */ static int -NsfClassInfoSubclassMethod(Tcl_Interp *interp, NsfClass *class, int withClosure, - CONST char *patternString, NsfObject *patternObj) { +NsfClassInfoSubclassMethod(Tcl_Interp *interp, NsfClass *class, + int withClosure, int withDependent, + CONST char *patternString, NsfObject *patternObj) { int rc = 0; assert(interp); assert(class); - if (withClosure) { - NsfClasses *subClasses = TransitiveSubClasses(class); + if (withClosure && withDependent) { + return NsfPrintError(interp, "only -closure or -dependent can be specified, not both"); + } + if (withClosure || withDependent) { + NsfClasses *subClasses = withClosure ? TransitiveSubClasses(class) : DependentSubClasses(class); + if (subClasses) { rc = AppendMatchingElementsFromClasses(interp, subClasses, patternString, patternObj); NsfClassListFree(subClasses);