// This file is part of the Luau programming language and is licensed under MIT License; see LICENSE.txt for details #pragma once #include "Luau/Ast.h" #include "Luau/Parser.h" #include "Luau/AutocompleteTypes.h" #include "Luau/DenseHash.h" #include "Luau/Module.h" #include "Luau/Frontend.h" #include #include namespace Luau { struct FrontendOptions; struct FragmentAutocompleteAncestryResult { DenseHashMap localMap{AstName()}; std::vector localStack; std::vector ancestry; AstStat* nearestStatement = nullptr; }; struct FragmentParseResult { std::string fragmentToParse; AstStatBlock* root = nullptr; std::vector ancestry; AstStat* nearestStatement = nullptr; std::unique_ptr alloc = std::make_unique(); }; struct FragmentTypeCheckResult { ModulePtr incrementalModule = nullptr; ScopePtr freshScope; std::vector ancestry; }; struct FragmentAutocompleteResult { ModulePtr incrementalModule; Scope* freshScope; TypeArena arenaForAutocomplete; AutocompleteResult acResults; }; FragmentAutocompleteAncestryResult findAncestryForFragmentParse(AstStatBlock* root, const Position& cursorPos); FragmentParseResult parseFragment( const SourceModule& srcModule, std::string_view src, const Position& cursorPos, std::optional fragmentEndPosition ); FragmentTypeCheckResult typecheckFragment( Frontend& frontend, const ModuleName& moduleName, const Position& cursorPos, std::optional opts, std::string_view src, std::optional fragmentEndPosition ); FragmentAutocompleteResult fragmentAutocomplete( Frontend& frontend, std::string_view src, const ModuleName& moduleName, Position cursorPosition, std::optional opts, StringCompletionCallback callback, std::optional fragmentEndPosition = std::nullopt ); } // namespace Luau