Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sync to upstream/release/600 #1076

Merged
merged 193 commits into from
Oct 21, 2023
Merged
Show file tree
Hide file tree
Changes from 190 commits
Commits
Show all changes
193 commits
Select commit Hold shift + click to select a range
c6ac06e
Sync to upstream/release/543
zeux Sep 1, 2022
75b8a2a
Merge branch 'upstream' into merge
zeux Sep 1, 2022
dec4b67
Sync to upstream/release/544
zeux Sep 8, 2022
ff18a63
Merge branch 'master' into merge
zeux Sep 8, 2022
71df988
Merge branch 'upstream' into merge
zeux Sep 8, 2022
6c70897
Patch the test for now to work with 16K pages
zeux Sep 8, 2022
dd710f6
Sync to upstream/release/545
zeux Sep 15, 2022
19ac72a
Merge branch 'master' into merge
zeux Sep 15, 2022
6e957a4
Merge branch 'upstream' into merge
zeux Sep 15, 2022
48fb5a3
Sync to upstream/release/546
zeux Sep 23, 2022
cd66ad6
Merge branch 'master' into merge
zeux Sep 23, 2022
7bea908
Merge branch 'upstream' into merge
zeux Sep 23, 2022
4176e1c
Fix internals library
zeux Sep 23, 2022
d0989b9
Sync to upstream/release/547
zeux Sep 29, 2022
123649d
Merge branch 'master' into merge
zeux Sep 29, 2022
ebf252f
Merge branch 'upstream' into merge
zeux Sep 29, 2022
91e144a
Sync to upstream/release/548
zeux Oct 6, 2022
9bfe2b8
Merge branch 'master' into merge
zeux Oct 6, 2022
4a79c7f
Merge branch 'upstream' into merge
zeux Oct 6, 2022
d82e736
Sync to upstream/release/549
vegorov-rbx Oct 13, 2022
6aafd2b
Merge branch 'master' into merge
vegorov-rbx Oct 13, 2022
1dca05d
Merge branch 'upstream' into merge
vegorov-rbx Oct 13, 2022
48fd16d
Fix build error
vegorov-rbx Oct 14, 2022
6a98d15
Responding to PR comments
vegorov-rbx Oct 14, 2022
2eff6cf
Sync to upstream/release/550
andyfriesen Oct 21, 2022
72fdf6f
Merge branch 'master' into merge
andyfriesen Oct 21, 2022
b9451c6
Merge branch 'upstream' into merge
andyfriesen Oct 21, 2022
99c0db3
Sync to upstream/release/551
vegorov-rbx Oct 27, 2022
dbedb3c
Merge remote-tracking branch 'upstream/master' into merge
vegorov-rbx Oct 27, 2022
b4b125c
Merge branch 'upstream' into merge
vegorov-rbx Oct 27, 2022
a6cbb0f
Fix clang-14 / GNU ld interaction for target_clones
zeux Oct 28, 2022
e3fdab3
Sync to upstream/release/552
andyfriesen Nov 4, 2022
d189305
Merge branch 'master' into merge
andyfriesen Nov 4, 2022
8fd7d22
Merge branch 'upstream' into merge
andyfriesen Nov 4, 2022
3155ba0
Sync to upstream/release/553
vegorov-rbx Nov 10, 2022
3289fc1
Merge remote-tracking branch 'upstream/master' into merge
vegorov-rbx Nov 10, 2022
2b36613
Merge branch 'upstream' into merge
vegorov-rbx Nov 10, 2022
f521695
Sync to upstream/release/554
andyfriesen Nov 18, 2022
d5ff348
Merge remote-tracking branch 'origin/master' into merge
andyfriesen Nov 18, 2022
3ac3798
Merge branch 'upstream' into merge
andyfriesen Nov 18, 2022
fc45969
Sync to upstream/release/555
vegorov-rbx Dec 2, 2022
471ec75
Merge branch 'master' into merge
vegorov-rbx Dec 2, 2022
621d21d
Merge branch 'upstream' into merge
vegorov-rbx Dec 2, 2022
f10b294
What even is this
vegorov-rbx Dec 2, 2022
6cd507d
Work-around for gcc
vegorov-rbx Dec 2, 2022
abe6768
Sync to upstream/release/556
andyfriesen Dec 9, 2022
4ba102f
Merge branch 'master' into merge
andyfriesen Dec 9, 2022
1197bcd
Merge branch 'upstream' into merge
andyfriesen Dec 9, 2022
9958d23
Sync to upstream/release/557
vegorov-rbx Jan 3, 2023
11e129f
Merge branch 'master' into merge
vegorov-rbx Jan 3, 2023
c48b4d7
Merge branch 'upstream' into merge
vegorov-rbx Jan 3, 2023
ee364a3
Fixed iterator invalidation issue
vegorov-rbx Jan 3, 2023
1958676
Re-using uncleared normalizer in unsafe
vegorov-rbx Jan 4, 2023
36f5009
Sync to upstream/release/558
vegorov-rbx Jan 6, 2023
5e3fbc4
Merge branch 'master' into merge
vegorov-rbx Jan 6, 2023
cf45ce6
Merge branch 'upstream' into merge
vegorov-rbx Jan 6, 2023
5db9675
Smaller recursion limit to not hit stack overflow in debug on Windows
vegorov-rbx Jan 6, 2023
a2365f2
Fix build warning
vegorov-rbx Jan 6, 2023
96c1caf
Sync to upstream/release/559
andyfriesen Jan 13, 2023
b1000a6
Merge branch 'master' into merge
andyfriesen Jan 13, 2023
efaf15e
Merge branch 'upstream' into merge
andyfriesen Jan 13, 2023
eec289a
Sync to upstream/release/560
vegorov-rbx Jan 20, 2023
652f319
Merge branch 'master' into merge
vegorov-rbx Jan 20, 2023
7a43ae3
Merge branch 'upstream' into merge
vegorov-rbx Jan 20, 2023
b0b7dfb
Fix a few style changes that went out-of-sync
vegorov-rbx Jan 20, 2023
53d03f9
Sync to upstream/release/561
andyfriesen Jan 27, 2023
7c5dd3c
Merge branch 'master' into merge
andyfriesen Jan 27, 2023
a17481b
Merge branch 'upstream' into merge
andyfriesen Jan 27, 2023
b7af49c
Fix signed/unsigned comparison warnings on GCC.
andyfriesen Jan 27, 2023
523db5e
Another GCC fix.
andyfriesen Jan 27, 2023
dba2936
Sync to upstream/release/562
vegorov-rbx Feb 3, 2023
f49f073
Merge branch 'master' into merge
vegorov-rbx Feb 3, 2023
c76dd1c
Merge branch 'upstream' into merge
vegorov-rbx Feb 3, 2023
b388e27
Sync to upstream/release/563
andyfriesen Feb 10, 2023
41ff9cb
Merge branch 'master' into merge
andyfriesen Feb 10, 2023
c3b1945
Merge branch 'upstream' into merge
andyfriesen Feb 10, 2023
5c77305
Sync to upstream/release/564
vegorov-rbx Feb 17, 2023
1f8ec89
Merge branch 'master' into merge
vegorov-rbx Feb 17, 2023
be06c31
Merge branch 'upstream' into merge
vegorov-rbx Feb 17, 2023
1e7b23f
Sync to upstream/release/565
andyfriesen Feb 24, 2023
3974fcc
Merge branch 'master' into merge
andyfriesen Feb 24, 2023
7a822c9
Merge branch 'upstream' into merge
andyfriesen Feb 24, 2023
e58bb1b
GCC fix.
andyfriesen Feb 24, 2023
9a281f0
Sync to upstream/release/566
vegorov-rbx Mar 3, 2023
ca34b44
Merge branch 'master' into merge
vegorov-rbx Mar 3, 2023
ac9718e
Merge branch 'upstream' into merge
vegorov-rbx Mar 3, 2023
4653484
Sync to upstream/release/567
andyfriesen Mar 10, 2023
cfee765
Merge branch 'master' into merge
andyfriesen Mar 10, 2023
a0fe195
Merge branch 'upstream' into merge
andyfriesen Mar 10, 2023
e280064
Sync to upstream/release/568
vegorov-rbx Mar 17, 2023
bbeec10
Merge branch 'master' into merge
vegorov-rbx Mar 17, 2023
1c4d7a6
Merge branch 'upstream' into merge
vegorov-rbx Mar 17, 2023
81200e1
Sync to upstream/release/569
andyfriesen Mar 24, 2023
ce18822
Merge branch 'master' into merge
andyfriesen Mar 24, 2023
c955451
Merge branch 'upstream' into merge
andyfriesen Mar 24, 2023
d1acde3
Sync to upstream/release/570
vegorov-rbx Mar 31, 2023
c6b6ab6
Merge branch 'master' into merge
vegorov-rbx Mar 31, 2023
d70df63
Merge branch 'upstream' into merge
vegorov-rbx Mar 31, 2023
d071e41
g++ build fix
vegorov-rbx Mar 31, 2023
5309401
Sync to upstream/release/571
andyfriesen Apr 7, 2023
97f8bf6
Merge branch 'master' into merge
andyfriesen Apr 7, 2023
395bf5c
Merge branch 'upstream' into merge
andyfriesen Apr 7, 2023
5e771b8
Sync to upstream/release/572
vegorov-rbx Apr 14, 2023
70ef0fb
Merge branch 'master' into merge
vegorov-rbx Apr 14, 2023
1ffbf6c
Merge branch 'upstream' into merge
vegorov-rbx Apr 14, 2023
33b9558
Build fix
vegorov-rbx Apr 14, 2023
d5cdb68
Sync to upstream/release/573
andyfriesen Apr 21, 2023
a0f9842
Merge branch 'master' into merge
andyfriesen Apr 21, 2023
1126490
Merge branch 'upstream' into merge
andyfriesen Apr 21, 2023
1c2ce0d
Sync to upstream/release/574
vegorov-rbx Apr 28, 2023
8bd3714
Merge branch 'master' into merge
vegorov-rbx Apr 28, 2023
348f85c
Merge branch 'upstream' into merge
vegorov-rbx Apr 28, 2023
716f633
Sync to upstream/release/575
andyfriesen May 5, 2023
cc96f86
Merge branch 'master' into merge
andyfriesen May 5, 2023
95f0a04
Merge branch 'upstream' into merge
andyfriesen May 5, 2023
12c1edf
This test fails on a64 so disable it for now.
andyfriesen May 5, 2023
f7c7801
Add pthread as a link dependency to Luau.Analyze.CLI for Linux.
andyfriesen May 5, 2023
3247aab
Sync to upstream/release/576
vegorov-rbx May 12, 2023
38ab2e5
Merge branch 'master' into merge
vegorov-rbx May 12, 2023
59c2698
Merge branch 'upstream' into merge
vegorov-rbx May 12, 2023
eb71060
Sync to upstream/release/577
andyfriesen May 19, 2023
4fb7594
Merge branch 'master' into merge
andyfriesen May 19, 2023
f3a6e37
Merge branch 'upstream' into merge
andyfriesen May 19, 2023
123496b
gcc fix.
andyfriesen May 19, 2023
b8e9d07
Sync to upstream/release/578
vegorov-rbx May 25, 2023
f97a897
Merge branch 'master' into merge
vegorov-rbx May 25, 2023
fc9557d
Merge branch 'upstream' into merge
vegorov-rbx May 25, 2023
f435740
Sync to upstream/release/579
andyfriesen Jun 2, 2023
349d6f4
Merge branch 'master' into merge
andyfriesen Jun 2, 2023
a3d22de
Merge branch 'upstream' into merge
andyfriesen Jun 2, 2023
88cd3dd
Sync to upstream/release/580
vegorov-rbx Jun 9, 2023
ef2e46e
Merge branch 'master' into merge
vegorov-rbx Jun 9, 2023
a9becc9
Merge branch 'upstream' into merge
vegorov-rbx Jun 9, 2023
212888c
Fix build warning
vegorov-rbx Jun 9, 2023
6ee4f19
Sync to upstream/release/581
andyfriesen Jun 16, 2023
f9cfef1
Merge branch 'master' into merge
andyfriesen Jun 16, 2023
00b9898
Merge branch 'upstream' into merge
andyfriesen Jun 16, 2023
8bc2f51
Sync to upstream/release/582
vegorov-rbx Jun 24, 2023
7a2f94a
Merge branch 'master' into merge
vegorov-rbx Jun 24, 2023
e1a7c3b
Merge branch 'upstream' into merge
vegorov-rbx Jun 24, 2023
e00dbbe
Sync to upstream/release/583
andyfriesen Jul 7, 2023
01cbf18
Merge branch 'master' into merge
andyfriesen Jul 7, 2023
b92d4d7
Merge branch 'upstream' into merge
andyfriesen Jul 7, 2023
dc2a1cc
GCC fix.
andyfriesen Jul 7, 2023
b403075
Sync to upstream/release/584
vegorov-rbx Jul 14, 2023
03063d0
Merge branch 'master' into merge
vegorov-rbx Jul 14, 2023
4ffa98f
Merge branch 'upstream' into merge
vegorov-rbx Jul 14, 2023
f16d002
GCC fix
vegorov-rbx Jul 14, 2023
5e1aca1
Sync to upstream/release/588
vegorov-rbx Jul 28, 2023
9fd79ad
Merge branch 'master' into merge
vegorov-rbx Jul 28, 2023
4c6a370
Merge branch 'upstream' into merge
vegorov-rbx Jul 28, 2023
25cc75b
* Progress toward a diffing algorithm for types. We hope that this w…
andyfriesen Aug 4, 2023
e25b717
Merge branch 'master' into merge
andyfriesen Aug 4, 2023
b26eeac
Merge branch 'upstream' into merge
andyfriesen Aug 4, 2023
63d9e3e
Smaller recursion limit for NoOpt in the failing test
vegorov-rbx Aug 4, 2023
089da9e
Sync to upstream/release/590
vegorov-rbx Aug 11, 2023
d841a32
Merge branch 'master' into merge
vegorov-rbx Aug 11, 2023
50571a7
Merge branch 'upstream' into merge
vegorov-rbx Aug 11, 2023
433d966
Sync to upstream/release/591
andyfriesen Aug 18, 2023
434e618
Merge branch 'master' into merge
andyfriesen Aug 18, 2023
bdc2f69
Merge branch 'upstream' into merge
andyfriesen Aug 18, 2023
a811050
Sync to upstream/release/592
vegorov-rbx Aug 25, 2023
263c282
Merge branch 'master' into merge
vegorov-rbx Aug 25, 2023
8cf1343
Merge branch 'upstream' into merge
vegorov-rbx Aug 25, 2023
51d4d18
Late fixes
vegorov-rbx Aug 25, 2023
397dbb1
Sync to upstream/release/593
AmaranthineCodices Sep 1, 2023
a2df595
Merge branch 'master' into merge
AmaranthineCodices Sep 1, 2023
09fdb4c
Merge branch 'upstream' into merge
AmaranthineCodices Sep 1, 2023
8e28c24
Sync to upstream/release/594
vegorov-rbx Sep 7, 2023
5143f5e
Merge branch 'master' into merge
vegorov-rbx Sep 7, 2023
789ece0
Merge branch 'upstream' into merge
vegorov-rbx Sep 7, 2023
d8b97f4
Sync to upstream/release/595
andyfriesen Sep 15, 2023
55d7a99
Merge branch 'master' into merge
andyfriesen Sep 15, 2023
c044932
Merge branch 'upstream' into merge
andyfriesen Sep 15, 2023
81681e2
Sync to upstream/release/596
aatxe Sep 22, 2023
d4de6f7
Merge branch 'master' into merge
aatxe Sep 22, 2023
3882ab1
Merge branch 'upstream' into merge
aatxe Sep 22, 2023
3bfc864
Sync to upstream/release/597
alexmccord Sep 30, 2023
c6b581a
Merge branch 'master' into merge
alexmccord Sep 30, 2023
d42188a
Merge branch 'heads/upstream' into merge
alexmccord Sep 30, 2023
22e3d1f
Sync to upstream/release/598
andyfriesen Oct 6, 2023
47374ff
Merge branch 'master' into merge
andyfriesen Oct 6, 2023
008b77a
Merge branch 'upstream' into merge
andyfriesen Oct 6, 2023
ff9c572
Turn this down a little temporarily. We'll sort out the root cause l…
andyfriesen Oct 6, 2023
34efdb3
Sync to upstream/release/599
AmaranthineCodices Oct 13, 2023
4d2be97
Merge remote-tracking branch 'origin/master' into merge
AmaranthineCodices Oct 13, 2023
dc6a75b
Merge branch 'upstream' into merge
AmaranthineCodices Oct 13, 2023
897a5da
Sync to upstream/release/600
Vighnesh-V Oct 20, 2023
6e91ab9
Merge branch 'master' into merge
Vighnesh-V Oct 20, 2023
8002cbb
Merge branch 'upstream' into merge
Vighnesh-V Oct 20, 2023
7602c43
Disable failing tests that rely on type paths
Vighnesh-V Oct 20, 2023
43915a4
More test uncommenting
Vighnesh-V Oct 21, 2023
46f18bb
comment out whole test case
Vighnesh-V Oct 21, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 2 additions & 2 deletions Analysis/include/Luau/Anyification.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

