Skip to content

Commit f192cc4

Browse files
committed
detect if functions are public for fragment shaders
1 parent d3f9af7 commit f192cc4

File tree

1 file changed

+9
-1
lines changed
  • crates/spirv-std/macros/src

1 file changed

+9
-1
lines changed

crates/spirv-std/macros/src/lib.rs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ mod image;
7676
use proc_macro::TokenStream;
7777
use proc_macro2::{Delimiter, Group, Ident, Span, TokenTree};
7878

79-
use syn::{punctuated::Punctuated, spanned::Spanned, visit_mut::VisitMut, ItemFn, Token};
79+
use syn::{punctuated::Punctuated, spanned::Spanned, visit_mut::VisitMut, ItemFn, Token, Visibility};
8080

8181
use quote::{quote, ToTokens};
8282
use std::fmt::Write;
@@ -149,6 +149,14 @@ pub fn spirv(attr: TokenStream, item: TokenStream) -> TokenStream {
149149
let attr: proc_macro2::TokenStream = attr.into();
150150
tokens.extend(quote! { #[cfg_attr(target_arch="spirv", rust_gpu::spirv(#attr))] });
151151

152+
if attr.to_string().trim() == "fragment" {
153+
let item_clone = item.clone();
154+
let input = syn::parse_macro_input!(item_clone as ItemFn);
155+
if !matches!(input.vis, Visibility::Public(_)) {
156+
panic!("The `spirv` macro can only be applied to public functions.");
157+
}
158+
}
159+
152160
let item: proc_macro2::TokenStream = item.into();
153161
for tt in item {
154162
match tt {

0 commit comments

Comments
 (0)