summaryrefslogtreecommitdiff
path: root/compilerplugins/clang/unusedfields.py
diff options
context:
space:
mode:
Diffstat (limited to 'compilerplugins/clang/unusedfields.py')
-rwxr-xr-xcompilerplugins/clang/unusedfields.py16
1 files changed, 10 insertions, 6 deletions
diff --git a/compilerplugins/clang/unusedfields.py b/compilerplugins/clang/unusedfields.py
index 9b313c89c9eb..6503b63fb626 100755
--- a/compilerplugins/clang/unusedfields.py
+++ b/compilerplugins/clang/unusedfields.py
@@ -246,14 +246,18 @@ for d in (potentialClasses - excludedClasses):
def natural_sort_key(s, _nsre=re.compile('([0-9]+)')):
return [int(text) if text.isdigit() else text.lower()
for text in re.split(_nsre, s)]
+# sort by both the source-line and the datatype, so the output file ordering is stable
+# when we have multiple items on the same source line
+def v_sort_key(v):
+ return natural_sort_key(v[1]) + [v[0]]
# sort results by name and line number
-tmp1list = sorted(untouchedSet, key=lambda v: natural_sort_key(v[1]))
-tmp2list = sorted(writeonlySet, key=lambda v: natural_sort_key(v[1]))
-tmp3list = sorted(canBePrivateSet, key=lambda v: natural_sort_key(v[1]))
-tmp4list = sorted(readonlySet, key=lambda v: natural_sort_key(v[1]))
-tmp5list = sorted(onlyUsedInConstructorSet, key=lambda v: natural_sort_key(v[1]))
-tmp6list = sorted(allFieldsCanBePrivateSet, key=lambda v: natural_sort_key(v[1]))
+tmp1list = sorted(untouchedSet, key=lambda v: v_sort_key(v))
+tmp2list = sorted(writeonlySet, key=lambda v: v_sort_key(v))
+tmp3list = sorted(canBePrivateSet, key=lambda v: v_sort_key(v))
+tmp4list = sorted(readonlySet, key=lambda v: v_sort_key(v))
+tmp5list = sorted(onlyUsedInConstructorSet, key=lambda v: v_sort_key(v))
+tmp6list = sorted(allFieldsCanBePrivateSet, key=lambda v: v_sort_key(v))
# print out the results
with open("compilerplugins/clang/unusedfields.untouched.results", "wt") as f: