[llvm-bugs] [Bug 33814] New: if (!@available) doesn't work and has confusing diagnostic

via llvm-bugs llvm-bugs at lists.llvm.org
Mon Jul 17 07:32:36 PDT 2017


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

            Bug ID: 33814
           Summary: if (!@available) doesn't work and has confusing
                    diagnostic
           Product: clang
           Version: unspecified
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: Frontend
          Assignee: unassignedclangbugs at nondot.org
          Reporter: nicolasweber at gmx.de
                CC: llvm-bugs at lists.llvm.org

We're using @available some in chrome, and I'm getting feedback that people are
confused about writing `if (!@available`. That's kind of understandable, here's
the current experience:

thakis at thakis:~/src/chrome/src$ cat test.mm
void f() {
  if (!@available(macos 10.10, *)) {
    return;
  }
  // 10.10-only code here
}
thakis at thakis:~/src/chrome/src$
third_party/llvm-build/Release+Asserts/bin/clang -c test.mm -target
x86_64-apple-darwin
test.mm:2:8: warning: @available does not guard availability here; use if
(@available) instead [-Wunsupported-availability-guard]
  if (!@available(macos 10.10, *)) {
       ^

It'd be cool if this pattern just worked somehow (full CFG-awareness likely
isn't needed).

Even just `if (!@available()) {} else {}` so that the else block gets the
available OS would be nice.

If that isn't feasible, making the error message more explicit might help.

(But maybe just having the docs is good enough too, most people who are
confused about this haven't read the docs we added on Friday yet.)

-- 
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/20170717/d167a379/attachment-0001.html>


More information about the llvm-bugs mailing list