difftreelog
feat(parser) use PathBuf for file names
in: master
2 files changed
crates/jsonnet-parser/src/expr.rsdiffbeforeafterboth--- a/crates/jsonnet-parser/src/expr.rs
+++ b/crates/jsonnet-parser/src/expr.rs
@@ -1,5 +1,5 @@
use serde::{Deserialize, Serialize};
-use std::{fmt::Debug, rc::Rc};
+use std::{fmt::Debug, path::PathBuf, rc::Rc};
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum FieldName {
@@ -50,8 +50,7 @@
pub enum BinaryOpType {
Mul,
Div,
- // Mod is desugared to std.mod
- // Mod,
+
Add,
Sub,
@@ -64,10 +63,6 @@
Gte,
In,
-
- // Eq/Ne is desugared to std.equals
- // Eq,
- // Ne,
BitAnd,
BitOr,
@@ -120,7 +115,6 @@
key: LocExpr,
value: LocExpr,
post_locals: Vec<BindSpec>,
- first: ForSpecData,
rest: Vec<CompSpec>,
},
}
@@ -225,10 +219,10 @@
/// file, begin offset, end offset
#[derive(Clone, PartialEq, Serialize, Deserialize)]
-pub struct ExprLocation(pub String, pub usize, pub usize);
+pub struct ExprLocation(pub PathBuf, pub usize, pub usize);
impl Debug for ExprLocation {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
- write!(f, "{}:{:?}-{:?}", self.0, self.1, self.2)
+ write!(f, "{:?}:{:?}-{:?}", self.0, self.1, self.2)
}
}
crates/jsonnet-parser/src/lib.rsdiffbeforeafterboth4extern crate test;4extern crate test;556use peg::parser;6use peg::parser;7use std::rc::Rc;7use std::{path::PathBuf, rc::Rc};8mod expr;8mod expr;9pub use expr::*;9pub use expr::*;1010191920pub struct ParserSettings {20pub struct ParserSettings {21 pub loc_data: bool,21 pub loc_data: bool,22 pub file_name: String,22 pub file_name: PathBuf,23}23}242425parser! {25parser! {118 / assertion:assertion(s) {expr::Member::AssertStmt(assertion)}118 / assertion:assertion(s) {expr::Member::AssertStmt(assertion)}119 / field:field(s) {expr::Member::Field(field)}119 / field:field(s) {expr::Member::Field(field)}120 pub rule objinside(s: &ParserSettings) -> expr::ObjBody120 pub rule objinside(s: &ParserSettings) -> expr::ObjBody121 = pre_locals:(b: obj_local(s) comma() {b})* "[" _ key:expr(s) _ "]" _ ":" _ value:expr(s) post_locals:(comma() b:obj_local(s) {b})* _ first:forspec(s) rest:(_ rest:compspec(s) {rest})? {121 = pre_locals:(b: obj_local(s) comma() {b})* "[" _ key:expr(s) _ "]" _ ":" _ value:expr(s) post_locals:(comma() b:obj_local(s) {b})* _ forspec:forspec(s) others:(_ rest:compspec(s) {rest})? {122 expr::ObjBody::ObjComp {122 expr::ObjBody::ObjComp {123 pre_locals,123 pre_locals,124 key,124 key,125 value,125 value,126 post_locals,126 post_locals,127 first,128 rest: rest.unwrap_or_default(),127 rest: [vec![CompSpec::ForSpec(forspec)], others.unwrap_or_default()].concat(),129 }128 }130 }129 }131 / members:(member(s) ** comma()) comma()? {expr::ObjBody::MemberList(members)}130 / members:(member(s) ** comma()) comma()? {expr::ObjBody::MemberList(members)}301pub mod tests {300pub mod tests {302 use super::{expr::*, parse};301 use super::{expr::*, parse};303 use crate::ParserSettings;302 use crate::ParserSettings;303 use std::path::PathBuf;304304305 macro_rules! parse {305 macro_rules! parse {306 ($s:expr) => {306 ($s:expr) => {307 parse(307 parse(308 $s,308 $s,309 &ParserSettings {309 &ParserSettings {310 loc_data: false,310 loc_data: false,311 file_name: "test.jsonnet".to_owned(),311 file_name: PathBuf::from("/test.jsonnet"),312 },312 },313 )313 )314 .unwrap()314 .unwrap()