This patch raises an IndentationError rather than a generic "invalid syntax" error for unexpected indentation. Code to do this was already in pythonrun.c:err_input() but was not being reached due to a failure to pass the INDENT token in the perrdetail structure. The patch also adds tests for the 3 kinds of indentation errors (unexpected indent, no indent where required, invalid outdent level) to test_syntax.py .
Logged In: YES user_id=849994 Martin, do we want to change this? I myself have always wondered what IndentationError was for if it was not raised in these cases.
Logged In: YES user_id=21627 IndentationError is already raised for bad indentation, e.g. for "def f():\nreturn" or if 1:\nfoo()" (which is the test_no_indent) However, the patch is right in filling the token in this case, also; I accepted it as r45897. As it changes the exceptio behaviour, I don't think it should be backported.