This patch fixes a compilation bug introduced in 821b0732f2.
When the `constinit` keyword is available (such as in C++20), putting the `alignas` attribute after `ABSL_CONST_INIT` is an error:
```
ERROR: /home/widders/.cache/bazel/_bazel_widders/25f0d335ca0e01a2fd74c60e90175e8f/external/com_google_protobuf/src/google/protobuf/compiler/java/BUILD.bazel:44:11: Compiling src/google/protobuf/compiler/java/generator_factory.cc failed: (Exit 1): clang failed: error executing command /usr/lib/llvm-16/bin/clang -U_FORTIFY_SOURCE -fstack-protector -Wall -Wthread-safety -Wself-assign -Wunused-but-set-parameter -Wno-free-nonheap-object -fcolor-diagnostics -fno-omit-frame-pointer -g0 ... (remaining 64 arguments skipped)
Use --sandbox_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging
In file included from external/com_google_protobuf/src/google/protobuf/compiler/java/generator_factory.cc:35:
In file included from bazel-out/k8-opt-exec-2B5CBBC6/bin/external/com_google_protobuf/src/google/protobuf/compiler/java/_virtual_includes/java/google/protobuf/compiler/java/context.h:38:
In file included from bazel-out/k8-opt-exec-2B5CBBC6/bin/external/com_google_protobuf/src/google/protobuf/compiler/java/_virtual_includes/names_internal/google/protobuf/compiler/java/helpers.h:45:
In file included from bazel-out/k8-opt-exec-2B5CBBC6/bin/external/com_google_protobuf/src/google/protobuf/_virtual_includes/protobuf_nowkt/google/protobuf/descriptor.pb.h:25:
In file included from bazel-out/k8-opt-exec-2B5CBBC6/bin/external/com_google_protobuf/src/google/protobuf/_virtual_includes/protobuf_lite/google/protobuf/arena.h:53:
bazel-out/k8-opt-exec-2B5CBBC6/bin/external/com_google_protobuf/src/google/protobuf/_virtual_includes/protobuf_lite/google/protobuf/arena_impl.h:584:19: error: an attribute list cannot appear here
ABSL_CONST_INIT alignas(
^~~~~~~~
1 error generated.
```
Therefore, it should be ordered as
1. always attribute-like (`alignas`)
2. sometimes attributes (`ABSL_CONST_INIT`, which may be a lifetime specifier or an attribute)
3. lifetime specifiers (`static`)
4. type etc.
Where it currently is it may be in the midst of lifetime specifiers, and if it is moved to the right it syntactically applies to the type rather than the whole declaration which is also invalid.
If this ordering could not be resolved for all cases it could also be moved to the end, after the name being declared, but we don't need to do that here.
Closes#11248
COPYBARA_INTEGRATE_REVIEW=https://github.com/protocolbuffers/protobuf/pull/11248 from mumbleskates:alignas-fix 496af774f8
PiperOrigin-RevId: 495739359
- Update Skip() to reflect the actual behavior when skipping to / beyond EOS
- Move a paragraph for BackUp() that was wrongly added to ZeroCopyInputStream insteaf of ZeroCopyOutputStream
PiperOrigin-RevId: 495682331
This is out of our public support matrix (https://github.com/google/oss-policies-info) and was only left around for technical reasons that no longer exist.
PiperOrigin-RevId: 495600566
This bumps us to gcc 6 (rather than 4.8), which fully supports C++14, and migrates the Python tests to our Bazel-based system. C#, PHP, and Ruby will remain on CMake + alternate build system for now.
PiperOrigin-RevId: 495501807
This CL kicks any definition longer than three or so lines out of the class
body and defines them out of line. The number of private definitions at the head of the class was getting completely out of control.
Ideally we would not kick Printer::Sub out, since its API is important,
but there's no way to do this while also moving ValueImpl out of the class,
which was taking on a whole lot of space.
Today I learned that an out-of-line template definition can have multiple template <> declarations, which is necessary to be able to utter the signature of those symbols out of line.
PiperOrigin-RevId: 495030857