google / google/protobuf.dart

Protobuf fields with numeric names generate invalid Dart code

Open
#335 2 comments 0 reactions 0 assignees View on GitHub
bug
Dominant language
Dart
Stars
572
Forks
196
Avg merge
1h 59m
Merged PRs (30d)
2

Description

Package protoc_plugin version 19.0.1.

A protobuf message that uses numbers as field names generates invalid Dart code.

**Current behaviour:**

```
message Color {
string _50 = 1;
string _100 = 2;
string _200 = 3;
string _300 = 4;
string _400 = 5;
string _500 = 6;
string _600 = 7;
string _700 = 8;
string _800 = 9;
string _900 = 10;
string A100 = 11;
string A200 = 12;
string A400 = 13;
string A700 = 14;
}
```

generates this Dart code:
```
@$pb.TagNumber(1)
$core.String get 50 => $_getSZ(0);
@$pb.TagNumber(1)
set 50($core.String v) { $_setString(0, v); }
@$pb.TagNumber(1)
$core.bool has50() => $_has(0);
@$pb.TagNumber(1)
void clear50() => clearField(1);
```

The getters and setters are not valid and throw a compiler error: Error: Expected a class member, but got '50'.

**Expected behaviour:**

A generated field name of x50 (like in Go):

```
@$pb.TagNumber(1)
$core.String get x50 => $_getSZ(0);
@$pb.TagNumber(1)
set x50($core.String v) { $_setString(0, v); }
@$pb.TagNumber(1)
$core.bool has50() => $_has(0);
@$pb.TagNumber(1)
void clear50() => clearField(1);
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.