Skip to content

Commit 66be352

Browse files
committed
подстановка Неопределено в пропущенные параметры локальных методов
1 parent 10b97bc commit 66be352

1 file changed

Lines changed: 10 additions & 4 deletions

File tree

src/OneScript.Native/Compiler/MethodCompiler.cs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1257,7 +1257,8 @@ private Expression CreateMethodCall(CallNode node)
12571257
}
12581258

12591259
var symbol = Symbols.GetScope(binding.ScopeNumber).Methods[binding.MemberNumber];
1260-
var args = PrepareCallArguments(node.ArgumentList, symbol.Method.GetParameters(), InjectedProcessNeeded(symbol.Method));
1260+
var args = PrepareCallArguments(node.ArgumentList, symbol.Method.GetParameters(),
1261+
InjectedProcessNeeded(symbol.Method), IsModuleScope(binding.ScopeNumber));
12611262

12621263
var methodInfo = symbol.Method;
12631264
if (methodInfo is ContextMethodInfo contextMethod)
@@ -1399,9 +1400,10 @@ private Expression DirectConversionCall(CallNode node, Type type)
13991400
return ExpressionHelpers.ConvertToType(
14001401
ConvertToExpressionTree(node.ArgumentList.Children[0].Children[0]),
14011402
type);
1402-
}
1403-
1404-
private List<Expression> PrepareCallArguments(BslSyntaxNode argList, ParameterInfo[] declaredParameters, bool injectsProcess)
1403+
}
1404+
1405+
private List<Expression> PrepareCallArguments(BslSyntaxNode argList, ParameterInfo[] declaredParameters,
1406+
bool injectsProcess, bool passUndef = false)
14051407
{
14061408
var factArguments = new List<Expression>();
14071409

@@ -1456,6 +1458,10 @@ private List<Expression> PrepareCallArguments(BslSyntaxNode argList, ParameterIn
14561458
{
14571459
factArguments.Add(Expression.Constant(declaredParam.DefaultValue, declaredParam.ParameterType));
14581460
}
1461+
else if (passUndef)
1462+
{
1463+
factArguments.Add(Expression.Constant(BslUndefinedValue.Instance, declaredParam.ParameterType));
1464+
}
14591465
else
14601466
{
14611467
var errText = new BilingualString(

0 commit comments

Comments
 (0)