diff --git a/Cargo.toml b/Cargo.toml index 509d3cf37f..49fbe26b50 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,6 +24,7 @@ serde = { version = "1.0", features = ["derive"], optional = true } default = [] glsl_preprocessor = ["glsl"] glsl-new = ["pomelo"] +glsl-validate = [] glsl-out = [] serialize = ["serde"] deserialize = ["serde"] diff --git a/src/front/glsl_new/ast.rs b/src/front/glsl_new/ast.rs index 594df535c9..d36b427b03 100644 --- a/src/front/glsl_new/ast.rs +++ b/src/front/glsl_new/ast.rs @@ -63,6 +63,7 @@ impl Context { None } + #[cfg(feature = "glsl-validate")] pub fn lookup_local_var_current_scope(&self, name: &str) -> Option> { if let Some(current) = self.scopes.last() { current.get(name).cloned() diff --git a/src/front/glsl_new/error.rs b/src/front/glsl_new/error.rs index 75a76a2497..859fb06e28 100644 --- a/src/front/glsl_new/error.rs +++ b/src/front/glsl_new/error.rs @@ -14,6 +14,7 @@ pub enum ErrorKind { ParserStackOverflow, NotImplemented(&'static str), UnknownVariable(TokenMetadata, String), + #[cfg(feature = "glsl-validate")] VariableAlreadyDeclared(String), ExpectedConstant, SemanticError(&'static str), @@ -38,6 +39,7 @@ impl fmt::Display for ErrorKind { ErrorKind::UnknownVariable(meta, val) => { write!(f, "Unknown variable {} at {:?}", val, meta) } + #[cfg(feature = "glsl-validate")] ErrorKind::VariableAlreadyDeclared(val) => { write!(f, "Variable {} already decalred in current scope", val) } diff --git a/src/front/glsl_new/parser.rs b/src/front/glsl_new/parser.rs index ec8edcd3e1..af99a6803b 100644 --- a/src/front/glsl_new/parser.rs +++ b/src/front/glsl_new/parser.rs @@ -545,6 +545,7 @@ pomelo! { // local variables for (id, initializer) in d.ids_initializers { // check if already declared in current scope + #[cfg(feature = "glsl-validate")] if extra.context.lookup_local_var_current_scope(&id).is_some() { return Err(ErrorKind::VariableAlreadyDeclared(id)) }