File tree Expand file tree Collapse file tree 2 files changed +16
-2
lines changed Expand file tree Collapse file tree 2 files changed +16
-2
lines changed Original file line number Diff line number Diff line change @@ -35,3 +35,17 @@ pub(crate) fn item(s: &str) -> Result<SyntaxNode, ()> {
35
35
}
36
36
Ok ( node. syntax ( ) . clone ( ) )
37
37
}
38
+
39
+ pub ( crate ) fn expr ( s : & str ) -> Result < SyntaxNode , ( ) > {
40
+ let template = "const _: () = {};" ;
41
+ let input = template. replace ( "{}" , s) ;
42
+ let parse = syntax:: SourceFile :: parse ( & input) ;
43
+ if !parse. errors ( ) . is_empty ( ) {
44
+ return Err ( ( ) ) ;
45
+ }
46
+ let node = parse. tree ( ) . syntax ( ) . descendants ( ) . find_map ( ast:: Expr :: cast) . ok_or ( ( ) ) ?;
47
+ if node. to_string ( ) != s {
48
+ return Err ( ( ) ) ;
49
+ }
50
+ Ok ( node. syntax ( ) . clone ( ) )
51
+ }
Original file line number Diff line number Diff line change @@ -74,8 +74,8 @@ impl ParsedRule {
74
74
} ;
75
75
76
76
let raw_template_stmt = raw_template. map ( ast:: Stmt :: parse) ;
77
- if let raw_template_expr @ Some ( Ok ( _) ) = raw_template. map ( ast :: Expr :: parse ) {
78
- builder. try_add ( ast :: Expr :: parse ( & raw_pattern) , raw_template_expr) ;
77
+ if let raw_template_expr @ Some ( Ok ( _) ) = raw_template. map ( fragments :: expr ) {
78
+ builder. try_add2 ( fragments :: expr ( & raw_pattern) , raw_template_expr) ;
79
79
} else {
80
80
builder. try_add ( ast:: Expr :: parse ( & raw_pattern) , raw_template_stmt. clone ( ) ) ;
81
81
}
You can’t perform that action at this time.
0 commit comments