mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge pull request #9085 from a3d4/refactor-error-ids-script
Refactor error ID checker script
This commit is contained in:
commit
de5e283574
@ -323,7 +323,7 @@ jobs:
|
||||
- checkout
|
||||
- run:
|
||||
name: Check for error codes
|
||||
command: ./scripts/correct_error_ids.py --noconfirm
|
||||
command: ./scripts/fix_error_ids.py --check-only
|
||||
|
||||
chk_pylint:
|
||||
docker:
|
||||
|
@ -61,7 +61,7 @@ struct InvalidAstError: virtual util::Exception {};
|
||||
* They are passed as the first parameter of error reporting functions.
|
||||
* Suffix _error helps to find them in the sources.
|
||||
* The struct ErrorId prevents incidental calls like typeError(3141) instead of typeError(3141_error).
|
||||
* To create a new ID, one can add 0000_error and then run "python ./scripts/correct_error_ids.py"
|
||||
* To create a new ID, one can add 0000_error and then run "python ./scripts/fix_error_ids.py"
|
||||
* from the root of the repo.
|
||||
*/
|
||||
struct ErrorId { unsigned long long error = 0; };
|
||||
|
@ -119,28 +119,19 @@ def find_source_files(top_dir):
|
||||
|
||||
|
||||
def main(argv):
|
||||
check_only = False
|
||||
noconfirm = False
|
||||
opts, args = getopt.getopt(argv, "", ["noconfirm"])
|
||||
opts, args = getopt.getopt(argv, "", ["check-only", "noconfirm"])
|
||||
|
||||
for opt, arg in opts:
|
||||
if opt == '--noconfirm':
|
||||
if opt == '--check-only':
|
||||
check_only = True
|
||||
elif opt == '--noconfirm':
|
||||
noconfirm = True
|
||||
|
||||
random.seed()
|
||||
cwd = os.getcwd()
|
||||
|
||||
if not noconfirm:
|
||||
answer = input(
|
||||
f"This script checks and corrects *_error literals in .h and .cpp files\n"
|
||||
f"in {cwd}, recursively.\n\n"
|
||||
f"Please commit current changes first, and review the results when the script finishes.\n\n"
|
||||
f"Do you want to start [Y/N]? "
|
||||
)
|
||||
while len(answer) == 0 or answer not in "YNyn":
|
||||
answer = input("[Y/N]? ")
|
||||
if answer not in "yY":
|
||||
exit(0)
|
||||
|
||||
source_file_names = find_source_files(cwd)
|
||||
|
||||
used_ids = get_used_ids(source_file_names)
|
||||
@ -160,11 +151,25 @@ def main(argv):
|
||||
if ok:
|
||||
print("No incorrect IDs found")
|
||||
exit(0)
|
||||
else:
|
||||
fix_ids(used_ids, source_file_names)
|
||||
print("Fixing completed")
|
||||
|
||||
if check_only:
|
||||
exit(1)
|
||||
|
||||
if not noconfirm:
|
||||
answer = input(
|
||||
"\nDo you want to fix incorrect IDs?\n"
|
||||
"Please commit current changes first, and review the results when the script finishes.\n"
|
||||
"[Y/N]? "
|
||||
)
|
||||
while len(answer) == 0 or answer not in "YNyn":
|
||||
answer = input("[Y/N]? ")
|
||||
if answer not in "yY":
|
||||
exit(1)
|
||||
|
||||
fix_ids(used_ids, source_file_names)
|
||||
print("Fixing completed")
|
||||
exit(2)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main(sys.argv[1:])
|
Loading…
Reference in New Issue
Block a user