| //@ check-pass |
| #![allow(dead_code)] |
| // Regression test for #29740. Inefficient MIR matching algorithms |
| // generated way too much code for this sort of case, leading to OOM. |
| #![allow(non_snake_case)] |
| |
| pub mod KeyboardEventConstants { |
| pub const DOM_KEY_LOCATION_STANDARD: u32 = 0; |
| pub const DOM_KEY_LOCATION_LEFT: u32 = 1; |
| pub const DOM_KEY_LOCATION_RIGHT: u32 = 2; |
| pub const DOM_KEY_LOCATION_NUMPAD: u32 = 3; |
| } // mod KeyboardEventConstants |
| |
| pub enum Key { |
| Space, |
| Apostrophe, |
| Comma, |
| Minus, |
| Period, |
| Slash, |
| Num0, |
| Num1, |
| Num2, |
| Num3, |
| Num4, |
| Num5, |
| Num6, |
| Num7, |
| Num8, |
| Num9, |
| Semicolon, |
| Equal, |
| A, |
| B, |
| C, |
| D, |
| E, |
| F, |
| G, |
| H, |
| I, |
| J, |
| K, |
| L, |
| M, |
| N, |
| O, |
| P, |
| Q, |
| R, |
| S, |
| T, |
| U, |
| V, |
| W, |
| X, |
| Y, |
| Z, |
| LeftBracket, |
| Backslash, |
| RightBracket, |
| GraveAccent, |
| World1, |
| World2, |
| |
| Escape, |
| Enter, |
| Tab, |
| Backspace, |
| Insert, |
| Delete, |
| Right, |
| Left, |
| Down, |
| Up, |
| PageUp, |
| PageDown, |
| Home, |
| End, |
| CapsLock, |
| ScrollLock, |
| NumLock, |
| PrintScreen, |
| Pause, |
| F1, |
| F2, |
| F3, |
| F4, |
| F5, |
| F6, |
| F7, |
| F8, |
| F9, |
| F10, |
| F11, |
| F12, |
| F13, |
| F14, |
| F15, |
| F16, |
| F17, |
| F18, |
| F19, |
| F20, |
| F21, |
| F22, |
| F23, |
| F24, |
| F25, |
| Kp0, |
| Kp1, |
| Kp2, |
| Kp3, |
| Kp4, |
| Kp5, |
| Kp6, |
| Kp7, |
| Kp8, |
| Kp9, |
| KpDecimal, |
| KpDivide, |
| KpMultiply, |
| KpSubtract, |
| KpAdd, |
| KpEnter, |
| KpEqual, |
| LeftShift, |
| LeftControl, |
| LeftAlt, |
| LeftSuper, |
| RightShift, |
| RightControl, |
| RightAlt, |
| RightSuper, |
| Menu, |
| } |
| |
| fn key_from_string(key_string: &str, location: u32) -> Option<Key> { |
| match key_string { |
| " " => Some(Key::Space), |
| "\"" => Some(Key::Apostrophe), |
| "'" => Some(Key::Apostrophe), |
| "<" => Some(Key::Comma), |
| "," => Some(Key::Comma), |
| "_" => Some(Key::Minus), |
| "-" if location == KeyboardEventConstants::DOM_KEY_LOCATION_STANDARD => Some(Key::Minus), |
| ">" => Some(Key::Period), |
| "." if location == KeyboardEventConstants::DOM_KEY_LOCATION_STANDARD => Some(Key::Period), |
| "?" => Some(Key::Slash), |
| "/" if location == KeyboardEventConstants::DOM_KEY_LOCATION_STANDARD => Some(Key::Slash), |
| "~" => Some(Key::GraveAccent), |
| "`" => Some(Key::GraveAccent), |
| ")" => Some(Key::Num0), |
| "0" if location == KeyboardEventConstants::DOM_KEY_LOCATION_STANDARD => Some(Key::Num0), |
| "!" => Some(Key::Num1), |
| "1" if location == KeyboardEventConstants::DOM_KEY_LOCATION_STANDARD => Some(Key::Num1), |
| "@" => Some(Key::Num2), |
| "2" if location == KeyboardEventConstants::DOM_KEY_LOCATION_STANDARD => Some(Key::Num2), |
| "#" => Some(Key::Num3), |
| "3" if location == KeyboardEventConstants::DOM_KEY_LOCATION_STANDARD => Some(Key::Num3), |
| "$" => Some(Key::Num4), |
| "4" if location == KeyboardEventConstants::DOM_KEY_LOCATION_STANDARD => Some(Key::Num4), |
| "%" => Some(Key::Num5), |
| "5" if location == KeyboardEventConstants::DOM_KEY_LOCATION_STANDARD => Some(Key::Num5), |
| "^" => Some(Key::Num6), |
| "6" if location == KeyboardEventConstants::DOM_KEY_LOCATION_STANDARD => Some(Key::Num6), |
| "&" => Some(Key::Num7), |
| "7" if location == KeyboardEventConstants::DOM_KEY_LOCATION_STANDARD => Some(Key::Num7), |
| "*" if location == KeyboardEventConstants::DOM_KEY_LOCATION_STANDARD => Some(Key::Num8), |
| "8" if location == KeyboardEventConstants::DOM_KEY_LOCATION_STANDARD => Some(Key::Num8), |
| "(" => Some(Key::Num9), |
| "9" if location == KeyboardEventConstants::DOM_KEY_LOCATION_STANDARD => Some(Key::Num9), |
| ":" => Some(Key::Semicolon), |
| ";" => Some(Key::Semicolon), |
| "+" if location == KeyboardEventConstants::DOM_KEY_LOCATION_STANDARD => Some(Key::Equal), |
| "=" if location == KeyboardEventConstants::DOM_KEY_LOCATION_STANDARD => Some(Key::Equal), |
| "A" => Some(Key::A), |
| "a" => Some(Key::A), |
| "B" => Some(Key::B), |
| "b" => Some(Key::B), |
| "C" => Some(Key::C), |
| "c" => Some(Key::C), |
| "D" => Some(Key::D), |
| "d" => Some(Key::D), |
| "E" => Some(Key::E), |
| "e" => Some(Key::E), |
| "F" => Some(Key::F), |
| "f" => Some(Key::F), |
| "G" => Some(Key::G), |
| "g" => Some(Key::G), |
| "H" => Some(Key::H), |
| "h" => Some(Key::H), |
| "I" => Some(Key::I), |
| "i" => Some(Key::I), |
| "J" => Some(Key::J), |
| "j" => Some(Key::J), |
| "K" => Some(Key::K), |
| "k" => Some(Key::K), |
| "L" => Some(Key::L), |
| "l" => Some(Key::L), |
| "M" => Some(Key::M), |
| "m" => Some(Key::M), |
| "N" => Some(Key::N), |
| "n" => Some(Key::N), |
| "O" => Some(Key::O), |
| "o" => Some(Key::O), |
| "P" => Some(Key::P), |
| "p" => Some(Key::P), |
| "Q" => Some(Key::Q), |
| "q" => Some(Key::Q), |
| "R" => Some(Key::R), |
| "r" => Some(Key::R), |
| "S" => Some(Key::S), |
| "s" => Some(Key::S), |
| "T" => Some(Key::T), |
| "t" => Some(Key::T), |
| "U" => Some(Key::U), |
| "u" => Some(Key::U), |
| "V" => Some(Key::V), |
| "v" => Some(Key::V), |
| "W" => Some(Key::W), |
| "w" => Some(Key::W), |
| "X" => Some(Key::X), |
| "x" => Some(Key::X), |
| "Y" => Some(Key::Y), |
| "y" => Some(Key::Y), |
| "Z" => Some(Key::Z), |
| "z" => Some(Key::Z), |
| "{" => Some(Key::LeftBracket), |
| "[" => Some(Key::LeftBracket), |
| "|" => Some(Key::Backslash), |
| "\\" => Some(Key::Backslash), |
| "}" => Some(Key::RightBracket), |
| "]" => Some(Key::RightBracket), |
| "Escape" => Some(Key::Escape), |
| "Enter" if location == KeyboardEventConstants::DOM_KEY_LOCATION_STANDARD |
| => Some(Key::Enter), |
| "Tab" => Some(Key::Tab), |
| "Backspace" => Some(Key::Backspace), |
| "Insert" => Some(Key::Insert), |
| "Delete" => Some(Key::Delete), |
| "ArrowRight" => Some(Key::Right), |
| "ArrowLeft" => Some(Key::Left), |
| "ArrowDown" => Some(Key::Down), |
| "ArrowUp" => Some(Key::Up), |
| "PageUp" => Some(Key::PageUp), |
| "PageDown" => Some(Key::PageDown), |
| "Home" => Some(Key::Home), |
| "End" => Some(Key::End), |
| "CapsLock" => Some(Key::CapsLock), |
| "ScrollLock" => Some(Key::ScrollLock), |
| "NumLock" => Some(Key::NumLock), |
| "PrintScreen" => Some(Key::PrintScreen), |
| "Pause" => Some(Key::Pause), |
| "F1" => Some(Key::F1), |
| "F2" => Some(Key::F2), |
| "F3" => Some(Key::F3), |
| "F4" => Some(Key::F4), |
| "F5" => Some(Key::F5), |
| "F6" => Some(Key::F6), |
| "F7" => Some(Key::F7), |
| "F8" => Some(Key::F8), |
| "F9" => Some(Key::F9), |
| "F10" => Some(Key::F10), |
| "F11" => Some(Key::F11), |
| "F12" => Some(Key::F12), |
| "F13" => Some(Key::F13), |
| "F14" => Some(Key::F14), |
| "F15" => Some(Key::F15), |
| "F16" => Some(Key::F16), |
| "F17" => Some(Key::F17), |
| "F18" => Some(Key::F18), |
| "F19" => Some(Key::F19), |
| "F20" => Some(Key::F20), |
| "F21" => Some(Key::F21), |
| "F22" => Some(Key::F22), |
| "F23" => Some(Key::F23), |
| "F24" => Some(Key::F24), |
| "F25" => Some(Key::F25), |
| "0" if location == KeyboardEventConstants::DOM_KEY_LOCATION_NUMPAD => Some(Key::Kp0), |
| "1" if location == KeyboardEventConstants::DOM_KEY_LOCATION_NUMPAD => Some(Key::Kp1), |
| "2" if location == KeyboardEventConstants::DOM_KEY_LOCATION_NUMPAD => Some(Key::Kp2), |
| "3" if location == KeyboardEventConstants::DOM_KEY_LOCATION_NUMPAD => Some(Key::Kp3), |
| "4" if location == KeyboardEventConstants::DOM_KEY_LOCATION_NUMPAD => Some(Key::Kp4), |
| "5" if location == KeyboardEventConstants::DOM_KEY_LOCATION_NUMPAD => Some(Key::Kp5), |
| "6" if location == KeyboardEventConstants::DOM_KEY_LOCATION_NUMPAD => Some(Key::Kp6), |
| "7" if location == KeyboardEventConstants::DOM_KEY_LOCATION_NUMPAD => Some(Key::Kp7), |
| "8" if location == KeyboardEventConstants::DOM_KEY_LOCATION_NUMPAD => Some(Key::Kp8), |
| "9" if location == KeyboardEventConstants::DOM_KEY_LOCATION_NUMPAD => Some(Key::Kp9), |
| "." if location == KeyboardEventConstants::DOM_KEY_LOCATION_NUMPAD => Some(Key::KpDecimal), |
| "/" if location == KeyboardEventConstants::DOM_KEY_LOCATION_NUMPAD => Some(Key::KpDivide), |
| "*" if location == KeyboardEventConstants::DOM_KEY_LOCATION_NUMPAD => Some(Key::KpMultiply), |
| "-" if location == KeyboardEventConstants::DOM_KEY_LOCATION_NUMPAD => Some(Key::KpSubtract), |
| "+" if location == KeyboardEventConstants::DOM_KEY_LOCATION_NUMPAD => Some(Key::KpAdd), |
| "Enter" if location == KeyboardEventConstants::DOM_KEY_LOCATION_NUMPAD |
| => Some(Key::KpEnter), |
| "=" if location == KeyboardEventConstants::DOM_KEY_LOCATION_NUMPAD => Some(Key::KpEqual), |
| "Shift" if location == KeyboardEventConstants::DOM_KEY_LOCATION_LEFT |
| => Some(Key::LeftShift), |
| "Control" if location == KeyboardEventConstants::DOM_KEY_LOCATION_LEFT |
| => Some(Key::LeftControl), |
| "Alt" if location == KeyboardEventConstants::DOM_KEY_LOCATION_LEFT => Some(Key::LeftAlt), |
| "Super" if location == KeyboardEventConstants::DOM_KEY_LOCATION_LEFT |
| => Some(Key::LeftSuper), |
| "Shift" if location == KeyboardEventConstants::DOM_KEY_LOCATION_RIGHT |
| => Some(Key::RightShift), |
| "Control" if location == KeyboardEventConstants::DOM_KEY_LOCATION_RIGHT |
| => Some(Key::RightControl), |
| "Alt" if location == KeyboardEventConstants::DOM_KEY_LOCATION_RIGHT => Some(Key::RightAlt), |
| "Super" if location == KeyboardEventConstants::DOM_KEY_LOCATION_RIGHT |
| => Some(Key::RightSuper), |
| "ContextMenu" => Some(Key::Menu), |
| _ => None |
| } |
| } |
| |
| fn main() { } |