Skip to content

Commit

Permalink
Don't analyze comments when ignore-comments is set (#2180)
Browse files Browse the repository at this point in the history
  • Loading branch information
casey committed Jun 21, 2024
1 parent e4564f4 commit af86a47
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 2 deletions.
2 changes: 1 addition & 1 deletion src/analyzer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ impl<'src> Analyzer<'src> {
}
}

let recipes = RecipeResolver::resolve_recipes(recipe_table, &self.assignments)?;
let recipes = RecipeResolver::resolve_recipes(&self.assignments, &settings, recipe_table)?;

let mut aliases = Table::new();
while let Some(alias) = self.aliases.pop() {
Expand Down
7 changes: 6 additions & 1 deletion src/recipe_resolver.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,9 @@ pub(crate) struct RecipeResolver<'src: 'run, 'run> {

impl<'src: 'run, 'run> RecipeResolver<'src, 'run> {
pub(crate) fn resolve_recipes(
unresolved_recipes: Table<'src, UnresolvedRecipe<'src>>,
assignments: &'run Table<'src, Assignment<'src>>,
settings: &Settings,
unresolved_recipes: Table<'src, UnresolvedRecipe<'src>>,
) -> CompileResult<'src, Table<'src, Rc<Recipe<'src>>>> {
let mut resolver = Self {
resolved_recipes: Table::new(),
Expand Down Expand Up @@ -39,6 +40,10 @@ impl<'src: 'run, 'run> RecipeResolver<'src, 'run> {
}

for line in &recipe.body {
if line.is_comment() && settings.ignore_comments {
continue;
}

for fragment in &line.fragments {
if let Fragment::Interpolation { expression, .. } = fragment {
for variable in expression.variables() {
Expand Down
38 changes: 38 additions & 0 deletions tests/ignore_comments.rs
Original file line number Diff line number Diff line change
Expand Up @@ -97,3 +97,41 @@ fn dont_evaluate_comments() {
)
.run();
}

#[test]
fn dont_analyze_comments() {
Test::new()
.justfile(
"
set ignore-comments
some_recipe:
# {{ bar }}
",
)
.run();
}

#[test]
fn comments_still_must_be_parsable_when_ignored() {
Test::new()
.justfile(
"
set ignore-comments
some_recipe:
# {{ foo bar }}
",
)
.stderr(
"
error: Expected '}}', '(', '+', or '/', but found identifier
——▶ justfile:4:12
4 │ # {{ foo bar }}
│ ^^^
",
)
.status(EXIT_FAILURE)
.run();
}

0 comments on commit af86a47

Please sign in to comment.