Add property annotations

This commit is contained in:
sethg 2021-02-21 16:43:36 +01:00 committed by William S Fulton
parent 5a945bb135
commit 0ba26d8f73
1 changed files with 18 additions and 1 deletions

View File

@ -2394,6 +2394,23 @@ public:
return (ret && funcanno) ? NewStringf(" -> \"%s\"", ret) : NewString("");
}
/* ------------------------------------------------------------
* returnPropertyAnnotation()
*
* Helper function for constructing a property annotation
* return a empty string for Python 2.x
* ------------------------------------------------------------ */
String *returnPropertyAnnotation(Node *n) {
String *ret = 0;
ret = Getattr(n, "type");
if (ret) {
ret = SwigType_str(ret, 0);
}
return (ret && py3) ? NewStringf(": \"%s\"", ret)
: NewString("");
}
/* ------------------------------------------------------------
* emitFunctionShadowHelper()
*
@ -5042,7 +5059,7 @@ public:
String *setname = Swig_name_set(NSPACE_TODO, mname);
String *getname = Swig_name_get(NSPACE_TODO, mname);
int assignable = is_assignable(n);
Printv(f_shadow, tab4, symname, " = property(", module, ".", getname, NIL);
Printv(f_shadow, tab4, symname, returnPropertyAnnotation(n), " = property(", module, ".", getname, NIL);
if (assignable)
Printv(f_shadow, ", ", module, ".", setname, NIL);
if (have_docstring(n))