Skip to content

Commit

Permalink
Build fix for Debian Stable after 265057@main https://bugs.webkit.org…
Browse files Browse the repository at this point in the history
…/show_bug.cgi?id=257931

Reviewed by Myles C. Maxfield.

Attempt to visit an inherited variant results into a compiler error in libstdc++-10.
See: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90943

Refactor code to work around compiler error.

* Source/WebCore/css/CSSWordBoundaryDetectionValue.cpp:
(WebCore::CSSWordBoundaryDetectionValue::customCSSText const):
* Source/WebCore/layout/formattingContexts/inline/text/TextUtil.cpp:
(WebCore::Layout::TextUtil::contentAnalysis):
* Source/WebCore/rendering/RenderText.cpp:
(WebCore::mapWordBoundaryDetectionToContentAnalysis):
* Source/WebCore/rendering/style/WordBoundaryDetection.h:
(WebCore::operator<<):

Canonical link: https://commits.webkit.org/265109@main
  • Loading branch information
dpino committed Jun 13, 2023
1 parent a9da0d2 commit 6ff8c5f
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 4 deletions.
3 changes: 2 additions & 1 deletion Source/WebCore/css/CSSWordBoundaryDetectionValue.cpp
Expand Up @@ -40,7 +40,8 @@ CSSWordBoundaryDetectionValue::CSSWordBoundaryDetectionValue(WordBoundaryDetecti
String CSSWordBoundaryDetectionValue::customCSSText() const
{
TextStream ts;
WTF::switchOn(value(), [&ts](WordBoundaryDetectionNormal) {
// FIXME: Explicit static_cast to work around issue on libstdc++-10. Undo when upgrading GCC from 10 to 11.
WTF::switchOn(static_cast<WordBoundaryDetectionType>(value()), [&ts](WordBoundaryDetectionNormal) {
ts << "normal";
}, [&ts](WordBoundaryDetectionManual) {
ts << "manual";
Expand Down
Expand Up @@ -375,7 +375,8 @@ TextBreakIterator::LineMode::Behavior TextUtil::lineBreakIteratorMode(LineBreak

TextBreakIterator::ContentAnalysis TextUtil::contentAnalysis(const WordBoundaryDetection& wordBoundaryDetection)
{
return WTF::switchOn(wordBoundaryDetection, [](WordBoundaryDetectionNormal) {
// FIXME: Explicit static_cast to work around issue on libstdc++-10. Undo when upgrading GCC from 10 to 11.
return WTF::switchOn(static_cast<WordBoundaryDetectionType>(wordBoundaryDetection), [](WordBoundaryDetectionNormal) {
return TextBreakIterator::ContentAnalysis::Mechanical;
}, [](WordBoundaryDetectionManual) {
return TextBreakIterator::ContentAnalysis::Mechanical;
Expand Down
3 changes: 2 additions & 1 deletion Source/WebCore/rendering/RenderText.cpp
Expand Up @@ -1041,7 +1041,8 @@ TextBreakIterator::LineMode::Behavior mapLineBreakToIteratorMode(LineBreak lineB

TextBreakIterator::ContentAnalysis mapWordBoundaryDetectionToContentAnalysis(const WordBoundaryDetection& wordBoundaryDetection)
{
return WTF::switchOn(wordBoundaryDetection, [](WordBoundaryDetectionNormal) {
// FIXME: Explicit static_cast to work around issue on libstdc++-10. Undo when upgrading GCC from 10 to 11.
return WTF::switchOn(static_cast<WordBoundaryDetectionType>(wordBoundaryDetection), [](WordBoundaryDetectionNormal) {
return TextBreakIterator::ContentAnalysis::Mechanical;
}, [](WordBoundaryDetectionManual) {
return TextBreakIterator::ContentAnalysis::Mechanical;
Expand Down
5 changes: 4 additions & 1 deletion Source/WebCore/rendering/style/WordBoundaryDetection.h
Expand Up @@ -48,9 +48,12 @@ class WordBoundaryDetection : public std::variant<WordBoundaryDetectionNormal, W
bool operator==(const WordBoundaryDetection&) const = default;
};

typedef std::variant<WordBoundaryDetectionNormal, WordBoundaryDetectionManual, WordBoundaryDetectionAuto> WordBoundaryDetectionType;

inline WTF::TextStream& operator<<(TextStream& ts, WordBoundaryDetection wordBoundaryDetection)
{
WTF::switchOn(wordBoundaryDetection, [&ts](WordBoundaryDetectionNormal) {
// FIXME: Explicit static_cast to work around issue on libstdc++-10. Undo when upgrading GCC from 10 to 11.
WTF::switchOn(static_cast<WordBoundaryDetectionType>(wordBoundaryDetection), [&ts](WordBoundaryDetectionNormal) {
ts << "normal";
}, [&ts](WordBoundaryDetectionManual) {
ts << "manual";
Expand Down

0 comments on commit 6ff8c5f

Please sign in to comment.