55using SER . Code . Helpers . Exceptions ;
66using SER . Code . Helpers . Extensions ;
77using SER . Code . Helpers . ResultSystem ;
8- using SER . Code . MethodSystem . BaseMethods ;
98using SER . Code . TokenSystem . Structures ;
109using SER . Code . TokenSystem . Tokens ;
1110using SER . Code . TokenSystem . Tokens . VariableTokens ;
@@ -72,20 +71,10 @@ public override TryAddTokenRes TryAddToken(BaseToken token)
7271 return TryAddTokenRes . End ( ) ;
7372 }
7473
75- if ( token is IContextableToken contextable )
74+ if ( token is IContextableToken contextable &&
75+ contextable . GetContext ( Script ) is { } mainContext and IMayReturnValueContext returnValueContext )
7676 {
77- if ( methodToken . Method is not ReturningMethod )
78- {
79- return TryAddTokenRes . Error ( $ "Method '{ token . RawRep } ' does not return a value") ;
80- }
81-
82- var methodContext = new MethodContext ( methodToken )
83- {
84- Script = Script ,
85- LineNum = LineNum ,
86- } ;
87-
88- _returnContext = ( methodContext , methodContext ) ;
77+ _returnContext = ( mainContext , returnValueContext ) ;
8978 return TryAddTokenRes . Continue ( ) ;
9079 }
9180
@@ -108,22 +97,24 @@ protected override IEnumerator<float> Execute()
10897 {
10998 if ( _returnContext . HasValue )
11099 {
111- var coro = _returnContext . Value . main . ExecuteBaseContext ( ) ;
100+ var ( main , returner ) = _returnContext . Value ;
101+
102+ var coro = main . ExecuteBaseContext ( ) ;
112103 while ( coro . MoveNext ( ) )
113104 {
114105 yield return coro . Current ;
115106 }
116107
117108 Log . D ( "checking for returned value" ) ;
118- if ( _returnContext . Value . returner . ReturnedValue is not { } value )
109+ if ( returner . ReturnedValue is not { } value )
119110 {
120- throw new ScriptRuntimeError ( $ "Context { _returnContext . Value . main . Name } has not returned a value!") ;
111+ throw new ScriptRuntimeError ( $ "Context { main . Name } has not returned a value!") ;
121112 }
122113
123114 if ( value is not TValue tValue )
124115 {
125116 throw new ScriptRuntimeError (
126- $ "Value returned by '{ _returnContext . Value . main . Name } ' cannot be assigned to the { varToken . RawRep } variable") ;
117+ $ "Value returned by '{ main . Name } ' cannot be assigned to the { varToken . RawRep } variable") ;
127118 }
128119
129120 Script . AddVariable ( Variable . Create ( varToken . Name , Value . Parse ( tValue ) ) ) ;
0 commit comments