mirror of https://github.com/swig/swig
Don't show incorrect warning SWIGWARN_LANG_SMARTPTR_MISSING (520)
Was showing for an ignored derived class. Closes #2879
This commit is contained in:
parent
2e9e89736e
commit
64649df343
|
@ -7,6 +7,10 @@ the issue number to the end of the URL: https://github.com/swig/swig/issues/
|
||||||
Version 4.3.0 (in progress)
|
Version 4.3.0 (in progress)
|
||||||
===========================
|
===========================
|
||||||
|
|
||||||
|
2024-09-19: wsfulton
|
||||||
|
#2879 Don't show warning SWIGWARN_LANG_SMARTPTR_MISSING (520) if
|
||||||
|
class is ignored.
|
||||||
|
|
||||||
2024-09-21: olly
|
2024-09-21: olly
|
||||||
SWIG was ignoring `final` if specified after `noexcept`.
|
SWIG was ignoring `final` if specified after `noexcept`.
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,17 @@ struct BB : AA {};
|
||||||
struct CC : AA {};
|
struct CC : AA {};
|
||||||
struct DD : AA {};
|
struct DD : AA {};
|
||||||
|
|
||||||
|
%ignore EE;
|
||||||
|
struct EE : AA {}; // should not warn for AA base as EE is ignored
|
||||||
|
struct EEE : EE {}; // should warn for AA base, but not for EE base
|
||||||
|
|
||||||
%feature("smartptr", noblock=1) YY { std::shared_ptr< YY > }
|
%feature("smartptr", noblock=1) YY { std::shared_ptr< YY > }
|
||||||
struct XX {};
|
struct XX {};
|
||||||
struct YY : XX {};
|
struct YY : XX {};
|
||||||
|
|
||||||
|
%feature("smartptr", noblock=1) ZZ { std::shared_ptr< YY > }
|
||||||
|
%ignore ZZ;
|
||||||
|
struct ZZ : XX {};
|
||||||
|
// Next two are NOT smartptr and so should not issue warning
|
||||||
|
struct ZZZ : ZZ {};
|
||||||
|
struct ZZZZ : ZZZ {};
|
||||||
|
|
|
@ -2,4 +2,5 @@ cpp_smartptr_feature.i:8: Warning 520: Derived class 'BB' of 'AA' is not similar
|
||||||
cpp_smartptr_feature.i:9: Warning 520: Derived class 'CC' of 'AA' is not similarly marked as a smart pointer.
|
cpp_smartptr_feature.i:9: Warning 520: Derived class 'CC' of 'AA' is not similarly marked as a smart pointer.
|
||||||
cpp_smartptr_feature.i:10: Error: Invalid type (std::shared_ptr<) in 'smartptr' feature for class DD.
|
cpp_smartptr_feature.i:10: Error: Invalid type (std::shared_ptr<) in 'smartptr' feature for class DD.
|
||||||
cpp_smartptr_feature.i:10: Warning 520: Derived class 'DD' of 'AA' is not similarly marked as a smart pointer.
|
cpp_smartptr_feature.i:10: Warning 520: Derived class 'DD' of 'AA' is not similarly marked as a smart pointer.
|
||||||
cpp_smartptr_feature.i:14: Warning 520: Base class 'XX' of 'YY' is not similarly marked as a smart pointer.
|
cpp_smartptr_feature.i:14: Warning 520: Derived class 'EEE' of 'AA' is not similarly marked as a smart pointer.
|
||||||
|
cpp_smartptr_feature.i:18: Warning 520: Base class 'XX' of 'YY' is not similarly marked as a smart pointer.
|
||||||
|
|
|
@ -282,7 +282,8 @@ class TypePass:private Dispatcher {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (GetFlag(bclass, "smart"))
|
if (GetFlag(bclass, "smart"))
|
||||||
Swig_warning(WARN_LANG_SMARTPTR_MISSING, Getfile(first), Getline(first), "Derived class '%s' of '%s' is not similarly marked as a smart pointer.\n", SwigType_namestr(Getattr(first, "name")), SwigType_namestr(Getattr(bclass, "name")));
|
if (!GetFlag(first, "feature:ignore"))
|
||||||
|
Swig_warning(WARN_LANG_SMARTPTR_MISSING, Getfile(first), Getline(first), "Derived class '%s' of '%s' is not similarly marked as a smart pointer.\n", SwigType_namestr(Getattr(first, "name")), SwigType_namestr(Getattr(bclass, "name")));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!importmode) {
|
if (!importmode) {
|
||||||
|
|
Loading…
Reference in New Issue