diff --git a/Upsilon/Binder/Binder.cs b/Upsilon/Binder/Binder.cs index d39a5ff..cd1064b 100644 --- a/Upsilon/Binder/Binder.cs +++ b/Upsilon/Binder/Binder.cs @@ -248,11 +248,20 @@ namespace Upsilon.Binder { var moduleName = be.Value.ToString(); var module = _script.Options.ModuleHandler.GetModule(_script, moduleName); - foreach (var moduleVariable in module.Scope.Variables) + if (module == null) { - if (moduleVariable.Value.Local) - continue; - Scope.AssignToNearest(moduleVariable.Value); + _diagnostics.LogError( + $"Can't find module '{moduleName}' in folder '{_script.Options.ScriptLoader.ModulesPath}'", + parameter.Span); + } + else + { + foreach (var moduleVariable in module.Scope.Variables) + { + if (moduleVariable.Value.Local) + continue; + Scope.AssignToNearest(moduleVariable.Value); + } } } } diff --git a/Upsilon/ModuleHandler.cs b/Upsilon/ModuleHandler.cs index be6da39..7c61ec5 100644 --- a/Upsilon/ModuleHandler.cs +++ b/Upsilon/ModuleHandler.cs @@ -14,6 +14,8 @@ namespace Upsilon return module; var moduleScript = script.Options.ScriptLoader.LoadModule(name); + if (moduleScript == null) + return null; var parsed = Executor.ContinueWith(script, moduleScript); module = parsed.Bind(); _cachedModules.Add(name, module); diff --git a/Upsilon/StandardLibraries/BasicFunctions.cs b/Upsilon/StandardLibraries/BasicFunctions.cs index 9c8c2a6..9d189c2 100644 --- a/Upsilon/StandardLibraries/BasicFunctions.cs +++ b/Upsilon/StandardLibraries/BasicFunctions.cs @@ -47,6 +47,10 @@ namespace Upsilon.StandardLibraries { var file = fileName.Value; var module = script.Options.ModuleHandler.GetModule(script, file); + if (module == null) + { + throw new Exception($"Unable to load module {file} at path {script.Options.ScriptLoader.ModulesPath}"); + } var s = Executor.ContinueWith(script, module); var val = s.Evaluate(); return val != null ? val.ToScriptType() : new ScriptNull();