mirror of
https://github.com/luau-lang/luau.git
synced 2024-12-13 13:30:40 +00:00
Use correct globalScope in on demand type checker (#923)
Fixes #922 Unsure if this needs to be put behind another FFlag, since the on demand type checker fflag currently exists
This commit is contained in:
parent
45c6476d41
commit
8d8c7974f5
2 changed files with 26 additions and 1 deletions
|
@ -38,6 +38,7 @@ LUAU_FASTFLAGVARIABLE(DebugLuauLogSolverToJson, false)
|
||||||
LUAU_FASTFLAG(LuauRequirePathTrueModuleName)
|
LUAU_FASTFLAG(LuauRequirePathTrueModuleName)
|
||||||
LUAU_FASTFLAGVARIABLE(DebugLuauReadWriteProperties, false)
|
LUAU_FASTFLAGVARIABLE(DebugLuauReadWriteProperties, false)
|
||||||
LUAU_FASTFLAGVARIABLE(LuauSplitFrontendProcessing, false)
|
LUAU_FASTFLAGVARIABLE(LuauSplitFrontendProcessing, false)
|
||||||
|
LUAU_FASTFLAGVARIABLE(LuauTypeCheckerUseCorrectScope, false)
|
||||||
|
|
||||||
namespace Luau
|
namespace Luau
|
||||||
{
|
{
|
||||||
|
@ -1397,7 +1398,9 @@ ModulePtr Frontend::check(const SourceModule& sourceModule, Mode mode, std::vect
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
TypeChecker typeChecker(globals.globalScope, forAutocomplete ? &moduleResolverForAutocomplete : &moduleResolver, builtinTypes, &iceHandler);
|
TypeChecker typeChecker(FFlag::LuauTypeCheckerUseCorrectScope ? (forAutocomplete ? globalsForAutocomplete.globalScope : globals.globalScope)
|
||||||
|
: globals.globalScope,
|
||||||
|
forAutocomplete ? &moduleResolverForAutocomplete : &moduleResolver, builtinTypes, &iceHandler);
|
||||||
|
|
||||||
if (prepareModuleScope)
|
if (prepareModuleScope)
|
||||||
{
|
{
|
||||||
|
|
|
@ -3503,4 +3503,26 @@ local a: T@1
|
||||||
CHECK_EQ(ac.context, AutocompleteContext::Type);
|
CHECK_EQ(ac.context, AutocompleteContext::Type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_CASE_FIXTURE(ACFixture, "frontend_use_correct_global_scope")
|
||||||
|
{
|
||||||
|
ScopedFastFlag sff("LuauTypeCheckerUseCorrectScope", true);
|
||||||
|
|
||||||
|
loadDefinition(R"(
|
||||||
|
declare class Instance
|
||||||
|
Name: string
|
||||||
|
end
|
||||||
|
)");
|
||||||
|
|
||||||
|
CheckResult result = check(R"(
|
||||||
|
local a: unknown = nil
|
||||||
|
if typeof(a) == "Instance" then
|
||||||
|
local b = a.@1
|
||||||
|
end
|
||||||
|
)");
|
||||||
|
auto ac = autocomplete('1');
|
||||||
|
|
||||||
|
CHECK_EQ(1, ac.entryMap.size());
|
||||||
|
CHECK(ac.entryMap.count("Name"));
|
||||||
|
}
|
||||||
|
|
||||||
TEST_SUITE_END();
|
TEST_SUITE_END();
|
||||||
|
|
Loading…
Reference in a new issue