Without having dug into the details, it could be that one could update the parser by making a 'return' a keyword and require it to be followed by a parenthesis that optionally contains an expression followed by end of statement (newline or semicolon). Such a "promotion" of the 'return' statement seems backward compatible and would end up throwing syntax errors on:
function() return function() return 2*x function() return (2*x) + 1 while still accepting: function() return() function() return(2*x) function() return((2*x) + 1) Just my two Friday cents /Henrik On Fri, Nov 20, 2020 at 3:37 PM Dénes Tóth <toth.de...@kogentum.hu> wrote: > > Yes, the behaviour of return() is absolutely consistent. I am wondering > though how many experienced R developers would predict the correct > return value just by looking at those code snippets. > > On 11/21/20 12:33 AM, Gabriel Becker wrote: > > And the related: > > > > > f = function() stop(return("lol")) > > > > > f() > > > > [1] "lol" > > > > > > I have a feeling all of this is just return() performing correctly > > though. If there are already R CMD CHECK checks for this kind of thing > > (I wasnt sure but I'm hearing from others there may be/are) that may be > > (and/or may need to be) sufficient. > > > > ~G > > > > On Fri, Nov 20, 2020 at 3:27 PM Dénes Tóth <toth.de...@kogentum.hu > > <mailto:toth.de...@kogentum.hu>> wrote: > > > > Or even more illustratively: > > > > uneval_after_return <- function(x) { > > return(x) * stop("Not evaluated") > > } > > uneval_after_return(1) > > # [1] 1 > > > > On 11/20/20 10:12 PM, Mateo Obregón wrote: > > > Dear r-developers- > > > > > > After many years of using and coding in R and other languages, I > > came across > > > something that I think should be flagged by the parser: > > > > > > bug <- function (x) { > > > return (x + 1) * 1000 > > > } > > >> bug(1) > > > [1] 2 > > > > > > The return() call is not like any other function call that > > returns a value to > > > the point where it was called from. I think this should > > straightforwardly be > > > handled in the parser by flagging it as a syntactic error. > > > > > > Thoughts? > > > > > > Mateo. > > > -- > > > Mateo Obregón. > > > > > > ______________________________________________ > > > R-devel@r-project.org <mailto:R-devel@r-project.org> mailing list > > > https://stat.ethz.ch/mailman/listinfo/r-devel > > > > > > > ______________________________________________ > > R-devel@r-project.org <mailto:R-devel@r-project.org> mailing list > > https://stat.ethz.ch/mailman/listinfo/r-devel > > > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel