diff options
author | Rohit Burra <iamrohit7@gmail.com> | 2016-10-30 13:52:01 +0530 |
---|---|---|
committer | Rohit Burra <iamrohit7@gmail.com> | 2016-11-01 11:35:32 +0530 |
commit | 877d7166dbd86b6e1c6e57aa32874af99fafd53f (patch) | |
tree | 29611aef8db2b7e6c663c8a0b5939b82856ea829 /python/tidy/servo_tidy/tidy.py | |
parent | 357e746a9a37a68604fe5ae1c3fb30334f75b4ac (diff) | |
download | servo-877d7166dbd86b6e1c6e57aa32874af99fafd53f.tar.gz servo-877d7166dbd86b6e1c6e57aa32874af99fafd53f.zip |
Alphabetical order for #![feature(...)] in lib.rs
Diffstat (limited to 'python/tidy/servo_tidy/tidy.py')
-rw-r--r-- | python/tidy/servo_tidy/tidy.py | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/python/tidy/servo_tidy/tidy.py b/python/tidy/servo_tidy/tidy.py index 1dcbd4896d1..f6bba93f25f 100644 --- a/python/tidy/servo_tidy/tidy.py +++ b/python/tidy/servo_tidy/tidy.py @@ -385,11 +385,14 @@ def check_rust(file_name, lines): import_block = False whitespace = False + is_lib_rs_file = file_name.endswith("lib.rs") + prev_use = None prev_open_brace = False current_indent = 0 prev_crate = {} prev_mod = {} + prev_feature_name = "" decl_message = "{} is not in alphabetical order" decl_expected = "\n\t\033[93mexpected: {}\033[0m" @@ -510,6 +513,28 @@ def check_rust(file_name, lines): + decl_found.format(crate_name)) prev_crate[indent] = crate_name + # check alphabetical order of feature attributes in lib.rs files + if is_lib_rs_file: + match = re.search(r"#!\[feature\((.*)\)\]", line) + + if match: + features = map(lambda w: w.strip(), match.group(1).split(',')) + sorted_features = sorted(features) + if sorted_features != features: + yield(idx + 1, decl_message.format("feature attribute") + + decl_expected.format(tuple(sorted_features)) + + decl_found.format(tuple(features))) + + if prev_feature_name > sorted_features[0]: + yield(idx + 1, decl_message.format("feature attribute") + + decl_expected.format(prev_feature_name + " after " + sorted_features[0]) + + decl_found.format(prev_feature_name + " before " + sorted_features[0])) + + prev_feature_name = sorted_features[0] + else: + # not a feature attribute line, so empty previous name + prev_feature_name = "" + # imports must be in the same line, alphabetically sorted, and merged # into a single import block if line.startswith("use "): |