Browse Source

Clean multiline function signatures in the AST converter.

instantiate-types-nested-templates
Joao Matos 5 years ago committed by João Matos
parent
commit
1e9cff43c6
  1. 2
      src/Generator.Tests/AST/TestAST.cs
  2. 13
      src/Parser/ASTConverter.cs

2
src/Generator.Tests/AST/TestAST.cs

@ -347,7 +347,7 @@ namespace CppSharp.Generator.Tests.AST @@ -347,7 +347,7 @@ namespace CppSharp.Generator.Tests.AST
public void TestSignature()
{
Assert.AreEqual("void testSignature()", AstContext.FindFunction("testSignature").Single().Signature);
Assert.AreEqual("void testImpl(){}",
Assert.AreEqual("void testImpl()",
StripWindowsNewLines(AstContext.FindFunction("testImpl").Single().Signature));
Assert.AreEqual("void testConstSignature() const",
AstContext.FindClass("HasConstFunction").Single().FindMethod("testConstSignature").Signature);

13
src/Parser/ASTConverter.cs

@ -1212,6 +1212,17 @@ namespace CppSharp @@ -1212,6 +1212,17 @@ namespace CppSharp
return expression;
}
public static string CleanSignature(string signature)
{
// Sometimes the parser might return multiline signatures, including the function body.
// It should be dealt with in the native parser eventually, but fix it up here for now.
var bracket = signature.IndexOf("{", StringComparison.Ordinal);
if (bracket != -1)
signature = signature.Substring(0, bracket);
signature = signature.Replace("\n", "").Trim();
return signature;
}
public void VisitFunction(Function function, AST.Function _function)
{
VisitDeclaration(function, _function);
@ -1229,7 +1240,7 @@ namespace CppSharp @@ -1229,7 +1240,7 @@ namespace CppSharp
_function.FriendKind = VisitFriendKind(function.FriendKind);
_function.OperatorKind = VisitCXXOperatorKind(function.OperatorKind);
_function.Mangled = function.Mangled;
_function.Signature = function.Signature;
_function.Signature = CleanSignature(function.Signature);
_function.Body = function.Body;
_function.CallingConvention = VisitCallingConvention(function.CallingConvention);
if (function.InstantiatedFrom != null)

Loading…
Cancel
Save