Skip to content

Nested false inside true if causing result to set to null. #113

Open
@Xjph

Description

@Xjph

My original where I discovered the issue was more complex, but I distilled it down to the simplest reproducible case I could find which I've placed in this fiddle: https://dotnetfiddle.net/9NzZ0O

Note the final script which produces a null result when untyped, and throws a null reference exception when a type is supplied.

Activity

self-assigned this
on Aug 25, 2021
codingseb

codingseb commented on Aug 25, 2021

@codingseb
Owner

Hello @Xjph, sorry for my late response.
Need to investigate a bit.
But for now you can easily manage it by returning theresult variable each times after if blocks:

--------------------------------------------
result = 0;
if (true)
{
    if (true)
    {
        result = 1;
    }
}
return result;
---------------- Result --------------------
No type:1
With type:1

--------------------------------------------
result = 0;
if (false)
{
    if (false)
    {
        result = 1;
    }
}
return result;
---------------- Result --------------------
No type:0
With type:0

--------------------------------------------
result = 0;
if (false)
{
    if (true)
    {
        result = 1;
    }
}
return result;
---------------- Result --------------------
No type:0
With type:0

--------------------------------------------
result = 0;
if (true)
{
    if (false)
    {
        result = 1;
    }
}
return result;
---------------- Result --------------------
No type:0
With type:0

or simpler : with evaluator.OptionScriptNeedSemicolonAtTheEndOfLastExpression = false;

--------------------------------------------
result = 0;
if (true)
{
    if (true)
    {
        result = 1;
    }
}
result
---------------- Result --------------------
No type:1
With type:1

--------------------------------------------
result = 0;
if (false)
{
    if (false)
    {
        result = 1;
    }
}
result
---------------- Result --------------------
No type:0
With type:0

--------------------------------------------
result = 0;
if (false)
{
    if (true)
    {
        result = 1;
    }
}
result
---------------- Result --------------------
No type:0
With type:0

--------------------------------------------
result = 0;
if (true)
{
    if (false)
    {
        result = 1;
    }
}
result
---------------- Result --------------------
No type:0
With type:0
Xjph

Xjph commented on Aug 25, 2021

@Xjph
Author

The explicit return is an acceptable workaround for my use case, so certainly no need to rush on this as far as I'm concerned.

Thanks for your time!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

    Development

    No branches or pull requests

      Participants

      @Xjph@codingseb

      Issue actions

        Nested false inside true `if` causing result to set to null. · Issue #113 · codingseb/ExpressionEvaluator