[webkit-dev] Use of [[maybe_unused]]
Suzuki, Basuke
Basuke.Suzuki at sony.com
Mon Jan 13 16:08:32 PST 2020
Hi WebKit-dev,
I'm asking about whether we can use C++ 17's new attribute [[maybe_unused]]. These are situations I cannot solve well with UNUSED_PARAM().
Case 1: The function parameter is only used in RELEASE_LOG macro which is empty in some platform
https://github.com/WebKit/webkit/blob/master/Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.cpp#L105
m_workQueue->dispatch([this, host = host.isolatedCopy(), sessionID, callback = WTFMove(callback)] () mutable {
...
RELEASE_LOG_IF_ALLOWED(sessionID, "query - Ran successfully. Result = %s", (foundHost ? "true" : "false"));
...
});
`sessionID` is used in RELEASE_LOG_IF_ALLOWED() and we have empty implementation of RELEASE_LOG() so that it's ended up with unused parameter warning of sessionID. We can add UNUSED_PARAM(sessionID) in this case, but [[maybe_unused]] is more correct choice to describe the code because sessionID is actually used.
I also tried to replace empty RELEASE_LOG macro with something to use every parameter marked used somehow, but the trial just failed.
Case 2: The member variable is just used by specific port
https://github.com/WebKit/webkit/blob/master/Source/WebKit/NetworkProcess/NetworkLoadChecker.h#L155
bool m_isHTTPSUpgradeEnabled { false };
This member variable is only used in COCOA port. (https://github.com/WebKit/webkit/blob/master/Source/WebKit/NetworkProcess/NetworkLoadChecker.cpp#L203)
We can add UNUSED_PARAM(isHTTPSUpgradeEnabled) in our platform code, but adding [[maybe_unused]] in the header file is straight forward.
Compiler support of this attribute seems okay for any WebKit build. I've done quick check on Godbolt. https://godbolt.org/z/w47XXn
-----
Basuke Suzuki
SONY PlayStation
More information about the webkit-dev
mailing list