aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lexer/mod.rs13
-rw-r--r--src/syntax_kinds.rs20
2 files changed, 32 insertions, 1 deletions
diff --git a/src/lexer/mod.rs b/src/lexer/mod.rs
index d66046ca1..be86416c4 100644
--- a/src/lexer/mod.rs
+++ b/src/lexer/mod.rs
@@ -59,6 +59,13 @@ fn next_token_inner(c: char, ptr: &mut Ptr) -> SyntaxKind {
59 '~' => return TILDE, 59 '~' => return TILDE,
60 '?' => return QUESTION, 60 '?' => return QUESTION,
61 '$' => return DOLLAR, 61 '$' => return DOLLAR,
62 '&' => return AMPERSAND,
63 '|' => return PIPE,
64 '+' => return PLUS,
65 '*' => return STAR,
66 '/' => return SLASH,
67 '^' => return CARET,
68 '%' => return PERCENT,
62 69
63 // Multi-byte tokens. 70 // Multi-byte tokens.
64 '.' => return match (ptr.next(), ptr.nnext()) { 71 '.' => return match (ptr.next(), ptr.nnext()) {
@@ -103,6 +110,12 @@ fn next_token_inner(c: char, ptr: &mut Ptr) -> SyntaxKind {
103 } 110 }
104 _ => NOT, 111 _ => NOT,
105 }, 112 },
113 '-' => return if ptr.next_is('>') {
114 ptr.bump();
115 THIN_ARROW
116 } else {
117 MINUS
118 },
106 119
107 // If the character is an ident start not followed by another single 120 // If the character is an ident start not followed by another single
108 // quote, then this is a lifetime name: 121 // quote, then this is a lifetime name:
diff --git a/src/syntax_kinds.rs b/src/syntax_kinds.rs
index 4a68acb31..83fabe403 100644
--- a/src/syntax_kinds.rs
+++ b/src/syntax_kinds.rs
@@ -40,8 +40,17 @@ pub const STRING: SyntaxKind = SyntaxKind(35);
40pub const RAW_STRING: SyntaxKind = SyntaxKind(36); 40pub const RAW_STRING: SyntaxKind = SyntaxKind(36);
41pub const BYTE_STRING: SyntaxKind = SyntaxKind(37); 41pub const BYTE_STRING: SyntaxKind = SyntaxKind(37);
42pub const RAW_BYTE_STRING: SyntaxKind = SyntaxKind(38); 42pub const RAW_BYTE_STRING: SyntaxKind = SyntaxKind(38);
43pub const PLUS: SyntaxKind = SyntaxKind(39);
44pub const MINUS: SyntaxKind = SyntaxKind(40);
45pub const STAR: SyntaxKind = SyntaxKind(41);
46pub const SLASH: SyntaxKind = SyntaxKind(42);
47pub const CARET: SyntaxKind = SyntaxKind(43);
48pub const PERCENT: SyntaxKind = SyntaxKind(44);
49pub const AMPERSAND: SyntaxKind = SyntaxKind(45);
50pub const PIPE: SyntaxKind = SyntaxKind(46);
51pub const THIN_ARROW: SyntaxKind = SyntaxKind(47);
43 52
44static INFOS: [SyntaxInfo; 39] = [ 53static INFOS: [SyntaxInfo; 48] = [
45 SyntaxInfo { name: "ERROR" }, 54 SyntaxInfo { name: "ERROR" },
46 SyntaxInfo { name: "IDENT" }, 55 SyntaxInfo { name: "IDENT" },
47 SyntaxInfo { name: "UNDERSCORE" }, 56 SyntaxInfo { name: "UNDERSCORE" },
@@ -81,6 +90,15 @@ static INFOS: [SyntaxInfo; 39] = [
81 SyntaxInfo { name: "RAW_STRING" }, 90 SyntaxInfo { name: "RAW_STRING" },
82 SyntaxInfo { name: "BYTE_STRING" }, 91 SyntaxInfo { name: "BYTE_STRING" },
83 SyntaxInfo { name: "RAW_BYTE_STRING" }, 92 SyntaxInfo { name: "RAW_BYTE_STRING" },
93 SyntaxInfo { name: "PLUS" },
94 SyntaxInfo { name: "MINUS" },
95 SyntaxInfo { name: "STAR" },
96 SyntaxInfo { name: "SLASH" },
97 SyntaxInfo { name: "CARET" },
98 SyntaxInfo { name: "PERCENT" },
99 SyntaxInfo { name: "AMPERSAND" },
100 SyntaxInfo { name: "PIPE" },
101 SyntaxInfo { name: "THIN_ARROW" },
84]; 102];
85 103
86pub(crate) fn syntax_info(kind: SyntaxKind) -> &'static SyntaxInfo { 104pub(crate) fn syntax_info(kind: SyntaxKind) -> &'static SyntaxInfo {