diff options
author | William S Fulton <wsf@fultondesigns.co.uk> | 2010-06-03 17:44:42 +0000 |
---|---|---|
committer | William S Fulton <wsf@fultondesigns.co.uk> | 2010-06-03 17:44:42 +0000 |
commit | 257ce20f30b2535fff7b52f18df5595be6b4ec9b (patch) | |
tree | 8d378629301fbe2b7976aa6ce1b85579f91a9375 | |
parent | d30054b5f63a75d2688518b82b90b10507a62259 (diff) | |
download | swig-257ce20f30b2535fff7b52f18df5595be6b4ec9b.tar.gz |
Fix uncompileable code when %rename results in two enum items with the same name
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12098 626c5289-ae23-0410-ae9c-e8d60b6d4f22
-rw-r--r-- | CHANGES.current | 3 | ||||
-rw-r--r-- | Examples/test-suite/common.mk | 1 | ||||
-rw-r--r-- | Examples/test-suite/enum_rename.i | 12 | ||||
-rw-r--r-- | Source/Modules/typepass.cxx | 2 |
4 files changed, 17 insertions, 1 deletions
diff --git a/CHANGES.current b/CHANGES.current index 9982286c2..331e9d8dd 100644 --- a/CHANGES.current +++ b/CHANGES.current @@ -5,3 +5,6 @@ See the RELEASENOTES file for a summary of changes in each release. Version 2.0.1 (in progress) =========================== +2010-06-03: wsfulton + Fix uncompileable code when %rename results in two enum items + with the same name. Reported by Vadim Zeitlin. diff --git a/Examples/test-suite/common.mk b/Examples/test-suite/common.mk index 97708be47..5033f1957 100644 --- a/Examples/test-suite/common.mk +++ b/Examples/test-suite/common.mk @@ -180,6 +180,7 @@ CPP_TEST_CASES += \ disown \ dynamic_cast \ empty \ + enum_rename \ enum_scope_template \ enum_template \ enum_thorough \ diff --git a/Examples/test-suite/enum_rename.i b/Examples/test-suite/enum_rename.i new file mode 100644 index 000000000..455826f8b --- /dev/null +++ b/Examples/test-suite/enum_rename.i @@ -0,0 +1,12 @@ +%module enum_rename + +%warnfilter(SWIGWARN_PARSE_REDEFINED) S_May; + +// %rename with rxspencer can do the equivalent of these two renames, which was resulting in uncompileable code +%rename(May) M_May; +%rename(May) S_May; + +%inline %{ + enum Month { M_Jan, M_May, M_Dec }; + enum Severity { S_May, S_Can, S_Must }; +%} diff --git a/Source/Modules/typepass.cxx b/Source/Modules/typepass.cxx index 57a7663eb..e0e06d54e 100644 --- a/Source/Modules/typepass.cxx +++ b/Source/Modules/typepass.cxx @@ -796,7 +796,7 @@ class TypePass:private Dispatcher { bool reset; String *enumvalue = Getattr(c, "enumvalue"); - if (GetFlag(c, "feature:ignore")) { + if (GetFlag(c, "feature:ignore") || !Getattr(c, "sym:name")) { reset = enumvalue ? true : false; previous_ignored = true; } else { |