aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMelody Horn <melody@boringcactus.com>2021-04-05 15:52:55 -0600
committerMelody Horn <melody@boringcactus.com>2021-04-05 15:52:55 -0600
commit5574b575eb09d8121d870fbabe46e7606e6c81eb (patch)
treec5f6bbcb4f5e1354a4ae39fd908e35aad4869b69
parent31dc26284db364f55fd595c94123f5ba836ebaae (diff)
downloadmakers-5574b575eb09d8121d870fbabe46e7606e6c81eb.tar.gz
makers-5574b575eb09d8121d870fbabe46e7606e6c81eb.zip
skip if any conditional is skipping, not just innermost
-rw-r--r--src/makefile/conditional.rs3
-rw-r--r--src/makefile/input.rs4
2 files changed, 5 insertions, 2 deletions
diff --git a/src/makefile/conditional.rs b/src/makefile/conditional.rs
index 4490e8c..989dfc9 100644
--- a/src/makefile/conditional.rs
+++ b/src/makefile/conditional.rs
@@ -2,6 +2,7 @@ use eyre::{bail, Result};
use super::token::TokenString;
+#[derive(Debug)]
pub enum Line {
/// spelled "ifeq"
IfEqual(TokenString, TokenString),
@@ -19,6 +20,7 @@ pub enum Line {
EndIf,
}
+#[derive(Debug)]
pub enum State {
/// we saw a conditional, the condition was true, we're executing now
/// and if we hit an else we will start SkippingUntilEndIf
@@ -42,6 +44,7 @@ impl State {
}
}
+#[derive(Debug)]
pub enum StateAction {
Push(State),
Replace(State),
diff --git a/src/makefile/input.rs b/src/makefile/input.rs
index d90378d..5dfaed7 100644
--- a/src/makefile/input.rs
+++ b/src/makefile/input.rs
@@ -373,8 +373,8 @@ impl<'a, 'parent, R: BufRead> MakefileReader<'a, 'parent, R> {
// skip lines if we need to
if self
.conditional_stack
- .last()
- .map_or(false, ConditionalState::skipping)
+ .iter()
+ .any(ConditionalState::skipping)
{
continue;
}