Skip to content

Commit 23fbf2b

Browse files
authored
fix(mix_generator): Respect nullability in lerp and update deps (#849)
1 parent be0cb9a commit 23fbf2b

File tree

4 files changed

+19
-9
lines changed

4 files changed

+19
-9
lines changed

packages/mix_generator/lib/src/core/resolvers/lerp_resolver.dart

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,16 @@ class LerpResolver {
4848
String generateLerpCode(FieldModel field) {
4949
final strategy = resolveStrategy(field);
5050
final name = field.name;
51+
final isNullable = field.isNullable;
5152

5253
return switch (strategy) {
5354
.interpolate => 'MixOps.lerp($name, other?.$name, t)',
5455
.snap => 'MixOps.lerpSnap($name, other?.$name, t)',
55-
.delegateToSpec => '$name?.lerp(other?.$name, t)',
56+
// Use ?. for nullable fields, . for non-nullable fields
57+
.delegateToSpec =>
58+
isNullable
59+
? '$name?.lerp(other?.$name, t)'
60+
: '$name.lerp(other?.$name, t)',
5661
};
5762
}
5863
}

packages/mix_generator/pubspec.yaml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@ environment:
99

1010
dependencies:
1111
mix_annotations: ^1.7.0
12-
build: ^4.0.4
13-
source_gen: ^4.2.0
14-
analyzer: ^10.0.1
15-
dart_style: ^3.1.4
16-
collection: ^1.17.1
17-
build_config: ^1.2.0
12+
dart_style: ^3.0.0
13+
collection: ^1.15.0
14+
source_gen: ">=3.0.0 <5.0.0"
15+
analyzer: '>=9.0.0 <11.0.0'
16+
build: ">=3.0.0 <5.0.0"
17+
build_config: ^1.1.0
1818
logging: ^1.2.0
1919
path: ^1.8.3
2020

packages/mix_generator/test/core/resolvers/lerp_resolver_test.dart

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,14 @@ void main() {
3737
);
3838
});
3939

40-
test('delegate pattern uses direct lerp call', () {
40+
test('delegate pattern for nullable field uses ?. operator', () {
4141
expect('box?.lerp(other?.box, t)', contains('?.lerp('));
4242
});
43+
44+
test('delegate pattern for non-nullable field uses . operator', () {
45+
expect('box.lerp(other?.box, t)', isNot(contains('?.lerp(')));
46+
expect('box.lerp(other?.box, t)', contains('.lerp('));
47+
});
4348
});
4449
});
4550
}

pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@ environment:
66

77
dependencies:
88
melos: ^6.3.3
9-
analyzer: ^7.5.4
9+
analyzer: '>=9.0.0 <11.0.0'

0 commit comments

Comments
 (0)