Merge branch 'trail-retrun' of https://github.com/Tryibion/FlaxEngine into Tryibion-trail-retrun

This commit is contained in:
Wojtek Figat
2024-10-29 16:22:47 +01:00
2 changed files with 15 additions and 2 deletions

View File

@@ -172,6 +172,12 @@ public:
return str.Length();
}
// Test trailing return type
API_FUNCTION() auto TestTrailingReturn(int32 number) -> float
{
return static_cast<float>(number);
}
int32 TestInterfaceMethod(const String& str) override
{
return str.Length();

View File

@@ -831,6 +831,7 @@ namespace Flax.Build.Bindings
}
// Read return type
// Handle if "auto" later
desc.ReturnType = ParseType(ref context);
// Read name
@@ -841,15 +842,21 @@ namespace Flax.Build.Bindings
// Read parameters
desc.Parameters.AddRange(ParseFunctionParameters(ref context));
// Read ';' or 'const' or 'override' or '= 0' or '{'
// Read ';' or 'const' or 'override' or '= 0' or '{' or '-'
while (true)
{
var token = context.Tokenizer.ExpectAnyTokens(new[] { TokenType.SemiColon, TokenType.LeftCurlyBrace, TokenType.Equal, TokenType.Identifier });
var token = context.Tokenizer.ExpectAnyTokens(new[] { TokenType.SemiColon, TokenType.LeftCurlyBrace, TokenType.Equal, TokenType.Sub, TokenType.Identifier });
if (token.Type == TokenType.Equal)
{
context.Tokenizer.SkipUntil(TokenType.SemiColon);
break;
}
// Support auto FunctionName() -> Type
else if (token.Type == TokenType.Sub && desc.ReturnType.ToString() == "auto")
{
context.Tokenizer.SkipUntil(TokenType.GreaterThan);
desc.ReturnType = ParseType(ref context);
}
else if (token.Type == TokenType.Identifier)
{
switch (token.Value)