Commit Graph

562 Commits

Author SHA1 Message Date
Adam Cozzette
4426cb5733
Merge pull request #5172 from shields/smear-comments
Smear comments
2018-09-24 13:52:52 -07:00
Sydney Acksman
54176b26a9 C# Proto2 feature : Field presence and default values (#4642)
* Compiler changes

* Generated code changes

* Library changes

* Compiler style changes

* Generated style changes

* Fix Windows build errors

* Implement changes from review

* Reintroduce proto2 check

* Compiler changes (required handling review)

* Generated code changes (required handling review)

* Library changes (required handling review

* Field presence rewrite (compiler changes)

* Field presence rewrite (generated code changes)

* Compiler comment

* IFieldAccessor.HasValue library implementation

* Remove Clear methods and default values from proto3 code (Compiler)

* Remove Clear methods and default values from proto3 code (Generated)

* Remove Clear methods and default values from proto3 code (Library)

* Fix distcheck error

* Rewrite default string values to use base64 and convert

* Library changes (IMessage2)

* Compiler changes (IMessage2)

* Generated changes (IMessage2)

* Rebased and regenerated

* Compiler changes (initialized extension)

* Generated changes (initialized extension)

* Library changes (initialized extension)

* Refactor MessageExtensions.IsRequired

* Move string default value creator and bytes default value creator back to seperate methods

* Dead code cleanup

* Fixed segmentation fault
Removed unused header method declarations
2018-09-24 13:42:24 -07:00
Jon Skeet
47d33e752e Test locations, and add comment to clarify testing 2018-09-22 09:09:15 +01:00
Jon Skeet
6e39eaad3c Add more detailed comments for declaration properties 2018-09-22 09:09:15 +01:00
Jon Skeet
1376ee4e6a Simplify descriptor tests
Rather than converting the proto to a ByteString again, use the
existing SerializedData property.
2018-09-22 09:09:15 +01:00
Jon Skeet
988b381c83 Add comment about FileDescriptor not exposing a declaration 2018-09-22 09:09:15 +01:00
Jon Skeet
1711999078 Provide simple access to descriptor declarations in C#
This is primarily for access to comments, which would be expected to be available in a protoc plugin.

The implementation has two fiddly aspects:

- We use a Lazy<T> to avoid building the map before cross-linking. An alternative would be to crosslink at the end of the constructor, and remove the calls to CrossLink elsewhere. This would be generally better IMO, but deviate from the Java code.
- The casts to IReadOnlyList<DescriptorBase> are unfortunate. They'll always work, because these lists are always ReadOnlyCollection<T> for a descriptor type... but we can't use IList<DescriptorBase> as that's not covariant, and it's annoyingly fiddly to change the field to be of type ReadOnlyCollection<T>.
2018-09-22 09:09:15 +01:00
Michael Shields
10360e342f Regenerate C# and Objective-C. 2018-09-19 12:54:57 -07:00
Jon Skeet
baa4a21130 Cross-link descriptor when building from byte strings
This performs more testing for field descriptors built from byte
strings too, but that's mostly incidental. The chief intent is to
check that cross-linking occurs.
2018-09-10 22:00:36 +01:00
Josh Haberman
c73d689c95 Regenerated C# protos. 2018-09-04 11:49:04 -07:00
Feng Xiao
afe98de32a Replace repo links. 2018-08-22 11:55:30 -07:00
Jon Skeet
228530e2da Support creating FileDescriptors dynamically from binary data.
Related to #658 and #5007.
2018-08-20 22:00:02 +01:00
Feng Xiao
a4862e790e Update generated descriptors. 2018-08-08 17:21:04 -07:00
Adam Cozzette
94d55e5292 Merge branch '3.6.x' into merge-3-6-x 2018-08-01 13:44:55 -07:00
Adam Cozzette
9e1286b949 Updated version numbers to 3.6.1 2018-07-27 13:30:28 -07:00
Paul Yang
8705adc228
Give a specific category to each test. (#4965)
* Give a unique category to each test.

This change introduce a TestCategory enum to ConformanceRequest. Existing tests
are divided into three categories: binary format test, json format test and json
format (ignore unknown when parsing) test. For the previous two categories, there
is no change to existing testee programs. For tests with the last category, testee programs
should either enable ignoring unknown field during json parsing or skip the test.

* Fix python test

* Fix java

* Fix csharp

* Update document

* Update csharp generated code
2018-07-27 12:24:42 -07:00
Jan Tattermusch
f50be7de91 Fix C# nuget build on Kokoro (#4912)
* upgrade dotnet SDK to 2.1.3 on kokoro linux
2018-07-18 11:04:59 -07:00
Paul Yang
26eeec93e4
Enable ignoring unknown in json parsing in php (#4839)
* Enable ignoring unknown in json parsing in php

* Update generated descriptor files

* Update failure list for other languages.

* Remove unnecessary php files
2018-07-09 14:29:23 -07:00
Warren Falk
96833b8f4b implement IComparable and comparison operators on Timestamp (#4318) 2018-07-09 14:26:36 -07:00
Adam Cozzette
d6f346b4d5
Merge pull request #4827 from acozzette/merge-3-6-x
Merge 3.6.x branch into master
2018-06-25 15:52:29 -07:00
Sydney Acksman
3d603f481e Remove protoc conditional properties (#4817)
* Remove protoc conditional properties

* Fix duplicate brace
2018-06-25 15:21:30 -07:00
Adam Cozzette
82d3d7d250 Merge branch '3.6.x' into merge-3-6-x 2018-06-25 13:22:10 -07:00
Sebastian Schuberth
ee03556df9 Remove the executable bit from several source code files
This potentially avoids compiler warnings.
2018-06-25 08:17:39 +02:00
Sydney Acksman
1f77342b78 Add msbuild targets to C# tools for protoc compilers (#4648)
* Added props to C# tools

* Add targets file to makefile.am
2018-06-21 14:53:31 -07:00
Adam Cozzette
9d64d740a1 Removed duplicate using statement from ReflectionUtil.cs 2018-05-29 14:29:59 -07:00
Jisi Liu
45eb28b588 Update version number to 3.6.0 2018-05-14 16:06:22 -07:00
Cameron Taggart
394866c002 enable source link for csharp (#4179) 2018-05-14 13:46:03 -07:00
Paul Yang
b61dd9d9a2
Add file option php_metadata_namespace and ruby_package (#4609) 2018-05-11 13:57:06 -07:00
David Chennells
513b35dc4e Add VS2017 optional component dependency details to the C# readme (#4128)
Add mention to the "Build" section of the ReadMe of the requirement of installing an optional component to VS2017.
2018-05-03 15:59:36 -07:00
Jon Skeet
1b219a174c Fix to allow AOT compilers to play nicely with reflection
With this fix, Unity using IL2CPP should work with one of two
approaches:

- Call `FileDescriptor.ForceReflectionInitialization<T>` for every
  enum present in generated code (including oneof case enums)
- Ensure that IL2CPP uses the same code for int and any int-based
  enums

The former approach is likely to be simpler, unless IL2CPP changes
its default behavior. We *could* potentially generate the code
automatically, but that makes me slightly uncomfortable in terms of
generating code that's only relevant in one specific scenario. It
would be reasonably easy to write a tool (separate from protoc) to
generate the code required for any specific set of assemblies, so
that Unity users can include it in their application. We can always
decide to change to generate it automatically later.
2018-04-27 16:47:46 +01:00
Sydney Acksman
4ca46ede5c Write messages to backing field in generated C# cloning code (#4440)
* Edited MessageFieldGenerator to clone to backing field instead of property

* Generated C# proto code
2018-04-19 11:57:31 -07:00
Jon Skeet
da3ce67171 Deliberately call simple code to avoid Unity linker pruning
The SampleEnumMethod method was previously only called via
reflection, so the Unity linker thought it could be removed. Ditto
the parameterless constructor in ReflectionHelper.

This PR should avoid that issue, reducing the work needed by
customers to use Google.Protobuf from Unity.
2018-04-06 08:05:32 +01:00
Feng Xiao
e7e6c6b8d1
Merge pull request #4283 from ObsidianMinor/csharp/better-test-runners
[C#] Update test project to be used with dotnet test and Visual Studio Test Explorer
2018-04-04 17:01:09 -07:00
ObsidianMinor
f72ac9f987 Updated csharp/README.md to reflect testing changes 2018-04-04 16:04:12 -05:00
Paul Yang
c931743461
Merge branch (#4466)
* Fix setup.py for windows build.

* Bump version number to 3.5.2

* Cat the test-suite.log on errors for presubits
2018-04-02 15:55:28 -07:00
Jon Skeet
9c05c35341 Address review comments 2018-03-27 10:17:44 +01:00
Jon Skeet
8e23d4e49c Work around an "old runtime" issue with reflection
For oneofs, to get the case, we need to call the property that
returns the enum value. We really want it as an int, and modern
runtimes allow us to create a delegate which returns an int from the
method. (I suspect that the MS runtime has always allowed that.)
Old versions of Mono (e.g. used by Unity3d) don't allow that, so we
have to convert the enum value to an int via boxing. It's ugly, but
it should work.
2018-03-27 08:42:27 +01:00
Jon Skeet
aa59eaa77b Introduce a compatiblity shim to support .NET 3.5 delegate creation 2018-03-27 08:42:27 +01:00
Jon Skeet
8ba420f040 Change C# reflection to avoid using expression trees
This should work on Unity, Mono and .NET 3.5 as far as I'm aware.
It won't work on platforms where reflection itself is prohibited,
but that's a non-starter basically.
2018-03-27 08:42:26 +01:00
Adam Cozzette
ed4321d1cb
Merge pull request #4387 from acozzette/down-integrate
Integrated internal changes from Google
2018-03-20 16:14:32 -07:00
Feng Xiao
88a4884b55
Merge pull request #4345 from jskeet/list-json-null
Allow null value in JSON representation of ListValue
2018-03-20 15:19:42 -07:00
Adam Cozzette
b1216d95db Updated checked-in generated code 2018-03-14 11:17:06 -07:00
Jon Skeet
822b924d59 Allow list values to be null when parsing 2018-03-01 13:20:40 +00:00
ObsidianMinor
e823897005 Updated NUnit packages, removed NUnitLite added packages for dotnet and Visual Studio, changed dotnet command in buildall to dotnet test, and deleted Program.cs (because it's no longer required). 2018-02-06 12:59:20 -06:00
John Brock
864df890a7 Remove 64MB memory limit when deserializing messages in C#
Increased `CodedInputStream.DefaultSizeLimit` to `Int32.MaxValue` to make it consistent with the Java implementation.
2018-01-31 14:08:02 -08:00
Jon Skeet
0c52335587 Update .NET SDK to 2.0.3
This will allow SourceLink as per #4179, and mean that we can use C#
7.0 language features in the library (but not in generated code).
This does not affect which platforms we're *targeting*, so end users
won't see any difference.

It would be nice to update to 2.1.4, but AppVeyor's "Visual Studio
2017" environment is only 2.0.3.
2018-01-25 19:42:15 +00:00
Jon Skeet
47b7d2c7ca Add DiscardUnknownFields support for C#
By default, unknown fields are preserved when parsing. To discard
them, use a parser configured to do so:

var parser = MyMessage.Parser.WithDiscardUnknownFields(true);
2018-01-15 02:53:45 -05:00
Jisi Liu
383a4941d5 Merge remote-tracking branch 'origin/3.5.x' into master 2018-01-03 09:28:40 -08:00
Jisi Liu
d106399d39
Merge pull request #4072 from google/jieluo
Cherrypick for csharp, including:
2017-12-19 17:45:56 -08:00
Jie Luo
b308580bb1 Cherrypick for csharp, including:
Add preserve UnknownFields
Compare floating point values bitwise
Add auto-generated header to C# generated files
2017-12-19 15:38:02 -08:00