Skip to content

Commit e3982e3

Browse files
rework value system for invalid values and ?? operator, better named properties, removal of !ValueToken interface
1 parent df3518e commit e3982e3

67 files changed

Lines changed: 927 additions & 609 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Code/ArgumentSystem/Arguments/AnyValueArgument.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
using SER.Code.ArgumentSystem.BaseArguments;
22
using SER.Code.Helpers.ResultSystem;
33
using SER.Code.TokenSystem.Tokens;
4-
using SER.Code.TokenSystem.Tokens.Interfaces;
4+
using SER.Code.TokenSystem.Tokens.ValueTokens;
55
using SER.Code.ValueSystem;
66

77
namespace SER.Code.ArgumentSystem.Arguments;
@@ -13,7 +13,7 @@ public class AnyValueArgument(string name) : Argument(name)
1313
[UsedImplicitly]
1414
public DynamicTryGet<Value> GetConvertSolution(BaseToken token)
1515
{
16-
if (token is IValueToken valToken)
16+
if (token is ValueToken valToken)
1717
{
1818
return new(valToken.Value);
1919
}

Code/ArgumentSystem/Arguments/BoolArgument.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,6 @@ public DynamicTryGet<bool> GetConvertSolution(BaseToken token)
1919
return error;
2020
}
2121

22-
return new(() => get().OnSuccess(v => v.Value, error));
22+
return new(() => get().OnSuccess(v => v.UnderlyingValue, error));
2323
}
2424
}

Code/ArgumentSystem/Arguments/ColorArgument.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,6 @@ public DynamicTryGet<Color> GetConvertSolution(BaseToken token)
1919
return $"Value is not a {InputDescription}.";
2020
}
2121

22-
return new(() => func().OnSuccess(val => val.Value));
22+
return new(() => func().OnSuccess(val => val.UnderlyingValue));
2323
}
2424
}

Code/ArgumentSystem/Arguments/DoorArgument.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
using SER.Code.Extensions;
66
using SER.Code.Helpers.ResultSystem;
77
using SER.Code.TokenSystem.Tokens;
8-
using SER.Code.TokenSystem.Tokens.Interfaces;
8+
using SER.Code.TokenSystem.Tokens.ValueTokens;
99
using SER.Code.ValueSystem;
1010

1111
namespace SER.Code.ArgumentSystem.Arguments;
@@ -48,7 +48,7 @@ public DynamicTryGet<Door> GetConvertSolution(BaseToken token)
4848
{
4949
Result rs = $"Value '{token.RawRep}' cannot be interpreted as {InputDescription}.";
5050

51-
if (token is not IValueToken val || !val.CapableOf<ReferenceValue>(out var func))
51+
if (token is not ValueToken val || !val.CapableOf<ReferenceValue>(out var func))
5252
{
5353
return rs;
5454
}

Code/ArgumentSystem/Arguments/DurationArgument.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
using SER.Code.Extensions;
33
using SER.Code.Helpers.ResultSystem;
44
using SER.Code.TokenSystem.Tokens;
5-
using SER.Code.TokenSystem.Tokens.Interfaces;
5+
using SER.Code.TokenSystem.Tokens.ValueTokens;
66
using SER.Code.ValueSystem;
77

88
namespace SER.Code.ArgumentSystem.Arguments;
@@ -15,16 +15,16 @@ public class DurationArgument(string name) : Argument(name)
1515
public DynamicTryGet<TimeSpan> GetConvertSolution(BaseToken token)
1616
{
1717
Result rs = $"Value '{token.RawRep}' is not a duration.";
18-
if (token is not IValueToken valueToken || !valueToken.CapableOf<DurationValue>(out var get))
18+
if (token is not ValueToken valueToken || !valueToken.CapableOf<DurationValue>(out var get))
1919
{
2020
return rs;
2121
}
2222

2323
if (valueToken.IsConstant)
2424
{
25-
return get().OnSuccess(v => v.Value, rs);
25+
return get().OnSuccess(v => v.UnderlyingValue, rs);
2626
}
2727

28-
return new(() => get().OnSuccess(v => v.Value, rs));
28+
return new(() => get().OnSuccess(v => v.UnderlyingValue, rs));
2929
}
3030
}

