Commit graph

22,739 commits

Author SHA1 Message Date
William S Fulton
1db04bf322 Improvements to the -debug command line options
The debug command line options that display parse tree nodes
(-debug-module, -debug-top, -debug-symtabs) now display previously hidden
linked list pointers which are useful for debugging parse trees.

Added new command line option -debug-quiet. This suppresses the display
of most linked list pointers and symbol table pointers in the parse tree nodes.

The keys in the parse tree node are now shown in alphabetical order.
2022-03-25 23:34:52 +00:00
William S Fulton
b737a64ec5 Remove minimum Python version check
The version checking was historically done to deal with
different versions and importing the low-level Python
module. Then it was used to try and help when using -py3.
A minimum version check implies that the wrappers work
with any version >= 2.7, which is not really correct.
The correct thing to do is to check that the exact
version used matches the one that the C layer was compiled
against, which can only be left for the user to do, perhaps
using %pythonbegin.

Issue #1779
2022-03-25 19:09:17 +00:00
William S Fulton
469f694ae6 Fix using declaration in derived class bugs
Problem when all the base class's overloaded methods were
overridden in the derived class - fixes "multiply defined" errors.

Linked lists of the overloaded methods were not set up correctly
when handling the using declaration.

Closes #2244
2022-03-24 20:52:58 +00:00
William S Fulton
a343b7e254 Remove -py3 command line option
Closes #1779
2022-03-23 18:13:07 +00:00
William S Fulton
df86fbc54e Remove option to use Python 3 only syntax for %pythonnondynamic feature
A metaclass is added using a decorator @_swig_add_metaclass which
is designed to provide a metaclass that works for both Python 2 and Python 3.
The option to use the Python 3 only syntax: metaclass=_SwigNonDynamicMeta
via the -py3 command line option has been removed as part of a
simplification to remove the -py3 option.

Issue #1779
2022-03-23 07:58:39 +00:00
William S Fulton
f068f2c2d6 Add Python < 3.3 support for pyabc.i
pyabc.i for abstract base classes now supports versions of Python
prior to 3.3 by using the collection module for these older versions.
Python-3.3 and later continue to use the collections.abc module.
The -py3 option no longer has any effect on the %pythonabc feature.
2022-03-23 07:58:01 +00:00
William S Fulton
9fd2356104 Merge branch 'flatstaticmember'
* flatstaticmember:
  Test -flatstaticmethod and %extend
  Python -flatstaticmethod corrections
  Enable flat static constructor methods
  Move low level static methods
  Use flat static method if it's a "friend"
  Python: Option to generate flat class methods
2022-03-21 19:28:52 +00:00
William S Fulton
2c6e7f99a6 Test -flatstaticmethod and %extend 2022-03-21 19:23:15 +00:00
William S Fulton
21c2e47661 Python -flatstaticmethod corrections
Correct logic for suppressing static methods.
Previous logic was missing director disown methods.
Add changes file entry for -flatstaticmethod.

Closes #2137
2022-03-21 19:22:49 +00:00
Olly Betts
b2c58115d7 Fix previous commit
Revert changes inadvertently included, and fix `=` to `==`.
2022-03-20 19:44:23 +13:00
Olly Betts
029ddab8b5 [ci] Try to fix failing appveyor python builds 2022-03-20 18:42:50 +13:00
Ian Lance Taylor
90aa3f75ba [Go] Implement %extend base methods in child classes.
Fixes #337
2022-03-18 18:34:28 -07:00
Olly Betts
96b2915960 [ci] appveyor.yml: Only set PY3 if SWIGLANG is python
See #2235
2022-03-19 09:06:50 +13:00
Olly Betts
a0e3825de6 Fix replace handling corner case
With flags DOH_REPLACE_ID_BEGIN, DOH_REPLACE_ID_END and
DOH_REPLACE_NUMBER_END the code looked for a match for the token
string using strstr() and then checked the extra condition - if the
extra condition didn't apply it then advanced by the length of the token
before searching again.

However that can miss matches if the strstr() matches can overlap
one another, so only advance one position, which is conservative
but can't miss matches.

