of the strings start like "Error. XXX", others like "XXX".
The format is now defined in 'error.c:Swig_error_msg_format()'.
- Normalize the multiline error/warning messages to correctly
use -Fformat definition.
- Centralize the error/warning format definitions in
'error.c:Swig_error_msg_format()'.
- Fix a minor error in cpp.c, that after finding an error, still
was emitting a redefined macro, producing duplicated error/warning
messages in parser.y.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@5635 626c5289-ae23-0410-ae9c-e8d60b6d4f22
WARN_PARSE_REDUNDANT 322
similar to the g++ -Wredundant-decls flag.
This recovers the warnings that now are not been reported by
the original code
WARN_PARSE_REDEFINED 302
Redundant example:
int foo(int);
int foo(int);
Redefined example:
int foo(int);
double foo(int);
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@5634 626c5289-ae23-0410-ae9c-e8d60b6d4f22
Now, this doesn't generate warnings:
class A; class B*;
int foo(A*, B*);
struct A {
friend int foo(A*, B*);
};
but this generates
struct B {
friend double foo(A*, B*);
};
which is correct, since they have different return types.
See the redefined.i file for most cases where
repeated (but not redefined) declarations are
not generating warnings now, such as:
// no warning
#define REPEATED 1
#define REPEATED 1
// yes warning
#define REDEFINED 1
#define REDEFINED 2
this is following the C, C++ and preprocessor
standard behavior.
The function 'need_redefined_warn(..)' was added to
util.c, if some strange corner appears, and therefore,
the parser.y file doesn't need to be changed latter.
Also, the redefined warning format in parser.y
was changed, so now it respond to William's -Fmicrosoft
flag.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@5633 626c5289-ae23-0410-ae9c-e8d60b6d4f22
Fixed error where the base class was being used to wrap the derived class C++ pointer.
Emit a warning when encountering these return types as the return type is changed to the base class type.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@5590 626c5289-ae23-0410-ae9c-e8d60b6d4f22
Fixed error where the base class was being used to wrap the derived class C++ pointer.
Also fixed runtime error when using directors - the wrong canonical description was not using the base class type.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@5589 626c5289-ae23-0410-ae9c-e8d60b6d4f22
Previously this had to be present to set the method modifiers. Now this feature is only
used if it exists for the method being wrapped. The default is "public" as previous
however, when wrapping protected director methods it is "protected".
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@5553 626c5289-ae23-0410-ae9c-e8d60b6d4f22
in addition to the native one ( '\' on Windows). This can be used in %import, %include
and commandline options taking a path, for example -I.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@5538 626c5289-ae23-0410-ae9c-e8d60b6d4f22
the function 'need_protected' outside parser.y,
ie, if more subtle cases appear, they can be
fixed without changing parser.y.
Now parser.y looks much more like the original 1.32.
Source/CParse/parser.y: moving and fixing 'need_protected'
Source/CParse/util.c: moving and fixing 'need_protected'
Examples/test-suite/director_protected.i: more %rename cases
Examples/test-suite/director_using.i: fixing bad module name
The errors in question where related to the mix of
%rename + (typedef|static) + protected + dirprot_mode:
%rename(s) Foo::p;
%rename(q) Foo::r;
%inline {
class Foo {
public:
virtual ~Foo() {}
int p(){ return 1;}
int r(){ return 1;}
protected:
typedef int q();
static int s();
};
since q and s look like functions, the parser was adding them
completly to the symbol table, and clashing latter with the
attemped renames.
The error was only visible when dirprot was enabled, with
the old behavior it was ok.
Marcelo
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@5533 626c5289-ae23-0410-ae9c-e8d60b6d4f22