Include module name for definitions files

This commit is contained in:
JohnnyMorganz 2023-03-13 19:07:50 +00:00
parent 1fa8311a18
commit d36b5f7dee

View file

@ -32,6 +32,7 @@ LUAU_FASTFLAGVARIABLE(LuauKnowsTheDataModel3, false)
LUAU_FASTINTVARIABLE(LuauAutocompleteCheckTimeoutMs, 100) LUAU_FASTINTVARIABLE(LuauAutocompleteCheckTimeoutMs, 100)
LUAU_FASTFLAGVARIABLE(DebugLuauDeferredConstraintResolution, false) LUAU_FASTFLAGVARIABLE(DebugLuauDeferredConstraintResolution, false)
LUAU_FASTFLAGVARIABLE(LuauDefinitionFileSourceModule, false) LUAU_FASTFLAGVARIABLE(LuauDefinitionFileSourceModule, false)
LUAU_FASTFLAGVARIABLE(LuauDefinitionFileSetModuleName, true)
LUAU_FASTFLAGVARIABLE(DebugLuauLogSolverToJson, false); LUAU_FASTFLAGVARIABLE(DebugLuauLogSolverToJson, false);
namespace Luau namespace Luau
@ -102,6 +103,8 @@ LoadDefinitionFileResult Frontend::loadDefinitionFile(std::string_view source, c
if (parseResult.errors.size() > 0) if (parseResult.errors.size() > 0)
return LoadDefinitionFileResult{false, parseResult, sourceModule, nullptr}; return LoadDefinitionFileResult{false, parseResult, sourceModule, nullptr};
if (FFlag::LuauDefinitionFileSetModuleName)
sourceModule.name = packageName;
sourceModule.root = parseResult.root; sourceModule.root = parseResult.root;
sourceModule.mode = Mode::Definition; sourceModule.mode = Mode::Definition;
@ -160,6 +163,8 @@ LoadDefinitionFileResult loadDefinitionFile_DEPRECATED(
return LoadDefinitionFileResult{false, parseResult, {}, nullptr}; return LoadDefinitionFileResult{false, parseResult, {}, nullptr};
Luau::SourceModule module; Luau::SourceModule module;
if (FFlag::LuauDefinitionFileSetModuleName)
module.name = packageName;
module.root = parseResult.root; module.root = parseResult.root;
module.mode = Mode::Definition; module.mode = Mode::Definition;
@ -220,6 +225,8 @@ LoadDefinitionFileResult loadDefinitionFile(TypeChecker& typeChecker, GlobalType
if (parseResult.errors.size() > 0) if (parseResult.errors.size() > 0)
return LoadDefinitionFileResult{false, parseResult, sourceModule, nullptr}; return LoadDefinitionFileResult{false, parseResult, sourceModule, nullptr};
if (FFlag::LuauDefinitionFileSetModuleName)
sourceModule.name = packageName;
sourceModule.root = parseResult.root; sourceModule.root = parseResult.root;
sourceModule.mode = Mode::Definition; sourceModule.mode = Mode::Definition;
@ -363,9 +370,11 @@ ErrorVec accumulateErrors(
Module& module = *it2->second; Module& module = *it2->second;
std::sort(module.errors.begin(), module.errors.end(), [](const TypeError& e1, const TypeError& e2) -> bool { std::sort(module.errors.begin(), module.errors.end(),
return e1.location.begin > e2.location.begin; [](const TypeError& e1, const TypeError& e2) -> bool
}); {
return e1.location.begin > e2.location.begin;
});
result.insert(result.end(), module.errors.begin(), module.errors.end()); result.insert(result.end(), module.errors.begin(), module.errors.end());
} }
@ -609,8 +618,9 @@ CheckResult Frontend::check(const ModuleName& name, std::optional<FrontendOption
const bool recordJsonLog = FFlag::DebugLuauLogSolverToJson && moduleName == name; const bool recordJsonLog = FFlag::DebugLuauLogSolverToJson && moduleName == name;
ModulePtr module = FFlag::DebugLuauDeferredConstraintResolution ? check(sourceModule, mode, requireCycles, /*forAutocomplete*/ false, recordJsonLog) ModulePtr module = FFlag::DebugLuauDeferredConstraintResolution
: typeChecker.check(sourceModule, mode, environmentScope); ? check(sourceModule, mode, requireCycles, /*forAutocomplete*/ false, recordJsonLog)
: typeChecker.check(sourceModule, mode, environmentScope);
stats.timeCheck += getTimestamp() - timestamp; stats.timeCheck += getTimestamp() - timestamp;
stats.filesStrict += mode == Mode::Strict; stats.filesStrict += mode == Mode::Strict;
@ -994,7 +1004,8 @@ ModulePtr check(const SourceModule& sourceModule, const std::vector<RequireCycle
return result; return result;
} }
ModulePtr Frontend::check(const SourceModule& sourceModule, Mode mode, std::vector<RequireCycle> requireCycles, bool forAutocomplete, bool recordJsonLog) ModulePtr Frontend::check(
const SourceModule& sourceModule, Mode mode, std::vector<RequireCycle> requireCycles, bool forAutocomplete, bool recordJsonLog)
{ {
return Luau::check(sourceModule, requireCycles, builtinTypes, NotNull{&iceHandler}, return Luau::check(sourceModule, requireCycles, builtinTypes, NotNull{&iceHandler},
NotNull{forAutocomplete ? &moduleResolverForAutocomplete : &moduleResolver}, NotNull{fileResolver}, NotNull{forAutocomplete ? &moduleResolverForAutocomplete : &moduleResolver}, NotNull{fileResolver},