From 63c3d96e9a6f04918629c6b4a053e0a344e69f56 Mon Sep 17 00:00:00 2001 From: triton Date: Fri, 2 Aug 2013 17:24:53 +0100 Subject: [PATCH] Revert "Fixed handling of template methods processing." This is not the right way to fix the issue and was causing a lot of other parsing problems... This reverts commit 463730baeb652b44268dc93120b047b6e3d32a37. --- src/Parser/Parser.cpp | 31 +++++++------------------------ 1 file changed, 7 insertions(+), 24 deletions(-) diff --git a/src/Parser/Parser.cpp b/src/Parser/Parser.cpp index 256f026c..25572337 100644 --- a/src/Parser/Parser.cpp +++ b/src/Parser/Parser.cpp @@ -583,11 +583,6 @@ CppSharp::AST::Class^ Parser::WalkRecordCXX(clang::CXXRecordDecl* Record) { auto MD = cast(D); auto Method = WalkMethodCXX(MD); - // Some implicit class template methods do not seem to provide type source - // information which causes us to not be able to properly walk through the - // qualified return type. In this case, do not add them to the AST. - if (!Method->ReturnType.Type) - continue; Method->AccessDecl = AccessDecl; RC->Methods->Add(Method); HandleComments(MD, Method); @@ -1473,32 +1468,20 @@ void Parser::WalkFunction(clang::FunctionDecl* FD, CppSharp::AST::Function^ F, TypeLoc RTL; if (auto TSI = FD->getTypeSourceInfo()) { - auto TL = TSI->getTypeLoc(); - if (!TL) - TL.isNull(); - FunctionTypeLoc FTL = TSI->getTypeLoc().getAs(); - if (FTL) - RTL = FTL.getResultLoc(); + RTL = FTL.getResultLoc(); auto &SM = C->getSourceManager(); auto headStartLoc = GetDeclStartLocation(C.get(), FD); - if (FTL) - { - auto headEndLoc = SM.getExpansionLoc(FTL.getLParenLoc()); - auto headRange = clang::SourceRange(headStartLoc, headEndLoc); + auto headEndLoc = SM.getExpansionLoc(FTL.getLParenLoc()); + auto headRange = clang::SourceRange(headStartLoc, headEndLoc); - HandlePreprocessedEntities(F, headRange, CppSharp::AST::MacroLocation::FunctionHead); - HandlePreprocessedEntities(F, FTL.getParensRange(), CppSharp::AST::MacroLocation::FunctionParameters); - //auto bodyRange = clang::SourceRange(FTL.getRParenLoc(), FD->getLocEnd()); - //HandlePreprocessedEntities(F, bodyRange, CppSharp::AST::MacroLocation::FunctionBody); - } + HandlePreprocessedEntities(F, headRange, CppSharp::AST::MacroLocation::FunctionHead); + HandlePreprocessedEntities(F, FTL.getParensRange(), CppSharp::AST::MacroLocation::FunctionParameters); + //auto bodyRange = clang::SourceRange(FTL.getRParenLoc(), FD->getLocEnd()); + //HandlePreprocessedEntities(F, bodyRange, CppSharp::AST::MacroLocation::FunctionBody); } - // See processing of CXXMethod in WalkRecordCXX for why this is needed. - if (!RTL) - return; - F->ReturnType = GetQualifiedType(FD->getResultType(), WalkType(FD->getResultType(), &RTL));