Commit graph

23,810 commits

Author SHA1 Message Date
Olly Betts
3bf1da4298 Fix a few documentation typos 2022-09-29 18:17:32 +13:00
Olly Betts
9a4dea06c8 [php] Add php:allowdynamicproperties feature
This follows PHP 8.2 deprecating dynamic features.

The new feature also provides a clean way to fix the remaining PHP
test case failure under PHP 8.2.
2022-09-29 18:16:51 +13:00
Olly Betts
20ed76a27b [ci] Revert continue-on-error for PHP 8.0
Tests are now passing there.
2022-09-29 14:09:01 +13:00
Olly Betts
9908f9f310 [php] Fix testcase segfaults with PHP 8.0
These testcases were segfaulting:

prefix
director_using_member_scopes
virtual_poly

The fix here is admittedly a hack - we perform the initialisation
of EG(class_table) from CG(class_table) which PHP will do, but
hasn't yet.

PHP doesn't seem to clearly document which API calls are actually
valid in minit or other initialisation contexts, but the code we're
generating works with all PHP 7.x and PHP 8.x versions aside from PHP
8.0 so it seems this is a bug in PHP 8.0 rather than that we're doing
something invalid, and we need to work with existing PHP 8.0 releases
so this hack seems a necessary evil.  It will at least have a limited
life as PHP 8.0 is only in active support until 2022-11-26, with
security support ending a year later.

Fixes #2383.
2022-09-29 13:13:52 +13:00
Olly Betts
cb9c96011a [php] Suppress -Wdeclaration-after-statement in php.h
In PHP 8.2 zend_operators.h contains inline code which triggers this
warning and our testsuite uses with option and -Werror.

I don't see a good way to only do this within our testsuite, but
disabling it globally like this shouldn't be problematic.
2022-09-29 11:06:56 +13:00
Olly Betts
246dd2d787 [php] Workaround PHP 8.2 header problem
We need to include php.h before stdio.h (and probably before most
other libc headers).
2022-09-28 19:01:01 +13:00
Olly Betts
55c95d475c [php] Adapt swig_ptr_cast_object for PHP 8.2
The required return type has changed from int to an enum, which
gives a compiler warning when we assign a function pointer.
2022-09-28 18:59:31 +13:00
Olly Betts
91887a10cd [php] Avoid creating dynamic properties in testsuite
This gives a deprecation warning with PHP 8.2.
2022-09-28 18:53:04 +13:00
Olly Betts
e789c9e799 [php] Avoid deprecated interpolation syntax
Avoid syntax deprecated in PHP 8.2.
2022-09-28 18:51:53 +13:00
Olly Betts
303cf392f7 [ci] Temporarily allow PHP 8.0 and 8.2 to fail
I'm actively working on fixing them, but meanwhile we don't want PR
jobs failing on these.
2022-09-28 18:50:08 +13:00
Olly Betts
c3ae2aaafc [ci] Fix CI to actually test PHP 8.0; add PHP 8.2
The CI job for PHP 8.0 was relying on not specifying a version
giving us PHP 8.0, but actually it gives us 8.1 currently.

This seems too brittle, so always specify the version explicitly as
at worst it means uninstalling and reinstalling PHP packages in a
case we could avoid.

Also add PHP 8.2 testing.

