| diff --git a/java/core/BUILD.bazel b/java/core/BUILD.bazel |
| index 2a38c7475..e7736a675 100644 |
| --- a/java/core/BUILD.bazel |
| +++ b/java/core/BUILD.bazel |
| @@ -186,10 +186,7 @@ protobuf_java_export( |
| protobuf_java_library( |
| name = "lite_runtime_only", |
| srcs = LITE_SRCS, |
| - visibility = [ |
| - "//java/kotlin:__pkg__", |
| - "//java/lite:__pkg__", |
| - ], |
| + visibility = ["//visibility:public"], |
| ) |
| |
| proto_library( |
| diff --git a/upb/BUILD b/upb/BUILD |
| index 426bf9124..fd17ac96c 100644 |
| --- a/upb/BUILD |
| +++ b/upb/BUILD |
| @@ -115,6 +115,26 @@ cc_library( |
| visibility = ["//hpb/bazel:__pkg__"], |
| ) |
| |
| +# Aliases ###################################################################### |
| + |
| +alias( |
| + name = "base", |
| + actual = "//upb/base", |
| + visibility = ["//visibility:public"], |
| +) |
| + |
| +alias( |
| + name = "mem", |
| + actual = "//upb/mem", |
| + visibility = ["//visibility:public"], |
| +) |
| + |
| +alias( |
| + name = "message", |
| + actual = "//upb/message", |
| + visibility = ["//visibility:public"], |
| +) |
| + |
| # Amalgamation ################################################################# |
| |
| upb_amalgamation( |
| diff --git a/src/google/protobuf/compiler/java/full/message.cc b/src/google/protobuf/compiler/java/full/message.cc |
| index dd290f98c..1f100c568 100644 |
| --- a/src/google/protobuf/compiler/java/full/message.cc |
| +++ b/src/google/protobuf/compiler/java/full/message.cc |
| @@ -842,7 +842,25 @@ void ImmutableMessageGenerator::GenerateIsInitialized(io::Printer* printer) { |
| // Memoizes whether the protocol buffer is fully initialized (has all |
| // required fields). -1 means not yet computed. 0 means false and 1 means |
| // true. |
| - printer->Print("private byte memoizedIsInitialized = -1;\n"); |
| + |
| + // If the message transitively has no required fields or extensions, |
| + // isInitialized() is always true. |
| + if (!HasRequiredFields(descriptor_)) { |
| + printer->Print( |
| + "/**\n" |
| + " * @deprecated This always returns true for this type as it \n" |
| + " * does not transitively contain any required fields.\n" |
| + " */\n" |
| + "@java.lang.Deprecated\n" |
| + "@java.lang.Override\n" |
| + "public final boolean isInitialized() {\n" |
| + " return true;\n" |
| + "}\n" |
| + "\n"); |
| + return; |
| + } |
| + |
| + printer->Print("private transient byte memoizedIsInitialized = -1;\n"); |
| printer->Print( |
| "@java.lang.Override\n" |
| "public final boolean isInitialized() {\n"); |