MSVC translation of noreturn attribute
authorElizabeth Smith <elizabeths@fb.com>
Wed, 16 Apr 2014 20:49:35 +0000 (13:49 -0700)
committerSara Golemon <sgolemon@fb.com>
Fri, 18 Apr 2014 19:04:15 +0000 (12:04 -0700)
commit934a0b06a4ce6e85459c84dc2c6a0e61587fc62c
tree35315dbc658384dbdb6f9c599da89705eb15fae6
parent2c2e0f6e483f32b061d48f7567d72b1f5960140a
MSVC translation of noreturn attribute

Summary:
Provide translations for gcc noreturn attribute

__attribute__((noreturn)) is gcc specific, clang understands it on nix systems, but for msvc __declspec(noreturn) is the compiler specific version, which clang will imitate/use on windows.  There was already a FOLLY_NORETURN in portability.h, however because of __declspec limitations it must prefix the declaration, not postfix.  The gcc noreturn attribute does not have this limitation and will work prefixed OR postfixed, so to keep from turning code into spaghetti nonsense, the macro was moved to the front of declations where it is currently used.  This will allow it to work with the proper definitions on clang, clang on windows, gcc, and msvc

Test Plan: fbmake runtests

Reviewed By: delong.j@fb.com

FB internal diff: D1279466
folly/Exception.h
folly/Format.h
folly/FormatArg.h
folly/Portability.h
folly/SafeAssert.h
folly/Subprocess.cpp
folly/detail/FunctionalExcept.h
folly/experimental/exception_tracer/ExceptionTracerLib.cpp
folly/experimental/io/HugePageUtil.cpp