Skip to content

Commit 4c2c6d2

Browse files
authored
[v2] use serde tagged enums (#1459)
Use serde tagged enums in the serialized definition, to make matching on specific variants easier. > NOTE: this is a set of PRs to add the lexer v2, to make reviewing smaller chunks easier: > > 1. #1457 > 2. #1458 > 3. #1459 > 4. #1460 > 5. #1461 > 6. #1462
1 parent 84ee6e9 commit 4c2c6d2

File tree

7 files changed

+7
-0
lines changed

7 files changed

+7
-0
lines changed

crates/language-v2/definition/src/model/built_ins.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ pub struct BuiltInContext {
1616

1717
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
1818
#[derive_spanned_type(Clone, Debug, EnumDiscriminants, ParseInputTokens, WriteOutputTokens)]
19+
#[serde(tag = "type")]
1920
pub enum BuiltIn {
2021
BuiltInFunction { item: Rc<BuiltInFunction> },
2122
BuiltInType { item: Rc<BuiltInType> },

crates/language-v2/definition/src/model/item.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ use crate::model::{
1111

1212
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
1313
#[derive_spanned_type(Clone, Debug, EnumDiscriminants, ParseInputTokens, WriteOutputTokens)]
14+
#[serde(tag = "type")]
1415
pub enum Item {
1516
Struct { item: Rc<StructItem> },
1617
Enum { item: Rc<EnumItem> },

crates/language-v2/definition/src/model/nonterminals/field.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ pub struct FieldDelimiters {
3131

3232
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
3333
#[derive_spanned_type(Clone, Debug, ParseInputTokens, WriteOutputTokens)]
34+
#[serde(tag = "type")]
3435
pub enum Field {
3536
Required {
3637
reference: Identifier,

crates/language-v2/definition/src/model/terminals/keyword.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ pub struct KeywordDefinition {
3737

3838
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
3939
#[derive_spanned_type(Clone, Debug, ParseInputTokens, WriteOutputTokens)]
40+
#[serde(tag = "type")]
4041
pub enum KeywordValue {
4142
Sequence { values: Vec<KeywordValue> },
4243
Optional { value: Box<KeywordValue> },

crates/language-v2/definition/src/model/terminals/scanner.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ use crate::model::Identifier;
66

77
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
88
#[derive_spanned_type(Clone, Debug, ParseInputTokens, WriteOutputTokens)]
9+
#[serde(tag = "type")]
910
pub enum Scanner {
1011
Sequence {
1112
scanners: Vec<Scanner>,

crates/language-v2/definition/src/model/terminals/trivia.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ use crate::model::{Identifier, Scanner};
55

66
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
77
#[derive_spanned_type(Clone, Debug, ParseInputTokens, WriteOutputTokens)]
8+
#[serde(tag = "type")]
89
pub enum TriviaParser {
910
Sequence { parsers: Vec<TriviaParser> },
1011
Choice { parsers: Vec<TriviaParser> },

crates/language-v2/definition/src/model/utils/version_specifier.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ use serde::{Deserialize, Serialize};
44

55
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
66
#[derive_spanned_type(Clone, Debug, ParseInputTokens, WriteOutputTokens)]
7+
#[serde(tag = "type")]
78
pub enum VersionSpecifier {
89
Never,
910
From { from: Version },

0 commit comments

Comments
 (0)