Bug 1576703 - Update cbindgen. r=boris
authorEmilio Cobos Álvarez <emilio@crisal.io>
Mon, 26 Aug 2019 23:18:46 +0000
changeset 553730 6c3f50c6f6662291139bc292fb9dd77aa64331ee
parent 553729 c5c1ac80fd436e1c002b2ad25fb0a9529ebcdadd
child 553731 5389e4f8280dc79df253cd3dcc027dbb27783a3d
push id2165
push userffxbld-merge
push dateMon, 14 Oct 2019 16:30:58 +0000
treeherdermozilla-release@0eae18af659f [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersboris
bugs1576703
milestone70.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1576703 - Update cbindgen. r=boris This cleans up the pattern of "Use a private dtor so that the helper functions do the right thing" by enabling it everywhere using: https://github.com/eqrion/cbindgen/pull/377 It also caught some uninitialized value issues. I think they're mostly harmless since we zero-initialize our structs: https://searchfox.org/mozilla-central/rev/325c1a707819602feff736f129cb36055ba6d94f/servo/components/style/properties/gecko.mako.rs#632 And since we override the clip rect, which is the other bit of code that was failing to build with this change. Differential Revision: https://phabricator.services.mozilla.com/D43491
build/moz.configure/bindgen.configure
layout/style/FontFace.cpp
layout/style/FontFaceSet.cpp
layout/style/GeckoBindings.cpp
layout/style/nsStyleStruct.cpp
servo/components/style/values/computed/text.rs
servo/components/style/values/generics/effects.rs
servo/components/style/values/generics/grid.rs
servo/components/style/values/generics/svg.rs
servo/components/style/values/generics/transform.rs
servo/components/style/values/generics/url.rs
servo/components/style/values/specified/font.rs
servo/components/style/values/specified/list.rs
servo/components/style/values/specified/motion.rs
servo/components/style/values/specified/position.rs
servo/components/style/values/specified/text.rs
servo/ports/geckolib/cbindgen.toml
taskcluster/ci/fetch/toolchains.yml
taskcluster/ci/toolchain/cbindgen.yml
--- a/build/moz.configure/bindgen.configure
+++ b/build/moz.configure/bindgen.configure
@@ -10,17 +10,17 @@ cbindgen_is_needed = depends(build_proje
 option(env='CBINDGEN', nargs=1, when=cbindgen_is_needed,
        help='Path to cbindgen')
 
 
 @imports(_from='textwrap', _import='dedent')
 def check_cbindgen_version(cbindgen, fatal=False):
     log.debug("trying cbindgen: %s" % cbindgen)
 
-    cbindgen_min_version = Version('0.9.0')
+    cbindgen_min_version = Version('0.9.1')
 
     # cbindgen x.y.z
     version = Version(check_cmd_output(cbindgen, '--version').strip().split(" ")[1])
     log.debug("%s has version %s" % (cbindgen, version))
     if version >= cbindgen_min_version:
         return True
     if not fatal:
         return False
--- a/layout/style/FontFace.cpp
+++ b/layout/style/FontFace.cpp
@@ -624,17 +624,17 @@ Maybe<StyleComputedFontStretchRange> Fon
   StyleComputedFontStretchRange range;
   if (!Servo_FontFaceRule_GetFontStretch(GetData(), &range)) {
     return Nothing();
   }
   return Some(range);
 }
 
 Maybe<StyleComputedFontStyleDescriptor> FontFace::GetFontStyle() const {
-  StyleComputedFontStyleDescriptor descriptor;
+  auto descriptor = StyleComputedFontStyleDescriptor::Normal();
   if (!Servo_FontFaceRule_GetFontStyle(GetData(), &descriptor)) {
     return Nothing();
   }
   return Some(descriptor);
 }
 
 Maybe<StyleFontDisplay> FontFace::GetFontDisplay() const {
   StyleFontDisplay display;
--- a/layout/style/FontFaceSet.cpp
+++ b/layout/style/FontFaceSet.cpp
@@ -200,17 +200,17 @@ void FontFaceSet::RemoveDOMContentLoaded
                                          this, false);
   }
 }
 
 void FontFaceSet::ParseFontShorthandForMatching(
     const nsAString& aFont, RefPtr<SharedFontList>& aFamilyList,
     FontWeight& aWeight, FontStretch& aStretch, FontSlantStyle& aStyle,
     ErrorResult& aRv) {
-  StyleComputedFontStyleDescriptor style;
+  auto style = StyleComputedFontStyleDescriptor::Normal();
   float stretch;
   float weight;
 
   RefPtr<URLExtraData> url = ServoCSSParser::GetURLExtraData(mDocument);
   if (!ServoCSSParser::ParseFontShorthandForMatching(aFont, url, aFamilyList,
                                                      style, stretch, weight)) {
     aRv.Throw(NS_ERROR_DOM_SYNTAX_ERR);
     return;
--- a/layout/style/GeckoBindings.cpp
+++ b/layout/style/GeckoBindings.cpp
@@ -1147,17 +1147,19 @@ void Gecko_CopyImageValueFrom(nsStyleIma
   MOZ_ASSERT(aImage);
   MOZ_ASSERT(aOther);
 
   *aImage = *aOther;
 }
 
 void Gecko_InitializeImageCropRect(nsStyleImage* aImage) {
   MOZ_ASSERT(aImage);
-  aImage->SetCropRect(MakeUnique<nsStyleImage::CropRect>());
+  auto zero = StyleNumberOrPercentage::Number(0);
+  aImage->SetCropRect(MakeUnique<nsStyleImage::CropRect>(
+      nsStyleImage::CropRect{zero, zero, zero, zero}));
 }
 
 void Gecko_SetCursorArrayLength(nsStyleUI* aStyleUI, size_t aLen) {
   aStyleUI->mCursorImages.Clear();
   aStyleUI->mCursorImages.SetLength(aLen);
 }
 
 void Gecko_SetCursorImageValue(nsCursorImage* aCursor,
--- a/layout/style/nsStyleStruct.cpp
+++ b/layout/style/nsStyleStruct.cpp
@@ -537,16 +537,17 @@ nsChangeHint nsStyleOutline::CalcDiffere
 }
 
 // --------------------
 // nsStyleList
 //
 nsStyleList::nsStyleList(const Document& aDocument)
     : mListStylePosition(NS_STYLE_LIST_STYLE_POSITION_OUTSIDE),
       mQuotes(StyleQuotes::Auto()),
+      mImageRegion(StyleClipRectOrAuto::Auto()),
       mMozListReversed(StyleMozListReversed::False) {
   MOZ_COUNT_CTOR(nsStyleList);
   MOZ_ASSERT(NS_IsMainThread());
 
   mCounterStyle = nsGkAtoms::disc;
 }
 
 nsStyleList::~nsStyleList() { MOZ_COUNT_DTOR(nsStyleList); }
@@ -2693,16 +2694,19 @@ nsStyleDisplay::nsStyleDisplay(const Doc
       mTouchAction(StyleTouchAction_AUTO),
       mScrollBehavior(NS_STYLE_SCROLL_BEHAVIOR_AUTO),
       mOverscrollBehaviorX(StyleOverscrollBehavior::Auto),
       mOverscrollBehaviorY(StyleOverscrollBehavior::Auto),
       mOverflowAnchor(StyleOverflowAnchor::Auto),
       mScrollSnapType(
           {StyleScrollSnapAxis::Both, StyleScrollSnapStrictness::None}),
       mLineClamp(0),
+      mRotate(StyleRotate::None()),
+      mTranslate(StyleTranslate::None()),
+      mScale(StyleScale::None()),
       mBackfaceVisibility(NS_STYLE_BACKFACE_VISIBILITY_VISIBLE),
       mTransformStyle(NS_STYLE_TRANSFORM_STYLE_FLAT),
       mTransformBox(StyleGeometryBox::BorderBox),
       mOffsetPath(StyleOffsetPath::None()),
       mOffsetDistance(LengthPercentage::Zero()),
       mOffsetRotate{true, StyleAngle{0.0}},
       mOffsetAnchor(StylePositionOrAuto::Auto()),
       mTransformOrigin{LengthPercentage::FromPercentage(0.5),
--- a/servo/components/style/values/computed/text.rs
+++ b/servo/components/style/values/computed/text.rs
@@ -193,18 +193,16 @@ impl TextDecorationsInEffect {
         result.overline |= line.contains(TextDecorationLine::OVERLINE);
         result.line_through |= line.contains(TextDecorationLine::LINE_THROUGH);
 
         result
     }
 }
 
 /// Computed value for the text-emphasis-style property
-///
-/// cbindgen:derive-tagged-enum-copy-constructor=true
 #[derive(Clone, Debug, MallocSizeOf, PartialEq, ToCss, ToResolvedValue)]
 #[allow(missing_docs)]
 #[repr(C, u8)]
 pub enum TextEmphasisStyle {
     /// [ <fill> || <shape> ]
     Keyword {
         #[css(skip_if = "TextEmphasisFillMode::is_filled")]
         fill: TextEmphasisFillMode,
--- a/servo/components/style/values/generics/effects.rs
+++ b/servo/components/style/values/generics/effects.rs
@@ -29,18 +29,16 @@ pub struct GenericBoxShadow<Color, SizeL
     #[animation(constant)]
     #[css(represents_keyword)]
     pub inset: bool,
 }
 
 pub use self::GenericBoxShadow as BoxShadow;
 
 /// A generic value for a single `filter`.
-///
-/// cbindgen:derive-tagged-enum-copy-constructor=true
 #[cfg_attr(feature = "servo", derive(Deserialize, Serialize))]
 #[animation(no_bound(U))]
 #[derive(
     Clone,
     ComputeSquaredDistance,
     Debug,
     MallocSizeOf,
     PartialEq,
--- a/servo/components/style/values/generics/grid.rs
+++ b/servo/components/style/values/generics/grid.rs
@@ -180,18 +180,16 @@ impl Parse for GridLine<specified::Integ
         Ok(grid_line)
     }
 }
 
 /// A track breadth for explicit grid track sizing. It's generic solely to
 /// avoid re-implementing it for the computed type.
 ///
 /// <https://drafts.csswg.org/css-grid/#typedef-track-breadth>
-///
-/// cbindgen:derive-tagged-enum-copy-constructor=true
 #[derive(
     Animate,
     Clone,
     Debug,
     MallocSizeOf,
     PartialEq,
     SpecifiedValueInfo,
     ToComputedValue,
@@ -225,18 +223,16 @@ impl<L> TrackBreadth<L> {
         matches!(*self, TrackBreadth::Breadth(..))
     }
 }
 
 /// A `<track-size>` type for explicit grid track sizing. Like `<track-breadth>`, this is
 /// generic only to avoid code bloat. It only takes `<length-percentage>`
 ///
 /// <https://drafts.csswg.org/css-grid/#typedef-track-size>
-///
-/// cbindgen:derive-tagged-enum-copy-constructor=true
 #[derive(
     Clone,
     Debug,
     MallocSizeOf,
     PartialEq,
     SpecifiedValueInfo,
     ToComputedValue,
     ToResolvedValue,
@@ -489,18 +485,16 @@ impl<L: ToCss, I: ToCss> ToCss for Track
 
         dest.write_str(")")?;
 
         Ok(())
     }
 }
 
 /// Track list values. Can be <track-size> or <track-repeat>
