]> Kevux Git Server - fll/commit
Bugfix: If/else condition logic is incorrect or incomplete.
authorKevin Day <thekevinday@gmail.com>
Wed, 12 Jan 2022 02:30:28 +0000 (20:30 -0600)
committerKevin Day <thekevinday@gmail.com>
Wed, 12 Jan 2022 02:30:28 +0000 (20:30 -0600)
commit1a1238c2995faa089a82017fad95e6b7b344ecbb
treea3817daea156e6ef35033b0534b4de7bb99b1ca4
parent05ebed87d658a544b7d0506e5d0df72f3ea140f0
Bugfix: If/else condition logic is incorrect or incomplete.

The if/else logic is not properly traversing.

I believe the original design is to just have if and else be a single set rather than a chain.

At some point I changed this to be chainable (or maybe I am incorrectly thinking that I did).
It made sense to use this if/then chain logic for my unit test files.
The Fake make unit test files are not working as I want them to because if/else chaining is not working.

As a big disclaimer, this does not support nesting.
I continue to refuse to design nesting of the if/else condition logic as I want to keep this as simple as possible.
Which, by the way, this is not simple.

I attempt to cut corners when I did my recent rewrite of the if/else logic.
Redesign this (again) but this time attempt to do this more properly.

The block process state now exclusively uses a special block process state enumeration rather than relying on a synthetic rule type.
The synthetic rule type is now removed.

The goal with this design is to:
1) On syntax error, bail out of the entire if/else chain.
2) On comparison error, continue an if/else chain passes or the end of chain is reached.
3) When any if/else chain passes, all subsequent conditions in the chain are not run.

Replace the "done" condition result with an "error" condition result to more accurately communicate its use.

Isolate the block and block result from the operate processing as much as possible so that all modifications of the variable are done outside of the operate processing.

When the "fail" is set to "exit" the if/else should fail appropriately on syntax error.
When the "fail" is set to "warn" or "ignore", then continue on after skipping the entire chain.

The operate process still needs to check the if/else chain states to determine if it should skip or not.

When an if/else condition terminates unexpectedly due to an end of file (or section) an error is more consistently reported regardless of place in the if/else chain.

This still needs real testing to confirm that all of the possible permutations work as expected.
Unit tests for this will need to be written but this is a long way away from being done.
level_3/fake/c/private-common.h
level_3/fake/c/private-make-operate.c
level_3/fake/c/private-make-operate_process.c
level_3/fake/c/private-make-operate_process_type.c
level_3/fake/c/private-make-operate_validate.c
level_3/fake/documents/fakefile.txt