[webkit-dev] PSA: COMPILE_ASSERT_MATCHING_ENUM is a bad idea

Carlos Garcia Campos carlosgc at webkit.org
Tue Jan 28 23:28:39 PST 2014


El mar, 28-01-2014 a las 14:32 -0800, Anders Carlsson escribió:
> Hi floks!
> 
> I noticed that both the EFL port and GTK+ port use a COMPILE_ASSERT_MATCHING_ENUM macro to make sure that WebCore enum values map to API enum values correctly, for example:
> 
> COMPILE_ASSERT_MATCHING_ENUM(WEBKIT_WEB_NAVIGATION_REASON_LINK_CLICKED, NavigationTypeLinkClicked);

Yes, we preferred that way to keep the code simpler and avoid long
switches.

> This means that we can’t add new enums declarations (unless they’re added at the end) without breaking the build.

That's right, it's also true that most of the times enums are extended
adding new entries at the end.

> Instead of doing this (and then just blindly casting between the API layer and WebCore enum types), use conversion functions, like this (taken from WebKit2):
> 
> > inline WebCore::PageVisibilityState toPageVisibilityState(WKPageVisibilityState wkPageVisibilityState)
> > {
> >     switch (wkPageVisibilityState) {
> >     case kWKPageVisibilityStateVisible:
> >         return WebCore::PageVisibilityStateVisible;
> >     case kWKPageVisibilityStateHidden:
> >         return WebCore::PageVisibilityStateHidden;
> >     case kWKPageVisibilityStatePrerender:
> >         return WebCore::PageVisibilityStatePrerender;
> >     }
> > 
> >     ASSERT_NOT_REACHED();
> >     return WebCore::PageVisibilityStateVisible;
> > }
> 
> I plan to audit the Mac and Windows ports and look for places where we cast between API enum types and WebCore enum types, and I filed 
> 
> https://bugs.webkit.org/show_bug.cgi?id=127800 WebKitGTK+ should stop using COMPILE_ASSERT_MATCHING_ENUM macros
> https://bugs.webkit.org/show_bug.cgi?id=127801 EFL port should stop using COMPILE_ASSERT_MATCHING_ENUM macros
> 
> for the Mac and EFL ports respectively. I’m happy to answer any questions about this.

Ok, let's fix this sooner rather than later, then.

> - Anders
> 
> _______________________________________________
> webkit-dev mailing list
> webkit-dev at lists.webkit.org
> https://lists.webkit.org/mailman/listinfo/webkit-dev
> 

-- 
Carlos Garcia Campos
http://pgp.rediris.es:11371/pks/lookup?op=get&search=0xF3D322D0EC4582C3




More information about the webkit-dev mailing list