Protobuf fields with numeric names generate invalid Dart code
- 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
Assessment
This issue has not been assessed yet.