Add support for trailing return types for c# generation.

This commit is contained in:
Chandler Cox
2024-10-28 22:11:47 -05:00
parent b52a520aad
commit a1c7132e48

View File

@@ -831,6 +831,7 @@ namespace Flax.Build.Bindings
} }
// Read return type // Read return type
// Handle if "auto" later
desc.ReturnType = ParseType(ref context); desc.ReturnType = ParseType(ref context);
// Read name // Read name
@@ -841,15 +842,21 @@ namespace Flax.Build.Bindings
// Read parameters // Read parameters
desc.Parameters.AddRange(ParseFunctionParameters(ref context)); 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) 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) if (token.Type == TokenType.Equal)
{ {
context.Tokenizer.SkipUntil(TokenType.SemiColon); context.Tokenizer.SkipUntil(TokenType.SemiColon);
break; 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) else if (token.Type == TokenType.Identifier)
{ {
switch (token.Value) switch (token.Value)