Skip to content

Commit 96df645

Browse files
authored
merge cursor, kinds, query, and text_index namespaces into the cst namespace (#1115)
1 parent 7989648 commit 96df645

230 files changed

Lines changed: 4849 additions & 5415 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@nomicfoundation/slang": minor
3+
---
4+
5+
merge `cursor`, `kinds`, `query`, and `text_index` namespaces into the `cst` namespace.

crates/codegen/runtime/cargo/src/runtime/kinds/generated/mod.rs renamed to crates/codegen/runtime/cargo/src/runtime/cst/generated/kinds.rs

Lines changed: 7 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/codegen/runtime/cargo/src/runtime/kinds/mod.rs.jinja2 renamed to crates/codegen/runtime/cargo/src/runtime/cst/kinds.rs.jinja2

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ use napi_derive::napi;
1616
strum_macros::EnumString,
1717
strum_macros::IntoStaticStr,
1818
)]
19-
#[cfg_attr(feature = "__private_napi_interfaces", /* derives `Clone` and `Copy` */ napi(string_enum, namespace = "kinds"))]
19+
#[cfg_attr(feature = "__private_napi_interfaces", /* derives `Clone` and `Copy` */ napi(string_enum, namespace = "cst"))]
2020
#[cfg_attr(not(feature = "__private_napi_interfaces"), derive(Clone, Copy))]
2121
pub enum NonterminalKind {
2222
{%- if rendering_in_stubs -%}
@@ -31,7 +31,7 @@ pub enum NonterminalKind {
3131
{%- endif -%}
3232
}
3333

34-
impl metaslang_cst::NonterminalKind for NonterminalKind {}
34+
impl crate::cst::NonterminalKindExtensions for NonterminalKind {}
3535

3636
// This needs to stay in sync with the wit-bindgen output
3737
{% if model.kinds.labels|length <= 256 %} #[repr(u8)] {% else %} #[repr(u16)] {% endif %}
@@ -49,7 +49,7 @@ impl metaslang_cst::NonterminalKind for NonterminalKind {}
4949
strum_macros::IntoStaticStr,
5050
)]
5151
#[strum(serialize_all = "snake_case")]
52-
#[cfg_attr(feature = "__private_napi_interfaces", /* derives `Clone` and `Copy` */ napi(string_enum, namespace = "kinds"))]
52+
#[cfg_attr(feature = "__private_napi_interfaces", /* derives `Clone` and `Copy` */ napi(string_enum, namespace = "cst"))]
5353
#[cfg_attr(not(feature = "__private_napi_interfaces"), derive(Clone, Copy))]
5454
pub enum EdgeLabel {
5555
// Built-in:
@@ -69,7 +69,7 @@ pub enum EdgeLabel {
6969
{%- endif -%}
7070
}
7171

72-
impl metaslang_cst::EdgeLabel for EdgeLabel {}
72+
impl crate::cst::EdgeLabelExtensions for EdgeLabel {}
7373

7474
// This needs to stay in sync with the wit-bindgen output
7575
{% if model.kinds.terminal_kinds|length <= 256 %} #[repr(u8)] {% else %} #[repr(u16)] {% endif %}
@@ -86,8 +86,9 @@ impl metaslang_cst::EdgeLabel for EdgeLabel {}
8686
strum_macros::EnumString,
8787
strum_macros::IntoStaticStr,
8888
)]
89-
#[cfg_attr(feature = "__private_napi_interfaces", /* derives `Clone` and `Copy` */ napi(string_enum, namespace = "kinds"))]
89+
#[cfg_attr(feature = "__private_napi_interfaces", /* derives `Clone` and `Copy` */ napi(string_enum, namespace = "cst"))]
9090
#[cfg_attr(not(feature = "__private_napi_interfaces"), derive(Clone, Copy))]
91+
#[allow(clippy::upper_case_acronyms)]
9192
pub enum TerminalKind {
9293
// Built-in:
9394
UNRECOGNIZED,
@@ -106,7 +107,7 @@ pub enum TerminalKind {
106107
{%- endif -%}
107108
}
108109

109-
impl metaslang_cst::TerminalKind for TerminalKind {
110+
impl crate::cst::TerminalKindExtensions for TerminalKind {
110111
fn is_trivia(&self) -> bool {
111112
{%- if rendering_in_stubs -%}
112113
false
Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,11 @@
1-
use metaslang_cst::cst;
1+
#[path = "generated/kinds.rs"]
2+
mod kinds;
3+
4+
pub use kinds::{EdgeLabel, NonterminalKind, TerminalKind};
5+
pub(crate) use kinds::{IsLexicalContext, LexicalContext, LexicalContextType};
6+
pub use metaslang_cst::kinds::{
7+
EdgeLabelExtensions, NonterminalKindExtensions, TerminalKindExtensions,
8+
};
29

310
// These derives are because default #[derive(...)] on a generic type implements only the trait
411
// with default bounds also implied for the generic types as well, i.e.
@@ -14,13 +21,22 @@ use metaslang_cst::cst;
1421
#[derive(Clone, Debug, PartialEq, Eq, serde::Serialize)]
1522
pub enum KindTypes {}
1623

17-
impl metaslang_cst::KindTypes for KindTypes {
18-
type NonterminalKind = crate::kinds::NonterminalKind;
19-
type TerminalKind = crate::kinds::TerminalKind;
20-
type EdgeLabel = crate::kinds::EdgeLabel;
24+
impl metaslang_cst::kinds::KindTypes for KindTypes {
25+
type NonterminalKind = NonterminalKind;
26+
type TerminalKind = TerminalKind;
27+
type EdgeLabel = EdgeLabel;
2128
}
2229

23-
pub type Node = cst::Node<KindTypes>;
24-
pub type NonterminalNode = cst::NonterminalNode<KindTypes>;
25-
pub type TerminalNode = cst::TerminalNode<KindTypes>;
26-
pub type Edge = cst::Edge<KindTypes>;
30+
pub type Node = metaslang_cst::nodes::Node<KindTypes>;
31+
pub type NonterminalNode = metaslang_cst::nodes::NonterminalNode<KindTypes>;
32+
pub type TerminalNode = metaslang_cst::nodes::TerminalNode<KindTypes>;
33+
pub type Edge = metaslang_cst::nodes::Edge<KindTypes>;
34+
35+
pub type Cursor = metaslang_cst::cursor::Cursor<KindTypes>;
36+
pub type CursorWithEdges = metaslang_cst::cursor::CursorWithEdges<KindTypes>;
37+
38+
pub type Query = metaslang_cst::query::Query<KindTypes>;
39+
pub type QueryMatch = metaslang_cst::query::QueryMatch<KindTypes>;
40+
pub type QueryMatchIterator = metaslang_cst::query::QueryMatchIterator<KindTypes>;
41+
pub use metaslang_cst::query::QueryError;
42+
pub use metaslang_cst::text_index::{TextIndex, TextRange, TextRangeExtensions};

crates/codegen/runtime/cargo/src/runtime/cursor/mod.rs

Lines changed: 0 additions & 6 deletions
This file was deleted.

crates/codegen/runtime/cargo/src/runtime/diagnostic/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::text_index::TextRange;
1+
use crate::cst::TextRange;
22

33
/// The severity of a diagnostic.
44
///

crates/codegen/runtime/cargo/src/runtime/kinds/mod.rs

Lines changed: 0 additions & 3 deletions
This file was deleted.

crates/codegen/runtime/cargo/src/runtime/language/generated/mod.rs

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/codegen/runtime/cargo/src/runtime/language/lexer/mod.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
use crate::cst::{self, Edge};
2-
use crate::kinds::{IsLexicalContext, TerminalKind};
1+
use crate::cst::{Edge, IsLexicalContext, Node, TerminalKind};
32
use crate::language::parser_support::{ParserContext, ParserResult};
43

54
/// Whether a keyword has been scanned and if so, whether it is reserved (unusable as an identifier)
@@ -100,7 +99,7 @@ pub(crate) trait Lexer {
10099
let end = input.position();
101100

102101
ParserResult::r#match(
103-
vec![Edge::anonymous(cst::Node::terminal(
102+
vec![Edge::anonymous(Node::terminal(
104103
kind,
105104
input.content(start.utf8..end.utf8),
106105
))],
@@ -133,7 +132,7 @@ pub(crate) trait Lexer {
133132
return ParserResult::no_match(vec![kind]);
134133
}
135134
let end = input.position();
136-
children.push(Edge::anonymous(cst::Node::terminal(
135+
children.push(Edge::anonymous(Node::terminal(
137136
kind,
138137
input.content(start.utf8..end.utf8),
139138
)));

crates/codegen/runtime/cargo/src/runtime/language/mod.rs.jinja2

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ use semver::Version;
1313
use napi_derive::napi;
1414

1515
use crate::cst;
16-
use crate::kinds::{
16+
use crate::cst::{
1717
EdgeLabel, IsLexicalContext, LexicalContext, LexicalContextType, NonterminalKind, TerminalKind,
1818
};
1919
use crate::language::lexer::{KeywordScan, Lexer, ScannedTerminal};
@@ -301,15 +301,15 @@ impl Language {
301301
return Self::SUPPORTED_VERSIONS.iter().map(|v| v.to_string()).collect();
302302
}
303303

304-
#[napi(js_name = "rootKind", ts_return_type = "kinds.NonterminalKind", catch_unwind)]
304+
#[napi(js_name = "rootKind", ts_return_type = "cst.NonterminalKind", catch_unwind)]
305305
pub fn root_kind_napi() -> NonterminalKind {
306306
Self::ROOT_KIND
307307
}
308308

309309
#[napi(js_name = "parse", ts_return_type = "parse_output.ParseOutput", catch_unwind)]
310310
pub fn parse_napi(
311311
&self,
312-
#[napi(ts_arg_type = "kinds.NonterminalKind")] kind: NonterminalKind,
312+
#[napi(ts_arg_type = "cst.NonterminalKind")] kind: NonterminalKind,
313313
input: String
314314
) -> NAPIParseOutput {
315315
self.parse(kind, input.as_str()).into()

0 commit comments

Comments
 (0)