Doug Gregor
abf41e73a8
[Constraint system] Look for parent/depth info in base constraint system.
...
Look first in the base constraint system for this information, so it
only gets built once in the normal case.
2019-11-14 20:35:07 -08:00
Doug Gregor
24b47b5673
[Constraint solver] Sink Expr::getPreorderIndexMap() into its client.
2019-11-14 20:33:00 -08:00
Doug Gregor
2d915f60ab
[Constraint solver] Remove expression from the constructor.
...
Rather than setting up the constraint solver with a single expression
(that gets recorded for parents/depths), record each expression that
goes through constraint generation.
2019-11-14 15:41:38 -08:00
Doug Gregor
9b9aa2377d
[Constraint solver] Lazily populate the expression depth/index map.
2019-11-14 15:29:40 -08:00
Doug Gregor
01f203a54d
[Constraint system] Sink Expr::getDepthMap() into its one client.
...
NFC. It'll be easier to refactor this when it's not an API on Expr.
2019-11-14 15:02:58 -08:00
Doug Gregor
670ff7def1
[Constrant system] Drop expression from diagnoseAmbiguityWithFixes.
...
It's unused now.
2019-11-13 17:23:27 -08:00
Robert Widmann
d890b8ad41
Remove some save-and-restores
...
An awful pattern we use throughout the compiler is to save and restore global flags just for little things. In this case, it was just to turn on some extra options in AST printing for type variables. The kicker is that the ASTDumper doesn't even respect this flag. Add this as a PrintOption and remove the offending save-and-restores.
This doesn't quite get them all: we appear to have productized this pattern in the REPL.
2019-11-13 07:37:12 -08:00
Robert Widmann
f4d333d066
Sink a bunch of semantic options into TypeCheckerOptions
...
Sink
- DebugConstraintSolver
- DebugConstraintSolverAttempt
- DebugConstraintSolverOnLines
- DebugGenericSignatures
- DebugForbidTypecheckPrefix
- SolverMemoryThreshold
- SolverBindingThreshold
- SolverShrinkUnsolvedThreshold
- SolverDisableShrink
- EnableOperatorDesignatedTypes
- DisableConstraintSolverPerformanceHacks
- SolverEnableOperatorDesignatedTypes
2019-11-12 22:39:49 -08:00
Doug Gregor
23edd22824
Merge pull request #28221 from DougGregor/reduce-depth-maps
...
Reduce usage of expression depth maps
2019-11-12 20:43:14 -08:00
swift-ci
39fb55b616
Merge pull request #28156 from marcrasi/diff-fn-ty-ast-bits
2019-11-12 17:28:47 -08:00
Doug Gregor
99555dc951
[Constraint system] Add ConstraintSystem::getExprDepth() and use it for cleanup.
...
Rather than passing around or create depth maps at a few places in the
constraint solver, introduce getExprDepth() and use it consistently.
2019-11-12 15:42:17 -08:00
Marc Rasi
6413f4341a
[AutoDiff upstream] AST bits for @differentiable fn ty
2019-11-12 15:19:03 -08:00
Hamish Knight
cd3ada5abb
getInterfaceType() always returns a type ( #28210 )
...
getInterfaceType() always returns a type
2019-11-12 13:24:05 -08:00
Robert Widmann
48805b1d44
Give ASTContext TypeCheckerOptions
...
Strip TypeChecker of all of this state.
2019-11-12 09:56:01 -08:00
Hamish Knight
ed77b86c24
getInterfaceType() always returns a type
2019-11-12 07:50:29 -08:00
Robert Widmann
efb6117bd8
[NFC] Remove Diagnostic State From TypeChecker
...
Push this map into ConstraintSystem and have the search and retrieval chain up the linked list of base constraint systems.
2019-11-10 22:05:32 -08:00
Robert Widmann
7bad9aacc3
Drop the TypeChecker out of ConstraintSystem
2019-11-10 13:26:47 -08:00
Doug Gregor
bc926f7eb7
[Constraint system] Drop the root expression from FailureDiagnostic.
...
We're not using it for anything, now.
2019-11-08 22:38:49 -08:00
Doug Gregor
9204d7cee4
[Constraint systme] Rename solve() -> solveImpl().
...
solve() is a bit too overloaded, so rename the version that does the
core "evaluate all of the steps to produce a set of solutions"
functionality to solveImpl().
2019-11-08 21:26:04 -08:00
Robert Widmann
e6dbfa393a
Move Utilities back to TypeChecker
2019-11-06 15:20:46 -08:00
Robert Widmann
3cf7b5451e
Remove references to TypeChecker in the constraint system
2019-11-06 15:08:59 -08:00
Robert Widmann
a840af35cd
Move getSelfForInitDelegationInConstructor to ASTContext
2019-11-06 15:08:59 -08:00
Pavel Yaskevich
6d02fb7815
Merge pull request #28057 from xedin/assign-diags
...
[Diagnostics] Port the rest of assignment diagnostics to the new framework
2019-11-06 00:11:08 -08:00
Robert Widmann
e804d6ed9a
Make TypeChecker::getDefaultType a utility
2019-11-05 20:31:15 -08:00
Robert Widmann
fba3c1d0cb
Make building and manipulating checked DeclRefs a utility
2019-11-05 20:30:40 -08:00
Robert Widmann
392df03466
[NFC] Drop unnecessary TypeCheckers from Sema
2019-11-05 20:30:40 -08:00
Pavel Yaskevich
30440d8235
[Diagnostics] Properly diagnose assignment mismatch in ambiguity cases
2019-11-05 12:38:13 -08:00
Holly Borla
33b9d4c446
[Diagnostics] Change FailureDiagnostic::resolveType to replace
...
holes with generic parameters directly when possible.
2019-11-05 09:17:53 -08:00
Holly Borla
4fd1377c81
[ConstraintSystem] With the new approach for holes, hole propagation happens
...
automatically.
This commit also renames `ConstraintSystem::recordHole/isHole` to
`recordPotentialHole` and `isPotentialHole` to make it clear that
we don't know for sure whether a type variable is a hole until it's
bound to unresolved.
2019-11-05 09:15:13 -08:00
Holly Borla
e63f259f4f
[ConstraintSystem] Bind holes to UnresolvedType instead of Any.
2019-11-05 09:15:13 -08:00
Holly Borla
9093dfcd20
[ConstraintSystem] Move hole propagation to addTypeVariableConstraintsToWorkList
...
where we are already gathering constraints.
2019-11-05 09:15:13 -08:00
Holly Borla
3bc2269f4f
[ConstraintSystem] Allow generic parameters and holes to default to
...
`Any` in `getPotentialBindings` rather than `ComponentStep::take`.
2019-11-05 09:15:13 -08:00
Holly Borla
561e527848
[ConstraintSystem] Extend the ExplicitlySpecifyGenericArguments fix to cover
...
all cases of missing generic parameters.
In `ComponentStep::take` when there are no bindings or disjunctions, use hole
propagation to default remaining free type variables that aren't for generic
parameters and continue solving. Rather than using a defaultable constraint for
holes, assign a fixed type directly when we have no bindings to try.
2019-11-05 09:15:13 -08:00
Hamish Knight
7077a68b83
[Sema] Diagnose unsound pointer conversions
...
Diagnose ephemeral conversions that are passed to @_nonEphemeral
parameters. Currently, this defaults to a warning with a frontend flag
to upgrade to an error. Hopefully this will become an error by default
in a future language version.
2019-11-03 08:42:25 -08:00
Brent Royal-Gordon
17169fc1fe
Merge pull request #27950 from brentdax/dumpster-fire
...
[NFC] Standardize dump() methods in frontend
2019-10-31 20:36:26 -07:00
Brent Royal-Gordon
ffbe53e290
[NFC] Eliminate const_casts in constraint system dumpers
2019-10-31 18:41:11 -07:00
Robert Widmann
0267384e11
Fixup SourceKit and Tests
...
Patch up all the places that are making a syntactic judgement about the
isInvalid() bit in a ValueDecl. They may continue to use that query,
but most guard themselves on whether the interface type has been set.
2019-10-30 15:09:14 -07:00
Robert Widmann
efe877e6ee
Remove unnecesary interface type resets
...
Now that setInvalid() is a semantic property, drop the explicit calls to
reset the interface type. It is already ErrorType.
2019-10-30 15:09:14 -07:00
Robert Widmann
118f68b1be
Make getProtocol and getLiteralProtocol static utilities
2019-10-30 12:55:42 -07:00
Robert Widmann
972e755e9b
Give ConstraintSystem's outlet to the ASTContext
...
Make it less tempting to ask for the type checker embedded into
ConstraintSystem by using the accessor to the ASTContext.
2019-10-30 12:55:42 -07:00
Robert Widmann
da2b063af9
Make calls to lookupMember actually look static
2019-10-30 12:55:42 -07:00
Robert Widmann
bcf03aa019
Make getDeclTypeCheckingSemantics a utility
2019-10-30 12:55:10 -07:00
Robert Widmann
b849e51768
Use operator bool to claw back some readability
2019-10-29 16:56:21 -07:00
Robert Widmann
3e1a61f425
[NFC] Fold The Tri-State In Optional<ProtocolConformanceRef>
...
ProtocolConformanceRef already has an invalid state. Drop all of the
uses of Optional<ProtocolConformanceRef> and just use
ProtocolConformanceRef::forInvalid() to represent it. Mechanically
translate all of the callers and callsites to use this new
representation.
2019-10-29 16:55:56 -07:00
Pavel Yaskevich
58329e0c27
Revert "[Diagnostics][Qol] SR-11295 Emit diagnostics for same type coercion. "
2019-10-25 01:05:07 -07:00
Luciano Almeida
48fdd58a42
Merge branch 'master' of https://github.com/apple/swift into SR-11295-warning-unecessary-casts
2019-10-24 00:58:03 -03:00
Luciano Almeida
3dc82a6271
Handling ExplicityCoercion in simplifyLocator
2019-10-24 00:27:53 -03:00
Hamish Knight
c95ef110d5
[CS] Make resolveLocatorToDecl simpler and more robust ( #27836 )
...
[CS] Make resolveLocatorToDecl simpler and more robust
2019-10-23 15:11:23 -07:00
Pavel Yaskevich
5a12e956f1
[ConstraintSystem] Add a new "condition" locator path element
...
"Condition" path element is used to represent a condition expression
associated with `if` expression or ternary operator `? :`.
Locator has been changed in the way that it's now anchored from `if`
itself which simplifies down to condition expression it needed.
2019-10-22 15:00:37 -07:00
Hamish Knight
e4e5b5e94a
Allow getCalleeLocator to not look through applies
...
Some clients may only want a callee locator for an
immediate decl reference such as `x.foo`, but not
for `x.foo()`.
2019-10-22 11:54:04 -07:00