#include "Luau/NotNull.h"
#include "Luau/Substitution.h"
#include "Luau/Type.h"
#include "Luau/TypeFwd.h"

#include <memory>

Expand Down Expand Up @@ -39,4 +39,4 @@ struct Anyification : Substitution
bool ignoreChildren(TypePackId ty) override;
};

} // namespace Luau
} // namespace Luau
2 changes: 1 addition & 1 deletion Analysis/include/Luau/ApplyTypeFunction.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

#include "Luau/Substitution.h"
#include "Luau/TxnLog.h"
#include "Luau/Type.h"
#include "Luau/TypeFwd.h"

namespace Luau
{
Expand Down
4 changes: 1 addition & 3 deletions Analysis/include/Luau/AstQuery.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

#include "Luau/Ast.h"
#include "Luau/Documentation.h"
#include "Luau/TypeFwd.h"

#include <memory>

Expand All @@ -13,9 +14,6 @@ struct Binding;
struct SourceModule;
struct Module;

struct Type;
using TypeId = const Type*;

using ScopePtr = std::shared_ptr<struct Scope>;

struct ExprOrLocal
Expand Down
75 changes: 0 additions & 75 deletions Analysis/include/Luau/Breadcrumb.h

This file was deleted.

56 changes: 20 additions & 36 deletions Analysis/include/Luau/Constraint.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
#include "Luau/Ast.h" // Used for some of the enumerations
#include "Luau/DenseHash.h"
#include "Luau/NotNull.h"
#include "Luau/Type.h"
#include "Luau/Variant.h"
#include "Luau/TypeFwd.h"

#include <string>
#include <memory>
Expand All @@ -16,12 +16,6 @@ namespace Luau

struct Scope;

struct Type;
using TypeId = const Type*;

struct TypePackVar;
using TypePackId = const TypePackVar*;

// subType <: superType
struct SubtypeConstraint
{
Expand Down Expand Up @@ -55,31 +49,6 @@ struct InstantiationConstraint
TypeId superType;
};

struct UnaryConstraint
{
AstExprUnary::Op op;
TypeId operandType;
TypeId resultType;
};

// let L : leftType
// let R : rightType
// in
// L op R : resultType
struct BinaryConstraint
{
AstExprBinary::Op op;
TypeId leftType;
TypeId rightType;
TypeId resultType;

// When we dispatch this constraint, we update the key at this map to record
// the overload that we selected.
const AstNode* astFragment;
DenseHashMap<const AstNode*, TypeId>* astOriginalCallTypes;
DenseHashMap<const AstNode*, TypeId>* astOverloadResolvedTypes;
};

// iteratee is iterable
// iterators is the iteration types.
struct IterableConstraint
Expand Down Expand Up @@ -241,6 +210,22 @@ struct RefineConstraint
TypeId discriminant;
};

