mirror of
https://github.com/swc-project/swc.git
synced 2024-12-26 23:27:56 +03:00
d2c1f45f5a
**Description:** Second attempt to enable bytecheck. This PR does not have versioned struct yet, just enabling bytecheck wherever possible. Also, it is for the ast only yet, so transform metadata and others might need this later. PR seems to be passing all the ci, but as we've experienced before, there might be some unexpected outcomes with the release. Maybe better to hold this until clear https://github.com/swc-project/swc/issues/7238, then land as a separate release.
39 lines
1012 B
Rust
39 lines
1012 B
Rust
//! Test that `#[span]` and `#[fold]` can be used at same time.
|
|
use serde::{self, Deserialize, Serialize};
|
|
use swc_common::{self, ast_node, Span, Spanned};
|
|
|
|
#[ast_node("Class")]
|
|
// See https://github.com/rust-lang/rust/issues/44925
|
|
pub struct Class {
|
|
#[span]
|
|
pub has_span: HasSpan,
|
|
pub s: String,
|
|
}
|
|
|
|
#[ast_node("Tuple")]
|
|
pub struct Tuple(#[span] HasSpan, usize, usize);
|
|
|
|
#[derive(Debug, Clone, PartialEq, Eq, Spanned, Serialize, Deserialize)]
|
|
#[cfg_attr(
|
|
any(feature = "rkyv-impl"),
|
|
derive(rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)
|
|
)]
|
|
#[cfg_attr(
|
|
any(feature = "rkyv-impl"),
|
|
archive(bound(serialize = "__S: rkyv::ser::Serializer + rkyv::ser::ScratchSpace"))
|
|
)]
|
|
#[cfg_attr(feature = "rkyv-impl", archive(check_bytes))]
|
|
#[cfg_attr(feature = "rkyv-impl", archive_attr(repr(C)))]
|
|
pub struct HasSpan {
|
|
#[cfg_attr(feature = "__rkyv", omit_bounds)]
|
|
pub span: Span,
|
|
}
|
|
|
|
#[ast_node]
|
|
pub enum Node {
|
|
#[tag("Class")]
|
|
Class(Class),
|
|
#[tag("Tuple")]
|
|
Tuple(Tuple),
|
|
}
|