1
Fork 0
mirror of https://github.com/RGBCube/cstree synced 2025-07-27 17:17:45 +00:00

[Deps] Update criterion to v0.5 (#64)

* [Deps] update criterion to 0.5

* make clippy happy

---------

Co-authored-by: Domenic Quirl <DomenicQuirl@protonmail.com>
This commit is contained in:
DQ 2024-08-20 20:17:38 +02:00 committed by GitHub
parent 4d1c90a56f
commit 70e9f92d3e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 19 additions and 14 deletions

View file

@ -50,7 +50,7 @@ m_lexer = "0.0.4"
serde_json = "1.0" serde_json = "1.0"
serde_test = "1.0" serde_test = "1.0"
crossbeam-utils = "0.8" crossbeam-utils = "0.8"
criterion = "0.3" criterion = { version = "0.5.1", features = ["html_reports"] }
[[bench]] [[bench]]
name = "main" name = "main"

View file

@ -4,15 +4,15 @@
//! to happen to go from input text to a `cstree` syntax tree: //! to happen to go from input text to a `cstree` syntax tree:
//! //!
//! 1. Define an enumeration of the types of tokens (like keywords) and nodes (like "an expression") that you want to //! 1. Define an enumeration of the types of tokens (like keywords) and nodes (like "an expression") that you want to
//! have in your syntax and implement [`Syntax`] //! have in your syntax and implement [`Syntax`]
//! //!
//! 2. Create a [`GreenNodeBuilder`](crate::build::GreenNodeBuilder) and call //! 2. Create a [`GreenNodeBuilder`](crate::build::GreenNodeBuilder) and call
//! [`start_node`](crate::build::GreenNodeBuilder::start_node), [`token`](crate::build::GreenNodeBuilder::token) and //! [`start_node`](crate::build::GreenNodeBuilder::start_node), [`token`](crate::build::GreenNodeBuilder::token) and
//! [`finish_node`](crate::build::GreenNodeBuilder::finish_node) from your parser //! [`finish_node`](crate::build::GreenNodeBuilder::finish_node) from your parser
//! //!
//! 3. Call [`SyntaxNode::new_root`](crate::syntax::SyntaxNode::new_root) or //! 3. Call [`SyntaxNode::new_root`](crate::syntax::SyntaxNode::new_root) or
//! [`SyntaxNode::new_root_with_resolver`](crate::syntax::SyntaxNode::new_root_with_resolver) with the resulting //! [`SyntaxNode::new_root_with_resolver`](crate::syntax::SyntaxNode::new_root_with_resolver) with the resulting
//! [`GreenNode`](crate::green::GreenNode) to obtain a syntax tree that you can traverse //! [`GreenNode`](crate::green::GreenNode) to obtain a syntax tree that you can traverse
//! //!
//! Let's walk through the motions of parsing a (very) simple language into `cstree` syntax trees. //! Let's walk through the motions of parsing a (very) simple language into `cstree` syntax trees.
//! We'll just support addition and subtraction on integers, from which the user is allowed to construct a single, //! We'll just support addition and subtraction on integers, from which the user is allowed to construct a single,

View file

@ -131,7 +131,7 @@ impl PackedGreenElement {
pub(crate) fn into_node(self) -> Option<GreenNode> { pub(crate) fn into_node(self) -> Option<GreenNode> {
if self.is_node() { if self.is_node() {
unsafe { Some(mem::transmute(self)) } unsafe { Some(mem::transmute::<Self, GreenNode>(self)) }
} else { } else {
None None
} }
@ -147,7 +147,7 @@ impl PackedGreenElement {
pub(crate) fn into_token(self) -> Option<GreenToken> { pub(crate) fn into_token(self) -> Option<GreenToken> {
if !self.is_node() { if !self.is_node() {
unsafe { Some(mem::transmute(self)) } unsafe { Some(mem::transmute::<Self, GreenToken>(self)) }
} else { } else {
None None
} }

View file

@ -58,15 +58,15 @@
//! to happen to go from input text to a `cstree` syntax tree: //! to happen to go from input text to a `cstree` syntax tree:
//! //!
//! 1. Define an enumeration of the types of tokens (like keywords) and nodes (like "an expression") that you want to //! 1. Define an enumeration of the types of tokens (like keywords) and nodes (like "an expression") that you want to
//! have in your syntax and implement [`Syntax`] //! have in your syntax and implement [`Syntax`]
//! //!
//! 2. Create a [`GreenNodeBuilder`](build::GreenNodeBuilder) and call //! 2. Create a [`GreenNodeBuilder`](build::GreenNodeBuilder) and call
//! [`start_node`](build::GreenNodeBuilder::start_node), [`token`](build::GreenNodeBuilder::token) and //! [`start_node`](build::GreenNodeBuilder::start_node), [`token`](build::GreenNodeBuilder::token) and
//! [`finish_node`](build::GreenNodeBuilder::finish_node) from your parser //! [`finish_node`](build::GreenNodeBuilder::finish_node) from your parser
//! //!
//! 3. Call [`SyntaxNode::new_root`](syntax::SyntaxNode::new_root) or //! 3. Call [`SyntaxNode::new_root`](syntax::SyntaxNode::new_root) or
//! [`SyntaxNode::new_root_with_resolver`](syntax::SyntaxNode::new_root_with_resolver) with the resulting //! [`SyntaxNode::new_root_with_resolver`](syntax::SyntaxNode::new_root_with_resolver) with the resulting
//! [`GreenNode`](green::GreenNode) to obtain a syntax tree that you can traverse //! [`GreenNode`](green::GreenNode) to obtain a syntax tree that you can traverse
//! //!
//! There's a full [getting started guide] that walks through each of the above steps in detail in the documentation for //! There's a full [getting started guide] that walks through each of the above steps in detail in the documentation for
//! the `getting_started` module. The walkthrough goes through the necessary steps bit by bit and skips the lexer, but //! the `getting_started` module. The walkthrough goes through the necessary steps bit by bit and skips the lexer, but
@ -86,7 +86,11 @@
#![forbid(missing_debug_implementations, unconditional_recursion)] #![forbid(missing_debug_implementations, unconditional_recursion)]
#![deny(unsafe_code, future_incompatible)] #![deny(unsafe_code, future_incompatible)]
#![allow(unstable_name_collisions)] // strict provenance - must come after `future_incompatible` to take precedence #![allow(
unstable_name_collisions, // strict provenance - must come after `future_incompatible` to take precedence
unexpected_cfgs, // nightly docs.rs features and `salsa-2022` feature until that is figured out
clippy::duplicated_attributes, // interning modules
)]
#![warn(missing_docs)] #![warn(missing_docs)]
// Docs.rs // Docs.rs
#![doc(html_root_url = "https://docs.rs/cstree/0.12.0")] #![doc(html_root_url = "https://docs.rs/cstree/0.12.0")]

View file

@ -400,6 +400,7 @@ impl<S: Syntax, D> SyntaxNode<S, D> {
} }
/// Returns the data associated with this node, if any. /// Returns the data associated with this node, if any.
#[allow(clippy::useless_asref)] // make `Arc::clone` explicit
pub fn get_data(&self) -> Option<Arc<D>> { pub fn get_data(&self) -> Option<Arc<D>> {
let ptr = self.data().data.read(); let ptr = self.data().data.read();
(*ptr).as_ref().map(Arc::clone) (*ptr).as_ref().map(Arc::clone)