From b3dcab95ecb0ae5ebe3c58db076865dc84a40ed3 Mon Sep 17 00:00:00 2001 From: JohnnyMorganz Date: Tue, 9 May 2023 16:04:36 +0100 Subject: [PATCH] Add test case --- tests/Frontend.test.cpp | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/tests/Frontend.test.cpp b/tests/Frontend.test.cpp index 0b9c872c..0d38dc87 100644 --- a/tests/Frontend.test.cpp +++ b/tests/Frontend.test.cpp @@ -1146,4 +1146,37 @@ TEST_CASE_FIXTURE(BuiltinsFixture, "module_scope_check") CHECK_EQ(toString(ty), "number"); } +TEST_CASE_FIXTURE(BuiltinsFixture, "use_correct_global_scope") +{ + GlobalTypes& globals = frontend.globalsForAutocomplete; + unfreeze(globals.globalTypes); + LoadDefinitionFileResult definitionsResult = frontend.loadDefinitionFile(globals, globals.globalScope, R"( + declare class Instance + end + )", + "@test", /* captureComments */ false); + freeze(globals.globalTypes); + if (definitionsResult.module) + dumpErrors(definitionsResult.module); + REQUIRE_MESSAGE(definitionsResult.success, "loadDefinition: unable to load definition file"); + + fileResolver.source["game/A"] = R"( + --!strict + local a: unknown = nil + if typeof(a) == "Instance" then + local b = a + end + )"; + + CheckResult result = frontend.check("game/A", FrontendOptions{false, true}); + LUAU_REQUIRE_NO_ERRORS(result); + + auto module = frontend.moduleResolverForAutocomplete.getModule("game/A"); + REQUIRE(module); + + auto ty = Luau::findTypeAtPosition(*module, *frontend.getSourceModule("game/A"), Luau::Position{4, 22}); + REQUIRE(ty); + CHECK_EQ(toString(*ty), "Instance"); +} + TEST_SUITE_END();