// resultType ~ T0 op T1 op ... op TN
//
// op is either union or intersection. If any of the input types are blocked,
// this constraint will block unless forced.
struct SetOpConstraint
{
enum
{
Intersection,
Union
} mode;

TypeId resultType;
std::vector<TypeId> types;
};

// ty ~ reduce ty
//
// Try to reduce ty, if it is a TypeFamilyInstanceType. Otherwise, do nothing.
Expand All @@ -257,10 +242,9 @@ struct ReducePackConstraint
TypePackId tp;
};

using ConstraintV = Variant<SubtypeConstraint, PackSubtypeConstraint, GeneralizationConstraint, InstantiationConstraint, UnaryConstraint,
BinaryConstraint, IterableConstraint, NameConstraint, TypeAliasExpansionConstraint, FunctionCallConstraint, PrimitiveTypeConstraint,
HasPropConstraint, SetPropConstraint, SetIndexerConstraint, SingletonOrTopTypeConstraint, UnpackConstraint, RefineConstraint, ReduceConstraint,
ReducePackConstraint>;
using ConstraintV = Variant<SubtypeConstraint, PackSubtypeConstraint, GeneralizationConstraint, InstantiationConstraint, IterableConstraint,
NameConstraint, TypeAliasExpansionConstraint, FunctionCallConstraint, PrimitiveTypeConstraint, HasPropConstraint, SetPropConstraint,
SetIndexerConstraint, SingletonOrTopTypeConstraint, UnpackConstraint, RefineConstraint, SetOpConstraint, ReduceConstraint, ReducePackConstraint>;

struct Constraint
{
Expand Down
43 changes: 33 additions & 10 deletions Analysis/include/Luau/ConstraintGraphBuilder.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,17 @@
#include "Luau/Constraint.h"
#include "Luau/ControlFlow.h"
#include "Luau/DataFlowGraph.h"
#include "Luau/InsertionOrderedMap.h"
#include "Luau/Module.h"
#include "Luau/ModuleResolver.h"
#include "Luau/Normalize.h"
#include "Luau/NotNull.h"
#include "Luau/Refinement.h"
#include "Luau/Symbol.h"
#include "Luau/Type.h"
#include "Luau/TypeFwd.h"
#include "Luau/TypeUtils.h"
#include "Luau/Variant.h"
#include "Normalize.h"
#include "Luau/Normalize.h"

#include <memory>
#include <vector>
Expand Down Expand Up @@ -69,11 +71,18 @@ struct ConstraintGraphBuilder
// This is null when the CGB is initially constructed.
Scope* rootScope;

struct InferredBinding
{
Scope* scope;
Location location;
TypeIds types;
};

// During constraint generation, we only populate the Scope::bindings
// property for annotated symbols. Unannotated symbols must be handled in a
// postprocessing step because we do not yet have the full breadcrumb graph.
// We queue them up here.
std::vector<std::tuple<Scope*, Symbol, BreadcrumbId>> inferredBindings;
// postprocessing step because we have not yet allocated the types that will
// be assigned to those unannotated symbols, so we queue them up here.
std::map<Symbol, InferredBinding> inferredBindings;

// Constraints that go straight to the solver.
std::vector<ConstraintPtr> constraints;
Expand Down Expand Up @@ -155,6 +164,18 @@ struct ConstraintGraphBuilder
*/
NotNull<Constraint> addConstraint(const ScopePtr& scope, std::unique_ptr<Constraint> c);

struct RefinementPartition
{
// Types that we want to intersect against the type of the expression.
std::vector<TypeId> discriminantTypes;

// Sometimes the type we're discriminating against is implicitly nil.
bool shouldAppendNilType = false;
};

using RefinementContext = InsertionOrderedMap<DefId, RefinementPartition>;
void unionRefinements(const RefinementContext& lhs, const RefinementContext& rhs, RefinementContext& dest, std::vector<ConstraintV>* constraints);
void computeRefinement(const ScopePtr& scope, RefinementId refinement, RefinementContext* refis, bool sense, bool eq, std::vector<ConstraintV>* constraints);
void applyRefinements(const ScopePtr& scope, Location location, RefinementId refinement);

ControlFlow visitBlockWithoutChildScope(const ScopePtr& scope, AstStatBlock* block);
Expand Down Expand Up @@ -211,13 +232,15 @@ struct ConstraintGraphBuilder
Inference check(const ScopePtr& scope, AstExprTable* expr, std::optional<TypeId> expectedType);
std::tuple<TypeId, TypeId, RefinementId> checkBinary(const ScopePtr& scope, AstExprBinary* binary, std::optional<TypeId> expectedType);

TypeId checkLValue(const ScopePtr& scope, AstExpr* expr);
TypeId checkLValue(const ScopePtr& scope, AstExprLocal* local);
TypeId checkLValue(const ScopePtr& scope, AstExprGlobal* global);
TypeId checkLValue(const ScopePtr& scope, AstExprIndexName* indexName);
TypeId checkLValue(const ScopePtr& scope, AstExprIndexExpr* indexExpr);
std::optional<TypeId> checkLValue(const ScopePtr& scope, AstExpr* expr);
std::optional<TypeId> checkLValue(const ScopePtr& scope, AstExprLocal* local);
std::optional<TypeId> checkLValue(const ScopePtr& scope, AstExprGlobal* global);
std::optional<TypeId> checkLValue(const ScopePtr& scope, AstExprIndexName* indexName);
std::optional<TypeId> checkLValue(const ScopePtr& scope, AstExprIndexExpr* indexExpr);
TypeId updateProperty(const ScopePtr& scope, AstExpr* expr);

void updateLValueType(AstExpr* lvalue, TypeId ty);

struct FunctionSignature
{
// The type of the function.
Expand Down
3 changes: 1 addition & 2 deletions Analysis/include/Luau/ConstraintSolver.h
Original file line number Diff line number Diff line change
Expand Up @@ -111,8 +111,6 @@ struct ConstraintSolver
bool tryDispatch(const PackSubtypeConstraint& c, NotNull<const Constraint> constraint, bool force);
bool tryDispatch(const GeneralizationConstraint& c, NotNull<const Constraint> constraint, bool force);
bool tryDispatch(const InstantiationConstraint& c, NotNull<const Constraint> constraint, bool force);
bool tryDispatch(const UnaryConstraint& c, NotNull<const Constraint> constraint, bool force);
bool tryDispatch(const BinaryConstraint& c, NotNull<const Constraint> constraint, bool force);
bool tryDispatch(const IterableConstraint& c, NotNull<const Constraint> constraint, bool force);
bool tryDispatch(const NameConstraint& c, NotNull<const Constraint> constraint);
bool tryDispatch(const TypeAliasExpansionConstraint& c, NotNull<const Constraint> constraint);
Expand All @@ -124,6 +122,7 @@ struct ConstraintSolver
bool tryDispatch(const SingletonOrTopTypeConstraint& c, NotNull<const Constraint> constraint);
bool tryDispatch(const UnpackConstraint& c, NotNull<const Constraint> constraint);
bool tryDispatch(const RefineConstraint& c, NotNull<const Constraint> constraint, bool force);
bool tryDispatch(const SetOpConstraint& c, NotNull<const Constraint> constraint, bool force);
bool tryDispatch(const ReduceConstraint& c, NotNull<const Constraint> constraint, bool force);
bool tryDispatch(const ReducePackConstraint& c, NotNull<const Constraint> constraint, bool force);

Expand Down