From 7ac854dba93d48aefbca2fc6915780cb6fa373d1 Mon Sep 17 00:00:00 2001 From: HawDevelopment Date: Wed, 10 Aug 2022 13:39:30 +0200 Subject: [PATCH] Fix merge --- Analysis/src/Frontend.cpp | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/Analysis/src/Frontend.cpp b/Analysis/src/Frontend.cpp index 607a90b8..2970be41 100644 --- a/Analysis/src/Frontend.cpp +++ b/Analysis/src/Frontend.cpp @@ -134,6 +134,36 @@ LoadDefinitionFileResult Frontend::loadDefinitionFile(std::string_view source, c return LoadDefinitionFileResult{true, parseResult, checkedModule}; } +LoadDefinitionFileResult loadDefinitionFile(TypeChecker& typeChecker, ScopePtr targetScope, std::string_view source, const std::string& packageName) +{ + LUAU_TIMETRACE_SCOPE("loadDefinitionFile", "Frontend"); + + Luau::Allocator allocator; + Luau::AstNameTable names(allocator); + + ParseOptions options; + options.allowDeclarationSyntax = true; + + Luau::ParseResult parseResult = Luau::Parser::parse(source.data(), source.size(), names, allocator, options); + + if (parseResult.errors.size() > 0) + return LoadDefinitionFileResult{false, parseResult, nullptr}; + + Luau::SourceModule module; + module.root = parseResult.root; + module.mode = Mode::Definition; + + ModulePtr checkedModule = typeChecker.check(module, Mode::Definition); + + if (checkedModule->errors.size() > 0) + return LoadDefinitionFileResult{false, parseResult, checkedModule}; + + loadModuleIntoScope(typeChecker, checkedModule, targetScope, packageName); + + return LoadDefinitionFileResult{true, parseResult, checkedModule}; +} + + std::vector parsePathExpr(const AstExpr& pathExpr) { const AstExprIndexName* indexName = pathExpr.as();