Dart 2 fixes. (#106)
* Breaking change: Generated RpcClient stubs use the generic invoke method. Requires package:protobuf version 0.8.0 or newer.
* Dart 2 fixes.
diff --git a/.travis.yml b/.travis.yml
index 8f75be8..e7bbdc3 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -5,9 +5,9 @@
# 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 @@
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 @@
} 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 @@
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 @@
"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 @@
'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 @@
'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 @@
int get start => $_get(0, 0);
set start(int v) {
- $_setUnsignedInt32(0, v);
+ $_setSignedInt32(0, v);
}
bool hasStart() => $_has(0);
@@ -194,7 +194,7 @@
int get end => $_get(1, 0);
set end(int v) {
- $_setUnsignedInt32(1, v);
+ $_setSignedInt32(1, v);
}
bool hasEnd() => $_has(1);
@@ -238,7 +238,7 @@
int get start => $_get(0, 0);
set start(int v) {
- $_setUnsignedInt32(0, v);
+ $_setSignedInt32(0, v);
}
bool hasStart() => $_has(0);
@@ -246,7 +246,7 @@
int get end => $_get(1, 0);
set end(int v) {
- $_setUnsignedInt32(1, v);
+ $_setSignedInt32(1, v);
}
bool hasEnd() => $_has(1);
@@ -412,7 +412,7 @@
int get number => $_get(2, 0);
set number(int v) {
- $_setUnsignedInt32(2, v);
+ $_setSignedInt32(2, v);
}
bool hasNumber() => $_has(2);
@@ -460,7 +460,7 @@
int get oneofIndex => $_get(8, 0);
set oneofIndex(int v) {
- $_setUnsignedInt32(8, v);
+ $_setSignedInt32(8, v);
}
bool hasOneofIndex() => $_has(8);
@@ -624,7 +624,7 @@
int get number => $_get(1, 0);
set number(int v) {
- $_setUnsignedInt32(1, v);
+ $_setSignedInt32(1, v);
}
bool hasNumber() => $_has(1);
@@ -1658,7 +1658,7 @@
int get begin => $_get(2, 0);
set begin(int v) {
- $_setUnsignedInt32(2, v);
+ $_setSignedInt32(2, v);
}
bool hasBegin() => $_has(2);
@@ -1666,7 +1666,7 @@
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 @@
int get major => $_get(0, 0);
set major(int v) {
- $_setUnsignedInt32(0, v);
+ $_setSignedInt32(0, v);
}
bool hasMajor() => $_has(0);
@@ -49,7 +49,7 @@
int get minor => $_get(1, 0);
set minor(int v) {
- $_setUnsignedInt32(1, v);
+ $_setSignedInt32(1, v);
}
bool hasMinor() => $_has(1);
@@ -57,7 +57,7 @@
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 <misc@dartlang.org>
description: Protoc compiler plugin to generate Dart code
homepage: https://github.com/dart-lang/dart-protoc-plugin
@@ -8,7 +8,7 @@
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 @@
Future<SomeReply> aMethod(ClientContext ctx, SomeRequest request) {
var emptyResponse = new SomeReply();
- return _client.invoke(ctx, 'Test', 'AMethod', request, emptyResponse);
+ return _client.invoke<SomeReply>(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 @@
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 @@
Future<Empty> ping(ClientContext ctx, Empty request) {
var emptyResponse = new Empty();
- return _client.invoke(ctx, 'Test', 'Ping', request, emptyResponse);
+ return _client.invoke<Empty>(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 @@
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<TestAllTypes_NestedMessage>)
+ .check,
same(TestAllTypes_NestedMessage.$checkItem));
- expect(msg.info_.byName["repeatedGroup"].check,
+ expect(
+ (msg.info_.byName["repeatedGroup"]
+ as FieldInfo<TestAllTypes_RepeatedGroup>)
+ .check,
same(TestAllTypes_RepeatedGroup.$checkItem));
- expect(msg.info_.byName["repeatedNestedEnum"].check,
+ expect(
+ (msg.info_.byName["repeatedNestedEnum"]
+ as FieldInfo<TestAllTypes_NestedEnum>)
+ .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 @@
FakeJsonClient(this.server);
- Future<GeneratedMessage> invoke(
+ Future<T> invoke<T extends GeneratedMessage>(
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);