diff options
author | bors-servo <lbergstrom+bors@mozilla.com> | 2017-08-23 17:18:31 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-08-23 17:18:31 -0500 |
commit | 474369618965569407d127b1e8c481e757cc59d3 (patch) | |
tree | 0b8de77ba9886000baf5c421f26364b1f77b8fcc /python/tidy | |
parent | bde7135a3be80f8d8a4d15719394eddc97934392 (diff) | |
parent | c5fe2351124c673d1dc4d59355a03654b4fcc541 (diff) | |
download | servo-474369618965569407d127b1e8c481e757cc59d3.tar.gz servo-474369618965569407d127b1e8c481e757cc59d3.zip |
Auto merge of #18179 - davidcl:master, r=jdm
Automatically verify that derive() lists are alphabetically ordered #…
<!-- Please describe your changes on the following line: -->
Automatically verify that derive() lists are alphabetically ordered #18172
---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: -->
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [X] These changes fix #18172 (github issue number if applicable).
<!-- Either: -->
- [X] There are tests for these changes OR
- [ ] These changes do not require tests because _____
<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->
<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/18179)
<!-- Reviewable:end -->
Diffstat (limited to 'python/tidy')
-rw-r--r-- | python/tidy/servo_tidy/tidy.py | 13 | ||||
-rw-r--r-- | python/tidy/servo_tidy_tests/rust_tidy.rs | 1 | ||||
-rw-r--r-- | python/tidy/servo_tidy_tests/test_tidy.py | 1 |
3 files changed, 15 insertions, 0 deletions
diff --git a/python/tidy/servo_tidy/tidy.py b/python/tidy/servo_tidy/tidy.py index 89e6cef1296..c3c76edbb5f 100644 --- a/python/tidy/servo_tidy/tidy.py +++ b/python/tidy/servo_tidy/tidy.py @@ -692,6 +692,19 @@ def check_rust(file_name, lines): # we now erase previous entries prev_mod = {} + # derivable traits should be alphabetically ordered + if is_attribute: + # match the derivable traits filtering out macro expansions + match = re.search(r"#\[derive\(([a-zA-Z, ]*)", line) + if match: + derives = map(lambda w: w.strip(), match.group(1).split(',')) + # sort, compare and report + sorted_derives = sorted(derives) + if sorted_derives != derives: + yield(idx + 1, decl_message.format("derivable traits list") + + decl_expected.format(", ".join(sorted_derives)) + + decl_found.format(", ".join(derives))) + # Avoid flagging <Item=Foo> constructs def is_associated_type(match, line): diff --git a/python/tidy/servo_tidy_tests/rust_tidy.rs b/python/tidy/servo_tidy_tests/rust_tidy.rs index bed4664a279..c1be1695156 100644 --- a/python/tidy/servo_tidy_tests/rust_tidy.rs +++ b/python/tidy/servo_tidy_tests/rust_tidy.rs @@ -21,6 +21,7 @@ extern crate webrender_api; extern crate style_traits; #[foo = "bar,baz"] +#[derive(Copy,Debug, ComputeSquaredDistance)] impl test { fn test_fun(y:f32)->f32{ diff --git a/python/tidy/servo_tidy_tests/test_tidy.py b/python/tidy/servo_tidy_tests/test_tidy.py index df8bf316cd0..73a37cd4612 100644 --- a/python/tidy/servo_tidy_tests/test_tidy.py +++ b/python/tidy/servo_tidy_tests/test_tidy.py @@ -107,6 +107,7 @@ class CheckTidiness(unittest.TestCase): self.assertTrue('mod declaration is not in alphabetical order' in errors.next()[2]) self.assertEqual('mod declaration spans multiple lines', errors.next()[2]) self.assertTrue('extern crate declaration is not in alphabetical order' in errors.next()[2]) + self.assertTrue('derivable traits list is not in alphabetical order' in errors.next()[2]) self.assertEqual('found an empty line following a {', errors.next()[2]) self.assertEqual('missing space before ->', errors.next()[2]) self.assertEqual('missing space after ->', errors.next()[2]) |