SLING-9320 - Allow precompiled units to access objects from the same bundle through the Use API

* the UseFunction should override the javax.script.filename in the context with the
dependency it's executing
diff --git a/src/main/java/org/apache/sling/scripting/sightly/js/impl/JsEnvironment.java b/src/main/java/org/apache/sling/scripting/sightly/js/impl/JsEnvironment.java
index d0fd050..31623f1 100644
--- a/src/main/java/org/apache/sling/scripting/sightly/js/impl/JsEnvironment.java
+++ b/src/main/java/org/apache/sling/scripting/sightly/js/impl/JsEnvironment.java
@@ -79,7 +79,6 @@
         CommonJsModule module = new CommonJsModule();
         Bindings scriptBindings = buildBindings(reader, globalBindings, arguments, module);
         scriptContext.setBindings(scriptBindings, ScriptContext.ENGINE_SCOPE);
-        scriptContext.setAttribute(ScriptEngine.FILENAME, reader.getScriptName(), ScriptContext.ENGINE_SCOPE);
         runScript(reader, scriptContext, callback, module);
     }
 
@@ -92,6 +91,7 @@
     private Bindings buildBindings(ScriptNameAwareReader reader, Bindings globalBindings, Bindings arguments, CommonJsModule commonJsModule) {
         Bindings bindings = new LazyBindings();
         bindings.putAll(engineBindings);
+        bindings.put(ScriptEngine.FILENAME, reader.getScriptName());
         UseFunction useFunction = new UseFunction(this, dependencyResolver, globalBindings, arguments);
         bindings.put(Variables.JS_USE, useFunction);
         bindings.put(Variables.MODULE, commonJsModule);
diff --git a/src/main/java/org/apache/sling/scripting/sightly/js/impl/JsUseProvider.java b/src/main/java/org/apache/sling/scripting/sightly/js/impl/JsUseProvider.java
index 7cc1902..1d5c3d6 100644
--- a/src/main/java/org/apache/sling/scripting/sightly/js/impl/JsUseProvider.java
+++ b/src/main/java/org/apache/sling/scripting/sightly/js/impl/JsUseProvider.java
@@ -100,7 +100,6 @@
             environment.initialize();
             ScriptNameAwareReader reader = dependencyResolver.resolve(globalBindings, identifier);
             if (reader != null) {
-                globalBindings.put(ScriptEngine.FILENAME, reader.getScriptName());
                 proxyAsyncScriptableFactory.registerProxies(slingScriptingResolver, environment, globalBindings);
                 AsyncContainer asyncContainer = environment.runScript(reader, globalBindings, arguments);
                 return ProviderOutcome.success(jsValueAdapter.adapt(asyncContainer));
diff --git a/src/main/java/org/apache/sling/scripting/sightly/js/impl/use/UseFunction.java b/src/main/java/org/apache/sling/scripting/sightly/js/impl/use/UseFunction.java
index 094e9fb..a936978 100644
--- a/src/main/java/org/apache/sling/scripting/sightly/js/impl/use/UseFunction.java
+++ b/src/main/java/org/apache/sling/scripting/sightly/js/impl/use/UseFunction.java
@@ -28,6 +28,7 @@
 import javax.script.ScriptEngine;
 
 import org.apache.commons.lang3.StringUtils;
+import org.apache.sling.api.scripting.LazyBindings;
 import org.apache.sling.scripting.core.ScriptNameAwareReader;
 import org.apache.sling.scripting.sightly.SightlyException;
 import org.apache.sling.scripting.sightly.js.impl.JsEnvironment;
@@ -88,15 +89,12 @@
                 String dependency = depNames.get(i);
                 ScriptNameAwareReader dependencyReader = dependencyResolver.resolve(globalBindings, dependency);
                 if (dependencyReader == null) {
-                    String caller = (String) globalBindings.get(ScriptEngine.FILENAME);
-                    if (StringUtils.isNotEmpty(caller)) {
-                        throw new SightlyException(String.format("Cannot locate use-function dependency %s from caller %s.", dependency,
-                                caller));
-                    } else {
-                        throw new SightlyException(String.format("Cannot locate use-function dependency %s.", dependencies));
-                    }
+                    throw new SightlyException("Cannot locate script " + dependency);
                 }
-                jsEnvironment.runScript(dependencyReader, globalBindings, Utils.EMPTY_BINDINGS, arg -> {
+                Bindings bindings = new LazyBindings();
+                bindings.putAll(globalBindings);
+                bindings.put(ScriptEngine.FILENAME, dependencyReader.getScriptName());
+                jsEnvironment.runScript(dependencyReader, bindings, Utils.EMPTY_BINDINGS, arg -> {
                     counter[0]--;
                     dependencies[dependencyPos] = arg;
                     if (counter[0] == 0) {