Commit Graph

712 Commits

Author SHA1 Message Date
Xi Ge
4475b07613 swift-api-digester: teach the tool to keep track of ownership attributes. 2016-10-27 11:55:24 -07:00
Xi Ge
a0678c349c swift-api-digester: allow function types to be matched with other types. 2016-10-25 22:21:42 -07:00
Xi Ge
ad3a9f276b [swift-api-digester] Detect static decls become non-static and also the other way around. 2016-10-24 17:13:34 -07:00
Xi Ge
b8ee47c80b [sdk-api-digester] Record whether a value decl is static.
Changing a static member to a non-static one, or the other way around,
can be source-breaking.
2016-10-21 14:08:39 -07:00
Xi Ge
87d22acb67 [swift-api-digester] Ensure we exclude decls of low accessibility from the API comparison. (#5382) 2016-10-20 12:02:37 -07:00
Michael Ilseman
0cb2188ebd [Swift version] Fix up test cases 2016-10-18 15:02:49 -07:00
Michael Ilseman
12efcc9db6 [Version] Don't allow effective sub-versions, only major versions
Also offer a note when the major version is valid on its own.
2016-10-18 14:43:21 -07:00
Xi Ge
647f65ea21 swift-api-digester: teach the tool to output constructors' parameter type changes. (#5351) 2016-10-18 13:03:21 -07:00
Xi Ge
edea59722e api-digester: teach the tool to detect new mutating/throwing functions (#5284) 2016-10-13 21:04:39 -07:00
Xi Ge
55f194b3ef api-digester: in module dump, record whether a func decl is mutating. 2016-10-13 11:57:42 -07:00
Xi Ge
ab9b035dbc [test] api-digester: add a test to ensure the dumped module content is expected. 2016-10-13 11:53:07 -07:00
Xi Ge
452ebbc6eb [Tools] Add a tool to detect source-breaking API changes introduced from libraries. (#5236)
[Tools] Add a tool to detect source-breaking API changes introduced from libraries.

swift-api-digester is a test utility to detect source-breaking API changes
during the evolution of a swift library. The tool works on two phases:
(1) dumping library contents as a json file, and (2) comparing two json
files textually to report interesting changes.

During phase (1), the api-digester looks up every declarations inside
a module and outputs a singly-rooted tree that encloses interesting
details of the API level.

During phase (2), api-digester applies structure-information comparision
algorithms on two given singly root trees, trying to figure out, as
precise as possible, the branches/leaves in the trees that differ from
each other. Further analysis decides whether the changed leaves/branches
can be reflected as source-breaking changes for API users. If they are,
the output of api-digester will include such changes.

Also, this commit includes a regression test that make sure API changes
from the Swift stdlib are expected.
2016-10-11 19:43:01 -07:00