Enforce strict project structure for Noir compilation #6422
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
The previous compilation logic used a flexible search to locate
Nargo.toml
and determine the project root.This could lead to unintended behavior, such as:
Solution
This PR modifies the logic to enforce a strict, conventional Noir project structure.
.nr
file must be located inside asrc
folderNargo.toml
file must exist in the parent directory of thesrc
folder (the project root)How to Test
Follow these steps to verify the new compilation logic:
Create a project folder
In your workspace, create a new folder named after your project (e.g.,
hello_noir
).Create a
src
directoryInside the project folder, create a subfolder named
src
.Add a source file
Inside
src
, create a file namedmain.nr
and add the following content:Add a project configuration file
In the project root (the same level as
src
), create a file namedNargo.toml
and add the following content:Compile the project
Open the
main.nr
file in the editor, then click Compile in the Noir compiler.Check the build output
If the compilation succeeds, a new folder named
build
should appear inside your project directory.The folder should contain:
program.json
prover.toml
If both files are generated, the test is successful.