From 7a4eb9525e3b05631baec1df004b47c841e193ef Mon Sep 17 00:00:00 2001 From: Arman Bilge Date: Sat, 16 Apr 2022 15:51:25 +0000 Subject: [PATCH] Warn if falling back to setTimeout in dev mode --- .../org/scalajs/macrotaskexecutor/MacrotaskExecutor.scala | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/core/src/main/scala/org/scalajs/macrotaskexecutor/MacrotaskExecutor.scala b/core/src/main/scala/org/scalajs/macrotaskexecutor/MacrotaskExecutor.scala index c70cacd..9cda492 100644 --- a/core/src/main/scala/org/scalajs/macrotaskexecutor/MacrotaskExecutor.scala +++ b/core/src/main/scala/org/scalajs/macrotaskexecutor/MacrotaskExecutor.scala @@ -18,6 +18,7 @@ package org.scalajs.macrotaskexecutor import scala.collection.mutable import scala.concurrent.{ExecutionContext, ExecutionContextExecutor} +import scala.scalajs.LinkingInfo import scala.scalajs.js import scala.util.Random import scala.util.control.NonFatal @@ -152,6 +153,13 @@ object MacrotaskExecutor extends ExecutionContextExecutor { // we don't try to look for process.nextTick since scalajs doesn't support old node // we're also not going to bother fast-pathing for IE6; just fall through + if (LinkingInfo.developmentMode) { + if (js.typeOf(js.Dynamic.global.console) != Undefined && js.typeOf(js.Dynamic.global.console.warn) != Undefined) + js.Dynamic.global.console.warn( + "Unable to polyfill setImmediate() in this environment so falling back to setTimeout(); this may affect performance. " + + "See https://github.com/scala-js/scala-js-macrotask-executor for more information.") + } + { k => js.Dynamic.global.setTimeout(k, 0) ()