]>
Commit | Line | Data |
---|---|---|
b7449926 | 1 | // run-pass |
0bf4aa26 | 2 | #![allow(unused_variables)] |
2c00a5a8 | 3 | // compile-flags: -C codegen-units=8 -O |
b7449926 | 4 | #![allow(non_snake_case)] |
2c00a5a8 XL |
5 | |
6 | fn main() { | |
7 | nom_sql::selection(b"x "); | |
8 | } | |
9 | ||
10 | pub enum Err<P>{ | |
11 | Position(P), | |
12 | NodePosition(u32), | |
13 | } | |
14 | ||
15 | pub enum IResult<I,O> { | |
16 | Done(I,O), | |
17 | Error(Err<I>), | |
18 | Incomplete(u32, u64) | |
19 | } | |
20 | ||
21 | pub fn multispace<T: Copy>(input: T) -> ::IResult<i8, i8> { | |
22 | ::IResult::Done(0, 0) | |
23 | } | |
24 | ||
25 | mod nom_sql { | |
26 | fn where_clause(i: &[u8]) -> ::IResult<&[u8], Option<String>> { | |
27 | let X = match ::multispace(i) { | |
28 | ::IResult::Done(..) => ::IResult::Done(i, None::<String>), | |
29 | _ => ::IResult::Error(::Err::NodePosition(0)), | |
30 | }; | |
31 | match X { | |
32 | ::IResult::Done(_, _) => ::IResult::Done(i, None), | |
33 | _ => X | |
34 | } | |
35 | } | |
36 | ||
37 | pub fn selection(i: &[u8]) { | |
38 | let Y = match { | |
39 | match { | |
40 | where_clause(i) | |
41 | } { | |
42 | ::IResult::Done(_, o) => ::IResult::Done(i, Some(o)), | |
43 | ::IResult::Error(_) => ::IResult::Done(i, None), | |
44 | _ => ::IResult::Incomplete(0, 0), | |
45 | } | |
46 | } { | |
47 | ::IResult::Done(z, _) => ::IResult::Done(z, None::<String>), | |
48 | _ => return () | |
49 | }; | |
50 | match Y { | |
51 | ::IResult::Done(x, _) => { | |
52 | let bytes = b"; "; | |
53 | let len = x.len(); | |
54 | bytes[len]; | |
55 | } | |
56 | _ => () | |
57 | } | |
58 | } | |
59 | } |