For example this would not match before:

Replace("123123", "1231", r, DOH_REPLACE_NUMBER_END);

This issue seems to be entirely latent in the current SWIG codebase
due to the nature of the token strings passed when using these flags.

See #2235
2022-03-19 08:55:39 +13:00
Olly Betts
9ab3ef8e96 Update testcase comment 2022-03-19 08:55:39 +13:00
Olly Betts
d7e83c1cbc Fix checking of "optimal" typemap attribute
Previously SWIG checked that the typemap action contained ";\n" not
followed by an identifier character, and that it contained no other
`;`, but that incorrectly allows some cases it shouldn't.

Instead check that the action ends with `;\n` and contains no other
`;`, which is simpler and correctly rejects these cases.
2022-03-19 08:13:09 +13:00
Jim Easterbrook
b8f10a55f9 Enable flat static constructor methods
These are needed to provide renamed overloaded constructors and the
like.
2022-03-18 11:10:14 +01:00
Jim Easterbrook
3cfc26bc30 Move low level static methods
Like the non-static methods these are no longer present when using
-builtin
2022-03-18 11:10:14 +01:00
Jim Easterbrook
63ef91939b Use flat static method if it's a "friend"
This allows the friends test case to pass, with or without -builtin.
2022-03-18 11:10:14 +01:00
Julien Schueller
484e5316f2 Python: Option to generate flat class methods 2022-03-18 11:10:14 +01:00
Olly Betts
a6eae77dd5 Fix module example so generated code compiles
Fixes https://sourceforge.net/p/swig/bugs/1141/
2022-03-18 19:26:16 +13:00
Seth R. Johnson
8f9a432040
Update python manual scripts to py3 compatibility (#2204) 2022-03-18 13:29:22 +13:00
Olly Betts
23fa9804c8 Clarify messages where "Python" means 2.x
See #2235
2022-03-18 10:23:17 +13:00
William S Fulton
06364ae749 Merge remote-tracking branch 'wsfulton/appveyor-vs2022'
* wsfulton/appveyor-vs2022:
  Cygwin testing - test python3 (3.9) instead of python-2.7
  Last resort to use /usr/lib in python linking
  mingw - install python from pacman
  Fix detection of python .lib file for 2 digits in minor version
  cpp11_result_of testcase and result_of deprecation in c++17
  Testcase correction for using declaration and members
  Fix compiler warning using Java std::wstring
  Appveyor changes to use Visual Studio 2022 image
2022-03-17 08:23:13 +00:00
Olly Betts
bb5cd94cad Fix GCC warning from recent -intgosize change
Modules/go.cxx:247:10: warning: variable ‘display_help’ set but not used [-Wunused-but-set-variable]
  247 |     bool display_help = false;
2022-03-17 18:55:31 +13:00
Olly Betts
c7af8eabb3 Default to running tests with Python 3
Specify PY2=1 to use Python 2.

See #1779
Closes #2235
2022-03-17 18:55:10 +13:00
William S Fulton
40f711d11e Cygwin testing - test python3 (3.9) instead of python-2.7 2022-03-16 23:05:35 +00:00
William S Fulton
b433ef9415 Last resort to use /usr/lib in python linking 2022-03-16 22:54:51 +00:00
William S Fulton
c0f20ff7e0 mingw - install python from pacman
Python 3.8 stopped shipping libpython38.a with the main Python distribution
which is required for linking using mingw.
2022-03-16 22:54:38 +00:00
William S Fulton
ade890854d Fix detection of python .lib file for 2 digits in minor version 2022-03-16 22:43:49 +00:00
William S Fulton
a9a110fbae cpp11_result_of testcase and result_of deprecation in c++17
Avoid deprecations warnings using c++17 and later compiler.
Keep testing using c++11 and c++14 compilers.
Provide simple alternative to keep run time tests working with
c++17 and later compilers.
2022-03-16 22:42:27 +00:00
William S Fulton
7f97278739 Testcase correction for using declaration and members
The compiler calls setWindowGrab(bool) instead of setWindowsGrab(NativeWindowType*)
and gives a warning with Visual C++ when calling setWindowGrab(true)
with a pointer to ApplicationContextSDL.
Looks like function function hiding of the non-virtual method.
I can't see this changing testing of the original bug.
2022-03-16 22:42:27 +00:00
William S Fulton
1da824ceff Fix compiler warning using Java std::wstring
Fixes: conversion from 'size_t' to 'jsize', possible loss of data
2022-03-16 22:32:53 +00:00
William S Fulton
fe45a688ef Appveyor changes to use Visual Studio 2022 image
- Mingw/MSYS2 now running on VS2022 image updating to python-3.10 and jdk-17.
- Added Visual 2022 C++ compiler, version 19.3 to build (python-3.10) on VS2022 image.
- Update cygwin to use VS2022 image.
2022-03-16 22:32:33 +00:00
Olly Betts
2da3815f99 [Go] Make -intgosize optional
We no longer support Go < 1.2 so we can default intgo to ptrdiff_t
and uintgo to size_t.

Fixes #683
Fixes #2233
2022-03-16 18:30:05 +13:00
Ian Lance Taylor
0c0b93f8e0 [Go] add typemaps for std::string*
Fixes #2214
2022-03-15 20:30:53 -07:00
Ian Lance Taylor
b819363117 [Go] Don't convert arrays to pointers if there is a "gotype" typemap entry.
Fixes #749
2022-03-15 12:18:47 -07:00
Ian Lance Taylor
46aaf11b01 [Go] Add documentation note about Go and C++ exceptions.
For #418
Fixes #518
2022-03-15 09:48:53 -07:00
Ian Lance Taylor
56b539e0e0 [Go] Add notes about recent Go-related changes. 2022-03-15 09:48:18 -07:00
William S Fulton
dea0c3f0b2 Add some code comments about Python objects and capsule reference counting
Issue #2208
2022-03-15 08:46:20 +00:00
William S Fulton
ae8aa4e08f Re-enable overloading test for php8 2022-03-15 08:32:27 +00:00
Olly Betts
f5313e63af [ci] Adjust how CPPFLAGS is set
Set it so it should be visible where the CI log shows the environment,
as `make` is run with `-s` so the compile command lines are unhelpfully
not shown.
2022-03-15 18:17:18 +13:00
Olly Betts
936e9264e8 Adjust Python variables example for Python 2
Explicitly call str() as previously Python 2 seemed to end up calling
repr().
2022-03-15 18:11:34 +13:00
YungLee
31f7b437f4
[scilab] Fix to work on Windows
* Change the builder filename to match the loader filename

* Mark extern functions with SWIGEXPORT

* Fix bug: builder.sce not generated if with  '-scilab -builder'  option

Fixes #1853
2022-03-15 15:06:17 +13:00
Olly Betts
9efcc785ae Re-enable symbol poisoning in a CI job
It seems too brittle to enable by default as we'd have to avoid
including any system headers after doh.h, which is hard to enforce,
but just having it enabled for one CI job should avoid uses of the
poisoned symbols from being accidentally introduced.

See #2223
2022-03-15 11:14:23 +13:00
Olly Betts
250afd6dc3 List variables in variables example
Seems useful in itself, but also serves to check if
https://sourceforge.net/p/swig/bugs/976/ is still reproducible.
2022-03-15 11:06:20 +13:00
Olly Betts
b4a92ae34f Fix SWIG_Py*Method_New conditional
This should be a SWIG-time conditional, but was inside %{ %} so was
instead a compile-time conditional.

Fix for bug in the changes in #2191
2022-03-14 12:49:41 +13:00
William S Fulton
598736a6b2 %interface family of macros no longer add variable wrappers
The getter/setter methods used for wrapping methods are no longer
added to the interface class.

Closes #1524

Also add in testcase for enums.
2022-03-12 23:04:24 +00:00
William S Fulton
63bbf642f4 %interface family of macros enum fix for Java
enums were being generated into the interface class instead of the proxy
class.
2022-03-12 23:04:24 +00:00
William S Fulton
a87e722834 Use GetFlag instead of Getattr for feature:interface 2022-03-12 23:04:24 +00:00