mirror of https://github.com/swig/swig
Fix unary scope operator (::) (global scope) regression introduced in 2.0.0. The mangled symbol names were incorrect, sometimes resulting in types being incorrectly treated as opaque types.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12264 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
a4a56acd33
commit
c9ede7e622
|
@ -5,3 +5,7 @@ See the RELEASENOTES file for a summary of changes in each release.
|
|||
Version 2.0.2 (in progress)
|
||||
===========================
|
||||
|
||||
2010-10-12: wsfulton
|
||||
Fix unary scope operator (::) (global scope) regression introduced in 2.0.0, reported by
|
||||
Ben Walker. The mangled symbol names were incorrect, sometimes resulting in types being
|
||||
incorrectly treated as opaque types.
|
||||
|
|
|
@ -58,3 +58,25 @@ struct TheEnumMethods {
|
|||
}
|
||||
%}
|
||||
|
||||
%inline %{
|
||||
Klass1 getKlass1A() { return ::Klass1(); }
|
||||
::Klass1 getKlass1B() { return ::Klass1(); }
|
||||
|
||||
Klass2 getKlass2A() { return ::Klass2(); }
|
||||
::Klass2 getKlass2B() { return ::Klass2(); }
|
||||
|
||||
Klass3 getKlass3A() { return ::Klass3(); }
|
||||
::Klass3 getKlass3B() { return ::Klass3(); }
|
||||
|
||||
Klass4 getKlass4A() { return ::Klass4(); }
|
||||
::Klass4 getKlass4B() { return ::Klass4(); }
|
||||
|
||||
Klass5 getKlass5A() { return ::Klass5(); }
|
||||
::Klass5 getKlass5B() { return ::Klass5(); }
|
||||
|
||||
Klass6 getKlass6A() { return ::Klass6(); }
|
||||
::Klass6 getKlass6B() { return ::Klass6(); }
|
||||
|
||||
Klass7 getKlass7A() { return ::Klass7(); }
|
||||
::Klass7 getKlass7B() { return ::Klass7(); }
|
||||
%}
|
||||
|
|
|
@ -13,8 +13,38 @@ public class global_namespace_runme {
|
|||
|
||||
public static void main(String argv[]) {
|
||||
|
||||
KlassMethods.methodA(new Klass1(), new Klass2(), new Klass3(), new Klass4(), new Klass5(), new Klass6(), new Klass7());
|
||||
KlassMethods.methodB(new Klass1(), new Klass2(), new Klass3(), new Klass4(), new Klass5(), new Klass6(), new Klass7());
|
||||
Klass1 k1 = new Klass1();
|
||||
Klass2 k2 = new Klass2();
|
||||
Klass3 k3 = new Klass3();
|
||||
Klass4 k4 = new Klass4();
|
||||
Klass5 k5 = new Klass5();
|
||||
Klass6 k6 = new Klass6();
|
||||
Klass7 k7 = new Klass7();
|
||||
|
||||
KlassMethods.methodA(k1, k2, k3, k4, k5, k6, k7);
|
||||
KlassMethods.methodB(k1, k2, k3, k4, k5, k6, k7);
|
||||
|
||||
k1 = global_namespace.getKlass1A();
|
||||
k2 = global_namespace.getKlass2A();
|
||||
k3 = global_namespace.getKlass3A();
|
||||
k4 = global_namespace.getKlass4A();
|
||||
k5 = global_namespace.getKlass5A();
|
||||
k6 = global_namespace.getKlass6A();
|
||||
k7 = global_namespace.getKlass7A();
|
||||
|
||||
KlassMethods.methodA(k1, k2, k3, k4, k5, k6, k7);
|
||||
KlassMethods.methodB(k1, k2, k3, k4, k5, k6, k7);
|
||||
|
||||
k1 = global_namespace.getKlass1B();
|
||||
k2 = global_namespace.getKlass2B();
|
||||
k3 = global_namespace.getKlass3B();
|
||||
k4 = global_namespace.getKlass4B();
|
||||
k5 = global_namespace.getKlass5B();
|
||||
k6 = global_namespace.getKlass6B();
|
||||
k7 = global_namespace.getKlass7B();
|
||||
|
||||
KlassMethods.methodA(k1, k2, k3, k4, k5, k6, k7);
|
||||
KlassMethods.methodB(k1, k2, k3, k4, k5, k6, k7);
|
||||
|
||||
XYZMethods.methodA(new XYZ1(), new XYZ2(), new XYZ3(), new XYZ4(), new XYZ5(), new XYZ6(), new XYZ7());
|
||||
XYZMethods.methodB(new XYZ1(), new XYZ2(), new XYZ3(), new XYZ4(), new XYZ5(), new XYZ6(), new XYZ7());
|
||||
|
|
|
@ -0,0 +1,40 @@
|
|||
from global_namespace import *
|
||||
|
||||
k1 = Klass1()
|
||||
k2 = Klass2()
|
||||
k3 = Klass3()
|
||||
k4 = Klass4()
|
||||
k5 = Klass5()
|
||||
k6 = Klass6()
|
||||
k7 = Klass7()
|
||||
|
||||
KlassMethods.methodA(k1, k2, k3, k4, k5, k6, k7)
|
||||
KlassMethods.methodB(k1, k2, k3, k4, k5, k6, k7)
|
||||
|
||||
k1 = getKlass1A()
|
||||
k2 = getKlass2A()
|
||||
k3 = getKlass3A()
|
||||
k4 = getKlass4A()
|
||||
k5 = getKlass5A()
|
||||
k6 = getKlass6A()
|
||||
k7 = getKlass7A()
|
||||
|
||||
KlassMethods.methodA(k1, k2, k3, k4, k5, k6, k7)
|
||||
KlassMethods.methodB(k1, k2, k3, k4, k5, k6, k7)
|
||||
|
||||
k1 = getKlass1B()
|
||||
k2 = getKlass2B()
|
||||
k3 = getKlass3B()
|
||||
k4 = getKlass4B()
|
||||
k5 = getKlass5B()
|
||||
k6 = getKlass6B()
|
||||
k7 = getKlass7B()
|
||||
|
||||
KlassMethods.methodA(k1, k2, k3, k4, k5, k6, k7)
|
||||
KlassMethods.methodB(k1, k2, k3, k4, k5, k6, k7)
|
||||
|
||||
XYZMethods.methodA(XYZ1(), XYZ2(), XYZ3(), XYZ4(), XYZ5(), XYZ6(), XYZ7())
|
||||
XYZMethods.methodB(XYZ1(), XYZ2(), XYZ3(), XYZ4(), XYZ5(), XYZ6(), XYZ7())
|
||||
|
||||
TheEnumMethods.methodA(theenum1, theenum2, theenum3)
|
||||
TheEnumMethods.methodA(theenum1, theenum2, theenum3)
|
|
@ -906,8 +906,9 @@ String *SwigType_manglestr_default(SwigType *s) {
|
|||
String *result = 0;
|
||||
String *base = 0;
|
||||
SwigType *lt;
|
||||
SwigType *sr = SwigType_typedef_qualified(s);
|
||||
SwigType *ss = SwigType_typedef_resolve_all(sr);
|
||||
SwigType *sr = SwigType_typedef_resolve_all(s);
|
||||
SwigType *sq = SwigType_typedef_qualified(sr);
|
||||
SwigType *ss = SwigType_remove_global_scope_prefix(sq);
|
||||
|
||||
s = ss;
|
||||
|
||||
|
@ -917,7 +918,6 @@ String *SwigType_manglestr_default(SwigType *s) {
|
|||
ss = ty;
|
||||
s = ss;
|
||||
}
|
||||
Delete(sr);
|
||||
|
||||
lt = SwigType_ltype(s);
|
||||
result = SwigType_prefix(lt);
|
||||
|
@ -966,8 +966,9 @@ String *SwigType_manglestr_default(SwigType *s) {
|
|||
Insert(result, 0, "_");
|
||||
Delete(lt);
|
||||
Delete(base);
|
||||
if (ss)
|
||||
Delete(ss);
|
||||
Delete(ss);
|
||||
Delete(sq);
|
||||
Delete(sr);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue