testcase fixes for gcc-9
diff --git a/Examples/test-suite/cpp11_lambda_functions.i b/Examples/test-suite/cpp11_lambda_functions.i
index fc02aad..3d7d76d 100644
--- a/Examples/test-suite/cpp11_lambda_functions.i
+++ b/Examples/test-suite/cpp11_lambda_functions.i
@@ -43,14 +43,17 @@
single statement "return expr;". */
auto lambda2 = [](int x, int y) { return x+y; };
-auto lambda3 = [&](int x, int y) { return x+y; };
-auto lambda4 = [=](int x, int y) { return x+y; };
int thing = 0;
#ifdef SWIG
-// Not strictly correct as captured variables should have non-automatic storage duration, ie shouldn't capture globals. gcc-4.7 warns about this, but we check that SWIG can parse this anyway.
+// This is not strictly legal: non-local lambda expression cannot have a capture-default
+// gcc-4.7 warns about this and gcc-9 gives an error, but we check that SWIG can parse this anyway.
+auto lambda3 = [&](int x, int y) { return x+y; };
+auto lambda4 = [=](int x, int y) { return x+y; };
auto lambda5 = [=,&thing]() { return thing; };
#else
-auto lambda5 = [=]() { return thing; };
+auto lambda3 = [](int x, int y) { return x+y; };
+auto lambda4 = [](int x, int y) { return x+y; };
+auto lambda5 = []() { return thing; };
#endif
void fn() {
@@ -115,6 +118,6 @@
// TODO
int(*lambda101notauto)(int, int) = [] (int a, int b) { return a + b; };
int lambda102 = [] (int a, int b) mutable { return a + b; }(1, 2);
-void lambda_init(int = ([=]{ return 0; })());
+void lambda_init(int = ([]{ return 0; })());
%}
diff --git a/Examples/test-suite/java/rename1_runme.java b/Examples/test-suite/java/rename1_runme.java
index 058de41..c04baf8 100644
--- a/Examples/test-suite/java/rename1_runme.java
+++ b/Examples/test-suite/java/rename1_runme.java
@@ -24,7 +24,6 @@
xyz.tMethod2(0);
xyz.tMethodNotXYZ2(notxyz);
xyz.opNotXYZ2();
- xyz.opXYZ2();
}
{
XYZDouble xyz = new XYZDouble();
@@ -36,7 +35,6 @@
xyz.tMethod1(0);
xyz.tMethodNotXYZ1(notxyz);
xyz.opNotXYZ1();
- xyz.opXYZ1();
}
{
XYZKlass xyz = new XYZKlass();
@@ -48,7 +46,6 @@
xyz.tMethod3(new Klass());
xyz.tMethodNotXYZ3(notxyz);
xyz.opNotXYZ3();
- xyz.opXYZ3();
}
{
XYZEnu xyz = new XYZEnu();
@@ -60,7 +57,6 @@
xyz.tMethod4(Enu.En1);
xyz.tMethodNotXYZ4(notxyz);
xyz.opNotXYZ4();
- xyz.opXYZ4();
}
{
ABC abc = new ABC();
diff --git a/Examples/test-suite/java/rename2_runme.java b/Examples/test-suite/java/rename2_runme.java
index b6a62dd..b97cc59 100644
--- a/Examples/test-suite/java/rename2_runme.java
+++ b/Examples/test-suite/java/rename2_runme.java
@@ -24,7 +24,6 @@
xyz.tMethod2(0);
xyz.tMethodNotXYZ2(notxyz);
xyz.opNotXYZ2();
- xyz.opXYZ2();
}
{
XYZDouble xyz = new XYZDouble();
@@ -36,7 +35,6 @@
xyz.tMethod1(0);
xyz.tMethodNotXYZ1(notxyz);
xyz.opNotXYZ1();
- xyz.opXYZ1();
}
{
XYZKlass xyz = new XYZKlass();
@@ -48,7 +46,6 @@
xyz.tMethod3(new Klass());
xyz.tMethodNotXYZ3(notxyz);
xyz.opNotXYZ3();
- xyz.opXYZ3();
}
{
XYZEnu xyz = new XYZEnu();
@@ -60,7 +57,6 @@
xyz.tMethod4(Enu.En1);
xyz.tMethodNotXYZ4(notxyz);
xyz.opNotXYZ4();
- xyz.opXYZ4();
}
{
ABC abc = new ABC();
diff --git a/Examples/test-suite/java/rename3_runme.java b/Examples/test-suite/java/rename3_runme.java
index e1b090a..222d548 100644
--- a/Examples/test-suite/java/rename3_runme.java
+++ b/Examples/test-suite/java/rename3_runme.java
@@ -24,7 +24,6 @@
xyz.tMethod2(0);
xyz.tMethodNotXYZ2(notxyz);
xyz.opNotXYZ2();
- xyz.opXYZ2();
}
{
XYZDouble xyz = new XYZDouble();
@@ -36,7 +35,6 @@
xyz.tMethod1(0);
xyz.tMethodNotXYZ1(notxyz);
xyz.opNotXYZ1();
- xyz.opXYZ1();
}
{
XYZKlass xyz = new XYZKlass();
@@ -48,7 +46,6 @@
xyz.tMethod3(new Klass());
xyz.tMethodNotXYZ3(notxyz);
xyz.opNotXYZ3();
- xyz.opXYZ3();
}
{
XYZEnu xyz = new XYZEnu();
@@ -60,7 +57,6 @@
xyz.tMethod4(Enu.En1);
xyz.tMethodNotXYZ4(notxyz);
xyz.opNotXYZ4();
- xyz.opXYZ4();
}
{
ABC abc = new ABC();
diff --git a/Examples/test-suite/java/rename4_runme.java b/Examples/test-suite/java/rename4_runme.java
index 69f909e..ef92dd3 100644
--- a/Examples/test-suite/java/rename4_runme.java
+++ b/Examples/test-suite/java/rename4_runme.java
@@ -24,7 +24,6 @@
xyz.tMethod2(0);
xyz.tMethodNotXYZ2(notxyz);
xyz.opNotXYZ2();
- xyz.opXYZ2();
}
{
XYZDouble xyz = new XYZDouble();
@@ -36,7 +35,6 @@
xyz.tMethod1(0);
xyz.tMethodNotXYZ1(notxyz);
xyz.opNotXYZ1();
- xyz.opXYZ1();
}
{
XYZKlass xyz = new XYZKlass();
@@ -48,7 +46,6 @@
xyz.tMethod3(new Klass());
xyz.tMethodNotXYZ3(notxyz);
xyz.opNotXYZ3();
- xyz.opXYZ3();
}
{
XYZEnu xyz = new XYZEnu();
@@ -60,7 +57,6 @@
xyz.tMethod4(Enu.En1);
xyz.tMethodNotXYZ4(notxyz);
xyz.opNotXYZ4();
- xyz.opXYZ4();
}
{
ABC abc = new ABC();
diff --git a/Examples/test-suite/javascript/rename1_runme.js b/Examples/test-suite/javascript/rename1_runme.js
index 68ecc11..7b2ac37 100644
--- a/Examples/test-suite/javascript/rename1_runme.js
+++ b/Examples/test-suite/javascript/rename1_runme.js
@@ -10,7 +10,6 @@
xyz.tMethod2(0);
xyz.tMethodNotXYZ2(notxyz);
xyz.opNotXYZ2();
- xyz.opXYZ2();
}
function part2() {
@@ -23,7 +22,6 @@
xyz.tMethod1(0);
xyz.tMethodNotXYZ1(notxyz);
xyz.opNotXYZ1();
- xyz.opXYZ1();
}
function part3(){
@@ -36,7 +34,6 @@
xyz.tMethod3(new rename.Klass());
xyz.tMethodNotXYZ3(notxyz);
xyz.opNotXYZ3();
- xyz.opXYZ3();
}
function part4() {
@@ -49,7 +46,6 @@
xyz.tMethod4(rename.En1);
xyz.tMethodNotXYZ4(notxyz);
xyz.opNotXYZ4();
- xyz.opXYZ4();
}
function part5() {
diff --git a/Examples/test-suite/javascript/rename2_runme.js b/Examples/test-suite/javascript/rename2_runme.js
index 99f4785..040c798 100644
--- a/Examples/test-suite/javascript/rename2_runme.js
+++ b/Examples/test-suite/javascript/rename2_runme.js
@@ -10,7 +10,6 @@
xyz.tMethod2(0);
xyz.tMethodNotXYZ2(notxyz);
xyz.opNotXYZ2();
- xyz.opXYZ2();
}
function part2() {
@@ -23,7 +22,6 @@
xyz.tMethod1(0);
xyz.tMethodNotXYZ1(notxyz);
xyz.opNotXYZ1();
- xyz.opXYZ1();
}
function part3(){
@@ -36,7 +34,6 @@
xyz.tMethod3(new rename.Klass());
xyz.tMethodNotXYZ3(notxyz);
xyz.opNotXYZ3();
- xyz.opXYZ3();
}
function part4() {
@@ -49,7 +46,6 @@
xyz.tMethod4(rename.En1);
xyz.tMethodNotXYZ4(notxyz);
xyz.opNotXYZ4();
- xyz.opXYZ4();
}
function part5() {
diff --git a/Examples/test-suite/javascript/rename3_runme.js b/Examples/test-suite/javascript/rename3_runme.js
index 237029f..fb9393b 100644
--- a/Examples/test-suite/javascript/rename3_runme.js
+++ b/Examples/test-suite/javascript/rename3_runme.js
@@ -10,7 +10,6 @@
xyz.tMethod2(0);
xyz.tMethodNotXYZ2(notxyz);
xyz.opNotXYZ2();
- xyz.opXYZ2();
}
function part2() {
@@ -23,7 +22,6 @@
xyz.tMethod1(0);
xyz.tMethodNotXYZ1(notxyz);
xyz.opNotXYZ1();
- xyz.opXYZ1();
}
function part3(){
@@ -36,7 +34,6 @@
xyz.tMethod3(new rename.Klass());
xyz.tMethodNotXYZ3(notxyz);
xyz.opNotXYZ3();
- xyz.opXYZ3();
}
function part4() {
@@ -49,7 +46,6 @@
xyz.tMethod4(rename.En1);
xyz.tMethodNotXYZ4(notxyz);
xyz.opNotXYZ4();
- xyz.opXYZ4();
}
function part5() {
diff --git a/Examples/test-suite/javascript/rename4_runme.js b/Examples/test-suite/javascript/rename4_runme.js
index fed50dc..1c3d8e7 100644
--- a/Examples/test-suite/javascript/rename4_runme.js
+++ b/Examples/test-suite/javascript/rename4_runme.js
@@ -10,7 +10,6 @@
xyz.tMethod2(0);
xyz.tMethodNotXYZ2(notxyz);
xyz.opNotXYZ2();
- xyz.opXYZ2();
}
function part2() {
@@ -23,7 +22,6 @@
xyz.tMethod1(0);
xyz.tMethodNotXYZ1(notxyz);
xyz.opNotXYZ1();
- xyz.opXYZ1();
}
function part3(){
@@ -36,7 +34,6 @@
xyz.tMethod3(new rename.Klass());
xyz.tMethodNotXYZ3(notxyz);
xyz.opNotXYZ3();
- xyz.opXYZ3();
}
function part4() {
@@ -49,7 +46,6 @@
xyz.tMethod4(rename.En1);
xyz.tMethodNotXYZ4(notxyz);
xyz.opNotXYZ4();
- xyz.opXYZ4();
}
function part5() {
diff --git a/Examples/test-suite/rename.h b/Examples/test-suite/rename.h
index c8199ee..3f10c58 100644
--- a/Examples/test-suite/rename.h
+++ b/Examples/test-suite/rename.h
@@ -27,7 +27,6 @@
void templateXYZ(XYZ<T> i) {}
operator T() { return m_t; }
operator NotXYZ<T>() const { return m_notxyz; }
- operator XYZ<T>() const { XYZ<T> xyz = XYZ<T>(); return xyz; }
};
}
@@ -48,10 +47,7 @@
public:
void method(ABC a) const {}
void method(Klass k) const {}
-#if !defined(__clang__)
- // Workaround for: warning: conversion function converting 'Space::ABC' to itself will never be used
- operator ABC() const { ABC a; return a; }
-#endif
+ operator ABC*() const { return new ABC(); }
operator Klass() const { Klass k; return k; }
};
}
diff --git a/Examples/test-suite/rename1.i b/Examples/test-suite/rename1.i
index 38af2b3..92e6b34 100644
--- a/Examples/test-suite/rename1.i
+++ b/Examples/test-suite/rename1.i
@@ -35,14 +35,9 @@
%rename(opNotXYZ3) Space::XYZ<Space::Klass>::operator NotXYZ<Space::Klass>() const;
%rename(opNotXYZ4) Space::XYZ<Space::Enu>::operator NotXYZ<Space::Enu>() const;
-%rename(opXYZ1) Space::XYZ::operator XYZ<T>() const;
-%rename(opXYZ2) Space::XYZ<int>::operator XYZ<int>() const;
-%rename(opXYZ3) Space::XYZ<Space::Klass>::operator XYZ<Space::Klass>() const;
-%rename(opXYZ4) Space::XYZ<Space::Enu>::operator XYZ<Space::Enu>() const;
-
%rename(methodABC) Space::ABC::method(ABC a) const;
-%rename(opABC) Space::ABC::operator ABC() const;
+%rename(opABC) Space::ABC::operator ABC*() const;
%rename(methodKlass) Space::ABC::method(Klass k) const;
%rename(opKlass) Space::ABC::operator Klass() const;
diff --git a/Examples/test-suite/rename2.i b/Examples/test-suite/rename2.i
index 6a9c22e..93b82dd 100644
--- a/Examples/test-suite/rename2.i
+++ b/Examples/test-suite/rename2.i
@@ -43,7 +43,7 @@
%rename(methodABC) ABC::method(ABC a) const;
-%rename(opABC) ABC::operator ABC() const;
+%rename(opABC) ABC::operator ABC*() const;
%rename(methodKlass) ABC::method(Klass k) const;
%rename(opKlass) ABC::operator Klass() const;
}
diff --git a/Examples/test-suite/rename3.i b/Examples/test-suite/rename3.i
index b39979f..5b613d7 100644
--- a/Examples/test-suite/rename3.i
+++ b/Examples/test-suite/rename3.i
@@ -52,7 +52,7 @@
%extend ABC {
%rename(methodABC) method(ABC a) const;
- %rename(opABC) operator ABC() const;
+ %rename(opABC) operator ABC*() const;
%rename(methodKlass) method(Klass k) const;
%rename(opKlass) operator Klass() const;
}
diff --git a/Examples/test-suite/rename4.i b/Examples/test-suite/rename4.i
index 9ddff36..75f01ca 100644
--- a/Examples/test-suite/rename4.i
+++ b/Examples/test-suite/rename4.i
@@ -29,21 +29,18 @@
%rename(tMethodXYZ2) templateXYZ(XYZ<int>);
%rename(opT2) operator int();
%rename(opNotXYZ2) operator NotXYZ<int>() const;
-%rename(opXYZ2) operator XYZ<int>() const;
%rename(tMethod3) templateT(Space::Klass i);
%rename(tMethodNotXYZ3) templateNotXYZ(NotXYZ<Space::Klass>);
%rename(tMethodXYZ3) templateXYZ(XYZ<Space::Klass>);
%rename(opT3) operator Space::Klass();
%rename(opNotXYZ3) operator NotXYZ<Space::Klass>() const;
-%rename(opXYZ3) operator XYZ<Space::Klass>() const;
%rename(tMethod4) templateT(Space::Enu i);
%rename(tMethodNotXYZ4) templateNotXYZ(NotXYZ<Space::Enu>);
%rename(tMethodXYZ4) templateXYZ(XYZ<Space::Enu>);
%rename(opT4) operator Space::Enu();
%rename(opNotXYZ4) operator NotXYZ<Space::Enu>() const;
-%rename(opXYZ4) operator XYZ<Space::Enu>() const;
namespace Space {
using namespace AnotherSpace;
@@ -60,7 +57,6 @@
%rename(tMethodXYZ1) templateXYZ(XYZ<T>);
%rename(opT1) operator T();
%rename(opNotXYZ1) operator NotXYZ<T>() const;
- %rename(opXYZ1) operator XYZ<T>() const;
NotXYZ<int> *m_int;
T m_t;
@@ -74,7 +70,6 @@
void templateXYZ(XYZ<T> i) {}
operator T() { return m_t; }
operator NotXYZ<T>() const { return m_notxyz; }
- operator XYZ<T>() const { XYZ<T> xyz; return xyz; }
};
}
@@ -93,16 +88,13 @@
public:
%rename(methodABC) method(ABC a) const;
- %rename(opABC) operator ABC() const;
+ %rename(opABC) operator ABC*() const;
%rename(methodKlass) method(Klass k) const;
%rename(opKlass) operator Klass() const;
void method(ABC a) const {}
void method(Klass k) const {}
-#if !defined(__clang__)
- // Workaround for: warning: conversion function converting 'Space::ABC' to itself will never be used
- operator ABC() const { ABC a; return a; }
-#endif
+ operator ABC*() const { return new ABC(); }
operator Klass() const { Klass k; return k; }
};
}