luau/tests
ayoungbloodrbx 6b33251b89
Sync to upstream/release/667 (#1754)
After a very auspicious release last week, we have a new bevy of changes
for you!

## What's Changed

### Deprecated Attribute

This release includes an implementation of the `@deprecated` attribute
proposed in [this
RFC](https://rfcs.luau.org/syntax-attribute-functions-deprecated.html).
It relies on the new type solver to propagate deprecation information
from function and method AST nodes to the corresponding type objects.
These objects are queried by a linter pass when it encounters local,
global, or indexed variables, to issue deprecation warnings. Uses of
deprecated functions and methods in recursion are ignored. To support
deprecation of class methods, the parser has been extended to allow
attribute declarations on class methods. The implementation does not
support parameters, so it is not currently possible for users to
customize deprecation messages.

### General

- Add a limit for normalization of function types.

### New Type Solver

- Fix type checker to accept numbers as concat operands (Fixes #1671).
- Fix user-defined type functions failing when used inside type
aliases/nested calls (Fixes #1738, Fixes #1679).
- Improve constraint generation for overloaded functions (in part thanks
to @vvatheus in #1694).
- Improve type inference for indexers on table literals, especially when
passing table literals directly as a function call argument.
- Equate regular error type and intersection with a negation of an error
type.
- Avoid swapping types in 2-part union when RHS is optional.
- Use simplification when doing `~nil` refinements.
- `len<>` now works on metatables without `__len` function.

### AST

- Retain source information for `AstTypeUnion` and
`AstTypeIntersection`.

### Transpiler

- Print attributes on functions.

### Parser

- Allow types in indexers to begin with string literals by @jackdotink
in #1750.

### Autocomplete

- Evaluate user-defined type functions in ill-formed source code to
provide autocomplete.
- Fix the start location of functions that have attributes.
- Implement better fragment selection.

### Internal Contributors

Co-authored-by: Andy Friesen <afriesen@roblox.com>
Co-authored-by: Ariel Weiss <aaronweiss@roblox.com>
Co-authored-by: Aviral Goel <agoel@roblox.com>
Co-authored-by: Hunter Goldstein <hgoldstein@roblox.com>
Co-authored-by: Sora Kanosue <skanosue@roblox.com>
Co-authored-by: Talha Pathan <tpathan@roblox.com>
Co-authored-by: Varun Saini <vsaini@roblox.com>
Co-authored-by: Vighnesh Vijay <vvijay@roblox.com>
Co-authored-by: Vyacheslav Egorov <vegorov@roblox.com>

**Full Changelog**:
https://github.com/luau-lang/luau/compare/0.666...0.667

---------

Co-authored-by: Hunter Goldstein <hgoldstein@roblox.com>
Co-authored-by: Varun Saini <61795485+vrn-sn@users.noreply.github.com>
Co-authored-by: Menarul Alam <malam@roblox.com>
Co-authored-by: Aviral Goel <agoel@roblox.com>
Co-authored-by: Vighnesh <vvijay@roblox.com>
Co-authored-by: Vyacheslav Egorov <vegorov@roblox.com>
Co-authored-by: Ariel Weiss <aaronweiss@roblox.com>
2025-03-28 16:15:46 -07:00
..
conformance chore: update applicable .lua files to .luau (#1560) 2025-02-21 14:29:20 -08:00
require Sync to upstream/release/652 (#1525) 2024-11-15 14:29:30 -08:00
AssemblyBuilderA64.test.cpp Sync to upstream/release/653 (#1541) 2024-11-22 13:00:51 -08:00
AssemblyBuilderX64.test.cpp CodeGen: Implement support for math.lerp lowering (#1609) 2025-01-16 10:48:27 -08:00
AstJsonEncoder.test.cpp Sync to upstream/release/667 (#1754) 2025-03-28 16:15:46 -07:00
AstQuery.test.cpp Sync to upstream/release/657 (#1619) 2025-01-17 14:55:39 -08:00
AstQueryDsl.cpp Sync to upstream/release/549 (#707) 2022-10-14 12:48:41 -07:00
AstQueryDsl.h Sync to upstream/release/549 (#707) 2022-10-14 12:48:41 -07:00
AstVisitor.test.cpp Sync to upstream/release/501 (#20) 2021-11-01 14:52:34 -07:00
Autocomplete.test.cpp Sync to upstream/release/667 (#1754) 2025-03-28 16:15:46 -07:00
BuiltinDefinitions.test.cpp Sync to upstream/release/637 (#1354) 2024-08-02 07:30:04 -07:00
ClassFixture.cpp Sync to upstream/release/666 (#1747) 2025-03-21 14:43:00 -07:00
ClassFixture.h Sync to upstream/release/666 (#1747) 2025-03-21 14:43:00 -07:00
CodeAllocator.test.cpp Sync to upstream/release/657 (#1619) 2025-01-17 14:55:39 -08:00
Compiler.test.cpp Sync to upstream/release/663 (#1699) 2025-02-28 14:42:30 -08:00
Config.test.cpp Sync to upstream/release/651 (#1513) 2024-11-08 13:41:45 -08:00
Conformance.test.cpp Sync to upstream/release/665 (#1732) 2025-03-14 13:11:24 -07:00
ConformanceIrHooks.h Sync to upstream/release/637 (#1354) 2024-08-02 07:30:04 -07:00
ConstraintGeneratorFixture.cpp Sync to upstream/release/666 (#1747) 2025-03-21 14:43:00 -07:00
ConstraintGeneratorFixture.h Sync to upstream/release/651 (#1513) 2024-11-08 13:41:45 -08:00
ConstraintSolver.test.cpp Sync to upstream/release/641 (#1382) 2024-08-30 13:16:51 -07:00
CostModel.test.cpp Sync to upstream/release/591 (#1012) 2023-08-18 11:15:41 -07:00
DataFlowGraph.test.cpp Sync to upstream/release/658 (#1625) 2025-01-24 12:15:19 -08:00
DenseHash.test.cpp Sync to upstream/release/561 (#820) 2023-01-27 14:28:31 -08:00
DiffAsserts.cpp Sync to upstream/release/600 (#1076) 2023-10-20 18:10:30 -07:00
DiffAsserts.h Sync to upstream/release/613 (#1167) 2024-02-15 18:04:39 -08:00
Differ.test.cpp Sync to upstream/release/650 (#1502) 2024-11-01 12:06:07 -07:00
EqSat.language.test.cpp Sync to upstream/release/651 (#1513) 2024-11-08 13:41:45 -08:00
EqSat.propositional.test.cpp Sync to upstream/release/637 (#1354) 2024-08-02 07:30:04 -07:00
EqSat.slice.test.cpp Equality graphs (#1285) 2024-07-16 10:35:20 -07:00
EqSatSimplification.test.cpp Sync to upstream/release/660 (#1643) 2025-02-07 16:17:11 -08:00
Error.test.cpp Sync to upstream/release/641 (#1382) 2024-08-30 13:16:51 -07:00
Fixture.cpp Sync to upstream/release/667 (#1754) 2025-03-28 16:15:46 -07:00
Fixture.h Sync to upstream/release/665 (#1732) 2025-03-14 13:11:24 -07:00
FragmentAutocomplete.test.cpp Sync to upstream/release/667 (#1754) 2025-03-28 16:15:46 -07:00
Frontend.test.cpp Sync to upstream/release/666 (#1747) 2025-03-21 14:43:00 -07:00
Generalization.test.cpp Sync to upstream/release/660 (#1643) 2025-02-07 16:17:11 -08:00
InsertionOrderedMap.test.cpp Sync to upstream/release/580 (#951) 2023-06-09 10:08:00 -07:00
Instantiation2.test.cpp Sync to upstream/release/660 (#1643) 2025-02-07 16:17:11 -08:00
IostreamOptional.h Sync to upstream/release/603 (#1097) 2023-11-10 13:10:07 -08:00
IrBuilder.test.cpp Sync to upstream/release/659 (#1637) 2025-01-31 18:58:36 -08:00
IrCallWrapperX64.test.cpp Sync to upstream/release/601 (#1084) 2023-10-27 14:18:41 -07:00
IrLowering.test.cpp Sync to upstream/release/659 (#1637) 2025-01-31 18:58:36 -08:00
IrRegAllocX64.test.cpp Sync to upstream/release/595 (#1044) 2023-09-15 10:26:59 -07:00
JsonEmitter.test.cpp Sync to upstream/release/543 (#657) 2022-09-01 16:14:03 -07:00
Lexer.test.cpp Sync to upstream/release/666 (#1747) 2025-03-21 14:43:00 -07:00
Linter.test.cpp Sync to upstream/release/667 (#1754) 2025-03-28 16:15:46 -07:00
LValue.test.cpp Sync to upstream/release/637 (#1354) 2024-08-02 07:30:04 -07:00
main.cpp Sync to upstream/release/657 (#1619) 2025-01-17 14:55:39 -08:00
Module.test.cpp Sync to upstream/release/664 (#1715) 2025-03-07 10:07:27 -08:00
NonstrictMode.test.cpp Sync to upstream/release/650 (#1502) 2024-11-01 12:06:07 -07:00
NonStrictTypeChecker.test.cpp Sync to upstream/release/666 (#1747) 2025-03-21 14:43:00 -07:00
Normalize.test.cpp Sync to upstream/release/667 (#1754) 2025-03-28 16:15:46 -07:00
NotNull.test.cpp Sync to upstream/release/555 (#768) 2022-12-02 10:09:59 -08:00
Parser.test.cpp Sync to upstream/release/667 (#1754) 2025-03-28 16:15:46 -07:00
RegisterCallbacks.cpp Sync to upstream/release/594 (#1036) 2023-09-07 17:13:49 -07:00
RegisterCallbacks.h Sync to upstream/release/594 (#1036) 2023-09-07 17:13:49 -07:00
Repl.test.cpp Sync to upstream/release/656 (#1612) 2025-01-10 11:34:39 -08:00
RequireByString.test.cpp Sync to upstream/release/659 (#1637) 2025-01-31 18:58:36 -08:00
RequireTracer.test.cpp Sync to upstream/release/666 (#1747) 2025-03-21 14:43:00 -07:00
RuntimeLimits.test.cpp Sync to upstream/release/650 (#1502) 2024-11-01 12:06:07 -07:00
ScopedFlags.h Sync to upstream/release/667 (#1754) 2025-03-28 16:15:46 -07:00
Set.test.cpp Sync to upstream/release/625 (#1252) 2024-05-10 11:21:45 -07:00
SharedCodeAllocator.test.cpp Sync to upstream/release/647 (#1469) 2024-10-11 17:48:30 -07:00
Simplify.test.cpp Sync to upstream/release/641 (#1382) 2024-08-30 13:16:51 -07:00
StringUtils.test.cpp Sync to upstream/release/588 (#992) 2023-07-28 08:13:53 -07:00
Subtyping.test.cpp Sync to upstream/release/666 (#1747) 2025-03-21 14:43:00 -07:00
Symbol.test.cpp Sync to upstream/release/641 (#1382) 2024-08-30 13:16:51 -07:00
ToDot.test.cpp Sync to upstream/release/660 (#1643) 2025-02-07 16:17:11 -08:00
TopoSort.test.cpp Sync to upstream/release/523 (#459) 2022-04-14 16:57:43 -07:00
ToString.test.cpp Sync to upstream/release/666 (#1747) 2025-03-21 14:43:00 -07:00
Transpiler.test.cpp Sync to upstream/release/667 (#1754) 2025-03-28 16:15:46 -07:00
TxnLog.test.cpp Sync to upstream/release/663 (#1699) 2025-02-28 14:42:30 -08:00
TypeFunction.test.cpp Sync to upstream/release/667 (#1754) 2025-03-28 16:15:46 -07:00
TypeFunction.user.test.cpp Sync to upstream/release/667 (#1754) 2025-03-28 16:15:46 -07:00
TypeInfer.aliases.test.cpp Sync to upstream/release/667 (#1754) 2025-03-28 16:15:46 -07:00
TypeInfer.annotations.test.cpp Sync to upstream/release/641 (#1382) 2024-08-30 13:16:51 -07:00
TypeInfer.anyerror.test.cpp Sync to upstream/release/641 (#1382) 2024-08-30 13:16:51 -07:00
TypeInfer.builtins.test.cpp Sync to upstream/release/666 (#1747) 2025-03-21 14:43:00 -07:00
TypeInfer.cfa.test.cpp Sync to upstream/release/636 (#1346) 2024-07-26 10:47:49 -07:00
TypeInfer.classes.test.cpp Sync to upstream/release/666 (#1747) 2025-03-21 14:43:00 -07:00
TypeInfer.definitions.test.cpp Sync to upstream/release/666 (#1747) 2025-03-21 14:43:00 -07:00
TypeInfer.functions.test.cpp Sync to upstream/release/667 (#1754) 2025-03-28 16:15:46 -07:00
TypeInfer.generics.test.cpp Sync to upstream/release/666 (#1747) 2025-03-21 14:43:00 -07:00
TypeInfer.intersectionTypes.test.cpp Sync to upstream/release/666 (#1747) 2025-03-21 14:43:00 -07:00
TypeInfer.loops.test.cpp Sync to upstream/release/650 (#1502) 2024-11-01 12:06:07 -07:00
TypeInfer.modules.test.cpp Sync to upstream/release/666 (#1747) 2025-03-21 14:43:00 -07:00
TypeInfer.negations.test.cpp Sync to upstream/release/666 (#1747) 2025-03-21 14:43:00 -07:00
TypeInfer.oop.test.cpp Sync to upstream/release/650 (#1502) 2024-11-01 12:06:07 -07:00
TypeInfer.operators.test.cpp Sync to upstream/release/666 (#1747) 2025-03-21 14:43:00 -07:00
TypeInfer.primitives.test.cpp Sync to upstream/release/656 (#1612) 2025-01-10 11:34:39 -08:00
TypeInfer.provisional.test.cpp Sync to upstream/release/667 (#1754) 2025-03-28 16:15:46 -07:00
TypeInfer.refinements.test.cpp Sync to upstream/release/667 (#1754) 2025-03-28 16:15:46 -07:00
TypeInfer.singletons.test.cpp Fix singleton parameters in overloaded functions (#1694) 2025-03-24 09:27:13 -07:00
TypeInfer.tables.test.cpp Sync to upstream/release/667 (#1754) 2025-03-28 16:15:46 -07:00
TypeInfer.test.cpp Sync to upstream/release/667 (#1754) 2025-03-28 16:15:46 -07:00
TypeInfer.tryUnify.test.cpp Sync to upstream/release/663 (#1699) 2025-02-28 14:42:30 -08:00
TypeInfer.typePacks.test.cpp Sync to upstream/release/666 (#1747) 2025-03-21 14:43:00 -07:00
TypeInfer.typestates.test.cpp Sync to upstream/release/641 (#1382) 2024-08-30 13:16:51 -07:00
TypeInfer.unionTypes.test.cpp Sync to upstream/release/666 (#1747) 2025-03-21 14:43:00 -07:00
TypeInfer.unknownnever.test.cpp Sync to upstream/release/641 (#1382) 2024-08-30 13:16:51 -07:00
TypePack.test.cpp Sync to upstream/release/653 (#1541) 2024-11-22 13:00:51 -08:00
TypePath.test.cpp Sync to upstream/release/666 (#1747) 2025-03-21 14:43:00 -07:00
TypeVar.test.cpp Sync to upstream/release/660 (#1643) 2025-02-07 16:17:11 -08:00
Unifier2.test.cpp Sync to upstream/release/641 (#1382) 2024-08-30 13:16:51 -07:00
Variant.test.cpp Sync to upstream/release/637 (#1354) 2024-08-02 07:30:04 -07:00
VecDeque.test.cpp Sync to upstream/release/637 (#1354) 2024-08-02 07:30:04 -07:00
VisitType.test.cpp Sync to upstream/release/660 (#1643) 2025-02-07 16:17:11 -08:00