mirror of
https://github.com/astral-sh/ruff.git
synced 2025-08-31 07:37:38 +00:00
Fix incorrect placement of leading function comment with type params (#12447)
This commit is contained in:
parent
3ace12943e
commit
ed238e0c76
5 changed files with 141 additions and 4 deletions
|
@ -224,3 +224,25 @@ class QuerySet(AltersData):
|
|||
|
||||
as_manager.queryset_only = True
|
||||
as_manager = classmethod(as_manager)
|
||||
|
||||
|
||||
# Decorators
|
||||
@decorator
|
||||
# comment
|
||||
class Foo1: ...
|
||||
|
||||
@decorator
|
||||
# comment
|
||||
class Foo2(Foo1): ...
|
||||
|
||||
@decorator
|
||||
# comment
|
||||
class Foo3[T]: ...
|
||||
|
||||
@decorator # comment
|
||||
class Foo4: ...
|
||||
|
||||
@decorator
|
||||
# comment
|
||||
@decorato2
|
||||
class Foo5: ...
|
||||
|
|
|
@ -436,3 +436,25 @@ def function_with_variadic_generics(*args: *tuple[int],): ...
|
|||
|
||||
# Generic arguments (PEP 695)
|
||||
def func[T](lotsoflongargs: T, lotsoflongargs2: T, lotsoflongargs3: T, lotsoflongargs4: T, lotsoflongargs5: T) -> T: ...
|
||||
|
||||
|
||||
# Decorators
|
||||
@decorator
|
||||
# comment
|
||||
def foo[S](x: S) -> S: ...
|
||||
|
||||
@decorator
|
||||
# comment
|
||||
def foo(x: S) -> S: ...
|
||||
|
||||
@decorator
|
||||
# comment
|
||||
def foo() -> S: ...
|
||||
|
||||
@decorator
|
||||
# comment
|
||||
@decorator2
|
||||
def foo(x: S) -> S: ...
|
||||
|
||||
@decorator # comment
|
||||
def foo(x: S) -> S: ...
|
||||
|
|
|
@ -1076,7 +1076,7 @@ fn handle_leading_function_with_decorators_comment(comment: DecoratedComment) ->
|
|||
|
||||
let is_following_parameters = comment
|
||||
.following_node()
|
||||
.is_some_and(|node| node.is_parameters());
|
||||
.is_some_and(|node| node.is_parameters() || node.is_type_params());
|
||||
|
||||
if comment.line_position().is_own_line() && is_preceding_decorator && is_following_parameters {
|
||||
CommentPlacement::dangling(comment.enclosing_node(), comment)
|
||||
|
|
|
@ -230,6 +230,28 @@ class QuerySet(AltersData):
|
|||
|
||||
as_manager.queryset_only = True
|
||||
as_manager = classmethod(as_manager)
|
||||
|
||||
|
||||
# Decorators
|
||||
@decorator
|
||||
# comment
|
||||
class Foo1: ...
|
||||
|
||||
@decorator
|
||||
# comment
|
||||
class Foo2(Foo1): ...
|
||||
|
||||
@decorator
|
||||
# comment
|
||||
class Foo3[T]: ...
|
||||
|
||||
@decorator # comment
|
||||
class Foo4: ...
|
||||
|
||||
@decorator
|
||||
# comment
|
||||
@decorato2
|
||||
class Foo5: ...
|
||||
```
|
||||
|
||||
## Output
|
||||
|
@ -489,7 +511,30 @@ class QuerySet(AltersData):
|
|||
|
||||
as_manager.queryset_only = True
|
||||
as_manager = classmethod(as_manager)
|
||||
|
||||
|
||||
# Decorators
|
||||
@decorator
|
||||
# comment
|
||||
class Foo1: ...
|
||||
|
||||
|
||||
@decorator
|
||||
# comment
|
||||
class Foo2(Foo1): ...
|
||||
|
||||
|
||||
@decorator
|
||||
# comment
|
||||
class Foo3[T]: ...
|
||||
|
||||
|
||||
@decorator # comment
|
||||
class Foo4: ...
|
||||
|
||||
|
||||
@decorator
|
||||
# comment
|
||||
@decorato2
|
||||
class Foo5: ...
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -442,6 +442,28 @@ def function_with_variadic_generics(*args: *tuple[int],): ...
|
|||
|
||||
# Generic arguments (PEP 695)
|
||||
def func[T](lotsoflongargs: T, lotsoflongargs2: T, lotsoflongargs3: T, lotsoflongargs4: T, lotsoflongargs5: T) -> T: ...
|
||||
|
||||
|
||||
# Decorators
|
||||
@decorator
|
||||
# comment
|
||||
def foo[S](x: S) -> S: ...
|
||||
|
||||
@decorator
|
||||
# comment
|
||||
def foo(x: S) -> S: ...
|
||||
|
||||
@decorator
|
||||
# comment
|
||||
def foo() -> S: ...
|
||||
|
||||
@decorator
|
||||
# comment
|
||||
@decorator2
|
||||
def foo(x: S) -> S: ...
|
||||
|
||||
@decorator # comment
|
||||
def foo(x: S) -> S: ...
|
||||
```
|
||||
|
||||
## Output
|
||||
|
@ -1041,6 +1063,32 @@ def func[T](
|
|||
lotsoflongargs4: T,
|
||||
lotsoflongargs5: T,
|
||||
) -> T: ...
|
||||
|
||||
|
||||
# Decorators
|
||||
@decorator
|
||||
# comment
|
||||
def foo[S](x: S) -> S: ...
|
||||
|
||||
|
||||
@decorator
|
||||
# comment
|
||||
def foo(x: S) -> S: ...
|
||||
|
||||
|
||||
@decorator
|
||||
# comment
|
||||
def foo() -> S: ...
|
||||
|
||||
|
||||
@decorator
|
||||
# comment
|
||||
@decorator2
|
||||
def foo(x: S) -> S: ...
|
||||
|
||||
|
||||
@decorator # comment
|
||||
def foo(x: S) -> S: ...
|
||||
```
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue