From: <wsf...@us...> - 2009-08-08 22:56:17
|
Revision: 11518 http://swig.svn.sourceforge.net/swig/?rev=11518&view=rev Author: wsfulton Date: 2009-08-08 22:56:10 +0000 (Sat, 08 Aug 2009) Log Message: ----------- Python and Tcl - improve error message for missing constructor when the reason is because the class is abstract. Modified Paths: -------------- trunk/CHANGES.current trunk/Source/Modules/python.cxx trunk/Source/Modules/tcl8.cxx Modified: trunk/CHANGES.current =================================================================== --- trunk/CHANGES.current 2009-08-08 17:44:10 UTC (rev 11517) +++ trunk/CHANGES.current 2009-08-08 22:56:10 UTC (rev 11518) @@ -1,6 +1,16 @@ Version 1.3.40 (in progress) ============================ +2009-08-08: wsfulton + [Python] More user friendly AttributeError is raised when there are + no constructors generated for the proxy class in the event that the + class is abstract - the error message is now + "No constructor defined - class is abstract" whereas if there are no + public constructors for any other reason and the class is not abstract, + the message remains + "No constructor defined". + [tcl] Similarly for tcl when using -itcl. + 2009-08-04: olly [PHP] Fix generated code to work with PHP 5.3. Modified: trunk/Source/Modules/python.cxx =================================================================== --- trunk/Source/Modules/python.cxx 2009-08-08 17:44:10 UTC (rev 11517) +++ trunk/Source/Modules/python.cxx 2009-08-08 22:56:10 UTC (rev 11518) @@ -2984,7 +2984,7 @@ Delete(realct); } if (!have_constructor) { - Printv(f_shadow_file, tab4, "def __init__(self, *args, **kwargs): raise AttributeError(\"No constructor defined\")\n", NIL); + Printv(f_shadow_file, tab4, "def __init__(self, *args, **kwargs): raise AttributeError(\"", "No constructor defined", (Getattr(n, "abstract") ? " - class is abstract" : ""), "\")\n", NIL); } else if (fastinit) { Printv(f_wrappers, "SWIGINTERN PyObject *", class_name, "_swiginit(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {\n", NIL); Modified: trunk/Source/Modules/tcl8.cxx =================================================================== --- trunk/Source/Modules/tcl8.cxx 2009-08-08 17:44:10 UTC (rev 11517) +++ trunk/Source/Modules/tcl8.cxx 2009-08-08 22:56:10 UTC (rev 11518) @@ -931,13 +931,13 @@ Printv(f_shadow, " constructor { } {\n", NIL); Printv(f_shadow, " # This constructor will fail if called directly\n", NIL); Printv(f_shadow, " if { [info class] == \"::", class_name, "\" } {\n", NIL); - Printv(f_shadow, " error \"No constructor for class ", class_name, "\"\n", NIL); + Printv(f_shadow, " error \"No constructor for class ", class_name, (Getattr(n, "abstract") ? " - class is abstract" : ""), "\"\n", NIL); Printv(f_shadow, " }\n", NIL); Printv(f_shadow, " }\n", NIL); } Printv(f_shadow, "}\n\n", NIL); - }; + } Printv(f_wrappers, "static swig_class *swig_", mangled_classname, "_bases[] = {", base_class, "0};\n", NIL); Printv(f_wrappers, "static const char * swig_", mangled_classname, "_base_names[] = {", base_class_names, "0};\n", NIL); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |