diff --git a/NEWS.md b/NEWS.md index a3c1f665b..d6a1fc124 100644 --- a/NEWS.md +++ b/NEWS.md @@ -130,6 +130,7 @@ function calls. (#850, #851, @renkun-ken) * * `object_length_linter()` correctly detects generics and only counts the implementation class towards the length. This prevents false positive lints in the case of long generic names, e.g. `very_very_very_long_generic_name.short_class` no longer produces a lint (#871, @AshesITR) +* `object_name_linter()` now correctly detects assignment generics (#843, @jonkeane) # lintr 2.0.1 diff --git a/R/object_name_linters.R b/R/object_name_linters.R index 29077af85..05b60f2b1 100644 --- a/R/object_name_linters.R +++ b/R/object_name_linters.R @@ -62,11 +62,11 @@ object_name_linter <- function(styles = c("snake_case", "symbols")) { xml2::xml_text(assignments) ) - generics <- strip_names(c( + generics <- c( declared_s3_generics(xml), imported_s3_generics(namespace_imports(find_package(source_file$filename)))$fun, .base_s3_generics - )) + ) generics <- unique(generics[nzchar(generics)]) style_matches <- lapply(styles, function(style) { diff --git a/tests/testthat/dummy_packages/clean/R/clean_generics.R b/tests/testthat/dummy_packages/clean/R/clean_generics.R index 1578cb0d2..192d2ce15 100644 --- a/tests/testthat/dummy_packages/clean/R/clean_generics.R +++ b/tests/testthat/dummy_packages/clean/R/clean_generics.R @@ -31,3 +31,9 @@ drink_me.data.frame <- function(x, ...) { head.my_s3_object <- function(x, ...) { NULL } + +#' assign names for my_custom_class +#' @export +`names<-.my_custom_class` <- function(x, value) { + NULL +}