From a1c7132e48b4b98ed47ed30378663cb541f4898f Mon Sep 17 00:00:00 2001 From: Chandler Cox Date: Mon, 28 Oct 2024 22:11:47 -0500 Subject: [PATCH] Add support for trailing return types for c# generation. --- .../Flax.Build/Bindings/BindingsGenerator.Parsing.cs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/Source/Tools/Flax.Build/Bindings/BindingsGenerator.Parsing.cs b/Source/Tools/Flax.Build/Bindings/BindingsGenerator.Parsing.cs index d99fa8b92..e0fa8572d 100644 --- a/Source/Tools/Flax.Build/Bindings/BindingsGenerator.Parsing.cs +++ b/Source/Tools/Flax.Build/Bindings/BindingsGenerator.Parsing.cs @@ -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)