Skip to content

Commit

Permalink
Replaced missing rlang functions
Browse files Browse the repository at this point in the history
Use the development rlang functions now. Resolves #1.
  • Loading branch information
mailund committed Feb 8, 2018
1 parent 5d31bca commit a7a952b
Showing 1 changed file with 10 additions and 26 deletions.
36 changes: 10 additions & 26 deletions R/loop-transformation.R
Original file line number Diff line number Diff line change
@@ -1,20 +1,4 @@

# FIXME: replace these with the rlang:: versions once the 1.7 release is out
# Functions to be replaced later.
FIXME_rlang_call_name <- function(call) {
call <- rlang::get_expr(call)
if (!rlang::is_lang(call)) {
abort("`call` must be a call or must wrap a call (e.g. in a quosure)")
}
as.character(call[[1]])
}
FIXME_rlang_call_args <- function(call) {
call <- rlang::get_expr(call)
args <- as.list(call[-1])
rlang::set_names((args), rlang::names2(args))
}
# FIXME: end rlang

## Test for possibility of transformation #########################################

# I need to import these for CHECK to work, so I might as well do it here...
Expand Down Expand Up @@ -80,8 +64,8 @@ can_transform_rec <- function(expr, fun_name, fun_call_allowed, cc) {
return(TRUE)
} else {
stopifnot(rlang::is_lang(expr))
call_name <- FIXME_rlang_call_name(expr)
call_arguments <- FIXME_rlang_call_args(expr)
call_name <- rlang::call_name(expr)
call_arguments <- rlang::call_args(expr)
can_call_be_transformed(call_name, call_arguments, fun_name, fun_call_allowed, cc)
}
}
Expand Down Expand Up @@ -173,8 +157,8 @@ can_loop_transform <- function(fun) {
#' @param in_function_parameter Is the expression part of a parameter to a function call?
#' @return A modified expression.
make_returns_explicit_call <- function(call_expr, in_function_parameter) {
call_name <- FIXME_rlang_call_name(call_expr)
call_args <- FIXME_rlang_call_args(call_expr)
call_name <- rlang::call_name(call_expr)
call_args <- rlang::call_args(call_expr)

switch(call_name,
# For if-statments we need to treat the condition as in a call
Expand All @@ -197,7 +181,7 @@ make_returns_explicit_call <- function(call_expr, in_function_parameter) {
# For all other calls we transform the arguments inside a call context.
{
for (i in seq_along(call_args)) {
call_expr[[i + 1]] <- make_returns_explicit(call_args[[i]], TRUE)
# call_expr[[i + 1]] <- make_returns_explicit(call_args[[i]], TRUE)
}
if (!in_function_parameter) # if we weren't parameters, we are a value to be returned
call_expr <- rlang::call2("return", call_expr)
Expand Down Expand Up @@ -273,16 +257,16 @@ transform_recursive_calls <- function(expr, fun_name, fun) {

} else {
stopifnot(rlang::is_lang(expr))
call_name <- FIXME_rlang_call_name(expr)
call_name <- rlang::call_name(expr)
if (call_name == "return") {
if (rlang::is_lang(expr[[2]])) {
call_name <- FIXME_rlang_call_name(expr[[2]])
call_name <- rlang::call_name(expr[[2]])
if (call_name == fun_name) {
return(translate_recursive_call_into_next(expr[[2]], fun))
}
}
}
expr_args <- FIXME_rlang_call_args(expr)
expr_args <- rlang::call_args(expr)
for (i in seq_along(expr_args)) {
expr[[i + 1]] <- transform_recursive_calls(expr_args[[i]], fun_name, fun)
}
Expand All @@ -301,11 +285,11 @@ simplify_nested_blocks <- function(expr) {

} else {
stopifnot(rlang::is_lang(expr))
call_name <- FIXME_rlang_call_name(expr)
call_name <- rlang::call_name(expr)
if (call_name == "{" && length(expr) == 2) {
simplify_nested_blocks(expr[[2]])
} else {
args <- FIXME_rlang_call_args(expr)
args <- rlang::call_args(expr)
for (i in seq_along(args)) {
expr[[i + 1]] <- simplify_nested_blocks(args[[i]])
}
Expand Down

0 comments on commit a7a952b

Please sign in to comment.