Browse Source

Merge pull request #442 from ddobrev/master

Revert "Fixed parsing of function signatures with const-qualified return types"
pull/443/head
João Matos 10 years ago
parent
commit
75d0cd0051
  1. 2
      src/CppParser/Parser.cpp
  2. 6
      src/Generator.Tests/AST/TestAST.cs
  3. 1
      tests/Native/AST.h

2
src/CppParser/Parser.cpp

@ -2219,6 +2219,8 @@ void Parser::WalkFunction(clang::FunctionDecl* FD, Function* F,
} }
clang::SourceLocation BeginLoc = FD->getLocStart(); clang::SourceLocation BeginLoc = FD->getLocStart();
if (ResultLoc.isValid())
BeginLoc = ResultLoc;
// For some weird reason 'kw_const' doesn't work; Clang considers the 'const' a 'raw_identifier' // For some weird reason 'kw_const' doesn't work; Clang considers the 'const' a 'raw_identifier'
clang::SourceLocation EndLoc = Lexer::findLocationAfterToken( clang::SourceLocation EndLoc = Lexer::findLocationAfterToken(

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

@ -243,7 +243,7 @@ namespace CppSharp.Generator.Tests.AST
[Test] [Test]
public void TestLineNumberOfFriend() public void TestLineNumberOfFriend()
{ {
Assert.AreEqual(82, AstContext.FindFunction("operator+").First().LineNumber); Assert.AreEqual(83, AstContext.FindFunction("operator+").First().LineNumber);
} }
[Test] [Test]
@ -252,7 +252,9 @@ namespace CppSharp.Generator.Tests.AST
Assert.AreEqual("void testSignature()", AstContext.FindFunction("testSignature").Single().Signature); Assert.AreEqual("void testSignature()", AstContext.FindFunction("testSignature").Single().Signature);
Assert.AreEqual("void testImpl()", AstContext.FindFunction("testImpl").Single().Signature); Assert.AreEqual("void testImpl()", AstContext.FindFunction("testImpl").Single().Signature);
Assert.AreEqual("void testConstSignature() const", AstContext.FindClass("HasConstFunction").Single().FindMethod("testConstSignature").Signature); Assert.AreEqual("void testConstSignature() const", AstContext.FindClass("HasConstFunction").Single().FindMethod("testConstSignature").Signature);
Assert.AreEqual("const int& testConstRefSignature()", AstContext.FindClass("HasConstFunction").Single().FindMethod("testConstRefSignature").Signature); // TODO: restore when the const of a return type is fixed properly
//Assert.AreEqual("const int& testConstRefSignature()", AstContext.FindClass("HasConstFunction").Single().FindMethod("testConstRefSignature").Signature);
//Assert.AreEqual("const int& testStaticConstRefSignature()", AstContext.FindClass("HasConstFunction").Single().FindMethod("testStaticConstRefSignature").Signature);
} }
} }
} }

1
tests/Native/AST.h

@ -72,6 +72,7 @@ class HasConstFunction
public: public:
void testConstSignature() const; void testConstSignature() const;
const int& testConstRefSignature(); const int& testConstRefSignature();
static const int& testStaticConstRefSignature();
friend inline const TestTemplateClass2 operator+(const TestTemplateClass2& f1, const TestTemplateClass2& f2); friend inline const TestTemplateClass2 operator+(const TestTemplateClass2& f1, const TestTemplateClass2& f2);
}; };

Loading…
Cancel
Save