v2 / vlib / v / tests / options / option_match_case_cast_test.v
49 lines · 41 sloc · 901 bytes · 20150352187388781b1f64476f508954a369e204
Raw
1module main
2
3type SecondTokenizerValue = []rune | Keyword
4
5enum AdvancedTokenType {
6 identifier
7 keyword
8 newline
9}
10
11struct SecondTokenizerToken {
12 type AdvancedTokenType
13 value ?SecondTokenizerValue
14}
15
16enum Keyword {
17 module
18 import
19}
20
21fn test_main() {
22 mut tokens := []SecondTokenizerToken{}
23 tokens << SecondTokenizerToken{
24 type: AdvancedTokenType.keyword
25 value: Keyword.module
26 }
27 build_ast(tokens) or { assert err.msg() == 'Handling module' }
28}
29
30struct RootAST {
31 module []rune
32}
33
34fn build_ast(tokens []SecondTokenizerToken) !RootAST {
35 token := tokens[0]
36 match true {
37 token.type == .keyword && token.value == ?SecondTokenizerValue(Keyword.module) {
38 return error('Handling module')
39 }
40 token.type == .keyword && token.value == ?SecondTokenizerValue(Keyword.import) {
41 return error('Handling import')
42 }
43 else {
44 return error('else')
45 }
46 }
47
48 return error('Not implemented')
49}
50