Skip to content

Commit c88f9b5

Browse files
authored
merge language, parse_error, parse_output namespaces into the parser namespace (#1116)
1 parent 96df645 commit c88f9b5

153 files changed

Lines changed: 807 additions & 984 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.

.changeset/many-forks-hope.md

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 `language`, `parse_error`, `parse_output` namespaces into the `parser` namespace.

crates/codegen/runtime/cargo/src/runtime/cli/commands/parse.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use clap::Parser;
55
use semver::Version;
66

77
use crate::diagnostic;
8-
use crate::language::Language;
8+
use crate::parser::Language;
99

1010
#[derive(Parser, Debug)]
1111
pub struct ParseCommand {

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

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

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
pub mod cst;
22
pub mod diagnostic;
3-
pub mod language;
4-
pub mod parse_error;
5-
pub mod parse_output;
3+
pub mod parser;
64

75
#[cfg(feature = "__experimental_bindings_api")]
86
pub mod bindings;

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

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
11
pub mod cst;
22
pub mod diagnostic;
3-
pub mod parse_error;
4-
pub mod parse_output;
3+
pub mod parser;
54

65
#[path = "generated/ast_selectors.rs"]
76
pub mod ast_selectors;
87

98
type RustCursor = crate::cst::Cursor;
109
type RustEdge = crate::cst::Edge;
1110
type RustNode = crate::cst::Node;
12-
type RustParseError = crate::parse_error::ParseError;
13-
type RustParseOutput = crate::parse_output::ParseOutput;
11+
type RustParseError = crate::parser::ParseError;
12+
type RustParseOutput = crate::parser::ParseOutput;
1413
type RustQuery = crate::cst::Query;
1514
type RustQueryMatch = crate::cst::QueryMatch;
1615
type RustQueryMatchIterator = crate::cst::QueryMatchIterator;
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
mod parse_error;
2+
mod parse_output;
3+
4+
pub use parse_error::ParseError;
5+
pub use parse_output::ParseOutput;

crates/codegen/runtime/cargo/src/runtime/napi_interface/parse_error.rs renamed to crates/codegen/runtime/cargo/src/runtime/napi_interface/parser/parse_error.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use napi_derive::napi;
66
use crate::expose_diagnostic_trait_interface;
77
use crate::napi_interface::RustParseError;
88

9-
#[napi(namespace = "parse_error")]
9+
#[napi(namespace = "parser")]
1010
#[derive(PartialEq, Clone)]
1111
pub struct ParseError(RustParseError);
1212

@@ -16,4 +16,4 @@ impl From<RustParseError> for ParseError {
1616
}
1717
}
1818

19-
expose_diagnostic_trait_interface!("parse_error", ParseError);
19+
expose_diagnostic_trait_interface!("parser", ParseError);

crates/codegen/runtime/cargo/src/runtime/napi_interface/parse_output.rs renamed to crates/codegen/runtime/cargo/src/runtime/napi_interface/parser/parse_output.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@ use napi::Either;
22
use napi_derive::napi;
33

44
use crate::napi_interface::cst::{Cursor, NAPINodeExtensions, NonterminalNode, TerminalNode};
5-
use crate::napi_interface::{parse_error, RustParseOutput};
5+
use crate::napi_interface::parser::ParseError;
6+
use crate::napi_interface::RustParseOutput;
67

7-
#[napi(namespace = "parse_output")]
8+
#[napi(namespace = "parser")]
89
pub struct ParseOutput(RustParseOutput);
910

1011
impl From<RustParseOutput> for ParseOutput {
@@ -13,15 +14,15 @@ impl From<RustParseOutput> for ParseOutput {
1314
}
1415
}
1516

16-
#[napi(namespace = "parse_output")]
17+
#[napi(namespace = "parser")]
1718
impl ParseOutput {
1819
#[napi(ts_return_type = "cst.Node", catch_unwind)]
1920
pub fn tree(&self) -> Either<NonterminalNode, TerminalNode> {
2021
self.0.tree().into_js_either_node()
2122
}
2223

23-
#[napi(ts_return_type = "Array<parse_error.ParseError>", catch_unwind)]
24-
pub fn errors(&self) -> Vec<parse_error::ParseError> {
24+
#[napi(ts_return_type = "Array<parser.ParseError>", catch_unwind)]
25+
pub fn errors(&self) -> Vec<ParseError> {
2526
self.0.errors().iter().map(|x| x.clone().into()).collect()
2627
}
2728

crates/codegen/runtime/cargo/src/runtime/language/generated/mod.rs renamed to crates/codegen/runtime/cargo/src/runtime/parser/generated/language.rs

Lines changed: 18 additions & 20 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/mod.rs.jinja2 renamed to crates/codegen/runtime/cargo/src/runtime/parser/language.rs.jinja2

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,22 +16,22 @@ use crate::cst;
1616
use crate::cst::{
1717
EdgeLabel, IsLexicalContext, LexicalContext, LexicalContextType, NonterminalKind, TerminalKind,
1818
};
19-
use crate::language::lexer::{KeywordScan, Lexer, ScannedTerminal};
20-
use crate::language::parser_support::{
19+
use crate::parser::lexer::{KeywordScan, Lexer, ScannedTerminal};
20+
use crate::parser::parser_support::{
2121
ChoiceHelper, OneOrMoreHelper, OptionalHelper, ParserContext, ParserFunction, ParserResult,
2222
PrecedenceHelper, SeparatedHelper, SequenceHelper, TerminalAcceptanceThreshold,
2323
ZeroOrMoreHelper,
2424
};
25-
use crate::language::scanner_macros::{
25+
use crate::parser::scanner_macros::{
2626
scan_char_range, scan_chars, scan_choice, scan_keyword_choice, scan_none_of,
2727
scan_not_followed_by, scan_one_or_more, scan_optional, scan_sequence, scan_zero_or_more,
2828
};
2929
#[cfg(feature = "__private_napi_interfaces")]
30-
use crate::napi_interface::parse_output::ParseOutput as NAPIParseOutput;
31-
use crate::parse_output::ParseOutput;
30+
use crate::napi_interface::parser::ParseOutput as NAPIParseOutput;
31+
use crate::parser::ParseOutput;
3232

3333
#[derive(Debug)]
34-
#[cfg_attr(feature = "__private_napi_interfaces", napi(namespace = "language"))]
34+
#[cfg_attr(feature = "__private_napi_interfaces", napi(namespace = "parser"))]
3535
pub struct Language {
3636
{%- if not rendering_in_stubs -%}
3737
{%- for version in model.breaking_language_versions -%}
@@ -46,7 +46,7 @@ pub struct Language {
4646
}
4747

4848
#[derive(thiserror::Error, Debug)]
49-
pub enum Error {
49+
pub enum LanguageInitializationError {
5050
#[error("Unsupported language version '{0}'.")]
5151
UnsupportedLanguageVersion(Version),
5252

@@ -56,8 +56,8 @@ pub enum Error {
5656
}
5757

5858
#[cfg(feature = "__private_napi_interfaces")]
59-
impl From<Error> for napi::Error {
60-
fn from(value: Error) -> Self {
59+
impl From<LanguageInitializationError> for napi::Error {
60+
fn from(value: LanguageInitializationError) -> Self {
6161
napi::Error::from_reason(value.to_string())
6262
}
6363
}
@@ -73,7 +73,7 @@ impl Language {
7373

7474
pub const ROOT_KIND: NonterminalKind = NonterminalKind::{{ model.kinds.root_kind }};
7575

76-
pub fn new(version: Version) -> std::result::Result<Self, Error> {
76+
pub fn new(version: Version) -> std::result::Result<Self, LanguageInitializationError> {
7777
if Self::SUPPORTED_VERSIONS.binary_search(&version).is_ok() {
7878
Ok(Self {
7979
{%- if not rendering_in_stubs -%}
@@ -85,7 +85,7 @@ impl Language {
8585
version,
8686
})
8787
} else {
88-
Err(Error::UnsupportedLanguageVersion(version))
88+
Err(LanguageInitializationError::UnsupportedLanguageVersion(version))
8989
}
9090
}
9191

@@ -282,12 +282,12 @@ impl Lexer for Language {
282282
#[cfg(feature = "__private_napi_interfaces")]
283283
// NAPI-exposed functions have to accept owned values.
284284
#[allow(clippy::needless_pass_by_value)]
285-
#[napi(namespace = "language")]
285+
#[napi(namespace = "parser")]
286286
impl Language {
287287

288288
#[napi(constructor, catch_unwind)]
289289
pub fn new_napi(version: String) -> std::result::Result<Self, napi::Error> {
290-
let version = Version::parse(&version).map_err(|_| Error::InvalidSemanticVersion(version))?;
290+
let version = Version::parse(&version).map_err(|_| LanguageInitializationError::InvalidSemanticVersion(version))?;
291291
Self::new(version).map_err(|e| e.into())
292292
}
293293

@@ -306,7 +306,7 @@ impl Language {
306306
Self::ROOT_KIND
307307
}
308308

309-
#[napi(js_name = "parse", ts_return_type = "parse_output.ParseOutput", catch_unwind)]
309+
#[napi(js_name = "parse", ts_return_type = "parser.ParseOutput", catch_unwind)]
310310
pub fn parse_napi(
311311
&self,
312312
#[napi(ts_arg_type = "cst.NonterminalKind")] kind: NonterminalKind,

0 commit comments

Comments
 (0)