cls1.mymethod 0 cls2.mymethod 0 cls1.mymethod 1The last line is the problem. dodefault(tcParm) still should be 0 because o2.mymethod() did not pass a parameter.
>o1 = crea('cls1') >o2 = crea('cls2') >o1.mymethod() >o2.mymethod() >return >DEFINE CLASS cls1 as custom > procedure mymethod > lparameters tcParm > ? Program(),pcount() && this = 0 > endproc >enddef > >DEFINE CLASS cls2 as cls1 > procedure mymethod > lparameters tcParm > ?Program(),pcount() > dodefault(tcParm) > endproc >enddef >>
>>this.mymethod() >> >>* mymethod >>lparameters tcParm >>? pcount() && this = 0 >> >> >>this.mysubmethod() >> >>* mysubmethod >>lparameters tcParm >>dodefault(tcParm) >> >>* mymethod >>lparameters tcParm >>? pcount() && this = 1 >> >>