Hi Argyrios,
Thanks a ton for the review! I think the patch is much better now, for it.

Responses:
+ The convention in the libclang API is that if the function can return an 
unambiguous invalid value, we do not + assert. If you document the behavior of 
the function ("-1 is returned") you should allow the client to depend on it for 
both debug and release.
+ I suggest removing the assertions in clang_Cursor_getNumTemplateArguments and 
clang_Cursor_getTemplateArgumentType.

Done.
One question: ...getNumTemplateArguments and other functions depend on the 
helper clang_Cursor_getTemplateArgument, which also has an unambiguous "bad" 
return ("false"), so I've removed the asserts there, as well (or else 
getNumTemplateArguments would still throw them). It seems like a shame, though, 
to lose the debugging information that was captured in the assert message 
("Invalid template argument index", for example, in the prior patch revision). 
Is there a convention to preserve that information somehow, or is that not 
standard Clang practice?

+ This indicates that we are missing another function to make using the others 
convenient. We are missing a function to get the kind of the I'th template 
argument, maybe have a function return if the I'th argument is a type or value ?
+ Also could you please add some tests for this new functionality, e.g. enhance 
'test/Index/index-templates.cpp' ?

That's a good call - you're absolutely right. I've added 
clang_Cursor_getTemplateArgumentKind and appropriate unit tests. Give them a 
once-over when you get a chance.

While porting this change to cindex.py, I realized that there was a lot of 
duplicated code for enumeration representation. I may have bitten off more than 
I can chew, but I at least took a stab at unifying all that somewhat. It 
definitely needs to be re-reviewed. :)

Again - thank you both for the reviews (updated patch coming shortly)!

Updated tests are still passing.

================
Comment at: bindings/python/tests/cindex/test_cursor.py:275
@@ +274,3 @@
+
+
+def test_get_template_argument_unsigned_value():
----------------
eliben wrote:
> One empty line here for consistency?
Done.

================
Comment at: include/clang-c/Index.h:3016
@@ +3015,3 @@
+ *
+ * If called with I = 1 or 2, 2^32 - 7 or true will be returned, respectively.
+ * For I == 0, an invalid value will be returned or an assert will be 
triggered.
----------------
eliben wrote:
> I think an example with an actual unsigned would be more useful here :)
That's...a good point. Done.

http://reviews.llvm.org/D5621



_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to