Pavel Yaskevich
bc949c3680
[CSBindings] Don't favor application result types before application happens
...
Until `ApplicableFunction` constraint is simplified result type
associated with it cannot be bound because the binding set if
incomplete.
Resolves: rdar://139237088
2024-11-08 14:00:01 -08:00
Doug Gregor
720429daf4
[Constraint solver] Disable fallback diagnostic when error emitted into a transaction
...
When we are using diagnostic transactions to disable immediate emission
of diagnostics, `DiagnosticEngine::hadAnyError()` no longer accurately
reports whether an error occurred. Thread the DiagnosticTransaction
into the ConstraintSystem so we can also check whether it contains an
error before emitting the fallback diagnostic.
Fixes rdar://128272346.
2024-11-06 17:07:13 -08:00
Hamish Knight
df7cac3114
Merge pull request #59141 from hamishknight/wrapping-paper
...
[AST] Remove ParenType
2024-11-01 16:52:23 +00:00
Hamish Knight
2d7500eda6
[AST] Remove ParenType
...
Today ParenType is used:
1. As the type of ParenExpr
2. As the payload type of an unlabeled single
associated value enum case (and the type of
ParenPattern).
3. As the type for an `(X)` TypeRepr
For 1, this leads to some odd behavior, e.g the
type of `(5.0 * 5).squareRoot()` is `(Double)`. For
2, we should be checking the arity of the enum case
constructor parameters and the presence of
ParenPattern respectively. Eventually we ought to
consider replacing Paren/TuplePattern with a
PatternList node, similar to ArgumentList.
3 is one case where it could be argued that there's
some utility in preserving the sugar of the type
that the user wrote. However it's really not clear
to me that this is particularly desirable since a
bunch of diagnostic logic is already stripping
ParenTypes. In cases where we care about how the
type was written in source, we really ought to be
consulting the TypeRepr.
2024-10-31 11:32:40 +00:00
Pavel Yaskevich
e68e4ea1b1
[CSFix] Add a new kind of invalid ref in key path - unsupported static members
...
Replaces feature flag check with module compiler version check
which implements the behavior discussed in the SE-0438.
2024-10-30 10:53:42 -07:00
Pavel Yaskevich
6109463cce
[ConstraintSystem] NFC: Rename threshold in ExpressionTimer to clarify granularity
...
The variable was named incorrectly, it's actually expressed in seconds.
2024-10-28 17:29:01 -07:00
Slava Pestov
3400022c63
Sema: Remove ConstraintKind::SelfObjectOfProtocol
2024-10-22 20:14:43 -04:00
Slava Pestov
c728c2aa8b
Sema: Simplify doesStorageProduceLValue()
2024-10-22 20:14:43 -04:00
Slava Pestov
6c02529cf8
Sema: Simplify ConstraintSystem::getUnopenedTypeOfReference()
2024-10-22 20:14:43 -04:00
Slava Pestov
53794d3b6a
Sema: Rename ConstraintSystem::generateConstraints() to ConstraintSystem::generateOverloadConstraints()
2024-10-22 20:14:43 -04:00
Slava Pestov
b44bff26b5
Sema: Fold Constraint::createFixedChoice() into Constraint::createBindOverload()
2024-10-22 20:14:42 -04:00
Slava Pestov
2eaec5a97f
Sema: Remove Constraint::clone()
2024-10-22 20:14:42 -04:00
Slava Pestov
0de8428f34
Sema: Tail-allocate Constraint::Overload::Choice
...
OverloadChoice is rather large, 40 bytes.
2024-10-22 20:14:42 -04:00
Slava Pestov
a48591d71d
Sema: Tail-allocate Constraint::TheFix
...
Most constraints don't have a fix, so we can tail-allocate the fix.
This saves 16 bytes per constraint, because it also eliminates some
padding.
2024-10-22 20:14:42 -04:00
Slava Pestov
58a6a64647
Sema: SolverTrail::Change::RetiredConstraint now remembers the position
2024-10-21 17:19:01 -04:00
Slava Pestov
04f48db7f2
Merge pull request #76932 from slavapestov/cstrail-part-6
...
Sema: Small SolverTrail cleanups
2024-10-09 20:39:09 -04:00
Slava Pestov
38fe0696a4
Sema: Factor out clearScore() and replayScore()
2024-10-09 11:48:07 -04:00
Slava Pestov
c8db9f55e6
Sema: Remove last heap allocation of Scope
2024-10-09 11:48:07 -04:00
Slava Pestov
24e5a828e6
Merge pull request #76921 from slavapestov/cstrail-part-5
...
Sema: Finish hollowing out SolverScope
2024-10-09 08:04:07 -04:00
Slava Pestov
0b85ce6f00
Sema: Remove SolverScope::numFixes
2024-10-08 16:57:49 -04:00
Slava Pestov
bdab82a192
Sema: Use xmacros to clean up more duplication in CSTrail.{cpp,h}
2024-10-08 16:50:49 -04:00
Slava Pestov
5fdc1a81b8
Sema: Record retired constraints in the trail
2024-10-08 16:39:34 -04:00
Slava Pestov
fc7068ee40
Merge pull request #76910 from slavapestov/open-type-perf-fix
...
Fix performance regression in ConstraintSystem::openType()
2024-10-08 16:17:58 -04:00
Slava Pestov
90175400d2
Sema: Record generated constraints in the trail
2024-10-08 16:17:28 -04:00
Slava Pestov
1e2d4fbc59
Sema: Record score increases in the trail
2024-10-08 16:16:31 -04:00
Slava Pestov
877c60e3d0
Sema: Rename applySolution() to replaySolution()
2024-10-08 16:16:01 -04:00
Slava Pestov
1323953219
Sema: Try not to make a negative impact
2024-10-08 16:14:05 -04:00
Steven Wu
5fa12d31ae
Merge pull request #76738 from cachemeifyoucan/eng/PR-136787368
...
[CAS] Use IncludeTreeFileList instead of full CASFS for caching
2024-10-08 10:42:24 -07:00
Slava Pestov
e47f9966ad
Sema: ConstraintSystem::openType() uses TypeTransform
2024-10-07 17:46:40 -04:00
Slava Pestov
4a82d384b7
Sema: Record synthesized conformances in the trail
2024-10-07 16:50:49 -04:00
Slava Pestov
12eb7cec26
Sema: Record implicit callAsFunction() roots in the trail
2024-10-07 16:50:49 -04:00
Slava Pestov
72a60728fc
Sema: Record argument lists in the trail
2024-10-07 16:50:49 -04:00
Slava Pestov
f2412f318e
Sema: Record key path expressions in the trail
2024-10-07 16:50:48 -04:00
Slava Pestov
881a0100b2
Sema: Record implicit value conversions in the trail
2024-10-07 16:50:48 -04:00
Slava Pestov
ac17292dfe
Sema: Record preconcurrency closures in the trail
2024-10-07 16:50:48 -04:00
Slava Pestov
b961a7ec51
Sema: Record isolated parameters in the trail
2024-10-07 16:50:48 -04:00
Slava Pestov
1d177d0187
Sema: Record expression patterns in the trail
2024-10-07 16:50:48 -04:00
Slava Pestov
500acd122a
Sema: Record potential throw sites in the trail
2024-10-07 16:50:47 -04:00
Slava Pestov
39d0eab275
Sema: Record case label items in the trail
2024-10-07 16:50:47 -04:00
Slava Pestov
8c8a385a4a
Sema: Record SyntacticElementTargetKeys in the trail
2024-10-07 16:50:47 -04:00
Slava Pestov
516277f0fd
Sema: Record contextual types in the trail
2024-10-07 16:50:47 -04:00
Slava Pestov
666361adf2
Sema: Record implied results in the trail
2024-10-07 16:50:47 -04:00
Slava Pestov
1d18cd07cf
Sema: Record closure types in the trail
2024-10-07 16:50:47 -04:00
Slava Pestov
43a4ac9216
Sema: Record resolved overloads in the trail
2024-10-07 16:50:46 -04:00
Slava Pestov
892e79cd70
Sema: Use an xmacro to clean up some duplication in CSTrail.cpp
2024-10-07 16:50:46 -04:00
Slava Pestov
6862955244
Sema: Record applied property wrappers in the trail
2024-10-07 16:50:46 -04:00
Slava Pestov
c7edc3494e
Sema: Record result builder transforms in the trail
2024-10-07 16:50:45 -04:00
Slava Pestov
64293ece51
Sema: Push reconciliation down into applySolution() to strengthen invariants
...
Now, we assert if you try to record the same change twice in any
other code path.
2024-10-07 16:50:45 -04:00
Slava Pestov
61575d9913
Sema: Remove a few isRecordingChanges() checks to tighten invariants
...
In these places we now assert if we attempt to record a change
during an active undo.
2024-10-07 16:50:45 -04:00
Slava Pestov
9115a46736
Sema: Record favored constraints in the trail
2024-10-07 16:50:45 -04:00