Don't mark as "noassign" when a variable is immutable

I had assumed member variables could only be noassign by being "const",
but I had forgotten about the `%immutable` keyword being applied via
SWIG.
This commit is contained in:
Seth R Johnson 2022-02-04 13:57:08 -05:00
commit 5a2656ab80
2 changed files with 7 additions and 4 deletions

View file

@ -80,6 +80,12 @@ private:
*/
};
// This class is valid C++ but cannot be assigned to.
struct JustConstMemberData {
explicit JustConstMemberData(int i_inp) : i(i_inp) {}
const int i;
};
%}
%{

View file

@ -781,10 +781,7 @@ Allocate():
Setattr(n, "cplus:staticbase", inclass);
} else if (Cmp(Getattr(n, "kind"), "variable") == 0) {
/* Check member variable to determine whether assignment is valid */
if (GetFlag(n, "feature:immutable")) {
/* Can't assign a class with an immutable member variable */
Setattr(inclass, "allocate:noassign", "1");
} else if (SwigType_isreference(Getattr(n, "type"))) {
if (SwigType_isreference(Getattr(n, "type"))) {
/* Can't assign a class with reference member data */
Setattr(inclass, "allocate:noassign", "1");
}