@@ -659,7 +659,7 @@ getExpression <- function(future, ...) UseMethod("getExpression")
659659getExpression.Future <- local({
660660 tmpl_expr_evaluate2 <- bquote_compile({
661661 # # Evaluate future
662- future ::: evalFuture(core = .(core ), local = .(local ), stdout = .(stdout ), conditionClasses = .(conditionClasses ), split = .(split ), immediateConditions = .( immediateConditions ), immediateConditionClasses = .(immediateConditionClasses ), strategiesR = .(strategiesR ), forwardOptions = .(forwardOptions ), threads = .(threads ), cleanup = .(cleanup ))
662+ future ::: evalFuture(core = .(core ), local = .(local ), stdout = .(stdout ), conditionClasses = .(conditionClasses ), split = .(split ), immediateConditionClasses = .(immediateConditionClasses ), strategiesR = .(strategiesR ), forwardOptions = .(forwardOptions ), threads = .(threads ), cleanup = .(cleanup ))
663663 })
664664
665665 function (future , expr = future $ expr , conditionClasses = future $ conditions , immediateConditions = FALSE , mc.cores = NULL , threads = NA_integer_ , cleanup = TRUE , ... ) {
@@ -679,9 +679,6 @@ getExpression.Future <- local({
679679 sQuote(version )))
680680 }
681681
682- # # Globals needed by the future
683- globals <- globals(future )
684-
685682 # # Packages needed by the future
686683 pkgs <- packages(future )
687684 if (length(pkgs ) > 0 ) {
@@ -716,21 +713,25 @@ getExpression.Future <- local({
716713 # # Create a future core
717714 core <- list (
718715 expr = expr ,
719- globals = globals ,
716+ globals = globals( future ) ,
720717 packages = pkgs ,
721718 seed = future $ seed
722719 )
723720
724- if (immediateConditions && ! is.null(conditionClasses )) {
721+ # # Does the backend support immediate relaying of conditions?
722+ if (immediateConditions ) {
725723 immediateConditionClasses <- getOption(" future.relay.immediate" , " immediateCondition" )
726- conditionClassesExclude <- attr(conditionClasses , " exclude" , exact = TRUE )
724+ } else {
725+ immediateConditionClasses <- character (0L )
726+ }
727+
728+ if (length(immediateConditionClasses ) > 0 && ! is.null(conditionClasses )) {
729+ exclude <- attr(conditionClasses , " exclude" , exact = TRUE )
727730 muffleInclude <- attr(conditionClasses , " muffleInclude" , exact = TRUE )
728731 if (is.null(muffleInclude )) muffleInclude <- " ^muffle"
729732 conditionClasses <- unique(c(conditionClasses , immediateConditionClasses ))
730- attr(conditionClasses , " exclude" ) <- conditionClassesExclude
733+ attr(conditionClasses , " exclude" ) <- exclude
731734 attr(conditionClasses , " muffleInclude" ) <- muffleInclude
732- } else {
733- immediateConditionClasses <- character (0L )
734735 }
735736
736737 forwardOptions <- list (
0 commit comments