RFR: 8086027: Multiple STATIC_ASSERTs at class scope doesn't work

Bengt Rutisson bengt.rutisson at oracle.com
Tue Jun 9 08:48:05 UTC 2015

Hi Kim,

On 2015-06-09 07:51, Kim Barrett wrote:
> Third time's the charm?


> Please review this change to the STATIC_ASSERT macro, to allow
> multiple assertions in the same class scope.
> It seems we do need to make the typedef names used in the expansion
> unique per scope; see CR for details.  We accomplish this with
> preprocessor token pasting with __LINE__ (done correctly, unlike in
> the change for JDK-8067306).
> Apparently my testing for JDK-8073994 missed the class scope case.
> With this change set I'm adding tests for all three of namespace,
> class, and function scope.
> As part of this, I'm also adding PASTE_TOKENS(x, y) utility macro.
> I'm willing to entertain alternative naming suggestions, though hoping
> to avoid a bikeshed discussion.

I don't have any better suggestions for the names. I would be fine with 
XSTRCAT as suggested by David Holmes. Or maybe just XCAT since we are 
dealing with tokens and not strings.

> CR:
> https://bugs.openjdk.java.net/browse/JDK-8086027
> Webrev:
> http://cr.openjdk.java.net/~kbarrett/8086027/webrev.00/

This looks good to me. One question about the test in debug.cpp:

  792 // class scope
  793 struct TestMultipleStaticAssertFormsInClassScope {

I know struct and class are pretty much the same, but wouldn't it be 
more consistent to use class instead of struct here since the comment 
(and I think the spec) talk about class scope?

Either way is fine with me and in any case you don't need to send out 
another webrev.


> Testing:

More information about the hotspot-dev mailing list