Commit Graph

13 Commits

Author SHA1 Message Date
Robert Widmann
d488f31940 Use String Equality in the Dependency Verifier 2021-02-23 12:09:32 -08:00
Robert Widmann
d4673467af Switch the Subject of Dependency References to a DeclContext 2021-02-23 12:09:32 -08:00
Robert Widmann
3cee2af345 Remove Cascading Verification from the Dependency Verifier`
Now that the frontend no longer produces these edges, we do not need to assert about them.
2020-09-21 14:47:39 -06:00
Robert Widmann
9e7964f4a5 Remove Reference::cascades 2020-09-21 10:37:42 -06:00
Robert Widmann
01563cea97 [NFC] Fold Switch-Nest in Obligation Verification
Fold the switch statement to have each arm share as much code between them as possible. This reduces a ton of duplication from the error continuations and makes it slightly easier to update this code when more kinds of cases show up here later.
2020-08-11 15:37:04 -07:00
Robert Widmann
537c3867d7 Use the New Evaluator-Based Dependency Enumerator in the Dependency Verifier 2020-05-21 18:54:14 -07:00
Saleem Abdulrasool
09975d1253 sprinkle llvm_unreachable for covered switches (NFC)
Annotate the covered switches with `llvm_unreachable` to avoid the MSVC
warning which does not recognise the covered switches.  This allows us
to avoid a spew of warnings.
2020-05-07 11:05:35 -07:00
Robert Widmann
a337b67f69 Stage In Flags To Fall Back To Manual Tracking
Request-based incremental dependencies are enabled by default. For the time being, add a flag that will turn them off and switch back to manual dependency tracking.
2020-03-31 16:16:53 -07:00
Robert Widmann
55241243f7 Defensively copy obligation keys 2020-03-19 19:23:12 -07:00
Robert Widmann
6abf057dc7 Teach the verifier to emit fixits
Emit nicely formatted fixits that contain the expectations the user should have written.
2020-03-19 14:16:53 -07:00
Owen Voorhees
0ffb727dfe [DependencyVerifier] Route DependencyVerifier diags through DiagnosticEngine 2020-03-05 12:41:04 -08:00
Robert Widmann
f85ec3825f Address review feedback 2020-03-03 16:46:04 -08:00
Robert Widmann
6ccba70bb3 [Incremental] Introducing: DependencyVerifier
The DependencyVerifier is a DiagnosticVerifier-alike utility that takes annotations in user code and transforms them into a set of expectations. Those expectations are met by corresponding "obligations", which are constructed by reading the contents of the referenced name tracker associated with the source files for each of the primary inputs to a frontend job. The verifier will then pair off expectations and obligations, and ensure that any remaining unpaired obligations are diagnosed as failures.

This tool will not only ensure the correctness of the referenced name tracker's output, it will provide us with tests that ensure its output is stable, and give us the confidence to replace it with an evaluator-based tracking scheme in the future.

Resolves rdar://59773883
2020-03-02 16:45:37 -08:00