schultek / dart_mappable

Improved json serialization and data classes with full support for generics, inheritance, customization and more.
https://pub.dev/packages/dart_mappable
MIT License
164 stars 23 forks source link

syntax parsing error when declaring const hook #203

Open dickermoshe opened 5 months ago

dickermoshe commented 5 months ago

If you were to declare a top level constant hook and use it. You will get a build time error. E.G.

const myHook = ChainedHook([]);

@MappableClass(hook: hook)
class Foo with FooMappable{
  final String? bar;
  Foo(this.bar)
}
The error was:
Could not format because the source could not be parsed:

line 122, column 40 of .: Expected to find '('.
    ╷
122 │         final MappingHook hook = const myHook ;
    │                                        ^^^^^^^^^^^^^^^^^
    ╵

There code here is not referring to the source code, it's referring to the code that dart_mappable created, before throwing it away once it detected a syntax error.

The issue here is that const should only appear when instantiating a Hook, not when referencing a constant.

image
dickermoshe commented 5 months ago

@schultek Seems like a simple check here should suffice: https://github.com/schultek/dart_mappable/blob/4777e79cdc99e15730d18990e1d774edc0064b0a/packages/dart_mappable_builder/lib/src/generators/mixins/decoding_mixin.dart#L11-L17

schultek commented 4 months ago

Indeed a bug, let me look into it.