// This file is part of the Luau programming language and is licensed under MIT License; see LICENSE.txt for details #pragma once #include #include #include namespace Luau { class AstExpr; using ModuleName = std::string; struct SourceCode { enum Type { None, Module, Script, Local }; std::string source; Type type; }; struct ModuleInfo { ModuleName name; bool optional = false; }; using RequireSuggestion = std::string; using RequireSuggestions = std::vector; struct FileResolver { virtual ~FileResolver() {} virtual std::optional readSource(const ModuleName& name) = 0; virtual std::optional resolveModule(const ModuleInfo* context, AstExpr* expr) { return std::nullopt; } virtual std::string getHumanReadableModuleName(const ModuleName& name) const { return name; } virtual std::optional getEnvironmentForModule(const ModuleName& name) const { return std::nullopt; } virtual std::optional getRequireSuggestions(const ModuleName& requirer, const std::optional& pathString) const { return std::nullopt; } }; struct NullFileResolver : FileResolver { std::optional readSource(const ModuleName& name) override { return std::nullopt; } }; } // namespace Luau