You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-05 12:10:55 +00:00
Improve C# signal analyzer errors
Report the specific parameters that are not supported.
This commit is contained in:
@@ -148,8 +148,29 @@ namespace Godot.SourceGenerators
|
||||
|
||||
if (invokeMethodData == null)
|
||||
{
|
||||
// TODO: Better error for incompatible signature. We should indicate incompatible argument types, as we do with exported properties.
|
||||
Common.ReportSignalDelegateSignatureNotSupported(context, signalDelegateSymbol);
|
||||
if (signalDelegateSymbol.DelegateInvokeMethod is IMethodSymbol methodSymbol)
|
||||
{
|
||||
foreach (var parameter in methodSymbol.Parameters)
|
||||
{
|
||||
if (parameter.RefKind != RefKind.None)
|
||||
{
|
||||
Common.ReportSignalParameterTypeNotSupported(context, parameter);
|
||||
continue;
|
||||
}
|
||||
|
||||
var marshalType = MarshalUtils.ConvertManagedTypeToMarshalType(parameter.Type, typeCache);
|
||||
|
||||
if (marshalType == null)
|
||||
{
|
||||
Common.ReportSignalParameterTypeNotSupported(context, parameter);
|
||||
}
|
||||
}
|
||||
|
||||
if (!methodSymbol.ReturnsVoid)
|
||||
{
|
||||
Common.ReportSignalDelegateSignatureMustReturnVoid(context, signalDelegateSymbol);
|
||||
}
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user