Handle FunctionDef blockstart_tolineno edge cases (#2880)
Getting the lineno of the start of the block for function definition(`FunctionDef.blockstart_tolineno`) can be quite tricky. Take below example:
```python
# Case A
def foo(bar: str) -> None:
pass
# should returns line=1
# Case B
def foo(
bar:str):
pass
# should returns line=2
# Case C
def foo(
bar:str
) -> None:
pass
# should returns line=3
# Case D
def foo(
bar:str
):
# should returns line=3
pass
```
Currently we only handled Case A, B. With this commit we can cover case C.
But for Case D, we will need a better solution2 files changed