There were (a few) failures using 1.8.7, so document 1.9 and later as
working in SWIG 4.0.
Trusty failure in 2.3.0 was fixed in later versions of Ruby 2.3.x
(expansion of RARRAY_PTR).
This PR removes the closing `?>` PHP tag from generated files. [PSR-2](https://www.php-fig.org/psr/psr-2/) states:
> The closing `?>` tag MUST be omitted from files containing only PHP.
A problem might occur if files with any character after the closing tag are used with `include` or `require`. It might trigger an output and disallow HTTP header manipulation. See the popular [_headers already sent_](https://stackoverflow.com/a/8028987/1847340) debate on SO.
The default Go 1.11 version on Travis doesn't work with C++11/C++14:
gcc_libinit.c:110:3: error: implicit declaration of function ‘nanosleep’
so switch to another gimme version of Go.
Default version of Go 1.11.1 on Travis is broken for c++11 testing.
gcc_libinit.c: In function ‘_cgo_try_pthread_create’:
gcc_libinit.c:110:3: error: implicit declaration of function ‘nanosleep’ [-Werror=implicit-function-declaration]
nanosleep(&ts, nil);
Ubuntu trusty 14.04 is end of life April 2019.
Ubuntu xenial 16.04 is the main platform for Travis now.
Some languages are not working on xenial, so I've left them on trusty
for now.
Use gimme to install a version of Go to test. Travis already uses gimme
to pre-install a version of Go.
Switch some of the Go testing from travis to xenial.
Output is once again:
$ swig -versioon
Unable to find option or file '-versioon', Use 'swig -help' for more information.
instead of
$ swig -versioon
No target language specified
To correctly parse Doxygen post-comments after the trailing comma,
switch to right recursion in "enumlist" production rule definition: this
does consume more stack space when parsing, but makes the rules much
easier to write and to understand and hopefully shouldn't result in any
problems with real code (which shouldn't have thousands of enums items
in it).
Closes#1514.
Fix crash if "@return" Doxygen tag was used on a node without any return
type (such as a class, for example). Ignoring it might not be the best
thing to do, but it's definitely better than crashing and it's not
really clear what else could be done anyhow.
Closes#1516.
Workaround clang++ 9.1.0 error not knowing std::vector<bool>::const_reference
is actually typedef to bool:
li_std_vector_wrap.cxx:1838:40: error: no matching constructor for initialization of 'std::vector<bool>::const_reference'
Workaround is use
const value_type& getitem(int index) throw (std::out_of_range) { ...
// bool specialization:
bool getitem(int index) throw (std::out_of_range) { ...
instead of
const_reference_type getitem(int index) throw (std::out_of_range) { ...
Although the following would be better, it would require a more
complicated implementation:
const_reference_type getitem(int index) throw (std::out_of_range) { ...
// bool specialization:
bool getitem(int index) throw (std::out_of_range) { ...