swig/Examples/test-suite/redefined.i
Marcelo Matus 74d6f1eb43 Added the warning code
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
2004-01-15 08:16:53 +00:00

107 lines
1.5 KiB
OpenEdge ABL

%module redefined
/* no redundant warnings */
#pragma SWIG nowarn=-322
#if 1
//
// All these repeated declarations are not redefinitions,
// and they are valid C++ code, therefore, we skip
// swig redefined warnings.
//
%define uja
aju;
%enddef
%define uja
aju;
%enddef
%constant int agua = 0;
%constant int agua = 0;
%inline %{
#define REDUNDANT 1
#define REDUNDANT 1
#define MACROREP(x) x
#define MACROREP(x) x
class Hello;
class Hello;
typedef int Int;
typedef int Int;
int hello(int);
inline int hello(int);
class B;
struct A
{
typedef int Int;
typedef int Int;
friend int foo(A*, B*);
};
struct B
{
typedef int Int;
typedef int Int;
friend int foo(A*, B*);
};
inline int foo(A*, B*) { return 0; };
%}
#else
//
// the %extend and %rename directive ALWAYS emit redefined warnings,
// since they are not C/C++/CPP standard.
//
%extend Hello {
int hi(int) { return 0; };
}
%rename(chao) hi(int);
//
// All these repeated declarations are really redefinitions,
// therefore, swig must produce a redefined warning
//
%constant int agua = 0;
%constant int agua = 1;
%inline %{
#define REDEFINED 1
#define REDEFINED 2
#define MACROREP(x) x
#define MACROREP(x) x*2
typedef int Int;
typedef double Int;
int hi(int);
int chao(int);
int hello(int);
inline double hello(int) { return 0; };
struct Hello
{
typedef int Int;
typedef double Int;
friend short hello(int);
int hi(int) { return 0; };
};
%}
#endif