[llvm-bugs] [Bug 39567] New: Invalid getReturnTypeSourceRange for function with trailing return type

via llvm-bugs llvm-bugs at lists.llvm.org
Mon Nov 5 17:20:22 PST 2018


https://bugs.llvm.org/show_bug.cgi?id=39567

            Bug ID: 39567
           Summary: Invalid getReturnTypeSourceRange for function with
                    trailing return type
           Product: clang
           Version: trunk
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: Tooling
          Assignee: unassignedclangbugs at nondot.org
          Reporter: steveire at gmail.com
                CC: llvm-bugs at lists.llvm.org

Given this source file:


int foo();

auto bar() -> int;


and this clang-tidy check:


void FuncReturnRangeCheck::registerMatchers(MatchFinder *Finder) {
  // FIXME: Add matchers.
  Finder->addMatcher(functionDecl().bind("x"), this);
}

void FuncReturnRangeCheck::check(const MatchFinder::MatchResult &Result) {
  // FIXME: Add callback implementation.
  const auto *MatchedDecl = Result.Nodes.getNodeAs<FunctionDecl>("x");

  MatchedDecl->dump();

  auto SR = MatchedDecl->getReturnTypeSourceRange();

  SR.dump(*Result.SourceManager);
}



we get this output:


FunctionDecl 0x55dc893341f0 <func-return.cpp:2:1, col:9> col:5 foo 'int (void)'
<func-return.cpp:2:1>
FunctionDecl 0x55dc89334350 <func-return.cpp:4:1, col:15> col:6 bar 'auto
(void) -> int'
<<invalid sloc>>


The second source range should not be invalid.

FunctionDecl::getReturnTypeSourceRange returns an invalid range when the return
type is after the name info.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20181106/547f561b/attachment.html>


More information about the llvm-bugs mailing list