rust/crates/syntax/src/hacks.rs

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

16 lines
484 B
Rust
Raw Normal View History

//! Things which exist to solve practical issues, but which shouldn't exist.
2021-12-28 09:57:13 -06:00
//!
//! Please avoid adding new usages of the functions in this module
use crate::{ast, AstNode};
pub fn parse_expr_from_str(s: &str) -> Option<ast::Expr> {
2021-12-28 10:13:30 -06:00
let s = s.trim();
let file = ast::SourceFile::parse(&format!("const _: () = {s};"));
2021-12-28 09:57:13 -06:00
let expr = file.syntax_node().descendants().find_map(ast::Expr::cast)?;
if expr.syntax().text() != s {
return None;
}
Some(expr)
}