Commit Graph

14 Commits

Author SHA1 Message Date
Robert Widmann
8c69814f5c Define Dependency Sinks
Convert most of the name lookup requests and a few other ancillary typechecking requests into dependency sinks.

Some requests are also combined sinks and sources in order to emulate the current scheme, which performs scope changes based on lookup flags. This is generally undesirable, since it means those requests cannot immediately be generalized to a purely context-based scheme because they depend on some client-provided entropy source. In particular, the few callers that are providing the "known private" name lookup flag need to be converted to perform lookups in the appropriate private context.

Clients that are passing "no known dependency" are currently considered universally incorrect and are outside the scope of the compatibility guarantees. This means that request-based dependency tracking registers strictly more edges than manual dependency tracking. It also means that once we fixup the clients that are passing "known private", we can completely remove these name lookup flags.

Finally, some tests had to change to accomodate the new scheme. Currently, we go out of our way to register a dependency edge for extensions that declare protocol conformances. However, we were also asserting in at least one test that extensions without protocol conformances weren't registering dependency edges. This is blatantly incorrect and has been undone now that the request-based scheme is automatically registering this edge.
2020-03-31 16:16:53 -07:00
Mishal Shah
e7cd5ab17f Update master to build with Xcode 11.4 2020-03-24 11:30:45 -07:00
Robert Widmann
bafd707429 Register Conformances as Potential Member Constraints
Unwind a hack whose stated purpose was to register a potential member
edge from an extension to the extended type. In reality, this only
registered a plain member dependency on 'deinit'. This edge is
insufficient in isolation to cause a rebuild of a dependent file in the
case where a type and its extension live in separate files. However, we
appear to have been saved by the redundancy in edge registration because the
lookup for the extended type will register a top-level or nominal
dependency (for an unqualified or qualified reference respectively). The
worry there is if a protocol conformance edge *should* flip a previously
private nominal dependency edge to a cascading edge. In such a case, the
old code would not have been able to make the cascading edge promotion,
and we would have potentially miscompiled by not rescheduling dependent
jobs.
2020-03-23 11:20:05 -07:00
Robert Widmann
ae9ffc842e Remove a flaky failure test
The general instability of this test across multiple platforms indicates
there are either serious problems with our dependency tracking
infrastructure, or memory corruption problems in the verifier, or both.

rdar://60689945
2020-03-20 09:52:25 -07:00
Robert Widmann
589e19f7c4 Remove a missing dependency edge on Windows 2020-03-19 18:12:46 -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
Robert Widmann
3f7c89ae9c Correct diagnostic for plain member constraints
This used to print as just a plain space.

Resolves rdar://60030114
2020-03-16 11:22:18 -07:00
Robert Widmann
24d86a7ca0 XFAIL a flaky test harder 2020-03-04 10:39:48 -08:00
Robert Widmann
7a3b24a6ad XFAIL a flaky test 2020-03-04 09:24:57 -08:00
Robert Widmann
e7321799d2 [DependencyVerifier] XFAIL the failure test for now
rdar://60030114
2020-03-04 00:40:06 -08:00
Robert Widmann
f85ec3825f Address review feedback 2020-03-03 16:46:04 -08:00
Robert Widmann
011c14d61c [Hack] Windows Doesn't Support Globstar 'find' 2020-03-02 16:45:37 -08:00
Robert Widmann
2bd112d653 [Incremental] Rudimentary Tests for Verified Dependencies 2020-03-02 16:45:37 -08:00
Robert Widmann
3c9b592b8b [Incremental] Add a utility for generating simple output file maps 2020-03-02 16:45:37 -08:00