mirror of
https://github.com/danbulant/oxc
synced 2026-05-24 20:32:10 +00:00
close: #3682
The TypeScript code that handles this is [here](d8086f14b6/src/compiler/utilities.ts (L11515-L11577)). It looks complicated.
51 lines
1.1 KiB
Rust
51 lines
1.1 KiB
Rust
use bitflags::bitflags;
|
|
use oxc_index::define_index_type;
|
|
|
|
define_index_type! {
|
|
pub struct AstNodeId = usize;
|
|
}
|
|
|
|
impl AstNodeId {
|
|
#[inline]
|
|
pub fn dummy() -> Self {
|
|
Self::new(0)
|
|
}
|
|
}
|
|
|
|
#[cfg(feature = "serialize")]
|
|
#[wasm_bindgen::prelude::wasm_bindgen(typescript_custom_section)]
|
|
const TS_APPEND_CONTENT: &'static str = r#"
|
|
export type AstNodeId = number;
|
|
export type NodeFlags = {
|
|
JSDoc: 1,
|
|
Class: 2,
|
|
HasYield: 4
|
|
Parameter: 8
|
|
};
|
|
"#;
|
|
|
|
bitflags! {
|
|
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
|
|
pub struct NodeFlags: u8 {
|
|
const JSDoc = 1 << 0; // If the Node has a JSDoc comment attached
|
|
const Class = 1 << 1; // If Node is inside a class
|
|
const HasYield = 1 << 2; // If function has yield statement
|
|
}
|
|
}
|
|
|
|
impl NodeFlags {
|
|
#[inline]
|
|
pub fn has_jsdoc(&self) -> bool {
|
|
self.contains(Self::JSDoc)
|
|
}
|
|
|
|
#[inline]
|
|
pub fn has_class(&self) -> bool {
|
|
self.contains(Self::Class)
|
|
}
|
|
|
|
#[inline]
|
|
pub fn has_yield(&self) -> bool {
|
|
self.contains(Self::HasYield)
|
|
}
|
|
}
|