Chicken: multiple_inheritance test now passes, and we correctly handle %ignored classes
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@7683 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
ac9ed4789f
commit
464ae5b1b0
3 changed files with 39 additions and 9 deletions
|
|
@ -1,6 +1,22 @@
|
|||
Version 1.3.27 (October 15, 2005)
|
||||
=================================
|
||||
|
||||
10/18/2005: wuzzeb
|
||||
Chicken:
|
||||
- Correctly handle %ignored classes
|
||||
- Correctly convert long, long long, unsigned long, etc
|
||||
to chicken primitives. (Thanks to Felix Winkelmann)
|
||||
- Using argout parameters when the return value was a
|
||||
wrapped pointer caused a memory corruption. The chicken
|
||||
garbage collector moved a pointer out from under us.
|
||||
This is now fixed by running all the proxy creation
|
||||
functions as continuations after the wrapper function
|
||||
returns. As part of this, we no longer need the
|
||||
chickenfastproxy flag on output typemaps.
|
||||
- using -proxy and -nocollection together works now
|
||||
Before, it was not exporting the destructor in the proxy
|
||||
wrapper.
|
||||
|
||||
10/18/2005: mmatus
|
||||
|
||||
Unifying the typemaps for
|
||||
|
|
|
|||
|
|
@ -12,4 +12,20 @@
|
|||
(check (= (foo fb) 2))
|
||||
(check (= (fooBar fb) 3))
|
||||
|
||||
(define id1 (make <IgnoreDerived1>))
|
||||
(check (= (bar id1) 1))
|
||||
(check (= (ignorederived1 id1) 7))
|
||||
|
||||
(define id2 (make <IgnoreDerived2>))
|
||||
(check (= (bar id2) 1))
|
||||
(check (= (ignorederived2 id2) 8))
|
||||
|
||||
(define id3 (make <IgnoreDerived3>))
|
||||
(check (= (bar id3) 1))
|
||||
(check (= (ignorederived3 id3) 9))
|
||||
|
||||
(define id4 (make <IgnoreDerived4>))
|
||||
(check (= (bar id4) 1))
|
||||
(check (= (ignorederived4 id4) 10))
|
||||
|
||||
(exit 0)
|
||||
|
|
|
|||
|
|
@ -1058,19 +1058,17 @@ CHICKEN::classHandler(Node *n)
|
|||
if (!addSymbol(class_name,n)) return SWIG_ERROR;
|
||||
|
||||
/* Handle inheritance */
|
||||
String *base_class = NewString("<");
|
||||
String *base_class = NewString("");
|
||||
List *baselist = Getattr(n,"bases");
|
||||
if (baselist && Len(baselist)) {
|
||||
Iterator base = First(baselist);
|
||||
while (base.item) {
|
||||
Printv(base_class, Getattr(base.item, "sym:name"),NIL);
|
||||
base = Next(base);
|
||||
if (base.item) {
|
||||
Printf(base_class, "> <");
|
||||
}
|
||||
}
|
||||
if (!Getattr(base.item, "feature:ignore"))
|
||||
Printv(base_class, "<", Getattr(base.item, "sym:name"), "> ", NIL);
|
||||
base = Next(base);
|
||||
}
|
||||
Printf(base_class, ">");
|
||||
}
|
||||
|
||||
Replaceall(base_class, "_", "-");
|
||||
|
||||
String *scmmod = NewString(module);
|
||||
|
|
@ -1080,7 +1078,7 @@ CHICKEN::classHandler(Node *n)
|
|||
" (make <swig-metaclass-", scmmod, "> 'name \"", short_class_name, "\"\n", NIL);
|
||||
Delete(scmmod);
|
||||
|
||||
if (Len(base_class) > 2) {
|
||||
if (Len(base_class)) {
|
||||
Printv(clos_class_defines," 'direct-supers (list ", base_class, ")\n", NIL);
|
||||
} else {
|
||||
Printv(clos_class_defines," 'direct-supers (list <object>)\n", NIL);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue