[Rd] R package builder silently continues after unclosed brace

Andy Manka @ndy@m@nk@ @end|ng |rom gm@||@com
Fri Jan 24 19:43:17 CET 2020


If you start a function in one file but don't close it, the package
will still build if you manage to close it in a later file. Like so:

a.R
b.R
c.R

a.R:
function_a <- function(){
  print("this is function_a")
}

b.R:
function_b <- function(){
  print("unclosed function_b")
# no closing }

c.R:
function_c <- function(){
  print("function_c will be part of function_b")
}
#extra closing } to close function_b
}

--------

The package builder will import `a.R` and `b.R`. And because
function_b was never closed, `c.R` gets subsumed into function_b. It's
pretty hard to debug, and it means that a production implementation
depends on the file structure never changing. (If you define a
function across `b.R` and `d.R`, you can never add an R script that
starts with `c`.)

What's the benefit of letting functions be defined across files in the
package builder? Or is it an unintended side effect?

I suspect the code for all this is in:
/src/library/tools/R/build.R

but it's beyond me.

The command I ran is:
"C:\Program Files\R\R-3.6.2\bin\x64\Rcmd.exe" build "c:\path\to\package"



More information about the R-devel mailing list