Commit graph

2322 commits

Author SHA1 Message Date
Jon Skeet
94878b3080 Merge pull request #566 from jskeet/csharp-reflection
Improve C# reflection support
2015-07-10 09:08:44 +01:00
Jan Tattermusch
db552c9297 Merge pull request #577 from jskeet/csharp-fixup
Fix-ups suggested in PR #560
2015-07-09 12:25:04 -07:00
Jon Skeet
0da4a89c97 Knock-on effects of moving GetSampleMessage. 2015-07-09 08:26:07 +01:00
Jon Skeet
14f2222a50 Lots more tests for FieldCodec, MapField, RepeatedField
... and some implementation changes to go with them.
2015-07-09 08:26:07 +01:00
Jon Skeet
af259b77bf Fix descriptor reflection in various ways
- The protos are no longer publicly exposed at all
- Oneof detection now works (as we default to -1, not 0)
- OneofDescriptor exposes the fields in the oneof
- Removed unnecessary code for replacing protos - remnant of extensions
- There's now just the non-generic form of IDescriptor
2015-07-09 08:26:06 +01:00
Jon Skeet
5350822b0a Regenerated code due to previous commit.
Note that now we need a proto3 version of addressbook.proto. This may affect other platforms, and could do with an overhaul to follow proto3 conventions anyway (e.g. repeated field names). Will need to think about that carefully before merging into master. Raised issue #565 for this.
2015-07-09 08:26:05 +01:00
Jon Skeet
493e3db985 Codegen changes to support descriptor runtime changes
- Add a partial method called by all constructors
- Generate internal classes for descriptor.proto (only)
- Forbid proto2 descriptors except for descriptor.proto
2015-07-09 08:26:04 +01:00
Jon Skeet
462d569ec0 Changes to generated code due to previous commit. 2015-07-09 08:24:50 +01:00
Jon Skeet
78ea98f56f Implement reflection properly for fields.
- FieldAccessorTable is now non-generic
- We don't have a static field per message type in the umbrella class. (Message descriptors are accessed via the file descriptor.)
- Removed the "descriptor assigner" complication from the descriptor fixup; without extensions, we don't need it
- MapField implements IDictionary (more tests would be good...)
- RepeatedField implements IList (more tests would be good)
- Use expression trees to build accessors. (Will need to test this on various platforms... probably need a fallback strategy just using reflection directly.)
- Added FieldDescriptor.IsMap
- Added tests for reflection with generated messages

Changes to generated code coming in next commit.
2015-07-09 08:24:49 +01:00
Jon Skeet
3805b43009 Merge branch 'csharp-remove-extensions' into csharp-fixup 2015-07-09 08:24:25 +01:00
Jon Skeet
3cce11ce1c Minor fix-ups as suggested in PR #560.
- Added new line at the end of SampleEnum
- Moved GeneratedMessageTest.GetSampleMessage to a new class, SampleMessages, and renamed it to CreateFullTestAllTypes.
2015-07-09 08:12:44 +01:00
Jon Skeet
a249bbc9e6 Merge pull request #561 from jskeet/csharp-copyright
Fix C# copyright statements
2015-07-09 07:54:10 +01:00
Jon Skeet
4ae9b6c0d1 Merge pull request #560 from jskeet/csharp-repeated
Large changes to repeated field handling
2015-07-09 07:53:04 +01:00
Jon Skeet
38d8d3948a Remove unused code in C# codegen 2015-06-30 18:43:57 +01:00
Jon Skeet
ee835a3fe4 Fix copyright lines for all C# code.
Everything should now be consistent - the only difference between files is the year (aside from generated files).

Fixes issue #531.
2015-06-30 17:22:26 +01:00
Jon Skeet
f34d37a3d4 Tidying up and extra tests.
This is mostly just making things internal instead of public, removing and reordering a bunch of code in CodedInputStream/CodedOutputStream, and generally tidying up.
2015-06-30 13:20:31 +01:00
Jon Skeet
b9d1d3891f Tests changed enough to build 2015-06-30 13:20:30 +01:00
Jon Skeet
f2a27cc2c7 First pass (not yet compiling) at removing all the array handling code from Coded*Stream.
Prod code works, but some tests are broken. Obviously those need fixing, then more tests,
and review benchmarks.
2015-06-30 13:20:30 +01:00
Jon Skeet
241e17ba78 Merge pull request #550 from jskeet/issue307
Fix for doubly-nested types - issue #307.
2015-06-29 20:43:26 +01:00
Jon Skeet
8d83f8d13e Fix for doubly-nested types - issue #307.
No specific test case - if the generated code compiles, the issue is fixed :)
2015-06-29 09:27:54 +01:00
Jon Skeet
b08b6bf62e Merge pull request #544 from jskeet/csharp-cleanup
Clean up C# code
2015-06-28 21:53:16 +01:00
Jon Skeet
6b01539dfc Merge pull request #543 from jskeet/proto3-map
Proto3 map support for C#
2015-06-26 20:47:35 +01:00
Jon Skeet
fb77cc9d9f More cleanup, based around searches for "Google.ProtocolBuffers"
- Remove some old proto2-based C#-only messages
- Remove the "build" directory which only contained out-of-date files
- Remove the csharp_namespace option from proto2 messages
- Change "Google.ProtocolBuffers" to "Google.Protobuf" in other messages
2015-06-26 20:13:07 +01:00
Jon Skeet
aa5104143c Remove a lot of code which wasn't needed any more. 2015-06-26 20:13:06 +01:00
Jon Skeet
e75a10d8ff Fix or delete old projects.
ProtoDump isn't currently useful, but will be when ToString emits JSON: fixed.
ProtoBench: deleted; we should reinstate when there's a common proto3 benchmark.
ProtoMunge: delete; not useful enough to merit fixing up.

