Commit Graph

6 Commits

Author SHA1 Message Date
tony
157d8e23c8 [csharp codegen] Handle empty base_namespace option value to fix #34113 (#34137)
Fix for https://github.com/grpc/grpc/issues/34113 - setting C# option
base_namespace to an empty string results in inconsistent behavior

Allow the `base_namespace` option in the protocol buffers C# gRPC plugin
to be specified with an empty string to make sure the plugin has the
same behaviour as the protocol buffers compiler.
2023-08-29 14:24:52 +00:00
Jan Tattermusch
1002319736 [csharp] reintroduce base_namespace experimental option to C# (with a patch) (#33535)
Reintroduces patched version of https://github.com/grpc/grpc/pull/32636
(which was reverted in https://github.com/grpc/grpc/pull/32957).

Together with cl/542843305, the internal build should work fine.

Supersedes https://github.com/grpc/grpc/pull/33310 (since a patch is
also needed).

---------

Co-authored-by: tony <tony.newell@pobox.com>
2023-06-26 11:20:26 +02:00
AJ Heller
d63f8d4dcf Revert "[CSHARP] Add base_namespace experimental option to C# plugin" (#32957)
Reverts grpc/grpc#32636

```
src/compiler/csharp_generator_helpers.h:25:7: error: no member named 'compiler' in namespace ...
src/compiler/csharp_generator_helpers.h:25:25: error: no member named 'csharp' in namespace 'compiler' ...
```
2023-04-27 12:52:54 -07:00
tony
d534b4ad7a [CSHARP] Add base_namespace experimental option to C# plugin (#32636)
Added `base_namespace` experimental option to `grpc_csharp_plugin` as
this has been requested several times by
people not using `Grpc.Tools` to generate their code - see
https://github.com/grpc/grpc/issues/28663

Notes:
- it should not be used with `Grpc.Tools`. That has a different way of
handling duplicate proto file names in different directories. Using this
option will break those builds. It can only be used on the `protoc`
command line.
- it uses common code with the `base_namespace` option for C# in
`protoc`, which unfortunately has a slightly different name mangling
algorithm for converting proto file names to C# camel case names. This
only affects files with punctation or numbers in the name. This should
not matter unless you are expecting specific file names
- See
https://protobuf.dev/reference/csharp/csharp-generated/#compiler_options
for an explanation of this option
2023-04-27 08:48:32 -07:00
tony
83cdbfff8c [csharp proto plugin] Apply Obsolete attribute to deprecated services and methods in C# generated code (#32414)
Apply Obsolete attribute to deprecated services and methods in C#
generated code

Fix for https://github.com/grpc/grpc/issues/28597

- Deprecated support for enums and enum values is already fixed by
https://github.com/protocolbuffers/protobuf/pull/10520 but this is not
yet released. It is fixed in Protocol Buffers v22.0-rc1 but the gRPC
repo currently has 21.12 as the protocol buffers submodule.

- Deprecated support for messages and fields already exists in the
protocol buffers compiler.

The fix in this PR adds `Obsolete` attribute to classes and methods for
deprecated services and methods within services. e.g.
```
service Greeter {
  option deprecated=true; // service level deprecated
  // Sends a greeting
  rpc SayHello (HelloRequest) returns (HelloReply) {
    option deprecated=true; // method level deprecated
  }
}
```

I couldn't find any protocol buffers plugin tests to update. Tested
locally.
2023-04-26 11:25:22 -07:00
tony
25192afda1 [csharp] Initial C# codegen tests. (#32734)
Initial bazel tests for C# protoc and grpc_protoc_plugin.

This initial test just generated code from the proto file and compares
the generated code against expected files.

I've put the tests in `test/csharp/codegen` as that is similar to where
the C++ tests are placed, but they could be moved to
`src\csharp` if that is a better place.

Further tests can be added once the initial framework for the tests is
agreed.
2023-04-19 13:20:24 +02:00