From 3efdbc8f2ecffaea67ac461df65212d930f641c3 Mon Sep 17 00:00:00 2001 From: William S Fulton Date: Mon, 2 May 2016 22:50:09 +0100 Subject: [PATCH] Don't issue unnecessary base class ignored message Don't warn about base class being ignored when the derived class is itself ignored. Closes #669 --- CHANGES.current | 4 ++++ .../test-suite/errors/cpp_inherit_ignored.i | 19 +++++++++++++++++++ .../errors/cpp_inherit_ignored.stderr | 3 +++ Source/Modules/typepass.cxx | 3 ++- 4 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 Examples/test-suite/errors/cpp_inherit_ignored.i create mode 100644 Examples/test-suite/errors/cpp_inherit_ignored.stderr diff --git a/CHANGES.current b/CHANGES.current index 1627a09ec..7985f238d 100644 --- a/CHANGES.current +++ b/CHANGES.current @@ -5,6 +5,10 @@ See the RELEASENOTES file for a summary of changes in each release. Version 3.0.9 (in progress) =========================== +2016-05-02: wsfulton + Fix #669. Don't issue warning about ignoring base classes when the derived class is + itself ignored. + 2016-04-18: ianlancetaylor [Go] Fix use of goout typemap when calling base method by forcing the "type" attribute to the value we need. diff --git a/Examples/test-suite/errors/cpp_inherit_ignored.i b/Examples/test-suite/errors/cpp_inherit_ignored.i new file mode 100644 index 000000000..fdc1c83e3 --- /dev/null +++ b/Examples/test-suite/errors/cpp_inherit_ignored.i @@ -0,0 +1,19 @@ +%module xxx + +// Only non-ignored classes should warn about Ignored base classes +%ignore ActualClass; +%ignore ActualClassNoTemplates; + +%{ +struct BaseClassNoTemplates {}; +%} +%inline %{ +template +class TemplateClass {}; + +class ActualClass : public TemplateClass {}; +class AktuelKlass : public TemplateClass {}; + +class ActualClassNoTemplates : public BaseClassNoTemplates {}; +class AktuelKlassNoTemplates : public BaseClassNoTemplates {}; +%} diff --git a/Examples/test-suite/errors/cpp_inherit_ignored.stderr b/Examples/test-suite/errors/cpp_inherit_ignored.stderr new file mode 100644 index 000000000..360c1f9fc --- /dev/null +++ b/Examples/test-suite/errors/cpp_inherit_ignored.stderr @@ -0,0 +1,3 @@ +cpp_inherit_ignored.i:15: Warning 401: Nothing known about base class 'TemplateClass< int >'. Ignored. +cpp_inherit_ignored.i:15: Warning 401: Maybe you forgot to instantiate 'TemplateClass< int >' using %template. +cpp_inherit_ignored.i:18: Warning 401: Nothing known about base class 'BaseClassNoTemplates'. Ignored. diff --git a/Source/Modules/typepass.cxx b/Source/Modules/typepass.cxx index da077fd07..3b7083def 100644 --- a/Source/Modules/typepass.cxx +++ b/Source/Modules/typepass.cxx @@ -503,7 +503,8 @@ class TypePass:private Dispatcher { /* Inherit type definitions into the class */ if (name && !(GetFlag(n, "nested") && !checkAttribute(n, "access", "public") && (GetFlag(n, "feature:flatnested") || Language::instance()->nestedClassesSupport() == Language::NCS_None))) { - cplus_inherit_types(n, 0, nname ? nname : (fname ? fname : name)); + if (!GetFlag(n, "feature:ignore")) + cplus_inherit_types(n, 0, nname ? nname : (fname ? fname : name)); } inclass = n;