Skip to main content

wesl/pass/
visibility.rs

1use wgsl_parse::syntax::{GlobalDeclaration, TranslationUnit, Visibility};
2
3/// Remove visibility markers (`public` / `private`) in a module, i.e. make all declarations
4/// package-visible.
5pub fn strip_visibility(module: &mut TranslationUnit) {
6    for import in &mut module.imports {
7        import.visibility = Visibility::Package;
8    }
9
10    for decl in &mut module.global_declarations {
11        match decl.node_mut() {
12            GlobalDeclaration::Declaration(decl) => decl.visibility = Visibility::Package,
13            GlobalDeclaration::TypeAlias(decl) => decl.visibility = Visibility::Package,
14            GlobalDeclaration::Struct(decl) => decl.visibility = Visibility::Package,
15            GlobalDeclaration::Function(decl) => decl.visibility = Visibility::Package,
16            GlobalDeclaration::Void
17            | GlobalDeclaration::ConstAssert(_)
18            | GlobalDeclaration::Compound(_) => {}
19        }
20    }
21}