mirror of
https://github.com/RGBCube/cstree
synced 2025-07-27 09:07:44 +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:
parent
4d1c90a56f
commit
70e9f92d3e
5 changed files with 19 additions and 14 deletions
|
@ -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"
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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")]
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue