@@ -247,14 +247,14 @@ fn write_node(file: &mut File, flags: &[Flags], node: &Node) -> Result<(), Box<d
247247 writeln ! ( file, "impl<'pr> {}<'pr> {{" , node. name) ?;
248248 writeln ! ( file, " /// Converts this node to a generic node." ) ?;
249249 writeln ! ( file, " #[must_use]" ) ?;
250- writeln ! ( file, " pub fn as_node(&self) -> Node<'pr> {{" ) ?;
250+ writeln ! ( file, " pub const fn as_node(&self) -> Node<'pr> {{" ) ?;
251251 writeln ! ( file, " Node::{} {{ parser: self.parser, pointer: self.pointer, marker: PhantomData }}" , node. name) ?;
252252 writeln ! ( file, " }}" ) ?;
253253 writeln ! ( file) ?;
254254 writeln ! ( file, " /// Returns the location of this node." ) ?;
255255 writeln ! ( file, " #[must_use]" ) ?;
256256 writeln ! ( file, " pub fn location(&self) -> Location<'pr> {{" ) ?;
257- writeln ! ( file, " let pointer: *mut pm_location_t = unsafe {{ &mut (*self.pointer).base.location }};" ) ?;
257+ writeln ! ( file, " let pointer: *mut pm_location_t = unsafe {{ &raw mut (*self.pointer).base.location }};" ) ?;
258258 writeln ! ( file, " Location::new(self.parser, unsafe {{ &(*pointer) }})" ) ?;
259259 writeln ! ( file, " }}" ) ?;
260260 writeln ! ( file) ?;
@@ -326,7 +326,7 @@ fn write_node(file: &mut File, flags: &[Flags], node: &Node) -> Result<(), Box<d
326326 } ,
327327 NodeFieldType :: NodeList => {
328328 writeln ! ( file, " pub fn {}(&self) -> NodeList<'pr> {{" , field. name) ?;
329- writeln ! ( file, " let pointer: *mut pm_node_list = unsafe {{ &mut (*self.pointer).{} }};" , field. name) ?;
329+ writeln ! ( file, " let pointer: *mut pm_node_list = unsafe {{ &raw mut (*self.pointer).{} }};" , field. name) ?;
330330 writeln ! ( file, " NodeList {{ parser: self.parser, pointer: unsafe {{ NonNull::new_unchecked(pointer) }}, marker: PhantomData }}" ) ?;
331331 writeln ! ( file, " }}" ) ?;
332332 } ,
@@ -359,19 +359,19 @@ fn write_node(file: &mut File, flags: &[Flags], node: &Node) -> Result<(), Box<d
359359 } ,
360360 NodeFieldType :: ConstantList => {
361361 writeln ! ( file, " pub fn {}(&self) -> ConstantList<'pr> {{" , field. name) ?;
362- writeln ! ( file, " let pointer: *mut pm_constant_id_list_t = unsafe {{ &mut (*self.pointer).{} }};" , field. name) ?;
362+ writeln ! ( file, " let pointer: *mut pm_constant_id_list_t = unsafe {{ &raw mut (*self.pointer).{} }};" , field. name) ?;
363363 writeln ! ( file, " ConstantList {{ parser: self.parser, pointer: unsafe {{ NonNull::new_unchecked(pointer) }}, marker: PhantomData }}" ) ?;
364364 writeln ! ( file, " }}" ) ?;
365365 } ,
366366 NodeFieldType :: Location => {
367367 writeln ! ( file, " pub fn {}(&self) -> Location<'pr> {{" , field. name) ?;
368- writeln ! ( file, " let pointer: *mut pm_location_t = unsafe {{ &mut (*self.pointer).{} }};" , field. name) ?;
368+ writeln ! ( file, " let pointer: *mut pm_location_t = unsafe {{ &raw mut (*self.pointer).{} }};" , field. name) ?;
369369 writeln ! ( file, " Location::new(self.parser, unsafe {{ &(*pointer) }})" ) ?;
370370 writeln ! ( file, " }}" ) ?;
371371 } ,
372372 NodeFieldType :: OptionalLocation => {
373373 writeln ! ( file, " pub fn {}(&self) -> Option<Location<'pr>> {{" , field. name) ?;
374- writeln ! ( file, " let pointer: *mut pm_location_t = unsafe {{ &mut (*self.pointer).{} }};" , field. name) ?;
374+ writeln ! ( file, " let pointer: *mut pm_location_t = unsafe {{ &raw mut (*self.pointer).{} }};" , field. name) ?;
375375 writeln ! ( file, " let start = unsafe {{ (*pointer).start }};" ) ?;
376376 writeln ! ( file, " if start.is_null() {{" ) ?;
377377 writeln ! ( file, " None" ) ?;
@@ -392,7 +392,7 @@ fn write_node(file: &mut File, flags: &[Flags], node: &Node) -> Result<(), Box<d
392392 } ,
393393 NodeFieldType :: Integer => {
394394 writeln ! ( file, " pub fn {}(&self) -> Integer<'pr> {{" , field. name) ?;
395- writeln ! ( file, " Integer::new(unsafe {{ &(*self.pointer).{} }})" , field. name) ?;
395+ writeln ! ( file, " Integer::new(unsafe {{ &raw const (*self.pointer).{} }})" , field. name) ?;
396396 writeln ! ( file, " }}" ) ?;
397397 } ,
398398 NodeFieldType :: Double => {
@@ -523,7 +523,7 @@ fn write_visit(file: &mut File, config: &Config) -> Result<(), Box<dyn std::erro
523523 }
524524 } ,
525525 NodeFieldType :: NodeList => {
526- writeln ! ( file, " for node in node.{}().iter () {{" , field. name) ?;
526+ writeln ! ( file, " for node in & node.{}() {{" , field. name) ?;
527527 writeln ! ( file, " visitor.visit(&node);" ) ?;
528528 writeln ! ( file, " }}" ) ?;
529529 } ,
@@ -533,7 +533,7 @@ fn write_visit(file: &mut File, config: &Config) -> Result<(), Box<dyn std::erro
533533
534534 writeln ! ( file, "}}" ) ?;
535535 } else {
536- writeln ! ( file, "pub fn visit{}<'pr, V>(_visitor: &mut V, _node: &{}<'pr>)" , struct_name( & node. name) , node. name) ?;
536+ writeln ! ( file, "pub const fn visit{}<'pr, V>(_visitor: &mut V, _node: &{}<'pr>)" , struct_name( & node. name) , node. name) ?;
537537 writeln ! ( file, "where" ) ?;
538538 writeln ! ( file, " V: Visit<'pr> + ?Sized," ) ?;
539539 writeln ! ( file, "{{}}" ) ?;
@@ -552,14 +552,14 @@ fn write_bindings(config: &Config) -> Result<(), Box<dyn std::error::Error>> {
552552
553553 write ! (
554554 file,
555- r# "
555+ r"
556556use std::marker::PhantomData;
557557use std::ptr::NonNull;
558558
559559#[allow(clippy::wildcard_imports)]
560560use ruby_prism_sys::*;
561561use crate::{{ConstantId, ConstantList, Integer, Location, NodeList}};
562- "#
562+ "
563563 ) ?;
564564
565565 for node in & config. nodes {
@@ -578,7 +578,7 @@ use crate::{{ConstantId, ConstantList, Integer, Location, NodeList}};
578578 writeln ! ( file, "pub enum Node<'pr> {{" ) ?;
579579
580580 for node in & config. nodes {
581- writeln ! ( file, " /// The {} node" , node. name) ?;
581+ writeln ! ( file, " /// The `{}` node" , node. name) ?;
582582 writeln ! ( file, " {} {{" , node. name) ?;
583583 writeln ! ( file, " /// The pointer to the associated parser this node came from." ) ?;
584584 writeln ! ( file, " parser: NonNull<pm_parser_t>," ) ?;
@@ -596,7 +596,7 @@ use crate::{{ConstantId, ConstantList, Integer, Location, NodeList}};
596596
597597 writeln ! (
598598 file,
599- r# "
599+ r"
600600impl<'pr> Node<'pr> {{
601601 /// Creates a new node from the given pointer.
602602 ///
@@ -607,7 +607,7 @@ impl<'pr> Node<'pr> {{
607607 #[allow(clippy::not_unsafe_ptr_arg_deref)]
608608 pub(crate) fn new(parser: NonNull<pm_parser_t>, node: *mut pm_node_t) -> Self {{
609609 match unsafe {{ (*node).type_ }} {{
610- "#
610+ "
611611 ) ?;
612612
613613 for node in & config. nodes {
@@ -633,7 +633,7 @@ impl<'pr> Node<'pr> {{
633633 for node in & config. nodes {
634634 writeln ! ( file, " /// Returns the node as a `{}`." , node. name) ?;
635635 writeln ! ( file, " #[must_use]" ) ?;
636- writeln ! ( file, " pub fn as{}(&self) -> Option<{}<'pr>> {{" , struct_name( & node. name) , node. name) ?;
636+ writeln ! ( file, " pub const fn as{}(&self) -> Option<{}<'pr>> {{" , struct_name( & node. name) , node. name) ?;
637637 writeln ! ( file, " match *self {{" ) ?;
638638 writeln ! ( file, " Self::{} {{ parser, pointer, marker }} => Some({} {{ parser, pointer, marker }})," , node. name, node. name) ?;
639639 writeln ! ( file, " _ => None" ) ?;
0 commit comments