Code/ArgumentSystem/Arguments/EnumArgument.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
using SER.Code.Helpers.ResultSystem;
44
using SER.Code.Plugin.Commands.HelpSystem;
55
using SER.Code.TokenSystem.Tokens;
6-
using SER.Code.TokenSystem.Tokens.Interfaces;
6+
using SER.Code.TokenSystem.Tokens.ValueTokens;
77

88
namespace SER.Code.ArgumentSystem.Arguments;
99

@@ -50,7 +50,7 @@ public DynamicTryGet<TEnum> GetConvertSolution(BaseToken token)
5050
return value;
5151
}
5252

53-
if (token is not IValueToken valToken || valToken.IsConstant)
53+
if (token is not ValueToken valToken || valToken.IsConstant)
5454
{
5555
return $"Not a {InputDescription}.";
5656
}

Code/ArgumentSystem/Arguments/FloatArgument.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ public DynamicTryGet<float> GetConvertSolution(BaseToken token)
6767
{
6868
if (token is NumberToken number)
6969
{
70-
return VerifyRange(number.Value.Value);
70+
return VerifyRange(number.ExactValue);
7171
}
7272

7373
if (!token.CanReturn<NumberValue>(out var func))
@@ -80,7 +80,7 @@ public DynamicTryGet<float> GetConvertSolution(BaseToken token)
8080

8181
private TryGet<float> VerifyRange(NumberValue value)
8282
{
83-
var result = (float)value.Value;
83+
var result = (float)value.UnderlyingValue;
8484
if (result < _minValue)
8585
return $"Value {value} is lower than allowed minimum value {_minValue}.";
8686

Code/ArgumentSystem/Arguments/GateArgument.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
using SER.Code.Extensions;
55
using SER.Code.Helpers.ResultSystem;
66
using SER.Code.TokenSystem.Tokens;
7-
using SER.Code.TokenSystem.Tokens.Interfaces;
7+
using SER.Code.TokenSystem.Tokens.ValueTokens;
88
using SER.Code.ValueSystem;
99

1010
namespace SER.Code.ArgumentSystem.Arguments;
@@ -35,7 +35,7 @@ public DynamicTryGet<Gate> GetConvertSolution(BaseToken token)
3535
{
3636
Result rs = $"Value '{token.RawRep}' cannot be interpreted as {InputDescription}.";
3737

38-
if (token is not IValueToken val || !val.CapableOf<ReferenceValue>(out var func))
38+
if (token is not ValueToken val || !val.CapableOf<ReferenceValue>(out var func))
3939
{
4040
return rs;
4141
}

Code/ArgumentSystem/Arguments/IntArgument.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public DynamicTryGet<int> GetConvertSolution(BaseToken token)
5555
{
5656
if (token is NumberToken number)
5757
{
58-
return VerifyRange(number.Value.Value);
58+
return VerifyRange(number.ExactValue);
5959
}
6060

6161
if (!token.CanReturn<NumberValue>(out var func))
@@ -68,7 +68,7 @@ public DynamicTryGet<int> GetConvertSolution(BaseToken token)
6868

6969
private TryGet<int> VerifyRange(NumberValue value)
7070
{
71-
var result = (int)value.Value;
71+
var result = (int)value.UnderlyingValue;
7272
if (result < _minValue)
7373
return $"Value {value} is lower than allowed minimum value {_minValue}.";
7474

Code/ContextSystem/Contexts/Control/ElifStatement.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,10 +58,8 @@ public override Result VerifyCurrentState()
5858

5959
protected override IEnumerator<float> Execute()
6060
{
61-
if (_expression.Evaluate().HasErrored(out var error, out var objResult))
62-
{
63-
throw new ScriptRuntimeError(this, error);
64-
}
61+
// expression failed -> false
62+
var objResult = _expression.Evaluate() ?? false;
6563

6664
if (objResult is not bool result)
6765
{

0 commit comments

Comments
 (0)