diff --git a/crates/dreammaker/src/ast.rs b/crates/dreammaker/src/ast.rs index cd6789fd..91de444a 100644 --- a/crates/dreammaker/src/ast.rs +++ b/crates/dreammaker/src/ast.rs @@ -847,11 +847,11 @@ pub enum Term { /// A prefab literal (path + vars). Prefab(Box), /// An interpolated string, alternating string/expr/string/expr. - InterpString(String, Box<[(Option, String)]>), + InterpString(Ident2, Box<[(Option, Box)]>), // Function calls with recursive contents --------------------------------- /// An unscoped function call. - Call(Ident, Box<[Expression]>), + Call(Ident2, Box<[Expression]>), /// A `.()` call. SelfCall(Box<[Expression]>), /// A `..()` call. If arguments is empty, the proc's arguments are passed. diff --git a/crates/dreammaker/src/parser.rs b/crates/dreammaker/src/parser.rs index 069ea5a1..2251a737 100644 --- a/crates/dreammaker/src/parser.rs +++ b/crates/dreammaker/src/parser.rs @@ -2043,7 +2043,7 @@ impl<'ctx, 'an, 'inp> Parser<'ctx, 'an, 'inp> { match self.arguments(&[], &i)? { Some(args) => { self.annotate_precise(start..first_token, || Annotation::UnscopedCall(i.clone())); - Term::Call(i, args) + Term::Call(i.into(), args) }, None => { belongs_to.push(i.clone()); @@ -2115,16 +2115,16 @@ impl<'ctx, 'an, 'inp> Parser<'ctx, 'an, 'inp> { let expr = self.expression()?; match self.next("']'")? { Token::InterpStringPart(part) => { - parts.push((expr, part)); + parts.push((expr, part.into())); }, Token::InterpStringEnd(end) => { - parts.push((expr, end)); + parts.push((expr, end.into())); break; }, _ => return self.parse_error(), } } - Term::InterpString(begin, parts.into()) + Term::InterpString(begin.into(), parts.into()) }, other => return self.try_another(other),