Removed the [TestFixture] from ByteStringTest as Travis uses a recent enough version of NUnit.
2015-06-26 20:13:05 +01:00
Jon Skeet
286edc0fc2 Tests for FieldCodec, along with a fix. 2015-06-26 20:11:34 +01:00
Jon Skeet
e6fc9778f5 Generated code changes for previous commit. 2015-06-26 10:32:50 +01:00
Jon Skeet
c12833104f Tweaks and more tests for maps
- Change the default message hash code to 1 to be consistent with other code
- Change the empty list/map hash code to 0 as "empty map" is equivalent to "no map"
- Removed map fields from unittest_proto3.proto
- Created map_unittest_proto3.proto which is like map_unittest.proto but proto3-only
- Fixed factory methods in FieldCodec highlighted by using all field types :)
- Added tests for map serialization:
  - Extra fields within entries
  - Entries with value then key
  - Non-contiguous entries for the same map
  - Multiple entries for the same key

Changes to generated code coming in next commit
2015-06-26 10:32:23 +01:00
Jon Skeet
c06226354d Make map test keys even more different to avoid odd hash collisions 2015-06-25 13:45:53 +01:00
Jon Skeet
3e7d70cb69 Generated code changes due to map changes.
(Primarily this is starting the hash code of messages at a non-zero value...)
2015-06-25 12:08:55 +01:00
Jon Skeet
df44ae4413 More map tests, and various production code improvements.
Generated code in next commit.
2015-06-25 12:08:18 +01:00
Jon Skeet
68a4ee267f Merge pull request #534 from jskeet/proto3-freeze
Implement Freeze in C# protos
2015-06-25 10:03:48 +01:00
Jon Skeet
e36e601a39 Generated map code. 2015-06-25 09:39:29 +01:00
Jon Skeet
0d684d3420 First pass at map support.
More tests required. Generated code in next commit.
2015-06-25 09:39:28 +01:00
Jon Skeet
0698aa9737 Get the Mono build script working again.
The solution as a whole doesn't build yet - we probably want to remove
ProtoDump and ProtoMunge entirely, and ProtoBench should use Jan's new
benchmarks for parity with Java.

The version of NUnit on my machine, packaged with Mono 3.12.1, is
only NUnit 2.4.2, which is extremely old - it still requires an explicit
[TestFixture] attribute on test fixtures. I've added one just for ByteStringTest
for the moment so that we can see some tests passing in Travis, but as part of
a separate PR we should work on making sure we're using a recent NUnit version.
(It may already be doing so, but we can check that once it's working and merged.)
2015-06-25 08:59:35 +01:00
Jon Skeet
d487c322de Regenerated descriptor C++ code 2015-06-25 08:22:56 +01:00
Jon Skeet
322ec53161 Revert the change to wire_format.h.
It seems too much code relies on the broken behaviour. See issue #493.
Instead, we reimplement MakeTag just for C#, temporarily.
2015-06-24 17:56:22 +01:00
Jon Skeet
bfee2dfe13 Implement freezing for messages and repeated fields.
Fixes issue #523.
2015-06-24 17:56:22 +01:00
Jon Skeet
94071b54d2 Merge pull request #536 from jtattermusch/fix_appveyor
Integrate changes from upstream/master
2015-06-24 17:42:07 +01:00
Jan Tattermusch
fbd735c5d7 Merge remote-tracking branch 'upstream/master' into fix_appveyor 2015-06-24 09:00:09 -07:00
Jan Tattermusch
659a43b593 Merge pull request #532 from jskeet/proto3-clone
Implement Clone.
2015-06-23 12:09:21 -07:00
Jon Skeet
785e13e3c0 Generated code changes from previous commit. 2015-06-23 20:05:04 +01:00
Jon Skeet
8c896b259e Implement requested changes for IMessage<T>
1) New line at end of file
2) Make IMessage<T> itself extend IEquatable<T> and IDeepCloneable<T>
2015-06-23 20:04:39 +01:00
Joshua Haberman
242fdef65a Merge pull request #530 from haberman/updateupb
Update upb to fix two bugs in the Ruby library.
2015-06-23 11:31:02 -07:00
Jon Skeet
6c1fe6ea3e Implement Clone.
Fixes issue #527.
2015-06-23 12:42:20 +01:00
Josh Haberman
fb8ed707a2 Update upb to fix two bugs in the Ruby library.
Fixes:
  https://github.com/google/protobuf/issues/502
  https://github.com/google/protobuf/issues/425
2015-06-22 17:23:55 -07:00
Feng Xiao
d0eb7786a9 Fix appveyor tests. 2015-06-22 15:09:52 -07:00
Paul Yang
d3d66d7976 Merge pull request #503 from thomasvl/add_nonnill_markup
Add nonnull/nullable/null_resettable markup to ObjC library.
2015-06-19 15:58:31 -07:00
Jan Tattermusch
45b70328f2 Merge pull request #515 from jskeet/proto3-only
Proto3 experimental C# fork
2015-06-19 12:59:07 -07:00
Jon Skeet
50a3a809e8 Merge remote-tracking branch 'upstream/master' into proto3-only 2015-06-19 17:35:01 +01:00