diff --git a/.travis.yml b/.travis.yml index 8f75be8..e7bbdc3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,9 +5,9 @@ sudo: false # them against each Dart version. matrix: include: - - dart: stable + - dart: dev dart_task: dartfmt - - dart: stable + - dart: dev env: PROTOC_VERSION=3.0.0 install: ./tool/travis/setup.sh script: ./tool/travis/test.sh diff --git a/CHANGELOG.md b/CHANGELOG.md index 1ae3eb3..ec97eda 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +## 0.8.0 - 2018-05-17 + +* Breaking change: Generated RpcClient stubs use the generic invoke method. + Requires package:protobuf version 0.8.0 or newer. +* Dart 2 fixes. + ## 0.7.11 - 2018-04-09 * Dart 2 fix. diff --git a/benchmark/lib/report.dart b/benchmark/lib/report.dart index 0eed239..89b79fc 100644 --- a/benchmark/lib/report.dart +++ b/benchmark/lib/report.dart @@ -4,7 +4,7 @@ library protoc.benchmark.report; -import 'dart:convert' show JSON; +import 'dart:convert' show jsonEncode; import 'generated/benchmark.pb.dart' as pb; @@ -159,7 +159,7 @@ String _stringifyMap(StringBuffer out, Map json, String indent) { var value = json[key]; out.write(childIndent); - out.write(JSON.encode(key)); + out.write(jsonEncode(key)); out.write(": "); if (value is List) { @@ -167,7 +167,7 @@ String _stringifyMap(StringBuffer out, Map json, String indent) { } else if (value is Map && indent.length < 4) { _stringifyMap(out, value, childIndent); } else { - out.write(JSON.encode(value)); + out.write(jsonEncode(value)); } } out.write("\n$indent}"); @@ -182,7 +182,7 @@ void _stringifyList(StringBuffer out, List json, String indent) { if (!first) out.write(",\n"); first = false; out.write(childIndent); - out.write(JSON.encode(item)); + out.write(jsonEncode(item)); } out.write("\n$indent]"); } diff --git a/lib/base_type.dart b/lib/base_type.dart index 6c664f6..743bd86 100644 --- a/lib/base_type.dart +++ b/lib/base_type.dart @@ -70,7 +70,7 @@ class BaseType { "double", r"$_setDouble", null); case FieldDescriptorProto_Type.TYPE_INT32: return const BaseType._raw(FieldDescriptorProto_Type.TYPE_INT32, "3", - "int", r"$_setUnsignedInt32", null); + "int", r"$_setSignedInt32", null); case FieldDescriptorProto_Type.TYPE_UINT32: return const BaseType._raw(FieldDescriptorProto_Type.TYPE_UINT32, "U3", "int", r"$_setUnsignedInt32", null); diff --git a/lib/client_generator.dart b/lib/client_generator.dart index c0b0aba..3f16563 100644 --- a/lib/client_generator.dart +++ b/lib/client_generator.dart @@ -37,7 +37,8 @@ class ClientApiGenerator { 'ClientContext ctx, $inputType request) {', '}', () { out.println('var emptyResponse = new $outputType();'); - out.println('return _client.invoke(ctx, \'${service._descriptor.name}\', ' + out.println( + 'return _client.invoke<$outputType>(ctx, \'${service._descriptor.name}\', ' '\'${m.name}\', request, emptyResponse);'); }); } diff --git a/lib/protobuf_field.dart b/lib/protobuf_field.dart index 6aa2e74..735fad9 100644 --- a/lib/protobuf_field.dart +++ b/lib/protobuf_field.dart @@ -203,11 +203,11 @@ class ProtobufField { '0' == descriptor.defaultValue) { return null; } else if (descriptor.defaultValue == 'inf') { - return 'double.INFINITY'; + return 'double.infinity'; } else if (descriptor.defaultValue == '-inf') { - return 'double.NEGATIVE_INFINITY'; + return 'double.negativeInfinity'; } else if (descriptor.defaultValue == 'nan') { - return 'double.NAN'; + return 'double.nan'; } else if (HEX_LITERAL_REGEX.hasMatch(descriptor.defaultValue)) { return '(${descriptor.defaultValue}).toDouble()'; } else if (INTEGER_LITERAL_REGEX.hasMatch(descriptor.defaultValue)) { diff --git a/lib/src/descriptor.pb.dart b/lib/src/descriptor.pb.dart index b21aa95..925a457 100644 --- a/lib/src/descriptor.pb.dart +++ b/lib/src/descriptor.pb.dart @@ -186,7 +186,7 @@ class DescriptorProto_ExtensionRange extends GeneratedMessage { int get start => $_get(0, 0); set start(int v) { - $_setUnsignedInt32(0, v); + $_setSignedInt32(0, v); } bool hasStart() => $_has(0); @@ -194,7 +194,7 @@ class DescriptorProto_ExtensionRange extends GeneratedMessage { int get end => $_get(1, 0); set end(int v) { - $_setUnsignedInt32(1, v); + $_setSignedInt32(1, v); } bool hasEnd() => $_has(1); @@ -238,7 +238,7 @@ class DescriptorProto_ReservedRange extends GeneratedMessage { int get start => $_get(0, 0); set start(int v) { - $_setUnsignedInt32(0, v); + $_setSignedInt32(0, v); } bool hasStart() => $_has(0); @@ -246,7 +246,7 @@ class DescriptorProto_ReservedRange extends GeneratedMessage { int get end => $_get(1, 0); set end(int v) { - $_setUnsignedInt32(1, v); + $_setSignedInt32(1, v); } bool hasEnd() => $_has(1); @@ -412,7 +412,7 @@ class FieldDescriptorProto extends GeneratedMessage { int get number => $_get(2, 0); set number(int v) { - $_setUnsignedInt32(2, v); + $_setSignedInt32(2, v); } bool hasNumber() => $_has(2); @@ -460,7 +460,7 @@ class FieldDescriptorProto extends GeneratedMessage { int get oneofIndex => $_get(8, 0); set oneofIndex(int v) { - $_setUnsignedInt32(8, v); + $_setSignedInt32(8, v); } bool hasOneofIndex() => $_has(8); @@ -624,7 +624,7 @@ class EnumValueDescriptorProto extends GeneratedMessage { int get number => $_get(1, 0); set number(int v) { - $_setUnsignedInt32(1, v); + $_setSignedInt32(1, v); } bool hasNumber() => $_has(1); @@ -1658,7 +1658,7 @@ class GeneratedCodeInfo_Annotation extends GeneratedMessage { int get begin => $_get(2, 0); set begin(int v) { - $_setUnsignedInt32(2, v); + $_setSignedInt32(2, v); } bool hasBegin() => $_has(2); @@ -1666,7 +1666,7 @@ class GeneratedCodeInfo_Annotation extends GeneratedMessage { int get end => $_get(3, 0); set end(int v) { - $_setUnsignedInt32(3, v); + $_setSignedInt32(3, v); } bool hasEnd() => $_has(3); diff --git a/lib/src/plugin.pb.dart b/lib/src/plugin.pb.dart index 2122589..be55531 100644 --- a/lib/src/plugin.pb.dart +++ b/lib/src/plugin.pb.dart @@ -41,7 +41,7 @@ class Version extends GeneratedMessage { int get major => $_get(0, 0); set major(int v) { - $_setUnsignedInt32(0, v); + $_setSignedInt32(0, v); } bool hasMajor() => $_has(0); @@ -49,7 +49,7 @@ class Version extends GeneratedMessage { int get minor => $_get(1, 0); set minor(int v) { - $_setUnsignedInt32(1, v); + $_setSignedInt32(1, v); } bool hasMinor() => $_has(1); @@ -57,7 +57,7 @@ class Version extends GeneratedMessage { int get patch => $_get(2, 0); set patch(int v) { - $_setUnsignedInt32(2, v); + $_setSignedInt32(2, v); } bool hasPatch() => $_has(2); diff --git a/pubspec.yaml b/pubspec.yaml index b7597ff..953ae2d 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,5 +1,5 @@ name: protoc_plugin -version: 0.7.11 +version: 0.8.0 author: Dart Team description: Protoc compiler plugin to generate Dart code homepage: https://github.com/dart-lang/dart-protoc-plugin @@ -8,7 +8,7 @@ environment: dependencies: fixnum: ^0.10.5 path: ^1.0.0 - protobuf: ^0.7.1 + protobuf: ^0.8.0 dart_style: ^1.0.6 dev_dependencies: browser: any diff --git a/test/client_generator_test.dart b/test/client_generator_test.dart index adf6adf..3a735b0 100644 --- a/test/client_generator_test.dart +++ b/test/client_generator_test.dart @@ -21,11 +21,11 @@ class TestApi { Future aMethod(ClientContext ctx, SomeRequest request) { var emptyResponse = new SomeReply(); - return _client.invoke(ctx, 'Test', 'AMethod', request, emptyResponse); + return _client.invoke(ctx, 'Test', 'AMethod', request, emptyResponse); } Future<$foo$bar.AnotherReply> anotherMethod(ClientContext ctx, $foo$bar.EmptyMessage request) { var emptyResponse = new $foo$bar.AnotherReply(); - return _client.invoke(ctx, 'Test', 'AnotherMethod', request, emptyResponse); + return _client.invoke<$foo$bar.AnotherReply>(ctx, 'Test', 'AnotherMethod', request, emptyResponse); } } diff --git a/test/file_generator_test.dart b/test/file_generator_test.dart index 2106147..4a8d3ed 100644 --- a/test/file_generator_test.dart +++ b/test/file_generator_test.dart @@ -113,7 +113,7 @@ class PhoneNumber extends GeneratedMessage { void clearNumber() => clearField(1); int get type => $_get(1, 0); - set type(int v) { $_setUnsignedInt32(1, v); } + set type(int v) { $_setSignedInt32(1, v); } bool hasType() => $_has(1); void clearType() => clearField(2); @@ -362,7 +362,7 @@ class TestApi { Future ping(ClientContext ctx, Empty request) { var emptyResponse = new Empty(); - return _client.invoke(ctx, 'Test', 'Ping', request, emptyResponse); + return _client.invoke(ctx, 'Test', 'Ping', request, emptyResponse); } } diff --git a/test/repeated_field_test.dart b/test/repeated_field_test.dart index 6dd55f4..bc58989 100644 --- a/test/repeated_field_test.dart +++ b/test/repeated_field_test.dart @@ -5,6 +5,7 @@ library repeated_field_test; +import 'package:protobuf/protobuf.dart'; import 'package:test/test.dart'; import '../out/protos/google/protobuf/unittest.pb.dart'; @@ -47,13 +48,22 @@ void main() { test("check properties are initialized for repeated fields", () { var msg = new TestAllTypes(); - expect(msg.info_.byName["repeatedNestedMessage"].check, + expect( + (msg.info_.byName["repeatedNestedMessage"] + as FieldInfo) + .check, same(TestAllTypes_NestedMessage.$checkItem)); - expect(msg.info_.byName["repeatedGroup"].check, + expect( + (msg.info_.byName["repeatedGroup"] + as FieldInfo) + .check, same(TestAllTypes_RepeatedGroup.$checkItem)); - expect(msg.info_.byName["repeatedNestedEnum"].check, + expect( + (msg.info_.byName["repeatedNestedEnum"] + as FieldInfo) + .check, same(TestAllTypes_NestedEnum.$checkItem)); }); } diff --git a/test/service_test.dart b/test/service_test.dart index d518d84..82b52c0 100644 --- a/test/service_test.dart +++ b/test/service_test.dart @@ -57,12 +57,12 @@ class FakeJsonClient implements RpcClient { FakeJsonClient(this.server); - Future invoke( + Future invoke( ClientContext ctx, String serviceName, String methodName, GeneratedMessage request, - GeneratedMessage response) async { + T response) async { String requestJson = request.writeToJson(); String replyJson = await server.messageHandler(serviceName, methodName, requestJson);