зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1291397. Work around clang bug that they didn't actually manage to ship a fix for which causes it to give spurious warnings it shouldn't be giving, which are then fatal due to -Werror. r=dholbert
MozReview-Commit-ID: GbMEvoxGpH1
This commit is contained in:
Родитель
861a58d5a4
Коммит
af7a6137cc
|
@ -4690,14 +4690,24 @@ def getJSToNativeConversionInfo(type, descriptorProvider, failureCode=None,
|
|||
# For JS-implemented APIs, we refuse to allow passing objects that the
|
||||
# API consumer does not subsume. The extra parens around
|
||||
# ($${passedToJSImpl}) suppress unreachable code warnings when
|
||||
# $${passedToJSImpl} is the literal `false`.
|
||||
# $${passedToJSImpl} is the literal `false`. But Apple is shipping a
|
||||
# buggy clang (clang 3.9) in Xcode 8.3, so there even the parens are not
|
||||
# enough. So we manually disable some warnings in clang.
|
||||
if not isinstance(descriptorProvider, Descriptor) or descriptorProvider.interface.isJSImplemented():
|
||||
templateBody = fill(
|
||||
"""
|
||||
#ifdef __clang__
|
||||
#pragma clang diagnostic push
|
||||
#pragma clang diagnostic ignored "-Wunreachable-code"
|
||||
#pragma clang diagnostic ignored "-Wunreachable-code-return"
|
||||
#endif // __clang__
|
||||
if (($${passedToJSImpl}) && !CallerSubsumes($${val})) {
|
||||
ThrowErrorMessage(cx, MSG_PERMISSION_DENIED_TO_PASS_ARG, "${sourceDescription}");
|
||||
$*{exceptionCode}
|
||||
}
|
||||
#ifdef __clang__
|
||||
#pragma clang diagnostic pop
|
||||
#endif // __clang__
|
||||
""",
|
||||
sourceDescription=sourceDescription,
|
||||
exceptionCode=exceptionCode) + templateBody
|
||||
|
@ -5896,14 +5906,24 @@ def getJSToNativeConversionInfo(type, descriptorProvider, failureCode=None,
|
|||
# For JS-implemented APIs, we refuse to allow passing objects that the
|
||||
# API consumer does not subsume. The extra parens around
|
||||
# ($${passedToJSImpl}) suppress unreachable code warnings when
|
||||
# $${passedToJSImpl} is the literal `false`.
|
||||
# $${passedToJSImpl} is the literal `false`. But Apple is shipping a
|
||||
# buggy clang (clang 3.9) in Xcode 8.3, so there even the parens are not
|
||||
# enough. So we manually disable some warnings in clang.
|
||||
if not isinstance(descriptorProvider, Descriptor) or descriptorProvider.interface.isJSImplemented():
|
||||
templateBody = fill(
|
||||
"""
|
||||
#ifdef __clang__
|
||||
#pragma clang diagnostic push
|
||||
#pragma clang diagnostic ignored "-Wunreachable-code"
|
||||
#pragma clang diagnostic ignored "-Wunreachable-code-return"
|
||||
#endif // __clang__
|
||||
if (($${passedToJSImpl}) && !CallerSubsumes($${val})) {
|
||||
ThrowErrorMessage(cx, MSG_PERMISSION_DENIED_TO_PASS_ARG, "${sourceDescription}");
|
||||
$*{exceptionCode}
|
||||
}
|
||||
#ifdef __clang__
|
||||
#pragma clang diagnostic pop
|
||||
#endif // __clang__
|
||||
""",
|
||||
sourceDescription=sourceDescription,
|
||||
exceptionCode=exceptionCode) + templateBody
|
||||
|
|
Загрузка…
Ссылка в новой задаче