-///
-/// cbindgen:derive-tagged-enum-copy-constructor=true
 #[derive(
     Animate,
     Clone,
     Debug,
     MallocSizeOf,
     PartialEq,
     SpecifiedValueInfo,
     ToComputedValue,
@@ -724,18 +718,16 @@ impl ToCss for LineNameList {
             }
         }
 
         Ok(())
     }
 }
 
 /// Variants for `<grid-template-rows> | <grid-template-columns>`
-///
-/// cbindgen:derive-tagged-enum-copy-constructor=true
 #[derive(
     Animate,
     Clone,
     Debug,
     MallocSizeOf,
     PartialEq,
     SpecifiedValueInfo,
     ToComputedValue,
--- a/servo/components/style/values/generics/svg.rs
+++ b/servo/components/style/values/generics/svg.rs
@@ -4,17 +4,16 @@
 
 //! Generic types for CSS values in SVG
 
 use crate::parser::{Parse, ParserContext};
 use cssparser::Parser;
 use style_traits::ParseError;
 
 /// The fallback of an SVG paint server value.
-/// cbindgen:derive-tagged-enum-copy-constructor=true
 #[derive(
     Animate,
     Clone,
     ComputeSquaredDistance,
     Debug,
     MallocSizeOf,
     PartialEq,
     Parse,
