diff --git a/Examples/test-suite/cpp11_lambda_functions.i b/Examples/test-suite/cpp11_lambda_functions.i index fc02aadb2..3d7d76d60 100644 --- a/Examples/test-suite/cpp11_lambda_functions.i +++ b/Examples/test-suite/cpp11_lambda_functions.i @@ -43,14 +43,17 @@ auto lambda1 = [](int x, int y) -> int { return x+y; }; 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 @@ int runLambdaInline() { // 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 058de41fd..c04baf81f 100644 --- a/Examples/test-suite/java/rename1_runme.java +++ b/Examples/test-suite/java/rename1_runme.java @@ -24,7 +24,6 @@ public class rename1_runme { xyz.tMethod2(0); xyz.tMethodNotXYZ2(notxyz); xyz.opNotXYZ2(); - xyz.opXYZ2(); } { XYZDouble xyz = new XYZDouble(); @@ -36,7 +35,6 @@ public class rename1_runme { xyz.tMethod1(0); xyz.tMethodNotXYZ1(notxyz); xyz.opNotXYZ1(); - xyz.opXYZ1(); } { XYZKlass xyz = new XYZKlass(); @@ -48,7 +46,6 @@ public class rename1_runme { xyz.tMethod3(new Klass()); xyz.tMethodNotXYZ3(notxyz); xyz.opNotXYZ3(); - xyz.opXYZ3(); } { XYZEnu xyz = new XYZEnu(); @@ -60,7 +57,6 @@ public class rename1_runme { 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 b6a62dd1e..b97cc59ed 100644 --- a/Examples/test-suite/java/rename2_runme.java +++ b/Examples/test-suite/java/rename2_runme.java @@ -24,7 +24,6 @@ public class rename2_runme { xyz.tMethod2(0); xyz.tMethodNotXYZ2(notxyz); xyz.opNotXYZ2(); - xyz.opXYZ2(); } { XYZDouble xyz = new XYZDouble(); @@ -36,7 +35,6 @@ public class rename2_runme { xyz.tMethod1(0); xyz.tMethodNotXYZ1(notxyz); xyz.opNotXYZ1(); - xyz.opXYZ1(); } { XYZKlass xyz = new XYZKlass(); @@ -48,7 +46,6 @@ public class rename2_runme { xyz.tMethod3(new Klass()); xyz.tMethodNotXYZ3(notxyz); xyz.opNotXYZ3(); - xyz.opXYZ3(); } { XYZEnu xyz = new XYZEnu(); @@ -60,7 +57,6 @@ public class rename2_runme { 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 e1b090af8..222d54899 100644 --- a/Examples/test-suite/java/rename3_runme.java +++ b/Examples/test-suite/java/rename3_runme.java @@ -24,7 +24,6 @@ public class rename3_runme { xyz.tMethod2(0); xyz.tMethodNotXYZ2(notxyz); xyz.opNotXYZ2(); - xyz.opXYZ2(); } { XYZDouble xyz = new XYZDouble(); @@ -36,7 +35,6 @@ public class rename3_runme { xyz.tMethod1(0); xyz.tMethodNotXYZ1(notxyz); xyz.opNotXYZ1(); - xyz.opXYZ1(); } { XYZKlass xyz = new XYZKlass(); @@ -48,7 +46,6 @@ public class rename3_runme { xyz.tMethod3(new Klass()); xyz.tMethodNotXYZ3(notxyz); xyz.opNotXYZ3(); - xyz.opXYZ3(); } { XYZEnu xyz = new XYZEnu(); @@ -60,7 +57,6 @@ public class rename3_runme { 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 69f909e9e..ef92dd300 100644 --- a/Examples/test-suite/java/rename4_runme.java +++ b/Examples/test-suite/java/rename4_runme.java @@ -24,7 +24,6 @@ public class rename4_runme { xyz.tMethod2(0); xyz.tMethodNotXYZ2(notxyz); xyz.opNotXYZ2(); - xyz.opXYZ2(); } { XYZDouble xyz = new XYZDouble(); @@ -36,7 +35,6 @@ public class rename4_runme { xyz.tMethod1(0); xyz.tMethodNotXYZ1(notxyz); xyz.opNotXYZ1(); - xyz.opXYZ1(); } { XYZKlass xyz = new XYZKlass(); @@ -48,7 +46,6 @@ public class rename4_runme { xyz.tMethod3(new Klass()); xyz.tMethodNotXYZ3(notxyz); xyz.opNotXYZ3(); - xyz.opXYZ3(); } { XYZEnu xyz = new XYZEnu(); @@ -60,7 +57,6 @@ public class rename4_runme { 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 68ecc11b6..7b2ac37b6 100644 --- a/Examples/test-suite/javascript/rename1_runme.js +++ b/Examples/test-suite/javascript/rename1_runme.js @@ -10,7 +10,6 @@ function part1() { xyz.tMethod2(0); xyz.tMethodNotXYZ2(notxyz); xyz.opNotXYZ2(); - xyz.opXYZ2(); } function part2() { @@ -23,7 +22,6 @@ function part2() { xyz.tMethod1(0); xyz.tMethodNotXYZ1(notxyz); xyz.opNotXYZ1(); - xyz.opXYZ1(); } function part3(){ @@ -36,7 +34,6 @@ function part3(){ xyz.tMethod3(new rename.Klass()); xyz.tMethodNotXYZ3(notxyz); xyz.opNotXYZ3(); - xyz.opXYZ3(); } function part4() { @@ -49,7 +46,6 @@ function part4() { 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 99f478596..040c798bb 100644 --- a/Examples/test-suite/javascript/rename2_runme.js +++ b/Examples/test-suite/javascript/rename2_runme.js @@ -10,7 +10,6 @@ function part1() { xyz.tMethod2(0); xyz.tMethodNotXYZ2(notxyz); xyz.opNotXYZ2(); - xyz.opXYZ2(); } function part2() { @@ -23,7 +22,6 @@ function part2() { xyz.tMethod1(0); xyz.tMethodNotXYZ1(notxyz); xyz.opNotXYZ1(); - xyz.opXYZ1(); } function part3(){ @@ -36,7 +34,6 @@ function part3(){ xyz.tMethod3(new rename.Klass()); xyz.tMethodNotXYZ3(notxyz); xyz.opNotXYZ3(); - xyz.opXYZ3(); } function part4() { @@ -49,7 +46,6 @@ function part4() { 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 237029fbb..fb9393b03 100644 --- a/Examples/test-suite/javascript/rename3_runme.js +++ b/Examples/test-suite/javascript/rename3_runme.js @@ -10,7 +10,6 @@ function part1() { xyz.tMethod2(0); xyz.tMethodNotXYZ2(notxyz); xyz.opNotXYZ2(); - xyz.opXYZ2(); } function part2() { @@ -23,7 +22,6 @@ function part2() { xyz.tMethod1(0); xyz.tMethodNotXYZ1(notxyz); xyz.opNotXYZ1(); - xyz.opXYZ1(); } function part3(){ @@ -36,7 +34,6 @@ function part3(){ xyz.tMethod3(new rename.Klass()); xyz.tMethodNotXYZ3(notxyz); xyz.opNotXYZ3(); - xyz.opXYZ3(); } function part4() { @@ -49,7 +46,6 @@ function part4() { 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 fed50dceb..1c3d8e77f 100644 --- a/Examples/test-suite/javascript/rename4_runme.js +++ b/Examples/test-suite/javascript/rename4_runme.js @@ -10,7 +10,6 @@ function part1() { xyz.tMethod2(0); xyz.tMethodNotXYZ2(notxyz); xyz.opNotXYZ2(); - xyz.opXYZ2(); } function part2() { @@ -23,7 +22,6 @@ function part2() { xyz.tMethod1(0); xyz.tMethodNotXYZ1(notxyz); xyz.opNotXYZ1(); - xyz.opXYZ1(); } function part3(){ @@ -36,7 +34,6 @@ function part3(){ xyz.tMethod3(new rename.Klass()); xyz.tMethodNotXYZ3(notxyz); xyz.opNotXYZ3(); - xyz.opXYZ3(); } function part4() { @@ -49,7 +46,6 @@ function part4() { 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 c8199eeeb..3f10c5856 100644 --- a/Examples/test-suite/rename.h +++ b/Examples/test-suite/rename.h @@ -27,7 +27,6 @@ namespace Space { void templateXYZ(XYZ i) {} operator T() { return m_t; } operator NotXYZ() const { return m_notxyz; } - operator XYZ() const { XYZ xyz = XYZ(); return xyz; } }; } @@ -48,10 +47,7 @@ class ABC { 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 38af2b3bd..92e6b3494 100644 --- a/Examples/test-suite/rename1.i +++ b/Examples/test-suite/rename1.i @@ -35,14 +35,9 @@ %rename(opNotXYZ3) Space::XYZ::operator NotXYZ() const; %rename(opNotXYZ4) Space::XYZ::operator NotXYZ() const; -%rename(opXYZ1) Space::XYZ::operator XYZ() const; -%rename(opXYZ2) Space::XYZ::operator XYZ() const; -%rename(opXYZ3) Space::XYZ::operator XYZ() const; -%rename(opXYZ4) Space::XYZ::operator XYZ() 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 6a9c22ecf..93b82ddc6 100644 --- a/Examples/test-suite/rename2.i +++ b/Examples/test-suite/rename2.i @@ -43,7 +43,7 @@ namespace Space { %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 b39979fdd..5b613d769 100644 --- a/Examples/test-suite/rename3.i +++ b/Examples/test-suite/rename3.i @@ -52,7 +52,7 @@ namespace Space { %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 9ddff362f..75f01ca5b 100644 --- a/Examples/test-suite/rename4.i +++ b/Examples/test-suite/rename4.i @@ -29,21 +29,18 @@ namespace Space { %rename(tMethodXYZ2) templateXYZ(XYZ); %rename(opT2) operator int(); %rename(opNotXYZ2) operator NotXYZ() const; -%rename(opXYZ2) operator XYZ() const; %rename(tMethod3) templateT(Space::Klass i); %rename(tMethodNotXYZ3) templateNotXYZ(NotXYZ); %rename(tMethodXYZ3) templateXYZ(XYZ); %rename(opT3) operator Space::Klass(); %rename(opNotXYZ3) operator NotXYZ() const; -%rename(opXYZ3) operator XYZ() const; %rename(tMethod4) templateT(Space::Enu i); %rename(tMethodNotXYZ4) templateNotXYZ(NotXYZ); %rename(tMethodXYZ4) templateXYZ(XYZ); %rename(opT4) operator Space::Enu(); %rename(opNotXYZ4) operator NotXYZ() const; -%rename(opXYZ4) operator XYZ() const; namespace Space { using namespace AnotherSpace; @@ -60,7 +57,6 @@ namespace Space { %rename(tMethodXYZ1) templateXYZ(XYZ); %rename(opT1) operator T(); %rename(opNotXYZ1) operator NotXYZ() const; - %rename(opXYZ1) operator XYZ() const; NotXYZ *m_int; T m_t; @@ -74,7 +70,6 @@ namespace Space { void templateXYZ(XYZ i) {} operator T() { return m_t; } operator NotXYZ() const { return m_notxyz; } - operator XYZ() const { XYZ xyz; return xyz; } }; } @@ -93,16 +88,13 @@ class ABC { 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; } }; }