Feature #5: Compilation Step Failure

Implementing the "Compilation Step Failure" feature for our "Language Compiler" project.


Large software consists of many source files and libraries. The software as a whole can only compile if all the constituent files compile successfully with the required libraries. The multi-file compilation is generally structured as a number of build steps that must be performed sequentially so that the dependencies of files and libraries are met. An individual build step can include the compilation of a source file or library.

Assume that we are working with a system that specifies the build as steps 1 through n, and the steps must be performed in ascending order. If a build step fails, repeating all the build steps is inefficient. The successful steps should not be repeated. When a build fails, we get an error message, but we don’t know which step failed. We have access to an API call, ErrorReport::isFailingStep(i), which returns true if build step i failed. Otherwise, it will return false. If there was a total of forty steps and step 28 failed, the compilation will stop, and ErrorReport::isFailingStep(i) will return true as long as i >= 28. We want to efficiently determine the first build step that must be repeated.

For instance, if we have n = 40 steps and the steps 28 to 40 fail. The API call ErrorReport::isFailingStep(i) will give True for 28 to 40. Our module should then use these resources to output the first step that failed, i.e., 28.

Level up your interview prep. Join Educative to access 70+ hands-on prep courses.