@@ -38,18 +37,16 @@ pub enum GenericSVGPaintFallback<C> {
     Color(C),
 }
 
 pub use self::GenericSVGPaintFallback as SVGPaintFallback;
 
 /// An SVG paint value
 ///
 /// <https://www.w3.org/TR/SVG2/painting.html#SpecifyingPaint>
-///
-/// cbindgen:derive-tagged-enum-copy-constructor=true
 #[animation(no_bound(Url))]
 #[derive(
     Animate,
     Clone,
     ComputeSquaredDistance,
     Debug,
     MallocSizeOf,
     PartialEq,
@@ -79,18 +76,16 @@ impl<C, U> Default for SVGPaint<C, U> {
         }
     }
 }
 
 /// An SVG paint value without the fallback.
 ///
 /// Whereas the spec only allows PaintServer to have a fallback, Gecko lets the
 /// context properties have a fallback as well.
-///
-/// cbindgen:derive-tagged-enum-copy-constructor=true
 #[animation(no_bound(U))]
 #[derive(
     Animate,
     Clone,
     ComputeSquaredDistance,
     Debug,
     MallocSizeOf,
     PartialEq,
--- a/servo/components/style/values/generics/transform.rs
+++ b/servo/components/style/values/generics/transform.rs
@@ -146,17 +146,16 @@ fn is_same<N: PartialEq>(x: &N, y: &N) -
     SpecifiedValueInfo,
     ToComputedValue,
     ToCss,
     ToResolvedValue,
     ToShmem,
 )]
 #[repr(C, u8)]
 /// A single operation in the list of a `transform` value
