aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_syntax/test_data/lexer/ok
diff options
context:
space:
mode:
authorbors[bot] <26634292+bors[bot]@users.noreply.github.com>2020-02-03 22:51:17 +0000
committerGitHub <[email protected]>2020-02-03 22:51:17 +0000
commit918547dbe9a2907401102eba491ac25cebe1404d (patch)
treee0aa3bdcec597e81f022ac1ce388d42724a92f51 /crates/ra_syntax/test_data/lexer/ok
parentb090ee5a65f9630146c2842bc51fcfcc8da08da1 (diff)
parenta3e5663ae0206270156fbeb926a174a40abbddb0 (diff)
Merge #2911
2911: Implement collecting errors while tokenizing r=matklad a=Veetaha Now we are collecting errors from `rustc_lexer` and returning them in `ParsedToken { token, error }` and `ParsedTokens { tokens, errors }` structures **([UPD]: this is now simplified, see updates bellow)**. The main changes are introduced in `ra_syntax/parsing/lexer.rs`. It now exposes the following functions and types: ```rust pub fn tokenize(text: &str) -> ParsedTokens; pub fn tokenize_append(text: &str, parsed_tokens_to_append_to: &mut ParsedTokens); pub fn first_token(text: &str) -> Option<ParsedToken>; // allows any number of tokens in text pub fn single_token(text: &str) -> Option<ParsedToken>; // allows only a single token in text pub struct ParsedToken { pub token: Token, pub error: Option<SyntaxError> } pub struct ParsedTokens { pub tokens: Vec<Token>, pub errors: Vec<SyntaxError> } pub enum TokenizeError { /* Simple enum which reflects rustc_lexer tokenization errors */ } ``` In the first commit I implemented it with iterators, but then decided that since this crate is ad hoc for `rust-analyzer` and we clearly see the places of its usage it would be better to simplify it to vectors. This is currently WIP, because I want to add tests for error messages generated by the lexer. I'd like to listen to you thoughts how to define these tests in `ra_syntax/test-data` dir. Related issues: #223 **[UPD]** After the PR review the API was simplified: ```rust pub fn tokenize(text: &str) -> (Vec<Token>, Vec<SyntaxError>); // Both lex functions do not check for unescape errors pub fn lex_single_syntax_kind(text: &str) -> Option<(SyntaxKind, Option<SyntaxError>)>; pub fn lex_single_valid_syntax_kind(text: &str) -> Option<SyntaxKind>; // This will be removed in the next PR in favour of simlifying `SyntaxError` to `(String, TextRange)` pub enum TokenizeError { /* Simple enum which reflects rustc_lexer tokenization errors */ } // this is private, but may be made public if such demand would exist in future (least privilege principle) fn lex_first_token(text: &str) -> Option<(Token, Option<SyntaxError>)>; ``` Co-authored-by: Veetaha <[email protected]>
Diffstat (limited to 'crates/ra_syntax/test_data/lexer/ok')
-rw-r--r--crates/ra_syntax/test_data/lexer/ok/0001_hello.rs1
-rw-r--r--crates/ra_syntax/test_data/lexer/ok/0001_hello.txt3
-rw-r--r--crates/ra_syntax/test_data/lexer/ok/0002_whitespace.rs4
-rw-r--r--crates/ra_syntax/test_data/lexer/ok/0002_whitespace.txt12
-rw-r--r--crates/ra_syntax/test_data/lexer/ok/0003_ident.rs1
-rw-r--r--crates/ra_syntax/test_data/lexer/ok/0003_ident.txt14
-rw-r--r--crates/ra_syntax/test_data/lexer/ok/0004_numbers.rs9
-rw-r--r--crates/ra_syntax/test_data/lexer/ok/0004_numbers.txt57
-rw-r--r--crates/ra_syntax/test_data/lexer/ok/0005_symbols.rs6
-rw-r--r--crates/ra_syntax/test_data/lexer/ok/0005_symbols.txt77
-rw-r--r--crates/ra_syntax/test_data/lexer/ok/0006_chars.rs1
-rw-r--r--crates/ra_syntax/test_data/lexer/ok/0006_chars.txt16
-rw-r--r--crates/ra_syntax/test_data/lexer/ok/0007_lifetimes.rs1
-rw-r--r--crates/ra_syntax/test_data/lexer/ok/0007_lifetimes.txt8
-rw-r--r--crates/ra_syntax/test_data/lexer/ok/0008_byte_strings.rs3
-rw-r--r--crates/ra_syntax/test_data/lexer/ok/0008_byte_strings.txt22
-rw-r--r--crates/ra_syntax/test_data/lexer/ok/0009_strings.rs2
-rw-r--r--crates/ra_syntax/test_data/lexer/ok/0009_strings.txt8
-rw-r--r--crates/ra_syntax/test_data/lexer/ok/0010_single_line_comments.rs12
-rw-r--r--crates/ra_syntax/test_data/lexer/ok/0010_single_line_comments.txt22
-rw-r--r--crates/ra_syntax/test_data/lexer/ok/0011_keywords.rs3
-rw-r--r--crates/ra_syntax/test_data/lexer/ok/0011_keywords.txt64
-rw-r--r--crates/ra_syntax/test_data/lexer/ok/0012_block_comment.rs3
-rw-r--r--crates/ra_syntax/test_data/lexer/ok/0012_block_comment.txt6
-rw-r--r--crates/ra_syntax/test_data/lexer/ok/0013_raw_strings.rs1
-rw-r--r--crates/ra_syntax/test_data/lexer/ok/0013_raw_strings.txt2
-rw-r--r--crates/ra_syntax/test_data/lexer/ok/0014_raw_ident.rs1
-rw-r--r--crates/ra_syntax/test_data/lexer/ok/0014_raw_ident.txt2
28 files changed, 361 insertions, 0 deletions
diff --git a/crates/ra_syntax/test_data/lexer/ok/0001_hello.rs b/crates/ra_syntax/test_data/lexer/ok/0001_hello.rs
new file mode 100644
index 000000000..95d09f2b1
--- /dev/null
+++ b/crates/ra_syntax/test_data/lexer/ok/0001_hello.rs
@@ -0,0 +1 @@
hello world \ No newline at end of file
diff --git a/crates/ra_syntax/test_data/lexer/ok/0001_hello.txt b/crates/ra_syntax/test_data/lexer/ok/0001_hello.txt
new file mode 100644
index 000000000..27a5940a9
--- /dev/null
+++ b/crates/ra_syntax/test_data/lexer/ok/0001_hello.txt
@@ -0,0 +1,3 @@
1IDENT 5 "hello"
2WHITESPACE 1 " "
3IDENT 5 "world"
diff --git a/crates/ra_syntax/test_data/lexer/ok/0002_whitespace.rs b/crates/ra_syntax/test_data/lexer/ok/0002_whitespace.rs
new file mode 100644
index 000000000..08fce1418
--- /dev/null
+++ b/crates/ra_syntax/test_data/lexer/ok/0002_whitespace.rs
@@ -0,0 +1,4 @@
1a b c
2d
3
4e f
diff --git a/crates/ra_syntax/test_data/lexer/ok/0002_whitespace.txt b/crates/ra_syntax/test_data/lexer/ok/0002_whitespace.txt
new file mode 100644
index 000000000..01d260918
--- /dev/null
+++ b/crates/ra_syntax/test_data/lexer/ok/0002_whitespace.txt
@@ -0,0 +1,12 @@
1IDENT 1 "a"
2WHITESPACE 1 " "
3IDENT 1 "b"
4WHITESPACE 2 " "
5IDENT 1 "c"
6WHITESPACE 1 "\n"
7IDENT 1 "d"
8WHITESPACE 2 "\n\n"
9IDENT 1 "e"
10WHITESPACE 1 "\t"
11IDENT 1 "f"
12WHITESPACE 1 "\n"
diff --git a/crates/ra_syntax/test_data/lexer/ok/0003_ident.rs b/crates/ra_syntax/test_data/lexer/ok/0003_ident.rs
new file mode 100644
index 000000000..c05c9c009
--- /dev/null
+++ b/crates/ra_syntax/test_data/lexer/ok/0003_ident.rs
@@ -0,0 +1 @@
foo foo_ _foo _ __ x привет
diff --git a/crates/ra_syntax/test_data/lexer/ok/0003_ident.txt b/crates/ra_syntax/test_data/lexer/ok/0003_ident.txt
new file mode 100644
index 000000000..4a0d5c053
--- /dev/null
+++ b/crates/ra_syntax/test_data/lexer/ok/0003_ident.txt
@@ -0,0 +1,14 @@
1IDENT 3 "foo"
2WHITESPACE 1 " "
3IDENT 4 "foo_"
4WHITESPACE 1 " "
5IDENT 4 "_foo"
6WHITESPACE 1 " "
7UNDERSCORE 1 "_"
8WHITESPACE 1 " "
9IDENT 2 "__"
10WHITESPACE 1 " "
11IDENT 1 "x"
12WHITESPACE 1 " "
13IDENT 12 "привет"
14WHITESPACE 1 "\n"
diff --git a/crates/ra_syntax/test_data/lexer/ok/0004_numbers.rs b/crates/ra_syntax/test_data/lexer/ok/0004_numbers.rs
new file mode 100644
index 000000000..bc761c235
--- /dev/null
+++ b/crates/ra_syntax/test_data/lexer/ok/0004_numbers.rs
@@ -0,0 +1,9 @@
10 00 0_ 0. 0z
201790 0b1790 0o1790 0x1790aAbBcCdDeEfF 001279 0_1279 0.1279 0e1279 0E1279
30..2
40.foo()
50e+1
60.e+1
70.0E-2
80___0.10000____0000e+111__
91i64 92.0f32 11__s
diff --git a/crates/ra_syntax/test_data/lexer/ok/0004_numbers.txt b/crates/ra_syntax/test_data/lexer/ok/0004_numbers.txt
new file mode 100644
index 000000000..e19fc5789
--- /dev/null
+++ b/crates/ra_syntax/test_data/lexer/ok/0004_numbers.txt
@@ -0,0 +1,57 @@
1INT_NUMBER 1 "0"
2WHITESPACE 1 " "
3INT_NUMBER 2 "00"
4WHITESPACE 1 " "
5INT_NUMBER 2 "0_"
6WHITESPACE 1 " "
7FLOAT_NUMBER 2 "0."
8WHITESPACE 1 " "
9INT_NUMBER 2 "0z"
10WHITESPACE 1 "\n"
11INT_NUMBER 5 "01790"
12WHITESPACE 1 " "
13INT_NUMBER 6 "0b1790"
14WHITESPACE 1 " "
15INT_NUMBER 6 "0o1790"
16WHITESPACE 1 " "
17INT_NUMBER 18 "0x1790aAbBcCdDeEfF"
18WHITESPACE 1 " "
19INT_NUMBER 6 "001279"
20WHITESPACE 1 " "
21INT_NUMBER 6 "0_1279"
22WHITESPACE 1 " "
23FLOAT_NUMBER 6 "0.1279"
24WHITESPACE 1 " "
25FLOAT_NUMBER 6 "0e1279"
26WHITESPACE 1 " "
27FLOAT_NUMBER 6 "0E1279"
28WHITESPACE 1 "\n"
29INT_NUMBER 1 "0"
30DOT 1 "."
31DOT 1 "."
32INT_NUMBER 1 "2"
33WHITESPACE 1 "\n"
34INT_NUMBER 1 "0"
35DOT 1 "."
36IDENT 3 "foo"
37L_PAREN 1 "("
38R_PAREN 1 ")"
39WHITESPACE 1 "\n"
40FLOAT_NUMBER 4 "0e+1"
41WHITESPACE 1 "\n"
42INT_NUMBER 1 "0"
43DOT 1 "."
44IDENT 1 "e"
45PLUS 1 "+"
46INT_NUMBER 1 "1"
47WHITESPACE 1 "\n"
48FLOAT_NUMBER 6 "0.0E-2"
49WHITESPACE 1 "\n"
50FLOAT_NUMBER 26 "0___0.10000____0000e+111__"
51WHITESPACE 1 "\n"
52INT_NUMBER 4 "1i64"
53WHITESPACE 1 " "
54FLOAT_NUMBER 7 "92.0f32"
55WHITESPACE 1 " "
56INT_NUMBER 5 "11__s"
57WHITESPACE 1 "\n"
diff --git a/crates/ra_syntax/test_data/lexer/ok/0005_symbols.rs b/crates/ra_syntax/test_data/lexer/ok/0005_symbols.rs
new file mode 100644
index 000000000..487569b5a
--- /dev/null
+++ b/crates/ra_syntax/test_data/lexer/ok/0005_symbols.rs
@@ -0,0 +1,6 @@
1; , ( ) { } [ ] < > @ # ~ ? $ & | + * / ^ %
2. .. ... ..=
3: ::
4= =>
5! !=
6- ->
diff --git a/crates/ra_syntax/test_data/lexer/ok/0005_symbols.txt b/crates/ra_syntax/test_data/lexer/ok/0005_symbols.txt
new file mode 100644
index 000000000..469a90e42
--- /dev/null
+++ b/crates/ra_syntax/test_data/lexer/ok/0005_symbols.txt
@@ -0,0 +1,77 @@
1SEMI 1 ";"
2WHITESPACE 1 " "
3COMMA 1 ","
4WHITESPACE 1 " "
5L_PAREN 1 "("
6WHITESPACE 1 " "
7R_PAREN 1 ")"
8WHITESPACE 1 " "
9L_CURLY 1 "{"
10WHITESPACE 1 " "
11R_CURLY 1 "}"
12WHITESPACE 1 " "
13L_BRACK 1 "["
14WHITESPACE 1 " "
15R_BRACK 1 "]"
16WHITESPACE 1 " "
17L_ANGLE 1 "<"
18WHITESPACE 1 " "
19R_ANGLE 1 ">"
20WHITESPACE 1 " "
21AT 1 "@"
22WHITESPACE 1 " "
23POUND 1 "#"
24WHITESPACE 1 " "
25TILDE 1 "~"
26WHITESPACE 1 " "
27QUESTION 1 "?"
28WHITESPACE 1 " "
29DOLLAR 1 "$"
30WHITESPACE 1 " "
31AMP 1 "&"
32WHITESPACE 1 " "
33PIPE 1 "|"
34WHITESPACE 1 " "
35PLUS 1 "+"
36WHITESPACE 1 " "
37STAR 1 "*"
38WHITESPACE 1 " "
39SLASH 1 "/"
40WHITESPACE 1 " "
41CARET 1 "^"
42WHITESPACE 1 " "
43PERCENT 1 "%"
44WHITESPACE 1 "\n"
45DOT 1 "."
46WHITESPACE 1 " "
47DOT 1 "."
48DOT 1 "."
49WHITESPACE 1 " "
50DOT 1 "."
51DOT 1 "."
52DOT 1 "."
53WHITESPACE 1 " "
54DOT 1 "."
55DOT 1 "."
56EQ 1 "="
57WHITESPACE 1 "\n"
58COLON 1 ":"
59WHITESPACE 1 " "
60COLON 1 ":"
61COLON 1 ":"
62WHITESPACE 1 "\n"
63EQ 1 "="
64WHITESPACE 1 " "
65EQ 1 "="
66R_ANGLE 1 ">"
67WHITESPACE 1 "\n"
68EXCL 1 "!"
69WHITESPACE 1 " "
70EXCL 1 "!"
71EQ 1 "="
72WHITESPACE 1 "\n"
73MINUS 1 "-"
74WHITESPACE 1 " "
75MINUS 1 "-"
76R_ANGLE 1 ">"
77WHITESPACE 1 "\n"
diff --git a/crates/ra_syntax/test_data/lexer/ok/0006_chars.rs b/crates/ra_syntax/test_data/lexer/ok/0006_chars.rs
new file mode 100644
index 000000000..454ee0a5f
--- /dev/null
+++ b/crates/ra_syntax/test_data/lexer/ok/0006_chars.rs
@@ -0,0 +1 @@
'x' ' ' '0' 'hello' '\x7f' '\n' '\\' '\''
diff --git a/crates/ra_syntax/test_data/lexer/ok/0006_chars.txt b/crates/ra_syntax/test_data/lexer/ok/0006_chars.txt
new file mode 100644
index 000000000..950954fbc
--- /dev/null
+++ b/crates/ra_syntax/test_data/lexer/ok/0006_chars.txt
@@ -0,0 +1,16 @@
1CHAR 3 "\'x\'"
2WHITESPACE 1 " "
3CHAR 3 "\' \'"
4WHITESPACE 1 " "
5CHAR 3 "\'0\'"
6WHITESPACE 1 " "
7CHAR 7 "\'hello\'"
8WHITESPACE 1 " "
9CHAR 6 "\'\\x7f\'"
10WHITESPACE 1 " "
11CHAR 4 "\'\\n\'"
12WHITESPACE 1 " "
13CHAR 4 "\'\\\\\'"
14WHITESPACE 1 " "
15CHAR 4 "\'\\\'\'"
16WHITESPACE 1 "\n"
diff --git a/crates/ra_syntax/test_data/lexer/ok/0007_lifetimes.rs b/crates/ra_syntax/test_data/lexer/ok/0007_lifetimes.rs
new file mode 100644
index 000000000..b764f1dce
--- /dev/null
+++ b/crates/ra_syntax/test_data/lexer/ok/0007_lifetimes.rs
@@ -0,0 +1 @@
'a 'foo 'foo_bar_baz '_
diff --git a/crates/ra_syntax/test_data/lexer/ok/0007_lifetimes.txt b/crates/ra_syntax/test_data/lexer/ok/0007_lifetimes.txt
new file mode 100644
index 000000000..005c29100
--- /dev/null
+++ b/crates/ra_syntax/test_data/lexer/ok/0007_lifetimes.txt
@@ -0,0 +1,8 @@
1LIFETIME 2 "\'a"
2WHITESPACE 1 " "
3LIFETIME 4 "\'foo"
4WHITESPACE 1 " "
5LIFETIME 12 "\'foo_bar_baz"
6WHITESPACE 1 " "
7LIFETIME 2 "\'_"
8WHITESPACE 1 "\n"
diff --git a/crates/ra_syntax/test_data/lexer/ok/0008_byte_strings.rs b/crates/ra_syntax/test_data/lexer/ok/0008_byte_strings.rs
new file mode 100644
index 000000000..b54930f5e
--- /dev/null
+++ b/crates/ra_syntax/test_data/lexer/ok/0008_byte_strings.rs
@@ -0,0 +1,3 @@
1b'' b'x' b"foo" br""
2b''suf b""ix br""br
3b'\n' b'\\' b'\'' b'hello'
diff --git a/crates/ra_syntax/test_data/lexer/ok/0008_byte_strings.txt b/crates/ra_syntax/test_data/lexer/ok/0008_byte_strings.txt
new file mode 100644
index 000000000..bc03b51a8
--- /dev/null
+++ b/crates/ra_syntax/test_data/lexer/ok/0008_byte_strings.txt
@@ -0,0 +1,22 @@
1BYTE 3 "b\'\'"
2WHITESPACE 1 " "
3BYTE 4 "b\'x\'"
4WHITESPACE 1 " "
5BYTE_STRING 6 "b\"foo\""
6WHITESPACE 1 " "
7RAW_BYTE_STRING 4 "br\"\""
8WHITESPACE 1 "\n"
9BYTE 6 "b\'\'suf"
10WHITESPACE 1 " "
11BYTE_STRING 5 "b\"\"ix"
12WHITESPACE 1 " "
13RAW_BYTE_STRING 6 "br\"\"br"
14WHITESPACE 1 "\n"
15BYTE 5 "b\'\\n\'"
16WHITESPACE 1 " "
17BYTE 5 "b\'\\\\\'"
18WHITESPACE 1 " "
19BYTE 5 "b\'\\\'\'"
20WHITESPACE 1 " "
21BYTE 8 "b\'hello\'"
22WHITESPACE 1 "\n"
diff --git a/crates/ra_syntax/test_data/lexer/ok/0009_strings.rs b/crates/ra_syntax/test_data/lexer/ok/0009_strings.rs
new file mode 100644
index 000000000..4ddb5bffc
--- /dev/null
+++ b/crates/ra_syntax/test_data/lexer/ok/0009_strings.rs
@@ -0,0 +1,2 @@
1"hello" r"world" "\n\"\\no escape" "multi
2line"
diff --git a/crates/ra_syntax/test_data/lexer/ok/0009_strings.txt b/crates/ra_syntax/test_data/lexer/ok/0009_strings.txt
new file mode 100644
index 000000000..4cb4d711d
--- /dev/null
+++ b/crates/ra_syntax/test_data/lexer/ok/0009_strings.txt
@@ -0,0 +1,8 @@
1STRING 7 "\"hello\""
2WHITESPACE 1 " "
3RAW_STRING 8 "r\"world\""
4WHITESPACE 1 " "
5STRING 17 "\"\\n\\\"\\\\no escape\""
6WHITESPACE 1 " "
7STRING 12 "\"multi\nline\""
8WHITESPACE 1 "\n"
diff --git a/crates/ra_syntax/test_data/lexer/ok/0010_single_line_comments.rs b/crates/ra_syntax/test_data/lexer/ok/0010_single_line_comments.rs
new file mode 100644
index 000000000..4b6653f9c
--- /dev/null
+++ b/crates/ra_syntax/test_data/lexer/ok/0010_single_line_comments.rs
@@ -0,0 +1,12 @@
1#!/usr/bin/env bash
2// hello
3//! World
4//!! Inner line doc
5/// Outer line doc
6//// Just a comment
7
8//
9//!
10//!!
11///
12////
diff --git a/crates/ra_syntax/test_data/lexer/ok/0010_single_line_comments.txt b/crates/ra_syntax/test_data/lexer/ok/0010_single_line_comments.txt
new file mode 100644
index 000000000..98a3818c0
--- /dev/null
+++ b/crates/ra_syntax/test_data/lexer/ok/0010_single_line_comments.txt
@@ -0,0 +1,22 @@
1SHEBANG 19 "#!/usr/bin/env bash"
2WHITESPACE 1 "\n"
3COMMENT 8 "// hello"
4WHITESPACE 1 "\n"
5COMMENT 9 "//! World"
6WHITESPACE 1 "\n"
7COMMENT 19 "//!! Inner line doc"
8WHITESPACE 1 "\n"
9COMMENT 18 "/// Outer line doc"
10WHITESPACE 1 "\n"
11COMMENT 19 "//// Just a comment"
12WHITESPACE 2 "\n\n"
13COMMENT 2 "//"
14WHITESPACE 1 "\n"
15COMMENT 3 "//!"
16WHITESPACE 1 "\n"
17COMMENT 4 "//!!"
18WHITESPACE 1 "\n"
19COMMENT 3 "///"
20WHITESPACE 1 "\n"
21COMMENT 4 "////"
22WHITESPACE 1 "\n"
diff --git a/crates/ra_syntax/test_data/lexer/ok/0011_keywords.rs b/crates/ra_syntax/test_data/lexer/ok/0011_keywords.rs
new file mode 100644
index 000000000..1e91bff4e
--- /dev/null
+++ b/crates/ra_syntax/test_data/lexer/ok/0011_keywords.rs
@@ -0,0 +1,3 @@
1async fn use struct trait enum impl true false as extern crate
2mod pub self super in where for loop while if match const
3static mut type ref let else move return
diff --git a/crates/ra_syntax/test_data/lexer/ok/0011_keywords.txt b/crates/ra_syntax/test_data/lexer/ok/0011_keywords.txt
new file mode 100644
index 000000000..22c00eefb
--- /dev/null
+++ b/crates/ra_syntax/test_data/lexer/ok/0011_keywords.txt
@@ -0,0 +1,64 @@
1ASYNC_KW 5 "async"
2WHITESPACE 1 " "
3FN_KW 2 "fn"
4WHITESPACE 1 " "
5USE_KW 3 "use"
6WHITESPACE 1 " "
7STRUCT_KW 6 "struct"
8WHITESPACE 1 " "
9TRAIT_KW 5 "trait"
10WHITESPACE 1 " "
11ENUM_KW 4 "enum"
12WHITESPACE 1 " "
13IMPL_KW 4 "impl"
14WHITESPACE 1 " "
15TRUE_KW 4 "true"
16WHITESPACE 1 " "
17FALSE_KW 5 "false"
18WHITESPACE 1 " "
19AS_KW 2 "as"
20WHITESPACE 1 " "
21EXTERN_KW 6 "extern"
22WHITESPACE 1 " "
23CRATE_KW 5 "crate"
24WHITESPACE 1 "\n"
25MOD_KW 3 "mod"
26WHITESPACE 1 " "
27PUB_KW 3 "pub"
28WHITESPACE 1 " "
29SELF_KW 4 "self"
30WHITESPACE 1 " "
31SUPER_KW 5 "super"
32WHITESPACE 1 " "
33IN_KW 2 "in"
34WHITESPACE 1 " "
35WHERE_KW 5 "where"
36WHITESPACE 1 " "
37FOR_KW 3 "for"
38WHITESPACE 1 " "
39LOOP_KW 4 "loop"
40WHITESPACE 1 " "
41WHILE_KW 5 "while"
42WHITESPACE 1 " "
43IF_KW 2 "if"
44WHITESPACE 1 " "
45MATCH_KW 5 "match"
46WHITESPACE 1 " "
47CONST_KW 5 "const"
48WHITESPACE 1 "\n"
49STATIC_KW 6 "static"
50WHITESPACE 1 " "
51MUT_KW 3 "mut"
52WHITESPACE 1 " "
53TYPE_KW 4 "type"
54WHITESPACE 1 " "
55REF_KW 3 "ref"
56WHITESPACE 1 " "
57LET_KW 3 "let"
58WHITESPACE 1 " "
59ELSE_KW 4 "else"
60WHITESPACE 1 " "
61MOVE_KW 4 "move"
62WHITESPACE 1 " "
63RETURN_KW 6 "return"
64WHITESPACE 1 "\n"
diff --git a/crates/ra_syntax/test_data/lexer/ok/0012_block_comment.rs b/crates/ra_syntax/test_data/lexer/ok/0012_block_comment.rs
new file mode 100644
index 000000000..b880a59d9
--- /dev/null
+++ b/crates/ra_syntax/test_data/lexer/ok/0012_block_comment.rs
@@ -0,0 +1,3 @@
1/* */
2/**/
3/* /* */ */
diff --git a/crates/ra_syntax/test_data/lexer/ok/0012_block_comment.txt b/crates/ra_syntax/test_data/lexer/ok/0012_block_comment.txt
new file mode 100644
index 000000000..2618e287e
--- /dev/null
+++ b/crates/ra_syntax/test_data/lexer/ok/0012_block_comment.txt
@@ -0,0 +1,6 @@
1COMMENT 5 "/* */"
2WHITESPACE 1 "\n"
3COMMENT 4 "/**/"
4WHITESPACE 1 "\n"
5COMMENT 11 "/* /* */ */"
6WHITESPACE 1 "\n"
diff --git a/crates/ra_syntax/test_data/lexer/ok/0013_raw_strings.rs b/crates/ra_syntax/test_data/lexer/ok/0013_raw_strings.rs
new file mode 100644
index 000000000..e5ed0b693
--- /dev/null
+++ b/crates/ra_syntax/test_data/lexer/ok/0013_raw_strings.rs
@@ -0,0 +1 @@
r###"this is a r##"raw"## string"###
diff --git a/crates/ra_syntax/test_data/lexer/ok/0013_raw_strings.txt b/crates/ra_syntax/test_data/lexer/ok/0013_raw_strings.txt
new file mode 100644
index 000000000..9cf0957d1
--- /dev/null
+++ b/crates/ra_syntax/test_data/lexer/ok/0013_raw_strings.txt
@@ -0,0 +1,2 @@
1RAW_STRING 36 "r###\"this is a r##\"raw\"## string\"###"
2WHITESPACE 1 "\n"
diff --git a/crates/ra_syntax/test_data/lexer/ok/0014_raw_ident.rs b/crates/ra_syntax/test_data/lexer/ok/0014_raw_ident.rs
new file mode 100644
index 000000000..b40a1b6a2
--- /dev/null
+++ b/crates/ra_syntax/test_data/lexer/ok/0014_raw_ident.rs
@@ -0,0 +1 @@
r#raw_ident
diff --git a/crates/ra_syntax/test_data/lexer/ok/0014_raw_ident.txt b/crates/ra_syntax/test_data/lexer/ok/0014_raw_ident.txt
new file mode 100644
index 000000000..484689693
--- /dev/null
+++ b/crates/ra_syntax/test_data/lexer/ok/0014_raw_ident.txt
@@ -0,0 +1,2 @@
1IDENT 11 "r#raw_ident"
2WHITESPACE 1 "\n"