# will produce lints
code <- "if (A) {\n stop('A is bad!')\n} else {\n do_good()\n}"
writeLines(code)
lint(
text = code,
linters = unnecessary_nesting_linter()
)
code <- "tryCatch(\n {\n foo()\n },\n error = identity\n)"
writeLines(code)
lint(
text = code,
linters = unnecessary_nesting_linter()
)
code <- "expect_warning(\n {\n x <- foo()\n },\n 'warned'\n)"
writeLines(code)
lint(
text = code,
linters = unnecessary_nesting_linter(allow_assignment = FALSE)
)
code <- "if (x) { \n if (y) { \n return(1L) \n } \n}"
writeLines(code)
lint(
text = code,
linters = unnecessary_nesting_linter()
)
lint(
text = "my_quote({x})",
linters = unnecessary_nesting_linter()
)
code <- paste(
"if (A) {",
" stop('A is bad because a.')",
"} else {",
" warning('!A requires caution.')",
"}",
sep = "\n"
)
writeLines(code)
lint(
text = code,
linters = unnecessary_nesting_linter()
)
# okay
code <- "if (A) {\n stop('A is bad because a.')\n} else {\n stop('!A is bad too.')\n}"
writeLines(code)
lint(
text = code,
linters = unnecessary_nesting_linter()
)
code <- "capture.output({\n foo()\n})"
writeLines(code)
lint(
text = code,
linters = unnecessary_nesting_linter()
)
code <- "expect_warning(\n {\n x <- foo()\n },\n 'warned'\n)"
writeLines(code)
lint(
text = code,
linters = unnecessary_nesting_linter()
)
code <- "if (x && y) { \n return(1L) \n}"
writeLines(code)
lint(
text = code,
linters = unnecessary_nesting_linter()
)
code <- "if (x) { \n y <- x + 1L\n if (y) { \n return(1L) \n } \n}"
writeLines(code)
lint(
text = code,
linters = unnecessary_nesting_linter()
)
lint(
text = "my_quote({x})",
linters = unnecessary_nesting_linter(allow_functions = "my_quote")
)
code <- paste(
"if (A) {",
" stop('A is bad because a.')",
"} else {",
" warning('!A requires caution.')",
"}",
sep = "\n"
)
writeLines(code)
lint(
text = code,
linters = unnecessary_nesting_linter(branch_exit_calls = c("stop", "warning"))
)
Run the code above in your browser using DataLab