mirror of
https://github.com/astral-sh/ruff
synced 2026-01-25 07:20:50 -05:00
1675 lines
36 KiB
Rust
1675 lines
36 KiB
Rust
use once_cell::sync::Lazy;
|
|
use rustc_hash::FxHashMap;
|
|
use rustpython_ast::Location;
|
|
|
|
use crate::ast::types::Range;
|
|
use crate::autofix::Fix;
|
|
use crate::checks::CheckKind;
|
|
use crate::source_code_locator::SourceCodeLocator;
|
|
use crate::{Check, Settings};
|
|
|
|
/// See: <https://github.com/microsoft/vscode/blob/095ddabc52b82498ee7f718a34f9dd11d59099a8/src/vs/base/common/strings.ts#L1094>
|
|
static CONFUSABLES: Lazy<FxHashMap<u32, u32>> = Lazy::new(|| {
|
|
#[allow(clippy::unreadable_literal)]
|
|
FxHashMap::from_iter([
|
|
(8232, 32),
|
|
(8233, 32),
|
|
(5760, 32),
|
|
(8192, 32),
|
|
(8193, 32),
|
|
(8194, 32),
|
|
(8195, 32),
|
|
(8196, 32),
|
|
(8197, 32),
|
|
(8198, 32),
|
|
(8200, 32),
|
|
(8201, 32),
|
|
(8202, 32),
|
|
(8287, 32),
|
|
(8199, 32),
|
|
(8239, 32),
|
|
(2042, 95),
|
|
(65101, 95),
|
|
(65102, 95),
|
|
(65103, 95),
|
|
(8208, 45),
|
|
(8209, 45),
|
|
(8210, 45),
|
|
(65112, 45),
|
|
(1748, 45),
|
|
(8259, 45),
|
|
(727, 45),
|
|
(8722, 45),
|
|
(10134, 45),
|
|
(11450, 45),
|
|
(1549, 44),
|
|
(1643, 44),
|
|
(8218, 44),
|
|
(184, 44),
|
|
(42233, 44),
|
|
(894, 59),
|
|
(2307, 58),
|
|
(2691, 58),
|
|
(1417, 58),
|
|
(1795, 58),
|
|
(1796, 58),
|
|
(5868, 58),
|
|
(65072, 58),
|
|
(6147, 58),
|
|
(6153, 58),
|
|
(8282, 58),
|
|
(1475, 58),
|
|
(760, 58),
|
|
(42889, 58),
|
|
(8758, 58),
|
|
(720, 58),
|
|
(42237, 58),
|
|
(451, 33),
|
|
(11601, 33),
|
|
(660, 63),
|
|
(577, 63),
|
|
(2429, 63),
|
|
(5038, 63),
|
|
(42731, 63),
|
|
(119149, 46),
|
|
(8228, 46),
|
|
(1793, 46),
|
|
(1794, 46),
|
|
(42510, 46),
|
|
(68176, 46),
|
|
(1632, 46),
|
|
(1776, 46),
|
|
(42232, 46),
|
|
(1373, 96),
|
|
(65287, 96),
|
|
(8219, 96),
|
|
(8242, 96),
|
|
(1370, 96),
|
|
(1523, 96),
|
|
(8175, 96),
|
|
(65344, 96),
|
|
(900, 96),
|
|
(8189, 96),
|
|
(8125, 96),
|
|
(8127, 96),
|
|
(8190, 96),
|
|
(697, 96),
|
|
(884, 96),
|
|
(712, 96),
|
|
(714, 96),
|
|
(715, 96),
|
|
(756, 96),
|
|
(699, 96),
|
|
(701, 96),
|
|
(700, 96),
|
|
(702, 96),
|
|
(42892, 96),
|
|
(1497, 96),
|
|
(2036, 96),
|
|
(2037, 96),
|
|
(5194, 96),
|
|
(5836, 96),
|
|
(94033, 96),
|
|
(94034, 96),
|
|
(65339, 91),
|
|
(10088, 40),
|
|
(10098, 40),
|
|
(12308, 40),
|
|
(64830, 40),
|
|
(65341, 93),
|
|
(10089, 41),
|
|
(10099, 41),
|
|
(12309, 41),
|
|
(64831, 41),
|
|
(10100, 123),
|
|
(119060, 123),
|
|
(10101, 125),
|
|
(65342, 94),
|
|
(8270, 42),
|
|
(1645, 42),
|
|
(8727, 42),
|
|
(66335, 42),
|
|
(5941, 47),
|
|
(8257, 47),
|
|
(8725, 47),
|
|
(8260, 47),
|
|
(9585, 47),
|
|
(10187, 47),
|
|
(10744, 47),
|
|
(119354, 47),
|
|
(12755, 47),
|
|
(12339, 47),
|
|
(11462, 47),
|
|
(20031, 47),
|
|
(12035, 47),
|
|
(65340, 92),
|
|
(65128, 92),
|
|
(8726, 92),
|
|
(10189, 92),
|
|
(10741, 92),
|
|
(10745, 92),
|
|
(119311, 92),
|
|
(119355, 92),
|
|
(12756, 92),
|
|
(20022, 92),
|
|
(12034, 92),
|
|
(42872, 38),
|
|
(708, 94),
|
|
(710, 94),
|
|
(5869, 43),
|
|
(10133, 43),
|
|
(66203, 43),
|
|
(8249, 60),
|
|
(10094, 60),
|
|
(706, 60),
|
|
(119350, 60),
|
|
(5176, 60),
|
|
(5810, 60),
|
|
(5120, 61),
|
|
(11840, 61),
|
|
(12448, 61),
|
|
(42239, 61),
|
|
(8250, 62),
|
|
(10095, 62),
|
|
(707, 62),
|
|
(119351, 62),
|
|
(5171, 62),
|
|
(94015, 62),
|
|
(8275, 126),
|
|
(732, 126),
|
|
(8128, 126),
|
|
(8764, 126),
|
|
(65372, 124),
|
|
(65293, 45),
|
|
(120784, 50),
|
|
(120794, 50),
|
|
(120804, 50),
|
|
(120814, 50),
|
|
(120824, 50),
|
|
(130034, 50),
|
|
(42842, 50),
|
|
(423, 50),
|
|
(1000, 50),
|
|
(42564, 50),
|
|
(5311, 50),
|
|
(42735, 50),
|
|
(119302, 51),
|
|
(120785, 51),
|
|
(120795, 51),
|
|
(120805, 51),
|
|
(120815, 51),
|
|
(120825, 51),
|
|
(130035, 51),
|
|
(42923, 51),
|
|
(540, 51),
|
|
(439, 51),
|
|
(42858, 51),
|
|
(11468, 51),
|
|
(1248, 51),
|
|
(94011, 51),
|
|
(71882, 51),
|
|
(120786, 52),
|
|
(120796, 52),
|
|
(120806, 52),
|
|
(120816, 52),
|
|
(120826, 52),
|
|
(130036, 52),
|
|
(5070, 52),
|
|
(71855, 52),
|
|
(120787, 53),
|
|
(120797, 53),
|
|
(120807, 53),
|
|
(120817, 53),
|
|
(120827, 53),
|
|
(130037, 53),
|
|
(444, 53),
|
|
(71867, 53),
|
|
(120788, 54),
|
|
(120798, 54),
|
|
(120808, 54),
|
|
(120818, 54),
|
|
(120828, 54),
|
|
(130038, 54),
|
|
(11474, 54),
|
|
(5102, 54),
|
|
(71893, 54),
|
|
(119314, 55),
|
|
(120789, 55),
|
|
(120799, 55),
|
|
(120809, 55),
|
|
(120819, 55),
|
|
(120829, 55),
|
|
(130039, 55),
|
|
(66770, 55),
|
|
(71878, 55),
|
|
(2819, 56),
|
|
(2538, 56),
|
|
(2666, 56),
|
|
(125131, 56),
|
|
(120790, 56),
|
|
(120800, 56),
|
|
(120810, 56),
|
|
(120820, 56),
|
|
(120830, 56),
|
|
(130040, 56),
|
|
(547, 56),
|
|
(546, 56),
|
|
(66330, 56),
|
|
(2663, 57),
|
|
(2920, 57),
|
|
(2541, 57),
|
|
(3437, 57),
|
|
(120791, 57),
|
|
(120801, 57),
|
|
(120811, 57),
|
|
(120821, 57),
|
|
(120831, 57),
|
|
(130041, 57),
|
|
(42862, 57),
|
|
(11466, 57),
|
|
(71884, 57),
|
|
(71852, 57),
|
|
(71894, 57),
|
|
(9082, 97),
|
|
(65345, 97),
|
|
(119834, 97),
|
|
(119886, 97),
|
|
(119938, 97),
|
|
(119990, 97),
|
|
(120042, 97),
|
|
(120094, 97),
|
|
(120146, 97),
|
|
(120198, 97),
|
|
(120250, 97),
|
|
(120302, 97),
|
|
(120354, 97),
|
|
(120406, 97),
|
|
(120458, 97),
|
|
(593, 97),
|
|
(945, 97),
|
|
(120514, 97),
|
|
(120572, 97),
|
|
(120630, 97),
|
|
(120688, 97),
|
|
(120746, 97),
|
|
(65313, 65),
|
|
(119808, 65),
|
|
(119860, 65),
|
|
(119912, 65),
|
|
(119964, 65),
|
|
(120016, 65),
|
|
(120068, 65),
|
|
(120120, 65),
|
|
(120172, 65),
|
|
(120224, 65),
|
|
(120276, 65),
|
|
(120328, 65),
|
|
(120380, 65),
|
|
(120432, 65),
|
|
(913, 65),
|
|
(120488, 65),
|
|
(120546, 65),
|
|
(120604, 65),
|
|
(120662, 65),
|
|
(120720, 65),
|
|
(5034, 65),
|
|
(5573, 65),
|
|
(42222, 65),
|
|
(94016, 65),
|
|
(66208, 65),
|
|
(119835, 98),
|
|
(119887, 98),
|
|
(119939, 98),
|
|
(119991, 98),
|
|
(120043, 98),
|
|
(120095, 98),
|
|
(120147, 98),
|
|
(120199, 98),
|
|
(120251, 98),
|
|
(120303, 98),
|
|
(120355, 98),
|
|
(120407, 98),
|
|
(120459, 98),
|
|
(388, 98),
|
|
(5071, 98),
|
|
(5234, 98),
|
|
(5551, 98),
|
|
(65314, 66),
|
|
(8492, 66),
|
|
(119809, 66),
|
|
(119861, 66),
|
|
(119913, 66),
|
|
(120017, 66),
|
|
(120069, 66),
|
|
(120121, 66),
|
|
(120173, 66),
|
|
(120225, 66),
|
|
(120277, 66),
|
|
(120329, 66),
|
|
(120381, 66),
|
|
(120433, 66),
|
|
(42932, 66),
|
|
(914, 66),
|
|
(120489, 66),
|
|
(120547, 66),
|
|
(120605, 66),
|
|
(120663, 66),
|
|
(120721, 66),
|
|
(5108, 66),
|
|
(5623, 66),
|
|
(42192, 66),
|
|
(66178, 66),
|
|
(66209, 66),
|
|
(66305, 66),
|
|
(65347, 99),
|
|
(8573, 99),
|
|
(119836, 99),
|
|
(119888, 99),
|
|
(119940, 99),
|
|
(119992, 99),
|
|
(120044, 99),
|
|
(120096, 99),
|
|
(120148, 99),
|
|
(120200, 99),
|
|
(120252, 99),
|
|
(120304, 99),
|
|
(120356, 99),
|
|
(120408, 99),
|
|
(120460, 99),
|
|
(7428, 99),
|
|
(1010, 99),
|
|
(11429, 99),
|
|
(43951, 99),
|
|
(66621, 99),
|
|
(128844, 67),
|
|
(71922, 67),
|
|
(71913, 67),
|
|
(65315, 67),
|
|
(8557, 67),
|
|
(8450, 67),
|
|
(8493, 67),
|
|
(119810, 67),
|
|
(119862, 67),
|
|
(119914, 67),
|
|
(119966, 67),
|
|
(120018, 67),
|
|
(120174, 67),
|
|
(120226, 67),
|
|
(120278, 67),
|
|
(120330, 67),
|
|
(120382, 67),
|
|
(120434, 67),
|
|
(1017, 67),
|
|
(11428, 67),
|
|
(5087, 67),
|
|
(42202, 67),
|
|
(66210, 67),
|
|
(66306, 67),
|
|
(66581, 67),
|
|
(66844, 67),
|
|
(8574, 100),
|
|
(8518, 100),
|
|
(119837, 100),
|
|
(119889, 100),
|
|
(119941, 100),
|
|
(119993, 100),
|
|
(120045, 100),
|
|
(120097, 100),
|
|
(120149, 100),
|
|
(120201, 100),
|
|
(120253, 100),
|
|
(120305, 100),
|
|
(120357, 100),
|
|
(120409, 100),
|
|
(120461, 100),
|
|
(1281, 100),
|
|
(5095, 100),
|
|
(5231, 100),
|
|
(42194, 100),
|
|
(8558, 68),
|
|
(8517, 68),
|
|
(119811, 68),
|
|
(119863, 68),
|
|
(119915, 68),
|
|
(119967, 68),
|
|
(120019, 68),
|
|
(120071, 68),
|
|
(120123, 68),
|
|
(120175, 68),
|
|
(120227, 68),
|
|
(120279, 68),
|
|
(120331, 68),
|
|
(120383, 68),
|
|
(120435, 68),
|
|
(5024, 68),
|
|
(5598, 68),
|
|
(5610, 68),
|
|
(42195, 68),
|
|
(8494, 101),
|
|
(65349, 101),
|
|
(8495, 101),
|
|
(8519, 101),
|
|
(119838, 101),
|
|
(119890, 101),
|
|
(119942, 101),
|
|
(120046, 101),
|
|
(120098, 101),
|
|
(120150, 101),
|
|
(120202, 101),
|
|
(120254, 101),
|
|
(120306, 101),
|
|
(120358, 101),
|
|
(120410, 101),
|
|
(120462, 101),
|
|
(43826, 101),
|
|
(1213, 101),
|
|
(8959, 69),
|
|
(65317, 69),
|
|
(8496, 69),
|
|
(119812, 69),
|
|
(119864, 69),
|
|
(119916, 69),
|
|
(120020, 69),
|
|
(120072, 69),
|
|
(120124, 69),
|
|
(120176, 69),
|
|
(120228, 69),
|
|
(120280, 69),
|
|
(120332, 69),
|
|
(120384, 69),
|
|
(120436, 69),
|
|
(917, 69),
|
|
(120492, 69),
|
|
(120550, 69),
|
|
(120608, 69),
|
|
(120666, 69),
|
|
(120724, 69),
|
|
(11577, 69),
|
|
(5036, 69),
|
|
(42224, 69),
|
|
(71846, 69),
|
|
(71854, 69),
|
|
(66182, 69),
|
|
(119839, 102),
|
|
(119891, 102),
|
|
(119943, 102),
|
|
(119995, 102),
|
|
(120047, 102),
|
|
(120099, 102),
|
|
(120151, 102),
|
|
(120203, 102),
|
|
(120255, 102),
|
|
(120307, 102),
|
|
(120359, 102),
|
|
(120411, 102),
|
|
(120463, 102),
|
|
(43829, 102),
|
|
(42905, 102),
|
|
(383, 102),
|
|
(7837, 102),
|
|
(1412, 102),
|
|
(119315, 70),
|
|
(8497, 70),
|
|
(119813, 70),
|
|
(119865, 70),
|
|
(119917, 70),
|
|
(120021, 70),
|
|
(120073, 70),
|
|
(120125, 70),
|
|
(120177, 70),
|
|
(120229, 70),
|
|
(120281, 70),
|
|
(120333, 70),
|
|
(120385, 70),
|
|
(120437, 70),
|
|
(42904, 70),
|
|
(988, 70),
|
|
(120778, 70),
|
|
(5556, 70),
|
|
(42205, 70),
|
|
(71874, 70),
|
|
(71842, 70),
|
|
(66183, 70),
|
|
(66213, 70),
|
|
(66853, 70),
|
|
(65351, 103),
|
|
(8458, 103),
|
|
(119840, 103),
|
|
(119892, 103),
|
|
(119944, 103),
|
|
(120048, 103),
|
|
(120100, 103),
|
|
(120152, 103),
|
|
(120204, 103),
|
|
(120256, 103),
|
|
(120308, 103),
|
|
(120360, 103),
|
|
(120412, 103),
|
|
(120464, 103),
|
|
(609, 103),
|
|
(7555, 103),
|
|
(397, 103),
|
|
(1409, 103),
|
|
(119814, 71),
|
|
(119866, 71),
|
|
(119918, 71),
|
|
(119970, 71),
|
|
(120022, 71),
|
|
(120074, 71),
|
|
(120126, 71),
|
|
(120178, 71),
|
|
(120230, 71),
|
|
(120282, 71),
|
|
(120334, 71),
|
|
(120386, 71),
|
|
(120438, 71),
|
|
(1292, 71),
|
|
(5056, 71),
|
|
(5107, 71),
|
|
(42198, 71),
|
|
(65352, 104),
|
|
(8462, 104),
|
|
(119841, 104),
|
|
(119945, 104),
|
|
(119997, 104),
|
|
(120049, 104),
|
|
(120101, 104),
|
|
(120153, 104),
|
|
(120205, 104),
|
|
(120257, 104),
|
|
(120309, 104),
|
|
(120361, 104),
|
|
(120413, 104),
|
|
(120465, 104),
|
|
(1211, 104),
|
|
(1392, 104),
|
|
(5058, 104),
|
|
(65320, 72),
|
|
(8459, 72),
|
|
(8460, 72),
|
|
(8461, 72),
|
|
(119815, 72),
|
|
(119867, 72),
|
|
(119919, 72),
|
|
(120023, 72),
|
|
(120179, 72),
|
|
(120231, 72),
|
|
(120283, 72),
|
|
(120335, 72),
|
|
(120387, 72),
|
|
(120439, 72),
|
|
(919, 72),
|
|
(120494, 72),
|
|
(120552, 72),
|
|
(120610, 72),
|
|
(120668, 72),
|
|
(120726, 72),
|
|
(11406, 72),
|
|
(5051, 72),
|
|
(5500, 72),
|
|
(42215, 72),
|
|
(66255, 72),
|
|
(731, 105),
|
|
(9075, 105),
|
|
(65353, 105),
|
|
(8560, 105),
|
|
(8505, 105),
|
|
(8520, 105),
|
|
(119842, 105),
|
|
(119894, 105),
|
|
(119946, 105),
|
|
(119998, 105),
|
|
(120050, 105),
|
|
(120102, 105),
|
|
(120154, 105),
|
|
(120206, 105),
|
|
(120258, 105),
|
|
(120310, 105),
|
|
(120362, 105),
|
|
(120414, 105),
|
|
(120466, 105),
|
|
(120484, 105),
|
|
(618, 105),
|
|
(617, 105),
|
|
(953, 105),
|
|
(8126, 105),
|
|
(890, 105),
|
|
(120522, 105),
|
|
(120580, 105),
|
|
(120638, 105),
|
|
(120696, 105),
|
|
(120754, 105),
|
|
(1110, 105),
|
|
(42567, 105),
|
|
(1231, 105),
|
|
(43893, 105),
|
|
(5029, 105),
|
|
(71875, 105),
|
|
(65354, 106),
|
|
(8521, 106),
|
|
(119843, 106),
|
|
(119895, 106),
|
|
(119947, 106),
|
|
(119999, 106),
|
|
(120051, 106),
|
|
(120103, 106),
|
|
(120155, 106),
|
|
(120207, 106),
|
|
(120259, 106),
|
|
(120311, 106),
|
|
(120363, 106),
|
|
(120415, 106),
|
|
(120467, 106),
|
|
(1011, 106),
|
|
(1112, 106),
|
|
(65322, 74),
|
|
(119817, 74),
|
|
(119869, 74),
|
|
(119921, 74),
|
|
(119973, 74),
|
|
(120025, 74),
|
|
(120077, 74),
|
|
(120129, 74),
|
|
(120181, 74),
|
|
(120233, 74),
|
|
(120285, 74),
|
|
(120337, 74),
|
|
(120389, 74),
|
|
(120441, 74),
|
|
(42930, 74),
|
|
(895, 74),
|
|
(1032, 74),
|
|
(5035, 74),
|
|
(5261, 74),
|
|
(42201, 74),
|
|
(119844, 107),
|
|
(119896, 107),
|
|
(119948, 107),
|
|
(120000, 107),
|
|
(120052, 107),
|
|
(120104, 107),
|
|
(120156, 107),
|
|
(120208, 107),
|
|
(120260, 107),
|
|
(120312, 107),
|
|
(120364, 107),
|
|
(120416, 107),
|
|
(120468, 107),
|
|
(8490, 75),
|
|
(65323, 75),
|
|
(119818, 75),
|
|
(119870, 75),
|
|
(119922, 75),
|
|
(119974, 75),
|
|
(120026, 75),
|
|
(120078, 75),
|
|
(120130, 75),
|
|
(120182, 75),
|
|
(120234, 75),
|
|
(120286, 75),
|
|
(120338, 75),
|
|
(120390, 75),
|
|
(120442, 75),
|
|
(922, 75),
|
|
(120497, 75),
|
|
(120555, 75),
|
|
(120613, 75),
|
|
(120671, 75),
|
|
(120729, 75),
|
|
(11412, 75),
|
|
(5094, 75),
|
|
(5845, 75),
|
|
(42199, 75),
|
|
(66840, 75),
|
|
(1472, 108),
|
|
(8739, 73),
|
|
(9213, 73),
|
|
(65512, 73),
|
|
(1633, 108),
|
|
(1777, 73),
|
|
(66336, 108),
|
|
(125127, 108),
|
|
(120783, 73),
|
|
(120793, 73),
|
|
(120803, 73),
|
|
(120813, 73),
|
|
(120823, 73),
|
|
(130033, 73),
|
|
(65321, 73),
|
|
(8544, 73),
|
|
(8464, 73),
|
|
(8465, 73),
|
|
(119816, 73),
|
|
(119868, 73),
|
|
(119920, 73),
|
|
(120024, 73),
|
|
(120128, 73),
|
|
(120180, 73),
|
|
(120232, 73),
|
|
(120284, 73),
|
|
(120336, 73),
|
|
(120388, 73),
|
|
(120440, 73),
|
|
(65356, 108),
|
|
(8572, 73),
|
|
(8467, 108),
|
|
(119845, 108),
|
|
(119897, 108),
|
|
(119949, 108),
|
|
(120001, 108),
|
|
(120053, 108),
|
|
(120105, 73),
|
|
(120157, 73),
|
|
(120209, 73),
|
|
(120261, 73),
|
|
(120313, 73),
|
|
(120365, 73),
|
|
(120417, 73),
|
|
(120469, 73),
|
|
(448, 73),
|
|
(120496, 73),
|
|
(120554, 73),
|
|
(120612, 73),
|
|
(120670, 73),
|
|
(120728, 73),
|
|
(11410, 73),
|
|
(1030, 73),
|
|
(1216, 73),
|
|
(1493, 108),
|
|
(1503, 108),
|
|
(1575, 108),
|
|
(126464, 108),
|
|
(126592, 108),
|
|
(65166, 108),
|
|
(65165, 108),
|
|
(1994, 108),
|
|
(11599, 73),
|
|
(5825, 73),
|
|
(42226, 73),
|
|
(93992, 73),
|
|
(66186, 124),
|
|
(66313, 124),
|
|
(119338, 76),
|
|
(8556, 76),
|
|
(8466, 76),
|
|
(119819, 76),
|
|
(119871, 76),
|
|
(119923, 76),
|
|
(120027, 76),
|
|
(120079, 76),
|
|
(120131, 76),
|
|
(120183, 76),
|
|
(120235, 76),
|
|
(120287, 76),
|
|
(120339, 76),
|
|
(120391, 76),
|
|
(120443, 76),
|
|
(11472, 76),
|
|
(5086, 76),
|
|
(5290, 76),
|
|
(42209, 76),
|
|
(93974, 76),
|
|
(71843, 76),
|
|
(71858, 76),
|
|
(66587, 76),
|
|
(66854, 76),
|
|
(65325, 77),
|
|
(8559, 77),
|
|
(8499, 77),
|
|
(119820, 77),
|
|
(119872, 77),
|
|
(119924, 77),
|
|
(120028, 77),
|
|
(120080, 77),
|
|
(120132, 77),
|
|
(120184, 77),
|
|
(120236, 77),
|
|
(120288, 77),
|
|
(120340, 77),
|
|
(120392, 77),
|
|
(120444, 77),
|
|
(924, 77),
|
|
(120499, 77),
|
|
(120557, 77),
|
|
(120615, 77),
|
|
(120673, 77),
|
|
(120731, 77),
|
|
(1018, 77),
|
|
(11416, 77),
|
|
(5047, 77),
|
|
(5616, 77),
|
|
(5846, 77),
|
|
(42207, 77),
|
|
(66224, 77),
|
|
(66321, 77),
|
|
(119847, 110),
|
|
(119899, 110),
|
|
(119951, 110),
|
|
(120003, 110),
|
|
(120055, 110),
|
|
(120107, 110),
|
|
(120159, 110),
|
|
(120211, 110),
|
|
(120263, 110),
|
|
(120315, 110),
|
|
(120367, 110),
|
|
(120419, 110),
|
|
(120471, 110),
|
|
(1400, 110),
|
|
(1404, 110),
|
|
(65326, 78),
|
|
(8469, 78),
|
|
(119821, 78),
|
|
(119873, 78),
|
|
(119925, 78),
|
|
(119977, 78),
|
|
(120029, 78),
|
|
(120081, 78),
|
|
(120185, 78),
|
|
(120237, 78),
|
|
(120289, 78),
|
|
(120341, 78),
|
|
(120393, 78),
|
|
(120445, 78),
|
|
(925, 78),
|
|
(120500, 78),
|
|
(120558, 78),
|
|
(120616, 78),
|
|
(120674, 78),
|
|
(120732, 78),
|
|
(11418, 78),
|
|
(42208, 78),
|
|
(66835, 78),
|
|
(3074, 111),
|
|
(3202, 111),
|
|
(3330, 111),
|
|
(3458, 111),
|
|
(2406, 111),
|
|
(2662, 111),
|
|
(2790, 111),
|
|
(3046, 111),
|
|
(3174, 111),
|
|
(3302, 111),
|
|
(3430, 111),
|
|
(3664, 111),
|
|
(3792, 111),
|
|
(4160, 111),
|
|
(1637, 111),
|
|
(1781, 111),
|
|
(65359, 111),
|
|
(8500, 111),
|
|
(119848, 111),
|
|
(119900, 111),
|
|
(119952, 111),
|
|
(120056, 111),
|
|
(120108, 111),
|
|
(120160, 111),
|
|
(120212, 111),
|
|
(120264, 111),
|
|
(120316, 111),
|
|
(120368, 111),
|
|
(120420, 111),
|
|
(120472, 111),
|
|
(7439, 111),
|
|
(7441, 111),
|
|
(43837, 111),
|
|
(959, 111),
|
|
(120528, 111),
|
|
(120586, 111),
|
|
(120644, 111),
|
|
(120702, 111),
|
|
(120760, 111),
|
|
(963, 111),
|
|
(120532, 111),
|
|
(120590, 111),
|
|
(120648, 111),
|
|
(120706, 111),
|
|
(120764, 111),
|
|
(11423, 111),
|
|
(4351, 111),
|
|
(1413, 111),
|
|
(1505, 111),
|
|
(1607, 111),
|
|
(126500, 111),
|
|
(126564, 111),
|
|
(126596, 111),
|
|
(65259, 111),
|
|
(65260, 111),
|
|
(65258, 111),
|
|
(65257, 111),
|
|
(1726, 111),
|
|
(64428, 111),
|
|
(64429, 111),
|
|
(64427, 111),
|
|
(64426, 111),
|
|
(1729, 111),
|
|
(64424, 111),
|
|
(64425, 111),
|
|
(64423, 111),
|
|
(64422, 111),
|
|
(1749, 111),
|
|
(3360, 111),
|
|
(4125, 111),
|
|
(66794, 111),
|
|
(71880, 111),
|
|
(71895, 111),
|
|
(66604, 111),
|
|
(1984, 79),
|
|
(2534, 79),
|
|
(2918, 79),
|
|
(12295, 79),
|
|
(70864, 79),
|
|
(71904, 79),
|
|
(120782, 79),
|
|
(120792, 79),
|
|
(120802, 79),
|
|
(120812, 79),
|
|
(120822, 79),
|
|
(130032, 79),
|
|
(65327, 79),
|
|
(119822, 79),
|
|
(119874, 79),
|
|
(119926, 79),
|
|
(119978, 79),
|
|
(120030, 79),
|
|
(120082, 79),
|
|
(120134, 79),
|
|
(120186, 79),
|
|
(120238, 79),
|
|
(120290, 79),
|
|
(120342, 79),
|
|
(120394, 79),
|
|
(120446, 79),
|
|
(927, 79),
|
|
(120502, 79),
|
|
(120560, 79),
|
|
(120618, 79),
|
|
(120676, 79),
|
|
(120734, 79),
|
|
(11422, 79),
|
|
(1365, 79),
|
|
(11604, 79),
|
|
(4816, 79),
|
|
(2848, 79),
|
|
(66754, 79),
|
|
(42227, 79),
|
|
(71861, 79),
|
|
(66194, 79),
|
|
(66219, 79),
|
|
(66564, 79),
|
|
(66838, 79),
|
|
(9076, 112),
|
|
(65360, 112),
|
|
(119849, 112),
|
|
(119901, 112),
|
|
(119953, 112),
|
|
(120005, 112),
|
|
(120057, 112),
|
|
(120109, 112),
|
|
(120161, 112),
|
|
(120213, 112),
|
|
(120265, 112),
|
|
(120317, 112),
|
|
(120369, 112),
|
|
(120421, 112),
|
|
(120473, 112),
|
|
(961, 112),
|
|
(120530, 112),
|
|
(120544, 112),
|
|
(120588, 112),
|
|
(120602, 112),
|
|
(120646, 112),
|
|
(120660, 112),
|
|
(120704, 112),
|
|
(120718, 112),
|
|
(120762, 112),
|
|
(120776, 112),
|
|
(11427, 112),
|
|
(65328, 80),
|
|
(8473, 80),
|
|
(119823, 80),
|
|
(119875, 80),
|
|
(119927, 80),
|
|
(119979, 80),
|
|
(120031, 80),
|
|
(120083, 80),
|
|
(120187, 80),
|
|
(120239, 80),
|
|
(120291, 80),
|
|
(120343, 80),
|
|
(120395, 80),
|
|
(120447, 80),
|
|
(929, 80),
|
|
(120504, 80),
|
|
(120562, 80),
|
|
(120620, 80),
|
|
(120678, 80),
|
|
(120736, 80),
|
|
(11426, 80),
|
|
(5090, 80),
|
|
(5229, 80),
|
|
(42193, 80),
|
|
(66197, 80),
|
|
(119850, 113),
|
|
(119902, 113),
|
|
(119954, 113),
|
|
(120006, 113),
|
|
(120058, 113),
|
|
(120110, 113),
|
|
(120162, 113),
|
|
(120214, 113),
|
|
(120266, 113),
|
|
(120318, 113),
|
|
(120370, 113),
|
|
(120422, 113),
|
|
(120474, 113),
|
|
(1307, 113),
|
|
(1379, 113),
|
|
(1382, 113),
|
|
(8474, 81),
|
|
(119824, 81),
|
|
(119876, 81),
|
|
(119928, 81),
|
|
(119980, 81),
|
|
(120032, 81),
|
|
(120084, 81),
|
|
(120188, 81),
|
|
(120240, 81),
|
|
(120292, 81),
|
|
(120344, 81),
|
|
(120396, 81),
|
|
(120448, 81),
|
|
(11605, 81),
|
|
(119851, 114),
|
|
(119903, 114),
|
|
(119955, 114),
|
|
(120007, 114),
|
|
(120059, 114),
|
|
(120111, 114),
|
|
(120163, 114),
|
|
(120215, 114),
|
|
(120267, 114),
|
|
(120319, 114),
|
|
(120371, 114),
|
|
(120423, 114),
|
|
(120475, 114),
|
|
(43847, 114),
|
|
(43848, 114),
|
|
(7462, 114),
|
|
(11397, 114),
|
|
(43905, 114),
|
|
(119318, 82),
|
|
(8475, 82),
|
|
(8476, 82),
|
|
(8477, 82),
|
|
(119825, 82),
|
|
(119877, 82),
|
|
(119929, 82),
|
|
(120033, 82),
|
|
(120189, 82),
|
|
(120241, 82),
|
|
(120293, 82),
|
|
(120345, 82),
|
|
(120397, 82),
|
|
(120449, 82),
|
|
(422, 82),
|
|
(5025, 82),
|
|
(5074, 82),
|
|
(66740, 82),
|
|
(5511, 82),
|
|
(42211, 82),
|
|
(94005, 82),
|
|
(65363, 115),
|
|
(119852, 115),
|
|
(119904, 115),
|
|
(119956, 115),
|
|
(120008, 115),
|
|
(120060, 115),
|
|
(120112, 115),
|
|
(120164, 115),
|
|
(120216, 115),
|
|
(120268, 115),
|
|
(120320, 115),
|
|
(120372, 115),
|
|
(120424, 115),
|
|
(120476, 115),
|
|
(42801, 115),
|
|
(445, 115),
|
|
(1109, 115),
|
|
(43946, 115),
|
|
(71873, 115),
|
|
(66632, 115),
|
|
(65331, 83),
|
|
(119826, 83),
|
|
(119878, 83),
|
|
(119930, 83),
|
|
(119982, 83),
|
|
(120034, 83),
|
|
(120086, 83),
|
|
(120138, 83),
|
|
(120190, 83),
|
|
(120242, 83),
|
|
(120294, 83),
|
|
(120346, 83),
|
|
(120398, 83),
|
|
(120450, 83),
|
|
(1029, 83),
|
|
(1359, 83),
|
|
(5077, 83),
|
|
(5082, 83),
|
|
(42210, 83),
|
|
(94010, 83),
|
|
(66198, 83),
|
|
(66592, 83),
|
|
(119853, 116),
|
|
(119905, 116),
|
|
(119957, 116),
|
|
(120009, 116),
|
|
(120061, 116),
|
|
(120113, 116),
|
|
(120165, 116),
|
|
(120217, 116),
|
|
(120269, 116),
|
|
(120321, 116),
|
|
(120373, 116),
|
|
(120425, 116),
|
|
(120477, 116),
|
|
(8868, 84),
|
|
(10201, 84),
|
|
(128872, 84),
|
|
(65332, 84),
|
|
(119827, 84),
|
|
(119879, 84),
|
|
(119931, 84),
|
|
(119983, 84),
|
|
(120035, 84),
|
|
(120087, 84),
|
|
(120139, 84),
|
|
(120191, 84),
|
|
(120243, 84),
|
|
(120295, 84),
|
|
(120347, 84),
|
|
(120399, 84),
|
|
(120451, 84),
|
|
(932, 84),
|
|
(120507, 84),
|
|
(120565, 84),
|
|
(120623, 84),
|
|
(120681, 84),
|
|
(120739, 84),
|
|
(11430, 84),
|
|
(5026, 84),
|
|
(42196, 84),
|
|
(93962, 84),
|
|
(71868, 84),
|
|
(66199, 84),
|
|
(66225, 84),
|
|
(66325, 84),
|
|
(119854, 117),
|
|
(119906, 117),
|
|
(119958, 117),
|
|
(120010, 117),
|
|
(120062, 117),
|
|
(120114, 117),
|
|
(120166, 117),
|
|
(120218, 117),
|
|
(120270, 117),
|
|
(120322, 117),
|
|
(120374, 117),
|
|
(120426, 117),
|
|
(120478, 117),
|
|
(42911, 117),
|
|
(7452, 117),
|
|
(43854, 117),
|
|
(43858, 117),
|
|
(651, 117),
|
|
(965, 117),
|
|
(120534, 117),
|
|
(120592, 117),
|
|
(120650, 117),
|
|
(120708, 117),
|
|
(120766, 117),
|
|
(1405, 117),
|
|
(66806, 117),
|
|
(71896, 117),
|
|
(8746, 85),
|
|
(8899, 85),
|
|
(119828, 85),
|
|
(119880, 85),
|
|
(119932, 85),
|
|
(119984, 85),
|
|
(120036, 85),
|
|
(120088, 85),
|
|
(120140, 85),
|
|
(120192, 85),
|
|
(120244, 85),
|
|
(120296, 85),
|
|
(120348, 85),
|
|
(120400, 85),
|
|
(120452, 85),
|
|
(1357, 85),
|
|
(4608, 85),
|
|
(66766, 85),
|
|
(5196, 85),
|
|
(42228, 85),
|
|
(94018, 85),
|
|
(71864, 85),
|
|
(8744, 118),
|
|
(8897, 118),
|
|
(65366, 118),
|
|
(8564, 118),
|
|
(119855, 118),
|
|
(119907, 118),
|
|
(119959, 118),
|
|
(120011, 118),
|
|
(120063, 118),
|
|
(120115, 118),
|
|
(120167, 118),
|
|
(120219, 118),
|
|
(120271, 118),
|
|
(120323, 118),
|
|
(120375, 118),
|
|
(120427, 118),
|
|
(120479, 118),
|
|
(7456, 118),
|
|
(957, 118),
|
|
(120526, 118),
|
|
(120584, 118),
|
|
(120642, 118),
|
|
(120700, 118),
|
|
(120758, 118),
|
|
(1141, 118),
|
|
(1496, 118),
|
|
(71430, 118),
|
|
(43945, 118),
|
|
(71872, 118),
|
|
(119309, 86),
|
|
(1639, 86),
|
|
(1783, 86),
|
|
(8548, 86),
|
|
(119829, 86),
|
|
(119881, 86),
|
|
(119933, 86),
|
|
(119985, 86),
|
|
(120037, 86),
|
|
(120089, 86),
|
|
(120141, 86),
|
|
(120193, 86),
|
|
(120245, 86),
|
|
(120297, 86),
|
|
(120349, 86),
|
|
(120401, 86),
|
|
(120453, 86),
|
|
(1140, 86),
|
|
(11576, 86),
|
|
(5081, 86),
|
|
(5167, 86),
|
|
(42719, 86),
|
|
(42214, 86),
|
|
(93960, 86),
|
|
(71840, 86),
|
|
(66845, 86),
|
|
(623, 119),
|
|
(119856, 119),
|
|
(119908, 119),
|
|
(119960, 119),
|
|
(120012, 119),
|
|
(120064, 119),
|
|
(120116, 119),
|
|
(120168, 119),
|
|
(120220, 119),
|
|
(120272, 119),
|
|
(120324, 119),
|
|
(120376, 119),
|
|
(120428, 119),
|
|
(120480, 119),
|
|
(7457, 119),
|
|
(1121, 119),
|
|
(1309, 119),
|
|
(1377, 119),
|
|
(71434, 119),
|
|
(71438, 119),
|
|
(71439, 119),
|
|
(43907, 119),
|
|
(71919, 87),
|
|
(71910, 87),
|
|
(119830, 87),
|
|
(119882, 87),
|
|
(119934, 87),
|
|
(119986, 87),
|
|
(120038, 87),
|
|
(120090, 87),
|
|
(120142, 87),
|
|
(120194, 87),
|
|
(120246, 87),
|
|
(120298, 87),
|
|
(120350, 87),
|
|
(120402, 87),
|
|
(120454, 87),
|
|
(1308, 87),
|
|
(5043, 87),
|
|
(5076, 87),
|
|
(42218, 87),
|
|
(5742, 120),
|
|
(10539, 120),
|
|
(10540, 120),
|
|
(10799, 120),
|
|
(65368, 120),
|
|
(8569, 120),
|
|
(119857, 120),
|
|
(119909, 120),
|
|
(119961, 120),
|
|
(120013, 120),
|
|
(120065, 120),
|
|
(120117, 120),
|
|
(120169, 120),
|
|
(120221, 120),
|
|
(120273, 120),
|
|
(120325, 120),
|
|
(120377, 120),
|
|
(120429, 120),
|
|
(120481, 120),
|
|
(5441, 120),
|
|
(5501, 120),
|
|
(5741, 88),
|
|
(9587, 88),
|
|
(66338, 88),
|
|
(71916, 88),
|
|
(65336, 88),
|
|
(8553, 88),
|
|
(119831, 88),
|
|
(119883, 88),
|
|
(119935, 88),
|
|
(119987, 88),
|
|
(120039, 88),
|
|
(120091, 88),
|
|
(120143, 88),
|
|
(120195, 88),
|
|
(120247, 88),
|
|
(120299, 88),
|
|
(120351, 88),
|
|
(120403, 88),
|
|
(120455, 88),
|
|
(42931, 88),
|
|
(935, 88),
|
|
(120510, 88),
|
|
(120568, 88),
|
|
(120626, 88),
|
|
(120684, 88),
|
|
(120742, 88),
|
|
(11436, 88),
|
|
(11613, 88),
|
|
(5815, 88),
|
|
(42219, 88),
|
|
(66192, 88),
|
|
(66228, 88),
|
|
(66327, 88),
|
|
(66855, 88),
|
|
(611, 121),
|
|
(7564, 121),
|
|
(65369, 121),
|
|
(119858, 121),
|
|
(119910, 121),
|
|
(119962, 121),
|
|
(120014, 121),
|
|
(120066, 121),
|
|
(120118, 121),
|
|
(120170, 121),
|
|
(120222, 121),
|
|
(120274, 121),
|
|
(120326, 121),
|
|
(120378, 121),
|
|
(120430, 121),
|
|
(120482, 121),
|
|
(655, 121),
|
|
(7935, 121),
|
|
(43866, 121),
|
|
(947, 121),
|
|
(8509, 121),
|
|
(120516, 121),
|
|
(120574, 121),
|
|
(120632, 121),
|
|
(120690, 121),
|
|
(120748, 121),
|
|
(1199, 121),
|
|
(4327, 121),
|
|
(71900, 121),
|
|
(65337, 89),
|
|
(119832, 89),
|
|
(119884, 89),
|
|
(119936, 89),
|
|
(119988, 89),
|
|
(120040, 89),
|
|
(120092, 89),
|
|
(120144, 89),
|
|
(120196, 89),
|
|
(120248, 89),
|
|
(120300, 89),
|
|
(120352, 89),
|
|
(120404, 89),
|
|
(120456, 89),
|
|
(933, 89),
|
|
(978, 89),
|
|
(120508, 89),
|
|
(120566, 89),
|
|
(120624, 89),
|
|
(120682, 89),
|
|
(120740, 89),
|
|
(11432, 89),
|
|
(1198, 89),
|
|
(5033, 89),
|
|
(5053, 89),
|
|
(42220, 89),
|
|
(94019, 89),
|
|
(71844, 89),
|
|
(66226, 89),
|
|
(119859, 122),
|
|
(119911, 122),
|
|
(119963, 122),
|
|
(120015, 122),
|
|
(120067, 122),
|
|
(120119, 122),
|
|
(120171, 122),
|
|
(120223, 122),
|
|
(120275, 122),
|
|
(120327, 122),
|
|
(120379, 122),
|
|
(120431, 122),
|
|
(120483, 122),
|
|
(7458, 122),
|
|
(43923, 122),
|
|
(71876, 122),
|
|
(66293, 90),
|
|
(71909, 90),
|
|
(65338, 90),
|
|
(8484, 90),
|
|
(8488, 90),
|
|
(119833, 90),
|
|
(119885, 90),
|
|
(119937, 90),
|
|
(119989, 90),
|
|
(120041, 90),
|
|
(120197, 90),
|
|
(120249, 90),
|
|
(120301, 90),
|
|
(120353, 90),
|
|
(120405, 90),
|
|
(120457, 90),
|
|
(918, 90),
|
|
(120493, 90),
|
|
(120551, 90),
|
|
(120609, 90),
|
|
(120667, 90),
|
|
(120725, 90),
|
|
(5059, 90),
|
|
(42204, 90),
|
|
(71849, 90),
|
|
(65282, 34),
|
|
(65284, 36),
|
|
(65285, 37),
|
|
(65286, 38),
|
|
(65290, 42),
|
|
(65291, 43),
|
|
(65294, 46),
|
|
(65295, 47),
|
|
(65296, 48),
|
|
(65297, 49),
|
|
(65298, 50),
|
|
(65299, 51),
|
|
(65300, 52),
|
|
(65301, 53),
|
|
(65302, 54),
|
|
(65303, 55),
|
|
(65304, 56),
|
|
(65305, 57),
|
|
(65308, 60),
|
|
(65309, 61),
|
|
(65310, 62),
|
|
(65312, 64),
|
|
(65316, 68),
|
|
(65318, 70),
|
|
(65319, 71),
|
|
(65324, 76),
|
|
(65329, 81),
|
|
(65330, 82),
|
|
(65333, 85),
|
|
(65334, 86),
|
|
(65335, 87),
|
|
(65343, 95),
|
|
(65346, 98),
|
|
(65348, 100),
|
|
(65350, 102),
|
|
(65355, 107),
|
|
(65357, 109),
|
|
(65358, 110),
|
|
(65361, 113),
|
|
(65362, 114),
|
|
(65364, 116),
|
|
(65365, 117),
|
|
(65367, 119),
|
|
(65370, 122),
|
|
(65371, 123),
|
|
(65373, 125),
|
|
(160, 32),
|
|
(8211, 45),
|
|
(65374, 126),
|
|
(65306, 58),
|
|
(65281, 33),
|
|
(8216, 96),
|
|
(8217, 96),
|
|
(8245, 96),
|
|
(180, 96),
|
|
(12494, 47),
|
|
(1047, 51),
|
|
(1073, 54),
|
|
(1072, 97),
|
|
(1040, 65),
|
|
(1068, 98),
|
|
(1042, 66),
|
|
(1089, 99),
|
|
(1057, 67),
|
|
(1077, 101),
|
|
(1045, 69),
|
|
(1053, 72),
|
|
(305, 105),
|
|
(1050, 75),
|
|
(921, 73),
|
|
(1052, 77),
|
|
(1086, 111),
|
|
(1054, 79),
|
|
(1009, 112),
|
|
(1088, 112),
|
|
(1056, 80),
|
|
(1075, 114),
|
|
(1058, 84),
|
|
(215, 120),
|
|
(1093, 120),
|
|
(1061, 88),
|
|
(1091, 121),
|
|
(1059, 89),
|
|
(65283, 35),
|
|
(65288, 40),
|
|
(65289, 41),
|
|
(65292, 44),
|
|
(65307, 59),
|
|
(65311, 63),
|
|
])
|
|
});
|
|
|
|
#[derive(Clone, Copy)]
|
|
pub enum Context {
|
|
String,
|
|
Docstring,
|
|
Comment,
|
|
}
|
|
|
|
pub fn ambiguous_unicode_character(
|
|
locator: &SourceCodeLocator,
|
|
start: Location,
|
|
end: Location,
|
|
context: Context,
|
|
settings: &Settings,
|
|
autofix: bool,
|
|
) -> Vec<Check> {
|
|
let mut checks = vec![];
|
|
|
|
let text = locator.slice_source_code_range(&Range {
|
|
location: start,
|
|
end_location: end,
|
|
});
|
|
|
|
let mut col_offset = 0;
|
|
let mut row_offset = 0;
|
|
for current_char in text.chars() {
|
|
// Search for confusing characters.
|
|
if let Some(representant) = CONFUSABLES.get(&(current_char as u32)) {
|
|
if let Some(representant) = char::from_u32(*representant) {
|
|
let location = if row_offset == 0 {
|
|
Location::new(start.row() + row_offset, start.column() + col_offset)
|
|
} else {
|
|
Location::new(start.row() + row_offset, col_offset)
|
|
};
|
|
let end_location = Location::new(location.row(), location.column() + 1);
|
|
let mut check = Check::new(
|
|
match context {
|
|
Context::String => {
|
|
CheckKind::AmbiguousUnicodeCharacterString(current_char, representant)
|
|
}
|
|
Context::Docstring => CheckKind::AmbiguousUnicodeCharacterDocstring(
|
|
current_char,
|
|
representant,
|
|
),
|
|
Context::Comment => {
|
|
CheckKind::AmbiguousUnicodeCharacterComment(current_char, representant)
|
|
}
|
|
},
|
|
Range {
|
|
location,
|
|
end_location,
|
|
},
|
|
);
|
|
if settings.enabled.contains(check.kind.code()) {
|
|
if autofix && settings.fixable.contains(check.kind.code()) {
|
|
check.amend(Fix::replacement(
|
|
representant.to_string(),
|
|
location,
|
|
end_location,
|
|
));
|
|
}
|
|
checks.push(check);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Track the offset from the start position as we iterate over the body.
|
|
if current_char == '\n' {
|
|
col_offset = 0;
|
|
row_offset += 1;
|
|
} else {
|
|
col_offset += 1;
|
|
}
|
|
}
|
|
|
|
checks
|
|
}
|