See #2383
2022-09-28 11:13:36 +13:00
sethg
e45d8d0efd Split build and install 2022-09-27 15:02:58 +02:00
sethg
1d47e11da9 Build and Install are in the same command 2022-09-27 11:01:35 +02:00
sethg
730e49d379 Move install to separate step 2022-09-27 10:32:16 +02:00
sethg
95d255e16e Switch Action and docs to use PowerShell 2022-09-27 09:48:19 +02:00
William S Fulton
eaf468e9e8 C# CreateWStringFromUTF32 optimisation
Avoid UTF-32 to UTF-8 conversion then get string from UTF-8
Issue #2369
2022-09-22 18:54:49 +01:00
Frank Schlimbach
fa00622614 Fixes for classes with the same name in different namespaces
Includes the majority of patch #1484.
Excludes changes in typepass.cxx for specializations which have no effect
on the duplicate_class_name_in_ns testcase, nor the rest of the test-suite.
2022-09-21 22:38:22 +01:00
William S Fulton
ee9e436971 Fix -Wmisleading-indentation in Octave wrappers 2022-09-20 22:31:50 +01:00
William S Fulton
623b7d97a7 Remove swig.spec file
Discussion #2316
2022-09-20 22:31:50 +01:00
William S Fulton
9081e3e878
Merge pull request #2374 from friedrichatgc/fix_octave_horzcat
Fix octave operator horzcat test
2022-09-19 15:10:30 +01:00
William S Fulton
e407ccd4fe Move SWIG_Octave_Raise into a function
For efficiency and to fix some warnings
2022-09-19 14:48:33 +01:00
William S Fulton
ed333b6b97 std::string throws typemaps
Go, Guile, Racket, Scilab: Add throws typemaps for std::string so that
thrown string exception messages can be seen.

Test all language for std::string throws typemaps
2022-09-19 09:09:29 +01:00
William S Fulton
4a29229bab Add catches_strings test to test throws char * typemap 2022-09-19 09:09:29 +01:00
William S Fulton
034e2358f9 Add Racket throws typemaps for char * 2022-09-19 09:09:29 +01:00
William S Fulton
d32943b2a9 Javascript v8 object to string exceptions improvement 2022-09-19 09:09:29 +01:00
William S Fulton
00190c484f Javascript, Octave, R - Improve exceptions for %catches
and exception specifications for native types.

Now the raised exception contains the string value as the exception
message instead of just the C/C++ type of the exception.

R exceptions were completely swallowed beforehand
2022-09-19 09:09:29 +01:00
Vadim Zeitlin
b9fa8c23bb Make method wrappers suffix optional and disabled by default
Unfortunately the changes of 26bf86322 (Use SWIG-specific for
non-overloaded synthesized functions too, 2021-11-09) did break some
existing code bases using SWIG as they hardcoded the old wrapper
function names.

So turn this off by default and add a global variable allowing to enable
this, which can be done for a specific language only. This is ugly but,
unfortunately, there is no way to use the Language object from the C
function Swig_MethodToFunction(), so the only alternative would be to
add another parameter to it, but it already has 6 of them, so it
wouldn't really be that much better.

See #2366, #2368, #2370.
2022-09-19 12:40:03 +12:00
Markus Friedrich
d1b7765838 Extended the documentation for octave operator overloading
Octave has more operators than C++. These operators can be overloaded for
the type swig_ref using the standard Octave Object Oriented Programming mechanism.
This is now added to the documentation.
2022-09-18 20:19:39 +02:00
Markus Friedrich
720c28f1ed Reenable and fix octave horzcat operator test
This test was disabled with 0a0743f25c since
it fails with octave 7.2.0

The test function horzcat now uses a variable length argument list to fix this.
Before octave 7 it seems to be possible to call a N-argument octave function
with > N arguments without any error. With octave 7 this seems no longer to be
possible which caused the test failure.
2022-09-18 19:40:37 +02:00
Vadim Zeitlin
b88df82c55 Fix another format mismatch error in char_strings runtime test 2022-09-17 17:39:04 +02:00
Vadim Zeitlin
799fd7a5be Exclude li_std_auto_ptr test from C test suite
There are (and there probably will never be) std::auto_ptr<> typemaps
for this language.
2022-09-17 17:33:31 +02:00
Vadim Zeitlin
23144219af Use "int" for variables printed out using "%d" in the code
Fix -Wformat warnings in the char_strings runtime test.
2022-09-17 17:30:54 +02:00
Vadim Zeitlin
2b2fe7785a Fix enabling C++11 for C CI builds
Set CPPSTD as CPP11 is not used any longer.
2022-09-17 17:22:30 +02:00
Vadim Zeitlin
0688ac7e07 Recognize C language in the test flags script 2022-09-17 15:37:51 +02:00
Vadim Zeitlin
049d3c309b Fix handling of const object parameters and return types
Simply ignore the const on them, to avoid ending up with an extra and
invalid "const" in the generated code.

This fixes director_pass_by_value and typemap_out_optimal unit tests
after the latest merge.
2022-09-17 15:30:31 +02:00
Vadim Zeitlin
2796f394f5 Exclude argcargvtest unit test from C test suite
There is no argcargv.i for C yet.
2022-09-17 15:09:51 +02:00
Vadim Zeitlin
523e58aa06 Check for multiple inheritance of the base classes too
If C++ wrappers for a class are not generated because it uses multiple
inheritance, we can't generate the C++ wrappers for any classes deriving
from it neither, so don't do it.

This fixes failure in multiple_inheritance_overload unit test.
2022-09-17 15:08:31 +02:00
Vadim Zeitlin
81866a0ce2 Re-enable use of method suffix for C module
This avoids conflicts with the actual function being wrapped.
2022-09-17 14:46:38 +02:00
Vadim Zeitlin
f83e2a7de7 Stop using SWIG_exit() in C backend
This function doesn't exist any more.
2022-09-17 14:39:23 +02:00
Vadim Zeitlin
864f32159a Merge branch 'restore-compat-wrappers-names' into C
Merge with the latest master including PR #2371.
2022-09-17 14:36:37 +02:00
Vadim Zeitlin
3caf285742 Make method wrappers suffix optional and disabled by default
Unfortunately the changes of 26bf86322 (Use SWIG-specific for
non-overloaded synthesized functions too, 2021-11-09) did break some
existing code bases using SWIG as they hardcoded the old wrapper
function names.

So turn this off by default and add a global variable allowing to enable
this, which can be done for a specific language only. This is ugly but,
unfortunately, there is no way to use the Language object from the C
function Swig_MethodToFunction(), so the only alternative would be to
add another parameter to it, but it already has 6 of them, so it
wouldn't really be that much better.

See #2366, #2368, #2370.
2022-09-17 14:27:51 +02:00
William S Fulton
e97181ebc0 Add missing typecheck typemaps for std::auto_ptr and std::unique_ptr
To fix overloading when using these types.
2022-09-17 10:23:51 +01:00
William S Fulton
f0af17b324 Correct error handling in Guile pointer conversion 2022-09-16 19:13:02 +01:00
William S Fulton
c5610fd4b3 Guile - Add error checking to SWIGTYPE and SWIGTYPE & in typemaps
To prevent seg faults when passing #nil to these parameter types.
2022-09-16 18:52:52 +01:00
William S Fulton
dad7c93ca0 Provide SWIGTYPE MOVE typemaps in swigmove.i
For implementing full move semantics when passing parameters by value.
Based on SWIGTYPE && and std::unique_ptr typemaps which implement move
semantics.

Added for all languages, but untested for: Go, Ocaml, R, Scilab (and
unlikely to be fully functional for same reasons as for std::unique_ptr
support).

Issue #999
2022-09-16 08:36:25 +01:00
William S Fulton
de65875955 .gitignore for Lua examples 2022-09-16 08:02:51 +01:00
Olly Betts
adc2fa9664 Fix default_args_runme.php for 32-bit platforms
On 32-bit platforms -2147483648 is a PHP float (rather than PHP int on
64-bit platforms) so only check equivalence rather than strict equality.

Fixes #2360
2022-09-14 11:30:28 +12:00
Olly Betts
7eb54a38b1 Note workaround for -DFOO change
Code relying on FOO being defined as empty needs to change, but can
just use -DFOO= instead and remain compatible with older SWIG.

Fixes #2363
2022-09-14 10:11:36 +12:00
William S Fulton
ad1688055d Correct TCL integers testcase for 32-bit platforms 2022-09-09 22:53:29 +01:00
William S Fulton
c09020853d Update comments re _DEBUG redefinition before including Python.h 2022-09-09 22:53:29 +01:00