-
Notifications
You must be signed in to change notification settings - Fork 195
Closed
Labels
false-positivecode that shouldn't lint, but doescode that shouldn't lint, but does
Description
& and | are generics, so methods can be defined for which the output is not logical.
This is the case for base octmode class which has an & method to do bitwise-and (much like C/Python's &) and returns octmode (see ?"&.octmode"). As seen in base R:
if (is.null(extra_flags) && grepl("/(configure|cleanup)$", f) &&
(mode & "111") != as.octmode("111")) {
# ^ marked as a lint
warning(gettextf("file '%s' did not have execute permissions: corrected", f), domain = NA, call. = FALSE)
mode <- mode | "111"
}The giveaway here is that a comparison operator is used in the <expr> above & -- IINM vector_logic_linter() assumes parent infixes will be &/&&/|/||.
My first instinct was just to call this a known edge case & move on, because in general we can't swap && for all methods of &, but for this particular method we can detect it's fine statically.
Metadata
Metadata
Assignees
Labels
false-positivecode that shouldn't lint, but doescode that shouldn't lint, but does