Skip to content

Commit feedf16

Browse files
committed
Introduce GreenChild
1 parent 4ae7068 commit feedf16

File tree

1 file changed

+19
-2
lines changed

1 file changed

+19
-2
lines changed

src/green/node.rs

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
use std::{iter::FusedIterator, slice, sync::Arc};
1+
use std::{iter::FusedIterator, mem, slice, sync::Arc};
22

33
use erasable::Thin;
44
use slice_dst::SliceWithHeader;
55

66
use crate::{
77
green::{GreenElement, GreenElementRef, PackedGreenElement, SyntaxKind},
8-
TextSize,
8+
GreenToken, TextSize,
99
};
1010

1111
#[repr(align(2))] // NB: this is an at-least annotation
@@ -23,6 +23,23 @@ pub struct GreenNode {
2323
pub(super) data: Thin<Arc<SliceWithHeader<GreenNodeHead, PackedGreenElement>>>,
2424
}
2525

26+
enum GreenChild {
27+
Node {
28+
// offset: TextSize,
29+
node: GreenNode
30+
},
31+
Token {
32+
// offset: TextSize,
33+
token: GreenToken
34+
},
35+
}
36+
37+
#[cfg(target_pointer_width = "64")]
38+
const _: () = {
39+
let cond = mem::size_of::<GreenChild>() == mem::size_of::<usize>() * 2;
40+
[()][(!cond) as usize]
41+
};
42+
2643
impl GreenNode {
2744
/// Creates new Node.
2845
#[inline]

0 commit comments

Comments
 (0)