Skip to content

Commit 3b89d23

Browse files
committed
Fixing logic in Repl and ScriptExecutor to properly propagate imports and references from Script Libraries
1 parent b6f0ce1 commit 3b89d23

2 files changed

Lines changed: 10 additions & 7 deletions

File tree

src/ScriptCs.Core/Repl.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,10 @@ public override ScriptResult Execute(string script, params string[] scriptArgs)
114114
? preProcessResult.Code
115115
: Buffer + Environment.NewLine + preProcessResult.Code;
116116

117-
var result = ScriptEngine.Execute(Buffer, _scriptArgs, References, Namespaces, ScriptPackSession);
117+
var namespaces = Namespaces.Union(preProcessResult.Namespaces);
118+
var references = References.Union(preProcessResult.References);
119+
120+
var result = ScriptEngine.Execute(Buffer, _scriptArgs, references, namespaces, ScriptPackSession);
118121
if (result == null) return ScriptResult.Empty;
119122

120123
if (result.CompileExceptionInfo != null)

src/ScriptCs.Core/ScriptExecutor.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -167,26 +167,26 @@ public virtual ScriptResult Execute(string script, params string[] scriptArgs)
167167
{
168168
var path = Path.IsPathRooted(script) ? script : Path.Combine(FileSystem.CurrentDirectory, script);
169169
var result = FilePreProcessor.ProcessFile(path);
170-
References = References.Union(result.References);
171-
var namespaces = Namespaces.Union(result.Namespaces);
172170
ScriptEngine.FileName = Path.GetFileName(path);
173171

174172
Logger.Debug("Starting execution in engine");
175173

176174
InjectScriptLibraries(Path.GetDirectoryName(path), result, ScriptPackSession.State);
177-
return ScriptEngine.Execute(result.Code, scriptArgs, References, namespaces, ScriptPackSession);
175+
var namespaces = Namespaces.Union(result.Namespaces);
176+
var references = References.Union(result.References);
177+
return ScriptEngine.Execute(result.Code, scriptArgs, references, namespaces, ScriptPackSession);
178178
}
179179

180180
public virtual ScriptResult ExecuteScript(string script, params string[] scriptArgs)
181181
{
182182
var result = FilePreProcessor.ProcessScript(script);
183-
References = References.Union(result.References);
184-
var namespaces = Namespaces.Union(result.Namespaces);
185183

186184
Logger.Debug("Starting execution in engine");
187185

188186
InjectScriptLibraries(FileSystem.CurrentDirectory, result, ScriptPackSession.State);
189-
return ScriptEngine.Execute(result.Code, scriptArgs, References, namespaces, ScriptPackSession);
187+
var namespaces = Namespaces.Union(result.Namespaces);
188+
var references = References.Union(result.References);
189+
return ScriptEngine.Execute(result.Code, scriptArgs, references, namespaces, ScriptPackSession);
190190
}
191191

192192
protected internal virtual void InjectScriptLibraries(

0 commit comments

Comments
 (0)