-/// cbindgen:derive-tagged-enum-copy-constructor=true
 pub enum GenericTransformOperation<Angle, Number, Length, Integer, LengthPercentage>
 where
     Angle: Zero,
     LengthPercentage: Zero,
     Number: PartialEq,
 {
     /// Represents a 2D 2x3 matrix.
     Matrix(GenericMatrix<Number>),
--- a/servo/components/style/values/generics/url.rs
+++ b/servo/components/style/values/generics/url.rs
@@ -1,17 +1,15 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
 
 //! Generic types for url properties.
 
 /// An image url or none, used for example in list-style-image
-///
-/// cbindgen:derive-tagged-enum-copy-constructor=true
 #[derive(
     Animate,
     Clone,
     ComputeSquaredDistance,
     Debug,
     MallocSizeOf,
     PartialEq,
     Parse,
--- a/servo/components/style/values/specified/font.rs
+++ b/servo/components/style/values/specified/font.rs
@@ -1086,18 +1086,16 @@ bitflags! {
     }
 }
 
 #[derive(
     Clone, Debug, MallocSizeOf, PartialEq, SpecifiedValueInfo, ToCss, ToResolvedValue, ToShmem,
 )]
 #[repr(C, u8)]
 /// Set of variant alternates
-///
-/// cbindgen:derive-tagged-enum-copy-constructor=true
 pub enum VariantAlternates {
     /// Enables display of stylistic alternates
     #[css(function)]
     Stylistic(CustomIdent),
     /// Enables display with stylistic sets
     #[css(comma, function)]
     Styleset(#[css(iterable)] crate::OwnedSlice<CustomIdent>),
     /// Enables display of specific character variants
--- a/servo/components/style/values/specified/list.rs
+++ b/servo/components/style/values/specified/list.rs
@@ -121,18 +121,16 @@ pub struct QuotePair {
 pub struct QuoteList(
     #[css(iterable, if_empty = "none")]
     #[ignore_malloc_size_of = "Arc"]
     pub crate::ArcSlice<QuotePair>,
 );
 
 /// Specified and computed `quotes` property: `auto`, `none`, or a list
 /// of characters.
-///
-/// cbindgen:derive-tagged-enum-copy-constructor=true
 #[derive(
     Clone,
     Debug,
     MallocSizeOf,
     PartialEq,
     SpecifiedValueInfo,
     ToComputedValue,
     ToCss,
--- a/servo/components/style/values/specified/motion.rs
+++ b/servo/components/style/values/specified/motion.rs
@@ -10,17 +10,16 @@ use crate::values::computed::{Context, T
 use crate::values::specified::{Angle, SVGPathData};
 use crate::Zero;
 use cssparser::Parser;
 use style_traits::{ParseError, StyleParseErrorKind};
 
 /// The offset-path value.
 ///
 /// https://drafts.fxtf.org/motion-1/#offset-path-property
-/// cbindgen:derive-tagged-enum-copy-constructor=true
 #[derive(
     Animate,
     Clone,
     ComputeSquaredDistance,
     Debug,
     MallocSizeOf,
     PartialEq,
     SpecifiedValueInfo,
--- a/servo/components/style/values/specified/position.rs
+++ b/servo/components/style/values/specified/position.rs
@@ -702,18 +702,16 @@ fn is_name_code_point(c: char) -> bool {
         c == '-'
 }
 
 /// This property specifies named grid areas.
 ///
 /// The syntax of this property also provides a visualization of the structure
 /// of the grid, making the overall layout of the grid container easier to
 /// understand.
-///
-/// cbindgen:derive-tagged-enum-copy-constructor=true
 #[repr(C, u8)]
 #[derive(
     Clone,
     Debug,
     MallocSizeOf,
     Parse,
     PartialEq,
     SpecifiedValueInfo,
--- a/servo/components/style/values/specified/text.rs
+++ b/servo/components/style/values/specified/text.rs
@@ -127,17 +127,16 @@ impl ToComputedValue for LineHeight {
             GenericLineHeight::Length(ref length) => {
                 GenericLineHeight::Length(NoCalcLength::from_computed_value(&length.0).into())
             },
         }
     }
 }
 
 /// A generic value for the `text-overflow` property.
-/// cbindgen:derive-tagged-enum-copy-constructor=true
 #[derive(Clone, Debug, Eq, MallocSizeOf, PartialEq, SpecifiedValueInfo, ToCss, ToShmem)]
 #[repr(C, u8)]
 pub enum TextOverflowSide {
     /// Clip inline content.
     Clip,
     /// Render ellipsis to represent clipped inline content.
     Ellipsis,
     /// Render a given string to represent clipped inline content.
--- a/servo/ports/geckolib/cbindgen.toml
+++ b/servo/ports/geckolib/cbindgen.toml
@@ -43,16 +43,18 @@ derive_neq = true
 
 [macro_expansion]
 bitflags = true
 
 [enum]
 derive_helper_methods = true
 derive_const_casts = true
 derive_tagged_enum_destructor = true
+derive_tagged_enum_copy_constructor = true
+private_default_tagged_enum_constructor = true
 cast_assert_name = "MOZ_ASSERT"
 
 [export]
 prefix = "Style"
 exclude = [
   "NS_LogCtor",
   "NS_LogDtor",
 ]
@@ -326,25 +328,16 @@ renaming_overrides_prefixing = true
   static inline StyleRestyleHint ForAnimations();
 """
 
 "TextTransform" = """
   static inline StyleTextTransform None();
   inline bool IsNone() const;
 """
 
-"Quotes" = """
- private:
-  // Private default constructor without initialization so that the helper
-  // constructor functions still work as expected. They take care of
-  // initializing the fields properly.
-  StyleQuotes() {}
- public:
-"""
-
 # TODO(emilio): Add hooks to cbindgen to be able to generate MOZ_MUST_USE_TYPE
 # or MOZ_MUST_USE on the functions.
 "Owned" = """
   UniquePtr<GeckoType> Consume() {
     UniquePtr<GeckoType> ret(ptr);
     ptr = nullptr;
     return ret;
   }
@@ -514,57 +507,22 @@ renaming_overrides_prefixing = true
 """
 
 "GenericTransform" = """
   inline Span<const T> Operations() const;
   inline bool IsNone() const;
   bool HasPercent() const;
 """
 
-"GenericTransformOperation" = """
- private:
-  // Private default constructor without initialization so that the helper
-  // constructor functions still work as expected. They take care of
-  // initializing the fields properly.
-  StyleGenericTransformOperation() {}
- public:
-"""
-
-"GenericUrlOrNone" = """
- private:
-  // Private default constructor without initialization so that the helper
-  // constructor functions still work as expected. They take care of
-  // initializing the fields properly.
-  StyleGenericUrlOrNone() {}
- public:
-"""
 "Angle" = """
   inline static StyleAngle Zero();
   inline float ToDegrees() const;
   inline double ToRadians() const;
 """
 
-"OffsetPath" = """
- private:
-  // Private default constructor without initialization so that the helper
-  // constructor functions still work as expected. They take care of
-  // initializing the fields properly.
-  StyleOffsetPath() {}
- public:
-"""
-
-"TextOverflowSide" = """
- private:
-  // Private default constructor without initialization so that the helper
-  // constructor functions still work as expected. They take care of
-  // initializing the fields properly.
-  StyleTextOverflowSide() {}
- public:
-"""
-
 "TextOverflow" = """
   StyleTextOverflow()
     : first(StyleTextOverflowSide::Clip()),
       second(StyleTextOverflowSide::Clip()),
       sides_are_logical(true) {}
 """
 
 "UrlExtraData" = """
@@ -613,101 +571,38 @@ renaming_overrides_prefixing = true
   already_AddRefed<nsIURI> ResolveLocalRef(const nsIContent* aContent) const;
   imgRequestProxy* LoadImage(mozilla::dom::Document&);
 """
 
 "GenericGradient" = """
   bool IsOpaque() const;
 """
 
-"GridTemplateAreas" = """
- private:
-  // Private default constructor without initialization so that the helper
-  // constructor functions still work as expected. They take care of
-  // initializing the fields properly.
-  StyleGridTemplateAreas() {}
- public:
-"""
-
 "GenericGridLine" = """
   // Returns the `auto` value.
   inline StyleGenericGridLine();
   inline bool IsAuto() const;
   // The line name, or nsGkAtoms::_empty if not present.
   inline nsAtom* LineName() const;
 """
 
 "GenericTrackBreadth" = """
- private:
-  // Private default constructor without initialization so that the helper
-  // constructor functions still work as expected. They take care of
-  // initializing the fields properly.
-  StyleGenericTrackBreadth() {}
- public:
   inline bool HasPercent() const;
 """
 
 "GenericTrackSize" = """
- private:
-  // Private default constructor without initialization so that the helper
-  // constructor functions still work as expected. They take care of
-  // initializing the fields properly.
-  StyleGenericTrackSize() {}
- public:
   // Implemented in nsGridContainerFrame.cpp
   inline const StyleGenericTrackBreadth<L>& GetMin() const;
   inline const StyleGenericTrackBreadth<L>& GetMax() const;
 """
 
-"GenericSVGPaintKind" = """
- private:
-  // Private default constructor without initialization so that the helper
-  // constructor functions still work as expected. They take care of
-  // initializing the fields properly.
-  StyleGenericSVGPaintKind() {}
- public:
-"""
-
-"GenericSVGPaintFallback" = """
- private:
-  // Private default constructor without initialization so that the helper
-  // constructor functions still work as expected. They take care of
-  // initializing the fields properly.
-  StyleGenericSVGPaintFallback() {}
- public:
-"""
-
 "GenericGridTemplateComponent" = """
- private:
-  // Private default constructor without initialization so that the helper
-  // constructor functions still work as expected. They take care of
-  // initializing the fields properly.
-  StyleGenericGridTemplateComponent() {}
- public:
   inline Maybe<size_t> RepeatAutoIndex() const;
   inline const StyleGenericTrackRepeat<L, I>* GetRepeatAutoValue() const;
   inline bool HasRepeatAuto() const;
   inline Span<const StyleOwnedSlice<StyleCustomIdent>> LineNameLists(bool aIsSubgrid) const;
   inline Span<const StyleGenericTrackListValue<L, I>> TrackListValues() const;
 """
 
-"TextEmphasisStyle" = """
- private:
-  // Private default constructor without initialization so that the helper
-  // constructor functions still work as expected. They take care of
-  // initializing the fields properly.
-  StyleTextEmphasisStyle() {}
- public:
-"""
-
-"VariantAlternates" = """
- private:
-  // Private default constructor without initialization so that the helper
-  // constructor functions still work as expected. They take care of
-  // initializing the fields properly.
-  StyleVariantAlternates() {}
- public:
-"""
-
 "GenericClipRect" = """
   // Get the layout rect, replacing auto right / bottom values for aAutoSize.
   inline nsRect ToLayoutRect(nscoord aAutoSize = NS_MAXSIZE) const;
 """
--- a/taskcluster/ci/fetch/toolchains.yml
+++ b/taskcluster/ci/fetch/toolchains.yml
@@ -251,22 +251,22 @@ wine-3.0.3:
         type: static-url
         url: http://dl.winehq.org/wine/source/3.0/wine-3.0.3.tar.xz
         sha256: eb645999ea6f6455a5275bf267e19a32497c8f5aac818ea40afe7c8c396a4da1
         size: 19735412
         gpg-signature:
             sig-url: "{url}.sign"
             key-path: build/unix/build-gcc/DA23579A74D4AD9AF9D3F945CEFAC8EAAF17519D.key
 
-cbindgen-0.9.0:
+cbindgen-0.9.1:
     description: cbindgen source code
     fetch:
         type: git
         repo: https://github.com/eqrion/cbindgen
-        revision: e19526e00b3fe6921b881682147a1fe5d6b64124
+        revision: 8e4db4c17fbdc0cfa9b98cfe9d47ca6263858def
 
 cctools-port:
     description: cctools-port source code
     fetch:
         type: git
         repo: https://github.com/tpoechtrager/cctools-port
         revision: 3f979bbcd7ee29d79fb93f829edf3d1d16441147
 
--- a/taskcluster/ci/toolchain/cbindgen.yml
+++ b/taskcluster/ci/toolchain/cbindgen.yml
@@ -9,17 +9,17 @@ job-defaults:
         max-run-time: 3600
     run:
         script: build-cbindgen.sh
         toolchain-artifact: public/build/cbindgen.tar.xz
     fetches:
         fetch:
             # If you update this, make sure to update the minimum version in
             # build/moz.configure/bindgen.configure as well.
-            - cbindgen-0.9.0
+            - cbindgen-0.9.1
 
 linux64-cbindgen:
     treeherder:
         symbol: TL(cbindgen)
     worker:
         max-run-time: 1800
     run:
         arguments: ['x86_64-unknown-linux-gnu']