Skip to content

Commit

Permalink
Use function name as range for B024
Browse files Browse the repository at this point in the history
  • Loading branch information
charliermarsh committed May 24, 2023
1 parent 8c92154 commit ddb5ebc
Show file tree
Hide file tree
Showing 3 changed files with 63 additions and 1 deletion.
8 changes: 8 additions & 0 deletions crates/ruff/resources/test/fixtures/flake8_bugbear/B027.py
Original file line number Diff line number Diff line change
Expand Up @@ -120,3 +120,11 @@ def empty_1(self, foo: float):
@abstractmethod
def empty_1(self, foo: Union[str, int, list, float]):
...


from dataclasses import dataclass


@dataclass
class Foo(ABC): # noqa: B024
...
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ use rustpython_parser::ast::{self, Constant, Expr, Keyword, Ranged, Stmt};

use ruff_diagnostics::{Diagnostic, Violation};
use ruff_macros::{derive_message_formats, violation};
use ruff_python_ast::helpers::identifier_range;
use ruff_python_semantic::analyze::visibility::{is_abstract, is_overload};
use ruff_python_semantic::model::SemanticModel;

Expand Down Expand Up @@ -133,7 +134,7 @@ pub(crate) fn abstract_base_class(
AbstractBaseClassWithoutAbstractMethod {
name: name.to_string(),
},
stmt.range(),
identifier_range(stmt, checker.locator),
));
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
---
source: crates/ruff/src/rules/flake8_bugbear/mod.rs
assertion_line: 57
---
B024.py:18:7: B024 `Base_1` is an abstract base class, but it has no abstract methods
|
18 | class Base_1(ABC): # error
| ^^^^^^ B024
19 | def method(self):
20 | foo()
|

B024.py:71:7: B024 `MetaBase_1` is an abstract base class, but it has no abstract methods
|
71 | class MetaBase_1(metaclass=ABCMeta): # error
| ^^^^^^^^^^ B024
72 | def method(self):
73 | foo()
|

B024.py:82:7: B024 `abc_Base_1` is an abstract base class, but it has no abstract methods
|
82 | class abc_Base_1(abc.ABC): # error
| ^^^^^^^^^^ B024
83 | def method(self):
84 | foo()
|

B024.py:87:7: B024 `abc_Base_2` is an abstract base class, but it has no abstract methods
|
87 | class abc_Base_2(metaclass=abc.ABCMeta): # error
| ^^^^^^^^^^ B024
88 | def method(self):
89 | foo()
|

B024.py:92:7: B024 `notabc_Base_1` is an abstract base class, but it has no abstract methods
|
92 | class notabc_Base_1(notabc.ABC): # error
| ^^^^^^^^^^^^^ B024
93 | def method(self):
94 | foo()
|

B024.py:141:7: B024 `abc_set_class_variable_4` is an abstract base class, but it has no abstract methods
|
141 | # this doesn't actually declare a class variable, it's just an expression
142 | class abc_set_class_variable_4(ABC): # error
| ^^^^^^^^^^^^^^^^^^^^^^^^ B024
143 | foo
|


0 comments on commit ddb5ebc

Please sign in to comment.