aboutsummaryrefslogtreecommitdiffstats
path: root/python/tidy/servo_tidy/tidy.py
diff options
context:
space:
mode:
authorRohit Burra <iamrohit7@gmail.com>2016-10-30 13:52:01 +0530
committerRohit Burra <iamrohit7@gmail.com>2016-11-01 11:35:32 +0530
commit877d7166dbd86b6e1c6e57aa32874af99fafd53f (patch)
tree29611aef8db2b7e6c663c8a0b5939b82856ea829 /python/tidy/servo_tidy/tidy.py
parent357e746a9a37a68604fe5ae1c3fb30334f75b4ac (diff)
downloadservo-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.py25
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 "):